#!/bin/sh

# Scid (Shane's Chess Information Database)
#
# Copyright (C) 1999-2004  Shane Hudson. All rights reserved.
#
# This is freely redistributable software; see the file named "COPYING"
# or "copying.txt" that came with this program.
#

# Scid's current version is an enhanced version of the original Scid, the author of which is
# Shane Hudson. His email is sgh@users.sourceforge.net
# To contact the current maintainer of Scid, email to the Scid users
# list at scid-users@lists.sourceforge.net

#
# The following few comments are only for Unix versions of Scid:
#

# The "\" at the end of the comment line below is necessary! It means
#   that the "exec" line is a comment to Tcl/Tk, but not to /bin/sh.
# The next line restarts using tkscid: \
exec `dirname $0`/tkscid "$0" "$@"
# exec tkscid "$0" "$@"

# The above launches tkscid from the same directory that this startup
# script was launched from (which feels as a suitable default scenario).
# Alternatively, you can change the top line of this startup script
# to start tkscid directly from a specific location, e.g.:

# For the above to work, tkscid must be in a directory in your PATH.
# Alternatively, you can set the first line to start tkscid directly
# by specifying the full name of tkscid, eg:
# #!/home/myname/bin/tkscid

############################################################

# Alter the version if any patches have been made to the Tcl code only:
set scidVersion "4.3"
set scidVersionDate "February 2011"

package require Tcl 8.5
package require Tk  8.5
package require Ttk

# Determine operating system platform: unix, windows or macos
#
set windowsOS 0
if {$tcl_platform(platform) == "windows"} { set windowsOS 1 }
set unixOS 0
if {$tcl_platform(platform) == "unix"} { set unixOS 1 }
set macOS 0
if {![catch {tk windowingsystem} wsystem] && $wsystem == "aqua"} { set macOS 1 }

# A lot of code assumes tcl_platform is either windows or unix, so
# lotsa stuff may break if this is not the case.
#
if {(! $windowsOS)  &&  (! $unixOS)} {
  # What to do here? Warn the user...?
}


# Check that on Unix, the version of tkscid matches the version of this
# script or on Windows, that the scid.exe and scid.gui versions are identical.
#
if {[string compare [sc_info version] $scidVersion]} {
  wm withdraw .
  if {$windowsOS} {
    set msg "This is Scid version [sc_info version], but the scid.gui data\n"
    append msg "file has the version number $scidVersion.\n"
  } else {
    set msg "This program,\n\"$argv0\",\nis version $scidVersion,\nbut the "
    append msg "tkscid program \nit uses is version [sc_info version].\n"
    append msg "Check that the path to tkscid is correct."
  }
  tk_messageBox -type ok -icon error -title "Scid: Version Error" -message $msg
  exit 1
}

#############################################################
#
# NAMESPACES
#
# The main Tcl/Tk namespaces used in the Scid application are
# initialized here, so that default values can be set up and
# altered when the user options file is loaded.
#
foreach ns {
  ::splash
  ::utils
  ::utils::date ::utils::font ::utils::history ::utils::pane ::utils::string
  ::utils::sound ::utils::validate ::utils::win
  ::file
  ::file::finder ::file::maint ::maint
  ::bookmarks
  ::edit
  ::game
  ::gbrowser
  ::search
  ::search::filter ::search::board ::search::header ::search::material
  ::windows
  ::windows::gamelist ::windows::stats ::tree ::tree::mask ::windows::tree
  ::windows::switcher ::windows::eco ::crosstab ::pgn ::book
  ::tools
  ::tools::analysis ::tools::email
  ::tools::graphs
  ::tools::graphs::filter ::tools::graphs::absfilter ::tools::graphs::rating ::tools::graphs::score
  ::tb ::optable
  ::board ::move
  ::tacgame ::sergame ::opening ::tactics ::calvar ::uci ::fics ::reviewgame ::novag
  ::config ::docking
  ::pinfo
  ::commenteditor
} {
  namespace eval $ns {}
}

set ::tacgame::threshold 0.9
set ::tacgame::blunderwarning false
set ::tacgame::blunderwarningvalue 0.0
set ::tacgame::levelMin 1200
set ::tacgame::levelMax 2200
set ::tacgame::levelFixed 1500
set ::tacgame::randomLevel 0
set ::tacgame::isLimitedAnalysisTime 1
set ::tacgame::showblunder 1
set ::tacgame::showblundervalue 1
set ::tacgame::showblunderfound 1
set ::tacgame::showmovevalue 1
set ::tacgame::showevaluation 1
set ::tacgame::isLimitedAnalysisTime 1
set ::tacgame::analysisTime 10
set ::tacgame::openingType new
set ::tacgame::chosenOpening 0

# List of saved layouts : 3 slots available
array set ::docking::layout_list {}
# Basic layout : PGN window with main board
set ::docking::layout_list(1) {{.pw vertical} {TPanedwindow {{.pw.pw0 horizontal} {TNotebook .nb .fdockmain} {TNotebook .tb1 .fdockpgnWin}}}}
set ::docking::layout_list(2) {}
set ::docking::layout_list(3) {}

### Tree/mask options:
set ::tree::mask::recentMask {}

#############################################################
# Customisable variables:

# scidExeDir: contains the directory of the Scid executable program.
# Used to determine the location of various relative data directories.
set scidExecutable [info nameofexecutable]
if {[file type $scidExecutable] == "link"} {
  set scidExeDir [file dirname [file readlink $scidExecutable]]
  if {[file pathtype $scidExeDir] == "relative"} {
    set scidExeDir [file dirname [file join [file dirname $scidExecutable]\
      [file readlink $scidExecutable]]]
  }
} else {
  set scidExeDir [file dirname $scidExecutable]
}

# scidUserDir: location of user-specific Scid files.
# This is "~/.scid" on Unix, and the Scid exectuable dir on Windows.
if {$windowsOS} {
  set scidUserDir $scidExeDir
} else {
  set scidUserDir [file nativename "~/.scid"]
}

# scidConfigDir, scidDataDir, scidLogDir:
#   Location of Scid configuration, data and log files.
set scidConfigDir [file nativename [file join $scidUserDir "config"]]
set scidDataDir [file nativename [file join $scidUserDir "data"]]
set scidLogDir [file nativename [file join $scidUserDir "log"]]

# boardSizes: a list of the available board sizes.
set boardSizes [list 25 30 35 40 45 50 55 60 65 70 80]
set boardSizesOLD [list 21 25 29 33 37 40 45 49 54 58 64 72]

#load textures for lite and dark squares
set boardfile_dark "emptySquare"
set boardfile_lite "emptySquare"

#[file join $scidExeDir "bitmaps" "empty.gif"] ;# wsquare.gif

# boardSize: Default board size. See the available board sizes above.
set boardSize 40

# boardStyle: Default board piece set. See bitmaps.tcl for styles.
set boardStyle Alpha

# language for help pages and messages:
set language E
set oldLang X

# Toolbar configuration:
foreach {tbicon status}  {
  new 1 open 1 save 1 close 1
  finder 1 bkm 1 gprev 1 gnext 1
  cut 0 copy 0 paste 0
  rfilter 1 bsearch 1 hsearch 1 msearch 1
  switcher 1 glist 1 pgn 1 tmt 1 maint 1 eco 1 tree 1 crosst 1 engine 1
} {
  set toolbar($tbicon) $status
}

# boardCoords: 1 to show board Coordinates, 0 to hide them.
set boardCoords 0

# boardSTM: 1 to show side-to-move icon, 0 to hide it.
set boardSTM 1

# Default values for fonts:
proc createFont {name} {
  set opts $::fontOptions($name)
  font create font_$name \
      -family [lindex $opts 0] -size [lindex $opts 1] \
      -weight [lindex $opts 2] -slant [lindex $opts 3]
}

proc configureFont {name} {
  set opts $::fontOptions($name)
  font configure font_$name \
      -family [lindex $opts 0] -size [lindex $opts 1] \
      -weight [lindex $opts 2] -slant [lindex $opts 3]
}

if {$windowsOS} {
  ## set fontOptions(Regular) [list Arial           10 normal roman]
  ## set fontOptions(Menu)    [list {MS Sans Serif}  9 normal roman]
  ## set fontOptions(Small)   [list Arial            9 normal roman]
  ## set fontOptions(Tiny)    [list Arial            8 normal roman]
  ## set fontOptions(Fixed)   [list Courier          9 normal roman]
  set fontOptions(Regular) [list system          10 normal roman]
  set fontOptions(Menu)    [list system           9 normal roman]
  set fontOptions(Small)   [list system           9 normal roman]
  set fontOptions(Tiny)    [list system           8 normal roman]
  set fontOptions(Fixed)   [list systemfixed      9 normal roman]
} elseif {$macOS} {
  set fontOptions(Regular) [list system    11 normal roman]
  set fontOptions(Menu)    [list menu      14 normal roman]
  set fontOptions(Small)   [list system    10 normal roman]
  set fontOptions(Tiny)    [list system     9 normal roman]
  set fontOptions(Fixed)   [list Monaco    10 normal roman]
} else {
  set fontOptions(Regular) [list helvetica 11 normal roman]
  set fontOptions(Menu)    [list helvetica 10 normal roman]
  set fontOptions(Small)   [list helvetica 10 normal roman]
  set fontOptions(Tiny)    [list helvetica  9 normal roman]
  set fontOptions(Fixed)   [list fixed     10 normal roman]
}

createFont Regular
createFont Menu
createFont Small
createFont Tiny
createFont Fixed

### TODO
### Sample for figurine fonts see also htext.tcl
### Not yet working properly
### font create font_Figurine_ML  -family {FigurineSymbol T1} -size 10
### font create font_Figurine_Var -family {FigurineSymbol T1} -size 6


# Analysis command: to start chess analysis engine.
set analysisCommand ""
if {$windowsOS} {
  set analysisChoices {wcrafty.exe}
} else {
  set analysisChoices {crafty}
}

# Colors: dark and lite are square colors
#     whitecolor/blackcolor are piece colors
#     highcolor is the color when something is selected.
#     bestcolor is used to indicate a suggested move square.
# set dark        "\#70a070"
# set lite        "\#e0d070"
set lite "\#f3f3f3"
set dark "\#7389b6"
set whitecolor  "\#ffffff"
set blackcolor  "\#000000"
set whiteborder "\#000000"
set blackborder "\#ffffff"
set highcolor   "\#b0d0e0"
set bestcolor   "\#bebebe"
set buttoncolor "\#b0c0d0"
set borderwidth 1

set ::tactics::analysisTime 3
set ::tactics::findBestMoveRunning 0
array set ::tactics::findBestMove_History {}
    
# Defaults for the PGN window:
# if ::pgn::showColor is 1, the PGN text will be colorized.
set ::pgn::showColor 1
set ::pgn::indentVars 1
set ::pgn::indentComments 1
set ::pgn::symbolicNags 1
set ::pgn::moveNumberSpaces 0
set ::pgn::shortHeader 1
set ::pgn::boldMainLine 1
set ::pgn::columnFormat 0
set ::pgn::stripMarks 0
set pgnColor(Header) "\#00008b"
set pgnColor(Main) "\#000000"
set pgnColor(Var) "\#0000ee"
set pgnColor(Nag) "\#ee0000"
set pgnColor(Comment) "\#008b00"
set pgnColor(Current) lightSteelBlue
set pgnColor(NextMove) "\#fefe80"
set pgnColor(Background) "\#ffffff"

# Defaults for FICS
array set findopponent {}
set ::fics::use_timeseal 1
set ::fics::timeseal_exec "timeseal"
set ::fics::port_fics 5000
set ::fics::port_timeseal 5001
set ::fics::login ""
set ::fics::password ""
set ::fics::usedefaultvars 1
set ::fics::findopponent(initTime) 15
set ::fics::findopponent(incTime) 20
set ::fics::findopponent(rated) "rated"
set ::fics::findopponent(color) ""
set ::fics::findopponent(limitrating) 1
set ::fics::findopponent(rating1) 1500
set ::fics::findopponent(rating2) 3000
set ::fics::findopponent(manual) "auto"
set ::fics::findopponent(formula) ""
set ::fics::consolebg     black
set ::fics::consolefg     LimeGreen
set ::fics::consoleheight 10
set ::fics::consolewidth  40
set ::fics::colseeking     coral
set ::fics::colgame        grey70
set ::fics::colgameresult  SlateBlue1
set ::fics::colficspercent khaki1
set ::fics::colficshelpnext blue
set ::fics::server_ip "0.0.0.0"

set ::commenteditor::showboard 1

# default resolvers for player info
set ::pinfo::wikipAPI      "http://de.wikipedia.org/w/api.php?action=query&format=xml"
# Appers PND resolver
set ::pinfo::wikipurl      "http://toolserver.org/~apper/pd/person/pnd-redirect"
# SeeAlso resolver for PND -> WikiPedia
set ::pinfo::SeeAlsoPND2WP "http://ws.gbv.de/seealso/pnd2wikipedia/?format=seealso&id="
# Deutsche NationalBibliothek
set ::pinfo::dnburl        "http://d-nb.info/gnd"
# all other ID resolvers come from [scidConfigFile resolvers]

# Defaults for Novag Citrine
set ::novag::referee "OFF"

# Defaults for serious game training
set ::sergame::isOpening 0
set ::sergame::chosenOpening 0
set ::sergame::chosenEngine 0
set ::sergame::useBook 1
set ::sergame::bookToUse ""
set ::sergame::startFromCurrent 0
set ::sergame::coachIsWatching 0
set ::sergame::timeMode "timebonus"
set ::sergame::depth 3
set ::sergame::movetime 0
set ::sergame::nodes 10000
set ::sergame::ponder 0
set ::uci::uciInfo(wtime3) [expr 5 * 60 * 1000 ]
set ::uci::uciInfo(winc3) [expr 10 * 1000 ]
set ::uci::uciInfo(btime3) [expr 5 * 60 * 1000 ]
set ::uci::uciInfo(binc3) [expr 10 * 1000 ]

# Defaults for initial directories:
set initialDir(base) "."
set initialDir(pgn) "."
set initialDir(book) "."
set initialDir(epd) "."
set initialDir(html) "."
set initialDir(tex)  "."
set initialDir(stm)  "."
set initialDir(report) "."
set initialDir(tablebase1) ""
set initialDir(tablebase2) ""
set initialDir(tablebase3) ""
set initialDir(tablebase4) ""

# glistSize: Number of games displayed in the game list window
set glistSize 15

# glexport: Format for saving Game List to text file.
set glexportDefault "g6: w13 W4  b13 B4  r3:m2 y4 s11 o4"
set glexport $glexportDefault

# glistSelectPly: The number of moves to display in a game list entry
# when that entry is selected with button-2 to shoe the first moves
# of a game. E.g., a value of 4 might give: "1.e4 e5 2.Nf3 Nc6".
set glistSelectPly 80


# Default window locations:
foreach i {. .pgnWin .helpWin .crosstabWin .treeWin .commentWin .glist \
      .playerInfoWin .baseWin .treeBest .treeGraph .tourney .finder \
      .ecograph .statsWin .glistWin .maintWin .nedit} {
  set winX($i) -1
  set winY($i) -1
}

for {set b 1} {$b<=[sc_base count total]} {incr b} {
  foreach i { .treeWin .treeBest .treeGraph } {
    set winX($i$b) -1
    set winY($i$b) -1
  }
}

# Default PGN window size:
set winWidth(.pgnWin)  65
set winHeight(.pgnWin) 20

# Default help window size:
set winWidth(.helpWin)  50
set winHeight(.helpWin) 32

# Default stats window size:
set winWidth(.statsWin) 60
set winHeight(.statsWin) 13

# Default crosstable window size:
set winWidth(.crosstabWin)  65
set winHeight(.crosstabWin) 15

# Default tree window size:
set winWidth(.treeWin)  58
set winHeight(.treeWin) 20

# Default comment editor size:
set winWidth(.commentWin)  40
set winHeight(.commentWin)  6

# Default spellcheck results window size:
set winWidth(.spellcheckWin)  55
set winHeight(.spellcheckWin) 25

# Default player info window size:
set winWidth(.playerInfoWin)  45
set winHeight(.playerInfoWin) 20

# Default switcher window size:
set winWidth(.baseWin) 310
set winHeight(.baseWin) 110

# Default Correspondence Chess window size:
set winWidth(.ccWindow) 10
set winHeight(.ccWindow) 20

# Default size for input engine console:
###---### needs adjustment!
set winWidth(.inputengineconsole) 10
set winHeight(.inputengineconsole) 20

# In docked mode, use same default geometry values
foreach elt {winX winY winWidth winHeight} {
  foreach name [array names $elt] {
    set ${elt}_docked($name) [set ${elt}($name)]
  }
}

# Default stats window lines:
array set ::windows::stats::display {
  r2600 1
  r2500 1
  r2400 1
  r2300 1
  r2200 0
  r2100 0
  r2000 0
  y1900 0
  y1950 0
  y1960 0
  y1970 0
  y1980 0
  y1990 0
  y1995 0
  y2000 1
  y2002 1
  y2004 1
  y2006 1
  y2007 1
  y2008 1
}

# Default PGN display options:
set pgnStyle(Tags) 1
set pgnStyle(Comments) 1
set pgnStyle(Vars) 1


# Default Tree sort method:
set tree(order) frequency

# Auto-save tree cache when closing tree window:
set tree(autoSave) 0

# Auto-save options when exiting:
set optionsAutoSave 1

#  Numeric locale: first char is decimal, second is thousands.
#  Example: ".," for "1,234.5" format; ",." for "1.234,5" format.
set locale(numeric) ".,"

# Ask for piece translations (first letter)
set translatePieces 1

# Hightlight the last move played
set highlightLastMove 1
set highlightLastMoveWidth 2
set highlightLastMoveColor "grey"
set highlightLastMovePattern {} ; # this option is not saved

# Ask before replacing existing moves: on by default
set askToReplaceMoves 1

# Show suggested moves: on by default
set suggestMoves 1

# Show variations popup window
set showVarPopup 1

# Keyboard Move entry options:
set moveEntry(On) 1
set moveEntry(AutoExpand) 0
set moveEntry(Coord) 1

# Autoplay and animation delays in milliseconds:
set autoplayDelay 5000
set animateDelay 200

# Blunder Threshold
set blunderThreshold 1.0

# Geometry of windows:
array set geometry {}

# Default theme
set ::lookTheme "default"

# startup:
#   Stores which windows should be opened on startup.
set startup(pgn) 0
set startup(switcher) 0
set startup(tip) 1
set startup(tree) 0
set startup(finder) 0
set startup(crosstable) 0
set startup(gamelist) 0
set startup(stats) 0
set startup(book) 0

# glistFields: Layout of the GameList window fields.
#    element 0: code (e.g. g for gameNumber, w for White name)
#    element 1: initial width, in characters
#    element 2: justification (left or right)
#    element 3: color
#    element 4: true if a separator field should follow
#
#    Note that the "g" (game number) field MUST appear somewhere,
#    but the fields can be in any order.
#    See the comments at the start of the function "PrintGameInfo" in
#    src/index.cpp for a list of available field codes.
#
set glistFields {
  { D  1 left  darkRed    0 }
  { g  7 right black      1 }
  { w 14 left  darkBlue   0 }
  { W  5 right darkGreen  1 }
  { b 14 left  darkBlue   0 }
  { B  5 right darkGreen  1 }
  { e 10 left  black      0 }
  { s 10 left  black      0 }
  { n  2 right black      1 }
  { d  7 left  darkRed    1 }
  { r  3 left  blue       0 }
  { m  3 right black      1 }
  { o  5 left  darkGreen  0 }
  { O  6 left  darkGreen  1 }
  { U  2 left  blue       1 }
  { V  2 right blue       0 }
  { C  2 right blue       0 }
  { A  2 right blue       0 }
  { S  1 left  darkRed    0 }
}

set glistDefaultFields $glistFields
set glistAllFields $glistFields
lappend glistAllFields { c  3 left  black      0 }
lappend glistAllFields { E  7 left  darkRed    0 }
lappend glistAllFields { F  7 left  darkBlue   0 }

# myPlayerNames:
#   List of player name patterns for which the chessboard should be
#   flipped each time a game is loaded to show the board from that
#   players perspective.
#
set myPlayerNames {}


# Game information area options:
set gameInfo(photos) 1
set gameInfo(hideNextMove) 0
set gameInfo(showMaterial) 0
set gameInfo(showFEN) 0
set gameInfo(showMarks) 1
set gameInfo(wrap) 0
set gameInfo(fullComment) 0
set gameInfo(showTB) 0
if {[sc_info tb]} { set gameInfo(showTB) 2 }

# Twin deletion options:

array set twinSettings {
  players No
  colors  No
  event   No
  site    Yes
  round   Yes
  year    Yes
  month   Yes
  day     No
  result  No
  eco     No
  moves   Yes
  skipshort  Yes
  setfilter  Yes
  undelete   Yes
  comments   Yes
  variations Yes
  usefilter  No
  delete     Shorter
}
array set twinSettingsDefaults [array get twinSettings]

# Opening report options:
array set optable {
  Stats 1
  Oldest 5
  Newest 5
  Popular 1
  MostFrequent 6
  MostFrequentWhite 1
  MostFrequentBlack 1
  AvgPerf 1
  HighRating 8
  Results 1
  Shortest 5
  ShortestWhite 1
  ShortestBlack 1
  MoveOrders 8
  MovesFrom 1
  Themes 1
  Endgames 1
  MaxGames 500
  ExtraMoves 1
}
array set optableDefaults [array get optable]

# Player report options
array set preport {
  Stats 1
  Oldest 5
  Newest 5
  MostFrequentOpponents 6
  AvgPerf 1
  HighRating 8
  Results 1
  MostFrequentEcoCodes 6
  Themes 1
  Endgames 1
  MaxGames 500
  ExtraMoves 1
}
array set preportDefaults [array get preport]

# Analysis options (Informant values)
# The different threshold values for !? ?? += etc
array set informant {}
set informant("!?") 0.5
set informant("?") 1.5
set informant("??") 3.0
set informant("?!") 0.5
set informant("+=") 0.5
set informant("+/-") 1.5
set informant("+-") 3.0
set informant("++-") 5.5

# Export file options:
set exportFlags(comments) 1
set exportFlags(indentc) 0
set exportFlags(vars) 1
set exportFlags(indentv) 1
set exportFlags(column) 0
set exportFlags(append) 0
set exportFlags(symbols) 1
set exportFlags(htmldiag) 0
set exportFlags(stripMarks) 0
set exportFlags(convertNullMoves) 1
set default_exportStartFile(PGN) {}
set default_exportEndFile(PGN) {}

set default_exportStartFile(LaTeX) {\documentclass[10pt,twocolumn]{article}
  % This is a LaTeX file generated by Scid.
  % You must have the "chess12" package installed to typeset this file.
  
  \usepackage{times}
  \usepackage{a4wide}
  \usepackage{chess}
  \usepackage[T1]{fontenc}
  
  \setlength{\columnsep}{7mm}
  \setlength{\parindent}{0pt}
  
  % Macros for variations and diagrams:
  \newenvironment{variation}{\begin{quote}}{\end{quote}}
  \newenvironment{diagram}{\begin{nochess}}{$$\showboard$$\end{nochess}}
  
  \begin{document}
}
set default_exportEndFile(LaTeX) {\end{document}
}


set default_exportStartFile(HTML) {<html>
  <head><title>Scid export</title></head>
  <body bgcolor="#ffffff">
}
set default_exportEndFile(HTML) {</body>
  </html>
}

foreach type {PGN HTML LaTeX} {
  set exportStartFile($type) $default_exportStartFile($type)
  set exportEndFile($type) $default_exportEndFile($type)
}


# ::windows::switcher::vertical
#
#   If 1, Switcher frames are arranged vertically.
#
set ::windows::switcher::vertical 0
set ::windows::switcher::icons 1

# autoRaise: defines whether the "raise" command should be used to raise
# certain windows (like progress bars) when they become obscured.
# Some Unix window managers (e.g. some versions of Enlightenment and sawfish,
# so I have heard) have a bug where the Tcl/Tk "raise" command times out
# and takes a few seconds. Setting autoRaise to 0 will help avoid this.

set autoRaise 1

proc raiseWin {w} {
  global autoRaise
  if {$autoRaise} { raise $w }
  return
}

# autoIconify:
#   Specified whether Scid should iconify all other Scid windows when
#   the main window is iconified. Most people like this behaviour but
#   some window managers send an "UnMap" event when the user switches
#   to another virtual window without iconifying the Scid window so
#   users of such managers will probably want to turn this off.

set autoIconify 1

# windowsDock:
# if true, most of toplevel windows are dockable and embedded in a main window
# windows can be moves among tabs (drag and drop) or undocked (right-clicking on tab)
set windowsDock 1

# showGameInfo:
# The game info panel below the main board
set showGameInfo 1

# autoLoadLayout :
# Automatic loading of layout # 1 at startup (docked windows mode only)
set autoLoadLayout 1

# autoResizeBoard:
# resize the board to fit the container
set autoResizeBoard 1

################################################################################
# if undocked window : sets the title of the toplevel window
# if docked : sets the name of the tab
# w : name of the toplevel window
proc setTitle { w title } {
  if { $::docking::USE_DOCKING && ! [ ::docking::isUndocked $w ]} {
    set f .fdock[ string range $w 1 end ]
    if { [catch {set nb [ ::docking::find_tbn $f ]} ]} {
      set nb ""
    }
    
    if { $nb == "" } {
      wm title $w $title
    } else  {
      # if target is main board, update the global window instead
      if { $w == ".main" && $title != [ ::tr "Board" ] } {
        wm title . $title
      } else  {
        # in docked mode trim down title to spare space
        if { [ string range $title 0 5 ] == "Scid: " &&  [ string length $title ] > 6 } {
          set title [string range $title 6 end]
        }
        $nb tab $f -text $title
      }
    }
  } else  {
    set wdock ".fdock[string range $w 1 end]"
    if { [winfo exists $wdock ] } { set w $wdock }
    wm title $w $title
  }
  
}
################################################################################
# Creates a toplevel window depending of the docking option
################################################################################
proc createToplevel { w } {
  set name [string range $w 1 end]
  set f .fdock$name

  # Raise window if already exist
  if { [winfo exists $w] } {
    if {! $::docking::USE_DOCKING } {
      tk::PlaceWindow $w
    } else {
      if { [::docking::isUndocked $w] } {
        tk::PlaceWindow $f
      } else {
        [::docking::find_tbn $f] select $f
      }
    }
    return "already_exists"
  }

  if { $::docking::USE_DOCKING && ! [ ::docking::isUndocked $w ] } {
    frame $f  -container 1
    toplevel .$name -use [ winfo id $f ]
    docking::add_tab $f e
    
    # auto focus mode : when the mouse enters a toplevel, it gets a forced focus to handle mouse wheel
    # only the highest stacked window can get the focus forced or on windows any time the mouse enters the main window, it will be raised
    bind .$name <Enter> {
      set tl [winfo toplevel %W]
      set atTop [lindex [wm stackorder . ] end]
      if { $tl == $atTop || $atTop == "." } {
        focus -force $tl
      }
    }
    
  } else  {
    toplevel $w
  }
  
}

################################################################################
# In the case of a window closed without the context menu in docked mode, arrange for the tabs to be cleaned up
# Alternative way : directly call ::docking::cleanup $w when closing window
################################################################################
proc createToplevelFinalize {w} {
  if { $::docking::USE_DOCKING } {
    bind $w <Destroy> +[ namespace code "::docking::cleanup $w %W"]
  }
}

################################################################################
# Sets the menu for a new window : in docked mode the menu is displayed by clicking on the tab of the notebook
################################################################################
proc setMenu { w m} {
  if { ! $::docking::USE_DOCKING } {
    $w configure -menu $m
  }
}
################################################################################
# In docked mode, resize board automatically
################################################################################
proc resizeMainBoard {} {
  # puts "resizeMainBoard [clock clicks -milliseconds]"
  if { ! $::docking::USE_DOCKING } { return }
  
  bind .main <Configure> {}
  
  set w [winfo width .main]
  set h [winfo height .main]
  set bd .main.board
  
  # calculate available height
  set height_used 0
  incr height_used [ lindex [grid bbox .main 0 0] 3]
  incr height_used [ lindex [grid bbox .main 0 1] 3] ;# buttons
  # coordinates
  if { $::board::_coords($bd) == 2 || $::board::_coords($bd) == 0} {
    incr height_used [ lindex [ grid bbox $bd 0 9 ] 3 ]
  }
  if { $::board::_coords($bd) == 0 } {
    incr height_used [ lindex [ grid bbox $bd 0 0 ] 3 ]
  }

  # game info
  set min_game_info_height 6
  set game_info_line_height 6
  set min_game_info_lines 1
  if {$::showGameInfo} {
    set min_game_info_lines 6
    set game_info_lines [.main.gameInfo count -displaylines 1.0 end]
    if { $game_info_lines > 0 } {
      # probably not very correct, do you know any better way to get this information?
      set game_info_line_height [expr 1.0 * [.main.gameInfo count -ypixels 1.0 end] / $game_info_lines]
    } else {
      # utter approximation
      set game_info_line_height [expr [font configure font_Regular -size] * 1.5]
    }
    set min_game_info_height [expr int($min_game_info_lines * $game_info_line_height + 6)]
  }
  incr height_used $min_game_info_height
  
  # status bar
  incr height_used [ lindex [grid bbox .main 0 5] 3]
  
  set availh [expr $h - $height_used -10]
  
  # calculate available width
  set width_used 0
  if { $::board::_coords($bd) == 2 || $::board::_coords($bd) == 0} {
    incr width_used [ lindex [ grid bbox $bd 0 1 ] 2 ]
  }
  if { $::board::_coords($bd) == 0 } {
    incr width_used [ lindex [ grid bbox $bd 9 1 ] 2 ]
  }
  if {$::board::_stm($bd)} {
    incr width_used [ lindex [ grid bbox $bd 10 1 ] 2 ]
    incr width_used [ lindex [ grid bbox $bd 11 2 ] 2 ]
  }
  if {$::board::_showmat($bd)} {
    incr width_used [ lindex [ grid bbox $bd 12 1 ] 2 ]
  }
  set availw [expr $w - $width_used ]
  
  if {$availh < $availw} {
    set min $availh
  } else  {
    set min $availw
  }

  if { $::autoResizeBoard } {
    # find the closest available size
    for {set i 0} {$i < [llength $::boardSizes]} {incr i} {
      set newSize [lindex $::boardSizes $i]
      if { $newSize > [ expr $min / 8 ] } {
        if {$i > 0} {
          set newSize [lindex $::boardSizes [expr $i -1] ]
        }
        break
      }
    }
    # resize the board
    ::board::resize2 .main.board $newSize
    set ::boardSize $newSize
  }

  # adjust game info height
  set new_game_info_lines [expr int(($min_game_info_height+($availh-$::boardSize*8))/$game_info_line_height)]
  if { $new_game_info_lines > $min_game_info_lines } {
    set new_game_info_lines [expr $new_game_info_lines - 1]
  }
  .main.gameInfo configure -height $new_game_info_lines
  
  update idletasks
  bind .main <Configure> { ::docking::handleConfigureEvent ::resizeMainBoard }
}
################################################################################
# sets visibility of gameInfo panel at the bottom of main board
proc toggleGameInfo {} {
  if {$::showGameInfo} {
    grid .main.gameInfoFrame -row 3 -column 0 -sticky nsew
  } else  {
    grid forget .main.gameInfoFrame
  }
  updateGameInfo
  update idletasks
  resizeMainBoard
}
################################################################################

# Email configuration:
set email(logfile) [file join $scidLogDir "scidmail.log"]
set email(oldlogfile) [file join $scidUserDir "scidmail.log"]
set email(smtp) 1
set email(smproc) "/usr/lib/sendmail"
set email(server) localhost
set email(from) ""
set email(bcc) ""


### Audio move announcement options:

set ::utils::sound::soundFolder "/usr/share/scid/sounds"
set ::utils::sound::announceNew 0
set ::utils::sound::announceForward 0
set ::utils::sound::announceBack 0

# Spell-checking file: default is "spelling.ssp".
if {$windowsOS} {
  set spellCheckFile [file join $scidDataDir "spelling.ssp"]
} else {
  set spellCheckFile "/usr/share/scid/data/spelling.ssp"
}

# book configuration
set ::book::lastBook "" ; # book name without extension (.bin)

# Engines list file: -- OLD NAMES, NO LONGER USED
#set engines(file) [file join $scidUserDir "engines.lis"]
#set engines(backup) [file join $scidUserDir "engines.bak"]

# Engines data:
set engines(list) {}
set engines(sort) Time
set engineCoach1 {}
set engineCoach2 {}

if {$::unixOS} {
  set iconFileDirs [list \
      $scidExeDir [file join $scidExeDir "../share/scid"]]

  foreach iconFileDir $iconFileDirs {
    set scidIconFile [file join $iconFileDir "scid.gif"]
    if {[file readable $scidIconFile]} {
      set iconimage [image create photo -file "$scidIconFile"]
      wm iconphoto . -default $iconimage
      break
    }
  }
}

# Set up Scid icon in Windows:
if {$::windowsOS} {
  # Look in each of the following directories for a file named scid.ico:
  set iconFileDirs [list \
      $scidExeDir $scidUserDir $scidConfigDir [file join $scidExeDir "src"]]
  
  foreach iconFileDir $iconFileDirs {
    set scidIconFile [file join $iconFileDir "scid.ico"]
    if {[file readable $scidIconFile]} {
      catch {wm iconbitmap . -default $scidIconFile}
    }
  }
}

# Reversed mouse buttons in mac (::MB2 and ::MB3 are middle and right mouse buttons respectively.):
if { $macOS } {
  set ::MB2 3
  set ::MB3 2
} else {
  set ::MB2 2
  set ::MB3 3
}


# Opening files by drag & drop on Scid icon on Mac
if { $macOS } {
  # Drag & Drop
  set dndisbusy 0
  set isopenBaseready 0
  set dndargs 0
  
  proc dragndrop {args} {
    global dndisbusy
    global isopenBaseready
    global dndargs
    
    # Un-nest arguments:
    set args [join $args]
    
    # Wait for openBase to be ready, if needed.
    if {$isopenBaseready == 0} {
      if {$dndargs != 0} {
        tk_messageBox -type ok -icon info -title "Scid" -message \
            "Please, wait until Scid finish starting up."
        return
      } else {
        # Save file names for later use:
        set dndargs $args
      }
      return
    }
    
    # Are we busy opening files? if so, display message and do nothing
    if {$dndisbusy != 0} {
      tk_messageBox -type ok -icon info -title "Scid" -message \
          "Please, wait until the previou(s) database(s) are opened and try again."
      return
    }
    
    # Un-nest argumens again if Scid opened on drag & drop
    if {$isopenBaseready == 2} {
      # Un-nest arguments:
      set args [join $args]
      set isopenBaseready 1
    }
    
    set dndisbusy 1
    set errmsg ""
    foreach file $args {
      # Check for available slots:
      if {[sc_base count free] == 0} {
        tk_messageBox -type ok -icon info -title "Scid" \
            -message "Too many databases are open; close at least one \n\
            before opening more databases"
        #::splash::add "No slot available."
        return
      }
      # Email File:
      if {[file extension $file] == ".sem"} {
        #::tools::email
        continue
      }
      # SearchOptions file:
      if {[file extension $file] == ".sso"} {
        set ::fName $file
        if {[catch {uplevel "#0" {source $::fName}} errmsg]} {
          tk_messageBox -title "Scid: Error reading file" -type ok -icon warning \
              -message "Unable to open or read SearchOptions file: $file"
        } else {
          switch -- $::searchType {
            "Material" { ::search::material }
            "Header"   { ::search::header }
            default    { continue }
          }
        }
        continue
      }
      
      # Scid doesn't handle well .sg4 and .sn4 files.
      if {([file extension $file] == ".sg4") || \
            ([file extension $file] == ".sn4")} {
        set eName ".si4"
        set fName [file rootname $file]
        set file "$fName$eName"
      }
      # Scid doesn't handle well .sg3 and .sn3 files.
      if {([file extension $file] == ".sg3") || \
            ([file extension $file] == ".sn3")} {
        set eName ".si3"
        set fName [file rootname $file]
        set file "$fName$eName"
      }
      
      # Check if base is already opened
      if {[sc_base slot $file] != 0} {
        tk_messageBox -type ok -icon info -title "Scid" -message \
            "$file is already opened."
      } else  {
        # All seems good, let's open those files:
        catch {::file::Open $file} errmsg
      }
    }
    set dndisbusy 0
    set dndargs 0
  }
  proc tkOpenDocument {args} {
    after idle [list dragndrop $args]
  }
  rename tkOpenDocument ::tk::mac::OpenDocument
}

# Add empty updateStatusBar proc to avoid errors caused by early
# closing of the splash window:
#
proc updateStatusBar {} {}

# Start up splash screen:

set ::splash::autoclose 1

proc ::splash::make {} {
  wm withdraw .
  set w [toplevel .splash]
  wm withdraw $w
  wm protocol $w WM_DELETE_WINDOW [list wm withdraw $w]
  wm title $w "Welcome to Scid $::scidVersion"
  ttk::frame $w.f
  ttk::frame $w.b
  text $w.t -height 15 -width 60 -cursor top_left_arrow \
      -background white -font font_Regular -wrap word \
      -yscrollcommand [list $w.ybar set] -setgrid 1
  ttk::scrollbar $w.ybar -command [list $w.t yview]
  ttk::checkbutton $w.auto -text "Auto-close after startup" -variable ::splash::autoclose -style Small.TCheckbutton ;# -pady 5 -padx 5
  ttk::button $w.dismiss -text Close -width 8 -command [list wm withdraw $w] -style Small.TButton
  pack $w.f -side top -expand yes -fill both
  pack $w.b -side top -fill x
  pack $w.auto -side left -in .splash.b -pady 2 -ipadx 10 -padx 10
  pack $w.dismiss -side right -in .splash.b -pady 2 -ipadx 10 -padx 10
  pack $w.ybar -in $w.f -side right -fill y
  pack $w.t -in $w.f -side left -fill both -expand yes
  
  # Centre the splash window:
  update idletasks
  set x [expr {[winfo screenwidth $w]/2 - [winfo reqwidth $w]/2 \
        - [winfo vrootx .]}]
  set y [expr {[winfo screenheight $w]/2 - [winfo reqheight $w]/2 \
        - [winfo vrooty .]}]
  wm geom $w +$x+$y

  # Show the startup window by default
  wm deiconify $w
  
  bind $w <F1> {helpWindow Index}
  bind $w <Escape> {.splash.dismiss invoke}
  
  $w.t tag configure indent -lmargin2 20
  
  $w.t image create end -image splash
  $w.t insert end "Shane's Chess Information Database"
}


# Old Scid logo:
image create photo splash -format gif -data \
    "R0lGODdhZgAmAMIAAP///6CBUNHBoQAAcAAAAFK4bgAAAAAAACwAAAAAZgAmAAAD/gi63P4w
ykkrDThjwTvXmueBmdiRmymggbqirqawMazSt23iuy7KAN7PNyKejB/ki1TDzJTCIjM37VWH
moFWiw08r1JQU0wlW83YrXrQ/ZrX8NQ5VKbPSzn4th2E6f9sd3JddoR4PYB8LIB/dYeGg2GF
knB8KokccWBHm0mdS2gCmo8KJn+Da1Cqn1Gjg6Uieo+prKoEt4+Sua4tHbAdp6hqq6Ent8eR
nKG8Hr+ZssJbRMG9JsfX1YZrosy+ALHQ2dxaNozSLtfITea0pN8ejOLKWex7Kum4NfXDhc7P
mJAaBdCDDp+8f2oKgOPnjkS9YsHGtcuADxmKSqAGbgvj/gbDvgG5JPITKU1DRWwgCGbEqKyj
x4/iqJEkZ/IkrpQbV+b05KWPw48L280kYfNmBpU61Sgqtw9eOIRsiBbFmZOqvZY+0dRzOmoM
xZM/q9JTyjHrpJk5ZToKYDMs2aRXebpMBjXtU0dFCVi9ujcQ1qBMRzXiOSnvLa4Mg9J0B3gK
tcEZHxk+BgyaYpD93lUuSSecRpVCJh+uS/MyGn8TU3hmFFljB9EENscxnVkxE2ovcX8OBHs0
Wi6kT2uuO5ZXbqACescm/bA24qYXPwJX/hwm4+rmCJdAnrz3CNa/X5k9DuisJ/BLlNtJjQlI
lHkhtdNtfZC+1/ig5tZ/L38/GjHz9pWh333z8RegIP7V4oQFDDbo4IMQLpAAADs="

# New Scid logo:
image create photo splash -format gif -data {
  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
  eoGp4WkYkYCVQ6MQF/MBwZAr3xkQADs=
}

::splash::make

proc ::splash::add {text} {
  if {! [winfo exists .splash]} {return}
  .splash.t configure -state normal
  .splash.t insert end "\n$text" indent
  .splash.t see end
  .splash.t configure -state disabled
  update
}

::splash::add "Copyright (C) 1999-2004 Shane Hudson"
::splash::add "Copyright (C) 2006-2009 Pascal Georges"
::splash::add "Copyright (C) 2010-     The Scid Project"
::splash::add "This is Scid $::scidVersion, released $::scidVersionDate."
::splash::add "Website: http://scid.sourceforge.net\n"

# Remember old font settings before loading options file:
set fontOptions(oldRegular) $fontOptions(Regular)
set fontOptions(oldMenu) $fontOptions(Menu)
set fontOptions(oldSmall) $fontOptions(Small)
set fontOptions(oldTiny) $fontOptions(Tiny)
set fontOptions(oldFixed) $fontOptions(Fixed)

# New configuration file names:
set scidConfigFiles(options) "options.dat"
set scidConfigFiles(engines) "engines.dat"
set scidConfigFiles(engines.bak) "engines.dat"
set scidConfigFiles(recentfiles) "recent.dat"
set scidConfigFiles(history) "history.dat"
set scidConfigFiles(bookmarks) "bookmarks.dat"
set scidConfigFiles(reports) "reports.dat"
set scidConfigFiles(optrainer) "optrainer.dat"
set scidConfigFiles(resolvers) "resolvers.dat"

# scidConfigFile:
#   Returns the full path and name of a Scid configuration file,
#   given its configuration type.
#
proc scidConfigFile {type} {
  global scidConfigDir scidConfigFiles
  if {! [info exists scidConfigFiles($type)]} {
    return -code error "No such config file type: $type"
  }
  return [file nativename [file join $scidConfigDir $scidConfigFiles($type)]]
}

# Create user ".scid" directory in Unix if necessary:
# Since the options file used to be ".scid", rename it:
if {! [file isdirectory $scidUserDir]} {
  if {[file isfile $scidUserDir]} {
    catch {file rename -force $scidUserDir "$scidUserDir.old"}
  }
  if {[catch {file mkdir $scidUserDir} err]} {
    ::splash::add "Error creating ~/.scid directory: $err"
  } else {
    catch {file rename "$scidUserDir.old" $optionsFile}
  }
  # Rename old "~/.scid_sent_emails" if necessary:
  if {[file isfile [file nativename "~/.scid_sent_emails"]]} {
    catch {file rename [file nativename "~/.scid_sent_emails"] $email(logfile)}
  }
}

# Create the config, data and log directories if they do not exist:
proc makeScidDir {dir} {
  if {! [file isdirectory $dir]} {
    if {[catch {file mkdir $dir} err]} {
      ::splash::add "Error creating directory $dir: $err"
    } else {
      ::splash::add "Created directory: $dir"
    }
  }
}

makeScidDir $scidConfigDir
makeScidDir $scidDataDir
makeScidDir $scidLogDir

# Rename old email log file if necessary:
if {[file readable $email(oldlogfile)]  &&  ![file readable $email(logfile)]} {
  catch {file rename $email(oldlogfile) $email(logfile)}
}

# moveOldConfigFiles
#   Moves configuration files from the old (3.4 and earlier) names
#   to the new file names used since Scid 3.5.
#
proc moveOldConfigFiles {} {
  global scidUserDir scidConfigDir
  foreach {oldname newname} {
    scidrc options.dat
    scid.opt options.dat
    scid.bkm bookmarks.dat
    scid.rfl recentfiles.dat
    engines.lis engines.dat
  } {
    set oldpath [file nativename [file join $scidUserDir $oldname]]
    set newpath [file nativename [file join $scidConfigDir $newname]]
    if {[file readable $oldpath]  &&  ![file readable $newpath]} {
      if {[catch {file rename $oldpath $newpath} err]} {
        ::splash::add "Error moving $oldpath to $newpath: $err"
      } else {
        ::splash::add "Moved old config file $oldname to $newpath"
      }
    }
  }
}

moveOldConfigFiles

set optionsFile [scidConfigFile options]

set ecoFile ""

################################################################################
#  Load options file. All default values should be set before this point or new saved values will be overwritten by default ones
################################################################################
if {[catch {source $optionsFile} ]} {
  #::splash::add "Unable to find the options file: [file tail $optionsFile]"
} else {
  ::splash::add "Your options file \"[file tail $optionsFile]\" was found and loaded."
}

set ::docking::USE_DOCKING $windowsDock

# depending on the docking mode, change the definition of window "." (ie main window)
if {$::docking::USE_DOCKING} {
  set dot_w "."
} else  {
  set dot_w ".main"
}

# Now, if the options file was written by Scid 3.5 or older, it has a lot of
# yucky variable names in the global namespace. So convert them to the new
# namespace variables:
#
proc ConvertOldOptionVariables {} {
  
  set oldNewNames {
    autoCloseSplash ::splash::autoclose
    switcherVertical ::windows::switcher::vertical
    doColorPgn ::pgn::showColor
    pgnIndentVars ::pgn::indentVars
    pgnIndentComments ::pgn::indentComments
    pgnShortHeader ::pgn::shortHeader
    pgnMoveFont ::pgn::boldMainLine
    pgnMoveNumSpace ::pgn::moveNumberSpaces
    pgnStripMarks ::pgn::stripMarks
    pgnSymbolicNags ::pgn::symbolicNags
    pgnColumn ::pgn::columnFormat
  }
  
  foreach {old new} $oldNewNames {
    if {[info exists ::$old]} {
      set $new [set ::$old]
    }
  }
}

ConvertOldOptionVariables


# Reconfigure fonts if necessary:
foreach i {Regular Menu Small Tiny Fixed} {
  if {$fontOptions($i) == $fontOptions(old$i)} {
    # Old font format in options file, or no file. Extract new options:
    set fontOptions($i) {}
    lappend fontOptions($i) [font actual font_$i -family]
    lappend fontOptions($i) [font actual font_$i -size]
    lappend fontOptions($i) [font actual font_$i -weight]
    lappend fontOptions($i) [font actual font_$i -slant]
  } else {
    # New font format in options file:
    configureFont $i
  }
}

# Check board size is valid:
set newSize [lindex $boardSizes 0]
foreach sz $boardSizes {
  if {$boardSize >= $sz} { set newSize $sz }
}
set boardSize $newSize

# Load theme
ttk::style theme use $::lookTheme

# Use default font everywhere
ttk::style configure TLabel -font font_Regular
ttk::style configure TButton -font font_Regular
ttk::style configure TRadiobutton -font font_Regular
ttk::style configure TCheckbutton -font font_Regular
ttk::style configure TMenubutton -font font_Regular
ttk::style configure TCombobox -font font_Regular
ttk::style configure TEntry -font font_Regular

# Style definitions
ttk::style configure Bold.TCheckbutton -font font_Bold
ttk::style configure Small.TCheckbutton -font font_Small

ttk::style configure Small.TButton -font font_Small
ttk::style configure Bold.TButton -font font_Bold
ttk::style configure Pad0.Small.TButton -padding 0

ttk::style configure Small.TRadiobutton -font font_Small
ttk::style configure Regular.TRadiobutton -font font_Regular
ttk::style configure Bold.TRadiobutton -font font_Bold
ttk::style configure SmallBold.TRadiobutton -font font_SmallBold

ttk::style configure pad0.TMenubutton -padding 0 -indicatorwidth 0 -indicatorheight 0  -font font_Small

# Check for old (single-directory) tablebase option:
if {[info exists initialDir(tablebase)]} {
  set initialDir(tablebase1) $initialDir(tablebase)
}

# font_Regular is the default font for widgets:
option add *Font font_Regular

# Use font_Menu for menu entries:
option add *Menu*Font font_Menu
# option add *Menubutton*Font font_Menu

if {$unixOS} {
  option add Scrollbar*borderWidth 1
}

# Set the radiobutton and checkbutton background color if desired.
# I find the maroon color on Unix ugly!
if {$unixOS} {
  option add *Radiobutton*selectColor $buttoncolor
  option add *Checkbutton*selectColor $buttoncolor
  option add *Menu*selectColor $buttoncolor
}

set fontsize [font configure font_Regular -size]
set font [font configure font_Regular -family]

font create font_Bold -family $font -size $fontsize -weight bold
font create font_BoldItalic -family $font -size $fontsize -weight bold \
    -slant italic
font create font_Italic -family $font -size $fontsize -slant italic
font create font_H1 -family $font -size [expr {$fontsize + 8} ] -weight bold
font create font_H2 -family $font -size [expr {$fontsize + 6} ] -weight bold
font create font_H3 -family $font -size [expr {$fontsize + 4} ] -weight bold
font create font_H4 -family $font -size [expr {$fontsize + 2} ] -weight bold
font create font_H5 -family $font -size [expr {$fontsize + 0} ] -weight bold

set fontsize [font configure font_Small -size]
set font [font configure font_Small -family]
font create font_SmallBold -family $font -size $fontsize -weight bold
font create font_SmallItalic -family $font -size $fontsize -slant italic

# Start in the clipbase, if no database is loaded at startup.
sc_base switch clipbase

###
### End of file: start.tcl
# config.tcl: Some embedded configuration for Scid

namespace eval ::config {}

if {$windowsOS} {
  set scidShareDir $scidExeDir
} else {
  set scidShareDir [file normalize [file join $scidExeDir "../share/scid"]]
}

if {![info exists scidBooksDir]} {
  set scidBooksDir [file nativename [file join $scidShareDir "books"]]
}

if {![info exists scidBasesDir]} {
  set scidBasesDir [file nativename [file join $scidShareDir "bases"]]
}

# ecoFile: the ECO file for opening classification. Scid will try to load
# this first, and if that fails, it will try to load  "scid.eco" in the
# current directory.
if {$ecoFile == ""} {
  if {$windowsOS} {
    set ecoFile [file join $scidDataDir "scid.eco"]
  } else {
    set ecoFile [file join [file join $scidShareDir "data"] "scid.eco"]
  }
}
# bitmaps.tcl:
# Chess piece bitmaps used by Scid.

# The piece images used here were generated from freeware chess
# fonts available in TrueType format at the En Passant website
# "Chess Fonts" page, http://www.enpassant.dk/chess/fonteng.htm

# The authors of the original TrueType fonts are:
#   Alpha: Eric Bentzen.
#   Leipzig, Merida: Armando H. Marroquin.

set png_image_support 1
if { [catch { package require img::png } ] } {
  set png_image_support 0
  ::splash::add "Img package not found (tkimg). Some piece sets are disabled."
}

set boardStyles {}

##########
# Size 20 is only used in Material search window, not for boards.
# It has two special extra images, wm20 and bm20, which contain a
# bishop and knight, for indicating a minor piece.
#

image create photo wm20 -data {
  R0lGODlhFAAUAMIAAH9/f7+/vz8/PwAAAP///////////////yH5BAEKAAcALAAAAAAUABQA
  AANweLp8cCG02cSwNB8RSACctgBAR3iDqJDd5wlidBLCHGb1CQzzx+yPDYAWyJ1gixpSwOLM
  CClFESSRup7RImF42zxP0Vpg0EE6SGjSCqxTKYxHN4RJ6sYETHxVNa3vM2gDQyBoGkNbhIdq
  FHRBZyAaCQA7}

image create photo bm20 -data {
  R0lGODlhFAAUAMIAAH9/f7+/vwAAAD8/P////////////////yH5BAEKAAcALAAAAAAUABQA
  AANneLp8cCG02YQYgupj+5CbEgyYAAQCuJHlNYZo1wHDo7VyOjSAebQxS69R25UCvVlmMXIp
  TrmhSGgB4S5LzoVQegK+YJtWwLWEFjnzGVL7ftYQMoGQggerZ3CrLealoxomXxJIX1kNCQA7
}

image create photo p20 -data {
  R0lGODlh8AAUAMIAAH9/fz8/P7+/vwAAAP///////////////yH5BAEKAAcALAAAAADwABQA
  AAP+eLrc/jDKSau9OOvNu/8VAIBkJAhl2ohqe5xuCgTBGL/oQaMwJew30KwWhAkGA0Vv8gvk
  LALRUxJ9BTSAk40qFXWzkKZWCmQit5Uo2GdDW4ZuiFQ9koZ33mxZAjhjBidJFDNIRBgBhRQD
  Q4t9NH0NP3o1BEgEYjNTDix/SIITfQOIcROIooOFpouekV6PlQMEQ2qaK6QSsZUholGit5GA
  BJeAuMIixgDCnwrJAbKLsMPNsiY0VxeeyxGhnoZm2cTb4OMrP88C0X3NVWF+2CLaELnCUTRm
  6CfDtQuUwv7G1xb8iHUkmSV1lZy0GpErSZR9DbJVUOULCUQl3VRdPDL+rtsKRM8MxuqDjlcr
  FBIflkomK+CdLP8I2Ivg5NIOmxIe5RnygOSzhDKlLGqg01LCGjMhUHQpj1AhmfEYmHIy8JSJ
  jlZXAHIUDWRBojWcFnK1zZk/bw9oBLt09lcuMcpA7eS0CU8WVyIeMTBHD9ARdMjkjPt14BhF
  QEkddDuhSm7MqIUrrgJ0ZhSDvJIr+7o14x9dB3z9zTtCE3A+nHxiUpNXsFKgXj+mHPN3pKa/
  z5cH48LqJJwDVWoT8enYDis4W9k4cjzjliWk0p5ZBn5QcKdvOardXqqXN1nJVjFpxMTNgJw4
  4zypj3V6kRlxecYl7g0+mZtewcLQ/vYMjTb+U6lh5fXfJtmVNcpOj/xnGzL/kHaeO/AZ1xtN
  AaY3nHk9dZOHKnH0th43M1D4T2KXzebEbKKVFcoMhDEz1y8cvUjIPo3AU2MmNI0zYGEU2eiJ
  a3JUqF9PFT6nnnd5GHMdRrScQMeSC3Q23oCdxXaEapAdMI+Sisy1I0YyQslMgOi48iU34AzY
  yxlQJTfUA1hRoJMXYmJkHESOLIXIl1v+A5mAMgE2IkS9qLUGdDH9gIt0fprAaHQRxHeHeIfV
  eEc2CuV0Z6TrNVYcVrdEodp0ZY36WVVsPrPYb/HxmVFykfrYyJfLddTeCx15MZ8ovJlEVHx1
  zoNillrWICgh2zxpeluLfbZVnllK9pefNiiaSopPWLrVD0BZoqnbboOhBexxEQF7bXxuGfdg
  rlTEJxt9YDh1n0Dj7rOmjhtVmmmG6E2ArlRpapGmYsDa6+2qlwYcxAWHyrHwwxAX1h47EVds
  8cUYZ6xxBwkAADs=
}

image create photo e20 -height 20 -width 20
set x 0
foreach p {wp wn wb wr wq wk bp bn bb br bq bk} {
  image create photo ${p}20 -width 20 -height 20
  ${p}20 copy p20 -from $x 0 [expr $x + 19] 19
  incr x 20
}

####################
# Alpha:

lappend boardStyles Alpha

set pieceImageData(Alpha,25) {
  R0lGODlhLAEZAMIAAL+/vz8/PwAAAH9/f////////////////yH5BAEKAAcALAAAAAAsARkA
  AAP+eLrc/jDKSau9OOvNu/9gKI5kaZ5oqq4QAHSBELD0QFcuLN+rzUsC3yZAmP0WA6EiqQEM
  gq+jI9gRWKVL5YGZcUI7SW038IQNjBYnUz14haOSM3crzzyt4kvYA4gJdGg4e2xuSXARd0KJ
  dlZUQ2GBGGcABACOGH2TegMEf0kETAKgeQ1yinUafzpWkXqNeE0xAYcTd56NNrgUi0uwqWCc
  BKNjwcJFrXGzlbMWn7igjcMUAcwKfcgVqhu2vhd9r6zYENwCtIjg6N0SMXCW4hPaGp/Ccziz
  lsXHFtTGwtQV8/oJrBehHJpZ8cbJYIevnDt2AMGRaiELWiMn+9K9Q5L+Dt1EBqwW+Nm10GEQ
  k9TKASxGME45gf3+1SJCzxiZbJRgCrNkjg4cUcz6dFqgpgG/neyWKfO3cYtEV3iSvJrVlJvV
  bB1f9TS04OIBS1esETy6rFwbajn1TePUJw0Znf14ShBqTJTNng6ohdkr8wERVU4q2XjbRgFQ
  BnRjUkp8d1qjptb8ZDWI1xq4Tlor6N2bpO+UsGCpSI7SCDERP6d5nmZVpHLkxhMypR1o813A
  aPQ+IiHDGZXfM1mE/bHLhUygNjCFLo2rO7QV15ZTpksE/BxuzOoQ8eZ8E0JIp6Vf+RiJxAsu
  5ebxYIxAlukuF3BpQgMi0G7dlTpbEn0yY+n+k2AYxVBYV/GdAVdCRmlEQRCSgQNWGwiCdBk6
  EXU0kRf9ZTXYFwSiU4SB4PwVgRp6bQZdUjAtZ0kcs9knTS35GKMfA2RY0Y+LeLSCHEz/6bTe
  AyQ+xhUQWdUYxFDWRfMUSRZO0OBkO5SSXlRBkNOGblsshmUWBgkZY4REyZcidEvABUpsVJlJ
  lTkBxeViTFjasiUd04XGCZiWTUYmeNPFBmVmpUA4IXYXdUefcBfIoNIBy93o5CycXWPBm446
  OZuP2DRaF6ZYlTbpc1k0CKGTMnAX5YKTOfZnpi5c9pdWbaEJ20oKtFfpOtt1BplhZuKJRIw8
  kmKJTpR2QqZzi9L+yuh0ZTzK3a4HQMkklMICJZ5Ujxk7TVqxenOkj74G18+MDxSL6IKCSUYG
  Jb7ShS0uwVRD6lRdaNhsMtzNGW2qqLY5SlgUjSKjjJzIO6KYrXl76bjhRtvbvQs+LBVW6xrj
  hCx+VswcRBQgC2oak00Mz8MNdyUxxAUJNhVyG2VyRoidHYuwP3syujDDu/x3Ermm5fosdDsK
  xi2WL9HzbSUle+yVZiGj/MC7UdlTJckGP63uy6wQLRkntsQwzcy1ZWOm0ePwVeMZPhd0s5uk
  5tQj0kTbx1NdDT+JDmRQ1lg2JDDvVdCfAEOw2pF3EEE0doOLEq6BY1ftQGBjy2VUpCua3sOd
  d2PfB8TaSE+T+UbkdASd0hIlK1JH+97tHeDhmiXxik6e3NlMsvs2js8ka2HKXirhk+/juD/8
  ju8nm+7A7hIb+jTguoXeJAPO9/48Yqy3O7XExpcSPF8fsSH76LW/0YD3e0Dfmznkfz9i+AO2
  wL5r6T8M/vvjPxxopI+zPySQ9K8ffs1YCKAAB0jAAhrwgAhMoAIXGIEEAAA7
}

set pieceImageData(Alpha,30) {
  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
  Ni+QAAA7
}

set pieceImageData(Alpha,35) {
  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
}

set pieceImageData(Alpha,40) {
  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
}

set pieceImageData(Alpha,45) {
  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
}

set pieceImageData(Alpha,50) {
  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
}

set pieceImageData(Alpha,55) {
  R0lGODlhlAI3AMIAAH9/fwAAAL+/vz8/P////////////////yH5BAEKAAcALAAAAACUAjcA
  AAP+eLrc/jDKSau9OOvNu/9gKI5kaZ5oqq5s675wLM90bd94ru987//AoHBILBqPyKRyyWw6
  n9CoVACoCqTYrPZDtW6/YNfgahMEzmdyWFsFrEvjmxkdUL+l7bvIPLid22d6WGiCIHx+dIGF
  UISLHHMBNgBnBJVpjhAAdhFVNY2YGZCSiZegDZoVnTSfphYDaG40c5UEpa2QdRG4myuTpLGt
  E69/NbhovI67unTIKb6JwDfROQKvY4o01gDWLG3ewF3fat95JH++EefYLc900zXvcsOsMvNn
  fb3k4Prj+iWk6RLBaAdLGrQczwQQeBXvxTx8vUhFUkCQmAKJEENMAlD+aeODjR0DNDzRBRaq
  Ue4QShzZ4iE7iQsqilyAkUTFeDdflDzXrAWudj1ZVPtDa04cGUPvBRUxaQCgiQeatmFIU2QV
  qiNAEvDoQCtXGPRmGGNWzF6iozGSBkDrDCbFlVUPZv31kW6MsDLu0SIwNCOMYWP2bkXjt5ve
  YSw1iqSFTetgYJRCJs7QlMorZHw0Xc67bpXEe9k+n40hc/IHmTHhXrTLlBRm15yh0mgquBJW
  nbBq00roc5jCSkZVOD63bXFIp1UiP4ZDp/ACe85Z4B0o2iLu6oRtqVBLKnrrX1cxPpU7AnoE
  87ER/RY8B4ZR3ewBr3hf2zeK4b92S9RvOsP+vJHPeLfCdC9g19l8BhLWF4IGLtWBTAmK1h8G
  /3FCmGeyzaBcbQemMAdHtoEIn3z3EQWfLw5u4Bg/RenDnwlpdLhaeyRQQZ4CxmxC0EkwGngd
  MxCuNZiAp0WYiwlBGnmjCAJB0OQINqbEQI6nQJPiBhsKJiOSa4EIiYi6kchcHfAVBVoJjpWp
  5ov/BLDQTF0JueUGZpF1gFHFHTnWhT1i50JFvwU5AF9rnVAndkSqqGSCE16w5Ft0kHBoKXja
  d6doiWLpJnxz7gEYcImsKaYIvq0JaqE2CWmqqbe1NiiNDaTxZqPLmAicfHrZFghg6w2mXQgJ
  CmVWYIxJSGimFC7+euZcylZHKwUVPcCaB1/ulVQfub4ZCa978WbOprp1CkJCq3L6qwcolkvo
  kXtkq65gll5gI48MaNVqVKp+NeVGDtJXGy6D7mVPrwKf60Gwwq30DXYKbfZds1dasGezx4TC
  b11L5uTAvP26a21zhDbMzIgGP6gqvHCS9Om7tT3TLpkcZnlqxBVAQnC5NoeSCC8MnRorzE1t
  vLME/uoGSbiylhnvuNg9K++kiwYsrsTVFfsZzRRMDLHOdjJw6M+jNUBlrQFvtY0mp26KhiVJ
  W1YFLUuDYM16C5a41s0s65qyB9aYCy7KyCbbpT6E5xk4A7Ie8nPBwNBWrAOXrStB32v+zkFw
  uqKiSiqmbVG833JyV832Z4e7ck/hhI/qaNiIq4avW14DdJ6q3MFs+ZuDYk4Qsdx8W/YwKCQF
  Zt7sESivzFaXWTK6njt9gHIHbqj4AZE/vjjbteKcZdKmLq8p7CXU7nlu6HCBndVXczm8qfpi
  AP5q3T33mQPvTxnZxL/NUgvbv036m/cYKJq2sAYtpRCvI2ECIAV6JpjStExzc0EO6r5xr9VZ
  LzVl09UV+ICyaUAvQ7Fbn9KMgzt1ta8DWlMgZcYHC2jw7wOTEiGESpcKEpbrhBZ4X5A2KCGw
  RQoCDIRa/xYjsoBpLWA41MDt/qXC1XGECgf8m372pindODD+ZupjWRIL6BTrvGV4h2Agm1Ij
  kgpW5V36qwXMyjW1rCWIgBJwR5Kqdha2OS8u+Xng/NDUPA7sqEqko14P6/WoM/pKNApJY+IY
  hr0irZGJVOSb2h6pPb9RC3k7sQremniBNK1qiwtknSDX9weZTU+QzYmjFFm1GMepq40SmKOU
  QoAYvSlpUKQICQgDiKm3dSRPEoFjLPvIgWHFTkLVyYgxA6JLTOmKI46DmolgCUTuwSc4inki
  3liVwb0Yr4Cr9CbyinXHTNjwk5HUwEPIgLxniFARasnUOMvEQWuuipoPkGZNFPMHfV5NjXTQ
  JfPON7pBMqtZ5VTAOuFHMRy5hAL+kZFlIuVEphROc5cX8Oc+i3Q24plBhL66oy/UtDblsas1
  IC0TKKm2FmKMs6RYJEiK5mnSNL4So6ZTFg0x5rlX5TKkJiMoQBHJR4ol9FIpYeHrKgbRTckS
  RJdRlT9BhM8FWBRRwiSjPU1l0wZ6UQM0hSnSekS8quazSyCz4jmn2E8IqjJv7sybWZFKMbYo
  anwKqYguy2kg9O3xW56jJQsNhKyIJqiZVDVQYr+lJZwOtFQN9MYvIavWdGZ0rck7kVuBFc7u
  OdZ9dRCe8lSqFFgVMKWa3eqaVpoB0ZzAFxp1zbpCBdQO6NOv8WtTYDk7WNdaQCuMGl0zRcda
  93XzFa/+rWji/Ems1Jazq+qyHFnl+tlOSpWS2guYGSEAXc92lqQnBYFv+ThRIwVmYnu95GCz
  GpDdMq23rnMjEgmrK+0q9oUo9epRN+bQu31pKse4aUIpx7Letams1V1d/g7IF5+BFrVI+65m
  d2qhz+xXbP0FT3ickj/RpFeS46PwBJTKJPjKTsG29PBjCkq646RqeMXdwNGkaz/MOle8J9uN
  ZFGW4CpSdy4Qftd2syfkHN8zvI6Mb42CGUtpfvhgCltY/Urs3vea+Ktu3NRVn0gmieK3xGNV
  2T3ORWB0WpaXg2tantj71h+/jMExI2CZ2WdjkonYSdUJnll4MR6C+uKoX9r+ZouY2qeGvuzK
  SA6lEZtmieEGs75L7uaXTXAtyKmWtGdG81kADBuS0HSEbA4hnPWz0yWiM8hTDHWNiarnZclP
  SU9Wb6/CMWtOcs1zqlYookttIos2eqiP9lWudS3DzZJ3SiszIZb92KXVDplpqH7ghfElaeI9
  m2iXlrb2Eg1iziXMDuJDlN4u/GeodTHTSTbqQeHrvCWmEIHA3tnMlvzdudqWMHBdtqJQHeN9
  E6/fFRhnOLyxTXujUtDe0EYb6OnqEFy1x+VB6OjIvahpx2l8FiedFdgTnilf1naE2fhurNVx
  kBtbktWGtBj+IGg1/Tm/dLZ4laKt32+tJzmKFVH+0EBMN2ASFm2nunM1CesQo07cVRMMj8wJ
  iXHAsjy67RA6ZAWAcHp2+OQopCmNV0DZfKP7si03k9CHSfNufR0DG/H54Ci4aYAPPUpyLNwv
  sEnvN7akeUcXLL+xbmV1R/BmA28D4K9dga7reCrfMFrDOQvh8qnA8FrUN1gl3Ni2SDDpCT+7
  dZsTZMsUUp1WgrooR7AoFsTWwnnH8U3bUvYxZnPQiAI66GCYNLUn00uLD13KAbedbJcLePys
  uJhDPOznNRuuwBdsc/8l+38ZWFJR6z3GR/cwJS39TmJ8V2XMMQZZrsS0tG+pxs2de2rNWU1z
  Q4GtGPzN1TWL0qfDvD7+4gZll9dZjUDGdJ3dnrXTN6f4rTN9AEVlygJ/8Sd/nMZt32MssrRu
  K8FWFkZvu0cyCph1lMdGBsddkVFStuYfHpM3qtMBBlQ8IxMfGch01dYdCaR5LIVrBhhi1Bc+
  DJMC/pcgYzcjdXJc3QF+zINztPUx4MGCoWRkv1d+JtN6lkRvXCYr9CdY2OVRRgha63dIU9gO
  pFeCBfOBRnGCr8ZCN8h0LBSDUGJ3JlCDEXKDhuUOXqWG+FdiQ+RCaYNvkuOEYacmdMdZowY3
  kvcA4VZHs3JdWKUpdRhdJwgJ1dYXeDMPucaGzLdNVuiEvfWFDDV9BfE0FRc1cIRoP3RJS3j+
  Fol0KCKziE41fqjXhubzhGjUgW2Why+XU7fnM7U3VZOXh5XnSIN4TXv4YKPmeOplYsNmYrVV
  eO+HUJOniRBnIbZnXvyHZ97nLFyYfQy2c4ZAhAcEW781hbiYC6ZmfxUYJxNobd14WrsohBby
  jTdEjmd1ZV/4cGd4h8OkLDwEj2hnjKpYJZeHgJm3X1KBj6mDjvRzgav3erQoCgGHijwGEclm
  h9TkSazoj61Di1zIkP/mkAF4ZdU3WAOQfCOmU12oJPNIjwn1aRgokON4VMTBj/rAhdSGknKn
  QB8yQRUChveYkuGIQSyJOoSHbVZxk08RavvIk0qHY4h2kRjpksqnMg3N2DXgZIzPdZI8WY/2
  CJQAZpKaSJTstpQ2iBn+NyFJeZTdBl9jZ4xCaZHBh2iT0ZV2lWERwpX0SJGoZGJhWZWnIZX+
  4HB0WThZg4CpIH8RE3h3KXjo8pfeMC6CWQ6BWZgX5peCmZfyt5eY15eISXCHWZiEiZjBcJmY
  mZmauZmc2Zme+ZmgGZqiOZqkWZqmeZqomZqquZqs2Zqu+ZqwGZuyOZtBkAAAOw==
}

set pieceImageData(Alpha,60) {
  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
  lFqplnqpmHoDBAkAADs=
}

set pieceImageData(Alpha,65) {
  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
  Ow==
}

set pieceImageData(Alpha,70) {
  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
  jXNDpFbYhtxnTAuUpF84qZ+6erMoU6laN9ITNg/3b/YpKxx3o7F1rDoqG4fYdCG5kktJMnMa
  rA5Iq9k6oXBIbmtxDrwiPZyWnM86q9JafPvXqBNkrZ/SergKX7BkPNVzfOQYdzkYiRJ4nDDq
  rjIhE/PKquCElKkTleyabDH2cC7JrW3ib8DydbO6r8iHpusan6uqPpZkPepqLVfaKSfCq9um
  qL60Tv9KXNCTqboqnWyaZzm6bwbLgRfbiC76LgARUzK5Es6Tr/d2nCzbqXcSl3T++rHTRE0r
  AomX+KcgKlTVN7N1CINM6q1W2LE+K6CFAEI/RbJZdLKUQg5ay3vFGUAdGCYxG3dL4Qh0BkR+
  p3P+qZhCuZczOjssum9hmzpqSox1OztI2qETy4xM25C2WEJn5qGJSLVfi2rkdrctin9/unfi
  d7i8V6z4tRQJiosZgrbd96AlK7nSJ1mWGpSvyLkIe27qCmTyiVXYOkfvCYxi1meGu7LxybOF
  FrqSO7qnx7nuRrS4a4Oau0Iz+kM0O6Nze16722jc5LjgR7a4a7toOKspOau6gohR2yinexnT
  W5W6y7mQe1RlG4R1SqXg65k0Fr7gqzSnR6XIE7sYGZ7PLzsa5Bu+X7uK71ulZlptzTq/8oai
  HWC4DduxxZKxdCGfFHW90sJN8ou/stK+r3TACJy/YcW/NEa1G8E0xBC1lWe4WHm6ijiUzhsm
  Hdu/pVsNUaqa+Ehwr1u/FKDB2Ua0HVx4HxzBVCvCXUsQORuolPi6oQi9F9fC6TqrIKyuMtxq
  NGySEArBxKiuT0rAZtYQTNzETvzEUBzFUjzFVFzFVnzFWJzFWrzFXNzFXvzFYBzGYjzGZFzG
  ZnzGaJzGarzGbNzGbvzGcBzHcjzHT5AAADs=
}

set pieceImageData(Alpha,80) {
  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
  54Xe6JXe6a3cgAAAOw==
}

#####
# Bauhaus based on Hartwig's 1924 design: Made by Sandra Snan with Inkscape.
lappend boardStyles Bauhaus
set pieceImageData(Bauhaus,25) {
R0lGODlhLAEZAKEBAAAAAP///////////yH+EUNyZWF0ZWQgd2l0aCBHSU1QACH5BAEKAAIALAAA
AAAsARkAAAL+lI+py+0Po5y02ouz3rz7D4biSJYmGaTqyrbIGsFHS9dvjat3jofADwwKh4hgxHgY
KpfFpRPYfDpDvNwu9WBdq9oZl7b9YkHSZ/T3EJ7L6iRbuX6jQWKXV7awG+rdPV93B2ZFJtdmQMSA
eFiItMg45whnRvc35tcXFpD5tal5qSfQ84nZ8QjlZhgHoPrGuhqZOgXb6FFpOXobCqpbmZkHahOK
m8thCjn7ikorYJzMrKjKeojsnMDTYOvpO6yQvRU4hgnGy504udCsAIesbrymPBeLeLr+K2r/h3/d
bfvdI94lIClXxxKka8cGnTt4zyTRmocEmrVB+uow4HKxX6D+YTrw8ApnZyA8iQSlmDOp0NQZamge
RoR4qqJIjhgz3uPXa+M1jzJEeTR4DuGjBihTDlXWkInLeEySYqOIM9/TcTalXqIJUhu5j+MAGa0n
lJEDWSePOmLJ1Bm9STGjUnU7M0awqnx2YPXkVdddkESDAm16gezXQlHQvmqblm21TsTAxYVwE64Y
u1xD3gK0L+9fAJw7c+7r2XOG0KJBkz4dunDS02dRGW4t8ydjDPti1/xUWQtPzMFkj0xdljQG1J1N
E0e98viq0pFYNqe7a7aF2xNz4s6dVavA7Y1fBwdeQfnnweKLI11dmvlqduuhx4UqYbJkTuCwawLY
M79v7+TWzVMoP95mAPq3HnHtzQILgu7tZ59WcvXx1l43QYgHfvqV0x+BAoInAWvslXTcOwmOyJ55
Hn4AXxa7ROiNYw5iiN0eHPlg4AQnfmhYiL+RJw0z1FARmQMRwtgiTS5eNleQG+h4hHBhBYjegK78
BmWNUULZQYpTaRYGY7U1+KUVWmrAJARODgailVeWR9Cai20wpj4q5lUkmFDVWYqaaaj3VZrIUckm
oOIBORdkXOLj5Z0aSVhonn82iWVZft444JluKndCpppuymmnnn4KaqiijkpqqRkUAAA7
}


set pieceImageData(Bauhaus,30) {
R0lGODlhaAEeAKEBAAAAAP///////////yH5BAEKAAIALAAAAABoAR4AAAL+lI+py+0Po5y02ouz
3rz7D4biSJbmiabqE7TuC8cwMk+1Ied6S+/+2/v9TICi8YhMIhHLSdOgjEqLzKn1WL1eTUJh0CWJ
fbu5MVl8OO+I2u0hKYG/29YsPWq/y0lqnTkAIfPXB5hGiIZzeDMC0Oj4CBkJmdcIIUkpmTk5p9m5
CeUZWlmiuFjWcJpYymO4WqjqJzBUIiqKCeCQeVv7uMs7CtoZrMnl+iqbmhALWzoI1prs48xK8ivM
GclAjG39KeDpi8udPe4tYnyMLKicrL466BAdy7pG2325q7Bdfn+biz+M3KhrDLrEM6ZgmbtFzBT9
gUZtXcNnQBZW1GarwT3+gPzEBeyVYCO5jx5HctwGct8Cg6gQJjylEKJDmRMpmlqHpl3IjBhFOlqA
Upc+nz/HkSw68hs+gRxfziro0ikZqK7G1Kx4swZMREB5diXqceevnkTzHE0JkuRRtS2frowq1S27
qhCv2nzW0G5ejV6HguVbC3BZbmeRplWKVmjSuDHnvmsrDXKzugaz0ovMUCw4wT7/hfI8OCBicN42
fR4dlrHOaWdYRJY8E5ZdrHjdzb6bTjPBr6HJCuUs0k7hxGGJXzusWuLbehyYwz705fZlauqk3wW9
269KDdl5d8Y23DAwxOETH5TrePUF51Qfy7a4lTruWbW1dw+XOsN93cH+waMOOp54GRXVHnvpKZcB
egdCB411773H0kXebcffYhicBtxGwv2nGIGjlScOcgsiOKKEGLBUYGwLwSeIZYXQZ2KFTckoogWB
ZdgPYYGVZtxSNcqk3m0btJYig8wIuSJNLE5XH43mODneBWP51p9oHJp2GFMd/ujgc5lR0EeRhFi1
5HwPsTgRdhTix501VGpI2JXGYbIWh+e9tlxjNsTHFZBjKlkPV3wyGSN+UUKZnxNbWiinm0Y1+pE/
/9UpZp8lNhmGPCSic6ZFQDoDYZCNcjlqohGoRCFYAZr0yUmLnlWMgRE0FhOnft4pYaAv6vkBhhSk
+huIvgZrn4fHhbic5gcKukbiVaxN5WdteE4ra6+b/UpsR4Z6de2o4XxLCp6ZWgpPtGo8i2KZhDZr
7X5qHiqpsN2qWtxmvp4j7qzkLoiuF+YSad2yHtx7KqMVbjusqgh3i2+1uOaWYr9u2RpwviAQbMmT
VC68G70cJ+uBwJKBmStcFKsLbTUMF+xhxsYq3JGj8rq7Qs0234xzzjrvzHPPPv8MdNBCb1AAADs=
}

set pieceImageData(Bauhaus,35) {
R0lGODlhpAEjAKEBAAAAAP///////////yH5BAEKAAIALAAAAACkASMAAAL+lI+py+0Po5y02ouz
3rz7D4biSJbmiabqyrZUAMfyTNcxQl/5Yfe+jPsJa8GhEbYCKJfMpvO5RDgv0wP0imVKs9zntgtW
ro7kIvC1M5CP5rWv7bYlw+GvluK10sH2PbbvBzUW9wOHJCHHQ/imuJio5viIEsgFKCYhqEd5ZbkZ
pelZlRIp2RNh2kh6Bqm6KsDGphKaacAJYVs7Kyqgu1tXp9I6Y3jjwMgqHEAcuTyMfDzZe5dLy/AH
Kt0Zqt2EjYuSXPycplCYKtx8mCCUrj5OJCv9SV2dkMW9iQ+wUOmd57/rRDh3r6CdI1cwXLMH0Nip
OYjQhLx59P7hszdxH8D+Sw2uVfynkdc9Y2VIKlxn0Fy7OMsgQnSnUpxKa3QeZAy5kePHbhgnavO3
8SK1nDgXrGE40OixmS+ZvWyqLKGzdzJXGVSwx2ZGfh5H9pTXKedOnF2neWRw1GQytI7YnnxH1Rm8
uC7pOsh6dyvXfHvBAhU50iIukPXKlWwwMKpSlm7XHoR6htwjVFJd9e2i1SfNQB31fiT6yRfh0TwR
H26MznRa1K3gxN0hOU3MiF8x59W8uWZn3IBD8+mtk7RwnYuNIH3Lmqlh5HJLTq2seMjj2793+7Vu
G3uvPmNtlQYeMnvA5cbVpjZ/lfz5yq/hPZ8aiz317LmzZe43fzu27pn+vpcGBtxx5ammHAfSQZBY
G+3B5opVh1mGFQASTkhhhUVFaKGFImSo4S0cfgjihNyBF2JFdoBWISgCHkhgehuwiJ4qCkJnznvq
MJbQfSFKqOOHG+4YwY5CdmgiiSAWORR/PibZokNNSuIBjE+SMmNaNt74oDj1AZkfhz+W6OGQYo4o
Jo8BqqgkkRSu6GRyc0U54JROPbNgc1rCN+Bzl3GpnZcgjNljmUsWKSiSZxqZ4X4xugiZlgaeVtx6
dpZ3ZVWzQVgbn1v66UGhXQqaqKKepugNiqUuSpmbtGGAY6StTRdLbHhS9uaeYPYZagegXqjProCk
KSJ4lhD1l5xQqpf+qgaLGLvsdDTKVqmDcx2b6a2b5rrBrmbaqu2apyLqrbAABTUWmwWupJiybbkq
Y10HvkkrtLViOGSg2GbQ7bbV5qtvqELu9BPA3ZnLaJ3psrpUegk+ZdezC9H5mr2DXkskvkcqyS2/
YQ1crlhIXszsqo0SZAFTyi3c8LSlJBxdweDeSy/IGFj7csz8BssxieRizCTNJsRZssIpJQUVwTDF
1Ogcmlrgc829gsqNxGTdGl7TJACNRrLpoLvas5i2KaWUEv07s8z74vyytvpkjDbZpgYj9gQuN0S0
wV3nGTcJ9ZbNKcVT30wqsFCjWPXSP+d9CrXI3lm31+va7bieYxt0PsHEuP4NeNuZh5u2iICOgjiC
807J9WkoR06I0lYHCTOuT3sqOOydDw56mxWMHmPp8aHe6ukn7E1FxawHPrvsm3N+PNoChc6mDtG+
arfpjf/uNtPEV0588v1q/3qZLnwPfvjij09++eafj3766q/PfvvmFwAAOw==
}

set pieceImageData(Bauhaus,40) {
R0lGODlh4AEoAKEBAAAAAP///////////yH+EUNyZWF0ZWQgd2l0aCBHSU1QACH5BAEKAAIALAAA
AADgASgAAAL+lI+py+0Po5y02ouz3rz7D4biSJbmiabqyrbuC8fyTNf2jed4wPf+DwwCFUFMMSFM
Ko+IpXNJfEqHMYD1is1qt1rFFvNNcMfkMKKMLnvT7G5sCu9FqRThPC694536vVLWFni15kbBRSjI
hpiItshIJuOXh2Q3kdQnyXSQyUfJeVn1mOY4ODFGKlp4kNooxgr59gnaNPvw5ylLt5mracDb2/IK
e3YaMbwqfOiarGrAbPbyq+t76wCFKx2AybtdCQf4nIVa6qC2HG41LqzuFhiZLYcNTFu9C68tf/ud
X0n9BI4u3TllDFoRCwiAnTgB7gYea/PuXjcfDP7xyzWRh7X+a/Q42vPoAqHAg8dIFjMZTmE5cygJ
IjMY7R6+ixRpxrPJKSMlmxk1UvtYK6TIBaMcQnsZkB0ElkhPjiwKAY8EmTNxVrXYM1O3jjX9TRPQ
CezNsA8AmD2LNu1ZCWrbun2LtiBcsy3Vyp2L9+24unUTGk2LtGnbqXEIS6zYCWtWSduAMunn+Ifj
yF3L5o1r7LJmzETxOvN8d7NmVILtfjbdl+7ptasHR5D6WubGT7PhNRabGFi1fvVWbmYr+neD4G59
EwfNl2He1qxTl/arvHjsfVFl1/ZjyzpXn/t0854VdLho4MeRhz5uufxcUszhtt/bvrne6VMM286O
Hf/97ZT+v1f22lVYkBl3GXnqzUfgeOkdKB1KzzWI2nMPyudaddTplw19FzZAVR8AWvTVY1jN05lw
SzGIYIIFnohihYLF5150zZU2IWcuXqcYjr/YN4mF+02GW31B+sTfh7tJlpmJC7bI2ZLLJclkk8zB
OF+EU1KJmpUcFqahNJYI2eWO8hh5TYgBcjmkgSuyGOWMTsYIZZvQvSjjiloChmWFePrYI4ZefkkW
n39y1R94/wVZ6JFEvrlenG0a8qSajw5Uo55SylgphG5uuSGnfYbwqZ9iEkqmoot6laihp4qnpIpw
irCmo1EukumeewaWp6aqCRqopzl+0KmvgwIJm5ljoYn+JJuxupoiCK0yi6IjueJ5p40K1snjr4iB
CQJsvHIz5pAgJgukuKauel6kjDbrQXCSzurQtJhVa+2aWm7LrY69dZCfqOAWWSy5RqZKJIkK3Vvi
sh2gp+ykDtb5JL31NgrxnPrui6+2GmjlL0bhmqvqTZSlOrKsFK/bYLvlNQzvwxUjKPHEut56cXgZ
97pxTjXTlk+pR3gnon9fpWsetDduwCDKSRslr19Hwwz10TfjvACaHHg89b8lTzIgyAUHbfBfrxqN
8AUtkq0eaS+bljKVErodJkjCym1EbnT7zPN2X58rMt7l3n0wzawqDAZo6ood7V+Vvp0adFmOPTfg
Vh3+eoFiGnd4kd5XdS3gsRgnTDjoRRd+8uG1MtxXcjCqtNriseRbea/aYq5531XvO+JMGqtwbQam
m7524o2zfGmkuwK/gtWx3/0r7SRHfmioobLQu9mj5xo46q4TLbjCoaugvAVU410V+RzX/jPs3MJO
/bMVXL/96cRl7/RoiN9qPwzhVyC535P3SzDG/A8fwVpB9SxwMu5tSk7FY+Cu5Ne0iEyvDja7Hee0
E0AAmk+AMDjg+9ilQIsFb2mNOxD93PW6CQJqaNBbjAa9JgsX7gEg33vXA4knQgfecIQmvF8P9VfA
FVLOXzL0VgZnOEAjCiV/pBMc8U54QB3mUIcS3F06tsonxFU5b4Mv3GIw3AcpJ8oKis+SIhmZqIM0
qnGNbGyjG98IxzjKcY50rKMd74jHPOpxj3zsIwYKAAA7
}

set pieceImageData(Bauhaus,45) {
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
}

set pieceImageData(Bauhaus,50) {
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
xC2ucY8Pi9zkKne5zG2uc58LhAIAADs=
}

set pieceImageData(Bauhaus,55) {
R0lGODlhlAI3AKEBAAAAAP///////////yH5BAEKAAIALAAAAACUAjcAAAL+lI+py+0Po5y02ouz
3rz7D4biSJbmiabqyrbuC8fyTNf2jef6zvf+DwwKh5qA8YhMKpfMJlLhDEUTzqr1eoRit9wstQu+
BgHksvmMTqvXZgU79E6w5/R62W3P6+/yvb8eFCY4hVD1Yfg1qPiUuLio5fgI9EcZhzD3gdlXydm2
2dmJBxoKFOkI2dRhhWoaxtra9Qq7NTZKeqm5QSdqS8nb6/cLrBc469qYWrSKbIwl24xYCM1VOxz8
uaa7i21tJ9y9jQueVzztzMyUcS5tLobevvQMn1Q9DsitluGNb5/P34/mG8CApeZFO0DLQkJ2BtO9
a2hEHq1TkwbmOkDOQkb+cRb9cexI8OMfAaDKQVQiESUFag8hpjT4MpqkHyCz/UtTgdjNjgJr9txH
kpPJk4wYuosQq2XDmPCYOkQ4qF5NTyIvPtjzk+dOi1mtCi1IlJ7SeBDAODV31kuDY0ZZjk1GE4Dc
uXTr2r2LN+/crnYj6MXL96/gwYHrXh1seGveBYjvDg0bIG1EB2yhQlZreV1Zt5k5vyUbt7Fo0YXp
Hh5dejRpxaYloGbdl4FquY/DLqj8WWxutLkvLOysGTNuHrOL62WsusFs5Mabt64KWCPi1LQxVjew
fKWpCpeL7sYM/Oh3aEzllR9vtO2yCc6fu27fXnZy6gDkw28euGd+2Hv+rffH/toErXDX3WS3maXe
epI1E9NbDn6nXoJwvQdfTvfhZ99q/mlI34X/bbgYdImBGJ2IJQY1IorTaRcJgQVShqAAw0no0lg0
gibjQQZwNqFnEFxooYfZZdgYiYQpJ+SQRqYYoIonArgilLFJKZiLFAlYYGQwxjLjjTAp5SWOOuYo
3kG/+XVfkElyyBxpSra5ZpRLfqjkX4WZWN+cU0owIIvdbdYOoH+2FOZTZOK4Y5kKaoZmhRTE2SSR
cf4IaZE34XmcnvtReaKcSG3n52WfTjPqoDSG5xYhqOp2qJkKNhrfo5V6KqmQsM6aqYl6Hulkipw6
tqt7vPIJKpYvljr+C7HHSlhoj4YmqmpS0E54K4bs4VpltUBqi62vvdJp7bfXBYspk3aGqoiVoioL
i7Gmrrpqqs+2qtK0v415WqzXdhsit87tyy+wIgbLa7+7lrvnue7OxO66DV+JLGTPNBstovR6F1W8
av4ra8AC+1tcxx5726m+4v6E8Me5PpzxwhKj2zLLRE1sb7o1GwhvvIpanC/HAI/8IciRUgq0e7/m
Ke6QTyadcskfRxwz1DOrK4hCWdJ8cdU3a5kgxc7WS6HJQncrnc8/Fy0QwVEu7XS4Sz/Qp8u2WR21
zCdhHfe8YhZ78cbhjo3tBWafDXTaRyv99LdNK6w4zFrLPTXdMVL+PXfXW7OlN6vJAue3cZ2PjIHn
ghdt9MmHz2e6SItnyynlj9t9ZgtdSn33OzrLC7a94+nIKuC09vxmC8ETDjo/ahecuK+2fuT67AxA
LPvrjtduedaYWwz25jV/PrwDYrMgetmkI73k8ayzbe62rU8/Oe2xq8Aw5NSjevtCmWvON8/epyly
yC8MHjbSGS5pqENf+kyWOLjxzX2Mgh/0GPil6uUNe3tj2LyAF74Adu8Ejuof2ox3ugAZ8IAZfNuW
HqhAm7EgbrBbiu0uF6P7ZU+F1uMe6jR4QxWoD4fFg475FDZCEt7QYBB83wmlhwLtFbEpD6nfeqhl
Pa5F0VUX3F/+B3nIJhQsD4sB008I1xZEIVrqdM1rn6CQaAIGtTCCOZviOqBIRR6pynfDoiMROZgk
4nnMiwQc4x0ZV6eVLVE8g4RiCUhVSEQyy4lfy50bveYlGw4Ng5MkAaS4yC8+9pF1TNvK4jBVRmmt
8VWH5E0K3wVDRj5ljm6U4r1ISckN1qqSIpiVHS95qS8C8Y+cHOMmyZdIVp4SjSKYxxlfdipV4k+G
FYujMK34vVj6sgSBk2Ymc6nLtu0pm+VCWCh9NEznecAV4sySFGHoysmN6ZWNxBc0AWjNOo5gObL8
Ja6ysjryMS6b+lzZNI9Zt3CaUQoxHKgyyWMjZUZyN4tEZ+/+iBbNd9aTA4ijpT1t6ckfgpI/AzPf
N424lvgRVJStdORB1RimB9UvLRFSqAczeMsEZiKHGxxf0H6pmJzyp59iFCRAiRlSGo4UnF0y53ka
6kTJpOegksxiPDkJhxzys3RTxaU3/7GpH/J0XFLdAQpVYdCSPlSspmSkbxpYGeGEFQcRpWhXqzou
ra7pTuLb50WFxdW35uCrGyinGY0KoVF6x6FVJOtgiQNPt1r0rje1aVwZq8cw/g6uj/WqSMEKTqXu
zhgLOqfXwGPYw4YWtDtoqwb0uroObVGuwMxna2FK2crqgK/KAClLN6tEwjLxs4MVKmL/5oHFfnKn
kyLuXI3+GzTgWta3mCXkT5mJzJNyFrcGuqwOTKuPfz61sY5VrYe8i7TE7tW6fW3gIDub29FOl7f0
oO0NsBu6yW73td1F7mpjaxr41sC9GDCvYNHbLuqyULeBqohyFWvXyJbOsfS1KXj59wP+ntWd8jss
YNmb3gv7QL91NaGCH8vgB18Rv98FS0A5AEvJQbdy0s3w1QwM2w5ANb4+DbF9S+za+/JAwio2aX9Z
qWECl1XIityweE/r0+zy0sE33iGJnbxj8tZWf+qA44sxHGAsD/i3MUbwNr1MsvrmGMes1TERzozm
NKt5zWxus5vfDOc4y3nOdK6zne+M5zzrec987rOf51wBAAA7
}

set pieceImageData(Bauhaus,60) {
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
wx8O8REUAAA7
}

set pieceImageData(Bauhaus,65) {
R0lGODlhDANBAKEBAAAAAP///////////yH5BAEKAAIALAAAAAAMA0EAAAL+lI+py+0Po5y02ouz
3rz7D4biSJbmiabqyrbuC8fyTNf2jef6zvf+DwwKh8Si8YhMKpfMpvMJjUqnoYD1is1qt9yu18r4
nsSLr/mM3obT7DZ37Y67m4C6/Y7P6/f8fp3hdxK44FdoeKgHiLjIuKfYCNnYJEfJBtdVYnZZyflW
1gmq9hlKCsYUibr4yFdSuJoK60gYS5s4W4v7x1TKu+lZpTnKC+o7TFlsHEeXm/sqG2LozJwqPR1Z
bS25m9yJrAUcrMDdLTyuXG7etpwNi40HHX3Ljuo+H69gT72dfi6O9pHGGz8y/gaqQ2cwnJJ89OQN
6oCoHkNWDicekmgxz6T+hJYQYuLQsSDHMwJHZilp8sq6jBcr9oEY0SVLivhmtqxp09W+lF5QntRw
UCTPXwmGEixKSkCplTlpJmC0AarMpncw5rR6sdlOo9889sQwxytXnynJkjSQ9BTVl1OdVtCGc62t
uHLftZUqANdGrqKE/rPQDynfrn4HBzB7VCkxtXU13n1GARLWmZNZVnZba69hlWK/TpCDmGPovoWD
Cq7U+e+SxnOfSo78mi5rAJcdP9YpOzYCWpo3H079McIx4GWJk34wvHRI5QEZz9aV+yaEhtHr1oY+
/drth9VjLvGNpUFyB+NP+x79u0JgBJyKmg+7+rmdBtQd1Hctn/Z2u2/+4eLXfoB+AerzHXimoHcg
gukZN1Jo5CXI3HEHoMYehBTGl599AF4n4H6UedghThp6959/eWF34obqDZOBgRBG6BmMwSmYDmKd
Maigee81d4E1GeSHYnfclajKiPJNdpeHHJZIJIkr9gKWixCUhxZoyElpnIwv8rjjWRMSViV8FgBA
ZplmnolmmmX+qGabbr4JJ5rZxSmnkG7OSWeeeraJlZ1rNqnmdU0CCmeLLEZpoHBWfrkejeaQ1WVi
qkUao2LHNTrBnnSyqWmnmkbgaYihghpqqXFaReidu50KIpmEpsonokvJep6i/VDp6Dg+USqpQhUu
ZylRwU7an6l19mj+bLJpSjCqAc3iqWy0GMGq6oBvXgYrtccCdugFLi54pTK45soNSrz66iujxHoZ
JrGwResqBvDOm6mnKX7K7LzSPqZttc5eC6K2/f7pbbfcJvpZQhR8a66646XbLrrrclksvJzqa+y7
GC9b78amSrTqx9bG6ifB/7I6cqG0hmIowgnz8yR4Jf1KTsRg0twrxRRrvC+yHpda8c8hQiv0nvWE
nHHK2yINsNJNn6xywVBKLXPM5Vq92cwOXzjszVsLu567HVssb9H2Br3xmGZ3erTTZ0PNcckDm9lv
y7NSXSvWUy+MJXM419x1eMCdO2PgXo/ds9prG6142o0vvmlbTCf+DfeZ006ep8ArL4Z31p2ndXDV
fn/NdaWkC376xKYjruzFkKOMduI8v/405ibT63a8ds4dd+VL87233oPZDXroeVOaenKrG85Z8qoL
O3uyrtPub+yUP049yanmDrTvJtv+vfTg6248y5sPTzzg5Rvmzd+cMy8Q4c8fni/uPmdfvfXP3o9/
oFONvz/tjY931cvfy+62PvSlb1wHPJ77EmSMB4LrdPLTGfRYJz7+9e93+sPX9DZIt/9xL4D+qw4B
aydA4CFQeHwBifo+p8BISbB0FzRcBYFVQ1LZD3sg/J4G2RaVHvYOfAB8270sJ5MTRs17C3xhAz23
gfa40GUydF7+YAr3tRuaJnAfvF4HNwiT/XWxh9goIhC9NzTfKRF2RyQfC7n2RjHdgIFxHEr7bAY6
LNpMi3Kknw7J9kMx2kCQZRMiEk2IRsqlsHJrjJzSmihFGC5qjnA8Xwu9MsOH1fBSydjRGLsXSCMO
EpQaMCQH23g7fRHRJY1E4SlttUIVOlEG77PkWDBpRTHp0YaZnCQvQ0nKLzLuBhn8JBhFmEgSDtFt
rSwhE21Jx3DVcgbFk+QtldPLK24SbCvc5R9lFz1CxgCcwsRfGUdoxEWi0o07XGcaJRBBaG6RlrGU
JRSriEfA7bJS1VzeN1tXyGLOoJ3lzN45k5lOZw7QjI5MJCT+K/lEiL4gntY0SvzyGcnl5QyOiQmn
yIDpwYGqMqCmfGe1MMa9tqGTjbWz5zQjGk0VXC2BlxwdRiep0Y2GraMY9KJHzygDj5HUlO5gaOZS
yi+jKnSJdcQUPKs5UV3R9JrIyyWXcqpTHEKsfoDkoThZIDSQ9q+oK9XTQv20Rs1V1JcujekYatTU
4kQom5PiKfN+YlXU3VSvBR2mV0XpArP9FYQqdWdIW4pQdobUsCFcq1NhOUuZDiSuJtHaXpdjVwtq
dqv/FOhPF9uCxfWVdoVNHGIZ29jEpha1PoRpJKcqRxaIxrVU7SVdj7JVrbLrrn4kmmd7CtgVvO6z
Y02qap/+xtSyKpalR3VsbGn73BQcw62X5UnD8spJrM6PmzsDbjCJa9YXjOqrJaMeyJQ6xOQed7kF
DK9z5wld+KJAeWwlVycHd9ub7Ra74MoqZ33rU++CNgXPIi96IXc55S6NjQpmb3r9SllgtbW+b93p
Y/M7Wy3xsb/7ra5+uSthAQeXqwEWhCgNvN7hbueEdWuVqJY64KcGb8IXHgGuYsqwLFVQSxP08Ifx
6mMgj7a5g41xK4KL4pKuVrnlbbKLX3zIFLdWxvWkcmRtTGHe+jPIGb7hjXjcYy0XTsjUffJpO4ti
EHzVwEqesnsBqCQzM+nAUy5ClbFcYzrmGMxhjq+Q+cv+1+Zx+c9H6KqJgSpn+rTZpG8Wa5TpHD4H
QxgJdwZHdDf8IkBPlkGC9jP9XqsUTHcaCYY+MqKXxKGi1cbRp/yos1rZG1CToMzj2rOoPS2hQfvx
ykMo9QjSLGU3LxrVaGZwsB8N6SUfodIAqTGfR63rTT9717KONqFfagRfi2DEio7xohn93QYv89jI
Zq16jcBsDzib05kWs1xFDddpZ7fa2Sbnto1sJCInW9Vm5nd5XVliO0MVz921cofdXVl2G8S+6Rl4
vQF6aH2Dt9zmNm+/w3rxxtpb4OarsNhonGuEN0jh0ob3N9IdBG3DQ+JDTjXG/61imF9L5URA+RQP
HmHfhhsMwwojOcycE3A1s7zIFP+2y392dKFuhd6Wtut7dT5ja8fb5FLF0G/vbeyhqtPoGVe6zEW7
dIk23ZvybLeteb5wn089CTT/QEPDeFquf31tSXdcgTpuApwDJbd9o/pM/X5fqwfd7ecOYtyH3XW7
N9PrSrB5FJ1+821SEe0lp/zPBe9qU6sT7goVN9jnLtjEozTsZd472TuQ2b5bfu2avvxCNi70zXvg
8G2u++hB728q6H73vO+9738P/OALf/jEL77xj4/85Ct/+cxvvvOfD/3oS3/61K++9a+P/SIUAAA7
}

set pieceImageData(Bauhaus,70) {
R0lGODlhSANGAKEAAAAAAP///wAAAAAAACH5BAEKAAIALAAAAABIA0YAAAL+lI+py+0Po5y02ouz
3rz7D4biSJbmiabqyrbuC8fyTNf2jef6zvf+DwwKh8Si8YhMKpfMpvMJjUqn1Kp1FMhqt9yu9wsO
exnigKpMLqvX7PGiDY+L0/K6XQrI6/f8vv8PGOjHIAigUkhYqLjIOLjQCBkpmChZaSlllylHF4ai
xqkZOvcmWtpJaprKhWfZGkkZiKII61o7+WibG4ur28uHqRqcBQpmskYsLIqcrLnMfBflK61HC2iy
WD1tm63tyt19GfWc6txFwlY+Dpeujo7anskKnvvdR8JYPw+Zr4/P298KGLx479CEaMNu4CgFCgky
bFhHHsBwChqJsPhvoiT+fhp3VexYSSDEdQUNeiD5cCTKBCrjJGy5RSJIjB/9ediXcSa2nDoR8ezp
8QlMhCVNbnBZdOiXl0qZDpUJ9FZNmxte/YzqaCrWoAi2zhKn9FPShRk2jQ0b8yzaYWrNBoPq1d5V
rhc2zo1r6G5cjjiliVzrJuVKCxHbonUKE7FRVXDxUtP7R0NIyFv5YrW804Cvv4BXGV56AZrgzp5H
k9ai+BQCctEcR6actQLFBK5fa62dB7PPrro4nzbzGTQFhyx/ly4e6oGy4EZXl2rsWvcv2bN5494j
3XZ2uberH+gN1jhq5oEjNCPfMvX44aKRn1dvrvX1x91pRvAGO+r23NT+J9e3ut90UIiXFnrHOfCe
ab/Bh0F7ziUoAFsHLAfFfNgFmBcE+OUH1H4YeKdZLbRlGOKGQhEooYEFNgChe+KlphxwLCKl4GAr
RtgiExbSxyF3DZj4n2PZPcDfjwCOGJB1JAogYlnMaIBiiiquN6WUNZKmWFvowSdlfBMSZwE4ku24
ZJBfYUgkmdLp1SOaShZZon+hPekkihDkiKODVSrkFHN+VukilXma9SEAhh6KaKKKLpromIw+Cmmk
kkKq4aSPuumApZpuyilm+X3aI6JINvpmp3UKA2WU5oE5KKEIqhrclWQZ4I6ss6pGa2GFcqqpo7z+
Cqyh9wVbJrFlhmr+LLCWmXnpqJF6WKqo0VqaajLVEihBgnjauhZTgRL1pVjcCpcrrq3WWleyze6q
bruMSmDstL0O6269pDJ7qLOmfkctsvoq+u+k17516ovZErTtuGG99K2N4jZ868PnStyfvcJmYHHG
x7oZL7wa28tXwJuKfC/J68ZJqbwpN0gny3ZOkBjMsI4LscOzhovuxMU8mHPFFvv6sboUBC3p0ES3
y5HJ8/L7bJsqA/z0ogMzVrBxFah09cw1U8kazuTyLDGN5R6D8cdAHx2sz2hfPMHaySbNtNBR66Y0
1HELXHXXc77MHp9Z8721jDoT15zXEYs9eHlhml2222mrffTijiv+y+bdcqMsNaiW97v5yYS1vDe2
n8MTusG2Bo74zWMf7mriB0Lu7tmTL2302unOzms+de+LeclR5/u757SPjmrep7k8DvKmbw22Kc2/
vvrOhqdOce0Zy4570bcTzW72nJscfO6dA4/vkm8HP7XexC//N+jtsz/9itbGLyj9Nz73vJfb/9y4
99/DXq/++U97Zgof75qGr90RsHd2Kx3VlGc14+EPggtSS/4olDh2oC5nhbMe/7o3wJXtD2QCDKHn
xsc2JmlMZfxQIN5QmML1PdCBFZRgwlYFuAsK7hk6TMcGwRU96LWNcSA0YeZKiDTsGVFaQTKg+BgY
Qxi68H8IpKH+82wIGA4QLH3HO4sOk2O/cvzQZooD4OVGuETfobFjSkzjxkQYNBbOZYrDE6EM1fe+
G9IAj1bEkhftB8Yg1k+QgnMdhKS3xiQW8XE9CCAH3HhCKJIojij8Bh1HJi8uTrCPrdvBJjXZGTEC
UluIzN8YdSXINp5vkZTzgSKrAskjksyJB4ykCht4SyIyEJSB5CTieNDLo2ith6MkXCmnd0oHldGD
JGTlr4KwykfGEpeVhCEbc0nN3l3ymdHipR5f9UlgfvNgOQxjMdtjLmR+8YrqdGY0JXfGRl4TltNk
4iytSSw5dmebT9QmFsfJJf2JM5j/PMwfCYnBdKZyncH8mhn+3/lQ3vHglapcYj1oiUlJcoOfdZTl
Hdnpy8HogI8f9aOsGIrOYxIymUAcXEXziURGTjR20qwn+e4pyWjacXwcXSA27VlSDAb1lzjYYkEX
dlBDGtOhCGVp2FQ6xBXGtJU7+OBU3XhRfMp0pxrF6Au7SkGQDlWkN5jfUZuSVB6a83Qobanqonq9
q/YzB1KVq0XnqFWqcvWnvrMqX4GaR5KSU6hldV9gu8hWhC6VqYZ06tc6CFe/RjSjdNUlPG2qu7zW
0pY+daQ1vcmqvhG2Buo461MseE6xvfWpDYWsx+qaSG5WlpKxTWNmc7rVvX71r3Pd7WHDKVqC7rEd
YTUp81L+u5LVslaZ1YtsM2sr0RrYDrpGvC1vr1lF9HkVqP/77WhlBlwZ+M27WdQScsmm2EKm1rGF
7BkzPUvd4dHAcfENYQs1+z2f5pWjCgStnoIL0BRAZKwG5RZ7ywNZt7aupZOV6WXnOYPZPXia98Xv
AvWLW+7KNsM3JfB/wfvdF2ANwDVEXVsf1lwyoje9QnxtXN0Z3Rhkr8H2hcx2ZelbDne4t5T1MCp9
3FwXxGyw8GPxgQWVYhWzbsUTpimMeyxj7703lnCz8Lt+tyYD0tG/PyYvWYWMsNAGdCAMO/Fjk6zk
M3/ZxZKdMlWj/DgIG8mmUeRwT82X4+sKb7cbBjJRQSz+3BaQ8sMKQ2uh2ftD9QTOqS91MI3zzALs
wrRSdH4jFR0sXx33Nbtv9rKYiRxgLLDqm1FSL4vrR1T3KlXNiiM0vV5cX0gfYtJWBiyyJKw5C8MG
WtWs9cZALVgchljAYtZjqRFTaPV+GUys/jObn9vkTkea1jf+ta8nRzcXlq/D1w4Yf03rbGEHmtiu
vuGxt5RUM5t61aUUaKjvvNdnU3vajq52miqd5SY6bdtXtlxPfeNqY3z6vAI9MukMpMU/t7ZL7wYC
fOkt7X/Pmc5DoieUNd3vON0Z4F0md8f3NKNynnqZ4mbwyM3F8Ib/4OGzrvet64xxKd/6yRmvdgxv
DlH+JgT7HANPNsnP7fOCx+jj4T25QpfAclnMO1NL1/Nd+e1RSvf52ramOrd1LlaPh5tLYz540BlL
8J+HN+s6cvIKms70iFca5hSFes2tfnWnZ3oJOxd1J4HN5LCPpOvE3dPr6m6EpJ/A5VKPsdxNiCG3
JR6wglcC4A9yd0CrGugG7/vXcTVDJzS+BBGXd57Xbml8vxzHm0fC40EQeRIneJh6H7Df42NUzZu9
5Rd/dNxBv3i05V5abaY72U+wdcmvXuTsPu3lXV+h2adgrnbN5uFr7PYZj17x4Rk2z1VdXMZSXt0j
Pn5DoDN1pc+d5rdf++65N/3pDuj3As97wt1f/CHMV760r7f8E0o/gto3mu3mT7/u/R851TduJYB9
woRmouN94zV/ySMf8bR83XUTEPh8A3R+tAVv/7d+RUeAQdYB8Ld9rfd99Ud/ydd24pddISCBuAeA
6Bd9uMNxqbeBb4V6w4eAC6hWCUhmDZhzg4dhKNiDKtiCuBaE2CaAKudNZ6BcxPeBRpceOihnPBhv
Pqhb/TeE9LWCFngFWaiFW8iFXeiFXwiGYSiGY0iGZWiGZ4iGaaiGa8iGbeiGbwiHcSiHc0iHdWiH
d4iHYlgAADs=
}

set pieceImageData(Bauhaus,80) {
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
}

####################
# Eboard:

lappend boardStyles Eboard
set pieceImageData(Eboard,25) {
  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
}

set pieceImageData(Eboard,30) {
  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
  xVc8d6mwhdpHWTwsxUggrMCwpm4QBAA7
}
set pieceImageData(Eboard,35) {
  R0lGODlhpAEjAKUuAAQFAxASDB8aDyIiHC8mGjUzKUI2IlQ7JUBCQGY9KVtILWpGKlBTUHpI
  K2ZWPm9YKV5aWmJiXoRnMW1rYoh0RnJ6cp52MoSFf62JQ6iMWpKTkracXaCgmcKkY7Wphquw
  q82tbdKydtyucc67kbzAvOe5fN/GlOXNndDT0O/Vo+7hv/Xu0v742v768v//////////////
  /////////////////////////////////////////////////////////yH5BAEKAD8ALAAA
  AACkASMAAAb+wJ9wSCwaj8ikcslsOp/QqHRKrVqv2Kx2y+16v0gAISAMHABUAkJBLCAMhDi6
  LBCQowrFvRigsMGAWwuBQmNDAwVVAAUMA0MACAgFA5REAQCYUQAVDHtDAQETc4SkU5mBFypz
  BCp1UxkpJUQeKrElIXsEGRMEUQErJhhGBCYrHZ5TBBcZGM0WHqOlVKdgAioIQx8VAlQBEBOJ
  QgAaFxMREAxEkgDITBUqH+0DHCqOVwAR+RETAtFYAgocIOBmRYwQBxsIARAlLoO/JxlOyBpC
  60SIESL2DMjwoBcUABsyODiigIKEh1EIbGCxoVkKaFzqUArgcZrHAuEA9fuE0on+N3CfOFzI
  BwHbEAYE2KWcAOEhAAYR2klBtKJFiwrUsAygMMIDBwcEqbj6ccFETTDRpDqBNVHIhxUWQ+Aa
  QoBCRykHDBkRYwCLLhUnMGxQwXDLAAaRCqh1cooBhLNeqGX1tS/nuKHnjApBMEDpxwIEwg6x
  kxSLqA8tUCzsOdUEixW1QlAQrYnChAAZVGQIIGAMa0VEfi/ZEEuAATgVQYQAIeCAAQR17+Kl
  LaR5FgIYOqzYrmH3FgYaOGjgNFB4EkgDAoDvPNO8pj2XqgSIUAG6HHJEB8YJMKDf4vOeWTIZ
  FRyQAMk4qlyXwXavqWDCBgrYY4oKGBgwQgcOpAAXBrv+udcEASnMAUAHAULBQQoqsPAabA6C
  4GJIGVBgknRQHHDBH0XEmIUAGXSgwggneICBh0wEcAEJKHygQQSSSCjFQgMgoAECNFHi2IBT
  qFcTAxf8p8R8FWhAAglKXoAZOon1d4mXRxy4V1RZcKDaJXISqQQFxawI2AYP9FVFBHBExOEG
  HYDQQgcWEOCnWKwYg8kIcGVAHROwpKgiC7XcshyMMj5A4xMBnEABMgA8yCYRYxGhSwocUICB
  CjAVEZovBYhJJgcTMADaqUh0hoA5iMwkAAIVxFEQBB9cUAAmDJBQAa980GdrmeacgxhOapbo
  hDKQ/YAAB91OcQEAHLRgIFb+WWRQggrb1QICR4uaEkILK6wIWwchOeiAnUVM4JoKKnTwwAQA
  mzDBAVFElMKlr6Vgwi0dZBBjpw6EuwQAxtAmwAkdTGqEGRSAMEIGeXlEgAeubhCSCaMAsFWh
  uPIaQAEThIefrp1VMQAEFywJFQNAK8YfAvw+osEHQjGZXgQFFu1NBBd8gDQ51RYlCQHprSnF
  BCQwIJoAUeekRG88D6XYogBcsN0KBrYsANQXcOZhyOzWwrFI8WpygFVrp7gCCBtYgCIGZ5gy
  Qt0qlLABAScARmLCItedQiwh4Ctxpw/k4WQReY+2wgh5K5BCx0jEG0AHC2M6wgUmO8CABDLK
  KCL+BR70fYICFvNRANwXVFDUJEWLA7UGVJ9jbWgDRJDzVB+QIBRTDEAStWagIsBAzeRUYA7Q
  kkxiByhY/qAoEhqgEEE05JIgNhFwfGLrmOPt8RQE9EclYgTlo5CkBpsnYUCPIyiBBzZglwP0
  jzF7Y1C9UlQwfGHgYRbg1//ahaITmCADBojNA3zxgAwQigOceoADHKCAA5gwDsZBAgRGIBUC
  tCAFEqCeB1IAgnAFoAQb/AEARtAwFNXrBPtSixga1656sSAFnTtCHRAAAaIgpj+5U8JTCsQB
  ofRuAtBDR3qAp4nykYAcF6Af0X5FAmgdQg1MvJb3QAE+TIQPACgg2jD+PqCCcVkCBSSg3hAM
  gCw0AABJeKxi8z7QFI/xR39frMCRnHcqRXFoYg/ISxKbkIHXXGoFKKqFw0oAgmaIbAMeQ8Iv
  2nWCFWwgBKKCgEQ2EIBJIgFrDpDY5TJXwhLmxQ5KuAArj0CBFuimZXDB0BFwg7AfKMCXwZCA
  BE6JyYq1KYMO8gAz1IUiUDZBAG6IRJNAQQWmKQmMvdMeUYqCCPqE0ggGYMAgyYECbHotAFLi
  gB6bYABEPAcnk8iaGzGxmLQtLzgoUIEGzhKBJMlRVudAAwPgoSxQMOJo0WvTANiWK0ok72gR
  eIIBGkBC50TxYlVhgQcuwIEZTq4WJrAI4Jr+EYJiOoEDLFIBCFZQEhOEoIQm6IACijaAWEps
  Ah0t2ayWYIBLdGsDvuzAogzQgpxKYBg08VPtLrjMkEgAAyk4QQYgA4DcqKBVE6CALH0EApkN
  AGtqMqMlOKAkLGJRkeKMAPcKsERopQ2PSqpAHhPDDq4F7wczS0wcZnIJbbVpQHD8akR1iKQP
  LNYSy6MHLwRQAU4oBgLk8Mddu9Yb/E0AAUy7jRPOGgfkVaEALGgBCzoSmsmhKKUmGAHgLCCB
  DpxkW8VgEaRIWoISWMBCtj1nEhASEpOM8IRDvZgBHjICeoFgJEKYAAtOAIKn8kG0QvAAC0bG
  lROMgICoK0FeVIX+ohGYhAIbuJAHVzCX0fbne1VAANKUhRNimckc6EAMdBBx0CWExovNG5PU
  IKAYACALNKawXlEMgK3vGaRI6eFDQDlwPnHoz7H+MOoQ6AEB9cCvApQIUwFwBFgkgRi0VZwS
  eOCkBAMcwAFVjNEEModWX6BAtayL5OFcK4IOyKW3EmucK/nArpgC7CUhICAEOkA4KPCHAkWO
  jcoodgD4thgDZyGGakvgEEycgAWcxDKqPEBi7Y4sN641AQU6wOWaAAAEDpJRCVzL5Q38zUsM
  Bm0FmNQ98PkiahpghACS17NyZEawlJhSEyAhJ+eBo2tPTI8ANFAYJ9gBAT2rYjnQtMb+wp5z
  EZ1oA8A48CxmBfKxgGXiKAimvAqggK1VpFKt5MdWECMLaVVkRNzOuZURZNK7SbaACA0ILQpc
  qizqwmRWk6wyNpdABBuorUM+VGS4RGAFa7gAx7Csshw2IQAKmMAGQNBbwEFyAci1chgmEAI3
  h/RBRSXAa2w6pNGQORoUiBSUXXsCUWXguQRRAKwyIIE5T04igqFQFF22j/tmZhJt9NC3hALa
  CfQse1jUb5po0t/zMKBA8z2SGoDmGzNBq6jDigT3upfWiLu0TRpoyhAioIIkKQsTHwikzMXh
  GCcV4NWIqSL8OKCY6/lpAJwFzyCFUgDtfbQQzXEOHELDn0H+aLRBiANYv5PcjA4AiYZM7oBZ
  zAOirK/gABSYHLQP4EFvg8rFHg0N1Qv7dHF4V1EAYKpqaTiqB9BLIhjMewBGwAF/WMNBD+jA
  EdPswa3+QAAgULME4FzBE6gspdAlam+alC0ACLcI3/om8UZvaDQx0Rz7DcXOk6AeMYWcBAQA
  mq4uUVm1CmFnitQV1r5X2Cd8vJDj0F/SxNA88TTFjd+IzyMKdAEBTEA8zcNPANBFAPHM7Ghk
  Cg/NLoBqJZzsQTEq4eeD8wtM+dAEBy9BxJrxQIDJFF/LbCkTBLAu96NIAbm5W4RINpUQXCoF
  IYEBEmBLdTcEUGYCEnAADWAVvsT+d18GGIrzAOD2Iy8nBGx3Lw/QOK41OeilAMaRAhyBZq4V
  MZPjHaMlFNeSHkRCfNlnJmaiPbmiXztjcbkiCUNzQMERT5rWM8PyO52RK8FDM8zng7y3gmIS
  cwEwJs5jJlDBVtInBhb3T0OAAGMSFdgTfYFWAI8hACjgBlHzRT0TCeXATdeUIhZBQB74ERmg
  WpoUCxKxHMwggLCwNiEAbVclAtb1JSCQSQAjIzN0N2AhAQXYBiVwKTJVXJE0XhoVGxKTWnzj
  Q7ARC0zmAIdjTUZwAFq3TJHoWoRCAQSQITISAvzGZXtYAoL4BAWQLCmofE0wABUgNeJxRfpg
  NaBBABb+t2mzNzNe4jJhQjxmIgliRFcL0XGoWAFDmCYOBioRAIsQoAIChh/GKB6UhggMsGdk
  uFZK0huZ5jxLEgqQoAHOB3Jmojz00X1JQAAHUC8pkGQUUDEFSACG0hWa1BIqE4cFdDjsMjkj
  gwGWl4YtlgGiCDCY1G+x0BI7tRN48GV7Z24CWEKlsS0lsDbbwXV2IUIKsAAy0iNysQGKWAQC
  gCcOIhiupUkRYwAU0ComcGRZxWYqEAIYAC0EAAEkwH1NgksfQlK8sz3a1GlSgh/0oxgDQA7n
  tFz25YJMYTV2sAitJAXw9IVhhIx+9gT4kGmGBh35VF/c4xiN0BOYpg2IgFn+AcY/SBEBOHE0
  ycIUhwEO4WMEPKIiNNQSfTJ+4oMpAgAkzyYBbNQbg8UBKrJAksgRJTAC5mEAPjZnRyYR63cG
  hsUEaZdaqrN+A2hCZkQAIRB+DiBWIfAwIIAvdrEAcWAAJNRPB5CSWuVBKPNZz0EJBpAHl+lB
  xNGSffIRekWTa7QtGoAYlaU9RLNPbtR0vngORTEGjOAlQ7MPlVWDwuhGclkET2GWYZSCdXCN
  33YY0KFnvlg1LAcK/hEGYDMe2pQfncEOLqNgVBIlSLGWRkCJDbOZGBBJBYiJI6VV7JcWoSCR
  WsdJGWAB41aBSvQAFsB+MqJMygQWnvcKloIpOWX+Veh2AGYUADCWko5oFYsXC8qBLxbQAAiJ
  BL1BKEDFALTjASMQol1RXO1oAHVwABjgAGY0aGJCm+91Kk1HLMAZAQ9ZBvxRM5oGPZwRWGzi
  efVVk4XlRtOAWWTynFczd2a0CK+IJACDR9kTVwQWnksAT+dAV1pIHxdHNejgG+zQe0+Qdn9X
  OQLYkf6VAr7GJw/AJ2xZO760Nm8YOBc0ZKNhQnRKp6VVo1BQAAtiiIpjVXlQZR/hI1XBgBJ6
  AgenmZbDoMqlAKs5Q/XCIv3GST0WErgjBoMoDtU3kynYH+5BWVjEGdZjHaiCaVUkFL7zRPBU
  AevTJrwxaEXIm90AAeL+KFdvQAnJ+ASUVSABVXNjIh7HiV82KBzsYFHPJzUBNjWyOBBBCgUn
  86jrGDGRWXeDZwIiYBwHgJdE5ojtokkjIICiKKficABpSpBvSHCs6GS1Y4jf1RJ24QBkOn8M
  w4AsMBu80QAHx3Xt+XmQ4GsSCRtnVocgAG0wIgHL+QlUqKmcJ4Ws10REU094ClhQ44TjYS07
  GiXzxKqxpw9MUmB/BbGzqkZZc65MkKmAdGr8dKVyxWAKK1HYpz/6syQ48Q1xpV/8sjF9+SMR
  4wf+yAQAoIgD4gDa2iAD+S60NTLfdjgLhH7bwXf80gfp2pfPWlwSkDl5wR/0hJe4QagwtJr+
  GBAC5fYAbgSuRpIB9MAipmSiNOEiHbC2U4tuUkAAEVCk0GmTPHsKA1IrbEUtFDsG/HEq5JK3
  hjYUNvi2cIt9RaqjnRaVTIAIWCMngURfKqeVQmMekMBEY4JI9YEJaVktkfCwSnAYrmGI3iW1
  EYKDzKoiqoUpddNvFpodbsd6BHBMLbAbuCERFWMnAhehqdsilQNJBHgq1So6RsSAmdJb6gch
  IitKvAFl9hkwhSIXk5qA6Pkx3lSktPqimFCww1Ss0jgU9PM7oLAz/LkX8CQedDUf/DC9ezEB
  zeOyj0uxa+RGyfsmyRNgSNKC+MVp6osJmKaE95sscZUPT6S+ZYD+AAopoZiUU5BEbFYgANpV
  L3wDGym1jvnpI+P7MRNQSdslMWwmAhawL6BiZ5eiWqqFScuxfsaVB8mlBMymAvKKwJRTOYhS
  OEUCAPzYN+53C7ewmQH4kivINS7rPHsGpF4qFlwCi2D0vcGpnZFQJEdMafXDC/PrfYvkvtmn
  k9jSRlMcHONBUvaLrHsGv/ubNgXiv2DYO+N0LQRMf49KL6KrfswQmSaaBhfgiKnFIHZzAtAm
  bCHxbdAaGnWAjldVb06AANqBuqmLoDLMKRLQUXqhBHYmkA5DQDKCRRkpMRawU4uWIe7nXc/j
  VjLySM0Awk2wO3LSpEvoO9mpuFEgAEf+LDW/+b2IwbegAK5B2TtRigjZNJkFUMV4dCveq0ZY
  w0b7C1dMUk+8kZfha6v7yyWFJle1aFH8tXKeSxJAElINklWcFDExkojaWwZ1LKF3rCcmYALv
  clUm8LrciY4OEFYckqJ5QSQGcCKoC7XmvLYwEiON7JBskgGEpx/XCjuxE611kKFSxAGrgzuK
  8mKeEhB5oZoL0MinMjPggUh5Bb+7Bz62px5e/E33hQ4KEAkqyB9Pp9EpJ9JC+gRYs4z/66ty
  pXENRsw8WxR20Hn7xBvtob6ttA78NGjSbKuXECzu4QAesC6GSDmyxc1TK35MmZLbQS9VwSIO
  8zBMRlsEt2j+AfEAJ5lSsYEoRIIAM1TPBXMhKhOAAerIbII1dSExGGABbu3WohwSDlBU30Yl
  BNBBElOPjSdLMQIHBg27/durQzFXiVugHxGxU5M9TnQtXEoTPMtG5qlgiGEnceBNePU8ptc9
  naa+SRmeXcpGQcpPtjp/a5KUvCm/JK2CQy0yfLhJm7m2zNCu71okCzKollQ3mBKpLSFstiUr
  FMB9ns0OvVESYkVbcx3asQtUUmHIX+aYALPNZT1NJtEA/MyzGLBSEmABEQPb3MwhszXRASAB
  stQM4z3eXRcx1fwxijI8aJzZoBGd2ulkmEZ647g9MN1GA7Ao8FRRp93f/g1PBNb+QocRHr06
  sSuHT5tNdtpZ0P3x01cpWPMnnuLpabYasjzqHgiQASRVqho+MQG6AFQLqIH61FBNLwIJGKPb
  1svkdg4cUCcAVm/gYlMXyM5xAG9wmRfgAeX8XN1yABwQuiqCUoCj1x4+bI98HsuU1xlgUwdH
  QwE0ORDiHqBwVY2XHcohF8+rHM8WeN8GCmiUJi8K2sr5EZjmgtrjO7T6Bp0bpAWg3yTgjLeZ
  xaHNm9qJE9UYHl1yBFhz52Uy2CvXPWgl00XSqv3xo9okCeTpHknhaTity26A4NZDJVIO2pRe
  6ZSuCV5lSY+KOG/aDNkdL/uWVYY66hyTAGNhHOoSqRbu1FuT2jkDcAAB4VbnQEKs+adS59d0
  K0UAgH8uUgKGuoGTc28ryA5o50GFMgKxhewhijJV5iH+/ew3/Rmyp0369aMWtU8AIQ7XmZM4
  w4rC/ZUTECaCCx0PkRSoDe3+zRj8Yegrp1++UYD+MWj4pHL5RT8MUFQELA3igO7QThesc6fH
  MXW8wZaeh0KA3Bsn5JEFvfAL/14Mz/BOxk+fiUL8VAXm/tlinr36/h59i/EZf9qfcL4aTcwo
  gdoRl9JEMNcBHwkrfxwxHvAwfxxQ0A/o/s08wU84HXGXuvFZ0LEXw/NAH/RCPwxfsPNDL/RB
  AAA7
}

set pieceImageData(Eboard,40) {
  R0lGODlh4AEoAKUuAAQFAxASDB8aDyIiHC8mGjUzKUI2IlQ7JUBCQGY9KVtILWpGKlBTUHpI
  K2ZWPm9YKV5aWmJiXoRnMW1rYoh0RnJ6cp52MoSFf62JQ6iMWpKTkracXaCgmcKkY7Wphquw
  q82tbdKydtyucc67kbzAvOe5fN/GlOXNndDT0O/Vo+7hv/Xu0v742v768v//////////////
  /////////////////////////////////////////////////////////yH5BAEKAD8ALAAA
  AADgASgAAAb+wJ9wSCwaj8ikcslsOp/QqHRKrVqv2Kx2y+16v+DwE0AADAOHwJWAUAiGgALC
  QKiXiQJBQD0FKNxIAhQKZmKGhwuHRGR7QgEDBYVVAAIMDAZwCAgFBQOekgABAKNTZRWhSAET
  dYqtXpKKBgceCnAmE5hVFCAguT8BHCcmHR0bG3xCFBMKBFQOw7CLKhsHW6F2dnmur9sFJBCF
  ARoayFQBBRMV1UIAGhcTEREQCJLnouVjCCj0RwYRKBOiTRpFsGCYAwIGcIEloFkrAhNMOBgi
  IEUGh1QylCjhK8CHFSlKjAARotwGDA4wRslwIoTKIQYMjNggYQsBDyqKneyggoL+GAINrREJ
  8FLMgAmiHEW4YyXOhAnrfnHQAE8eP0cM7k1RRSLrEQEaSATUMuqDChQozpL6IsCAg5RvspAZ
  knIbgAlxfwDIgOCKRo4UcYYMAUKEyQzMqCjYkEGgIwoSfGEhsIFFCgwYQKTwwACMnoR6ivbB
  GMkVpbW/UJtD8DQqMA0V4s0DlRWVFDITBjj+wSDCVSyPvK1oseJUAS8QT6hQkSLEBgUKsVxw
  eCFELdMqVU/RaKKj4BKEDRPJQKEuFW1IHKDXQiBDCBUt4Tvw6SVAhAoVJjBAADRLAT77kWGH
  IXMNwZQVAbCmzhnjxGYVMgmKshsTB4wiml62ZTEAB/T+kIBCKChE0IUAI6jAwgorMGcCedFZ
  UYBFBlBwwgYLbDCCBw8okBRyXglxgAETOrGBCSlw8MAEEFSQAnMiFeZATDEpk5guuwFAn02Z
  gXDiCRRgcOUWBVTwAQkfcBDbJnlVQcAFAwTAQAUICIAABAx4siMXZcCyx4VPJIgfAxDQycAF
  78hDZwF57KFHhrcJsJtuXGy4wgejQJDWBF0QkAKKJ4JkwgYUtDjJBSBgYMAJHTiwgQorhIAB
  YkFupekyPxDSwQP4RBEMqyx0ulxIIHQAgjHkUQDZlFMccEGVX2bRXgcnpFCiB156MaiHZF7g
  GwKiUgHAPAMgcAECRBEACaD+kHLhJlMADJprFH5ewAEJJExFqIOCbgLUou86AcBvRURA1BYb
  opAVURygUEEXFHCKIkgzZiDZJB7QAd+rGRgDQgsqWHDgFQJkwGoKFcqUYgZprqQcCy30ygJz
  LYUgwrAZFCtBjnwyEcAJBOQKwAPHSLHvEe2lkIIEFKzqQbNCDCiFfWHR+8E7+/UMnCjiRjCA
  uQN8NkAFHzfFwdQBhcIAvf06Ee+89bpTqDz7ceIJv2qCfQQAHIRtxQDLDtBCC/TE1sUFD6PI
  ZM1RWdHQARwsJ0IILREDn6sIZRFACi9P84ABJixXwsBTbFCCiSyfCDN4xDDmJWQSIHubCoQY
  AcD+BRukvETPBBxwAO5EtLdixhlodkERFtYRgO1L2HfBB8ybua3eUuhxlLZyaMKJHvs1sgYC
  2VZggKMEaPCB3eextjyZ9r5Np75d063YuHd/AH0SoiwajQCIcvD3PgkWocceFoqCjFj1qxB0
  gDwT6wMASvC3h/HKBMOSwJJEgIHE9WEEpmPSAwigHFRdRwoZ6MAITmA4o6GuGDUz1gMe4AAF
  HKBbRVDAA5IggBVQIIEKSEEHkCcEB/QFDhPowAp6pQITXMABfAiAAxjwAGM5cYY/qAMFNpWi
  FZwAZTkrQoIiQChCWYVbsWICAKbntqfIA25xGgC6mjKA5l0gNhDQDQL+IvABgEGBKIC6wDje
  CI98yS1RAJzQAtqSBA1wIALRiAMJShMIjAQAAlGTGpwKMQpABSoeOzLAACLgIbSgQAOIhIID
  RkAk+AyDPBvEAgAO8LdeGQ5FwijBBjrgqhOAIIz0IwABmQOfDTjgApPLQNqUEKOMkTJYjEkh
  ZFboQt3tLm0AMMDxkEAAFiDGCCLbYSAEAIgfOKpzQ3SZCkZQuVHkIQ91oINeAuABzA3xnSpI
  Q58Q0JunIClubQJZBAw5FXfE5imC6gQBGMDIrZytTF6MQJ3kNA4Y+uscBajn+jbRifYFkiAJ
  9FEc+kWAeZ2CeJwsqBY5IQRpjgkt9EIfuTD+VBCD7KGTKEhpvRz1hAFkjFjkkYADXniFBXIs
  g8vJIHgoiIFTWvAJDqCiFU9gS/AcQAHj7ACQtoIACtz0Ajll4R+cWQc9LKGdGBBN7lrQAQyU
  Y2cs6MDuiDaCDEBRABw40TBmWYIhpmADOdvLpuADnhBQsQRMUwIb6GkJfA6zCbMbG0K7aEY6
  BaoTDeFWHyYwJnu5Y061gcCYcBmI6sVNbm3ag4QMkoTZ1fFdAaAXOWCBgDGt1Ah7QAGlftBG
  tIDSEvts3jDxdpYP6IcTnCSBBn7YBAJIAGNeutmPMgoFALAsnCgyWopUBEEMWEBYn+IhMTlg
  OPgIYwNMveEJwIP+KyoMwAAYS6FWdddMoGgvCRcYAQVQS4EWhKAxixhiqugrgXVANUUdsIAE
  jutXkKgnCQYY2acy8KoOLOmu2jUCJDRBYcgeVoxj62cX3+ggQ6GpAG+McD/aUVl3cOAClWCA
  oxAQlv5NQZqcMABFK/q/lsYKAPLY2t1iqoGP/eO0RAvABcDBG7R84GCPYMAExtajIwwgRRyY
  QEXDFRZQQuG8DWihAmLCiqZcoGUq8MAFPNBOoz3YBC0JFoM3EIIKwWuXKgCBCUagAFLe9wAQ
  vKaaHFCzDEwgR+3t6oV/ACToAWADLRiGNB1hAOJ0QAKOCQCQcuGBFJnguMRCmmZO4Dr+diR4
  nBdQhlVr5uA4D/oMWzMXIK+gCua9w54VuFc8FLof/iSEXJxlx9liOpUKjIOem2jTkjWQ6yBX
  jxN2CC1BnOAoRsEBLRxoMgA8dGTk3aMQjfNtu/Aj5UdA0o7rjCmb5LTPC/RGj0hxwiq6uq88
  OBQKhGvZdOpwABMtxwQhGEEI9u2cojYnMmOYAKumu5yC6xsEv3QOBYpNhC2zpCXJXGYLEXLq
  X3STCJxrQXMoEJe9EAcEFkigINI0ghSN4AFoXk5LuoQqCZSDABQYXbE0wlRUDcnUUODaOUN7
  hSWfOLTniLU7Zj3RAvQMxLh4AjqoPSaplSmOchQTBBCkvCH+19roXQOgAI56hOP9pwjmUkG9
  JhAnbwbAyHWCrSaQcYGY1gmlZNLAfwpAlWhAgEzcGhQHMqyfNzYZwbKgwN6L5YAcaRISW0FB
  r1JQhyaWyMwyE1YISmDLECpnA7kGhgML/isP7JsCECgGBhgexQHUeeAqQqGxdPpMSYsxRinL
  uApKAKtVnuBEpZqYAC4QuyF44GUjkEDnzKwC8nSA9lZjBwiKSIEHaMTMOhRdCkAwaAMUAAL3
  0c8c5Fa/rSwPNm6qBBfLiEZNGG8Ahsw1AiqALaqA2Nz7sZMA6IiprQhgAnrc+xu/aPQam1OM
  SHFWBSB2ZsIABMEA0KZi+PBIojL+ATEVAd6AAns3NuOiCuSAEXhDAhUACcszgR+gUNpSdkqQ
  IBRQIr9yAiNQDAK2U99TcXpBASfCAlyyIiMTLTZnDMeHbyIgYMTAddRUcg9zAhFwI1V1AcIQ
  VqoSNHcEEcEDAiXACxF3MwvgQl31P2IEAhdBBBMwHCnwKRYQChlwIs2BAR/kTWMWDRSgcg+w
  fNCXAlzCC+bhB8yRARIgMmYWLcYwXmG1BA4wRvchawqlL6KlHUvwL/oHAfCAf+MAG/mhfZoQ
  N6Ehgk1wLXFHKONDAPmCNVMjBUCCPxRmCdaDdYA0WqvEBCxGZOwQAWI3NYj0Lx8AbXEECgGw
  gbBQAAn+kzfysnf1sneIomR8MEbCVQnyMiZlUkexxgBZJARbowBY1Wc5RYVeFQVb6EAP82Aq
  kkzBg2YjwWAGlEpNYDJVFGYm4AGzQCTIZwDG4IIldTwK8BZ/4EJcRgfuJVrMRkvC5AhhyDGo
  IkwBYAKm4yrl9QvxZVYxZAIgYVXK8WBGQ2r99RjSQgHxZTQwc0V+9WjFFRwUZj09M1rqKC6L
  1UWLuH/xsB+94RuQ5YnJKASDQox75FsF4GGiUACbOAX/kxBtsnOidVFkAEVLAFer5QhtVy/a
  IgqaxWOxGA69wShCJlvXt4iqBUqPcAHHoRecJDB6xJJ7tybj8m6B8FTLNY/+VFBNvgISS2Jp
  +3ZAmAFeD+YcNMESnEUApcZ5YYYAI2A0K+IGjEF6dIEBx0SH6yVo6mgAbvgcepACDTR7CEcA
  79SFJ7EHBnABw1AU3IQiJ5eGbgh9aclxPyBBHkAebSgMB2Q0FJCSFLF75qYvVigFrYU+i7hH
  hNJHn3UfFVA1bbImp/YmiuVPUTZ/6+MoGyIikxAm9HImFpaTpOkIFbB3SGGIvPZG3HI+H6AB
  EJAnREEoNNU7baSB57CILJkViPgGlhJHEDA22XJZgwIBd9IEDuAB41gzObJWt6E/mcMqwrAk
  4yUCqpOWywESyHQzJuBmTCAA4MV5RkMLnYOCiBH+ADWjl0JQHS7DmM+oO8k3BksyDAihAocZ
  EuQBZiHBGD1TIm0lEGkwMjeTkAmpQ0kTVgJqEVbFS5d5QH5VAg3ggo+wd4dSUaQ3O1JzYhtm
  T/nCLejgRZfwH26SLkvAGhPoNhqgYl+kG+jXGcE5AfQSgsH2P4oSBSxGJugppfTCoyCYYdRT
  SfiHisQTFhwgbOPANrDBCUgRPijQCdDpDsP1NWTnbEuwAUM0e/c1CLIQBQDgAC3zMhDDC4SB
  UxjwAAyQAf6YIl2IlsQAaU0QAAoAOZy3ImppS2TITfI0BQMwJA/6KYwBGTvVHytRcF3IMi2z
  AnOWbySBZhAUAhzgYID+VYZFIAHvgSpJw6hmJktqRQAlYALGAn1MVQzvEWDqmCDMo1CiyHA4
  1k/jYEa0VmvBdg7lVgGBQlCO+VrJs356xFgRNVH3IGUIIi5TGoigNYh+in4ZRm3+lB9cdC9U
  IwcRQHbpSQRfQwIVGD7iE3cVcA7kckiVQIxexAmIWAYu6KvvBB7kMarwsjEZgBNMkpY18yoW
  QAG6Y4IgwRxomQEp0HtLQAe0tCQExFQmVCo6sh5PAy2fikIYwHqkCgUGUFeF0yoMtkyAtgBN
  lDH7NhOb+hWWaQJeopDMoUPkZAAewAEt+ivTd3xGQ4bRc3cfSFAVpY58A0qMVX4U1TWhsH7+
  7qAfh7IHECCViLVJsbZh5fcfW6uO/kOu+Kp9f4Sud4Rj+Xdi2kcAFcUJcgCK9KRQutEvhmgm
  bRK25BmdXYOMFcAJYhKd79AJvQEODCcApFNEw3KoF1dcGKQMI2QCIpABaaAoBCCPChBXMcio
  aoY0wac2GEBL0WKq4yV6aUCIfaIZ4qRDaKlc8JlzBGBAFNAA7Zg0IWAC+IZMkLEAduAWOpJX
  IgMfWLgBZFYec0AHW2MACoAA84FVNmKfEqO2whm155pzE0AO+MFtAmNjoxB03Wqt69MzakRc
  IxgHcxS+sTGk9vN/VaBGYUE2oEhjAPQ04UJRc6RHDVIVNxpaeQD+u3CwT7AxDxEVD5rQJgVx
  LnTSJnmLawxXANCVZ5TLlV9hmBWxAsgEK2/AkY0TTgQ0faUiARZwRUiFARsgApQ3Xk+Ilh6z
  bOfxHuJ0Ah5wQKjEDMc5FCvUROw5cGJoNDGzAQK2O3UQK59LJMJAHu+oZW+hZfD4ue3oHi0R
  kFh6v/LwtscpALEmZI0oD91HimqUfyJZNXvAH/5yLvEAD/HnwKSlJgwQNdqSv6oGQD3MDpEl
  LzLVNhyGJIeibLFyFLH2W56At3hrt3VgUaMgB51gwEoAg8RRRP2mUz08AA7mAbL0AAdgDAJB
  CShCHJwyOf2GhRZwapTgTKosodnAoD/+UACnEk4vY3M1czNUqLYAAC2h/De8rHEmuhGFkTEW
  0LP0I2lbpgAUQCSbx1Qm8IQfPAiikMR9EAHzckj4pLVPIABJgiTcUgn0YEGUgH8T6EXrYyf5
  gcrHMzc5aWNXYH3jmS20NgfqLCHRY4uvmBZnsaPwC5v8Qc+CFQpbQ2WK1XSs+ZrK2mw0nHO/
  Zzr4xhjK1cMyAVhtAQCtcwT1NhyizLojgBkPcBm5tkosXJ8hAR40Ua/wklSyrLyqI6q6o7YC
  4DKo2krQjAYNQMQyw2CHKmKZcAFL0indxQEhJDMigJ/J1LLX+TQX0KXKOmV2mgSYCAGOUmjv
  QgD7lGGwAcj+DawH9ITKW1uSfURRCb0a1Jwt95S1g0h6a5JSnlQvtBgK8srAh9fUYDdGDNB0
  nvRJ4yIHiOiucBMgeikA/jjJcxaqnKzTiyABeIUJjHAEoivK89mFrnKo45R5LEFFuzSYxBwF
  dJCGJNyoOszSFBcFuZuCIIDRLfO6obAzlLfJW0Was+MB0TKzHoAXbTGpvEAMDGYBFcSg6Kda
  S63OH53EzRAKjpEkhlQmVOFhdKAoX4dY3wLA/ZQf8QfJiKU8lfUORbeRAES13zsOnYSv9EAQ
  54B989DNck084sI2303BozCvAlxrJh2gD0A6lrZgxvIkhr0IcCAQaNArqZoiRAT+LCdRhy7R
  J43zXNMbc8vxaMyVPCXoMoGaImnGshQwhboTjU2gAGG1SpjTSn9jQITqhCKgVmHdkxDwVDxR
  RRBTHl3yOMNyQH24v6LdLrlprlmnFWOw37C1exmmf32UvqIACVw9jGZiLuunHw5sXprVx4rr
  xkMKdKlNCWoT3ucjU2XC19eaPdS9CKLAAGwDd/haWNg3a1q+5UXQNYoK07Oseq3zPRos2gsd
  4QPHVCUgehJQVhVHFCbQQD1zAA8HF08DVaXDy0SEmLiNSryLxKDDBCIwCKX9ToTOVxtR54xB
  CJknCjIys/cmLCRRGLgNaSXOBHY71ugDDw1842beJ3P+bNVDFyjrgyhJNgA+SDyhsHdU0TUv
  WaepLjvfSy9r3TZwhE/+R9z+khsbQtAxlS2FkuVxsuvly8e+nuwnxteyoQlxLOol18tyDkGM
  YQEs9CP5LVgBMBwx+N8qMl6TK0EnkOcwQzPWFUIjLgK0Kuq7METa7kp6mjo28xaK7gQdYBn2
  ThwvQ8TNHB4zcxLz03UhU5bd5YbASxKpYwyqUyHFtn4eshzSThUKfMf+rCaqMIzIjd2ubn6i
  1SYNvghwtViy4eqRQHrbaddrjVBlHWyCLOOFiMAhqS3RWlgVhrac5RTHXSbp8+OGEijW02zM
  1jCu1EqFvhF2zsm7E+6pcAH+/t0yjj209+nQG5AC4R4AZSUB7UZvD4AZs44ENiVEMB2oA39C
  Edd8OxX1QlJFYlgMTqQME2AszmgBRy1Gz7Cf8HG0r2ZPxpJe1hXjfcJFF5/Pist/Nx7fd6R3
  zbOIRV/e8ygKJw8H6PdG4HLI1eP4IwhiJwV3yB2/V8fx14ZYg+Ku/EHAovU/nmAnzv4mAByC
  Rsc1r5+3emuwTrAYykHuGcRUhMHmoyr1sGUihN5ADiQM29iyc/bRbXEAhXf3E2uxL+sEfMMB
  m6LmKlLnOtFnq/f21a8EHBtlQEEADjBgdb9Mir4oYxAMF7A56QT9P8zvh5c7C6BT0xSpbkJZ
  KNX+5OXH8UAAAAR+ReMRmQxMLpzPU6O5XCYQCEKBQAwCwwKAkBQPuwEBQavlCgFitzEwiGhI
  ddInWqky0ohCYUBAIIBQ6O0IoMCPkKuL7VFgINCx7RDOAKJAgM1MkkASdHBoALDSskiBw+SE
  pXVFJeWkpCQkpGMDg0LCQYFA4PRNgEJlZYWlxZilWAX2xKQEBANDwsSECPgHwEBBQYIio2MV
  JATjIAy7iOBi40TluJUFdgSko4NjIyOfguJh4cD8F7AHFxAIONAAQz5pCxNmyDXBwCZTpwBM
  8bWNwsJ8CqVRcLCFwL9rwAghmPABBYoPHC5UiACBj59AgxwFRGdEAIL+CxqecOAQpeVLmDE/
  jdIGjNMZBFaYMhhg6OaPAAQiXLBD4ieVCAxiGvBTwJeoIRPfxNkk9lFaNpLKYIv0dEgkQnPp
  RvpUpgs6BRtCmHCnTIUzWrY24NLFzcC5qNkcvFrRApmyYilenYjVwaEFCRusJTFAyGYRMAcc
  5PMQIta4DA5C/zDAxg2BDBxSuGvh6sSJEPRubdzHz8E/X9iGfMunWYIF5culWcCAr9zIU6Al
  YMDsUCPDhhlwfSZ7qGQEJ1g16IGZBhDNmouzDaigwWfWlhUqWIkpU6IQA0deAxCw3whOyBiA
  gD/+gIs/iQAUY6qqPiABBfIueOk+LcCaqRD+qCzZxAy65hpEkBBBE0CR1oIRIsO0UkQxDk00
  PAUBCqaI74IMprjgt30WeOCjAyJiz7UOjIFMsmWIYSY3EHCZhi/pfijAAyQ5yGCC4AwwwEcC
  tBwkJCwRwNIBGT0Y4QQQLjgjiQFm8wueeJzhrTDf9pHgAQXMUcwSbfDJZwMQTEANNRNSACGF
  ElKoZoNN0CHkgIb27ACESHeDFJpaQhCBgtcWHUUR9EJRby42TAQmpxunmABVCCKIoA8tCMjw
  qQUFiADCnxg4kCa1HmGEFAQYqKCJCxgYVaoBGIAAvqwm2Iqr+/74hK1QiTNDEAL/8LXVTq14
  Ch0CxoqrE2s7Bcv+QF/X2NTDdNMNcRAgDwjBtshcMTIWE0RYUgLupGPAg2TiiaVSzCg44Kky
  voG0gxAMJeaVPxVw8gd1OCDTSFlqqeeWPXPR5QHh8MzzgXxEmEXQV5g5uZgVMjjguzwDeCDf
  hDsowZkUbLYZlstWzgsbSnT9OS1iLRkAgVWXFUqoCp+l5IsFAXjwjqzMu5UtMlCMRJEImOCJ
  pQkYaDmbFpeiUCYCoZVExFBfPOTVODzptFn7uDpv7TwBiJaUTtOI6ditvIMYyMCnM8A4G2vM
  ICPEN9ZFAjo7HsIIBwjwAPEcN0L8s9Y2caChORtvfB8H0gSadKCjGiKkxLkrbE/WIAfLEsWQ
  FHAA1VQh4FEBA+ASWvDex8i7bAMvLLARn3nOxoqv4L7Vxe+uJtpXPu4qZIzSrU/rJm/vFj4U
  syiB/eoCtTjWWbF8Px+p60s/ggAHGNASfgISS8xbYv0z+4wQ5bfz47DY/T9EMwHg/xbzt6lo
  iX6iANxiKAGadKEIfRG0BF6Kpy6fYQ8OW1APGXJFrPzQRVdiuNIIr/SlEpIQhV4h4ZcWk5/1
  9e5VnKCW2l4nQRveEBEfwyHYcNhDH/4QiBLU4Q2HGEQjHtEIQQAAOw==
}

set pieceImageData(Eboard,45) {
  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
  ADs=
}

set pieceImageData(Eboard,50) {
  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
  iqm4OrGYi7v4B4IAADs=
}

set pieceImageData(Eboard,55) {
  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
}

set pieceImageData(Eboard,60) {
  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
  znPG9EtCbepTozrVnm5sqkut6lfD2hxBAAA7
}

set pieceImageData(Eboard,65) {
  R0lGODlhDANBAKUuAAQFAxASDB8aDyIiHC8mGjUzKUI2IlQ7JUBCQGY9KVtILWpGKlBTUHpI
  K2ZWPm9YKV5aWmJiXoRnMW1rYoh0RnJ6cp52MoSFf62JQ6iMWpKTkracXaCgmcKkY7Wphquw
  q82tbdKydtyucc67kbzAvOe5fN/GlOXNndDT0O/Vo+7hv/Xu0v742v768v//////////////
  /////////////////////////////////////////////////////////yH5BAEKAD8ALAAA
  AAAMA0EAAAb+wJ9wSCwaj8ikcslsOp/QqHRKrVqv2Kx2y+16v+CweEwum8/otFpMEBiOBgFh
  TccGAIC304AP1P+AgYJHbXpFcXODikoEeAACTwKOiYuVlpdYAASNfkQBAgd3ZQEECAgKkEUA
  BaYGBpuwBAMARp8CAgG5YQAKFwqfTbgUGQq0mMfIPwvJR5oMup4DDAXGZY8FDAwDhkKapggF
  4QPj49VDAHeO5lyNBRUM6E25EBONlMz4gJr5QwYHIx6KqbpgYkIeMgMogDABgpuQABxSnDAR
  ooPFDhs2UOhEhACFCQ4UyAIDwIGJFB0erEMC4IIKFRsOrCwj6VOsm7ck8RO0j5/+gQIkVEBY
  F0ADCg0BHIYJUIBeBQQHVEXQcOHChAhYI0CAgGAl0wHpOHYBgIADCg5dlR4CEAEFigmi1Kib
  S3fmzjCpVNk9JuACCxUU1hEYoSLDLTIEMpRIUSJqkQAeVqhIkcJEicshQmAQK4TAhgwTRA4A
  A1myCQz3kBAwYGIFSgmczRAIcMFDBgy4c2OwkMFD4LtnUnfbe0kABBUfuhYZ8AFFBWCjmk6o
  UMDxualUK0y4qhUCvFrgwpKugAJ5BOhJBAzgIPnCrDV4EETgnnU+BEnE1xxoQ67OoyIHgCIc
  MgRMUJkD6wjgQQoZkIKQYowpFcAHLLjG2AgjhABCCBv+GeEZBg840AZpGUyk2YCHGLABhhvA
  tsYmHvzVQQYZfYZBBy/9Zkkbt6BIxn9EhOJgPrJM8AxREVxgjxmrzDdBdY9NwAFV9HWn3GPT
  iPdFABN8QIIGz+SFhAAFGEXCBO/JBQBzL7nllgooROCIIgO4oYADeCLAn5r3EODABj5iUtIE
  OhGRRwZXjpFYCSeUoJSCf0lUQmYjgCBCh8t99oBoJCmQUQYIyqMABRRIwMeLnqnAQgob6AZC
  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
  6u3fEm7h1kIQAAA7
}

set pieceImageData(Eboard,70) {
  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
}

set pieceImageData(Eboard,80) {
  R0lGODlhwANQAPcAAAQCBKSCPKSmpFRCHMyubFRSVISCdOzWpIRmLPwCBDQmDNza1LyaVKya
  dERCPOTChCQmLHRuXJx2NKSKXMy+pHRWJPzmtMSyhEw2DHxqRKSejHRydPTu1IySjBQSDLSO
  RNzWxMTKxMSmZGRWPJR+VFxGLJSOfCQmHOzOlLyypNS2bJRuLLymdGxuZKySXOzu7LyiZNzG
  lDQ2LHxWNNy6hBQWFKSGTGRiXISGhPTitIx2RNzKpDwyJJxyRKSilGxGLOzatHxmPDQqFOzm
  1HReLPTqzIRuRGxaPHx2ZDw6PKyupJSKdOTWrKyihFRKPGxWLHx+dPz23LSSVOzevNTS1FxO
  NNS2fKyWbOzGlGRiZAwODLSKPMyydISGfIRmNDwmDMyiVLyidKR+PJyObLy+vLyylJSWlCQa
  DLyWRMzSzExGNDwuHLy6tLSqhKySZPz+/LSebMy6lBweFEQ6JKSinKyurOTezOS2fFxKHPTa
  pOTi5LSeXOTKhIR2VJR2PJSGZPzyvIx+bFQ+LFRSTGRaTExOTJyanPzy5OTm5Jx+ROTSrHx+
  hCwWBDwqHEw6FPT29MzGrBwGBHRmTMzKzMyqbFxaVCwuLHReNPzyzGxOLHR2bBweHCwiFMy2
  jEQyFCwqJLS2rIxuNLymfGxybPTy9Dw6NJyGVJR6THReRFxOROzixOTKnNze3KyefERGRJyW
  jLSSTNTOxNSqZKSOfOzSnEw2JEw+PPz65FxKNMSibFQ+JKSKZPTmvJyelNTGnNTKrHxuTKyK
  REQmFLSifPTChGRWRAwOFNyydLyWTLy6vCweFMSeXIRmTKyGPIyGdIxqLHxyXPzy1JSWjJyS
  fLSWXGRmXIyKhKymlDwuFGxaLPTivNy6fOTKlMTCvMS2lCweDLSWZNS+lOy6fOzq5JRyNMSq
  fHRaJHR2dFxKLNy+hKSKTPTuzDw+PGRmZIRqNNSubPTWpMSiZKyilIRmPIR2ZLSupOzWrHRW
  LIR+dIyGfLSurGRKHJx2PHRybIRuTGxmXCH5BAEAAAkALAAAAADAA1AABwj/ABMIHEiwoMGD
  CBMqXMiwocOHECNKnEixosWLGDNq3Mixo8ePIEOKHEmypMmTKFOqXMmypcuXGQed4CGkw8E0
  PD6VegSz58l2xjbV6CMxQo1Nxlr4XMq0qVOTqTg5mSPNIJ1aTk6oecp1Yz45QmvIkIjv6FE5
  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
  /vmr//qzf/uPvr4IgPvrIqbLf/3bP74EBAA7
}

####################
# Fantasy: based by Maurizio Monge <maurizio.monge@gmail.com>
#http://linuz.sns.it/~monge/wiki/index.php/Chess_pieces

if {$png_image_support} {
  
  lappend boardStyles Fantasy
  set pieceImageData(Fantasy,25) {
    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
    ARDQaw8YszwHAAAAAElFTkSuQmCC
  }
  set pieceImageData(Fantasy,30) {
    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
    RK5CYII=
  }
  set pieceImageData(Fantasy,35) {
    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
    AABJRU5ErkJggg==
  }
  set pieceImageData(Fantasy,40) {
    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
  }
  set pieceImageData(Fantasy,45) {
    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
    o8eFSEj8u+4AAAAASUVORK5CYII=
  }
  set pieceImageData(Fantasy,50) {
    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
  }
  set pieceImageData(Fantasy,55) {
    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
    QmCC
  }
  set pieceImageData(Fantasy,60) {
    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
  }
  set pieceImageData(Fantasy,65) {
    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
  }
  set pieceImageData(Fantasy,70) {
    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
  }
  set pieceImageData(Fantasy,75) {
    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
  }
  set pieceImageData(Fantasy,80) {
    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
    TNpnXR7r/aju4LqWCe5brT5blSsVwBil9JuSLB+TZLkDpk2FF8COl189tvnY8TdoMpVOG4ax
    aH2g9iE17wq+Seu97vX7fA/e/847G37j0x9Gb1eHSYuxxnI1ZedrKUCXDujGikOgAYqAz4uA
    38s4kl0OZl+ZMwAz13FTpACG0+n02Asvvth05x23QeC5suTKPQ+cQgvbtmzCf/tPf4qvPP4t
    JDN5bN++HV/+8pdxcO+OMvS3PFmzLwLCMAABhkYm8cqbgxSVlehEq+/yhvSi/yuq0DBJyygK
    i8FqSwj4/eBYtkgJhV2VZ2x7BiAY8CMUDJjKstbmRg0DBlkpiEUrpN3XKKDdyABsJ5JJACcG
    L1x8x/DIqG/Prh2OBM6pnF5Cf8vESJ0opxP9LUN7sQKFXPEaWPkaBjUwNjWHVDqrO4JrsS/T
    oU58PSxSqOP1JSthejkWj+96/OvfvHffnl1MT3dXZXaKS9HZoOVq2tRJUXYgve5iAq2Q0BIC
    MCwpT3zdtGfHfbuo8O0fP425xZgthpZ1VJxTAFIWKnrN4Hud9sRV1/ftt9++nuO4WycnZ/hs
    Nr9qj5ymGZieXsTu3euCPT091SdPnpxbpdBpf8b623R2eLuLpJQQoimKIp45c2bszJkzaY7j
    zlFKq3Vdr1pejiV4nqcAuDffvBi/ePFiKpPJyI6ikbMInQCQ3rx5c/Utt9zyICHcvrNnL/PT
    0wsW4sasOBhWSmzfigfwagmwaYlD4fF4OIZheMMw3DHYzcRa8zl37ty5qZ6enkvt7S39Q0PD
    kGXFJX7FlAkzOQ/J6XQer79+Ab29bVi3rhXj4+NYt24dMhkZS0vpFQJEK1E88+bzMQiHNXr+
    /KiUTCZXxGBH0e9tFRx6m4eyGH+diLdhGJBlxer1rbSWzK+qqkFVtWL8oZRWQH6BlbZUZeGX
    rH4uuOExWAMgj4yMDPf19V1uaWlqGR2dgqYZKwokTuRwtbVXGf1lKqC/zFWe3+1Py8DvZzA3
    F9NyuZxdkHQK1TmLMtoa5izu9i1xYmJi/tKlS09s3bp14/r1/e1vvnm2aK9VTthlUFmV3o3Q
    MlhJ8q2sZ1A+lqhYZLja89TUeBCJUPrii6cLy8vLNu05Ze3LKastNm2dM6SrnbW56z5zLVI+
    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
    RU5ErkJggg==
  }
  
}

### chess set Fantasy. Dark pieces are in brown
# original Fantasy: based by Maurizio Monge <maurizio.monge@gmail.com>
#http://linuz.sns.it/~monge/wiki/index.php/Chess_pieces

lappend boardStyles Fantasy2

set pieceImageData(Fantasy2,25) {
  R0lGODlhLAEZAOf/AAEDAA0GBAcKBhIJABoMBRQPDhASDxcQByEOBB8UECQT
  ChcZFhsXFh0XEiIWDC8TCiwVCikXCR0fHCEdHDEZCDUXCSgcFDoWBCQeGSod
  EC4bEDYeEDIgFTAiFSQmIygkI0AcDSokHzUhEj4fDi4lHEccCTwiD0chDios
  Kj8lFzgpHC8rKjErJkImEzUrIlAiDD4pGUIsHTgwJkwqFDEzMFglEUYsHUgs
  GVApFDYyMTgyLD8xIlYpEl0pD1ssEDc5NlMwGko0JEc2JD44MlkwF0I4LlEz
  IEY3Kj05OGExFT0/PVU5JUc+NE88K0w9L0U/OWE2HUs9NFg6IWY1GURAP105
  Ims5HGM+Img9I0ZIRUpGRVtDLVZFM1tDMk5HQWBCK1BHPW89IGZBKlZLPHNB
  I0xOS1NMRmhHLmxGKVJNTFdOQ19NOnhFJ1dQSmlLNlFTUHVIKXxIKmJUQ1xV
  T1ZXVXVONntNLGxSPF9WS3ZPMnFSN1xXVoBRMWNcVnhXPV1fXGJdXGddUm9c
  SIRVNXNcRGdgWYRaO4paOXBjU4FeQmVmZHthR2plZG5lWm1lX4xiRI5iP3Jr
  ZHpqV3Fsa3ZsYW1vbHZuaINtVJNpSo9rUHN1cnxzZ3hzcnpzbYxvUpJtTYRy
  X5p0U3t9eoJ7dIx6ZYh7a4F8e5V4W4Z8cJt7WIqCfIOFgoiDgZCCcY2DeJ5/
  YpmCZZeCbaOEZp6HbZOLhKKJaYyOi52KdZKMi5eMgJyNfKeQdZSWk6KTgpqV
  k5+ViZ2Vj6mUfq2YgqqbhKGcm6acj52fnKudi6ael6+hkKeioaOlormii62l
  nq+lmbWqnrWtprGurL2wnruwpMWxoby0rb+1qMqznby2tcS7tMa8r77AvcO+
  vc29rMnButi/o9a/qc/HwNLHutzFr9nGteDJsuPLtdjQyNvQw9XT0eTPvt/S
  v+fSwd/X0OXXxN/Z2OTZzOjax+nd0OLg3uzg0+nh2u/k1+fp5vHo4fTs5Pnw
  6fr08/b49f/59/v9+v///yH+FUNyZWF0ZWQgd2l0aCBUaGUgR0lNUAAh+QQB
  CgD/ACwAAAAALAEZAAAI/gD/CRxIsKDBgwgTKlzIsKHDhxAjSpxIsaLFixgz
  atzIsaPHjyBDihw5UMC/Nx4uPhnoZSANkgdzMLC4gN8qmAdNKllw0cHADANT
  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
  0AAH4JkZoAAOUAAD8LiCsbmc27me+7keERAAOw==
}
set pieceImageData(Fantasy2,30) {
  R0lGODlhaAEeAOf/AAACAAMGAQoDAQgKBg4IBhIJABkLBA4QDRMODBcQCBwP
  CCEOAxIUER0SDSMSCBYXFScRCSIVCxsXFh0XERkbGCwVCScXEB0eHCwaDiEd
  HDQXCSccEyQeGSsdEDkbDywhGTYeEDIgFTAiFigkIyokHjUhESUmJEYbCjwg
  DkYhDjIpHzsnFz8lF04gCjgoHCssKi8rKjIrJkUlE0skCkMoFVMmEEItHkwq
  FjowJzEzMDUxMDcxKz4wIkctHlIqFEswHForFVssEFMwGj03MTg5N0U2KDw4
  N0A4LkI4KVkwGEs1JGExFUQ9N1U5JVs3IT9APkc+NGA2HE09Llk6IWY1GUVA
  P0hBPFU+LWo5HGI9IVRDMGc8IkpFRExFP0ZHRU5FOlFFNl1DLW89IE9JQ3NB
  I19IN2xGKlpMPFRNR05QTXFFKldOQ2lJMVNPTnRGJnhFJ2dON3xIKlVXVGVT
  QFpVVFxVT3tMLHZOMV9WS3JRN4FRMWJbVX5UN2ZdUWJdXF5fXWtcTHpYPoVV
  NWdfWXRdRXpeQotaOWRmY3FkUoZdP2xlXmplZG9lWolfO45jP4hlSnBsaoNo
  TY5kRXVsYHxqWHNsZm1vbJRoRJRpS4pwVHV1c4JyYXt0bZNuTn50aJhzUoh6
  aJN3W4J7dH58eoV7b5x3Vp55XZx8WYyCdoiEg5KDcIyEfp+AY6OEZouNiqKJ
  aZuMe5eNgZWNh5OOjaSNcqmRd5iVk5+ViKOUg52VjqmTfqmag66Yg62aip2f
  nKKdnKWdlqedkauejKujnbGjkrqjjKmnpbCmmbWrnrSspbCurMOrk7iwqbuw
  o7+yoMWxoL60p7y0rcmznby3ts+5osK8u8u7qb2/vMa+t8m+sti/o9jBq9jD
  stPGs8fJxs/HwM3HxtLHutzFr+DJstLOzePLtdjPyNvQw+DSv+XQv9vX1enU
  w+XXxOTZzOLa0ufax93f3One0Ojg2ebh3+zh1O/k1+zp5/Ho4fTr5Pjw6PL0
  8Pvz6/r08/759/v9+v///yH+FUNyZWF0ZWQgd2l0aCBUaGUgR0lNUAAh+QQB
  CgD/ACwAAAAAaAEeAAAI/gD/CRxIsKDBgwgTKlzIsKHDhxAjSpxIsaLFixgz
  atzIsaPHjyBDihxJsqTJiiZEAjjJ8uAfVzlaOrygUqbNf08WjbiJkIGXf23k
  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
  a90+AXKl6icuAId98Bq/8Rzf8R7fEQEBADs=
}
set pieceImageData(Fantasy2,35) {
  R0lGODlhpAEjAOf/AAACAAoCAQMGAQcKBg8IBhIJAA4QDBoMBRYPBhQPDSEO
  BBIUERwRCh4TDhUXFCMSCSoSBxsXFh0XEiIWDBkaGCYWDioXCi4WDDcUCDMX
  CCYcEyMdGB4fHSEeHToWBC0bEDcZDS4gFDIfEzceEScjIkAbCikjHi0jGjwe
  DCUmJDIkGEsfCkchDTomGTAqJT8lF0ElEissKjUpIDcpHC8rKjMrIUskClIj
  DU4nEksqFDEzMEgsGUcsHjoxJz4wIzYyMTgyLVcoElkqDkYxIVYuF0Q1JlIw
  Gz83LV0tETg6Nzw4Nz44Mk8zH2ExFUQ9Nz9APlE7KkM/Plw4IWY1GVY7JUlB
  NkhBO05AMlJALms6HUtFP11BK0ZIRUpGRWk9ImQ/JlBHPG89IFtEM1BJQ3NB
  I29DJ1FMS1NMRltMO21GLE5QTVdORGhKMnRGKHhFJ1dQSlZRUHxIKlVXVFxV
  T2RUQXZOMW5ROVpWVXtNLGBXTIBRMVxeW3JYQWJdXGRdV2xcSmdeU4VVNYBY
  PX1bP3ldQHNfRotaOWRmY2lkY2tkXoZdP25lWYpfPHZlU49jQGxua4hmS3Vs
  YHJta3VtZ3xsW4NtVJRoRIlsT5RpS3xyZ3hzcnpzbXR2c4FzYZNuTZlzUnt9
  eoJ7dJR4XIV8cIJ9e5x3Vot9a5p6V519WoeCgYOFgouDfY6EeJqCZZ+AY5iE
  caOEZpWLf6KJaY6Ni56KdZSNhqOMcZyOfaiRd56UiJyVjqKVg5aYlZuWlKqU
  f62YgqqbhKSclZ2fnK6aiqqdjKOenaiekrCikLiijainpK2mn7Cmmbarn7Ss
  pa6wrbOurcOslb+unbiwqby0rbW3tL+1qLy3tcG8ur2/vMi9sM68q8a+t9W/
  qNi/o8vHxtLHutDHwNfGtdzFr+DJstnOwdPPzePMtdjQyeTPvuLUwefSwdrX
  1eHY0ebYxeTZzOncyebe1+ne0OTh3+zh1Ozk3e/k1/Ho4e7p6PTs5Pjw6Pvz
  6/r08/X39P/59/v9+v///yH+FUNyZWF0ZWQgd2l0aCBUaGUgR0lNUAAh+QQB
  CgD/ACwAAAAApAEjAAAI/gD/CRxIsKDBgwgTKlzIsKHDhxAjSpxIsaLFixgz
  atzIsaPHjyBDihxJsqTJkyhTqlzJMuUAHTRaypxJs+KAFBwE1GQIQOCTPSGt
  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
  ttKVr4RlLP8REAA7
}
set pieceImageData(Fantasy2,40) {
  R0lGODlh4AEoAOf/AAACAAoCAQMGAQgKBg4IBhIJABcHAQ0PDBkMBRYPBxQP
  DRITECEOBBwQCiAUCB4UDyQTChcYFh0YEhwYFyMXDikXCS0WCjMVCCcbEyQd
  Ex0fHDEZCS0bDyIeHSQeGTcaDT4aCTIfFS8hFSwiGTQgETgfEiQmIygkIyok
  HjwfDUsfCjIpIDYoG1AeCkgiDj8lFzsnGEIlEy8rKSstKjErJlEkDU4nFDYw
  KjUwL0ItHj4vIjEzMVklEjsyKFYpEksuG1kqDjo0LlQsE0swIlEvGUkzIzc5
  Nl0tETw4Nz84MkU3KEE5L2ExFUE9PEM9N2A1HFs3Hz9APk09LVI7K2Y1GVc7
  JUlANkhBO0ZCQGs6HVhBMGg8ImQ+JUZIRktGRU9GPFNGN05HQV9DK289IFdG
  M3NBI2pELVNMRmFJOFZOQ1NOTVxNPE9RTmVLNWpKMHhFJ3VHJ1dQSnxIKnNM
  L1VXVFxVT3FQNntNLFtWVV9WS2RVQ2xTPIFSMWlbSl1eXGJdXGRdV2deU4VV
  NXVcQ4JYO39dQopaOWVmZG1kWXRjUWxlXmplZIlePGtsao5jP45kRXVsYHFs
  a3NsZoNqUH9rV4toTZJnQ31vX5RpS3hzcXtzbX1zaHR2c5NuTo1xVZlzUnp8
  eYR6bol5aIB7eoN7dZV4XJx2VZp6V519Wpx+YIOFgouDfY6EeJmCZYqFg5OE
  cqGCZKOEZpWLf6KJaYyOi5OMhZGMi5+KdZuMe6SNcp6Th6mRd5eVk52VjqmU
  f66Yg6mbg6acj6WdlqGenKuejK+cjLGjkbiii6impK2lnrCmmbarn7uqmbSs
  pbCtq7iwqcWul7y0rba4tca0o8C2qby2tcG8u72/vMW9ts28q9K7pcm+sdi/
  o9rDrM/HwMvIxtfGtNPIu9/HsePLtdnOwdTQzt3PvNjQyeTPvufSweTWw9vY
  1uDY0eTYy+fZxuncyejd0Ovg0+Ti4Orh2u7j1vHm2fHo4ezq6PTr5Pjv6Pvz
  7Pr08/f59v759/v++v///yH+FUNyZWF0ZWQgd2l0aCBUaGUgR0lNUAAh+QQB
  CgD/ACwAAAAA4AEoAAAI/gD/CRxIsKDBgwgTKlzIsKHDhxAjSpxIsaLFixgz
  atzIsaPHjyBDihxJsqTJkyhTqlzJsqXLlzAJAohJs6bNkgJuWhyww+RMmT91
  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
  ojTKoyTKgAAAOw==
}
set pieceImageData(Fantasy2,45) {
  R0lGODlhHAItAOf/AAABAAkCAAMGAQgLBg4IBhIJABcHAA0PDBINCxcQBxsO
  BxITESEOBBYSER4TDiYQCRUXFBoWFSQTCiEVCxwXESwUCRkbGB0aGSoYCzcU
  AzEYCCYcEzQXCB0fHCEdHCMeGC0cEDgbDiIjIT4aCTAgFDceESwjGigkIzUh
  ESokHzwfDSYoJUgdDEMjEkAlE0giDi8qKSssKjwnFzgpHDErJU8hC0EnGTQs
  IkQqHDgwJk8oE0ItHkkrFzEzMFQnEVglETYxMDgyLEAxJFkqDjc5NlMwGlcv
  Fk4zH10uETw4Nz44MkA4LkU3KEs1JGExFVo2IF81HFE6Kj9APlY5JUg/NWY1
  GU0+LkRAP0ZAOmE8IGs5HWc8IllBMV9AJ0pGRUdIRk9GO2Q/KF1CLVJGN01H
  QVdFMm89IHNBI2tFLlZNQmVJMlVOSE9QTnhFJ3RHKVVQT2FPPHFKLWBRQnxI
  KlxVT15VSntMLHVONlZYVVtWVW9SOYFRMWFcW11eXH5VOGRdV2ZdUmxcSoVW
  NXdfRYBdQYpaOWRmY2llY2xlXm5lWYdeQHRlUolfO45jP3RrX4hlSnNrZYNo
  TXxqWG1ubI9lR3JtbJNnQ5RpS39xYXN0cntzbX1zaItwU3h0cpNuTZhzUn96
  eXt9eoJ7dIl6aYZ8cJx3VpZ6XZt7WJ5+W4OFgouDfZGDcI6EeJ+AY4qFhKOE
  ZqCHaIyOi5SMhpyLeJKNjJeNgaSLa6WOc5OVkpuTjaCTgp+UiKqSeJqVlKmU
  f62YgqqbhKGcm6eckJ2fnKWdlquejK+cjLCikbiijKimpK2lnrCmmbarn7Ss
  pbCuq8GrlcWskbevqcGxoLy0rbW3tMC1qcmznby3tr2/vMK9u8a+t8m+sdG/
  rti/o9a/qc7HwdLHutzFr+DJsuPLtdvQw97QvdnRytbS0OTPvufSweTWw+HZ
  0d3a2OTZzOfZxuncyejd0OTh3+vg0+rh2u/j1vHm2fHo4fTs5Pjw6Pfx8PL0
  8fvz6/v19P759/v9+f///yH+FUNyZWF0ZWQgd2l0aCBUaGUgR0lNUAAh+QQB
  CgD/ACwAAAAAHAItAAAI/gD/CRxIsKDBgwgTKlzIsKHDhxAjSpxIsaLFixgz
  atzIsaPHjyBDihxJsqTJkyhTqlzJsqXLlzBjypxJs6bNmzhzfhSgs6dPgivy
  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
  1One69GG7uvG7uzW7u3m7u727u/ei4AAADs=
}
set pieceImageData(Fantasy2,50) {
  R0lGODlhWAIyAOf/AAABAAEEAAoCAQMGAggKBg4HBhIJABcHAQ0PDBUOBRMO
  DBoMBSEOBRIUERcSER0RCiYQCB4UDxYXFRoWFRwWECUUCyIWDBkbGB0ZGCwV
  CTMVCCwZDSkbDjsUAyYcEx0fHCEdHCMdGDIZCTgaDiIkIS8hFTceECcjIjQg
  EDMgFS0jGjweDSokHyYnJUodCEUfDDIpIEIkEiosKS4qKVEfCzgpHDErJT0o
  GFAjDEgrGUwqFTcxLDIzMVApFUMuHj4wIjYyMVkmElYoEkgtH1kqDlQsEzw0
  Kk4yHzg5N1MxGko0JF0uETw4Nz84M0U3KWExFV80HFo2H1A6KUM+PT9APks9
  Lkc+NEY/OWY1GVc7Jms5HFlCMWk9Ik1GQEdIRl1CLUtHRk9HPGVAJ289IFZG
  NXNBI29DKE1PTGtGLldNQ1xMO1JOTWZJMlVOSG5HKnhFJ3RHKHxIKlRWU15V
  Sm9QN3ZOMWRUQ3tNLFtWVV1WUIFRMWpbSWZcUXNZQF1fXGRdVmJdXIVWNYJZ
  O31bQYpaOWRmY4JeP3NjUmplZGxlX3tiSG9mWopfPGttao9jQHVrYHNsZXFs
  a3prWYVoTJNnQ5RpS3xyZ3pzbHhzcopwVHR2c4FzYpRuTphzUnt9eoh6aYJ7
  dIB7epJ4W4V7b5x2VZx8WZOAbYOFgouDfZ5/Yo6EeYqFhKKDZZ6IbZWLf4yO
  i5GMi6KKapSNhpyMeqWOc5SWk6OSgpmUk5yVjqqSeKCWiqqVf62Ygqqbg5ye
  m6acj6SclaKdnKuejK+cjK+ikLiijKimpK2lnrCmmr6mi7WrnrCurL6smrau
  p760p7y0rbW3tMWzoLy3tsG7ur2/vMy8q8a9tsm+sta9odfAqtrBpdHGuc/G
  v8vIxtzFr9jGteDJstLPzePLtdzOvNrPwtnQyeTPvufSwuTWw9rY1t/X0OTZ
  zOfZxuncyejd0Ovg0+nh2uXi4O7j1vHm2erp5vHo4fTs5Pjv6Prx6vzz7Pn0
  8vX39P339vv9+v/7+v///yH+FUNyZWF0ZWQgd2l0aCBUaGUgR0lNUAAh+QQB
  CgD/ACwAAAAAWAIyAAAI/gD/CRxIsKDBgwgTKlzIsKHDhxAjSpxIsaLFixgz
  atzIsaPHjyBDihxJsqTJkyhTqlzJsqXLlzBjypxJs6bNmzhz6tzJM2WAnkCD
  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
  JS5zqctZBgQAOw==
}
set pieceImageData(Fantasy2,55) {
  R0lGODlhlAI3AOf/AAABAAEEAAkCAAMGAQgKBg4HBhIJABcHAQ0PDBMNDBYP
  BhsOCCANBBITERYSERUXFB4UDyQTChwWESIVCxsYFywUCRkbGDcUCCwZDSEd
  HCYcFDQXCR0fHTIZCSMeGSodEDgbDiYiITEhFTQhETgfES0jGiQmIzwfDSsl
  IComJUgcC0UfDTsnFz8lFzgoHCssKjMqIFEfCkMlEi8rKjErJU4iCj0vIjUx
  MFglETEzMUorGEYsHlApE1UnETgxLEYwIFkqDjw0KlcuFzc5Nl0tEU8yH1Mx
  Gzw4Nj44MkQ3KGExFV40Gz5APVs3IFY5JU48K0c+NEU/OUQ/PmY1GWI4HWs5
  HGY7IWM9IUZIRU1GQU9GPFVFNEtHRl9CLGVAKW89IFxEM3NBI2tFLmZJMVNO
  TVVOSE9QTldOQ2NLOXhFJ3BJLF9QPnxIKlVXVFxVT3tNLFtWVV9WS3BROYFR
  MWtbSV1fXGRdV3RZQWJeXGdeUoBXOoVWNX1bQX9cPItaOXNjUmVnZGxlXm5l
  WWplZHtiSIpfPI5jP4llRXBramxua3NsZXVsYIlmS3xqWZFmSIdqTpNnQ4Nt
  VJVqS3N1cnpzbHxzZ3hzcoJyYJRvTphzUpB2Wnt9eoV7b4N7dYt6aYF8epx3
  Vpt7WJl8X55+W4OFgouDfYmEg5KDco6EeJ+AY5qEaaOEZqGIaIyOi5yKd5GM
  i5aMgJSNhqOLa6WOc5yUjZaWk5+UiKqSeKSUg6mUf66Yg6qbhKSclZ2fnKKd
  m6edkK+bi6uejLCjkaimpK2mn7CmmbWrnrSspa2vrMKqjrOurbivqcCuncWv
  mby0rbW3tMC1qLy3tsG8ur2/vMW9tsi+sdW7oM69q9a/qdnApNbEs9HGusvI
  xtDHwNzFr+DJss7QzePLtdzOu9XPztrPwtjPyOTPvufSweTWw+DY0Nza2OTZ
  zOfZxuncyejd0OPg3uvg0+rh2u7j1vHm2ezp5/Ho4fHs6vTs5Pjw6PL08Pzz
  7Pr18/n7+P759/3//P///yH+FUNyZWF0ZWQgd2l0aCBUaGUgR0lNUAAh+QQB
  CgD/ACwAAAAAlAI3AAAI/gD/CRxIsKDBgwgTKlzIsKHDhxAjSpxIsaLFixgz
  atzIsaPHjyBDihxJsqTJkyhTqlzJsqXLlzBjypxJs6bNmzhz6tzJs6fPn0CD
  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
}
set pieceImageData(Fantasy2,60) {
  R0lGODlh0AI8AOf/AAABAAEEAAkCAAMGAQgKBg4HBhIJABcHAQ0QDBMNDBYP
  BhsOByENBBIUERYSESYQCR4TDxUXFCQTChwWERsXFiIWDBkaGC0UCSsZDSId
  FyYcEx0fHDgVCjMYCToWBCIeHTgaDjceECwiGTIgFUAbCi8iFSQmIygkIyok
  HzwfDTYiE0ccC0chDj4lFzMpIEMkEissKjkoG04hCi8rKjErJkUrHU8oEj0v
  IVQnEEcsGVglETEzMUMuHkwrFjYyMTgyLFwoDzw0KlkrD1cuFlMwGjg5N0o0
  JE4zH10uEj44Mj04N0U3KGExFV40Gz5APVY6JUU/OVw4IEc/NE49LUQ/PmY1
  GWs5HWc8IllCMU1GQF9BKkdIRlVFM09HPExHRmZAKG89IHNBI2xGLF1MOmdJ
  MVdOQ1NPTU9RTlVPSXhFJ3xIKlVXVGJUQ2xROV5VSntMLHVOMlxWT1tWVYFR
  MXxUN2BcW2lbSl1fXHlXO2RdV3JaQmdeUoVWNYtaOXJjUXphR2VnZIddP4Jf
  QmxlXm9lWmpmZIpfPI5jP2ttaoBoTnNsZolmS3trWHZsYYtnR3JtbJBlR5Nn
  Q5RpS3tzbYJyYHR2c310aHl0c4txVZRvTplzUpJ2WYF6dHt9eoV7b4F8e4t7
  aJ13Vpt7WJp9X4SFgoiDgouDfZ9/XI6EeJSEc6CBZJyFa6OEZqGIaZaMgI2P
  jJqMe5SNhpKNjKSLa5+MdqWOc5eVk5yUjZ+UiKqSeKOUg6qUf66Yg6qbhJ6d
  m6Wdlqedka+bi6uejLCjkaelo7mjjrCmma6mn7Wrnqyuq7qrmbKtrMGqlbau
  p8qxlsWyn7y0rbW3s8C2qb23tru9usG8usi9sM28qsa+t7/Bvti/o9a/qdHG
  ucrIxs/HwNzFr9jHteDJsuPLtdPQztjQydvQw+TPvuDSwOfSwdrY1uXXxODY
  0eTZzOjax+ncyejd0Ovg0+rh2uXj4e7j1vHm2fHo4fTr5PDs6vjw6Pvz6/r0
  8/b49f339vv9+v/7+v///yH+FUNyZWF0ZWQgd2l0aCBUaGUgR0lNUAAh+QQB
  CgD/ACwAAAAA0AI8AAAI/gD/CRxIsKDBgwgTKlzIsKHDhxAjSpxIsaLFixgz
  atzIsaPHjyBDihxJsqTJkyhTqlzJsqXLlzBjypxJs6bNmzhz6tzJs6fPn0CD
  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
  TDYgADs=
}
set pieceImageData(Fantasy2,65) {
  R0lGODlhDANBAOf/AAABAAEEAAgBAAIFAQYIBA0GBAsNCRELCRQLAhkKAx0J
  BRESDxgRChYREBwQCiIRByAUCCcRBhoWFRYYFhwWEScWDy0VChocGR4aGSAa
  FSkYCycbEiQdEx4gHTYYCi0cECMfHjIbCyUgGjwZCiIkISwkGj0eDTQhFjEj
  FyklJCslHzkhEkMeCSYoJUgcCk0hCistKjgqHTAsK0EnGkskEFQhDjUtIz8q
  G0UoFjQuKUkoElIlDzEyMD0vIjUxMFgpE1kqDkswIlIvGTw2MDc5Njs3Nj83
  LVgvFkQ2J0o0I04zH14uEkE6NWIyFWE0HD5APUU+OWU1GFM8K04+Ll05IkVA
  P1g8J0lBNmg3G2U6IEpDPURGQ248H2o+I2ZAJ1ZHNklLSFJJP2FFL05KSVBK
  RG5CJXNAI3dEJnZIKVhRS1JTUXtHKW1NNGNRPWlPOVhTUnNMMF1TSWBTQ3tN
  LH9LLV5XUYBRMGJbVX5UMnJZQX5VOINUM15fXWtdS3pYPWRfXmhfVIdXNmhh
  WoxbOm9lWm1mYINhRoVhQYtgPWhqZ3dmVX9lTG5paHNrZY9kQJBlR3duYpNn
  RJRpS3pzbHhzcotwVHR2c4FzYX50aZVvT5l0U4B7eYJ7dIV7cJ13Vn6AfZZ6
  Xpp6V459bImBe4eCgZ5+W51+YY6EeI6GgKGCZIiKh6OEZpiHdY6Jh5SKfpOM
  haKKaqOMcqaPdZyShpOVkqGSgZmTkpuTjaqTeKqVf6OYjK6Zg6qbhJ2fnKqd
  i6Oenaael6qfk62gjrCjkrClma6moKiqp66pp7Spnb2nkLesoLyrmrWtp7qy
  q7S2s8Oyocmym722r7y3tsG3qsK9vL7AvMm+sda8oc++rcjAucLEwdrBpdnC
  rNDFuN3Gr83MyeDJstTMxdnMudjNwePLteHNvOXQv9/Ux+TWw9rY1uDX0OrV
  xOfZxubbzure0eHj3+bh4O3i1fDk1+/m3/Lp4u3r6fTs5Pbt5vnw6fjz8vvz
  6/z29ff59v/6+fz++////yH+FUNyZWF0ZWQgd2l0aCBUaGUgR0lNUAAh+QQB
  CgD/ACwAAAAADANBAAAI/gD/CRxIsKDBgwgTKlzIsKHDhxAjSpxIsaLFixgz
  atzIsaPHjyBDihxJsqTJkyhTqlzJsqXLlzBjypxJs6bNmzhz6tzJs6fPn0CD
  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
  8AVhMAZlcAZZJSAAADs=
}
set pieceImageData(Fantasy2,70) {
  R0lGODlhSANGAOf/AAABAAEEAAkCAAMGAQgKBg4HBhIJABcHAQ0PDBMNDBYP
  BhoNByAOBBITERYSERUXFBkWFB8UDxwXESUUCyIWDCsUCRkbGB0ZGCoZDTMX
  CCYcEx0fHCMdGCIeHTcaDT8aCiwiGScjIiQlIzgfETweDCokHzIiFjUiEkcc
  C0chDVAeCjAqJS8qKTgoHE0hCTMqIEMlEistKjwoGFMmEE8oEjEyMFglEUYs
  HkMuHjgxLEwrFj8wIkgtGjYyMVkqDj00KlMwGjc5N04yH10tEVgvFko0Izw4
  Nz44MkU3KF0uF2ExFV0zGj5APVs4IVY6JUQ/PkY/OU89LEg/NWY1GWA7H2s5
  HWc8IFZDMkZIRUtGRWQ/KE1HQV9CK09HPG89IGs/I3NBI1xMO05QTVJOTWZJ
  M1VOSFdOQ3hFJ3RHKHFKL3xIKnlLK1VXVFxVT21ROV9VSmRUQlpWVXxOLYFR
  MVxeW35VOGJdXGtcS2ddUmVeV3NbQoVWNX5cQIlZOGRmY3thR4ZdP25lWWxl
  X3RkUoleO41cO2tmZY5jP2ttanVrYHlrWYpmRnFsa3NsZpFmSJNnQ4xpToVs
  UpVqS3pzbX1zaIJyYXd1c5RvTplzUpF2WXp8eYB7eop6aIN8dYZ8cJ13Vpt7
  WJp8X4iDgZ9/W4uDfY2DeISGg5KDcp+AY6OEZp+HaIyOi5GMi5aMgJSMhpuL
  eqOLa6WOc5eVk6OTgp+UiKqSd5yVjqqUf62YgqqbhJyem6Gcm6Scla6bi6ie
  kquejbCjkaWnpKqlo62lnrmjjbCmmsGojbWrnrCurL2smraup7y0rcC1qLa4
  tce0oLy3tru9usG8usi9sM28q8a+t9W7oL/BvtnApNfAqtHGucrIxs/HwNjG
  tNzFr+DJsuPLtdfPyNrPwt3PvdPRz+TPvufSweTWw9/X0Nva1+TZzOfZxunc
  yejd0OXf2uvg0+7j1urk3vDl2PHm2evp5vHo4fTs5Pjv6Prx6vfy8Pvz6/X3
  9Pv19P759/r8+f3//P///yH+FUNyZWF0ZWQgd2l0aCBUaGUgR0lNUAAh+QQB
  CgD/ACwAAAAASANGAAAI/gD/CRxIsKDBgwgTKlzIsKHDhxAjSpxIsaLFixgz
  atzIsaPHjyBDihxJsqTJkyhTqlzJsqXLlzBjypxJs6bNmzhz6tzJs6fPn0CD
  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
  7dm+7d3+7eE+7uV+7um+7u3+7vE+79k6IAAAOw==
}
set pieceImageData(Fantasy2,80) {
  R0lGODlhwANQAOf/AAABAAEEAAkCAAMGAQcKBg4IBhIJABcHAA0PDBMODRYP
  BhoNBhITESEOBBUXFCYRCR8UDyQTChsXFh0XESIWDBkaGCwUCSsZDTcUCCYc
  EyMdGDMYCR4fHSIeHTgaDjceEUAbCiQlIzIhFCwjGigkIyokHz0fDUgcC1Ae
  CjAqJT8lFzIqITgoHCssKk0hCUUkEkEmEy8rKkkjDz0oGFMmD08oE0sqFEgr
  GTEzMFglETcxLDYyMEctH0AxI1kqDkYxIT00KlMwGlcvFk4yH10tETg5N1wt
  Fjw4Nz84MkY3KWExFV40Gj5APUc+NFE7Kls4IVY6JEM/Pk09LkY/OmY1GWI8
  IGs6HWc8IVlCMUZIRV5BK1RFM2Q/KE9GPEtHRU1HQW89IHNBI1xMOk5QTVVO
  SGxHL1dOQ2ZKMlNPTnhFJ3VHJ3BJLXxIKldWVGJUQm5QOHtMLF1WUF9WS4FR
  MVxeXGZcUWJdXGRdV4VVNXxaP3ZdRIJZO3BhT4lZOGVnZGxlXm5lWWplZIle
  O41dO41iPmttanlqWIpmRXVsYJBlQXFta3RtZopnTJBlR4VrUJNnRJVqS3N1
  coNxX31zZ3tzbXl0c5RvT5lzUnt9eoV7b4B8eoN8dYt6ap13Vpd6XZt7WJ9/
  W5KCcYaFg4uEfY6EeJ+BY6OEZqCHaJqKeIyOi5aMgJSNhqOLa5OOjKWOc5yU
  jZ6UiJaWlKmSd6OUg6qUf62YgqeaiaqbhJ6enKSdlqedka6bi6yfjbCjkaem
  pLmjja2mn7CmmbWrnrKsq62vrL6rmMWrjraup7y0rb+1qLa4tce0oby3tru9
  usG7utG6pM28q8a+t7/BvtW8oMq/s9nApNjCq8nHxc/Gv9LHutfGtNzFr+DJ
  suPLtdLQztrPwtjQyeTPvuDSv+bRweTWw9zY1OrVxObYxeXZzOjax+ncyejd
  0Ovg0+Ti4Onh2e7j1vDl2PHm2erp5vHo4e/t6/Ts5Pjv6Prx6vjy8Pvz6/X3
  9Pv19P759/r8+f3//P///yH+FUNyZWF0ZWQgd2l0aCBUaGUgR0lNUAAh+QQB
  CgD/ACwAAAAAwANQAAAI/gD/CRxIsKDBgwgTKlzIsKHDhxAjSpxIsaLFixgz
  atzIsaPHjyBDihxJsqTJkyhTqlzJsqXLlzBjypxJs6bNmzhz6tzJs6fPn0CD
  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
  7MNO7MVu7MfO4gEBADs=
}

################################################################################
# Kingdom Piece set
################################################################################
lappend boardStyles Kingdom
set pieceImageData(Kingdom,25) {
  R0lGODlhLAEZAPYAAAAAAAkJBw0NChAQDBUVEBsbFR0dHh4eICQkHSIiIikpJCwsKTAwJjIy
  LDk5LTU1MDw8Mz4+OEJCNENDO0tLPFBQP0xMQlNTQ1VVSVhYRlpaSl5eUGFhTWRkUmlpVGxs
  WnNzXHh4X3R0YXt7Y319aICAZoSEaomJboaGcIyMcpKSdZSUeZqafKGhf52dgKOjg6amiKio
  hqurirCwjbS0kbq6lb29mcPDnMbGoMvLo87OqNDQptPTqtnZrt3dseLiteXluOrqvO3twPPz
  w/f3yvv7xf39zP7+0v7+2///4///6///8v///szMzAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
  AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
  AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
  AAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAE0ALAAAAAAsARkAAAf+gE2Cg4SFhoeIiYqLjI2O
  j5CRkpOUlZaXmItJm5mWSEdIn0iMRaGfRaChRqihR0WPm0mWoEeWSaGdlaKmpKC3rK3AR0aw
  SLKVRp+VRDUqNUORxklHR0KzNSc8NCw7LItINycnNTI9KyksN+opJzcli0xMTUc3KjfQ8ZJB
  NTcAlEQ3YNyLZsxINU84WPC48YKHim88WLiwAePHCxYvcmiU6A6ePCM5YOSwli+SEHX+JCWh
  weEEBxkuIAW5MfPFDktFRoA4AWLnh0VKTmjgUGLhBBUSYgQpoUEDCQ6JkAjZ4QMcBQ8VZvDw
  oSNILUcAK9C4KQlchAQTaryQqUOIDhn+OiwRSWHCBQoULDxocpHggAsdOBwceDADiIoDClJA
  RSSVBxAkPCwksGDDMQ8hRB4R0eHBBtloI14geRHiBKQcEGSckEBDyDBJTI6YQJBXQgsGQE+o
  iCEBRAYNRYaCSKpihF5D8oKcoHCBYYYgGVjQqEDBxM2SioCAQAAiRkpISFIc6KsbEg8MNVBM
  sOGaWKQlRlZAmCECg4wFmlgoOICBRIcF431AggXjpbDBIfIUsUIEGuhAw34LyHADBhGswEMT
  2CUiBAkQmCDDd7Cs4EENHpxwwWkIIHCBChmAkEIPQVzoSBKGjSCDBzi2MENuKQRhAz88GMFD
  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
  fAiBAAA7
}
set pieceImageData(Kingdom,30) {
  R0lGODlhaAEeAPYAAAAAAAkJBwwMCRERDhUVERYWGRoaFB0dHR8fICQkHCgoHyIiIioqJCws
  KTAwJjMzKzk5LTQ0MDw8Mz4+OEJCNUREO0tLPEtLQlRUQ1VVSVhYRltbSl5eUGFhTmRkUmpq
  VWxsWXNzXHR0YXp6Y35+aICAZoSEaomJboeHcIyMcpKSdZWVeZubfKCgf56egaOjg6amiKio
  hqysiq+vkLGxjrS0kbW1mbm5lb29mMLCnMbGoMvLo8/PqNDQptTUqtnZrtfXsNzcseLiteXl
  uOvrvO7uwPPzw/b2yPj4xv7+zP7+0v//2///5P//6v//8////czMzAAAAAAAAAAAAAAAAAAA
  AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
  AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
  AAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAFAALAAAAABoAR4AAAf+gFCCg4SFhoeIiYqLjI2O
  j5CRkpOUlZaXmJmal09Pm5+DTk5QopFMnU9MUEtOnU5LUKdPTqqTnZ9OTbijoJ9NuqWQsrSr
  rbOwTai1ksGav5pKSURESUqYS0vW0Ek/QdJBREaOSkZDQkNEKkjm4EQy60JCRCyR0eFJSJlJ
  RkY9mUpK7iW5lm1TtHhJigQ5Iq5RkiNE0BlJcaQIumnvIk6jBwkgPyVH9PHzd8kJkhcWLLwg
  YmESEo9IiBTZtOTGhg49QnRoUcMRkxsUKlSg0WFIB6EabpTIIZQCjQ2MsC1RlURGShlEoCiZ
  CktSNRYrZIy4tASJjA0bahAB4RJmkZn+mpboADECCAoRMHo2YqIjw4UNNzwMAXHhQogaI3ps
  uJChBtRFUmElucGBw40hq6ROSrJExguxZG9YuCFaxolJS3Jg7dEhB8drLHTG6KAihAoAjZrE
  sJDDAo1uFGrQoJCDCNDeK1oqUoIkx+8kPiCcOEHhRo4gNHLE9NpDg4YdOcjqgIDgQIQbKlDv
  wEEEyIgdr8m+QDECsQsUt/fWWICgAQ4gQ1yAAAIX7DCEDg0gwMALGECGBA84BKHEDwISiEMO
  QtzQwxGYRQJdCCH0sANZKYAQTQgnmICaCgnkoIIDJvwA0ECVYJODAQ74YEECZ+HGSBMsaMAS
  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
}
set pieceImageData(Kingdom,35) {
  R0lGODlhpAEjAPYAAAAAAAkJBwwMCRERDRUVEBoaFR0dHR8fICQkHCEhISsrIywsKTAwJjMz
  Kzk5LTU1MTw8Mz4+OEJCNUREOktLPFBQP0xMQ1JSQ1RUSVhYRltbS15eUGFhTWNjUmpqVGxs
  WXJyXHh4X3R0YXt7Y35+aYCAZoODa4mJbYeHcIuLcpKSdZWVeZqafKCgf52dgKOjg6amiKio
  hqurirGxjbS0kbq6lb6+mcLCnMjIn8bGoMvLo8/PqNDQptPTqtnZrt3dseLiteXluOvrvPDw
  vu3twPPzw/j4xv39zP7+0v//2///4v//6v//8v///szMzAAAAAAAAAAAAAAAAAAAAAAAAAAA
  AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
  AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
  AAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAE4ALAAAAACkASMAAAf+gE6Cg4SFhoeIiYqLjI2O
  j5CRkpOUlZaXmJmam5ydnp+goaKjpKWmp6ijSKurqZhHq0ews5GysUhHTrCsuLq8R0OVvEif
  tJ7Drpe/rLmQtsxOq0rQu7HBlMieu8dFNyw3RUaZScTGnklGMiU3RzMnOUKRSEEvKyszPgJH
  NfYrNTsD0q1gAcNHB2xGcsDIYSQepyRCavjQ0AlJERwydhgRhwlJEidGWn1CV0OFDiM2WPAI
  Ik+IDBkwbPwQkBAGzBs7aNZ4KeMHB4Q6aPAwQqQTxBs/KG5CYsQEAwkMTgRRWunIxh9HdgCp
  8UlJDgojKtygECIDDgSQlNwoANXBjQn+Ri4gqIDgQo0KQhw8LSBDgqNb5VogGPzCB4BflmDt
  YICjRrNMTFUsSLBgRRAQl46E+4HERxCunpTw2JDig44OKESsTavjwYEDGHBEMNLh9YEONCgQ
  wZAgwYMaExxV+3hExoMEEGQYRlw1SQ8LQR9jSnKDsREcDGqYuNQ0hhAfDU7sABB6B4USHG5U
  WJFBhoC01X3EcNADSBAKK46ooOADCBAHMfjAwAwUNCLLDiqwAIQRQTgQQhAhuFUDECuIZ8QM
  wuAwQgEj4EADeZC1lsBrD+SQAncu1EDEDxa4MF5oPXSwgmkdwPABDQOw1sABBljwAxBEbGBb
  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
  qlWvitWsPjUQADs=
}
set pieceImageData(Kingdom,40) {
  R0lGODlh4AEoAPYAAAAAAAgIBgwMCRERDRUVEBoaFR0dHR8fICMjHCgoHyEhISoqIywsKTAw
  JjMzKzk5LTU1MDw8Mz4+OEJCNUREOkpKO0tLQlNTQ1RUSVhYRltbS15eUGFhTmRkUmpqVGxs
  WnNzXHh4X3R0YXt7Y319aICAZoODaYmJbYeHcIyMcpGRdJWVeZubfKCgf52dgKKig6amiKio
  hqysirGxjrS0kbq6lb29mcPDnMjIn8bGoMvLo8/PqNDQptTUqtnZrt3dseLiteXluOvrvO7u
  wPPzw/f3yfj4xv7+zP7+0v//2v//4v//7P//9v//+8zMzAAAAAAAAAAAAAAAAAAAAAAAAAAA
  AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
  AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
  AAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAE4ALAAAAADgASgAAAf+gE6Cg4SFhoeIiYqLjI2O
  j5CRkpOUlZaXmJmam5ydnp+goaKjpKWmp6ipqqugR0dIR6ygSLCutEiWr7ewTra7sbq0rpq7
  pK7Do6/Isp26vriVwcK9u9PPtJq2scnK3EREr6LhpUhGPkCuQkDglOlC70RBvUTv8EDz9e8m
  mK7fy61GjggBEOqYPyRCQvEqdcRIECFFjhQJUsRIO4H16OEbAk9eQyH0QJ7gVw7ctoJGjAxU
  KOTEhAkn3nHqdizhqCRHUjyYUOOHhgkgfoyYlARIBgdIWdgAcGSFgwdPV9QAgMQp1Aw7Jkjq
  1ksIiwoTWBDpIYirJpwnTtgIoHAIiw3+G1wMGTKT16sidG8ecYEBQ44gHzSUAEJiEpIfH/pi
  eDEViQsLfS3AoEEVBmQLH7JuXYikCIwOHWQQ4VH2HyZYK1zUYPsJCREQC0aMSBDiBwdiRoAY
  uXFkRs8FN4NMkBECRIwKNx7U+EAwUhIfCDScQBAih4kjIBKkTfDhhgkkIBCc0JAAx4PmjY6p
  P8JiQIUKA1j0QOAqoOmLRzRkEPLDZrMiJihwwAEKoBAECLhRxJsNN/wAnChJCLEBDSiYMEMH
  O2hQgwfoPVJUBAYcYEAK1iGBwoAiopDDCUicgCIFOZz3iDbqwbCAiAzIwIMBtRyTiS0ffBDE
  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
  mZ8JmqEpmqNJmqVpmqcKiZqpqZqriZqBAAA7
}
set pieceImageData(Kingdom,45) {
  R0lGODlhHAItAPYAAAAAAAgIBgwMCRERDRUVEBsbFR0dHR8fICMjHCgoHyEhISoqIywsKTAw
  JjMzKzk5LTU1MTw8Mz4+OEJCNUNDO0tLPFBQP0tLQVJSQ1VVSVhYRltbS15eUGFhTWRkUmpq
  VGxsWXJyXHh4X3R0YXp6Y319aICAZoODa4mJbYeHcIyMcZKSdZSUeZubfJ2dgaOjg6amiKio
  hqurirGxjbW1kbm5lb29mcPDnMjIn8bGoMvLo87OqNDQptPTqtnZrtzcseLitebmuOvrvPHx
  vu7uwPPzwvf3yPj4xv7+zP//0f//2v//4szMzAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
  AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
  AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
  AAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAEwALAAAAAAcAi0AAAf+gEyCg4SFhoeIiYqLjI2O
  j5CRkpOUlZaXmJmam5ydnp+goaKjpKWmp6ipqqusra6vsI9ISIS0sbe4ubqHSEm1u8DBhrNJ
  xbPCmsS9ykm2lcTFxrS90dJM0NFIPpvQs86kyt+j2MfImN7Szc2X6MVKx8zRRtfU0tvJ1N6n
  4aazRTcxbhRBcqSUvlRIhLQoQQPJkBkoahTpYakZjRcYYwChASDJjxYvYmD0caMjEJEYbQDB
  gK+Ijhk6Bq4wlUQIDSExABhE4pJGTCRAdoorlaRIDBU3jhix4UIgxWdHbsygMdUmAKBUZ2j9
  kaNjEKo0ZOQIYiFZEiM7avQwYoQFTSH+NoS40AkOyIYBeDcAAUKXk7JrR4oUEYFwRQINCXTI
  SGABQY0ZfSXVfBBggAABNFh0bFEZb4AWOZXQEOD5QY8GkWU1s5VQxIAAAkQIuSFo2dBMvWwM
  qNFiAzgkQUYwUMBghBAhCTz9RWJEMGFUSFpQAEGhBw0KHiRITQ2pZgYFCg4wsLECgBIYChaA
  VwADhnkbw8Fn6OGAeyN0tYukgKDAQQoitNHTyye93ADBDS50QEoSR3iAwAs6vIAACHYp5wMO
  RcyARAx6xYBKMx+AIMQDM5TQwREWrCCDfY7U1AAGPbAwAA046JBECwPM0IMMA7TAgw1J1DAA
  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
}
set pieceImageData(Kingdom,50) {
  R0lGODlhWAIyAPYAAAAAAAgIBgwMCRERDRUVEBoaFB4eHh8fICMjHCgoHyEhISoqIywsKTAw
  JjMzKzk5LTU1MDs7Mz4+OEJCNUNDO0tLPFBQP0xMQlJSQ1VVSVhYRltbS15eUGFhTWRkUmpq
  VWxsWXJyW3h4X3R0YXt7Y35+aICAZoSEbImJbYeHcIyMcpGRdZSUeZqafKCgf52dgKOjg6am
  iKiohqysirGxjrW1kbq6lb29mMPDnMjIn8bGoMvLo87OqdDQptPTqtnZrt3dseHhtebmuOvr
  vPDwv+7uwPPzw/b2yPj4xv7+zP//0P//3P//4P//6v//8f///8zMzAAAAAAAAAAAAAAAAAAA
  AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
  AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
  AAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAFAALAAAAABYAjIAAAf+gFCCg4SFhoeIiYqLjI2O
  j5CRkpOUlZaXmJmam5ydnp+goaKjpKWmp6ipqqusra6vsLGys7S1tre4ubq7tEm+v7yiv8PD
  m8TAUMfFycqgx63Lq8/BzsrImdaC1r7azZ/T0tepv0hI4qdJsL5IQULmSUZCRElE2ElHRkZE
  +kk3yUj6iAgkguQHs3z5CBoJ4WnYu3Sq1pVrES4JkiPnTEF05euIECG/igjBOMQeQoRI/FnE
  dzKJD2Ys8+ED0ZCYko2o1lmkOC4JEBMTJpgIkkTIKGTDDEIT0iHBghZJdlRoUGGHkAGYLJJ4
  wPVBByEhACjhUSGC2QgVeMAQO6SDWa7+JoA4AMDJ1xAVFSqsEGJkRkQkIkQEqUA3Z5IgKzhw
  YEEUyFFuzHw5hlZkBIULMJT44HCBgw8hBLIiUZFhQ4YMI4aAAJDkB4fSpzmoBbBENewMK+QW
  1mS3hQcOL4r0jWhEBQohhA3/eCCgQQMBEX4AWRDKYTIjObBzpFGgRYgFQkA8cPHgww8HmJQY
  sRCA64AEQTyIvSEAQVAEAm60oC1kAfQHAWDwwwK7RdIMPR0AIMAAAHQwhA20gVOTEVwJAQMP
  hgGRwQEcHrBBOxVUR04yR/BwhA6uKFGDBDGkcIEQJWQwQwYknJfVER4YYMABBlAQH204MMDh
  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
  0kw37fTTUEct9dRUV2311VhnrbXPgQAAOw==
}
set pieceImageData(Kingdom,55) {
  R0lGODlhlAI3APYAAAAAAAgIBgwMChERDRUVERoaFB4eHh8fICMjHCgoHyEhISoqIywsKTAw
  JjIyLDk5LTU1MTs7Mz4+OEJCNUREOktLPFBQP0tLQlJSQ1VVSVhYRltbS15eUGFhTWRkUmpq
  VWxsWXJyW3R0YXp6Y319aICAZoSEa4mJbYeHcIuLcpKSdZWVeZqafKCgf52dgaOjg6amiKio
  hqysirGxjbS0kbq6lb29mMPDnMjIn8bGoMvLo87OqNDQptTUqtnZrd3dseLitebmuOvrvO7u
  wPPzw/f3yPj4xv7+zP//0P//2v//4v///8zMzAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
  AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
  AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
  AAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAEwALAAAAACUAjcAAAf+gEyCg4SFhoeIiYqLjI2O
  j5CRkpOUlZaXmJmam5ydnp+goaKjpKWmp6ipqqusra6vsLGys7S1tre4ubq7vL2+tUfBv6vB
  xUzFwp3Iy4PLyM3OyaPGs9SxzMOozNic0dLeR9DRpdbX0q/j2eTLRs7d4EDH4ETy3jai6ejP
  +vnqocVIgrXjlgnckSDyAjorUi/avX/uYBFkFWxIjhk5hpxTtc8cEBUjZBA5ImTGCRlCiMjY
  FIxHDBkwZegYsuEYERoxYdYYIgNAMB05ZfAIMgEAqGBEdtTQMZKeq2BBbATxQeBpxR02dmg0
  0qNVR4lIfrhQQaPIkSI2WOwsslJTsB7+NGrUoEGjB81jQ2zElVvjBk8AAeHOnduDqNFPFXvc
  6NFUn5AbQnwUsHqDggAAASjgONJ1nTFkQ6oNwUCAwQAWR04MWDAAhJARhzEFAwGgdu0PQh74
  9IHAdu0EPlIAUHLEg+0AAEL8WBC7UsdgPzZcHrABCBEW4sKZCsYiQIscBQR4PaKDAwMFDDzo
  4Lz9GTIh1YiAgFABAowjKyBQgEBiSIjmlgRjggLoEUiCEBEA9sMFBJ53gAQ/CEfcCA0SeMIP
  CQA4yXNHACECAww4IEIQ12V3SjAyKDCDDuFRdAQPCRDQQQkdELBADz88sM5I8B0xhAo6CBGC
  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
  GREIADs=
}
set pieceImageData(Kingdom,60) {
  R0lGODlh0AI8APYAAAAAAAgIBgwMCRERDRUVERoaFR4eHR8fICMjHCgoHyEhISsrIywsKjAw
  JjMzKzk5LTU1MDs7Mz4+OEJCNUREOktLPFBQP0xMQlJSQ1VVSVhYRltbSl5eUGFhTWRkUmpq
  VWxsWXJyXXh4X3R0YXp6Y319aICAZoSEa4mJbYeHcIyMcpKSdZWVeZubfKCgf52dgKOjg6am
  iKiohqurirGxjrW1kbm5lL29mcLCnMjIn8bGoMvLo87OqdDQptPTqtnZrd3dseLitebmuOvr
  vPDwv+7uwPPzw/j4xv7+zP7+0P//2v//4f//6v//8f///8zMzAAAAAAAAAAAAAAAAAAAAAAA
  AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
  AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
  AAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAE8ALAAAAADQAjwAAAf+gE+Cg4SFhoeIiYqLjI2O
  j5CRkpOUlZaXmJmam5ydnp+goaKjpKWmp6ipqqusra6vsLGys7S1tre4ubq7vL2+v8DBwsOf
  SEjEyMnKy4jGzM/QjcbT09Gk1NjYoNnUgtzaT9/Optm25bTf1qPiSEnVxcZH59Py3N7ip+fo
  4LLUR/XjYgW8ZWxIECEAiQgZYoyHp3hHhhgZMuTfkQfhkBjZuJGiPBxP3B2ZWHHjyA7X6AE8
  sg+JPB8AZvkDeKxfTVzGjASpOM2IkCLGfDx0OTKikX9GImQcedTkP5BK4jU9GhHlOnr+WgaN
  KbAhCQwVSvAwBlLVwG4EkeyoUABBCSP+SG5USPDAhVqum4zJmFCBAoUKFXD8KBBuSIgJiP9S
  CDHkBAAnSHD0nTyBxg8GeLch+XFCgwYUQZAMQTfkw4chLDK7muYjhWkVPlzuWHX2nbkkPzxE
  oJDiqA4OFzLMOLJDNSZjNDgoV+5hBxAC4YykWL48RREUj5H8ps7hxmXjnYwFYQECBAshokmX
  KIEaPG0kMhAAmA8AwYy7qbQVPCojbYcBIWAgQA1GPIAACA8U8EMN7lVijGMBRAhAADAEMQAA
  okUAgAAcBgDABEOYkJ0M8wUgwHwrCCGfJvMgwcMD9AHwgA9GrHAPWvmIhwACQcBQARNd1SDB
  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
}
set pieceImageData(Kingdom,65) {
  R0lGODlhDANBAPYAAAAAAAgIBgwMCRERDRUVEBoaFB4eHh8fICMjHCgoHyEhISoqJCsrKTAw
  JjMzKjo6LjU1MTw8Mz4+OEJCNUREO0pKO1BQP0xMQlNTQ1VVSVhYRltbS15eUGFhTWRkUmdn
  WGpqVWxsWXNzXHh4X3V1YXp6Y35+aICAZoODa4mJbYaGcIuLcZKSdJWVeZqafKCgf52dgKKi
  g6amiKiohqurirGxjbW1kbq6lb29mMLCnMjIn8bGoMvLo87OqNDQptTUqtnZrt3dseLitebm
  uOvrvPDwv+7uwPPzw/f3yPj4xv7+zP7+0P//3P//4///7MzMzAAAAAAAAAAAAAAAAAAAAAAA
  AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
  AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
  AAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAE8ALAAAAAAMA0EAAAf+gE+Cg4SFhoeIiYqLjI2O
  j5CRkpOUlZaXmJmam5ydnp+goaKjpKWmp6ipqqusra6vsLGys7S1tre4ubq7vL2+v8DBwsPE
  xcbHyMnKy8zNzsVK0dHPrdLSgtbTotncg9zZ3t/XquC75bnf1KvdT+yh1ktL59LySvXa7eL4
  qOfo1rr61PHTl+3IO3js6N2zRgSbviQyBqbDxa0hRYXjBJaiJy0JQiUGQWWLVw6jPZJKjDiM
  Ji9evRgSUe6rxVGJRVvSiOy4oYNIxln/eEnrkWJEjCHRitRYESOIzQIilQipQZUqDRxHfgDI
  14NGVas8kqzYChLHV69DhjzYujHakR7+OXwcUZJkyEUhOYYkEcGWpj0jPuL6pIvzpz8lQFqs
  qGHELQ4YNIQ8jToEx43Ll3Uk8UFWyQ8bNyyHvvEDydh2R3aAFo0j7VpT0pD80AHEoxK7t6IN
  4SFkb1+gdGdEEBBAwAMaSZLocBU0n26hSnYsCDAgQIgkR0AIqO4AyBAHUWMQDwAgQIAFQHKQ
  TdLBfPnyATwc4dsuSALy5s1HRvD7oJIcFVQ3wAU63FZBbkqUAEAJRVTQXyzRJGFDBgxUuIEN
  SiCRA3MZWYMbQEr4QMECDCxgQnImVMgABkF8F1UNKjKgwAIU4LVeCSSWuMCMJcy31RJBXLAA
  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
}
set pieceImageData(Kingdom,70) {
  R0lGODlhSANGAPYAAAAAAAgIBgwMCRERDRUVERoaFR4eHh8fICMjHCgoHyEhISoqJCwsKTAw
  JjMzKzk5LTU1MDs7Mz4+OEJCNUREOktLPFBQP0xMQlJSQlRUSVhYRltbS15eUGFhTWRkUmdn
  WGpqVWxsWnNzXHh4X3R0YXt7Y35+aICAZoODaomJbYeHcIyMcpKSdZSUeZqafKCgf52dgaOj
  g6amiKiohqysirGxjrS0kbq6lb29mcLCnMjIn8bGoMvLo8/PqNDQptTUqtnZrd3dseLitebm
  uOvrvPDwv+7uwPPzw/b2yPj4xv7+zP7+0P//2///4f///8zMzAAAAAAAAAAAAAAAAAAAAAAA
  AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
  AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
  AAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAE8ALAAAAABIA0YAAAf+gE+Cg4SFhoeIiYqLjI2O
  j5CRkpOUlZaXmJmam5ydnp+goaKjpKWmp6ipqqusra6vsLGys7S1tre4ubq7vL2+v8DBwsPE
  xcbHyMnKy8zNzs/Q0dLTr0rWSoTX1Nvc3cPX2IPa3uTk4ODlqufr56Xs7U/v50uC8uOr77/r
  +uzpqfb7SAEMN1AJvXgAW+XzFXDXuSRJ0PEKJ+zakCBCjiiJqKTIkCHWjlQYde1IkSMoUUYE
  AgBhkpQmU0Kk0dLaS5goO2LAJ6/XuiITJoI7wjHkRGLXiggRgkRJUyVHiBAJOVJUSZhIiCph
  6TIrTq00XX7VWGSnOnBFKepadySow43+OUZo0FAiR8QkayUCs0YjQgEEIIRYs1FhwYMSQ5LE
  IKnEBwYMFTBYuFAhhRIXNZXMkBwZsmQaR0LUTJIicoULFixo+BFkQUtU13yk2LAhxY+NP4QK
  AREYSIHXuK4l6bEiRIgVPUKmyAVvrxIbGSJIMCFYCQ4PFzCsIKKY8Y8QHjx8EO/BxeXMN8iL
  /zD+xpEPmV2MZw/iQwggrYGbuhakBQkSLQSBm24mIPbDb3kVcQIBADQIAAEpEFVDLPCcU5Zz
  PyAgQAUOBDCCEhkKEAECAaCgxAn6eWLNDQE46CAGSWCGEAouuohCEh2MhkGNAAiQQxAIpKhJ
  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
  3/8O+MALfvCE13MgAAA7
}
set pieceImageData(Kingdom,75) {
  R0lGODlhhANLAPYAAAAAAAgIBgwMCRERDRYWERkZFB0dHR8fICMjGygoHyEhISoqJCsrKTAw
  JjMzKzk5LTU1MTs7Mz4+OEJCNUNDOktLPFBQP0xMQlNTQ1VVSVhYRltbTF5eUGFhTWRkUmpq
  VWxsWXJyXHh4X3R0YXt7Y35+aICAZoODa4mJboeHcIyMcpKSdZSUeZubfKCgf52dgKKigqam
  iKiohqysi7GxjbS0kbq6lb29mMLCnMjIn8bGoMvLo9DQptTUqtjYrdXVsN3dseLitebmuOvr
  vPDwv+7uwPT0w/f3yPj4xv7+zP7+0P//4v//9P///szMzAAAAAAAAAAAAAAAAAAAAAAAAAAA
  AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
  AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
  AAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAE4ALAAAAACEA0sAAAf+gE6Cg4SFhoeIiYqLjI2O
  j5CRkpOUlZaXmJmam5ydnp+goaKjpKWmp6ipqqusra6vsLGys7S1tre4ubq7vL2+v8DBwsPE
  xcbHyMnKy8zNzs/Q0dLT1NXWrUlJ19vc3d6D2d/i45HZ5uHkr+fZSk7r6Kfv74Ty8+D15rHy
  xev89unYzinRtg8Vvnz3DmpLiE/fP2H9IAqMCDBVvSH14ilMMkTQwYFJkPjwqBAJClcKJZ5D
  ojJjRYtJlAyUydFlqXogs3V0JzBnTiAkDyJRgXLiuZbZjAQ7J2THjR0Yk/46aiwbkhsmRLQI
  Ym4IDRUtdiBJMvImxxs1bNRIm5YrCgD+PIWoncvWhhAjIuBmAzLXBg21N4wEcQB31TkiPXL0
  IGJ1xtIkQHYASVKjsK9zQ3ro8BGV41SE/o7oWKEihhBzRW68iNEDiUhTSXXguDG79um3PIfg
  mC2bNu0hQ/LGrV37qWDCrDBH9mGk8eMgPbjasMzLHBEWDwYIGPCgBWMjK2pRDZotvL8WBAAA
  CFDhtJANAQIAKOAiyQ7qobLtSCCgv/8BLSQBQgA8zUCAfwgOMIMRGuilRAvaIShAAj74kAB+
  GiFBQwUHElABDfothcQGAmyQRAvqXaYTDBkwwAAEGcDQXBEyiAcaT+ac5I8MECigwAIeCKHE
  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
}
set pieceImageData(Kingdom,80) {
  R0lGODlhwANQAPYAAAAAAAgIBgwMCRERDRUVEBoaFB4eHh8fICMjGygoHyEhISoqIywsKTAw
  JjMzKjk5LTU1MDw8Mz4+OEJCNUREOktLPFBQP0xMQlNTQ1VVSVhYRltbS15eUGFhTWRkUmpq
  VWxsWnJyXHh4X3R0YXt7Y319aICAZoODaomJbYeHcIyMcpKSdZSUeZubfKCgf52dgKOjg6am
  iKiohqysiq+vkLGxjbS0kbq6lb29mMPDnMjIn8bGoMvLo8/PqNDQptTUqtnZrt3dseLitebm
  uOvrvPDwv+7uwPPzwvX1yPj4xv7+zP//0P//2v//4f///8zMzAAAAAAAAAAAAAAAAAAAAAAA
  AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
  AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
  AAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAE8ALAAAAADAA1AAAAf+gE+Cg4SFhoeIiYqLjI2O
  j5CRkpOUlZaXmJmam5ydnp+goaKjpKWmp6ipqqusra6vsLGys7S1tre4ubq7vL2+v8DBwsPE
  xcbHyMnKy8zNzs/Q0dLT1NXW19jZ2tvc3d7f4OHUSuTl4rfl6YPp5Kzs7+3r8O+E8+y19Mn5
  yPvns/Dy1K2yJ1AQwYJPDsb7d09fQ2ME/clS2O8URSUGL2JMSJHhvGMfIdqTGEujOVUXM6bk
  qNAjQJEVg7FLkuQhyYHkkgwBAuSIkprkjgwZgoTckFTljihduvTnCgAskTBlWvTI06hTlRYl
  UqEkwSQw082AOuwdTXZGbrrLSSSIEJ/+QJcIJQL0KKpyUqUuRVI0ydWkR/jy3avEKlTAegXT
  5OrVHthi8MYSw3uDRIcOJnD4VIJEmE1+hVE4KIBgQ4+cMjA0eOCBhxIiHe4qGRJCg+3bGj4A
  SVLhsJIgH3Dj1l1Eg28gIITbDlEEyAKyrdL5QPHBA4rThWtAVvIDRAgfST5Al0kOyQ4VI0ao
  2FH0tWeEoI28uABBAogfS8jZ+HAhQ4kfr8Vm0WspeAACCCMcCEIJQiDRW0JLCFGCghQuGMQR
  xnEkIYUJepACEs6Nh9NPP7RQAgktAJjddkGkUAIQSHggoi/lBNHBAADkCMAAHwihRBEt4LIP
  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
}

####################
# Leipzig:

lappend boardStyles Leipzig

set pieceImageData(Leipzig,25) {
  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
}

set pieceImageData(Leipzig,30) {
  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
  DyQAADs=
}

set pieceImageData(Leipzig,35) {
  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
}

set pieceImageData(Leipzig,40) {
  R0lGODlh4AEoAMIAAH9/f7+/vwAAAD8/P////////////////yH5BAEKAAcALAAAAADgASgA
  AAP+eLrc/jDKSau9OOvNu/9gKI5kaZ5oqq5s675wLM8pENC4FgC8vey9mwLIE4YCxlzJp2xO
  iMwD1DgdIZ1WgVaQxHYG2tvWA9gKAIvyFq1Qa9mggXzgBQXM3boGzD2MO25naWZwgXAffHR6
  HQIDBARgi4wEPY48gAKPgm0Aj5dtmQSbHwGOopIcZlqoG2tuhxmGg2uzb0dmrLGhmnkkUSty
  XKJlvRZlmgOVnZTJPGCasBylmiqBtifWfTXFJnwBomGYW80AfFrk5qMed38o2dEid4+8KpEt
  at/XHMfghJ6qodRd2NFgjqIf3DSUMaWvBDs89QS4wAcO3oVsADPS0gH+K1GDKyKIhRFIotEj
  eyb6NBqQMASYb2BsHNzAb57NmzhJUkgmp8EqBjxnkuEi547FEABRqGzUMk5Gobp6SJ1KlYfO
  CR4Z/FyQFcRCJDFrEFIakx3LE3dMnWTZc98uSlWlfoMWa5nQrQd4nAyZScswsRtTAjxr4qEZ
  SI0w4Vy8+GqEQD4l1pLs1W9FsXQLZ2KYqCmGtASAfJOnTaHG06qOQph2SitlKQzrgkkm5Gup
  TTtm/3IbmIRhv199a3T00q1V1GaaOV6NyzUDw7IbMSFWFHc56Z4nnPmneZmm0HxUfzbJLJmn
  Zl/OUUVCtSsG9+ySuN/5dIf06zKffkjqMOP+6LC3EOIGS8thhdxpUFUAXzhcnfNefe/cNthQ
  NhWYAWiMuZGdBM940sM8yby2hzCM3ZRWBWYxUMYhahwCoAKzFYNceGqkk5E4Y2Ux3GgMemCj
  JmugtIE5cUk1DooODsJiQy8eECMEAsJ1zhs1UillOxeeAUVpIJBX4kMbPnDHXHDpBaKIewQz
  Y1sUCEOYFHhJ5ZoR5YSGppP+PGJfGHquQWYgCVLw2xZhaoecXVzqABCQa9z5XomLBeoAREPE
  2VCPkDmQSKR8AqmWTfNZYOORLlnyIWPeKNbPcaH0QIZaxPTpXTIWtHoIpq6C8pqZaBpG5jy3
  VfgpsJQ+qJ9LVA7+eo6sODbjYXgWSlCOVIiZNO20tfaGqT5qqNjcc1v0qR4kn+o1II89GjOt
  TdfaoWW4kKY65DJvfUdJtBGwxO6+wErqk1X/HiQnjGU81wxUr5SoL3glvhKdKuiR0ilGhNpZ
  aINv4CRLeod1nFy2ePmRmK5w8AFukt5aO5gcoKqJR7XiiUlinxc/wHIpNkBqZ7oXbAfXwWb+
  BYh3kFTIbsxDWDVTiFw5U2k5QJ0BjxuQXjtzYw1ZoGyiHHRG8WH31pycmc64MpTHfqWmtdJR
  U5ZVig1+0kCL/fgnrkb34qsV0Sc5+t6wkd5UYytEU0tszXsfdzCVBWcwWxq5Si3ZwHj+Sko1
  pGCX2BvINyJyIBfJrdXKonUT+sEyc4mmpycjCnxNcy02aHnG4+yMYN/AZb0T4KJLw7LOouAk
  LwZBl1m43+qKotbviMGVZVvl3KGA5NPjPESTc8MrLpmZx1eh7gYi2IGEB5beyZimqcLot/vc
  TCiY5CJ9siJuTP/HRuwcRXe4SGz9EhL9gNl4fmUT9CmKdxrrxFsGp4ujFa9xQyvaPIqXCbn1
  zHqkEQM1jtGHUkgvAg9hF09ytobQGMU88zDdQA5Us609RRR7CgWbLkK6zonDMKwCnd4WQAsw
  iWwVGoJTyD4SrmUdIx+hy0cn+NCPMNWkMfIDFwKFZ4N6qXD+hSJEITJOp8A/eUceFkyevipI
  h4A4SYEMC6OmJmaelcAMHJZYGANpeChFfY5KfSmhAVeovtKNTBzVktyywDcBDfWjjGMwh+3E
  k45lEIM9ArKPIz9GPL4JLoqVmqKJQMe38Ozhi0U4nMRadJ37vIFrgspEWgJCHiY2EYZPyJjy
  TNWJFhFhlrgr1Nc2l0rUGIY4SAgdJDAJo88h7gc5g0vqzLSDi/3yjqpoCQ4h6QxDSK5/gdCl
  JUFFTH5YslwlFByWtKbJGbZvgiQyCoiIWT2YjUo9y/pg+E4SvA+R8kMsOR/K6Iiabp5jVFXU
  3qC4k6UZeUU5S1xWeGilAWieRkH+eHCE5AIxDA7+0jSYI+Z2tCirUr4BcPXbA5kASLM4/Kpw
  BfTXYwSUzAL2gJKxtFYRysGTf8qhEjDhWQV2ScgIKHRlYMvPy1rjOOQcE2NFTCqpdMG4qnlU
  pZUiFFuqaE2jeLBYKySgKDEgtWEZJQgx2eZD2Ek+VjGUi6Ay2gTZmZerAe888ovPKl1hpHFw
  IT4bcOEVsxVIlspkcanJzHgsaZQQWKNu5qOJJjOqtXHYiCoQMwfiXoKTEznOO7OaiTww11MJ
  +OwmyMuA1GpUttGG1rNvbUyYxrHNynr0mO9c6gXSEaJ96tVnZ+VqDgEWEk/oKZShYV0qUpuT
  1Y4LeLn+2euITvrHAZLLTkJZmOb22bNEJOK0yfMS856hxlpplSqNEW29PGQ40GKXQ8PJKx7g
  hlSNOBKqDxjtVM5LAZraLph8umkqaplDgNiTvvZbDHhzAmAo2bB1dxUI86Y7REFJ1BQv6a5C
  lng0o0m4TTbwKIIyXOBnJHdGJISvofgzJD5lLbZ5guAKaxkTZrDVAfgQEB4661mHqqKoodHw
  cEIssSmg0hhT6sKCGVzgvMTWnPvo4lqJ5bwSE6LF96qtbJHk3vNo5KhCBMgxF1Kcts2IoMTz
  GUktezq/EGlAl3FykHy2EGuI+AcIAstpjqpOcR61CFJMLftq1VJ2FdlmZ1D+TyJKuZBUMMVc
  bN5OEUwm3m8ASs56FJJ650yGX9y2j0S9YCVGK08fJbOZv13mmyOTT31O0kMSaqiWzqUnIuF3
  HV66SZdvoVUiN7TWJ7mzlXR2HHYyBTE6lo5J2KFqKa+pwXz0pY6gmUJVK1scgM1IaX2tr5iM
  KkSOILZoqx1ZiMl5fLEW3o+zhGvG7HmnjNv0i0HR2qrtMMs2Zqc5aNOwAYHbmAFyaLOZ6t6h
  kKNI7Xn3oOLi3xHZmLorXCxisBwr4uYNeaJ5AJd1EnEHyxfgkH1TtpxVb0Y3VI5FOtO978jw
  g+8C4niGcY4+kvIndMjhyCiUnyAVQ0NLp2rmYIT+wvs2lHLHq8H2WVw0zJi9xWlc5SZfObp9
  Xtl3t5VH/5YKZQs7Ooee7eD0EtM7JjXOtnpbWuoJ9mCmHWZhlJalO2NnjXL8jpx5EqPEdXql
  mK6zXv3az2xYl4vZbaJZw7jdb70woOlewOaK6q4KZwmZy+7QF1+6n5mOar+NfFP9ev3Kj4k6
  xtuDybKQvNBF3cyBJGp4PjtcxbqFeU40taJBg6eE7juHo+d9BssBHniCd0D+6L4nZ/4TeGoS
  m8ltnvSuG/t2LOPpRx9ze15jMi0o7rbvA/05fMDd4eNeqepXr3LaUJ5opZjDSfWbXNUUT/W5
  130jq5IcxJXVkmatmfKlMc/v4je4zTcINk1vOnYp4Afs9idw0TcY7jeAX5c+WIeAARhfCGMj
  igBQawSA9sdWH7ZjWOZ/0ed9vJGA9Wd/DAhjDlhMalMQyDN/dcQRGbgbeSV2rHVMULB5csER
  MLh5YlJI0ZB7CfGCMzgVF+h/KlgYLWcHO8iDMjiEcVGD0nKD4pGDRlgVPVhxKgCFuTCFVFiF
  VniFWJiFWriFXNiFXviFYJgAADs=
}

set pieceImageData(Leipzig,45) {
  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
  WZcYkAAAOw==
}

set pieceImageData(Leipzig,50) {
  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
}

set pieceImageData(Leipzig,55) {
  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
  +ru//Nu//vu/ABzAAjzABJwCCQAAOw==
}

set pieceImageData(Leipzig,60) {
  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
  0T+QAAA7
}

set pieceImageData(Leipzig,65) {
  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
  gB7ogk7nCQAAOw==
}

set pieceImageData(Leipzig,70) {
  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
  P/zEX/zGf/y8nwAAOw==
}

set pieceImageData(Leipzig,80) {
  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
  9r0vfvOr3/3yt7/+/S+A7xsQADs=
}



################################################################################
#  Merida
################################################################################
lappend boardStyles Merida

set pieceImageData(Merida,25) {
  R0lGODlhLAEZAMIAAL+/v39/fz8/PwAAAP///////////////yH5BAEKAAcALAAAAAAsARkA
  AAP+eLrc/jDKSau9OOvNu/9gKI5kaZ5oqmJAAGTCq8heS1etqwT8zt+P1kIwECx0mcHHBqMB
  N8xLTsYL+JARoYJo3D0pyk5AMLZeikaAoNshsytls1sxKEvU4x3BXH9TWnVfcAOEZhaEaUUf
  hGEWAYV0hJF1d4iTl1KPWEkEnY0VAwRqoWSbGAIEfhM8BIwBe4x7hgujAGqtW3kHpLZFgrSa
  vxOMkmeIrqbGnxSPxM6uDgCEvcVck9TCB4DJh524Fy5rr1Vr2Q+aGKze6949DaE9jzSN0las
  yxD4GM7phcjlGtCBe0Zw1iR7A+bRotRMnwOHjl6RkbKGHYBOeFigigH+rlSVjzwmNqjlY0Ej
  d9I4TrDGoaHBSkUaxhAl0oK0aeBesWPnjsFNKoZOmvlJgWXAhLBeQpipc2cqpUFQdVL5h4zT
  TmMEIdElkJI2qFoOzAzL7ZwzqA64EHE2s+aEm4zMzfAIkpxWKl26DgVraKyhsg3GsHMbIVSR
  q57MVVy35oK4uo0jcNVR5aucl/V41AnlSZPmbA2JoWVQJxVBpAmLElQVYfFg1kfypkZXL1e0
  OpoftWrlWd4wpxCB/VjXFCNsWlJ3T5VLB/gqhkI2HnCB0OAt4qXlDRZ2OviMhKE3I6L5llir
  uGfqPnpeXawidAKRi2LVO7uLVNydr7y4kzP+Y2F+BTLfGfplsd4rShi2yx67mDKTRRvxt44a
  EnSnGkHnFYKfBGslt9Zo75xWnhLN7CIJJDgxEMNa09wSA1yBHCeWhMatUpw3LeykSz7r+PcN
  KAW2hsceLtIXw0s+EqdOfxyu9txqoaGy4wPOZFgMKCIOE9M0rhSy1kNWTlMFjIT8GARSGKWW
  RXLY0ehNcA/ugSOIpAXJYzlquEFGnmY255Q0br4JkzPCkEkMi7H02QCiodFpUpYVHlMEIx0y
  AiaiviT0DCre6dbZfsX1Bhxa121HIJPDuIDGlqv24sCS7CTZDojhgYgpMs8gSGp3zJlIEBjd
  /RqYqlUadqgsa97+mFVhpYoUp5KVgKRmN6hKEAdiISmFJka53YejjKNs+kum0Lh3FrJZlIbV
  tFgKay0ykJX7Ti8e7UZOKBQy+ydEUtmiUqk80SphWDjw+taRH+E2JlWLcqFeSGhoaeFSa6yh
  pqH2rUJGH47KtxPDZyLWoyAV5dDtcJEtFei3EOBx5Hcrw5JqwhQhBnJae/45hoxs2rxSsIqc
  udlQp43jncIhSQF0NhsHO2VaQFvCocipGBiZGjHLLBlddrQbrI0Pg2Rt2GJHCrSBxWCs4XqS
  PUwtYp0+C+FoWSGWUdtU9/SbyGy3PAalgL1DddywzkpYYKU4le27UXfstNZ+s7jnIVH6a3wv
  IuTQ7ZHkmY+dt6Ny67iMyS5gndCLH31x8sO4tU06SDlYa0vYszMONOjBSjl66qZjTbrqvbGu
  N+Jjzrn41sVzezwEhevoqKyiMyAYVj8EU4U3hyNNdt9Qp069ZjJi/vCXkkXtlcRFQz6d+bk+
  VAjZli41zsN7hD+/euq/yjVkz2//d8MxCYkRHvO3lJHGf1XgV86cZ8CHNG9WwQlP0bwGJSIs
  ykm3ClqI2Mcv84WPfWAjW0QQOBKfYCEKMzgHAiszNojRBQ6aydXwVLi9EfqvhMBwwiaAt0Ja
  3euFzIjhWWa4giIa8YhITKISl8jEJjrxiVCM4gYSAAA7
}

set pieceImageData(Merida,30) {
  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
}

set pieceImageData(Merida,35) {
  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
}

set pieceImageData(Merida,40) {
  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
}

set pieceImageData(Merida,45) {
  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
}

set pieceImageData(Merida,50) {
  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
  mZktkAAAOw==
}

set pieceImageData(Merida,55) {
  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
  q7iaq7q6q7yKAQkAADs=
}

set pieceImageData(Merida,60) {
  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
  O7u0W7u2e7sfkAAAOw==
}

set pieceImageData(Merida,65) {
  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}

set pieceImageData(Merida,70) {
  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
}

set pieceImageData(Merida,75) {
  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
}
set pieceImageData(Merida,80) {
  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
  i7NYi7eYi7vYi78YjMNYjLU4CAAAOw==
}

####################
# Merida1:
if { $png_image_support } {
  lappend boardStyles Merida1
  set pieceImageData(Merida1,25) {
    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
  }
  set pieceImageData(Merida1,30) {
    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
  }
  set pieceImageData(Merida1,35) {
    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
  }
  set pieceImageData(Merida1,40) {
    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
    jDHGC4K/AYZGbSySs6vgAAAAAElFTkSuQmCC
  }
  set pieceImageData(Merida1,45) {
    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
  }
  set pieceImageData(Merida1,50) {
    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
    nAmNRoMVK1bgl19+aZaRkTHdaDTWiCujrKzMTrNTWV8pFIrAoqIiGeoQxlFFugIISUlJwSOW
    8LcD0ExwDupdxowZgzfeeIN54YUXXs7Jya10JF0AACAASURBVPlnUFCQ57hx4+Du7v7YOuv1
    11/Hn3/+KTl79uz//fXXX/revXuvJSLT4cOHHTJ2JyenM2azeWN2dva85ORkzkYJk5WVhezs
    bOTm5kKr1dr1UNXGMAxkMtk9zabfGjVqBG9vb/j6+kKj0eDGjRsoKCjQy2Syf4eHh988c+ZM
    bR9BL0SNUsrKyt5fuXLl80lJSVx0dDRSU1ORlpaG7OxsaLVau7N3vyjwP//5T7vBaHNwRSIR
    xGIxNBoNvL29ERgYiNDQUCQnJ+P777+36vX640Ik/NeHBUhqYmB5AngvKCjIY/HixVZ/f/9a
    A+V9fX2ZDz/80JqUlOSekpLynpC2yKlNn1u2bNE3adJkY1pa2gvvvvuu26JFixAVFYWLFy/i
    3//+N1566SXk5+dj3bp1kEgkP7Zt23bN5cuXzcnJyZg+fTqWLVuG4ODgnllZWUvVarXH/Pnz
    UYVZ+7FFLBZDpVLZIliuKSkpYgd9/04A+oWHh0vUajWOHz+OvLw8lJeXQ6/X29OFKpUKPj4+
    aNq0Kdzd3RvduXOnj/DurfWprLp3746ff/45+ubNm6tlMlnX+fPnY/z48faoSE2kXbt20Gg0
    ePfdd6OysrI+DwkJmdSoUaNDDvLAreABmK9dunSp7csvv4y33nrLHqr28PCASqWCSCSyR6ps
    H3PlkHvltKHFYoHZbEZpaSny8vKQnZ2Nq1ev4vfff8fPP/8MItoH4GAdP0eRYOi8QkTto6Ki
    Hotr5lGdDDc3N0ilUps3fB38UT+OMq4Y8IczD0XdHh7NABgE4Bz4o3Nq9c20bNmy/M6dO7t0
    Ol03g8EgsXFX+fj4YPbs2dDr9SgqKrJtkKfCwsI+SEtLy+/duzeKi4vx+eefw9/fP+T69euf
    lJSUxNR45xI2UZu+skU2iMjz1q1bEgcZWM4AXnV1dZVERETA398fnp6eUKlUd0XcS0tLkZOT
    g7S0NFy7dq1RRUVFX/CQiHrVV6NHj8aECROYQYMGvZqenv6pwWAIMpvNWL9+Pb788svHX0gM
    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
  }
  set pieceImageData(Merida1,55) {
    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
  }
  set pieceImageData(Merida1,60) {
    iVBORw0KGgoAAAANSUhEUgAAAtAAAAA7CAYAAABSS730AAAABmJLR0QA/wD/AP+gvaeTAAAA
    CXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH2AUBCw4UyunK5QAAIABJREFUeNrsXWd4VNXW
    fs+Znt57JYWEkgQSCKEmEEIHJUiRqiJCABGuCtgQKZcqerEC6kVRVPQiihSpKiUQajCUUEJJ
    L5OZZCaZvr4f58wQQhJKCoEv7/OcBzKz57S999prv6sBLWhBC1rQgha0oAUtaEELWtCCFrSg
    BS1oQQta0IIWtKAFLWhBC1rQgha0oAUtaMHjgYULF2L16tUtL6IFLWhBC1rQgha04P85mJZX
    cH8YPXo0SkpKYGtri4iICLz77rstL+UJwIQJEyCXy6HVasEwd04HIoJUKoWXlxc+//xzy+dD
    hw6FRqOp9Zwsy2LXrl13jJ3y8nLo9fq72hIRxGIx3N3d8eWXXz4ur00IgAAY/5/JSWqZMc0T
    U6ZMgUajgUAgwFdffdXyQlrQghY0yULYgvuARCJxtLOzk33xxRd5kZGR1L9/f+zcufMupcuM
    lStX4tChQ1CpVNi3b1/LC2ymuHXrFk6dOgWlUlnj9w4ODujbt+8dnx07dgwFBQX3fY1r167h
    woULKC8vr/F7Kysr9O7d+3F4Xb4AhgPoCEAD4E8A2wGUPcFDRArgRV6JXsc/dwuaGdzd3QVj
    x46lXr16mfr06YNWrVph/fr1df7m2WefRVFREfbs2dPyApspnnvuOSiVyhrJBwAQi8Xw9PTE
    Rx99dAdhoVar6yQ4tm3bdgeJolKpar2GUCiEm5vbHSRKM4UdgHgAkQD0AI4BOAJA+6RPfwAs
    gLwnXYEW8A/rzP8tB1AAwNDce+jChQtdc3Jy5nXo0GG/u7v71p49e/4THBxsGDZs2B2TEQDS
    0tIQFxeHyZMn2yqVSmP//v0r6lK2nyCwAPwBBPCT9jKAouZ8w46OjnYhISFPqVQqF9zNMDK2
    trb5VlZW2wBYJHJgYGA7JyenRCK6q0MZhmFYlt2XkZFx1vyZi4uLNDQ09Cm1Wu1V0zWsrKxK
    bWxstvHzoSnBAPADEML/fRnATdTMtAYB+A+AJIlEIjSZTNDr9WMArAewsBYlWgwgmB8T5QAu
    NffxUAM8AaTw7+o3AFktak3zw+HDhzv/9NNPA7y8vP7w9fU9vWHDBvWAAQOwc+fOGtv36NED
    3333HQBg5syZWLt27f+H1yQAEFhFPmfy62+zxfDhwyGRSBhert7xnclkAhGRXC6nqgr0pEmT
    IBKJ2FqFHsOYqq7Z48aNA8MtzrVeo7Kykh6RAu0AwINfW/PrWCNceTk8llekwbf/D4APAVTU
    oXy68uMhD4DqMRvTTgA+4teaFwEUPqkKdBCASQD6gWOyACAbwB4AX/GLd7OFUqmUFBcXx+j1
    +u5FRUVj8/LyNnl7e3/zyy+/XE1MTLyDZe7UqRMSEhKCdu3a9ZZQKFR06dJlWVRUVAGebFjx
    /TuV718DgFMAlgE4iGZq/lapVK45OTlvFBcXtzaZTHcxFW5ubmdbtWr1V1UFOj8/v3teXt4q
    o9EoIKKqghkCgQACgWA6AIsCXVZWZpOdnT27tLS0My+Q77iGo6PjNV9f35NNrECLAIwEMJtX
    cgHgCoD3AWzhGYyqcuJFlmUHDB48mBk5ciTUajXWr19ve+LEiSl8P39bfW8CYCaAiQBc+PFw
    HMBSAH8/ZptCs8sK+4TPYVsArQF48X/n8UqWsrnfeH5+vtfNmzdfBTAlLy9vd/v27b9s167d
    0WvXrulSUlIwa9YsS9v+/fvD2tpaFhERMYKIyvr27fv7+fPnDU+4pdAawPO8fPYG5351BsC/
    AexrrvJ5w4YNzjdv3pyiUqk8aiIf7OzsbkRGRm6ouoFfvHhx98LCwuQ6CI4tAA6ZP1u9erV1
    QUHBFLVaHQjAVAPBUdimTZsveIW0KcmNHgBmAYjmZU86rxDvrXafLK84v8ArkmZ4AHidn8M/
    Vzu/lJf/k3ndrBLAXwA+4K/zuMARHOMuAkfMPpEKdBS/MPdydnZmAwICwLIssrKyPIqLi6MB
    dOMX8lPNtZcYhtEQkVYsFksZhgnKycl5q6ysrH9wcPD7CQkJv0RFRenOnDmD0aNHQy6Xe507
    d255QUFBskAgMOr1eoegoKC58fHxhQcPHnwShTMDzrS/xM/Pz6Fz585Qq9U4cuRIklKpdAUw
    AcA/zfHGjUYjo9frWZFIhGHDhsHJyQkAUFJSgl9//RU6nY4lImbQoEGWxXf58uWMVqtl2rdv
    j+7du4NlWZhMJhw+fBjp6ekQCoXM999/j2+++QYymQw5OTnQ6/WsQCDAkCFD4OHhYd6UYdu2
    bdBqtYzJZGpq80QfAMtdXV29u3TpAgA4evRodHFx8XIAxQD+qNLWHkAPNzc35tVXX0WPHj04
    OksgwLRp02z0en0PAD9WUboFvDCf36pVK2nHjh1RUlKC1NTU/pWVlY78eMhs5opkVwBOQqHQ
    y2g02hGRCcBQfhFVAjj8OCiWDzB/4wDM4BdtJ/7zUv45P+YVDlNzfQCdTqfX6/UGnU7nXlFR
    MaG8vLz35s2bN3t6en42a9asay+88AK++OILzJgxAxUVFZI///xzen5+/psCgUDz9ttvL0hM
    TPzqqaee0s+cOfNJlc/JABbxc9mM3vzmdnxzVZrKysqccnNzJ5eUlLSq6XtXV9ezYWFhP1RV
    oIuKijplZWW9UpWoqEZyZFZVoEtLS61ycnLGl5aWdqjpGg4ODtcDAgK2N7EC3RHAWgARVT7z
    BRDKy9a/q22OBlRTni23D6A/OOuZrtp6vZrv/6okpx9//hvNfEyLAYhEIpGNXq9nqrwHG34d
    emLcVlwBbGNZlpKSknR79uwx3rp1i7Kzs2nv3r3GAQMGGAUCAQHYAc5c2izRuXPnbiKRKC88
    PJw+/PBDio+PJ7FYTBKJpNDX13dh3759nSMjIzF16lSRn5/fUoFAoA8PD6ewsDASCoW6wMDA
    dxcuXCjq2bMn+vTpg/79+6Nfv3544403nhTmaoezszN9//33pFarSS6X02uvvUYsy5oAzEUz
    DVhNTEwMdnZ2zvT09KT09HQyGo1kNBrp9OnT5OnpSa6urmcnTJjgS0QwH35+ftMAGKdPn06V
    lZVkNBpJq9XSrFmzCACJxeIUAJb2SUlJro6Ojmlubm50+PBhyzUyMzOpVatWZGdnd23o0KGR
    DfhYInCscncA7cBZB6oLn68kEgmtWLGClEolKZVKWrZsGYlEIgKwAYCk2hw+7uPjQ2lpaWTG
    d999R2KxmAB8WQPzcdzd3Z1+/fVXUqvVlJeXR+PHjydeuKXUIug78Iqr7yMeLz0B5ADQMgyj
    55kv4hcgLc9y9HuCFKy+ADKqPGf14xKAQWjGQecRERHxEomkqOp9CwQCo4ODw8GoqKg+n332
    Gfvcc8/h7NmzaN269WiZTFZsbmdlZZUfHh4+nIjQu3dv9OrV6w7G+kmRz7X0rQnA/Obat/Hx
    8SEuLi6Xaxubbm5up5999lnvZ599FmPGjMHUqVMRHBz8CsMwptp+IxQKU1566SWMGTMG48aN
    Q0xMjKujo+OJ2to7OjpeGzJkSGQDP5ozL6O9aiAyhbxyW9t8XFdNPjuB83Wurf2PAGTVWNu9
    tbTV1SKfRQB8eCXb4REPi0B+c/GTUCjcw7KsGpzryR8AfuLXr7ZNcSNNwUAnAUjs0KGDdu3a
    tWxoaKjFDOrt7c36+fnRhAkTjKmpqb0BDATwRXOcyCaTKY9lWaVSqfTo2rUrRowYgS+//BJr
    1651zcvLm2c0Gn3at28/Pz09Pbi4uHiiu7u7cNWqVRAIBJgyZYooPz9/yi+//JLm7Ox8wNfX
    1/DVV1/p3N3dcf78eXTo0AFisRjHjh17XAW0PQAfDw8PxMbGwsrKClZWVoiLi4NIJGK0Wm0Q
    PwF1zfkhWJaF2QfO/K9Go/E6duzYgtDQ0HKOwGBIp9NF8v+HQCAAy7IQCAQWH3dra+sRAQEB
    wfxYJyKS6XQ6X5FIZGlf9RqNIJhnAHiWZxfUAHYBWA7gKt9GAsDbxsYGXbp0gZ0d5zIXFxcH
    KysrKJVKP3AmPvMuvgxAekFBQaevv/4aAFBZWYnvvvsOOp3O7KpT1eXDBYCLp6cnoqOjLeOh
    c+fO2LRpk5CI/MGZHc2MZmcA83gWVMSzH5+Acwt5FEF71wB8BsCdYRgnAIN4c/BOACXgGPpL
    T4hy5Q/gXQBt6mgTCs6/MhPN1NWOZdlCIiqvyqgZjUZWoVD0unr1asD777//7ogRIzbNmjXL
    p6CgYE5lZaU5DgcVFRXu+fn5c/v163du//79lz08PJCZmYnIyEjY29tDIpE87oGGduDcNmoC
    wytFzV4+13jzDMOIRCKJl5eXxGg0MnZ2diQQCES8MliTCwdEIpHI399folAoGKFQSAUFBRKG
    Ydh7XKehblkK4Blwrm0BABQAfuflTV4VgiO0jnO05kkRs3xW8/Ioroa2BOB8NUbWGbfdaGtS
    lMN43dBQRWGdDiCRZ3kv8Ur8zmpyv6ngxhMYngaDga2yOegBzjVJCc4NMeNxV6AFALoKBAKr
    UaNGVYSGhkqqNwgJCWFGjx6NEydOSAwGQ3cA3zTHiRwQECC/detWoUKhaH3jxg3ExMRg7ty5
    CAoKwoIFC8TXr1+feOnSJbFEImF0Op3XqFGj0LdvXwgEAkyePBnvvfee58WLFz+SyWSZ6enp
    efb29ulOTk6XieiMj49P3v79+w19+/ZFQEDAPaPHmyE0AMpKSkpw6dIl+Pn5Qa/X4/z58zAY
    DABnCn7sUp4xDIPy8nKXy5cvv1BVgNZkGqwKhUKRUFZWllC1vclkgo2NTWPfsphXnucHBARI
    goKCkJ+f73Tp0qXJBoPBlheCcn5+FajVapw5cwbR0dEAgNOnT6OyshIAcqsJXC2A9Xq9vvOn
    n37a/ueff4Zer0dxcbERXBaOrbjTP7EUgKKwsBAZGRlwdnaGWq3G2bNnQURG/vxm5TkEwAdS
    qTSuXbt2sLGxwfnz550LCwtXgPPL24ym98/MBrAYAENErYmoEy/LFgG4wN/7k5LSrj+AmPto
    FwlgCDhXvGYHmUxWZG1tXaLT6QKrf1deXu5vNBqXb9u2TSgUCp3VavVdpvqysrKYf/75Z7WX
    l9cuOzu7YrFYfEUoFN5q166d/JNPPjHGxsbCw8PjroDxx0k+1/F9CR7TlJRqtdr/77///g8R
    VZpltlqtDiGiGhViPjXpxA0bNnQz+0gTkUSr1QY0xT4PnK/yCtx2kzLPLQ8Ar/H9ZOQV69pQ
    Wk1x1QL4GkAvXtmtiuPgGOiq7lcVqBLTU4PCLa8yHtz4+x2O2zEgweDcclMA/PoIuv0Mvwmx
    BceKr+DXvjf4DX4FL6cbHY2tQEsAuEgkEoSFhclqpTdCQwUSiQQGg8GF36E1OwU6OTlZdfTo
    0dNarbZHRkYGkpOTIRKJMGbMGIhEIrz88suC7OzssSzLGpydnS3fA8DIkSPx3Xff4eLFiwEm
    kylAr9fDZDKhoqJCJRQKM3Nycg66uLjscHBwSFu/fn3Z3LlzsXz58sdJjpUC+C0/Pz/m9ddf
    l/Tu3RsqlQrbt2+H0Wi8xTOgj5WA9vT0xBtvvIHy8vIa2QciQnR0NAQCgZkBw+DBg+Hu7l5r
    e2tra/j6+jY2mzg6ICBA8vnnnyMmJgY5OTmYOXMm8+effw7mN6c7eIG7VaPR9F+2bJnL0aNH
    AQAHDx6ETqcrAvAL7mZ+0wBMMRgMM3NzcwfwAvhbnjnJqda2EMCveXl57V555RVRbGwsioqK
    wPv/Z4ALWjJjKIDYkSNH4r333oONjQ1+/fVXvPLKK05lZWUT+LEjfwRDgLhuI2OVvw14snJf
    i3jlWXyfa0U0L5+bXSq/pKSk8hs3blwuLS2tcTNQUVHhlpWVtVwsFmv0ev1d657RaGRzc3OH
    sCw7pKioSMswTJFUKr157dq1w76+vgekUunJbdu2Ffbu3RuzZ8/GkCFDHqd+VgDYxve1tNp3
    N3km8bEc1yqVykGlUg16oMWqtLRDbf7Ojb2sAJhSTXk2z63RPBGxi5fPu3jZaFd9KPP9VV0B
    /gtc0PYrADrxsmofOFeQ6spkMbjkDZG4OzA6G8D+KgRBPwCDa2jnzT/L3/z635TQ4naQfiD/
    TkwAUsGx7U+UgN4gFovp888/p9rw5Zdfmn0pN+NOX51mg3HjxqFt27YjBAKBunfv3lRYWEgG
    g4F2795NycnJJJPJLH5EXbt2paKiIsvzaTQaGj9+PAkEAkpJSaGlS5fS0KFDKSgoyOxzShKJ
    pNDNze372NjYPn/++ac4ISHhcfOPdhYIBB8wDKPFbX+qbHCZOUTN9aar+kBnZGRQU+LKlSsN
    7QPdC0Bh3759qby83HKduXPnmouezKjSVsozCBd4YawD57qQUsMiWxV9wTHIJwC0qqOdO7iI
    7hJe4JWDC9wZiNumVQbAZyKRiNatW2e536tXr1JoaCjx9xb4iIdIILgA2Ix7PO/jCCsAP6B2
    38nqx281LOjNAkSEkJCQGUKhUF/TvUskEmrdujW5uLjU+nwikYh69epF8fHx5OHhQUKh0Py5
    3MnJaW9gYOALTz31lBsAvPjii49bXzsBWMkrG1Xl8/jmLJ/v5QPdFIejo2NDyefOvOyszRf9
    X1Xa2gBYwLfX80cxz7Y63GMNuArgJOp2y/LnCZCyKue/AuClauNhVR3v5jJuZ3B6VAgG51p2
    HU3k91x959OY0AM4q9PpDLt27RKOGDHCkuXAsjVWKGjnzp2k0+nA7yoqm9skXrduHXr27ImB
    AweyDMMYT506hePHj6N9+/Z48803kZ6ejujoaPj7+2Pbtm0ICAiAvf3tYGeJRIKQkBAwDIPW
    rVvj5ZdfRnl5OW7cuIEDBw5g8+bNOHnypGthYeEojUbTY9asWV+HhoZ+snTp0lspKSn45JNP
    HgcBrQaX45dsbGyg0+mg0+n04Py69I/DA+h0Ouj1+nu6aDTk9Rr4WgoAlfn5+cjOzkZYWBhK
    S0tx7do18Ap0cZW2GgCfAzgAIIFXruUAdt+DYQwAZ9YzB5Vcq6VdAc9yDOYV0A95pftmVb0H
    QJHBYMDVq1eh1WohkUiQlZUFhUIBntl4lPLAn2dgNLyy359nf56UXNBaPBi7L0czjW7v2rUr
    RCJRBsuyqqoKBsMwaNu2LaZPn47Y2FjMmzcPf/zxR43nEAgEGDduHJ566ilcvXoVp06dws6d
    O/HXX385yuXyPmVlZV0NBsOIAQMGrBk6dOj+tLQ0w+nTpx+X/P4VNTCFRr5P9WhBU0BTx7sm
    3Mkqq8DFrRwAly1lNC9TN6Bu9w43cOywPbjg79pwA1wO/yj+vr4FVxjrLO6sy6F6yOdpKgj4
    9yLi//9EKdDgF5zxu3bt6rR27VrMnTsXUilHcGm1Wvroo4+M27dvF4JLo/Nbcxz1U6ZMQWxs
    bI+SkpJ3DQaDrUKhwG+//YYuXbogJSUFYrEYCQkJYFkWMTEx6Nixo8V9wwxnZ2eYTCazYgBb
    W1u0a9cO7dq1w9NPP43ff/8dX3/9NY4dO+aVkZHxWm5ubuf27dsv/Pjjj/92c3OjZl46XAog
    xWg0/svX11fy9ttv48qVK/joo48CKioqVvGTbH9zZa4YhoFCocCCBQvg6OiI6vmgGwO8fzWK
    ioogFDbYNLwG4K/z58+PS0lJQXR0tOn69essX1b8NDh/uOoL6AW+/+aCCybqgdvBhtXBAgjn
    BZUdOHb2r1rainjlOYhnug7Woqz9QUQTvvrqK7/CwkI4OjriwIEDKCws1POyo/gRCeX+4AIb
    Y1iWlfAZVd4H58P4bzzGZu9q/X8MnJVIeh9kyLHmqEBHRkbCxsbG8+rVqy8ZDIY7GPLu3btj
    7dq1iIyMxI0bN+qsUGcymaDVauHi4gIXFxfExsZizJgxOHDgAL755hscOHBAduvWrf7l5eUR
    169f/9zX1/fTqKioIrMMacaQgYt/eA13Wnj9wLHSOn6z2yzB+y0jLi4Otra2TXbd8vJypKam
    NiTJcROcK5xfDd9d5+dXdQX1L14GjgPnmtEJtacAZcAFGIp5+dyKV4prk+W9wQUMHgfn3ldT
    kau/wKXv86jlu8JHNCysAQwDl8s6iH+eZeCycPyEJ6w67jAA1z09PenQoUMWU+3Ro0e1np6e
    enA+lKOa5Y0PG4aOHTv6OTo67hOLxdSnTx/y8vKiNm3aUFZW1n2b61NTU+mZZ56hXbt21drm
    +vXrNHv2bLK3tycAZGdnd7Fjx46DMzIy2Jdeeqk5C+c5AEr9/f3p+++/J6PRSEqlkubPn0/W
    1tbEb44SmuPN9+3bN8jV1TUTVUxTVlZWjX7gbhNhRAM9UntwgR1l/MJYCc4vbHAdv+kE4BZ/
    P1t44VSb0NqG2ybHf6P29FehAC7ybQ/VwYYIwfnu3eIXDB0vyD+tRWg3BRIAXHN1daWJEyfS
    6tWradmyZTR48GBz311rruP5IeAJzi++1rRf/LG/loX/kWLSpElITk62DggI+EAkEhmq3/cz
    zzxD586do88++4wSEhLucLWrfjAMQzExMfThhx/SP//8QzqdziKbFQoFbdmyhTp37mxOhaZz
    c3PbNHjw4ECAq5jXTGHFK86KOvr2H3AZFpodevXqFeLk5HTZw8ODUlNTqbKyklQqVaMfFRUV
    dPToUfL29iZ7e/uGTGPXBVxudR3/7o08wTClDgY1ApzVy+zmalVLOzGvCJv7dTlqL/7kxSvs
    BM4y6FHHOefxLK9ZRmh4mRH+iIaFA7hgZoW9vT2FhIRQUFCQWTaXg8tb79wUN9LYDLQzuNrs
    CQAYuVyOwsLbG5aioiJRaWmpeQGO5zvnAJpRuV83NzdhamrqcwqFomdCQgI+++wz7Nu3Dzk5
    OXBwuP90iJ07d8Z///tfC/teE/z9/bF48WK0a9cOy5cvR2ZmZuurV6+uGT9+vHDUqFG/zp07
    19TMggsdeWZjTmBgoMOKFSvw9NNPg2VZ2NnZYd68eRAIBPjggw/aq1SqDwG8xU+8ZlO63cnJ
    qUgmk/0qkUhe0mq1NjY2NnjuueeQmJjYKGnmiAh//fUXNmzYAIVCAbFYXGllZbVDIpFkN9Al
    zoEraRrHKzyBPNNgXcdv2CqKcBw4X7LjNU0HAH7u7u5QqVSMWq0O4ZnLmtws4nHbf5mtQ9Fm
    wflnmlPXmUt+p/L/bwgw4AKazemtKutgj50AzLGzswtcuHAhJk2aBJmMI+0mT56MVatWYc2a
    NYFarXYOOHOnvA7ZasU/n+Ee13yUyGNZdg2AIJPJVFvqrGvggpFuNreb7969O5YsWTIkLy9v
    gl6vv0sB2b59O06dOoWcnBxoNJp7zs0TJ07gzJkzaNWqFQYNGoRnn33Wks5uxIgRaNOmDZYv
    X44tW7aIiouLx5w9e9Z22LBhr23bti3zvffewzvvvNOcXo8TONes2bizgEp1tAUXr/AWuKw6
    zUY+C4VCE8uyJrlcjq+++gpz585FYGDjh0XcvHkTGzduRFFREaytrU0syzbU3E0FZ/EZAM4d
    zpVngfPrkA9V5Wc3vv2pWtZj/yp/B/PyuaYy3nG47SNdl3zW85svczXDSl4+/467g8ebAgIA
    ExiGmZaQkCB9+eWXERoaCpPJhLS0NKxZs8YmPT19Mi+rVjf2WG5MBToWnFm4DwA7Jycn9OrV
    C1FRUZYGkZGRzJAhQ7B//36vkpKSqeDMo3/yO6fDaAapog4dOhRQXl6ebG9vL5wxYwaCg4MR
    GBgIIkJhYSF2794NZ2dnJCQkWDIy1LiCMwysrKzuTRdYWWHSpEkICgrCnDlzcOrUqeCLFy+u
    +PTTT9VZWVl7goODm0sASytwaWOeDQ0NlS1fvhxDhw69Q+m0s7PD66+/DpFIhPfff7+9Uqn8
    GFxQwpcNqBzVCz/88ENZUlLSQpFIdCsvL+9farXad+fOnYiKisK4ceMgFosb7FoGgwFbtmzB
    77//DqVSCZlMlufh4fFBcHDwukuXLika8LEKwGXSALjUYy+Bi85ORc0VplgAjL29PVQqlafR
    aEwCZ2qsPv/cAXhFRUWhqKgIp06d8gOXd/dWtXa2AAbKZDIxwzCoqKgQ1CGgu4IrLyzn2ZXr
    Dag0B4ML3OnAM61WPItSwCuFJ/mFIbfKswYA6BQREYHhw4dblGeAc8NKSUnBwYMHkZqa2pnf
    IMirXM8LnAm1Ez8/PHgZW8kvkGfBFTy42EyU6RAAw00mUy+GYVzusVF+GZy/5FY0o0j39evX
    u5SWlj6v1Wodq34uEong6+sLhUKBq1evPvA8zczMxOXLl7Ft2zaMHDkSU6ZMQWBgINq0aYM1
    a9YgPDwcK1euZHNycgZrNBqKiIiYvW7duubkGx8E4E1wvrP3E5jflmfuWoHzs20WJnAvL6/8
    rKysjWq1es6GDRucL126hIEDBzaoXL5LY9TrsXv3bhw8eBBCoVBhZ2e3ydbWtiEr813G7Xzq
    AwF8z29yTvCyqC4F2gtcbY3Ttcjnqmme/Hn5XH3jK+Gva3MfCnQ7cOXEhfw60tBzXwbOZ9uR
    V/aJV9iLwLmuVJeT3gAm+fr6ShctWoSuXbtCo9GAiNC2bVu4u7tj8uTJ4tzc3EngXDmu1qCA
    u/BkkDP/t4a/ZjaaSXXZXuBy9VHHjh0NixYton379lFBQcFdbguFhYV04MABWrp0KcXFxRHL
    subE30nN4UHatGkzVigUVg4ZMoRKS0uJiEin09Evv/xCPXr0ICsrK0pMTLR815D4888/KTw8
    3GzmP96zZ8+2jVR842E2R38AMMbFxdGBAwfIZDLV+hxqtZo+/vhj8vHxMZtY1oILQHvkmDdv
    Hrp164Z3331X2KZNm36Ojo7HGIYhBwcHmj9/Pt28eZOUSiUpFIqHPpRKJeXm5tKiRYssWQAc
    HBxOhYeHD501a5YoMjKyMTdFXXjBYAAX1V3TprkbgLz4+Hhq1aoVgUtN5F5Du7EMw1TMmzeP
    xo4dS7ywj6lFKc6Ji4ujtm3bEq+M12QidOBZDfNkuIvWAAAgAElEQVQ1G8rs5g2uulo6z76Q
    RCIha2trkslk5sw3BnAZQo4BWMIzMma/OtWoUaOosrLyrrGs0+lo4sSJBC64Zhi/CHUHsJQ/
    VwkAo0gkIisrK7K2tiaJREIMwxA4/+FL4IqSPEp3CCGAp/l+qTFrRS2Hkd8EPItmkrkhPDy8
    v0QikVe9zzZt2tCaNWsoIyODVqxYYc7w9NCHQCCg7t27044dO8hgMFgyK61evZrs7OyIYRij
    m5vblwMHDnQYP358c3gtceAqzRkf4nnNJnDf5vAgnTp1wpgxYyTh4eHP2tranjf3h1AoJJFI
    REKhkAQCQb2P6ucDFwx/KSwsbOKIESOkiYmN5uHSiVdwdeBcbWpa4GP4NuY+OoBqLnG8XjCI
    VwDN7fJ4AqGmzVJVt8WzvGJeHVIAH/GkQ11uHg8ro6fy8v88rzCX8oTEdZ5A/RRclphWuO3e
    0hVASb9+/UipVNKFCxdozJgx9NRTT1FqaipVVFTQ8OHDiX8PiXxsgoAnO54FZ+U8zBNJpbzi
    LOcJld24HQv0yBjoIABLBAJBRHJysmrx4sXSkJCQWhu7uroiPj4e8fHxGDVqFJYsWUKbNm0K
    1+l0S3hm68KjmrybNm3Cu+++6ykUCqWxsbFwcHCAwWDA119/jbfeegv5+fnw9PTEpEmTGiW4
    oUePHnjrrbfw8ssvo7S0NCYzM3PugAEDXu7evbti/vz5j+KVMODSmK0SCoXthwwZgkWLFqFt
    27b3ZNVfeukleHt745133rFJT0+fxk/YueBS5zwyLFu2jBu0QUGG8+fP746Li7t57dq1t+Ry
    efLq1aslv//+O6ytresVSMIwDDQaDS5cuACDwaB3d3f/zc/Pb2FaWlp6u3btcPbsWZw9e7ax
    HrGAFxLe4EyHu3km+i6Go1WrVggICMC1a9fa85uk6knyQ8VisbR9+/ZmBsgcSHii2rn6isVi
    j/79+2P37t1A7X54T+N2SexcNEx+4Ta8MjvIzs5OGBMTg+7duyM4OBhOTk7QarUoKirCzZs3
    BSdPnnT6559/OhcUFHQ2GAzPg/PVLgbAlpaWorKy8i6XK61Waw4EFjAMM5iIJgDoJhKJ3D08
    PNC+fXtER0fD19cXLi4uEIvFUCgUuHbtGv7++29xWlpaqEKheJNfFOeBc7lpSrAAksFZgnwe
    4rcR4PwPzf6Wj4xJJyK0b9++Napk3ejbty+WLl2KmJgYKBQKFBQU1Dso2Gg04tChQ5g2bRpW
    rVqF4cOHQyKRYOrUqcjLy8OHH37IKhSK0ZmZmRnJyckf7tmzx9C3b99HJZ/7g0t11q4ueVSH
    PLPhmUazfM58lPI5LS0NXl5e2vPnz38XHR195datWwvlcnlfg8EgcHR0xLBhw+Dr61tv+ZyT
    k4Nt27ahpKQEAoHA5OLicsDPz++dHTt2HB0/fjzt3bu3sR6xkJfPvgBeABfMeaYOBhrg8jd3
    AucOCQDmMR6KO131bAEECoXC43xBMzPicaerB2phoBPABekxDMMUCYXCSr2+3kk3BDz7/TqA
    TiKRSOLm5gY3Nzc4ODhAr9dDLpc7KhQK/5KSkq5arfY5nq3fDS7JhA8AsZWVFUQiEdLS0vDj
    jz/CaDQiNjYW0dHR5gxoYhsbmzC1Wq0DZ4VNAhAqEAikjo6OsLOzs1QZVSqVKC0tdSwuLg40
    GAx9wMXjreIZ7CatSSIAVxbWmJSUpMnJydE+KOtaUFBgGjZsmJ7f9axE02QKqRGnT59mXFxc
    ForFYvrggw+IiGj//v3k5+dn2bGHhYXRjRs3Gi1XcGVlJc2ePZsEAgGJxeKKdu3aTcvNzX1U
    Id8DAFySyWSUkpJCOTk5d92vSqWi//3vf3T48OEaWenU1FRKSEgwB6Ftw6PP82vBkiVL0Lp1
    awwYMMC5VatWC8RicREAsre3J29v74c+HB0dCQCJxWKFv7//0oEDB7oHBwdj7ty5TfFYzuCi
    pc1j9mtesFa3GBVMnz6dfvjhB7KxsSF+p17VTioD8I2zszOlpqbSN998Q2Kx2AjOb7IqPAEc
    CgkJoYMHD1LXrl0JnLnRs4aN9rEq97Ua9U9DFMxbRqhjx460adMmKi4urnVuKRQKOnHiBK1Y
    sYI6d+5MEomEeEbW5OvrS8ePH7/rN2fPnjWz9ATAIJFIqEuXLrR69Wo6ffo0KZXKWq8nl8tp
    8+bNFBMTY/79XjR9HtWOPONT3/y4V3k26JGBiODl5TXfnK85JiaG0tPTLe9779695OTk1KA5
    gc3j2ozs7Gzq16+fmbG8FRsbG/8IX8lgXtmo9f5dXV3prbfeokmTJlnyXKP2vMQ78Ojz/AIA
    ZszgUtgnJib6+Pj4fCCVSpUikYiGDRtGly9frtcam5WVRSNGjCCxWEwSiaTcx8fnk/j4eH+A
    i3toTIhEIieGYQ5Weeef4e4gwS7g/I2r9s9/qlmBhLzl4I4+ZBjmnWquow68Ilq1XXoNm2k3
    cH7O5gDbdVKptL5+M0KexLklFAqpe/fu9J///IdOnTpFeXl5VFpaSiUlJZSTk0OnTp2i9evX
    08SJE6l169Zmq0AhOLc7bVRUFN26dYv27t1LDg4OZGVlRT/++CMVFxdTr169iGEYo62t7VWe
    QCIfHx8aNmwYrVq1iv7880+6evUq5efnU1FREWVnZ9OxY8do9erV1K1bN/O8yAcX3yVuynHu
    BSDN2dmZfv/9d8PDDuh9+/bpXF1dTTw788gUrJSUFFtvb+/tUqmUNm/eTCqVikaOHEkALKbg
    gQMH1rlIV8WFCxfol19+ue/2Zly6dIk6depEAMjFxeXcgAEDwkaNavKkJa0AHBWLxTRjxgwq
    KSmp8V6PHTtGfn5+NGjQIFKpVDW2SU9Ppx49ephNwqvB+WQ1G8TGxmLmzJlSW1vbLWKxmBYs
    WEAnTpygtLS0Bz5OnDhBy5YtI4lEQh4eHvvHjh1r37lz5ybLNc0L483W1tbk6elJvNlqVA1M
    Q2FKSgpdv37dPNYywAWrmOEBILVt27Z0/fp1OnToEDk4OBCAr6r13zAAyueff55u3bpFcXFx
    xDMqVU2EYgCLWZbVBwYGklAoNAF4tZ7PaQfOd9PYuXNnSktLe+BFdMWKFeTv728x2y9ZsoSM
    RqOljclkotWrV1uKHwUEBNDKlSsfeAN96tQp88bCCC4Xa1Pl5hLxC29DKZRf4N7p7xoNn3zy
    icTf3/+/vPJK33zzzR3vefv27ebN4H0d1tbW5OXldU+Xj8GDB1N+fr7lOrt37yYvLy8CQN7e
    3r+88MILTlOnTm3q1xEELvC3znvv2bMnlZaW0vHjx8nZ2fle78TEjxdpc5DL5noLo0ePtg4L
    C5smkUiyxWIxbdy4kUwm00MdREQ//PADicVikkqlBSEhIbPGjBljFxUVhU2bNjW+OYhlZQA2
    VXnnRTxjWhVdcXcBlnQAIVXirpx4lrZ6H/63Wv/15JXDqm3O4U6XHZZXHiuqKNALGuBxhwC4
    JZPJ6OWXX74ji5nJZKKysjIqKSkhhUJBWq3W4jKXkZFBS5Ysofbt21vu2dbWln766ScqLS2l
    xMREio2NpdzcXNq3b98dxZICAwNpzpw5dOTIEVKr1UREpNVqSalUklwuv6PgmHkdmDNnjjl7
    WD64kuFMXTuChkQggMDAwEBTp06dHtpZt0OHDoKQkBB9UVGRH6+4NXlwhp+fHw4fPhwul8s7
    +Pn5ITIyEiqVCjdv3kTHjh0xc+ZMVFZWomvXrnB2vrfrpslkwqZNm/DRRx9h/fr1eOaZZ+77
    XkJCQvDiiy8iIyMDpaWlbTIzMyePGzfujSY0LwjBBXjGmCskVi+IY0ZFRQUUCgVKSkpqVRLb
    t2+P9957DxMmTGBv3bo1imei/2ouCvSxY8eg0Wi0JpNJzbIsgoKCEB0d/dDny8rKAsuyYFlW
    o9frtcePH2/KvLEaANkCgQDDhg3Dli1bHEpKSqaBC2a7VdVEaDKZ4OHhgcTERJw4cSKIiHqC
    C3gzMxKevr6+cHZ2hl6vh7u7OxQKRTC4CP9CXpHub2VlZde/f3/IZDLzGGCqCaHOAMaHhIQI
    u3fvjo0bN2rA+evVBwMBjHR3d2cXLFiAmJiYB/pxQEAA5syZg4iICMydOxdnz57Fzp07MWnS
    JHh5cbp/fn4+fv31V+j1ekRFRWHFihXo3bt3ncHDtcg38Bk+2JycnJE8a76lCcaCD7iMLA2F
    XrzMb3I3u3HjxuH777/3Ki8v72SWkQkJCbhx4wYOHz4MmUyGL774os68z9UUGUyePBnjxo3D
    kiVL8Msvv9Tadu/evfjhhx8wY8YMsCyL+Ph4jB07FqtXr0ZJSUnS8ePHh7/xxhsbPvvsMzSx
    fL5neWqhUAiWZS3/3gMMgBHgAkcPPGq5HBHBZfq0tbVVDx8+fMMHH3zQU6vVjv7++++RkZHx
    UKQEy7I4f/48jEYjnJ2dzyYkJGy4fPmy+syZMxg3blyjP5PJZNLgziBsF155TeMVOIt8rq4W
    AOghFosvV1ZWAlwQXkBN6gPLsvb8dQTgXBlca+jnqucPA5dWTwYADMMYpFJpEX+d+mzw3hQI
    BD7jx4/HggUL4OTkBLlcjr/++gt///03Ll68iNLSUkilUnh7e6Nz587o06cPwsPD0aZNGwwZ
    MgQrVqzAli1bUF5ejh07dmDw4MEYNWoUVCoVXFxcsH37dhQXF0MgECApKQlvvPEGunTpAoFA
    gPPnz2Pfvn04fvw4cnNzodFo4OTkhLCwMPTs2RM9e/ZEQEAA3nnnHZhMJnz88cfuer3+DX6D
    cbGpTEgVQ4cOrVSr1caHZaA1Go1p7NixOn7xf6apJ+qpU6fQp08fsZub2wcsy5rmzJlDWq2W
    DAYDHTlypEbT7r2g1+spJSWFhEIhbdy48YF/n5eXR/Hx8WZTYVZ0dHSHwYMHN9Ur8QRw1N7e
    nrZu3VpTf9GVK1fo/Pnz9OWXX5KNjQ1FRkZSamoqZWRk0K1bt+5g8sw7yzlz5hDDMCZwQVzN
    IjqyCgvNWltbb5RKpfTf//63XibCH3/8kWQyGXl5ee185plnHkWp+tlCodC4Zs0amjRpEvEb
    r3m47TLRF0DJ1KlTyWg00oEDB8y7+K24Xbr5KQBlU6dOJYPBQHK5nHr37k385tbsBN8awIWO
    HTvSjRs3qLi4mLp06WJmS7z5NvYAvhOLxbRs2TKaNWuWmXWJr8fz2ZvNjePHj7cwDQ+LP/74
    gwICAsjKyoo2bdpk+fzrr78mmUxGAQEB9Mcff9TbNevFF180Bxf+iqYpkd2Lt0A0FAOtAufW
    1aRYunQpNmzYAH9//xShUKgFQG5ubrR48WIaO3YsWVlZka2trfnd3tchFArpo48+IiKiuXPn
    3rN9x44d6erVq3e49vDl58ne3v5QdHS01+nTp5vqlXiBi2uo8V7t7OwoIiKCOnbsSNOmTSOV
    SkUXL16kpKQkio6OpvDwcLP7Um3HcjyCKm91wdvbm5VIJBsbcCyTt7f3jmeeeabJ2XaBQPAK
    7gz4rASX9YbliZaaWGNzzn7bKlbEohraXMdtf3ifWsbJedz2iZaAswpXvR+lUCgcUh+iHZyr
    n6Fdu3Z0/vx5IiI6d+4cDR8+nOzs7GrsD5FIRKGhobR48WKLu2hxcTHNmDGDhEIhBQQE0MmT
    J6moqIhycnLo3LlzFBoaSizL0siRIy2WwezsbFq0aBGFhITU6rZkb29PI0eOtNxbVlYWxcbG
    mq2Ei9FErsR9ACgHDBigVKvV+noo0MZnn31WywvogU05mM27WG9v70FCobAgPDycTp8+XW9f
    ZnN0qL29Pe3du/ehzrFu3TqSSqXEsqzRw8Nj0VNPPdVUQi0eQGFcXNwdpkszfvvtNwoPDyc/
    Pz9yc3MjhmFILBaTj48P+fr6Unx8PF28eLEmVx2zf/BeNFHi8/+nCvRoAKo33niDDh8+bHZT
    yATnDwtwgXxys3JcUlJCSUlJ5iwbZj/XOSzLmtasWWPZAPHKuBJc9DcATGEYRjtnzhwyGAxU
    VFRkVqDP4baP3bMAlD179qTMzExKTk42C/mwejxfDIAcqVRK3333Xb3nqtFopDVr1pBYLKaB
    AweSXC4nhUJBgwYNIrFYTO+///5dG8KHwZYtW8zJ/29V6YvGxEBUMcs2wKHBIyiAJZVKERIS
    0tra2vo0qmXLeBClueohFovpm2++IZPJRC+++OI924tEIlq1apXFDUCv19P8+fOJZVkSCoUV
    3t7ek5rQTas25YkA0L/+9S/Kzc2lwsJCUigUZDKZLPO8qKiIrly5Qv3796/reQ/yzGizQXBw
    MCuVShtagX4k8pll2WfAZT+p7lbRtsr6W1DDPWfjdpaNyag5o44St11Ckmu4DvEWpMAqOlxe
    te9z6ymfPAEcZ1mW3nzzTcvYe/rpp++rX0QiESUmJtLRo0ctZOLQoUOJYRiaP38+GQwGMhqN
    tHDhQmJZlrp3727xiz9y5Aj17t3b4nZ3r2PEiBEkl8vJZDLRqlWrzL87g1qyJjU061cIoDQ7
    O1sql8sf+iRKpRJXr15l+c4vaMrBHBUVhYiICH+FQvG6SCRyS0lJsZiO6oPMzEycOnUKfn5+
    CA5+uLiMvn37mpOGs2VlZcPOnz/f6scff2yK1+IPwLFt27Y1um5YW1vDzc0NTk5OsLa2BsMw
    EIlEcHFxgaurK9zc3GrM2xkcHAxfX1+A879qVgr0E4ZsABVXrlxBZGQkxo8fD4FAEAxgGm+m
    s5jwiAhOTk5ISkqCUCh0501+EgCtpVIpYy5iIBQKERoaCoZhbHnznA2AgY6OjuKkpCQIBIKq
    JlWGF1C+AKbb29vbpaSkwM7ODtnZ2QCX+aI+eWd9ADjZ2trC29u7IRY0jBkzBt26dcOhQ4dw
    +vRppKen48iRI4iLi8OYMWMapMiOt7e3OWLcBU2T1k6Fhsl0Yoa5yEKT4bXXXkNsbKy1XC6f
    XVFRcUd1OKPR+NCxBR4eHmjbti1KSkpw4cK9PVL0ej1+/vln5OfnW+bD8OHD4eXlBYPBICsr
    KxsdExPj8uuvvzbFa/FDlUwk1SGXy5GXl4fCwkIoFAoQEfR6PQoLC5Gfn4/c3FyoVKp7Mdwt
    8rmRYDKZsnF3sZM24NwoxLz8ZGtRTPvy7GhILSypWT5Xz/1cFWb57wCu8I5HNYa83NraurQe
    jxgKoJVMJkOnTp0gEAhw6tQpHDhwf15Ber0ee/fuxeuvv46LFy/Cw8MDr776Kry9vfHzzz/j
    6tWryM3NxS+//AJHR0e89tprCA4ORkZGBl577TXs378f95s9ZN++fTh9+jQYhkFMTIxZPgfW
    RvA0tAJ9E8C5K1euiPfs2fOwuYNo//79ugsXLgj5XViT+T8///zzcHFxkeTn50+vqKjo1q9f
    vwZZLHU6HTZt2oQbN26gT58+Fp/KB4Wvry/69esHhmGg1Wpbq9XqxPDw8KZwprUHIHB2dq7R
    37Nnz5746aefsGPHDixfvhzW1tYICwvDDz/8gN9//x3r1q1DQEBAjYq3jY0NwAW6ObSI0kZD
    IYDy7OxsVFZWYuLEiYiKimIADAdXwre6Dxzi4+Ph7e3N8ux0EIAQFxcX+PhwRDLDMAgKCoJY
    LGZ44d0RQGxERAQ6dOhQk4AWA5gIoPPAgQMxcOBAlJaWIi8vD+DMk6p6PJ8AAGtjY2MWePWG
    u7s7kpOTodFo8Mcff2DXrl1Qq9VITk6Gh0fDpEO1t7c3j38WTRNIWwguT3VDQY76+67f/8JA
    hMmTJzPXr18fXlZWNpqIGkT2MQyDQYMGoW3btjhx4gTOn7+/WhHnzp3DkSNHLH+3bdsWPXr0
    AABoNJoucrm8+5AhQ5ri1dijDheLb7/9FoMHD0b//v0xf/58VFRU4MqVKxg9ejT69++P5ORk
    HD16tK7zW6HuSoYtqAdEIlExwzCqGnSzUeDcN4CaA9lYcGkL/cC5z6EW5TiEVwB71tFGwK8H
    STUo+Hkmk6k+hc8cAFjb2trC1ZVzv7527dp9xyeYcejQISxcuBByuRyxsbEYOnSoOT0ojh49
    iosXL2Lw4MFITExEcXEx3n333Tvm530xDCoVsrI4ldPV1RWOjo7gSSbXplCglQC+r6ysVH/4
    4Yei48ePP/AJzpw5o1u2bJmprKxMDeBb1F4qt8Hx5ZdfIi8vb4BCoZjk6+srmDNnzn0FCN4L
    27Ztw9dffw1/f3+MGjUKItHD1SAQCATo378/HB0dYTQaxXq9fsDKlSubIoJfB4DkcjmMRmON
    9+Xi4gJPT0+4urpaGGhPT094eHjA3t6+xqA5tVptnkSGBmbGWnAnygAU5ebmoqSkBMHBwZgy
    ZQqsrKycwAWs3EXbhoeHo0uXLmYmZBgALzc3N3h7e8NgMMBkMsHX19csYNoAeJplWbfExES4
    ubndpfuAyys9ydfXV5iSkgJbW1vk5ORAqVSCV8LU9Xi+EgDlGo0GFRUVDfbSkpKSEBoaiq1b
    t+Lnn39GaGgo+vXr12DnV6lU5vtVg2PhGxs3waUObCikgitA0CRwc3PDhAkT2sjl8jl6vb7B
    FLqIiAjMmDEDer0e3377Le7XeqpSqfDbb79Bq9UCAGQyGYYMGQKZTAaDwWCv0+kGTps2rSnS
    YGlQR9VenU6HvLw8ZGdno7CwEEQEg8GA3Nxc5OTkoKioqEa5Xk3+V6IFjQKGYcpQs6XdnZfP
    7nX8vH0VJbo2hIFz4/CvbW/KK+DTcHcKPRBRXmVlZX0UaB0Ag0gksliidTrdA1uLiAjbtm3D
    Tz/9BLFYjKeeegr29vbYvn07tm7dCplMhjFjxsDKygo//vgjtm/f/lDX0Om43AwSicSsq5lQ
    S0nwxgjc+h3A5rNnz9LMmTOxe/fu+6LPDQYDDhw4gOnTp4vPnj0rAVfW97emGsTTpk3DyJEj
    A4uLi/8FwHXatGmIi4ur1zkrKyvx3Xff4c0330RhYSFiYmLuKGX+MGjXrh1at25tVkA7nj59
    OrQJfO0UAPRZWVn3VFBcXFwQFBSE0NBQCIV1+90XFBSgsLAQPPuoQAsaC+UA8hQKBXJzuUqx
    w4cPR0JCAgD0ADAGXGEQqFQqXLp0CQqFAklJSZDJZLYAngPg4+vri+PHj2PGjBmYN28elEql
    mY2NBDDS09OTTUhIQHFxsbnYiHnj5AAgRSAQtBo7dixiY2MBcNlJKisrzT529SnIcRNAUVlZ
    GYqKihrspQUGBiIxMRGXL19GZmYmEhMT0apVqwY7f2FhoXkDUYSaS6w3NCoAfIeGYaFLwOUU
    VzXFAN6+fTumTJliW1hYOEetVkc25LkDAwNhb2+PzZs347ffHmzJOXbsGG7evF0puXPnzggI
    CAARoby8PO7s2bO+TSSf7ysjU1lZGeRyOYqKiiyKwv3sFdBMShw/idDpdOVElFvL14ngipnU
    pqvZgfN/rkuBDgdX0a825k7Gn6NG5UQsFheCq6L6sMgFIDePPQAICgq6q0jV/epU69atw40b
    NxAbG4uuXbti37592LlzJ6KiotCpUydcv34dGzZsgEbz4JycTCazyPiSkhKzfFbgzkwpjapA
    KwC8B2Dz8ePHK1944QWsWbMGdaVA0Wq1+OijjzBx4kQcOXJEA+AH/hxNplR16tRJfPny5aly
    uTwuKSkJzz333D0VwNqg1+tx7tw5zJs3DzNmzMCVK1yxvdLS0gc2W1SHs7Mzunbl4ro0Go27
    QqHo0gQp0S4ByEtPT0d6enqdDcPCwrBx40YsWrQIMlnd8Rj79u0zK9CZ4LIDtKDxFKe8iooK
    i3nKxcUF06dPh6urqxW4IBXrkpISvP3220hKSkJycjJyc3Ph5uZmNgFa5+Tk4NVXX8Xnn3+O
    lStXYvXq1eArXDkD8AoODsaRI0cwYsQIjB07Fjt37jRXyPIE0C0iIoJ5/vnnLRaYGzduQKfT
    GWoTTg+iiwK4UVlZiWPHjqFa1a2HhlAoRIcOHSAUCiESiRAdHf3QMqEmpiM9Pd0sF6+j6WI9
    DoArz1sfRrGSP8f+phrAgwYNYtLS0kYUFxc/YzKZGlTg7dmzByNGjMDbb79tXjDvf+d28yaq
    Ztvw8fGxpLysrKwMKigoiG6CgkmZuE9Xmn/++QcvvfQS3nrrLZSVlT3I+Vvkc+OhkmGY/Fq+
    swEXpF1blh4GXPrCukzlnuD8kGuDF7hsOjUJNxPDMNn1fL5cAAUVFRWWzWbHjh3RvXv3hzrZ
    hQsXcPLkSdjZ2aFnz55Qq9VQKBTo2rUrnJyckJqael9xDDWhW7duFhfEnJwcMxFUyJM0TQpn
    Xgku8/Pzo3PnztVZKCQkJIRYltXY2NisRBMHLNjZ2SEmJqa7ra1tjo+PDx04cOChU1P9/fff
    9Morr1BoaCgJBAJycnKSR0VFZYhEIl1ERARdu3at3tH7P//8M1lbWxPDMOTi4vLFokWLRI38
    iqwBbGQYhqZOnUoVFRX1fobLly9TdHS0OWXPi81Noj1hWTgA4A0AppdeeolKS0stCeWnT59O
    LMsSAHJ0dCSRSESurq7k5ORE1tbWdxWVsLW1pRdffJH69u1LLMtafmv+vZWVFdnY2JBYLCYv
    Ly9LsQZra2tav379HVUA+aJEKnAmyPqAAVeIRR8WFkZnz55tsEqgBw4cICcnJ3J1daVDhw41
    2HkzMzPNFQn1AP6FOpL1NwIcwKWOrCk11r2OfP63TRazsHjxYowYMSLIx8fnJBow6wIAkkgk
    5OXlpWZZ1vSw55g5cybp9beTTn3++eckEomIZVlyd3df/fHHHzd231qBK2hEjXBU8uxks8KT
    lIWDx1zcmTquuRyV4HKB1wdicEWuaNiwYSSXy4mI6K+//qLWrVs/8D0xDEPvvPOOZW2VSCQk
    lUrpxx9/JCKiV1999aGeNTQ01FJltKKiomqa0W9RSzGhxsq96wjOGT0GgJhl2TqLDZi/N5lM
    Ao1GE8XvhppMiU5OThbdunVrpFqt9hoxYneiS7QAACAASURBVAS6deuG0tJSfPPNN0hLS7vn
    700mE06ePIk5c+ZgzJgx+PDDD5GVlVXs6Oj4U+fOnSd6eXl9DMDIsmyDFNAICwuDq6ur2b8n
    4ujRo439rtQA/ktEOT/88AM2btz4IOa/u1BQUIClS5fizJkzALAHTeiq8/8YtwDoN2/ejMmT
    J+Orr77CsWPHEBAQAGtrawCchcTf3x+ffvopvv76ayQlJcHPzw9ubm7w8fFB79698Z///Afv
    v/8+PvnkE0ydOhV+fn6QSqWWo3fv3ti4cSPmzp2L0tJSlJRw3gIhISEICQlBRkYGfvvtN8ye
    PRt//PEHwLmXFNaX0AVXjOdcZmYmVq5caQ5OrDecnJxgY2MDW1vbWosHPSjy8vKwePFiM3N5
    BsAvqMOHtRGgALAUwEo8mGm+DMD7/G+bzDooFouZEydOPJ2fn99grhssy8LGxianffv2H8fF
    xX0ilUof2kSdnp5+B3MdGRkJZ2dnmEwmGI3G9qmpqY292agAV3EuuxHO/UeLfG4S3OQ3080K
    LMtqJRJJfa1jOl7GlR48eBA7d+4EEaF79+5YsWLFA7vFERGuXbsGg8EAFxcXWFlZwcrKCm5u
    btBoNLh27cHDMlq3bo3Vq1dbgoCPHDmC33//HURUBuB/aKIYLQZcsNCPAMplMhl16tTJtHbt
    WtJoNLWyMTqdjj7//HOKi4szl1BUAfgZQByaoMBGhw4dPKRS6UlnZ2fas2cPVVRU0Ouvv05W
    VlY0e/bsO9iFmvI7r1u3jkJDQ4lhGLK2ts7x9fVdFxoa2qdXr162AODu7j6HZVlTfHw8FRUV
    1Zu9KiwsNJfCJolEkhMWFhbVBH0r4pmyUhcXF3rnnXcoKyvLUhJVq9VSRUUFqVQqUiqVpFQq
    SaVSUUVFBel0Osu72rt3Lz399NPm/IonAUQ3R2n2BDLQCbwCZMmtaW9vb55vJJPJKCkpifbt
    22fJbVtWVkaXLl2iv//+m06cOHHX2K2oqKAzZ87Q1q1b6X//+x8dO3bMUuJdqVTSsmXLyNfX
    15Jn18fHh3x8fCzX5I9/cDsHaX1lz3gAJUKhkCZNmkS5ubkP1E8mk4n0ej3pdDrSaDSk0Wjo
    zJkz1KpVKwoODqb09HTL5zqdrk65UBtyc3Np0qRJ5oT+heBydDNNPBaCALzDK+/6B2BpDOCK
    4iwE59bTVHPR3s7Obl/Ve3F3d6epU6dS//79SSAQPEjBFKO9vf0lb2/vVVFRUXFffvmluG3b
    tlMkEslDs39BQUGUnp5u6ePs7GyKiooyF7261qFDh5Amks+zwAXd33F/Dg4O1KZNG4qJiaFe
    vXrRgAEDKCkpibp3704dO3akkJAQkkqlNT3bCdxHdcMWBrpB0JPflDYrBlooFN5wdnZu1wDP
    Z8tbSUxt27a1WPlNJhP9/PPP5toE930MHDiQysrK6MyZM+Tn50eenp6UlpZGpaWl1KdPnwdm
    nnfu3GlZ99LS0qhr167m7zehjgw0wgaewKMAvC0QCEJjY2ONU6ZM0ffr10/o5uZWZyo4kUiE
    F198EcOGDcPevXuxbt066yNHjgw3GAwR4KrAbEYjlq12cHDwBeDh4+ODNm3aIDU1FV988QWC
    g4MxatSoWv0e5XI5PvjgA6xduxYqlarc2dn5N39//0+Tk5PTFi1apHV0dMSYMWOsd+/e3c1k
    MjGhoaFwcKg/GWFvb4/WrVvj77//BhE5CwSCtvxi2JjQA/gEQHFxcfHspUuXRuzYsYPp06cP
    GIZBdnY2iouLUVlZCZ1OB4ZhIJFIYGNjAw8PD3h6euLmzZvYuXMnCgoKNAB2Afg3r0Q3KxAR
    Bg4caJ5ADVl2myQSCRFRU5byNqMIQKm9vb3tsGHDoNFoIJfLIZVK4evri169eiE+Ph7u7rcD
    vm1tbWFra4vQ0Jrd52QyGSIjIxEZeTcxaGdnh3/961/o0aMHtm7dirS0NBQUFICIEBISArVa
    jRMnTsBkMhWhYfwrzZW5vAwGwxubNm2y02q1WLBggSXoFuCClVUqFZRKJfLy8pCXlweFQgG5
    XI7i4mIolUpUVlZCq9Va3pGZzZ45cyacnZ0hkUgglUphZWUFJycnuLq6wtnZGc7OzvDw8ICr
    qytsbGxgbW19h+Xt0qVLWLhwIbZs2QKDwaAAV+FtaxOyzxJw0fivAuj0EOSEAFzUf1twVsLV
    PPPfqOyMWCz21ev1FprK3d0d//73vzF27Fhs3boVhw8fRnl53UkCGIaBlZXVNVdX140BAQE/
    jh49+vLSpUuNWVlZgvz8/AidTvfQRE1RURFycnLQvn1783qCkJAQnDlzBjqdzoWIwgBcbgL5
    /Dm4bC7/196XxzdVpvt/z8meNGmatkn3nUJBQFYVUVBEUUdBvQ6KiLI4etVR0Tt63VBxuziK
    zoygI4q4jAs6iCsCLtdhVZBSukD3LV3SNvt2kpzl98dZTCsg0CRl7q/P53M+SUvJyXvOe573
    +36f7/M894FPCCMAYMGCBbj33nslpk6lUoFlWVAUhWAwiL6+Ptx+++3RJb8oAF8B+B8A5TgN
    LYFNahJldgFAJx8rYiLeP61Wi+TkZKSkpMBoNEKn00GpVEKscqFUKsGyLMLhMCKRCCKRCEKh
    EHw+HxwOB5xOJ7xeLwKBAPx+/3GT7Wiatnk8nlhUCPKCj3iNqK6uPveOO+7Ak08+iSuvvBJX
    XXUVQqEQ/vSnP6GjowNarRYGgwEmkwlmsxlJSUn9xq7VajFmzBhpvHK5HCzLQiaTQaVSYcGC
    BZgwYYI0vkAggEAgAJ/PB5vNBqfTCY/Hg2AwiLy8PKxatQpz5swBwzDYunUrHn30URw4cAAA
    9gg+2h1vAK0Cr2N9NDk52bxkyZLwPffcI8/LyzthbS5BELBYLLjhhhtw/vnnY82aNVi3bl2J
    w+H4szCpXouXo05JSVHIZDKZRqNBUlISKisr4ff78Yc//EGqGDDQnE4nHn/8caxbtw4sy9bn
    5OSsGj9+/MYjR454rVYrAoEARowYAblcPjkUCp2r1WoxY8aMmCQhKZVK5OfngyAIMAyj6u7u
    Tlu/fj2WLFkS74c8COAtAD/TNL18//791+3fv19LkiRIkoRcLodGo4FarQbLsggGg6AoCgzD
    gGVZ0el1AviLsBvtPR0dc3p6OiZOnJhOEEQmTdPYsmUL+vr6TslpkySJgwcPik4staWlJS0z
    M9M6BENrA/Cj3+/Py8nJwQMPPACWZaFQKKDVavsBeo7jpHvGMAzC4TAYhpF+JyQGStIr8d4r
    lUrpZ/F306ZNw7Rp0+B0OuHz+cBxHCiKwn333QeWZWkA32JwTVSijQKf3BamafqBDz74wGK1
    WvHwww8jKysLBw8exL59+1BbW4vW1lb09fXB7/cjEolIYyIIQjpkMhmUSqUkcTlw4IB0LTiO
    6zcfxPEnJSUhPT0d+fn5KC4uxoQJEzB+/Hh0d3fjmWeewc6dO8FxnA28DOJ1DC67/WTMAL5J
    wnIMvqscKQDwteBLZL2EOFZpMBqNRoVCoQsGgyAIAtdeey0WLlyII0eOYM2aNb/VBARyuTyo
    1+s/zszM/NtDDz3080svvcTu2rULt9xyC/bs2VPMcdwFgwFkwWAQ9fX1mDOHl/JrtVqpWRbL
    skm9vb05GzZswM033xzve0yB12seEO7zDQaDQXvppZeiuLgYHMdF+2Go1WqYTCZkZ2dj1qxZ
    2Lt3L1iW7QDwouDn+3Aa2u7du/Hkk09yHR0dIEkSOTk5pyyvIggCDocD7e3tAJ+rwX777beY
    NWtWQsdEkmQHgEMsy+aL5ERGRgZKS0sxatQo5OfnIy8vD7m5uTCZTNI6q1ar+/ndo5nou8Ph
    MILBIILBIAKBAHp6etDa2orW1lY0NzejtrYWTU1N6OvrkyqnkST5E03TsaodXyNs3lfX1NSc
    c+edd6K1tRVLly7F/PnzQZIkKioqMHbsWJSWlkpEhEqlkjYIR3m2IUpjRfwRjYPEpkHiJsLr
    9aKnpwf19fWoqqrCxIkTMXfuXASDQbzzzjt46qmnxLmwD8CfwPciQTwBtAx8GazH09PTUx97
    7DF6yZIlco1Gc8o7+tzcXDz++OMoLi7GihUr0ru7ux+DoMPF4MpdHcvB9gBwe71ei8PhwPnn
    n49Vq1bhqquukv6ms7MTMpkMFosFoVAIf/nLX/D6669DpVJVGI3G+/7rv/7ru3fffZerra1F
    bW0t2trasHDhQv3bb799k9/vt5x11lmYMWNGzL6zyWSCXC5HJBJBIBAwZWRkEAlksqqExf+S
    iRMnam+66SakpqZKWtGkpCQwDAOv1wuv1wufz4f6+nq8+uqrsNvtRwC8gdg2dIiZjR8/HpMn
    T04vLy9/LBAInM+yLDZu3IiPPvpoUKCcZVk4nc4z6+rqHh8xYsTDJpPJdqING2JkHgCv0jR9
    3rvvvptx2WWX4dxzzwVFUejo6EBHRwd6enqk2rAOhwMej0fawUciEdA0DYZhQNO05LBkMplU
    pUJsjGM0GpGamoqcnBxkZmbCYrEgOzsbmZmZkMvl2LBhg9iFaj/4EBkbw3H6AawBYOM47pEd
    O3aULV68GCqVCl1dXaBpGgaDAZmZmRg3bpz03YxGYz+GQ6lUSkyzSqUCQRCgKAoURSEUCiEc
    DkvMRiAQgFgisKenBzabDXv27MHWrVtBkiTMZjPC4TBsNpv47DwD4GMkTvOYDD6J9A7wCcEx
    c0MA7hc+/0nEqVKDQqFwsyzrB5AudsBkWRavvfYaduzYwS9CMhkIgvhVBRa1Wu0xmUwv5efn
    v2S1Wp2bN2/G/v37sW/fPhw8eJB8//33r/J6vYOSWEQiEXR1dUGMLIlkkEwmA03TRG9vr2HM
    mDGJfNYPCwTFZUajUdvY2IgXXngBNpsNfr8foVAIBEFAJIyys7PBMAw0Gg38fn+tsM6elv5Z
    vMbTp08vJAiiWCaT4d5778X8+fOlTfDJEhyffvop7rrrLvj9/qzq6ur8WbNm1SU6Srh27VrX
    Pffcsy4UCp2rVCpNd911F66//nrk5+dDr9cfN4fsNwGaTCaRAULjJgB8LpVooVAIbrcb9fX1
    eOutt7B+/XoAaFSpVG8GAoFY+qm94OtNP93V1XXpihUryJaWFtx///2YP38+5s+fL/2h6GPF
    yKDH44HP50M4HAZN0wiHw2hra4PX6wVN0/j666/R3NwMtVoNjUYDrVYrvYrvc3JykJ+fjylT
    pkjnEZUEL7/8MpxOJwvgG8Ff/mZ0PBYAeobAPJueeOKJ8LJly5Sn2ihkgOPD4sWLQZIke//9
    95scDscj4BOhtsV68rIs263T6Zrb29tL9+/fj//4j//oV6/ZZrPh7rvvxtSpU/GnP/0J27Zt
    wyuvvAKCIOry8vLurqys/OHNN9/Ezz/z1/vyyy/HhRdeSGzYsOH6rq6ua5KSknDLLbeccgfC
    o66IyckSgNbr9YXbtm1TJpDNIgCcp1AoLDfffDP++Mc//uZ/8Pl8qK6uxubNm8eADwP/7+kI
    nlNTU9PLy8uf6O3tXVJcXKy65pproNPpBhUyFMHXp59+qjx8+PBNAIjCwsKHRo0aZTty5Egi
    h7gLwAdtbW13Pf300+T06dNx6NAh1NbWwmazweVyIRwOg2VZaVcvAuRosCw6cxFMR7+K7Kz4
    GRqNBikpKcjKysLYsWNRUlKCDz/8EH6/3wfgVfAl3GJtYfCyr0YAD3R1dV0qk8nU8+bNw8UX
    X4yysjJkZmbCZDJBq9VCoVBgMAm+4nhpmkYgEIDT6UR3dzfq6urw7bff4sMPP0QkEqEAfAbg
    OSRWtqQCcLvAPmvj8PlaALcJDPQqxCFK2NnZaRVKaRVEIhG89957qK6uxqeffgqRrbvjjjvg
    crnw5ptvSk1B1Gq1Pzc395lx48b9taamJtje3i6ySyAIArNmzTrHZrMti0Qig16wPB4PokGX
    wWCAQqEAwzDQ6XR5n3zyiRzHaMYQD0ITvKbWYrVa8cADD0jP5zEIJMhkMjExfAyAceDLHZ6W
    4HnGjBlFVVVVz4XD4bOmTp2K2bNnD6o76AUXXICzzjoLe/bsGdvU1PTnKVOm3EsQRGMiQfTK
    lSuhVqu/pWl6UzgcXup2u4mysjKp8QjDMAgEAhJ7HAgEpI18KBSSDoqi+kkoxWMgITAQWKpU
    KpjNZuh0OqxZswYMw9AajWZDSkrKwVg2pxKsQtjM3+fz+RatXbs2ua2tDcuXLwdBEGhubkZL
    SwsaGxvR2toKh8MhNV0LBAL9Itosy0ps+SOPPCKROeI4o19TUlJQWFiIoqIi5Ofno7CwEEql
    Ei+//DLee+89BINBtxDBeQEn2CBqsADaAuBPcrm86LbbbgsvXrxYEQvwHP1gL1y4kGhpaQmv
    WrWqIBKJ3C9Q6jFtH7tgwQJ/RUXFZw6H44I1a9YoR48ejdGjR0sP7caNG7Ft2zZcdtll6O3t
    xV//+le43W7XiBEjnlm3bt2/nn76aakA/6233ooJEyYQzz///OXd3d0PURRlWLZsGX7/+9/H
    9GEUHXQwGATHcZk1NTWKBAJoC4DLi4qK5BdffHE/ECGGtqND4ULGO+bNm4evv/7aTFHU5QB2
    JnBB+U0rKSlBWlqauaqqamVvb+/iUaNGKVevXo3Zs2cPupW7eH0uvvhi3H333fLKyspFHMcR
    xcXFDxYUFNhaWloSNcyQwP7P3rJly5itW7dCrVYjPT0dRUVFyM3NlVhjo9Eo7eSjq2yIP3Mc
    JzlsUUsZ/d7pdKKjowNWqxVtbW3o6OhARUWFJIEAsFUAlHFbb8F33bsTwBtyuXzOvHnzsHDh
    wtjvJoWNhqjBS0lJQVFREaZNmwaDwYBNmzYhEonsIAhi+XEaJsTL5gG4N07gWTQNgLuEDcs/
    EONImMVi8TQ3N+/w+/3TWZbF3r17sXfvXunaX3LJJfjv//5vvPnmm9JGVy6X02az+Y2JEye+
    bLVag9F1YUtKSpCcnFxw6NChFQ6HoyQmYQ+/HwzDSL5CJDgAQKlU5tXV1akS6O/M4GsHy0Ut
    rChFUigUUCgUUmhbBGBRneHMAH4n+OfTqiqEUPe3qLq6+nmn0znXbDaT119/Pfx+/wlVyzqe
    XXfddWhsbCS7u7uvaG5uJqZOnbq8sLCwMVFjExpcBfR6/bpgMDhr06ZNhdOmTUNGRgYOHjyI
    uro6dHd3o6enBw6HQ/Kj0cRF9M/RPima+BAPtVqNtLQ0WCwWZGZmoqysDOPHj0dNTQ2++uor
    KJXK/Xq9/l2Kopg4DbkVwIMAymmaXrF58+aC3bt3g+M4eDweqbvnSbEm4bBUHex49dzF6IvB
    YIBcLkdXVxcYhrECeBzABziJrriDAdAk+AzyC6ZPnx66++675Wq1OubbNZVKRdx5553yH3/8
    Mbx9+/bzACwAr9GKWdjXarVy2dnZn7jd7it27NgxZ9myZbj99ttRVFSE8vJyrF69GmVlZbjw
    wgvxySefYPfu3VxKSsqH06ZN++iVV17hRPD87LPPYurUqcTtt99+SWdn5wsUReXPmzcPDz74
    IPT62Hbc1mq1EhMYDoeTOjo6ZAn0ZecAmJCXl4eamhp8//33aG1thcvlgt/vRzAYBEmS0Ol0
    0Ol0EkBjGAZpaWmE1Wq9WGAfG08Hx8xxHGbMmGGpqqpa2dfXd3Npaany+eefx8yZM2PWlAMA
    zj77bDz//PNYvny5vKam5kaCIJCXl/dQS0tLdwKHWwM+8atsxowZ5D333IMRI0YgMzNT0tPF
    YsMAQEpkCQQC6OjoQHV1NVauXInDhw97BaCViOYMXQCqQqHQnARuVCQTui0CwGGO47oTfPoi
    ATynJeBcJvC62x8R44Q5hmGYvLy8j4PB4LUej6cf4E1NTcXtt98OmUyG7du3S2F8o9G4a+zY
    sS/8/PPPfrGR1d13340tW7ZAq9XmtrS0/NnpdF4Uq2Q0UeYkEkh6vV4C0OFwOKW5uTmR/nka
    gDPHjRuHCy64QNocJyUlSc+4mIsQCoXgcrnQ0tKChoYGbN26lWhvbxf9cz1OA+M4DjqdDhMn
    Tiyurq5+vq+v70oAZE9PDx555JGYncfn84FlWcJut/8OAIqKipZ7PJ7GE23tPlgbO3YsMjMz
    Dx44cOCrvr6+2++66y6CYRgpd+RXACwqB0UExiL7KuRHgWEYhEIhBIPBfnktAFBXVyd9lkwm
    g8FgEAFsODU19R9XX311y6uvvhrPIfsBvANgOoAlQlO145IUYn7NwHFHj1fM04keb7S8h+M4
    icWPst3gu7SeVIOpwQDobAALk5OTlX/84x/DmZmZcXMQFouFvPPOO5mffvpJ5Xa7F4IvcRez
    1fCuu+4CgK6zzz77EYZhDHv37j2nvLyc0Ov1cLlcUCgUWLlyJWiaxmuvvQaWZZtMJtO67du3
    B8TObq+//jqWLl1KjBs37qKOjo7VoVCo9Pe//z2effZZFBQUxIX1Eo2maWV2draiuro6Ec+5
    GsBcAPqdO3di586doCgqmvmBXC6XGI7ohDOtVitm/I4EX1bttADQANDW1nZtX1/fzQzDKLVa
    LTZv3ozNmzfH5wLySZZyh8NxYyQSKQfwtwQOlQWfWU+lp6drL7300n7JGSzLwufzgaKoX+me
    xUQMMWtbDI0pFIp+Ug8xmUOr1UrMtclkkqongE8ebUjU+isAgXBTU5OSpmnI5XIEg0F4vV6p
    i5XL5UIgEJBY9Gi9cygUAsuy/UKiA1n55ORkmEwm6HQ6KQ+AZVk0NTWB4zgafEiQTeB9loNv
    wZ7IMpHjASwF8Ggs2csvvvgCjz32WEUoFFrV2Nj4P36/PzUauH722Wf46quvsGvXLnFeuo1G
    45ovv/yyTYyGvfPOO3j88cdhNptzGhoannO5XFezLBuzEqk0TfdbpMVFXfTPssGIWE8+GjDX
    YDDoV6xYgWuuueakxvDUU0/hySefHMGy7IWnC4AGgEmTJhXX1NS8YLfbrywqKiJKS0tBEERM
    q3GIn1dfX0+0tLT8rrm5GUVFRfc4HI6mRIyxsrISlZWVYa1W+wPLsotdLpdWZN7T0tKQmZkp
    RQjT0tKg0+kkGUb0e6VSCYIgfpWnIUpAfD4f7HY7urq6+uW/OJ1Oca12BoPBn6uqqhIxbFpY
    C1iBlJUSsTMzM6XcmbS0tF9V4xDHLOaoiEmS0WMVK3HY7XZ0d3f3G6/b7Y5+ZltwCvKzwQDo
    mQBGT5s2LTx79mx5vK/yrFmzFOeff37w888/HwXgQgDrY/n5S5Yswfr163+eNGnSMrVavdTl
    cl1A07S8oKDA4HA48mtra4nvvvsO1dXVtNls3jBt2rSD1113HS666CKcddZZWLp0KSZNmnRB
    S0vL6lAoVHbDDTfg6aefRk5OTiJ26Mrc3Fx1gnxZGYALVCoV8vPzUVJSgtGjRyMjIwMajQY6
    nQ4ajQYsy0pstM/nQ0tLCw4fPozGxkZ0dHSoWJadC77smPs08M8EwzAZLMsqSZJEZWXlb7Ys
    H6yjJkkSNE3LvV6vaQjGawXgaWho0FZUVCAUCqGhoQHNzc3o6elBT08P7HZ7P0ApJm6IR/Rm
    KVp3JpZ3S0tLg9lsRkZGBoqLi1FSUoLu7m4xka4TiWtdDQG8Bg4dOqR899130dbWhtraWrS3
    t6Onp0cqaRQdCo1magayYdHMh/herVZDr9cjLS0NOTk5KCkpQV5enpgXQQ3BZrEYwDXgk7wT
    ZTIAVwF4G3ykI2ZGURQzadKkdyiKithstjv9fv8YuVwuUyqV8ldeeYUU5WMEQcBgMHyZk5Oz
    9bnnnpNAUVZWFsaPH59TUVGxyuFwXMswDJmoi0LTtCI7O1uZQP88c8KECdzZZ59NOJ1OKb8h
    FApJWlKZTCYBEo1Gg9TUVJjNZsyZM4dbv369qr29fS6AD5HAhjnHc5ldXV3z7Xb7FWPHjiVW
    r16NiRMnxkWfzHEcKioqcN999xEVFRW/Y1n2B/Ca2ITY22+/jSVLlrQBcBsMBu0tt9yC8847
    DyNGjEBqair0ej202tiosaLBdF1dHbZt24b169cjGAx2UhTVuXPnzkQNux4ApVartYsWLcLF
    F1+MkSNHSlU4BlaJOlUTq3C4XC40NjbiX//6F9asWQO32x0WQPxJ78ZOFfiqAFysUCi0c+fO
    Den1+rg7aZ1OJ583b15gy5YtGpqmLwafJBSM1eevX78eK1euxOuvv3543rx5Dx48eDBj1KhR
    ZGlpqXndunX3vPTSS3MikQhhMBi+PuOMM9bbbDbmoosuAgD8+OOPmDZt2jmNjY0vhEKhMxYt
    WoSnnnpqUIkNJwnIlDRNJwJAEwAuA5BHEATS09MxZcoUTJ48GQUFBTAYDEhKSpI0dhRFSQ9o
    bW0tZDIZurulKPY08EX6//c0ITk4ALjiiitw/fXXxzV5hCAIbNq0CRs3bgQS24FOtG4AXYcP
    H85YsGAB7Ha7lMksssfJyckSm2EwGH6VkCJqoMVD1FK6XC50dHRg//79CIVCoGkaSqUSycnJ
    0Gg0YmdCa4I3Tl0AesvLy4233XZbv3Gmp6ejpKREctYDs7c1Gg00Go204ESXgRLf+3w+9PX1
    oaurC3V1dVLZQplMJoJwp7BpSBjgADBbANGJtkIAl4CvBBGzub1q1SrMnj07tH///rfnzJmz
    o6am5gyLxSI/++yzR3zzzTdLOzs7RxAEgeTk5LrS0tKXa2trPVdffTUAvs/Atddem7Fr165n
    ent75zMME/P1amBZwwGmVCqVifLPlwLIc7lcoYceekjR3t5OilV1xGiSyLqJUSOVSgWLxYLc
    3Fykp6eHBWb+HPDRi29PBwDNsmwKx3HkpZdeGvcSczNnzsTll1+OgwcPEn6/X5fIgS5atAgE
    QXQC6FAqlZnz5s3D9OnTf/V3Azf74kHTtKQfFmskD5Q+iIfo29LT0zFq1CgwDIM333wTJEl2
    KRQK+7GSTuNg7QA8BEFoL7nkEojP3eRLQgAAG1tJREFU7dHGGy3JEMcrJr6rVCqprN1AmYc4
    z1UqFdLS0lBSUgKdTofXXnsN4Dt5Np/KFz9VAG0GUGY2mzFt2jR5oq7yueeeq8zMzGTb29tH
    gU9ka4nl569YsQIA0NraGunr62u3Wq3w+XytZrP5To/HMzoSiXDp6elHDh065LBa+VK+U6ZM
    QWdnZ2FVVdXTFEWdefPNN+Opp56C2WxOnHchCEUoFEqUg24A8DlFUWfu2LHDvHv3bpVer++X
    dGY0GkHTNNxuNyiKgt/vh9PpRDAY5DiO8wkPzF7Erv5vzBbB0aNH9yulEy9raGgYVGm8QVof
    gB6RdT3nnHOQm5uLvLw8qd6o2DBEZJfFV/G9KNERpR3Rr8FgsF+N0fb2drS1taGyslJkr5uR
    2AQlNwCXSqXCVVddhUmTJkk1VVNTU5GSkoKkpCQp7B59HA8siYcoexFbl1utVrS2tqKiogIf
    f/wx/H6/K8EbBg34CKFyCOaWQjj3OvAdZWNm27dvx3333cd5PJ4mhmGaHA4HNmzYQEyePHmH
    y+W6jCRJIj09/evFixf/uGzZMgC8rtTn8+m+++67+x0Ox3U0Tcvi5TuOZSRJKlmW1STIP9cB
    +LSiomJ8RUVFBnjJ3W/vMLu6cPDgQQ58onEreC278/TxzvxmrLKyUgQ9cSU4KioqxPcJJzi0
    Wq2Doqger9eL1tZWjBs3DjabDW1tbbBarejo6EB3d7fUDCVatiBK78SNoxgRjK66odfrYbFY
    kJWVhezsbBQUFMBsNqOxsREURUGn03VOnDgx9MMPPyRqyDYAXRRFZbS2tsLj8aC3txetra2w
    Wq1SwyuPx3PM8XIcJ4HkgeRHUlKSVK5UHG9mZiaamprg8XgAvmTjKeWnnCr4zQWQm5eXF8nO
    zk5YiDAzM1Oel5cXaG9vzxa+Q0s8zvPFF18A4DuHcRyHSZMmOe12+y6x1E97e7u0uHIcp/F4
    PPd4vd4Zs2fPxqOPPppQ8Cwy0KFQSJWAU7Hgw3pfCezWGIZhSlwu10yXy3V+WloaabFY8P33
    30On0yEvL49qaGhQCDVcPwevva0HX0mlA3HsLnk8W7x4Mfbt2xedqcudyEIYjwWX4zguLy+v
    n4Z81KhR2LJlSzxPnwRAn5KSgtWrV2PWrFnQarUnnTyoVp/Ynk3s/vf3v/8dDz/8MBiGMYEP
    9ydKE5wBIKO4uBjPPPMM8vPzj3tfouUb0cxiNKgWk1rEn00mE0wmE4qLizF16lQAfGb9oUOH
    UF5eni5s+BsTON4RGDobASBLAHMxtXXr1knvvV4vtmzZwvn9/t1+v3+3+PyUl//SPC85OZlo
    a2u73ufzLWMYRjEUFyOBEUIWvCxuC/gE0jHC60wAF5hMJjYvL09WVVVFJiUlobS0FIcOHQJF
    UR7wicUHBIKkCnzEJIzTzLZs2YKtW7fG/0Ky7JCNkaZpOQBlOBzG2rVr8e6776Kurg52ux1+
    v/83E9tFP/5bY5DJZNDpdEhNTZUkdgKzq3Q6nYlslcuJvvadd97BN998g/r6evT09MR0vARB
    QKfTwWQyoaSkRKopjV/aeicMQBsBaAsKCmRarTZhWjKNRkMUFxfLd+3aJQOf9Z0I5weO4/Dn
    P/8ZVVVVePvtt6VFc+rUqaBpeno4HF5QWFhIPvTQQ8jNzR2KZ04eIwCtEg5SOBjwMpmBjtQL
    vnX4QfAh2/FJSUl44oknYDQasWTJEhQVFeG1117jXnrpJW7jxo0kx3GHwWd2+3+DOVNHLQas
    cH46xveUJEnSKJPJFABw5plnkizL6gBI7GmsKlEcy/x+v7hr1stkMosI0mQyWZggCBfiK+0o
    BlBcVFSEc845R0p48/l8Uh1jl8slNcKJbqQivoqNVERGWizSL7b/NplMMBgMEhNgNBoxY8YM
    pKamoqenZzz4yhBdCXo+xgMwT548GVlZWYhEIvB4PHC73bDZbLDZbHC73XC73dLYQ6FQvzGL
    4Exk4VUqFQwGA1JSUpCcnAyDwQCLxYKMjAwYjUYYDAaYzWZMmjQJ5eXlqeBbK+9O0HizhGOo
    LANATjwA9EC77LLLMGPGDNhsNpAkiTPOOANr1qwBAPznf/4nDhw4MCoSidzDMIw+nt/jeBIO
    giCUkUgkFv5ZPcA/s+DDzwNrfvkAHBKOQgCT5XJ55P777/fk5uamLlmyBDk5Ofjb3/6GF198
    ER988IEMfJ7A6zh21IAAXwpRLfimaP8c02jSrbfeip9++gkul0tca1mRCRa7pCZq7QfAFRUV
    SfdYoVDgjDPOwKZNm+J23lAolC9sfKT26mJ+UXFxMbKzs5GWltYviTmadRXLjEZLzsRDzGkR
    m2Y5HA50dXVBLIYAAIFAoLSysjI1gf65BEA+AJSXl6O8vBxqtRo6nQ6FhYXIysqC2Wz+1Xij
    xwwAFEX1k9aJ4w2FQujt7UVnZyfsdjv6+vrQ1tY20F+VAjjpKgynCqCTAchSUlLIWNZ9/i1T
    KBQys9msBZ+UY0ggg3DU3+fn56t37969gGGYtBtvvBHnnXde4rZsUc6a4zhFMBg81XBtCngt
    8lkCc5QOPgyrFK5zO/iQnlU4ugWnqQRfcP9WpVI58+abbyYXLVqEdevWIRKJwG63Qy6Xax5/
    /HF0dHQk7dy5834AeeDrLLYJTjhZWOhzhQU3H0Cm8L3CwsJgBa+n3A3gCGLQqIGm6RSXy/Vn
    u90+juM49PT0gGGYLADYuHEjfvzxx7jfP6vVKjKdN3R3d18osJuEUqk8EAqF7kN85S1nAjAV
    FRWhrq4On332GQ4fPoyWlhapC6HP55OckAggB8676GeDIAgolUrJqYmZ4zk5OSgsLMSYMWOk
    uqM9PT3FwlxLhINWAJhKkqRKJpPhjTfeQEVFBQ4fPoze3l44HA4JMB8v+nC8jH+CIKBQKGA0
    GmEymZCWloZRo0Zh3LhxYm1gBcuyUwTwk4ha7QacYOg+TqYS/EpCLDrUHP1+7ty5sh9++OH6
    cDhclugLMGCuDIbgMAGYGOWfzcKcVgk+sm2Af+4SSArRP/9BoVBMv/HGGz233npr0po1a2Ri
    V0yKovDoo4+is7NTt2PHjns5jssBn1sk+ucU8NW2BvpnUeoR7Z93Ca+xyEuSCefTAuDGjx9P
    RiKRVIAvBTp9+vS4NzjZvXs39uzZA5IkzeDb1YPgT+oXxhxPino0gAydTodrrrkGZ5xxBvLz
    8yXJmclkgl6vl7S+x5OcDZSbiRsQj8cDh8Mhgcm2tjbs378fX3zxBUKhUDGAESqVqutU6jGf
    gk0BkKxSqXDllVdi8uTJksQuLS0NKSkpMBgMR5XY/daYRa201+v9lcSusrIS//znP+Hz+XQA
    poKPwpzUfZUPYoIT0SHMRFlUNSASQ2gVFRWYP3/+GX19fRdlZWXhiiuuQOIqFf2qbBIZiURO
    9uRK8Mk+txIEcZbJZEotLCwkzGazpGEWdUg9PT0IBoMUwzABgaHwCwt0WnZ2tn7ZsmW48847
    EQgE8MUXX4DjONhsNnz55Zd49NFHsXbtWjz99NOGr7766hav13s1eG0dC0APQCeXy7V6vV6R
    nZ2NvLw8JCcng2VZKTGrpaUlEggEOsB3oVwDXgJyygwtx3EKiqLGBIPBSWlpaVCpVFIGP8uy
    A3encduUCdGKLABZ4XAYfX19iEQiQSGEF09wMwmA4vvvv8eOHTvQ19cnhclUKhWMRiOSk5OR
    lZUFo9EIo9EIjUYjdbNSqXgsEN2EgaIoCYx6PB709fWhoaFBKmwvdoLyer3ipm0igH8l4FEx
    AziTZVm8//772LBhg8Rg6XQ6ZGRkoLCwUKpCYDabYTKZpGRJkXEWn7no5hMul0uqWtLX14fe
    3l50dHSgtrYWO3fuBEmSUCqV4nM6HryMoy0BY05GYqtvHG19MAylf7bZbFi2bFlhT0/PNTRN
    x32tGNjJUqwKIvgbGUVR8lPwz5cCuFVY3E0CC3wsCwtstF94VQn/J0mj0dChUMjwxBNPKLds
    2QKO4xi73U4+9dRTxLhx46BWqyGTyfQ0TS8F33jHLfjXJAHEan9jPtHgJR/bALwsMN+n7J9p
    mjY5HI6/9Pb2TgLACS3ajRzHYdasWXjyySfjjjtWrlyJ3bt3IxwO32Sz2eYJ95JQqVR7QqHQ
    sjgSHDLhfmtGjRqFZ5999oQ6GItgMXrzNrCZWRQRCbVa/SupaXV1NQ4cOIDm5uYUABNkMlki
    /HOSsB7JcnJy8MQTT6CsrOyExht9DCRzxPGKmExMHhwx4hdlW0dHByorK3HgwAFCIBGNAE6q
    6PepLtROALSYuS+2m4y3MQwjLsAMhjjBQWCXLg6Hw1lnn3221LkwUSYK54/FDJ6AFQN4VqfT
    jVm6dCmuuuoqjB49WmoAIIaAOjs70draivr6enVjY6O6vb3d5HQ6kZycjDFjxuDyyy/H5MmT
    QRAEVq9ejT179kCpVP4cDoctb7/9ds6MGTMwc+ZMvPrqq/juu++I7du3p7W2tqaFw2FYLBap
    FN6IESOQl5eH9PR0qQFBJBJBb28vfv75Z8Ubb7xRsHXr1j8IUovbMMgEJZZl2aSkJKxatQoT
    J04cUs2bWDpv+fLlcLlc8f4iZoGZgt1uR3JyMiZNmoSysjLpyMrKkmQJOp1OymYeuOsf6MRo
    mobf75fkEFarFYcPH8aRI0dQXV2N+vp6+P1+0e9MAi/ZCcZ5vCUQwqEymQxjxozBlClTcOaZ
    Z2LkyJHSnNNoNP0y1k+UZRQrG1AUhb6+PrS3t6O+vh4VFRXYt2+ftIlgWTYffJgwEQCawdBU
    d5EuDRJb8/rXk9xsRlNT0/lut7skEecTs/+j/XOUTyFYliVOwT8/I7CRJwq4lQII6Gcej0f+
    j3/8I/pXe1mWzdq+fXvh9u3bB/55qnCcLI7IA7BMANu3DsY/cxwnpygqKxAI5BwLOCVwnTVE
    IhFDFLjPiPOGzAQ+QkhMnToVFosFLMtK9Yx7e3slyZnH44HT6YTb7ZYkZ+FwGJFIRIoIiodW
    q0VKSookLxPr8ovkiEajQUFBAUaPHo3m5mY5gMmBQCAR/jkLwFgRUxUUFEiNTsT6zTabDU6n
    Ex6PBy6XC263W4qMiocorxFJD41Gg5SUFElil5KSAovFgpSUFCmZ0mKxYOLEiThw4ADAl3/M
    SxSA9gAIW61WNhQKEUqlMiE0NEVRXFtbGwNeczWkFRzuuOMOtcPhmMBxHFlWVhaz2ownA6AH
    CfraAezhOG50aWkpMXPmTLAsK2W4ip0ERVA1Z84ciXUMBALQaDQSE+n1evH+++9j9erVCAaD
    HoIg/spx3ISmpqa7H3jgAeK5557Dueeei6uvvhpXX321lBgghqGiTeyaJIbFCwoKkJ6ejk8+
    +QRCBY//FRiWwW/1ZTKUlZVh3LhxGGoTN6IJWBxKARSqVCpccskluOmmmyC2jB00ta1SQafT
    SczG5MmTMW/ePLAsi46ODnz//fd4/fXXsWvXLrAseyb4cHC8mxRMAZBqMBiwcOFCLFq0COPH
    jz/hBMjjmThHRUbHaDSipKQEF1xwAUKhECorK/Hee+/hrbfegsPhSBG+y7cJALdOJK5t9LEY
    SftQPk+PPPKIzOVyTWMYJiHsjthM6FgExyn6513Cwh7L9dUN4BXwEaDlMf5sH4DvYuSfj7q4
    ff/993jwwQfjei8JgsCuXbuOev8Igoj3xjAfwEi5XA6DwYBNmzahvLwcNTU1aGtrg8PhkKpR
    RLVfP6mNnqgvFvM2CgoKMHLkSIwZMwapqdLeaXyC/PMZ4GVCSEtLw9dff42DBw+iuroara2t
    sNvtcLvd0nhPFvOINfpFWaHZbEZeXh5GjhyJsWPHIikpCSRJgmVZizDmg4kA0DYAtvr6emND
    Q0OkqKhIGe+FnyAIWK1Wor6+Xga+k1nPUDpohmHSSJIsIEkSer0eCdIKSeb3+wcLoH0A1gYC
    gemvvPLKKJlMhiNHjqCtrQ2hUAhyuRxms1kqbxYdzk9KSoLD4YDT6URdXR0+/fRTbNu2DU6n
    0wPgrxzHbRKcf/5PP/105ZIlS2Rz587FJZdcgszMTBiNRpAkCavVCrfb3U+XZLVa4XQ6pc6F
    Irj9/PPPwXHcV+C7ULIxuoeor6+HXq9PKKtxtLldX18vMQdxNj2/vkdQXV2Njz/+GO3t7Rg5
    ciSysrKQkZGBpKQkqUHKySRTioysKHVwOBzo7OxEe3s7qqursW/fPtTW1orzVo3462QJgUGx
    BwKBtE2bNqG6uhoTJkxAWVkZCgsLpS5XWq1WSog8nq5woJZQrEPq9Xpht9vR2dmJhoYGHDly
    BJWVlairqxOrvfjAy85kCQC3PmHcQyWjCA81wREMBk2hUKgkUZElMcE0ekMcC/8Mvs1xrDTc
    bgAvAdgMPqckF3zjm1hJxr4EsAlxjD7s2bMHe/bswf9Vk8lk2RzH6RiGwd///neJsIolUePz
    +eDz+WCz2VBfXw+xYYpe/0ueLUmSFgBZLMvGE0AT4NnnJIDPP/rggw9ElUGscJrUPKi3txeN
    jY3S/NHpdFK0HbzkaQKAf5yMfz7VB6cdQKXVai276aabyNTUVCQCQAsd7Qjw2ZJtQznRe3p6
    tACSOY7DP//5z7h2rjuaNTU1xQK0HwLwWk1Nzf8sX74cFEX1gNeyBQSgZSYIQq9SqTRKpVKV
    lJSE5ORk6HQ6UBQFt9sNh8MBv9/PgNclvypMQJ9w3AWgtampaeGLL76YtmHDBimkQpKkVAkh
    EAhw4XA4GA6Hg+A7X9nARxmMH3/8cbZCoUgLhUJt4PV1zhjNJ9Ln8+HBBx+EVqsdcgAdDAZh
    t9shk8nirdfcDuBWlmWvaWxsnNzY2Jj90UcfGcTugRkZGUhPT0dqaqp0GAyGX7Xrjq4DTdO0
    pIEWtcBOpxO9vb3o7u6Gx+MBRVEcx3Ee8OUL9wL4GDHuVnc0TA/gLQBNNE1f0d3dPam7u7vw
    hx9+SFEqlXJxzKmpqRDntjheMRQovgJ89EU8QqGQtPlzu93wer1wOByw2+0IBoOgaZoVAEuH
    wGp8KVz7RDDDncJ5LUM0pTuR2MYxvzK73W6Qy+UJqyfa3NyMDz74AHK5HARBYOfOnf2Sb0/R
    KgG8BmCVMJe7wScJBgTQYRE2SdHVi46Km4Q5+Cr4JEGxccQ9wlp+I/jk8eOxwUHhcAjkVRi/
    JBmmC+vx33B61Y7+tzONRrOTZdmHaZqe7/f7x3IcZ0zUub1eL0MQhEur1dZqtdp/hkKhmliC
    2WP4528E4Drd7XanJvJaC3JCgM8bOAjgByQoiTAI4BuGYc6urKxMdLIKB+B7HL8cWtzN7XbT
    NE2HOI7j9uzZww3xrvhUd/wMgA84jiugKKoevDzCIYBXpbBBsFAUlU1RVI7H48nu7OzMBa9b
    ErerHQC2AvgEfJ3baCRqBfAw+OSSq5xO55lOpzNZcOgO/JI5bhU+pwN8dMEnfDcNy7K5oVBo
    rrBw7I3R9YqQJFkHQGu1WodSK9rPSJIkZDJZPcdx8QRZfvDZxtvAh+hG0DR9psfjGefxePKb
    mppMwr1NAqAjCEJG8AbxNbruppAsxQk/c8K99Qv30As+lN8ogIFK8HVmuxCDaionweRtAS+d
    SAMfIh0XDofHhsPhHJfLldHQ0GAUxpskMBFyCEnKxAAKmvtlp8UKczSMXxJrXQK4aBc2+VUC
    ULEh/lrCaOsSFoSJQzSVK4VnesjMZrPJaJpWJep8u3fvxv79+/sxX1EAWoZTk0ow4Ovu5wGo
    BZ906xT8s0oAz2bwFSuyhVfxvSGK7BL9c/NRNjqPCL5grgBkUvCLBKc9yjeLr/Yo/6wWznWl
    MMd/iiUZe5pi3Lh+L4Zh7A8//PCatWvXfmyxWMb5fL4z/X7/BK/XOyoQCBgVCoWRZVldJBKR
    cxxHHi1CNpCcGfjvBEGwCoWCJknSH4lEXAqFwsZxXIVSqaxkGKbCYrE0vPDCC7YFCxYkYm3c
    JRApEwFMFubgmCiMIUdsZUbi+mQDX2bzEID94BsHdeEk5XWDCd18BGAfEl8NgwNftmdIgY/H
    4+nkOO6/jUZjDsuyLE3THMMwCU+c4TiOUCqVIZlMdqpsXheA+3H08lodA1hCmeA0NcJBCCyb
    5zj3IxAFYJIB6IQFICCAKOo37mWbMLlJxK7eqEMmk/1RkcgajCf6QMrlEQF4xtuC4PVtTcIC
    K97XJAFopgFI4zhOz3GcGr/UoBVfIcwZCr+UtKIEENknHOJiG0Riyrcdz8L4hRndI/g+VRQQ
    SRXGrBM2jyoAKo7jVFHsXjhqrCFhPvqFcfYJz4J4HSJDPNYt4BPQhoLg+CqBG6RjsWl9JEl+
    ajAYRkf5F+5oICOGvjj6OZZyRHQ6nVehUPQOwj8/eIznpxN8ac9o/6zCL4w0Ifhmz2/4ga3g
    tcvJ4JMAI8LvxWf7eBfMKgCQWPrnkACs7EO9zg8wQgBccXu2g8EgXnzxRRAEYauqqtoeiUS2
    r1ixQv3ee+/pGYZJNRgM2Q6Hw2Sz2Qw6nS5Pq9VmkCSp5ThOTdO0IhKJyCmKIgFArVZzSqWS
    USqVjEKhiHAcF/D5fFaPx9Ocnp7uMZlMTpfLZQ0EAr05OTmeAwcOREiSRDgcxjPPPAOKStgj
    7BTwwbfC3E0Hn/idCb5Gs1jX3izMT4Xgv6NfCeG+RASQHImax33Cc9QFPorTLZA6NsF/n/Ic
    GwyAduEkBdf/l0yhUFAul+vL0+G7OByOweqGThTcMMKEOxX2PwyeXT6VhSTWjCwHwDWUso0T
    WYQTbOJmxikwT8dbRIiBoOTf0OgoNsKBOHU1HUL7HMDOGLM3J7MgDqnt2rXLUVpaer9SqZQN
    5TPGcRxUKhWn1+sHA7pOxj8HcGpJfBEBaJyKMcIRsyVNIHWI0+2h4jiOjffm2G7n82+ffPJJ
    VFRUoKqqigqFQhTLsr2RSOQIy7KSjGzNmjWyrq4uoq+vj+jr6yN6enqIri6+vH5mZiYyMzM5
    8dVsNnOLFy9mCILgxM8Ih8OgaRrd3d1IS0uDXq9Hc3MzOjo6huoSBwXSrG3AmiOPInCOBqAR
    BZyjX8V1jUEctPmn3QT9d7L58+djzJgxkn7VbrdLdW8TaTKZDMnJyXjrrbeGb8qwDduw/X9v
    48aNg9PpBMuy/cLYid6gchwHjUaD4uJibNu2bfjGnIAtWbIEX375JWw222n33VQqFWbOnJmQ
    duLRlpSUhBkzZoCmabS0tKC3txelpaXQarUQwXAwGITP54PHwwccDAaDdIjlSCmKQktLC1iW
    RXFxMQDg66+/Hp50wzZswzZswzZswzZswzZswzZswzZswzZswzZswzZswzZswzZswzZswzZs
    wzZswzZsw/bvav8PFQIJ/oketoIAAAAASUVORK5CYII=
  }
  set pieceImageData(Merida1,65) {
    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
  }
  set pieceImageData(Merida1,70) {
    iVBORw0KGgoAAAANSUhEUgAAA0gAAABFCAYAAABwkcaYAAAABmJLR0QA/wD/AP+gvaeTAAAA
    CXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH2AUBCw0M8qgBcAAAIABJREFUeNrsXXlcVNX7
    fu6sLMO+b7IoooILuCGiAoq5r6HmVlqmppaauWSWZX4tv2mmLWZfq59pppWmaWbilhtuuaSC
    CorINuwwDMOs7++PewYBB9BCAZ3n87mfwrl37j1nzj3ved73ed8DmGGGGWaYYYYZZphhhhlm
    mGGGGWaYYYYZZphhhhlmmGGGGWaYYYYZZphhhhlmmGGGGWaYYYYZZphhhhlmmGGGGWaYYYYZ
    ZphhhhlmmGGGGWaYUSeE5i4wwwwznnCIAViz/xoAkLlLKiBhdkBv7gozzDDDjMcCEQDObIsa
    NzhzF9Q/Zs6cCaFQKC4sLPQSCoUFX3/9dcmZM2fQtWtXc+eYYcbjgxBAOIARAIIAlAM4B2A7
    gFvm7oETgDnMDqwGkG/ukicPCxcuhFarhZ+fn6hNmza68vJyDBw40NwxZpjx+OEHIBZAKwAa
    AJcAxAPIM3cNOADuzG5ngndmNjiLbWgIAMgAWLG/ywCUNobO+adISUmBtbW17OrVq8uUSqVl
    aGjoTz4+PkcSEhLkaWlpNGrUqBqvJSJkZGTgm2++kRYUFGhEIhH997//Nb86VRe9juxFKgeQ
    DUDRFBsybtw4SCQScWpqakRxcbE3THiTiAgikUjv6el5/sqVK8nR0dFwd3fHwYMH4ejo6CiX
    y3vq9XprjuNMeaI4juOKhULhYSJSnj17FgDg4+ODwMDAtiUlJSF6vZ7jONN+EgcHh9vdunU7
    W1RUpPv0008bwzzhCMCL/Z0BoKCWeUIAIA7AMgAtKv37UAAxAN5gxqkmSAC4saOU3U/xhL1L
    QQBeZP+/F8BJ8/Ty5CElJQVSqdQmISFhklKpzPX09DzyySefyIuKigzvvPOOuYP+/RrKmdkj
    NVvYlcAcGXgaYAHAhi3sS9natTZEAHgfQCR4NQMAKAHsBLAUQEod5MGaHTpmizRPWH82A/A5
    s72vALj5NBMkDkBLAIMBRFVa+GQC+BPALgDXm+JEU1hYCK1WyxUWFnrl5ORE5+bm9svMzEx4
    8cUXv2rVqtV+AEXr1q3DrFmzqlz3+eefAwAmTpzYJTs7e7ytre3eL774It7Dw0M/d+5c83QE
    OAAYC2AMAE8AWgCXAaxnY0bXlBpTWloKCwsLm8zMzIUZGRmxBoNBT0TVGQ6kUqlGKpW+mZKS
    sq5bt24QiURITU0FEbVITk5eo9FovIjoPqIgEAiEQqEwUSQSDSIipfHf7969C2tr67isrKwF
    Wq0Wpu4pEAg4X1/f7RzHTdfpdA1NDGQAhgGYDMCf/dttAF8z46I0cU0IgIUikahFREQEwsPD
    oVKpEB8fL0pMTIwFMB/ATACFJq71BjAFwBDwURY1gL8AfAbgBJ4cOZoF7smsLczTS4VNtGdj
    jmMLkWI21zRJZGdnw9bWVnznzp3hBQUFXTMzM8+lpKRs9/Hx+YWI0vft24cBAwbcd9369evx
    3Xffwdvb2z4tLa2ThYXF34cPH5b/8MMPGDNmjHmk8A6biQBGM4KkA3CVLfIONTV7NHbsWIjF
    YklGRkb3kpISL6puGJh5EAqFOk9Pz3PXrl1Ljo6OhpeXFw4cOABXV1fn9PT0njqdzqqGdZtA
    IBAUCwSCgwCUp06dAgD4+fkhMDCwfUlJSYjBYNrfxXEc5+DgkBIeHn62sLBQt3bt2oaeI7oC
    mACgPXhn3DUAWwAcrWGu8AHwNoDoav9uzdY0SmaTSkxcawtgEHglhD879xSATey+TwoZbwag
    E+tf/6eZIAkB9APwlrFDpFIpAECtVncA8AyAkYxt/9bUJhqtVgudTkd6vV5jMBigUqmsVSpV
    b4VC0bGgoGBPhw4dvrxy5cqpqKgo/ZEjRwAAkyZNwiuvvIKtW7eG37hxY01+fn5XJyenATNn
    zlw0ZsyYHRMmTNB/9913T7MxsgIwD8BrEonE2tbWFjqdDsXFxUFE1AHAawD2NaUG6fV66PV6
    rry83EKpVAplMpnQ0dGxyudyuRw6nU6g1WolAGAwGCAQCFBWVgatVissLS2VGgwGkbOzMywt
    LauQr4KCAnAcJxaJ7n/N1Wq1RKlUSoRCIVxdXSEQCADwEau8vDwolUqo1WopAIFpO/nYIGbE
    6G2hUOhka2sLACgpKfHT6/VtGWn+wsQc0RNASHBwMNauXYv27duDiLBjxw5MnToV+fn50QCC
    ARyvdp0zgOUAnpNIJGJbW1uo1WooFIoWjHTNYoufpkyKZAAMIpHIXqfTCdi/27EFnwC8J7Ts
    KZtfBGw8jADQA4ALI0h5bIzsYM6YJqdsUCqV4DiO1Gq1rqyszLKsrKxHUVFRl8LCwmFt27b9
    yt/f//eIiIjiEydOwBhNTkpKwrBhw+Dv7+9w/vz5hfn5+ZMcHR1/nzhx4rtjxoxJ+fnnnzFy
    5Min2R5ZswXtLNxTvwB8tDoEvHT116bUoOLiYkilUpu7d+8uzMrK6k1E9zmCiAhSqVQtlUoX
    JiUlJYeHh4PjOKSmpkIkErW+cePGGrVa7V6DokEoEAiuiUSiS5UddqmpqbCwsIiTy+Vv6HS6
    GglSs2bNthsMhukajaahHXYDAXwAXiZnRBfwjv4lAL43MU/0AB85qmnuGQxgswl7ZMnG0mvM
    1hnRnR1zAJx9Qt4po5SF0EjSfxqKIEUDWAUgyMfHRz9gwAB9cHCwQCAQcFevXjXs3buXS0tL
    68zO0Ta1ha+joyPc3Nx0169fLwGANm3awNHREWfOnLHPzs4er1Qqu5SWlv63W7du27p06aLY
    tm0bhg8fjt69ewdcuXLl3dzc3K4CgQC5ubnNNRrNik2bNpWcPXt2/5IlS7Bs2bKn1SBFApjs
    4OBg/corr6B3794oLS3FN998g927dwfq9frZ4L388iY1I/ALEiIiDB06FK+//joEAgE4joNc
    LsfMmTNx69YtMhocsVgMOzs7MNJDAMjW1hZLly5FZGRkRTRo165d+M9//gONRgOO42CC5BAR
    oX379vjoo49gb28PIoJGo8G7776LPXv2oNJk9agnxdru0R7AdKlU6jR27FjExcUBALZt24Yf
    fvjBWa1WzwBwDMDFag4YbwDCoKAg+Pv7V/R1+/bt4eTkhPz8fBvci1pXxlAAI1xdXcUzZ85E
    9+7dkZOTg88//xzHjh1rwxZEF2A68vQg7WlI2AB4nZFHDoAzx3F2zFP8TqU2nWELgMKnZG4R
    sQXKW2y8CU2Q7aEA/sOIUpOKJkmlUlhbW+s5jqtYlGo0Gmlubm5vhUIRWlhY+LOfn98qANdX
    rFiBRYsWYe7cuejUqZNVQkLC7IyMjFkqlcpSqVSOPXTokEV0dPS8FStWpOHpRg8AL1QjR0Y0
    B/AqW7hmN5UG6XQ6iEQiTqVSWSgUCiERmSzipdFoOI1GIzY67DiOg1KphFarFSkUCgvjZyaZ
    gEAgMeWwKysrkygUCkktBAnl5eWNwWHXHLyjtpWJz/zYZxcBXDFxnXUt3+sAIMAEQYoBMK0a
    OTKSqu4AZoOXoxU3UULkzdrNWVpadi4vL5cSEQegA3jlBgDcBa8YeezOqYYgSB7MSAe1a9dO
    88EHHyA6OlpiYcErPNRqtWDIkCH6xYsXG/76668W4HMFrgJoMhOyj48PunXrpjl8+HAOAHh5
    eWH58uXYv38/vv32W9y6daulWq3+UK/Xt/H39/8wLi5OHhsbK9mxY8eUvLy8GGdnZ0yaNAmH
    Dh3CuXPnmqelpb0xYMCAxD179jytRokDH9J2j4qKwty5c2GMtDg7O+PMmTPIyMhoy7x38qba
    SFdXV7Rr164imuPo6AhLS0uwCcNy2rRptkVFRdypU6e4IUOGGBITE20BCEQiEQICAtC2bduK
    77pw4YKRfAk8PDxsYmJibMvKygQAYG9vbzhw4IAUAGxsbBASEgIHBwej8UPlKNYjhDtbZLRk
    C85L4HNgqnsHOwDwDwwMxPz589GqFW+XAgICcPr0aSQlJTUD0LEaQdIbF/dyuRwKhQLGyFNO
    Tg6USiXA568VVbuXGHxRB1mfPn0we/Zs2NjY8BOlSIQLFy6gtLS0LTOE1cmDG2tPEHht+OUa
    2tOQsAbQB0A3AAYWPTJGkNpW8tzZgpcJPS0EKRbASlTNVUM1wt0OwIdsrO5EE5K1uLq6onnz
    5tqLFy/mV/OQQKVSOWZnZ09Wq9Wtunbt+n5kZGT8qFGjDNu3b0dwcPDAzMzM6SqVypLNDcLs
    7OxhYrH4zpAhQ952cnJS7d+//2m1R53YO18TQgAENiWCVHloPMDnBABCoRBSqRRCoRAAqIbI
    URWiY8phV9d1D/Fs/xSW4CPILZj9SAKf4lE9z6cjmwtqQktmQ6oTpPK6+CkAlYlxFs1sZU3o
    xsbZORPtacM+07G2mGpPQ8IBwEfMAQW1Wm1BRLbsswWszwTMlr7UEBygIQhSLwDd7ezstIsW
    LdL379/fsrq3q1+/fkKFQqGbNm0aCgoKugLoDeCbpkSQpkyZovbw8LgtEAgMaWlpAjs7Oyxa
    tAhRUVFYsWIF9u/f75iRkTFTr9fbt2/fftHFixf98/LyxnAcJ5o4cSLefvtt9OjRA9OnT0dW
    VlaP5OTk6R4eHp9ERUWVOzo6ljs5OZUrlUp8//33T4NBEoOXvMDDwwMymayK8Wd/WxnPaaqo
    yTOm0+mEd+7ceT47Ozuq2r/bGwwGB1PXGv/mOM5Lq9V+cejQoSoTdGlpaQu9Xm/yGR6Dhy4U
    vBShD3i5F4GvoLaVLUIzK51rC0Dk4OBQQeKM5JGRHrEJ7xqYwcg8f/6858qVK9G3b1+oVCp8
    9913yMrKAjOAidWukbL7wc3NrYpk0dPTExKJxGh47EyQuLcA9K3UnjzWnv+CL/DQGJAHYKHR
    wItEomC9Xv88I+CbmSPKAF7XnvWULHa9mMOuxQOc68vOvcA8mk2GIK1atap806ZNdzmOI/Z7
    3/Mm6PXC/Pz8Hjqdbr1SqVy8atWqbWVlZZ6nT5+eUVZW5lJtzhHn5ORMPHnyZMKZM2d+3rp1
    K8aOHfu0ESQR+NzE2tDk7VHtPIezmjt3rm1hYSF35coVxMXF0bVr12SVHC41XSjw9va27d+/
    v61SqeQAwMHBgXbu3Clt4DngNQDPAnBlc2AGgP8DsAF8MSAjXGA6amiEBfj86Or4G0BuLWMi
    ndmk6vaorjFkY4Koe4JXOoxinxnb8w2A/1VrT0PCwEghAeAMBgNVc0oJ2WdqNFDe7+MmSAIA
    YQBsOnToUNa7d+8aQ7ExMTHCzp070/79+62Yt2YLmkjVjnfffRdhYWGQSqWZRUVF5Xl5eVaZ
    mZlo2bIlIiMj8emnn+L999/H1q1bxdnZ2ROkUqnI2tpao1QqmwUHB2PSpEmwsrJCbGwsxo4d
    i48++khy+/btGXK5fIClpWWBVqtNJqIrzZo1u9WmTZuL/v7+2bdu3dImJiY+qQZJCxYZunbt
    GtLT0xEQEAAiwpUrV5Cfnw/wORNPVKnMSmSFy8rKCmTeoAciV8a/9Xq9VUZGRmSNM5TBgMcs
    WfAEL+ca6unpidatW0OtVnNXrlxxKSoqms68RksredMyAZSlpqba/P3333By4tclFy9eRGZm
    pvF3TzVxn1MAviktLZ3z2WefWW3atAl6vR6lpaUgojQAa8CH7itDyQwVLl++jDt37sDf3x9q
    tRonT540Rp4KqxE4D/a8Qz08PNCmTRtje1wrteddE97BhoAOvITjOFvsxoCv9CcA8DOAP/D0
    oSf4/IGHIfd9AHzVVBro7OyMZs2akZOTU3ppaamuvLxcbGr+KCoq8jcYDB8uXryYk0ql9gqF
    orOp7ysrK3O9c+fOu35+fsEcx2V17Ngxx2AwJNnY2OSEh4cXJycnG3bs2PEkjxkdW+zWBiWA
    nCex8Xq9XpSWlvaCXC6PRqW8EZ1O56jX623rIiNarfazffv2qSpfq1AoWppy2D0G2IDPJZsG
    vnqaEa2Y00sAPsqhqeRkUrHrTEEN01HDkwB+BPCyiXV3CSMuSSa+q641TWm1cSZj7Zluoj1v
    s/asbiRr6WL2rP8FH33sSkQfgXd6LgFwkI2RAjRQJPZxE6QKRhwUFGRpb29fYyKWvb09FxAQ
    YPzclTHzJkGQZsyYgfPnz0Mmk10VCoXZSqUyICkpCVFRUQAAf39/rFy5EjKZDOvXrxfduXNn
    rEgk0hoMBkG/fv0qZEQSiQRjx47Fjh07cPPmTZuSkpJ2xcXFABAlFAqRlJRULBQKb2RkZByW
    yWTxAwYMOL9ixYqCnTt3YunSpU8UVwBfHeb2yZMn/WfPno0ePXqgtLQUv/zyC/Ly8gC+utgT
    xRBtbGwwfvx4REVFVcjuTC1srK2tK/JsjAgJCcGsWbMqcpBqurZly5YwylsfE3oB6O3l5YWP
    P/4Y0dHR0Gq12LRpE5YvXy5WKBRjAWwDn08GAAkAzqanp8e8/vrriImJAQAcPHgQGRkZAK/z
    P21qHccMQa5er59QVFTUmhmcU+CLOuzH/XINYv8+6tixY97Tpk1Dp06dkJubi71790KtVusZ
    iagc6u8NoI+Pjw9WrVpV0Z7Nmzdj6dKlkrKyspGMfJxt5O/X01iWWGh02D3ENZbsGinuaeQb
    Nc6fPw8fHx9YWVndTk9PL2T21CRKSkp8UlJSPrKwsFCq1WqrmuaNnJycYADvisViys7OVnAc
    lyWTyW4nJib+aWtre6Jnz55Xtm3bVnD69GkMGzbsSRs3BOAw+LLMzWs45zj4SOyTSJC49PT0
    IPBy4odjljqdVVpaWo9G1Jxu4KsQSkx8Zg1e2rUX97aE+At8pD28hu9LZjYLJkjQCmaX4nAv
    snObOVu+xf25jcZ1z/ha3tnTqFrtrRuA52ppzwvMhv3VSN6jHCPBIyJn5nzg2Lt19WkzSBK2
    OKExY8aQQqGgmqBUKmn8+PFGw/0dak9wa3SIiorC6NGjbby9vXcDoHHjxlW0t7S0lPbt20cj
    RowgsVhsbCPZ29vTr7/+WqUfSktLady4cQSA2rZtS1OmTKEePXqQm5tbxbUcx5FUKs12d3ff
    GRISMnLChAm2/fv3f9LGjhjAFI7j0iot6Ii9UIfxcF7gRoFBgwYhLi7OydfX9xAAmjNnDun1
    empIlJeX04QJEwgAtWjR4sclS5bYTp06tT4XpEsB6AcMGECFhYUV901MTKQ2bdoQMyCjq13X
    hxkdXaXfXcO8cjF13JMDn8SaBV4X3v0BnDizwUelDJXupwTwA/iE0sr4AAD169evSnuuXbtG
    LVu2NF43qpEOwRjwnvBc1sdPGyzBy07oIY8fwaSYTQHLly9Hly5dEBsb6+7i4nK6rvZZW1uT
    hYVFnf3g7OxM/v7+JJPJKv5NIBDopVJphouLy+5WrVq9EB0d7fHjjz9y8+bNexLt0WTwG05X
    t0cHwOeqNCk888wzGDp0qHOzZs2OsJygRnNwHPco7BHAV4HT1nLvMgDjqtmTZwHcMHFuKoBJ
    qF1maAk+inSH2aMBuL8oTGVYga/mXFDtXgbm7OtW7fwF1eykqfY0Vk1sL/BKoQLwlQIbHILH
    fD8Nm1B0V65cMXqATSIzM5OuXLliHAi30MTKztra2uKHH34oJaILAHDixAlcvXoVer0eX375
    JSZNmoQdO3bAwsICPj4+EAgEsLW1RUBA1fWXtbU12rXjcwKbNWuGd999F1u3bsX27dvxwQcf
    oH///rCxsYFarXaTy+XDbt26tf7s2bNrXF1dO+/fv1+wYsWKJ8UgaTmO225hYXGkWjSlhC1y
    mnypy5oiPU/QMxB4LTHpdDpU3vOi0t/GcyrjEPPkvQPgF+Z1S2Lk5PAD3NOTeey8UHvCK8BH
    BTYwj95d5sX6PwBzmTG9Ve18A/OqorJEpNLfBjTO0tBiNv+nsXZyNXgdn2To8c+kjyo0oa0n
    Fi9eDD8/P7z88st5lpaWJ2p6x52dnTFx4kSsXr0a3bp1q/N7u3Xrhs2bN2PDhg2YO3cuoqKi
    YG9vL1Cr1Z65ubmDb9++vfbq1avfrl+/fqS/v7/s1VdffZLGjhbAT+BlQJWjrwrw6QB/wYxG
    b3LBK5O4OtbIFtXsyS5Gcr4CX/HTmD/0HkyX+K4+d1iDl2Z7MQJUm7awDLzE7zNGqu6Ar9q6
    GryMrnq0qq72CBvxPK8HL0lXoZFUCm2IIg3HAWRcv37dd8OGDVi6dGlFpSgjlEolffXVV/pr
    166JwGsP/0QTkoDMmjUL69atQ+fOncPLysoGA0B6ejri4+PRrl075ObmQiQSYfjw4Rg1ahSE
    QiGWLFmCli1bwtX1/kiqi4sLJBIJCgoKQETw8vKCl5cXevTogfHjx+PQoUPYsmULjh07huLi
    YueUlJQXSkpKuiYmJn7s6+u7rUuXLoqIiAisWbOmKU9mFkQ0VqVSxYrFYvTs2RNyuRyJiYn2
    bLK6DtNSqyaDnJwcXLp0qUGJkkajQUHBI8vhNICXQSovXLhg+9NPP2HQoEFQq9X4/vvvcefO
    HYAPt980cd0VdkQywxQAvtjAnjrmBhvwCfgc+//AB3hOa/ARSVfwybWLUHPRgksAFJcvX7b5
    +eefq7QnPT0d4JNjbzWyRUEQI5zR4AsPcOB14EcYOUzE0yG504CXcugewhYa2DWqptTQ27dv
    Y/369bbl5eWO1auIcRyHsLAwzJs3D4MHD4ZOp8O+fXXvrCEWi9GmTRtERETg2WefRV5eHs6d
    O4fvv/8e8fHxyMvLs8nNze37119/heXn528NDg5eR0Q3Dx48iD59mnzA0gL8JrGDqy1I7dnC
    9SZ42XeThUAgMFana1DUVPq7nhx2t9i7LKvhHAV42Vx1cnyEkZNwAJ8ysuOIutNAJMwGicFH
    oVs+SBcwQuUM3hE8gz2TqXslMVJVU3vy0fgqQnOs/4KY/RezPrrJCGGDORgbgiBdAPCdVqud
    t3HjRovAwEBMmTKl4kU0GAy0detW7YYNG8QajUYLXtaS0JQmlpMnT+KZZ55pdfny5RXFxcWh
    QqEQOp0O+/fvx8SJEzFnzhyMHj0afn5+sLe3h1qthr+/P2xtbSuS0CvDyckJUqn0voR6juPg
    6uqKMWPGoE+fPjh06BC++uor/Pnnn1xmZmaboqKiVdnZ2W1DQ0M/WLNmTdaePXswaNCgpmqM
    XgDwjkgkcouLi8OyZcuQnJyMN954g7t8+XJ35mWZg/vLXTZqGIswcByHXbt24dixY4+rktz9
    sxQjZvn5+ZVJWn2ztWMA9ufm5j67YMECbs2aNQadTsdlZGRwKpVKBV5Om1SHsbBiJOYZAF+j
    atGE6rDDPVmckP1/XfkjoYwgWYCXRNRmoQ8D2CeXy59dsGCBYO3atdDpdEhLS4NarS4Hn0/V
    WHIROPCV9t4F0EkqlQqtrKxgMBigVCoddTpdW/CSjbfB69SfBpJ0jC0YAh7w/EzweQFNpm8G
    DBiAFi1ayPbt2zevuLh4VOXILcBXaFy5ciViYmKgVCpx7tw5pKXVvYYqLCxEXl4e7OzsIBaL
    4eHhgcGDB6Nnz544fvw4Nm/ejAMHDiA/P9+5tLT0ldzc3E6hoaHL+vTpc2Dq1Km6L7/8simT
    o8ngE8lN5YZ0YfZodlN12hERoqKiMHjw4Ib1YGg02Lp1Ky5duvTIlmvgnfb9aiBQ+3Av/6g6
    ysEX7bFgxHgg+Gqg2XXYI2PemoDNOxaovQx4EHgJtDUjWPm1ELHjbE7rX0N79qNxRTctwcsM
    XwVfGt+G2an3mQNiHfhtFZR4iuADPhSpCw8Pp7t371Zo9zMzM3Vdu3ZVgQ+37UTNSZCNEsHB
    wejTp4+tu7v7lwKBQO/l5UUzZswgLy8vcnFxoaNHjz50XkhaWhrNnz+f/ve//1F5eXmt56am
    ptKcOXPI0dGRAJBYLNb6+vp+M3bs2GYAoFarm9pYsWQeuWyxWEzjx4+nO3fuEBGRwWCgAwcO
    UIcOHYz62qMAOjeVhg0dOhRjxoxx9PPzi6+s+RaLxeTs7EzOzs7k5OT0yA/jfUQiUeVcAgoM
    DPxh6dKlNtOmTavvpocwIpTNvF1K8Hkw38D05q2V0Z0taAn8PkZ1ZYB3BHCnUv8eQu37l4jA
    yxeM+UeHUUtSO0Mn8HkHeaw9pcwzuRx1S/oe6/QE4IxIJKKoqChat24d7du3j3799Vd65513
    KCgoyNhHZ9i5TwMk4KtVlaLuXAgV+ERry6bSuLi4OHzzzTeCkJCQKdbW1oWoIZfo22+/pb17
    99Lzzz9P3t7eJBQK68wLsbKyoujoaFq1ahVdvHiRVCpVFVtUXFxMW7ZsodDQUOP+OCSTyW6F
    hYVN2LRpk8WCBQua4nixBO/Blz/AeDkOfv++JoFKOUhHAdCMGTNIq9U2aE5sQUEBDR48uHJO
    rF095yAZbcofzA4Z0zoUjBy1rePaMPARZQKfO1OXBzoQ9yL0BD4S5VbHNQtwL08qAXw0qTb0
    YGNPWek+xQC2N7J5XcKcCDlisZh8fX2pW7du1KVLF3J3dyeBQGDc/mMRqsocHxsedwTJCbxE
    pqeR+BQWFqK8/B55Li8vFyoUCgH7UZuBr+d+DLzMLrcxTzAffPABFi5ciLKysv6FhYVxYrFY
    MH36dMycORNBQUG4e/fufTlGD8QmfXzwn//8BwKBoE75la+vL9577z2EhITgo48+QmJioigz
    M3P8yZMnJUOHDl3s6uqaSkSNIt/lAeAAYAqAuRKJxG3s2LF477334OPjA4CPePTu3RsfffQR
    5s+fj7/++qsHgI/B56ocQQPVzn9QODs7w9vbu/Ty5cs/WltbByqVymZEBGdnZ8yYMQMREREm
    N9WrT3AcB4PBgPj4eGzYsKEiemRjY3NTKpX+0rFjx7LDhw/X922vMI9RBzYPWAAYDl4K547a
    9w3icC930o55n/ah5ohQcwD2Xl5eKCoqQmlpqTd4KURNGwo3Ay894yp5+VDH87RiJGob8zaq
    wUeNruDRSbGE4KUIQvARrro8Hxbgpagde/bsic/+YMDbAAAgAElEQVQ//xxBQfeKUPXv3x+R
    kZGYPXs2rl692pGdu6AOz6ZRwy9iiwotmkilUSMEAoHGYDBsEolErfR6/XNEVNPvbQDwK3h5
    Z5OR1x07dgw3btwITUtLe1WpVNqbOicvLw+vv/46ABi3THgglJWV4fDhwzh+/Dj8/f0xcOBA
    jB49Gh06dIBUKoWtrS2ee+45BAUFYeXKldi9ezdKS0v9U1JSPli/fr11XFzct5MmTSr/5psm
    s8WhI3sv5jyA08S48Dbao0ON3R6JRCKIxWLiOE4PAHv37kVwcDDGjh0LOzu7x/48ubm5WL9+
    PU6ePGncYNYgEonoEaxdTrB1Rm/ck791Yu98Xb9Z5c22HcBHbv6oZR70ZePICC+2Lq7JHrmC
    j/qLHtAeGYmHFsBu5kzUgs+lPYjGVXo+CsAcOzs7lylTpuC5556Dq6sriAgpKSlYv349fvnl
    F0e1Wj2L2dNdTypB4pgnZTb4UKETx3GwtbVFv3794OZ2j0C7urpi4MCBXGZmJldcXBxGRGHg
    Q22HAXzCmHGjS3p+8cUXsX37dkRGRtonJiaOUqvVDlFRUZgwYQLs7Owwbdo0GInJtWvXcOfO
    HYSFhVVpe62roYfQAstkMjz//PNo3rw5Fi5ciISEBFF6enqcUqnUBQQELPT19W0Km0D6AXgD
    wARLS0ubcePGYenSpfDy8rpvgR8TE4OPPvoICxYs4M6ePdsdfKXED8HLMxttaHbjxo0ICwvT
    REdHf/3nn39mZWZmLi4sLOycnZ3N/fTTTwgKCsKQIUOMG5Q+EqhUKmzbtg07duxAfn4+RCKR
    3t7e/oivr++Kzp07H/7kk08M8fHxj+LWheydPswMxhDmPJkKviBCaS0GibO0tIROp4NWq+3J
    iNXVWgiSrGPHjkhPT8f58+cd2NhKrMX7FmhlZQW1Wg29Xi9A7TLDFsyJE8II0ld4dPIrJwCt
    AbRnhtaGERQV+BypO+B3HU8DH12rPE86A+hlaWkpGDVqVBVyZJxfYmJiMHnyZLz55psCtVrd
    i12TXq3v7Vn/GZ/BC7z0Q81+M+Mz/A0+QtiYpWiuBoMhBkC0Xq9vV4cjggO/M/2b4CPVB1G7
    tLPBMXjwYHh7e0t27dr1nFKpDK7JVggEgociRtWh1Wpx48YNJCcnY/fu3Rg+fDgmT56MVq1a
    geM4dOzYEZ988glatWqFTz/9FAUFBZ6XL19+Oz8/Xx8dHf1/kZGRmuPHjzd2e+TPHAbjUHN+
    hyl0A/A5+By/72uZ1xocbm5u8PDwUCQlJe2QyWQtU1NTvd58801cunQJUVFRjzUfSavV4rff
    fsPOnTuhUqlgZ2eXYmlp+Uvnzp2VR44ceRS3vANerm0kOluY8+06e+fLa7NH1Rb9/uy6muxF
    ZbbpwM6vSYbdic21Nd2vOlyYPerJ1kDv4NEWPODY/G/DiKWRnCnZUZMzyQa8TLXZ0KFD8dZb
    b8HOzq7CGezj44PmzZtDpVJh9+7dHozAHmV2zRQs2XtptIlqdijBR88MjfW948DrOy8CMMhk
    MkOPHj0M8+fPpx07dpBcLr8vrJqbm0u7du2iRYsWUVRUFNnZ2RnDhNfAe5qFja2RcXFxsLGx
    QWhoaHdLS8u7VlZW9NVXX90nlXv33Xepbdu25OzsTKtXr37kIepjx45RWFgYASCRSFTu5+e3
    8pVXXrHu06cP5HJ5Yx0vnZi3Vmtvb08LFiygrKysWttpMBjo1KlT1LdvX6M8JBe8jtUNjRyT
    J0/Gt99+y3Xv3r29h4fHVolEUg6APDw86MMPP6SCgoJHMjZycnJoyZIl5OzsTABIKpWW+vj4
    bIiMjGxBRJg9e/bj6gJr8FXjjL/b8Dq8TpmtWrWi9u3bEzNcM2s41wLABoFAQEuWLDGWL9cw
    A2JyvQhgi1gsppiYGLK3tyfwGvWaZHJiNsa0bDJ+8RF6rp8Dvx9HBmtzdTmPgS2+UgD8BmAh
    +FwqoxysC4B0FxcXOnjwYI1j4sSJE+Tu7k7sPkZ5kBV4qeJC9t23mOExmHgO46bOh1h/uDbC
    V07AFhC/MIP7sGWHS8BHLfuiYfJ468SECRPg7u6O0NDQljY2Npeqt8HW1pZGjBhBW7Zsof/7
    v/8jf3//eivJLBQKKTw8nLZv305KpbLK1h0ffPBBhT23tLRMCwoKGkFEaMRyO469O3tRezno
    uo488PJM98Zsizp16oTp06dL27ZtO9zJyekvgUBgEAqFZGtrS3Z2dmRnZ0e2traP7DDew8bG
    hgQCAQmFQr2Li8uRTp069Zk8ebLQuA/eI4YV+I1bjfNg31rODWfkqnIZ7am1zDsfmpgvX6vF
    vqypdv551C5Dn8rsgK6W760PWLC2zwOwFXzxiKuMGP7N5v//MdscwZx7lYmdL4ArMpmMNm3a
    REREN2/epGXLltFbb71Ff/31FxERbd++3ThfJINXalR+Lx3YM7wCYCN41dA1dq7xOfYAWMZ+
    w4femuFxTO5d2KBo16xZs/JFixZxQ4cOlbq4uEAkMn17Z2dnDBkyBAMHDkRubi5+//13fPjh
    h0hKSmrNJpkCxiYbDcrKyoye2ACBQODm5+eHHj3u7Yd26dIlvPXWW9i/fz+0Wi18fX3h6en5
    yJ8rMjISS5cuxYwZM3D37l1pbm7uS8ePH79y6dKl7+bPn9/YvLtCNpCXAQjz9vbm5s+fjxde
    eOG+Sof3WTGOQ3h4OD799FMsX74c27dvd1apVK+zF3EpWzg2Snz99ddwcHCgEydOXOrbt+9r
    t27dSs7IyJiWlZXl/P777+Pq1asIDQ2tV1kkEeHUqVPYs2cPysrKIJPJMj09PdeEhIT87+7d
    u4VTp07Fhg0bHlcXqMFHKgzgoxbTwGuts2ry2Dk6OqJ79+5ISkqSqtXqWOadrV5+zw5ACysr
    KwQHBxs32xUzj50I9xdfaAWgm5ubG2JiYnD58uW6PHbhzKMsYvd+FBLgIObBHArAzsLCAp6e
    nvD394eTkxOsrKygUCiQl5fHyeVy66ysrACFQhFgMBj6VPK6/craLQaA6kn6VTr3noxXxHGc
    PxF5g4/u9QDgLRAIxHZ2dvD09ISrqyucnJwgk8mgUqlQUFCA1NRUUXp6uqtKpXIFnw8YC778
    bWMpVCEAnyewAnxE6J/Ahjn9AgEsBr8RcKMq+61SqaBUKiGVStuiWh5vQEAA3njjDYwaNQqO
    jo5IS0uDu7s7bt++XS/31uv1SEhIwMyZM5GcnIxZs2ZBJpPBysoKM2bMQHFxMVavXg2VSuWT
    l5f3Zq9evVKuXr16acKECfjuu+8amz3qx+xRB/y7gjVO4KV5vsyrf7Mx2qJz586hdevW6unT
    p//y/fff30lJSXkzPz9/cElJiYStb+Du7g5ra+ta55GHfikFApSUlEAul1dEEaRSaZmrq+u2
    gICAD+Lj42/MnTsXhw4dehzdUF7JHnmCz4H+i5Fck/aoWiSjL3j1SnG1c21xf069qBZ75At+
    b6DqhL0mtGJzvjUjao/CHnHsXXiB2QUfAEKO4yAWiyESiaDT6aDRaABeqq5h/WYkKwcZgXEH
    4GBpaVmxDv7++++xbNky6PV6yOVyrFu3Di1btoSNjQ2Ki4ttGTFMBh+FiwEf4WsPPmomNY4j
    kUhUeZuNEHZeDnjp41fM6dko5K6O4BPDKCAgQLl3795inU5neFhPt16vp4MHD+rbtm1r3ABr
    b2OLDISEhEAikcDX1/clsVhsiI2NpezsbCIiunXrFg0YMKBKEv5777332BIgNRoNffjhh2Rp
    aUkAyMHB4VLPnj07AMBbb73VmIzRcPAVzCgkJIR+/PFHUqvVJttUVlZGGo3G5GdyuZzefPNN
    cnBwMG7c9zMerJxmg4KI0KlTJ8yaNcsiODh4vKOjY9Kj3rBPIBAYnJyczoeGhg6fM2eOODw8
    vKGa/wqbTI3J8LNhWm/dB0B2ZGQk7dmzh1q0aGH08vU0cW5rANc9PDzo7Nmz9O233xo3wNyN
    qjpwI94AoBk2bBjt3LmTnJycjAULTCXF2oGvWGTsy1uo/4Ts9gB+B6CTSqUUHR1Nn3/+OV2+
    fJlycnJIoVCQSqWi4uJiksvllJycTLt27aIFCxZQr169jOOfwMsZLwJQSqVSWrduXY1zxcaN
    G8nKyooAlHEcd9UYYXF0dKTevXvT4sWLae/evXTr1i3KycmhkpISUqlUpFAoKC8vj65cuUIb
    Nmyg2NhYY1/rAcSDj2Y1BnRnns76eoeS0Qg32e3RowdkMhlCQkImWVtb643P6+/vTzt37iSd
    Tleh1pg2bZrxN6/3w8HBgVatWlWlgENmZiaNHDmyohiMj4/P5nHjxjlFRUXVG0mrB4hQ84ag
    VQ6RSEQ+Pj7k7OxMDzBf68HnUrRpzLZo6dKlAIBnnnnGvUWLFh9aWlrmGdcuo0ePpmPHjlFK
    SgolJyf/q8P4HX/88Qc988wzJBAIiOM4kslkmUFBQYtGjRrl2L59e7z55puPre0s32lqJXuk
    YMTDpA8a/D5ylX/juwAiTDg0fRnRqj4m9nAc52Ti/Odxf/GYvwB4m3gOCfh9AXXgN9bNEovF
    sdX2jKyPNdog8FEsg0gkIn9/f4qLi6O3336b1q5dS19//TV98skn9NZbb9GLL75InTt3Jicn
    J2PBhXLmKFsL4HUA2XZ2dvTjjz8SEdG8efMq2jl+/HhSqVR09OhRcnV1JZFIVOLp6bkSfE7f
    VfZdJJPJqHXr1vTss8/Sq6++Su+99x6tXbuWPvjgA5o3bx4NGTKEmjVrVrkAVRJ4NUaj2Atq
    BIBCKysrw2effVZuMBgM/2ah//XXX2tsbGz0bMBOaEwTyo8//ggiEvj4+CwBQH379iW5XE5q
    tZreeOONKlWBOI6j995777FWg8nKyqJhw4ZVSCACAwM3Llq0SPbyyy83li4cyBYbFB4eTkeO
    HCG9Xm+yLUlJSTRz5kz6+OOPqayszOQ5paWl9Mknn5CLi4vRKP1Uw8TS6DB9+nR89tlngp49
    e/ZwcHA4CiaJiYyMpD59+vyrIzY2liIiIsjS0pIEAgG5ubn9FhUVFXru3Dlu4cKFDdnsZwEU
    Gw0k+DyWdibO6wtA3r17d7px4wZNnDjR+Psuw/3S234Actu3b093796lo0ePGsfDZdxf1tkV
    wH6JREJffPEFHT582FgJ8hzzIlbHWAAFbOIn8NsX+NdjfzRjRI4cHR1p8eLFFdUb64JOp6PM
    zEzavn07jRgxoqKipfEYOXIkFRYW3nedQqEwyhArDkdHR4qLi6Off/6ZsrOza3wnqyM9PZ3e
    eeedCvkmi2I1a+BXyxm8rK6+icAfqLv64mOFVsunHfj4+Mw0Lg5sbGzoiy++qCBHRrLSsWPH
    R+qE8fDwoJ9//rnK+EhISKDWrVsbpXZlHTp0mEFE3Jw5cxpLFw5lTo8629e9e3c6ceIEfffd
    d0anSl2Hgb3bfo3dYRcVFYXXXnvNKjg4+AUHB4frHMeRhYUFTZ8+nUpKSuplbSKXyykuLo5E
    IhEJBAKDs7PzXx06dBg5a9Ys8YNsWFzfYFGIEagqvz0NPppfHT1ZtKny76sDv1VCdXYSboJM
    EYArAoGgeTUyY1PNAWc8LrKoTXVEo6rUL4njuLb12C0cgJHGNZqnpyfNnz+fzp8/X+M40Gg0
    lJaWRr/99hstXryYunTpYnSaGVjfajmOozfffJOIiH744QeytbUlqVRKn332GRERrVq1iiQS
    CQkEAoNUKi03ErOgoCCaNm0abd68mRITE6m0tNTkMxQVFdHp06fpjTfeIC8vr8oEdiIaOFVH
    Cj45kWJjY3VyudxQDyUfdYMGDTLq7zeB14o2CowfPx4vvfSSfUBAwD4A9NJLL1F5eTmdPn2a
    /Pz8iOM4cnBwIKlUSn5+frRv376Havvt27fp448/pr179/7jyFN8fDz5+voajWV+9+7dRwJo
    DPpvH+ZlptDQUPrzzz9rbcfGjRvJwsKC2rRpQ2lpaTWeV15eTqtWrTJqWMvBJ9kK0QSQkcEX
    cnN2dp7PcZw+LCyMLl68SDk5OZSdnf2Pj9zcXDpx4gT5+/uTRCLRtWvXbqZIJMIbb7zR4E5v
    AGlubm4UEBBgJD2fmHjH+wHIiYiIoIyMDNqyZYvR+33CxAJ8BgDt8OHDqaioiJKTkykwMNAY
    cephgnjlBAYG0tWrV+no0aNGYmFK8+0P4IhQKKQOHToYI7OHwMto6gOWAFYB0MpkMlq2bFmN
    BuBByuR+9913FBYWVuHd9vb2pmPHjt137pkzZ4x9TxzHUceOHWnz5s0mydSDoKysjFauXGl8
    /7TgE9UtGnCMjQIve6lvEqDEo8s/+0dYvnw5vv76a8vWrVt/Y/zdhw0bRnl5eVV+o+vXr1Ob
    Nm0eus1WVlYUFBREnp6eDxI1oaioKLp161bFfbVaLa1Zs4asra0JALm6ul4eNmxYW29vb+OG
    0Q0JX/DFYx6oL1555RXSaDSUmpr6MH2pBr+Pkqix26JJkyZh2bJlgh49ekTZ29sfA0CdOnWi
    1NRU0uv1pNVq//FhMBjo77//Jn9/f+I4jtzc3H6Ljo7uuHv3bs5YWbGBEAEgFVVzhf7D1rWV
    EcXsSfXf90+O47yqRYXGwfR2Apm4X0rXqQaCfsmEnXMCL+mr7IQ/LRQKPeqxsEY4eJkctW7d
    mn766acqUWGDwUBFRUWUkZFBqamplJGRQUVFRRUONb1eT8nJybR27Vrq2rVrlS1FIiIi6O7d
    u5SVlUU9evSg9u3b082bN6mgoIAGDhxYJbDQqlUrWrJkCZ0/f75CXaTX66moqIgyMzMr7l1c
    XEyV4zEqlYp27txJ7dq1M37fdfbb1RlGflSwMXqAO3bsCFdX13+dQOHg4CDs3Lmzdu/evSCi
    EPAyl7KGnkDGjRuHP/74A97e3sFyubydlZUVunXrBqlUipycHCgUCnTu3Bnz5s1DUVERfH19
    0bNnz4e6R0JCAt566y2EhoaiY8eOD1z9rkosODISzz77LD7++GOUlpY6pqamTnvuuedOXbhw
    oSGrMQlY9CDCyckJCxYsqJK7ZQrl5eXQ6/XQaDRGnalphi6VYsqUKbh+/Tq++uorKRGNA59c
    fbmxGyUvLy9YWVlBp9PpAX7XehcXF7i4uPzr72bV6oy5JvqAgACcONHgm77LARQLhUKfZ599
    Fv/73/8EBQUFz4Lf2O63auOlwtUWERGBli1b4uLFi8HgJW5pleY2fwCigIAAyGSyity/mzdv
    OoDXMR9j50rA58q4REZGIiAgALm5uZU9Z5UhZtGjbq1atUKfPn1w8+ZNMCNXX5uM9WDGVDR0
    6FBMnz4d1tbW/3TOxLhx49CqVSssWbIE+/fvR2ZmJvbv34/w8PCKPFCdToe9e/fizp074DgO
    /fr1w7JlyxAWFvaPc98sLS3x8ssv48aNG9i4caOIvX+/g9ehN4TDrjf+QaLuA8AKvMyuUVTN
    XLZsGX7++WfY29t75OXldSQiSCQS9OnTB05OTrhw4QKuXLkCZ2dn7Ny5EykpD5+eGRMTgxUr
    VuDGjRuYOXMmsrJqL4x64sQJbN68GQsXLqzIVRgzZgzi4+OxZ88eFBYWBicmJr40evToBa++
    +mp5A9ujkWxB+MARB+N/H0LSJAEv9dkDPvrcaPHNN9/gyJEjhiVLlhyxt7ffw3FcRHp6uuD9
    99+HTCb7V9/NcRwKCgqQn58PiUSid3Nz++3w4cPnO3TogI8//rjB7VG1tfJz4KPFR2qyR5UQ
    QkSdGXkybtfhDz4/6L5pmuO4FkR0tJLNiakhUsRVs0kceNlblY1uxWJxoY2NTblOp0NxcfG/
    7QtnAPMBhHh7e2Pp0qUYPnw4BAIBysrKcO7cORw5cgSXL19GRkYGlEolZDIZ3N3d0aFDB0RF
    RSE0NBTNmzfHzJkzERsbi9WrV2Pr1q0oLS3F1atXkZCQgGeffRbDhw+HQqFA8+bNER8fj3Pn
    zvEvi0SC/v37Y8GCBejcuTNEIhEUCgVOnTqFw4cP49KlS5DL5SgtLYW1tTW8vb3Rvn17REdH
    IywsDJaWlhg6dChEIhFmz56NlJSUlsxhfh2mc50fOZoBuMokK2X1JRXbsmWLinmMb6CR5JX0
    7NkTo0aNsvDy8vrEyIiN3jKjB/fIkSP0bxSG//vf/0gsFlOnTp0oIyPjH3/PmTNnjF50srCw
    KG3Tps0kAHjttdcaqvtcwG+ySePHj6fi4uIavdH5+flUWFhI//3vf0ksFpO/vz9duHCBCgsL
    qaCgoMacpNOnTxtzVdSouYJZo4OVlRXs7e1f5zhO36VLF0pPT6+XdygpKYkCAwNJKpXq2rVr
    90qLFi3qJKWPaRwcs7Gxoc2bN9P48eONnp5fUDXfcBCA/IiICEpPTyetVkuzZ882nvtVpYiT
    A4BdIpGoIudGpVLRyy+/bDz3vUqGLQDAOZlMRlu2bCEiqiyxq675DgdwXSqV0sqVK+ndd98l
    oVBoAF+Ipj4cTlbgo+Pk5uZGe/furTeZ7YULFygiIoIAUFhYGF2/fr3is8TERAoNDa3w6F28
    eLHe7nvw4EHy9vY29vs3aJiNVp3BRxkflZTsAkxLMR87xo8fDyJCixYtponF4nKwXJ9x48bR
    b7/9RoMHDyZra+v7Nod+mOOll14ijUZDt2/fpuDg4Ae6pk2bNnT58uUqY2Pbtm3GapFkbW19
    JyQkJNLb2xsNWPbbFUzNgJrzNsne3p7c3NzI2dmZFi1aRFqtltLT0ykqKopcXFzIzc2NZDJZ
    XX2iAb+lQZOAVCqFtbX16wKBQP8o3iFLS0tdu3btprds2RIREREN1k6xWAyJROIsEAiOmnjO
    Laiav9ob97YzqH58Xmmus2ZzX03tf7+SPXJjRMzUeX+jqjSzhal5TSgUbrC1tbW0sqoXkdUE
    AAqBQEDz5s2riBzduXOHXn31VfL29qZKUvP7Klp6enrSCy+8QKdPn66Q9xYUFNDixYsrIsjP
    P/88lZaW0u3bt+natWukUqnolVdeqcjxmzx5coVaSKfTUUJCAk2cOJE8PT1r3NRaKBRSs2bN
    6PXXX69YO2k0Glq+fDlJJBJjxcEGyzHxBvC3RCLRbdy4sd7qFO/YsaPcxsbGmGzVvKEnDWNS
    u4+PT3+pVJppZWVFn376Kf3LdKv78NFHHxEAGjhwIOXn5//j71Gr1TR37lziOI44jiNnZ+c9
    0dHRzu3atWuoLuwG4I5MJqNt27aZfObMzEx67bXXKDY2lvr27UutW7cmjuPI0tKSIiMjKTY2
    lvr160efffYZlZeX33e9SqWiF198sfIEZ2MmSI2OINkA+FEsFtO6devoyJEj5OPjQ+AlCVMr
    ec2GACgwEiQiol9//dVIZpJwb+dzPwCXHR0dac+ePRVtX758ualxMA6AIjQ0lJKTk6sTpMqa
    bxvwpUsNvXr1opSUFCPh0oLf+LY+EMy8WjRo0KB6L/G+Z88e8vT0JLFYTB9//DHp9XoyGAy0
    evVqEovF5OHhQb/++mu93rO4uLgiKR/8/lOtG8ge1WdxhurHzQZqV9WVzIQJ8Pf3R9u2bZvb
    29ufqvyMYrH4X5GiysfMmTNJr9dTUlJShSwTdReEobfffruKRDw3N5cGDx5cUTDG1dV1dVxc
    nKQhck8YIsBHoWtsR6dOnWjHjh105swZSkhIoNTUVDIYDKRWq+ny5cuUkJBACQkJ9Nlnn5Gr
    q2td/bIdVffFedoJUoPbI4lEAqlUaiMQCH4w8ZyFAMZXOr0vizaZatMV45zAcZw7+D08a2r/
    D7gX3X4GfAW6mr4zoFIU8h3cKyZRuRDIW/h3VReNsAOfP0oBAQGUkJBARESFhYX04osv1khO
    qh8cx1FQUBCtWbOmQrKdn59PL7/8MnEcR97e3nT06NGKeeHUqVMVWw8MHTqUUlNTK4jV6tWr
    qWXLlvSgBaxEIhFNnTqVioqKiIjo6tWrxi1CiDnnnWoLJz8qKAHINRoNl5WVVW9CyIyMDEN5
    eTkA5OP+MoqPHXl5eWjbtq1vcXHx62q12iM2NhZxcXH1WpJZqVQaSw6jdevWsLW1/Vcv/7Bh
    w+Du7g4igkKhCE9NTe1x+fJlzJ8/vyG6sCUAN2NI1BSys7OxZ88eHDhwAH/88QcSExNBRFCp
    VDh+/DgOHDiA33//HfHx8VCp7t+XzMLCAuHh4bCwsACbsBxgRmODGkC6VqullJQUdO3aFaNH
    j4ZQKLQGX0EoqNKcVeXlCgsLQ0hIiJEUGbXcXgCcbW1t0azZPcm2n5+fURYSyAiPFXh5gqxX
    r17w8blP1VBZ0tAXwDB7e3vu5ZdfhqOjI+7evWt89px6fB88Ab4cc33vYN+7d2+MHTsWWq0W
    P/30E7Kzs5Gbm4tff/0VWq0Wzz33HHr37l2/zNfGBs2bV/iyvGA62flRw4BHu2Gi/hF//wMh
    MTERISEhlnK5fHpJSUnnyp9ptVrk5+dDp/t3FclFIhH8/f0hEAhw+/btB5bwGAwG7Nixo4qk
    z9nZGaNHj4ZMJoPBYOBKS0sH/P3338G3bt1qqC5siTr27goMDETv3r3RuXNndO3aFb6+vuA4
    DhKJBG3btkXXrl3RtWtX9OnTB87Ozg9yP7M9akTQaDRQq9XlBoPBSJQrw5457PxN2IfqaA5W
    XZWInFF7hLmFQCCwAa9CiAUf8TYFrtK6vROL7oirnMBxepFIJGeOkH+LQKPTsWPHjkY7i+PH
    j2PHjh21pjhUBhHh+vXrWLJkCT799FOUlZXB0dERc+bMQefOnZGeno7t27ejvLwcOp0Ou3fv
    xu3bt9GyZUvMnz8fvr6+UCqVWLt2Ld5++23cuHEDdWzsXQGdTocff/yxIo0gMDCwcoSyTW2O
    rUeZg1QGvuJF7zNnzkiKi4v1dnZ2/4oolZWVUUJCgohV6ElGA+cfdenSBYGBgRaHDh2aVlpa
    2tPHxwezZs2Cq2v97o14/vx5HDx4EDY2NthsxfAAACAASURBVOjatWuN+0c9KNq3b4/w8HDs
    3LkTGo3GqaioaETnzp0P7N27tyF2+XYBIPXy8oK9vb1pC9KyJT788EPcvHkTBoMBp06dwm+/
    /QYHBwe89NJLcHJygkAgQLdu3WrcL8nf3x+WlpYoLy+3Z/dMM5uCxmWXwFeXMaSlpQmJCM8/
    /zzi4+Nx8eLFDuB33V5syiC5u7ujd+/eOH78uNRgMPQDHx0KAGDv6ekJR0fHKuPA1tYWpaWl
    7mwh5Aqgu5OTE2JiYiCRSEwZJGLG7RUATgMGDMDAgQNRVFSEzMxMgN84tL52XbYFIBWLxfD2
    9kY9l2mFhYUFRo0ahZ9//hl///03Lly4ALFYjIsXL8LX1xejRo2CpWX9KuA4joOXlxekUinU
    arVlAy0Iy+rxNzLpK0PNu7w/FgwePBi7d+9G8+bNB5SUlEwwGAyPpCCNn58fevXi/RCnT59G
    UdGDN/vGjRs4ePAggoLuceSePXuiTZs2OHPmDNRqdfOioqJhI0aM+DspKUl3+PDhBrFHtZ1w
    5MgRzJ8/H56eniAidO3aFX379oVCocDmzZshl8vBcRyuXbv2IGXL7dhiONVsAhoPBAKB1mAw
    ZDDHR/UFV1fwVdCWofZ98iyY8+0HRqhqm/fcDAaDG/ioUG0eKqP9swG/X2BzE/NtmVQqzTMY
    DP/aGQK+YIkLAHh7e8PKygoGgwFnzpxBYWHhQ3+ZQqHAJ598Ag8PD7zwwgto1aoVpkyZgr//
    /hu///47pk2bBhsbG/z+++8QiUSYPHkyunbtCp1Oh82bN2PdunUoLX34ZWphYSHOnj2L/v37
    QywWw9/fH2KxGFqt1pn9NscfN0FSg9dRjjp27JhtfHy8YeTIkf9mwqZDhw4p4+PjLcBHjn5r
    SII0depUfPnllygqKupbVFT0vFAoFE+aNKneQ8OFhYX4+uuvkZGRgV69eqE+pAe2trYYPHgw
    fv/9d6hUKmg0mkgiCs7Ozj79mLuRA9PoikSiGheD1tbWGDlyZMXfX3zxBfbv3w8HBwdMnz4d
    vr6+D+T1rLRRqCXMaIyQA1BnZGRYFRQUICQkBC+88ALefPNNYVlZ2XPgC2zcR5AEAgGio6Ox
    YcMGZGRkdAIQxgiSZfUojLu7O5ycnJCZmWnPvGPNAPgEBwejY8eONT2XGMBoAN19fX0xZcoU
    2NnZITk5GXK5vL4Jkg6AQSAQ/OPCDHUhODgYMTEx2LhxI/744w8IhUIUFhZi+PDhFR7C+oaV
    lZXx/TPgfq/s44CKOdX6PqLvv4EGLtBw7do1dOnSpVVBQcHr5eXlro/iHmKxGHFxcWjfvj3S
    0tJw4MCBB/YiA7x3fu/evRgzZkyF48Lb2xvPPPMMzp07B71eL1KpVAOuX7++6ebNmw2xube0
    rhOysrLw5ZdfVvw9c+ZM9O7dG8XFxfjiiy9w9erVh7mfCA1b2dEMExAKhRCJRLlarVZDRCIT
    9mAi+AJCQO1Stq7gIzABqF1Kac/IjgVqz603RpAGAhhs6gSDwVCkUqkyHzTC8gDvg0gsFsPT
    0xMcx0Gj0Rjt3j/zJOXl4cMPP0SrVq3QvXt3xMbGokOHDjh37hxOnjwJOzs7XL9+HR06dMCI
    ESMgFApx9OhRrFy5Evn5+f+MPBBBLpdDq9VCIpHA09MTEokEWq1WCKDGSiOCRzzOjgI4VlhY
    KFy5cqXozJkz//iLLl68qHnvvfdILpeLwFefOtiQL9ChQ4fQr1+/5gUFBXNVKpVHZGQkJk+e
    bMoD/c8ZplqNjRs3YseOHZDJZBg/fjy8vOpnu42IiAj4+/NRYq1W66NQKHrk5eVx69evf5zd
    aCyRi9zcXJSVlf2jgf8gyMnJgVqtBvhy3yVmE9BoCZIiMzMTBQUFAIC4uDij08EbvLTBpaZF
    PyM4LuD3XwsGeG+3tbW10REAW1tbI6GWgc9/6y8UCkUxMTFwd3ev6bk6AnhBJBJJn3vuuYrw
    fHp6OpRKJZjDpr52Lc8EUKzVaqvsKl/fZGXIkCFwcnLC7t27sWvXLjg6OmLIkCGPhJQREbKz
    s427q5eAVXZ6zFCDr6CX/wi+uxD85uWqhnpxYmJi0LdvX1l2dvZ0hULR5VHdJzIyEi+//DJE
    IhF27dqFCxcevgDb+fPnq1zHcRyeeeaZisqsGo2mtVwu75yeno5Dhw497q58aPc021gUHMf9
    k4iv2R41Quj1euj1+iwiqkk/GgA+wb+uaLgb+LzZ1nUQKRnHcWEABqDu7WsCmC20r+HzEoPB
    kF1PtkPJ5k4YDIYqY/7f4ObNm1i/fj2Ki4vRrFkzDBw4EAaDAfv27cPu3btRXl6OQYMGoUWL
    FigsLMT69evxb2W3NbybutocW4+aIOUDWAMg6cyZM9yrr76K33//3bhQfSBotVocOnQIr776
    quTs2bM24BOxV4OXNDx2EBHmz5+PuXPnWmRkZLxUVFTU3cPDA3PmzHmgSMbDsOy1a9di1apV
    UCgU8Pb2rpA11Ad8fHwQFhZm7GNhcXFxdN++fe02bdqEVatWPc4uLQGgk8vlyMvLe+Bn9/Dw
    QIsWLR54QXf79m1jfpISjSB3zYwaCVJJSUlJxT5Qnv/P3neHR1Gu7d+zvbf0npAGISR0REQQ
    UZGqcLD8DoIF8NjFg6IoH1ZA7AUrCtgRBESRXhQOqCASWhLS2242ySbZlq2z8/tj5p1vE5CW
    TTZe33mua64NAXZm3515n3Y/9x0fjzlz5hAs//UAbgIg4GhTYbFYUFlZCZFIhLFjx0IqlQq4
    ytqVCoUCsbGxWLduHf71r3/hsccew4kTJ0hhgOL+3dDY2Fhcc8018Hg8aG1tBcMwwQ5AA24G
    Kj8/H7NmzeKLIOXl5eDmIetDGBxXA2gMBAIwmUztnFIobejQocjPz0dlZSXKy8uRn5+PYcOG
    dcm5AoEA6urqSKehEaygYTjsAFe0C7XtQ3vq32613377Dbt378bJkycntLS0/JOm6S7TektO
    ToZarcbBgwfx0UcfXVZRq7GxEQcPHmyX/GdnZ6NfP5Zfxe12K2022+iHHnpI1s0FO1Ls8F6q
    r3Y6nWhpabkc+M9//VEPtEAgAJqm6y+QvE4E28k5XxwtACs6fEFoEcMw48DSe5/PpGDnjv5y
    sxaLxVaVSmUNEVS6FoDF5/PBaDQiEAhAKpUiKyur0/Dvn376CTt37uRlJVJTU7F7925s27YN
    xCdTFIUdO3Zg27ZtnTqXUChEZmYm77tra2tJHtKC84xbdIdI2c9gVYWX/fbbb73mzp2LOXPm
    4IEHHmg3G3DOncpqxQcffIAPP/wQFRUVFFjhrP/pIid3UdbQ0IDly5dj6tSp1xqNxjsBiGbN
    moWxY8eG5P09Hg8KCgrw5ptv4vvvv+cdkNPpvCSs94VMoVBgxIgR+Pbbb+H1emGz2fo2NjZm
    ms3mw/v37+/OJT0DwNzQ0JDw888/X5TuyujRo/HJJ58gKioKEREX1uZsamrCvn37SIBW/l+H
    1GOtAYDV7Xa3qxZdf/31mDRpElatWqUHi88WMgyDffv24euvv0ZJSQmuuuoqjBo1CvHx8aio
    qEgC2HmbX3/9FXv37uUTrpMnTyIlJQVCoRA0TWcAQG5uLpqbm/HAAw+gqakJ48aN4+EEYDtX
    8QqFQnTPPfe0m52oqqoCNw9Zd6lB1QXWoA5A36KiIphMJiQmJoZ8oSMjI9G3b1++Qp+XlxcS
    ja1zVsksluDB/FouoQyHtXAFuywAocISngTwBrqmM3VB27RpExYsWICBAwdmG43GeU6nM6Ir
    z/fDDz+gtbUVtbW1lwolaxd8Hjp0CC0tLXwMYDAYMGzYMOzcuRMMw6C1tfWKX3/9Nb6pqal8
    7ty5+Oijj7rTHzWgPbX/eW3v3r146qmnUF9fz+8zl2ClCPPs2n/tbOP2/qbzdJAAFq0wBReG
    ZWbi4mDFebhw0yIBbEfqL7MfgUBgVCqVXo/Hc07Sqku0Oq6olVpfXw+PxwO5XI6RI0ciMzMT
    xcXFl/3Gzc3N2LNnD2666SZkZWVh4MCBWLduHQBg7Nix6NOnD7xeL3bu3Nnp2DczMxNXXXUV
    ALY7WFNTQ+azwlmwa5eIXQtgMwC3VqtlvvjiiwvSw27cuJGJiIhgKIryicXi7dx7hE15esmS
    JZg+fTpmzpwZlZ6evoWiKOaaa65hysrKOk2Fa7PZmL179zLz5s1jMjMzGYqiGKVSSaemptrE
    YjGt1WqZ9evXh5R+98iRI0xycjIDgJFIJL7U1NSZAC4LNtEJi+DuC+bqq6/mue5DaRs3bmT0
    ej0DFs7wyN9lk/4/RvMNsLC3HwEwjzzyCK+ZwDAMc/DgQSY9PZ2n7oyLi2MyMjJ4unqBQMBk
    ZGQwERER7XQQJBIJIxKJmGHDhjGpqamMQCBgtFptO92GPn36tHtvnU7HjBs3juHkBBhwlNtm
    s5m/HofDwfzjH/9gwM7ULAzhGgjAUrTSKpWK+fjjj5mustdee40RiUSMRCLhtaK6wjZu3MhE
    RkYG088KwniPUVyAUYjOUxMXce9FhevDvPvuu9iyZYv0qquuelUul3cJ/TKCqHoVCsVF0+ue
    70hNTeUpg4lt27aN7NOMQqFw5OTkTImOju7uvSkCwPdduY5Bhxuhkwfocvu/QvPNJRkQCoUq
    iqI2ddO9EMrjZYlEIhIKQ9JIloElPWKys7OZI0eO8FpEK1asYDQaTaeuddSoUUx9fT3DMAwz
    f/58/vfz5s1jAoEAU1NTwwwdOrRT51Cr1cw777zDxxNlZWXMsGHDgnUWledzxt1hNFeZOQKg
    zWazoarqwklbdXU1rFYrxGKxT6VSHQerNUGH66E5evQo1q1bh19//fW6mpqa0Xq9Hvfeey96
    9eqFQCAAs9lMZhIu2hwOB3bs2IGHHnoIM2bMwJtvvonS0tKATqcrHz58+JuDBg1aKRAI3AzD
    hIKRpJ0lJSWhd+/eAACfzycSiUSDvvvuO/E333zTnctqAbAWQOvvv/+OVatWEdhSSKysrAzv
    vvsuYVz5Eyy5x3+tZ5oPLJMdtmzZgvfeew9lZWVwuVwYMGAA/vGPf/BtfZPJhNLSUmRkZGDx
    4sW48cYbUVtb226Ik6ZpqNVq3H333Vi1ahVef/115Ofnw263t4OuFRYWoq6uDuPGjcM///lP
    +Hw+bN++HXa7HQBL7HD//fcjOjqaf86/+eYb/PHHHwCLYTaGcA0C3D1a5nA4sGbNGhQWFnbJ
    YhNWIqVSGVJ4cLAVFxfj3XffJfDZEi4BDoTxHmPAzgvdA2AdF6ReqnkAfMe9xxaEh3QCc+bM
    wVtvvYUlS5YMOn369K0ul6vL/LlUKqV79+59euTIkb/IZLJOd0tNJhOOHTvW7nfZ2dk8Hbzb
    7VY6HI7eZrOZmjp1anf7o2/Adhu7PKT4rz/qmcZB7LwMw9T83S6doqg6hmH8l0Kech5zgyWj
    aCstLcW3334Lj8cDoVCIO+64Aw8++CA6I0ZbVVWFhgZWISM6OpqQYyApKQkURaG2tha1tbWX
    X3FVqfDwww9j5syZEAqFYBgGP/74IwoKCsg+vg3nmUHqjm6MAcB0sLjJ/gCUcXFxGDBgwAX/
    Y15eHhISElBVVSX3er33AxjBZbNr0c0zSIMGDUJxcTGuvfZa+YkTJyZ7vV7FFVdcgbFjx4Jh
    GPzwww946623cN1112H+/PkQi8Xn99IMg1OnTmHFihXYtGkTzGYzhEKhT61Wn1EoFJuTk5M3
    7dix4+iQIUPuByARCoUhp9/V6XTo1asXfz0OhyP3nXfekbvd7u7W89gK4Ae32/3Pd955R6BS
    qTB79uxO6T0xDIOioiIsXrwY+/btA9hW8atgIQ3/tZ5pXrAQLKa0tJRasGABPvvsM/Tp0wc6
    nQ6nTp2CUCjkk5ucnBw899xzuPnmm9HQ0IAdO3agoKAAVVVVYBgGvXr1wujRozFy5EhotVpk
    Z2ejV69e2LBhAw4ePAiTycRr9Fx11VWYPHkyJBIJDAYDPv30U77YIRQKsW/fPpw+fRr19fUo
    KCjA4cOHSdvfjtDTR58A8DmARYcOHRI//fTTePnll5GZmRnSk2g0GojFYnQVY15JSQmeeuop
    8vx5AKwGC0kLtzFgYX7FYDVHLpVFzMMle+ZwJUcAUFpairvuukv4wQcf3NTa2toOEkZRFNRq
    Nbxeb6cKTmKx2KdQKM7Ex8dvnDx58tpTp06NBXBFpx90rxfFxcXwer38XEBUVBQyMzNx5MgR
    BAIBCIXCobNnz5ZbLJbuZqvdBrayPAtdV0SuBfDKf/1Rj/dHNdwzTv0dLlgoFHqVSmUTwOrP
    EbKjTtpuAIdomr527dq1GDlyJCZMmAC1Wo3HH38cPp8PK1asuKx5RKfTySdIsbGxkMlkYBgG
    ej3LfWE2my8bJqjRaDBv3jzMmzePjyUPHz6M1atXkz3xMBd7IhwJEgWW/WkegEkURakTExPp
    sWPH0hMmTBCOHj36gm8wfPhwvP322/jxxx+xZ88eRXl5+XCGYfqBFd96nfuA3VKNzM3NRUlJ
    CVwuV5zNZusrEokwcuRIRERE4JdffsFTTz2FwsJCZGZmwu/3nzdB8vv92L59O55//nkcOXIE
    FEX5IyMjj8fGxq7V6XSbU1JSyoqKinwzZ84UlpWVpXk8HlFMTAzi4+ND+pnEYjGysrIgkUjg
    9XphtVoTaJqOo2na9thjj+H111/vrue6GcBSALqmpqZxzz//vPjkyZOYM2cO+vXrB6FQiLa2
    NrhcLvh8PtA0DZ/PB4qiIBaLIRKJIJFIoFAoIJPJ0NjYiO+//x6rV6/Gn3/+CZqmGzhn9EM4
    A5r/2kUFrkYAfoFAIAZYxqsjR44EOwDExsZi7NixeOCBBzBkyBAIhULExcVh1qxZ8Pl8aGtr
    A8MwUCqV7Z5DgUCA/Px89O3bF62trXC5XBCLxVCpVFAqlfzs2+LFi5GamoqPP/4YZWVlqKur
    w/LlyyEQCPjkLGhOrisSJB+ATwHk0TQ9bfPmzRSAy0qSfD4fPB4PfD4f/H4/qYwCAE9IEQgE
    0NTURDSdIBQK+UMqlUIqleJS4RolJSVYsGABNm/eDJqmA2A7LqvBdtzCadEA/h9XsMvB5VEs
    awA8Clbj5AuuaNetc1V33XUXjh07ho0bNxpaWlpGBHdEBQIBxo4di7lz5+LEiRN44403YLNd
    GlGaVCpt0+l0x7Ra7XeRkZE/jRw5suyVV17xJSUlTfX7/Z2mamUYBmfOnIHT6eQTJLlcjoyM
    DBAClqamptSKigpdW1tb22effYaZM2d21/K2AFgGliVsAlhtGt4iIiIwdOhQREVFQa1WQ6vV
    QqVSgaZp2Gw2/qipqcHvv/9O2BuDzQxgOdju43+tZ5uJS5SkoXrDYLbDQCAQUqZShmHsFEWZ
    GYbptF5mkNUBeB9Av6qqquhFixZBJpNhzJgx0Ol0WLBgAbxeLz788MNLKsYQn0KEpvV6PSQS
    CWia5gt2bW1tBO54SXICKpUKjzzyCB577DFoNBowDIPffvsNTz75JBkhaQKwAheYP+qqBEnI
    bSzPA8jT6/XM1KlTvffcc4+gf//+oovthEilUkyePBnXX389jh8/jtWrV2PdunWqpqamWzjn
    thjs/EqXO12GYYieSqJIJIqQSCTo378//H4/1q9fj8LCQlxzzTV49NFHz9vpcblc+Oabb/Di
    iy+ivLwcSqWyxmAwfJ6enr562bJlZTt37gwsWrQI/fr1Q0NDQwJFUSMAICUlJWQU38EPau/e
    vaFQKOD1eiEQCOJdLlem3+8vvtwB3E5YIYCHAMy1Wq13rl69On737t248sorIZVKUV9fj4aG
    BjgcDng8Hvj9fj5Bkslk0Ov1iI2NhcFgQElJCQ4fPgyXy0VzSfQbYKE93r/hBs10CMi74NZm
    /lJgNwxmBGCXSqWGGTNmICYmBjU1NfB6vdDpdEhJScGVV16J/Pz8c3YYxWJxO92jc256ItF5
    Fe4jIiLw0EMPYcyYMdi5cyd+//13mEwmtLW1QavVIjU1FcePH8fRo0dJMNXQBetQx+1vGpqm
    x27evFngcrnw7LPPYsiQIe0YhFwuF2w2G6xWK+rq6lBdXY2mpia0tLTwh81mg9vtJirxPGMf
    cU5PPPEE76BkMhkkEgnkcjn0ej0iIiL4Izo6GomJiXxwqFarIZX+b+wQCARw+PBhPPvss0Qj
    hwYL0Xge4SNnANhOwBUAHgNwIy5MpXshk4FFRGSDZah6DcBBdBMEnGEYREdHg2GYlEAg0M4x
    XHfddXj99deRk5MDrVaLjz766KITJKFQSKvV6uNxcXErMzIyvh89erSxtraW+fXXXzF58mTt
    /v37B3DEJJ22mpoatLS08NVigUCA3r17Q6lUwuFwIBAIJNI0nQnAuH379u6+X86AnVc9AVak
    mu/QDRs2DO+//z4iIyMhEonaafjRNA2/3w+apnHkyBHcfvvtfOGBuzd+44q7P/1N/dH/NasH
    S/0uPV+gr1Ao+EKbWq2GXq+HwWCAwWDg90iJRAKxWMy/MgwDr9cLn88Hr9fL782tra1obm6G
    xWJBS0sLnE4nnE4nHA4H3G73eROqQCDQYrPZ6gBc8rjHBWwLWIKbhceOHVM9/PDDeOaZZzBt
    2jRERERg4cKFcLvdWLVqFXw+HzQaDbRaLQwGA+Lj46HX66FUKvlDoVBAoVBAq9UiPz+f992k
    CEmSp8GDB+OVV16BzWZDW1sbnE4n/+p0OmGxWGA0GtHS0gKr1Qq73Q6pVIp77rmH7xz5fD78
    +OOPeOGFF0hy5ATwNthZQ3R3giQGcAvnEHvl5OT4FixYgGnTpomVSuVlRXkymQxDhw5F3759
    cdVVV+HVV1/FsWPHchmGeQ3sYPfXXNW1yywyMhJ+vx8MwwiFQqFAKBRCo9HA4XCgoKAAMpkM
    s2fPRp8+ff7yPYiu0QsvvIDGxsaAWq3el56e/nJubu7e4uJi37Bhw3DFFVegpqYGSUlJkEql
    Y10uV45AIMCIESO6hGUqNjYWOp0Ora2t8Hq98pqaGjXDMGhsbAzHZlTF3TcHGYZ5rLq6+urq
    6mpRxwCYbDYMw/DB3jmqC1YAX3EPQjH+Zp2jq6++GqNHj5a9//77yQCo+vp6fPrpp9Dr9Z2q
    OAkEApjNZrS2toKmaYHT6Yy/7777RD/99JO/h3z0UwAKXC7XNRaLBS+88AK0Wi1omuady/ks
    EAjwXUZSnQsEAggEAu20SsghFAohFovPSkDFYjH69++P/Px8OBwOuFwu0DQNiUSC06dP4957
    7yXJ694uSpAA4DSAfwN4lqbpydu2bRPX19fj6aef5veJo0ePoqCgAKWlpaiurkZzczPa2trg
    9XrPe58QrLdcLgdFUTCbzaitrT1vlU4kEpFBbURGRiIlJQWpqanIycnBgAEDkJSUhN9++w0v
    vfQSwXh7wUKVnuWewXCZCMDN3HXkhPi95WCZrHoDeA5sp6zLA1+ZTAaVSgWGYbRisZhP9qKi
    ovDwww8jJycHx48fx7Jly1Bff3F5qVQqbdLr9Z8lJyevvP/++4uLi4sD//73vwGw86pZWVn9
    /X5/yLjgm5qaUF1dzcO8ASAtLQ0qlQoOhwM0TWtramqiA4FAqIO9i87hACwBcIh7DkeLRCLR
    yJEj+RmJcz1XJLjLzc3FgAEDSILUCrbb+A6XfP2tTSqVIj4+HiKRqFP+iAiP1tXVEXkFBkCn
    4PUhq6gIBKAo6gzDMCWBQIBnh1QqlYiJiUFmZiYyMzORlJSEpKQkJCcnIyYmBkqlEhKJhD9I
    4H8xRtM0nyyRhIkUvqqqqlBTU4OqqiqUlJSgqqoKjY2NCC5YCASCY1xxDSGaQSLmBvAeF28/
    UFhYqH3sscdQU1ODuXPnIjo6GosWLUJMTAwCgQDy8/ORkZGBqKgofj06FhPOVdzk1pz/N2SN
    z+Xj/X4/vF4vnE4nGhsbUVJSgoKCAkgkEtx7773Q6/VwOp1YvXo1Xn75ZdTU1AAs4uMDAO/i
    IqQ5Qp0gUWC54ZdQFJU8atQoesmSJRg2bJi4s5zp5Ma8/fbbkZmZiWeeeYbZuXNnKsMwLwJo
    4xxTlwXBSUlJsFqtYBimkWEYu8/ni7FYLJDJZLjpppswfPhwXHPNNe2+RLvdDrVaDYFAAIZh
    sH79eixZsgQtLS10VFTURrVa/fSxY8fOPProo/jiiy/4Dfeuu+7Co48+mvDdd9/d5na7lQkJ
    CRg/fnwoW6bt1pRsRj6fT2iz2XQulws5OTmXQ1kaCvNw1QolgIHx8fG6iRMnIjY2FiqViq9M
    aDQa+P1+WK1WvnJgt9tx4sQJ7NixA16vt4Sr6pb93ZzPsGHDMGTIEPmXX3451263384wDFVV
    VYVnn302ZOfgIDlUfX39rA8++KDk6quv/mrs2LH+Xbt2hfvj1wJYCWDgjh07tJs3b8bs2bP5
    Z8PtdqO1tRV2u52vHjU1NfH3AKkskaTZ7/fzB0VR/CYtEokgFAr5QJPcWzqdDtHR0YiLi4NO
    p+N/RzpsbW1tWLt2LYqKigB2nmZVFwfEJ7ngzAzgjmPHjqkffvhhpKSkoKamBg0NDTzcVKPR
    QKPRID4+HtHR0YiOjoZSqYRcLufhp8HdIZlMxne73W43XC4XL6jr8Xh4WKvL5eKdUENDA2w2
    G4xGI4qKihAIBCAWixEZGYn4+HjU1dWRgNwKdo7qFZxHZ6IbTAJgBthuXHIXnieb+6xa7p7w
    dOWHio6OJlBSB8MwvKNPTExEdnY2/H4/Pv74Y+zefWE9dW5eqUav178waNCgLw4cOOASiURY
    unQpAOCRRx5BZmam9K233vqH0+mMDdVnsNvtZxXitFot9Ho9ERYWG41Ghd/v79QgeAj80TYA
    agCDdTqdLiYmBrt374bRaOQ7sx6PBxRF8c+UwWBAXFwcevfuje3bt8Pv95dyFfi/nT8iBbtr
    rrlG/s477yQ7nU4qKysL7777LuLidjd61AAAIABJREFU4jql1SYUClFaWoo5c+agvr5e4HQ6
    4x5//HHht99+S4f7MyuVShgMhur6+vo1Xq83j2EYxYgRI3DPPfdgwIABSExMhFarveC8+aWu
    h1wub4dCSkxMRN++fQGwnWOXy4WWlhaUlZXh8OHDWLNmDU6cOAGhUFgvkUg+CQQCdpFI1BVF
    BSuAl8GORPzbbDbHvfjii6iursbjjz+O1NRULFq0CEKh8KziAU3TcLlcsFqtcLvdcLvdfKeV
    +OdTp07xiU95eTlOnz4NoVDYrvMWfJBinV6vR2JiIk/kFAgEIBKJYDab8fbbb+P9998nJF0N
    AN7iEr2L4g0PdcQ9jDii0aNHe9944w1hfn6+OJQnoCgKQ4YMweuvv07Nnz8/sG3btiTunCYA
    /+mqhyUrKwvbt2+HSqWqVSgUpsbGxozDhw9jwoQJePDBB8EwTLvq9o4dO7B27VosXLgQmZmZ
    +PPPP7F8+XKYzeZAbGzs+szMzCfsdns1ANx55538/1uwYAGSkpKkK1euvLupqWkkRVGYOHEi
    L+raFZUglUrFL69er++1ZMkS0U8//eQ/ffp0uPYmMYCBALRTpkzB8uXLg6/xvHb8+HGUlpai
    qKgohQta/jYOiWEYTJs2DTqdTr5p06Z7a2trF/r9/qicnBxER0cj1M9RXV0dSkpKkkwm00v7
    9++nxo4d+6VcLvf/8MMP4V6KnwBsdTgct3388cfIyMiA3+/HsWPHUFRUhMrKSphMJrS2tsLp
    dMLtdsPn83Uayy0QCPjkQaVSwWAwICEhAenp6cjNzUV+fj4qKiqwYcMGMAzjBjsn1B1Y1CoA
    T4OllX7EZDKlm0wmqFQqDBw4EP369UOfPn3Qq1cvJCQkICIiAiqVCjKZrF0yeKlzRJyaPO/A
    3G43nE4nmpubYTQaUVFRgeLiYpw8eRIFBQWE1Q/cdb4Jlg0snJpjFFhh4efB6od0tSVwvsgB
    tnvdZfOxEokENTU1EAqFlYFAoJ4kfyaTCT/++COUSiWCn+Pk5GSMHDkSe/fuDYZ8AQD0en1Z
    UlLSk6mpqRubmprohoYGzJgxg9+TKIrCDTfccJ3FYrnZ7/eHDOvr8XjOElYlBQuuiCOQyWQJ
    f/75J3Xbbbcxv/32Wzj90WAAWqvVimeeeYafdSTdapqmQVFUu9k9hULBd7IBpALo83dMkIYP
    H44hQ4Yovvzyy385nc7bKYqicnNzkZeXB51O1+n3VygU6N27N2praymTyXTna6+9VjJy5Miv
    r7/+ev+OHTvC9rljYmJgMpkYqVS6gabpiX6/f4JQKMSYMWPOy/rJMEy7vfNcP5PuDunkk/vm
    XD939NsEnpaQkICoqCh88cUXAMCIxeJ1arV6P03T7dhcQ2w2sLM7JgBPOhyO3I8//piqrq7G
    //zP/yA/Px82mw2tra0wm82oqKhARUUF6urq0NzcjNbWVrS2tsJms8Hj8fAzsYFAAG63Gzab
    DQzDYMmSJXjnnXcgFot5SF4wRI8U9uPj45GWloaUlBRERERAp9NBpVKhtLQUL730EtauXUtI
    Hk5zBaxvuYbKRVkoE6QYAE8CyM/NzfUuXboU+fn5Xabo3bdvX7z00kuM2Wz2//nnn7lgtUjm
    ILSUu7xNmDABkyZNws0332w/fvz4Lw0NDVdt2bKFmj59Oq8ATqyurg6vv/46iouLMW/ePDid
    TqxYsQInT55ERETEwZSUlGePHj1a/eSTT5I5BgDA1KlToVKpqI8++uimysrK+10ul2zo0KF4
    6KGHuoRlqqND4irsyX/88YfY4/GEE3KVCuAGg8FATZgw4aKTI4Clir322mtRVFQUBWA8gD24
    PCrfbrd//OMfUKvV8p9//vlftbW1C30+X+TEiRPx7LPPIikpKaTDnBRFobS0FE8//TT27t2b
    aDQaX9q5cyczbty4r2655Rb/t99+G86laAXwEYARR48eTZoxYwbcbjesVisfiMjlciiVSkRE
    RECr1UKtVvOVt+DuSPDBMAzfKQnumAT/mWzuDocDZ86cIVAxSKVSGAwGMAwDs9kMAPsBrEf3
    UVa3gh2UPQ7gBQAjBw4ciPfffx+9evWCTCYL+QmJoyaFH9JpTktLw6BBgwCwbGS1tbV48MEH
    sXXrVgA4AGAB2FmLcFeBr+ISloRuPGcsgEVgYS57u+okzzzzDPr27YukpKQWuVx+wuFwDGUY
    BvX19XjmmWcAgE8+lEol5s+fj+nTp+Puu+9ulyCpVKqGpKSkxQ8//PCGbdu2BX755Rf+7+bM
    mYPs7Gxcd911WcePH3+itbU1pOtI0/RZzFfB/ggA1Gp1+quvvipRKpWeMN5HaQBuAED5fL6z
    EszgwJgUEzweT8e5r0jOH+36u/gjhmFw4403Ii0tTfH9998TnxQxfvx4PP300yFJjgAgPj4e
    zz//PNra2nDo0KEko9G45MCBA9SNN974lVKp9G/cuDEsn7+0tBTJycmorq5ukMlkH9I0PfS3
    336LWr9+PR599FG43W5YLBaYTCaYTCbU19fDbDajubn5rHnPjj8T4g5CgkM6IuSV/CyXyxEZ
    GYnY2FjExcXx6ICICBbx9/nnn+PEiRMQi8VFCoXiU4fD4QrV93Iec3PFrxIAT/h8vglbtmyR
    19TUYMCAATCbzaiurobFYuERHZfaZbRYLBeV5JEESqVSISYmBsnJyYiPj8epU6dw4MAB+P1+
    N1hE0nIAf1yqTwpVgiQAO3d0vcFg8C9cuJAZOnSotKu/pYEDBwoXLlzovf/+++nGxsYxAG4D
    20LrEseckJCApUuX0jExMRvq6+unHzt2LGvRokV49tlnkZeXB4FAAJfLha+++goHDhzAxIkT
    kZKSgr1792Lz5s1QKpW12dnZS/fv3190//334+mnn+bfe9KkSRg5ciT1wQcf3Gg0Gp+32+2x
    CQkJePzxx5GTk9NlaxjskLiZnojy8nJhZ5WLO2mjAGQPHDgQAwcOhNfrhd1uh8vlageZEggE
    fIU8+EG58cYb8c0338BisYwBkIGeQS18Xhs3bhzkcrniwIEDpHMUedNNN2HZsmUhp3fmPXZk
    JF5//XXMnz8fe/bsSTCZTEu2b9/OXHvttV9PmzbN/91334VzSQ4BWE/T9CMmk0kQFxeH3Nxc
    5OTkICsrCwkJCYiNjUVMTAy0Wi2PbSZBfcefg1mDSNWKVK6CX30+H1/9qq+vR01NDYqKilBU
    VIQzZ84QPZ9mAJ+AhQN2p/kB/Ax2uHREa2urgCSD4TICd+AgDAyALVqt9iA3QxLO+yeeK9jl
    hOHcWQCeAkvh3GU6Kmq1GkePHvVGRERssdvt010ulyY4MSI2fvx43H777bBYLKisrOR/L5VK
    3UlJSe9dd9113/3000+B4Of95ptvxqZNm5CcnBx/4sSJxU1NTSM6A6U6lxEY+vkSJJqmY0tL
    S0VWqzWcCdIoANkCgYAfxidQb1LNl8lkCAQCcLlc/BB5MPSbY/e6BkAmWOKHHp8c3XrrrUhI
    SFDs2rXrX7W1tQvdbncE6UqvWbOG/3ehKNYxDAO5XA6hUAiHw5FYV1e3ZNu2bYGJEyd+889/
    /tP/5ZdfhmUdbDYbkpOTIRKJ9jU1NW212WwzV65cifr6ehiNRpw+fRomk4mHjV1o9vOygmuB
    gE+aFAoFUlJSkJubC4PBgK+++goMw/g0Gs0X6enpJywWC8rKuqVJGaAo6jDDMA8CsDMMc1dB
    QQFfUOwuI/66tbUVtbW1wSgGYpvBMmlfVuMkVAlSH7CiefJp06a5Jk+eLOlC1q12NmHCBNEt
    t9zifu+99xQMw9zNVWiOd8W5PvjgA9x5551IT08vaGlpea+iouLFzZs3q2pqajBp0iTExcXh
    zz//xIYNG6DRaHDHHXfA7/fjk08+gcVioRMSEr7q37//7ltuuQXr1q3j3/emm27CtGnTqOXL
    l19vNBqX2+32rKSkJDz//POYPHlyVzKY8a1cYl6vV2az2QShFGu9RNODZUCUCwQCrFy5ErW1
    taipqYHFYuHnItxuNwQCAd8dUKlUiIuLQ0pKCo9NtVgs6ZxT6tEJ0tVXX43IyEjZwYMH59bV
    1S30eDyR1157LZ544glERER0ZbsciYmJePLJJ9Ha2oojR44kGI3GJbt27Qrk5eV9M2zYMDqM
    sBY3WOz//1MoFDFE70ilUrVjTbscZ0MS67+yuLi4dmQrbrcbdrsdL7/8Mt544w0EAoFisB2k
    cFkVAEd9fb2msbERaWlplxz8kFeSxJDhWLLXXMqe09zcTMT8XABqCDNeGE3IFcvGhPOxBksn
    /hq6iGX1008/xbx586DT6fY5HI4fjUbj/+uYlKpUKkyaNAkGgwFffPEFKioq+O9Xp9Pt7d27
    98fbtm1znzhxoh3N/WuvvYbc3Ny4ysrKF5qamm7x+/1dogfU1tYGmqZ5KBFhJSXm8XhU9fX1
    go5JX3f7I5FIJJs+fTomTZqExMREJCQkQKVStSvCcAkdD6dqbm5GXV0dKioqsHr1ahw6dCgd
    wLWcP+rRpEFTp05FdHS0ct++ff+qqal5yu12R5C98Pvvv+/y8zscjoS6urqlP/30U2DKlCnf
    zpo1y0+Ssu601tZWLF++HHPnzrWnp6dv9ng8k4uKinTFxcV/mQiReZng4m3w7Cv5HYB2BV8y
    fxN8EMZegnRobW2F0WjEoUOHeMY3sVhcptPpNhcUFNAeT/fVEbjPbwbL3vlPdKDDPyvZ4ORY
    /mo9gkkczrUWwQfpwl0gGQ0A+B2dQJWFIkEixAw5vXr18s6dO1eoVCqF3fUlyeVywezZs6nt
    27e7S0tLe4NlFDqJLoK+PProo3jwwQfp/Pz8T10uV6TJZHrg6NGj+mPHjkEsFoPcoHPmzME1
    11yDdevWYffu3VCpVKejoqI+X7dunWfSpEn8+82dOxf33XcfNXv27LHV1dXL7XZ739TUVLz4
    4ou45ZZbQjoAeFElar9fnJeXJwkEAigrK0N3JbpB1h/AcADYtWsXdu7c2e4hIHMiYrEYgUCA
    p8nsWJEiBW4u2foGQFho+S4q2q2qgkAgyDabzf/yeDyRQqEQFosFS5YsQairtn9VwXM6neQ1
    0WQyPWi327f6/f7mMC9NJYAmmqZjBAIBDysI3qA9Hg8/h3SujdTj8fDVPVKhJkQF59qkSQVb
    IpHw9xH59y6Xi3wfFWDZcMJl1QAsTqdTU1VVhaFDhwIAPwTrcDhgt9t58oqOsMLgaifBgQfD
    O8gake6UTCaDWq1GVFQUtFotlEolr/1C1M45OFEzurBjcgnWF8BduDyNo1CZFMCdAHYCONoV
    J8jJycHPP/+M0aNHt4wfP3653+9PaWhoGBGcJLW1tWH16tU4efIkNm7cGPwcWAwGw8qNGzca
    x48f326f37x5MwYPHhxbUlLynMVimeH3+7tML7Hj/hacpHP+SGIwGIRkriAM/mgAgCuSkpIw
    b948DBky5KL/Y2xsLI/+EAgEzLFjx8Qul2sC2Pm0BvRQu+GGGxAVFaXYt2/ffVVVVU96PJ6I
    /Px85OTkdMv60zSNY8eO4cyZM4m1tbXLvv/+e+aKK65YO3r06AAnOt2tNnfuXAgEAtTX1x/3
    er21AHQMw0AgEECn0yEmJgZxcXFISkrikQ1arfYsiHcw/FskEoGiKH62syPUmxxWqxVmsxl1
    dXWora1FbW1tMAstH0I0NTWZJBIJujNBCrJasLOmUeQZ1mq1INqdiYmJiI+P5xmTFQrFX0Lh
    CaMs8d0d1yUYCm82m2E0GtutS3Nzc3A82IZOojxCsfHFg8XWiidOnNjWv39/eXd/O3l5edIp
    U6Y4XnvtNRlYjYs16CLmpP79+5Mf7bm5ucslEklRU1PTDLvd3lsmk9EpKSnKurq66MbGRsF3
    332HN998Ex6Px5WcnPzpsmXLTm/duhVvvvkmAFb48YknnqCGDx9+TXl5+ctWqzUvPT0dS5cu
    xdSpUy95qDpEVQFJQkKCjNsQuvv0Yi6hiSFDiPHx8cjMzERycjI/eE6YuQj9a1tbG9xuN5qb
    m1FWVoaKigoYjUaYzWb4/f4hAIaAHfzvkUbTNBiGUQYCAUWwgzh27FhYrsftdiv8fr8w1FCB
    y7BmAPUej6fv6dOnUVdXh4aGBpSXl6OyshJmsxkWiwUNDQ3t2HEIq1TH4Vjg7KHY4KRALpfz
    LHYE952eno5evXpBIBCgtLSUVKVKwWophMvqADS53e60X375BUKhEIWFhSgpKWnnQAndd/Bg
    8MUKEwZDFAkVulwu5xOlxMRE9OrVC9nZ2Th69CgZhG1G98MOz7p0AJPA0m6H2zK5gl0Bugj2
    PWrUKCxZsgRPPfVUwZVXXvkwgPlWq/UGt9ttIPDHffv2Yc+ePe2+W61W+0N6evqu5ORk/PTT
    /26NgwcPRlJSUuzRo0efbWhomOnz+SRduUAXuhd9Pp8oLS1NQlEUucfC4o/GjBnD9O3bl/J4
    PGhubobVaoXX6+WJS9ra2iAUCqFSqaBQKCCVSnkdMZ1OhzFjxlA5OTn4448/BoEls/oBPdTK
    y8shEAhyjEbjvW63O2L06NFYtmwZ+vbti+7yCUTU848//kiqq6t7aM+ePdu9Xm/YCnZisRg0
    TTdTFFXPMExuVlYWZs2ahby8PGRkZCAiIoIP/EPB2NzxGSHQzebmZpSWluLIkSNYuXIlampq
    GJ/Pd8blcjm6o5j6VzVesMKrUfHx8bjrrrswaNAgZGVlISoqil+XUMezpEDa1taG1tZWlJeX
    4/jx4/jkk0/AEYw1dzYPCEWCNBhAP4PBQE+ePFkoEom6vcQjEAgEU6ZMEaxatcrd3NycA2Ao
    upha9sCBA3jmmWfsU6dO/WrlypU7/H5/UkZGhn/w4MFRa9asuW/nzp2Tdu/eLXG73f6oqKjN
    w4YN+3rJkiWBxYsX480334Tb7YZMJsP27duvPHPmzPKWlpYB2dnZWLZsGSZPnhzyh+wSTOLx
    eGQURZ0Lz9nV1gusOj3kcjkGDBiA66+/ntdYIfCqjmvj8/ngdrvR0tKCkpISHDp0CFu3biUU
    sgYAk/E3IGtgGIYRi8WYNm0aBgwYgO7c8CiKwqFDh7BlyxYwDMMQXHiYzQmgjGGYa7/77jsc
    OnQINTU1PHsdWR+Kotq17kkSFKzbQ/Q6grtLbreb6K3wbfvgbiQJePR6PaKiokiC5OUcQiCM
    6+IAUEPT9JBVq1ZhzZo1cDgc/PclFouhVquh0WigUqn+spIZPL/0V6QV5HA4HLDZbKisrMSZ
    M/8r40LoaLl1MyG8rHUAS8gwHl0ngn4pJuT2s9Vgu45dYgsXLsScOXNw8ODBo1OmTHmgtLR0
    ZEVFRWZKSgqGDh2a+p///GdKeXl5Erk/9Hp9Se/evT88fvy47eqrr+bf54orrkB+fn70nj17
    FptMpjt9Pp+0m/a98/ojkUgkEwgECAPcNx3AOJFIxDidTuerr76qrKiooCorK2E0Gnl4ICnA
    BMsIEMFqohWWkJDgkUqlXrCQvclgRwFc6IHm9/sRCATUNE0r5HI57rrrLgwbNqxbr2Hs2LGY
    Pn06jh8/DpfLpQAgDOdMIyel4AwEAmcAjE1MTMScOXMuS5syGNp8Lkrsc/lmMusWGRmJrKws
    9OnTBxyREi0UCitomvaEcX2awHZE++h0Otx9993ttM0u9d5jGIbvsF1oXQjCwWAwoFevXujf
    vz+2bt1KEiQLV0wMW4JEAcgDoM3NzfXn5eWFzSnl5uaK8/LyPPv27VNz17Shq4OYF198EWCx
    xI0AGg8ePEgoUYuMRuN2q9WaqNFoarVa7dZ169aZiVZC37590bdvX/Tp0ye7oKDgxZaWlkE5
    OTlYvnw5brzxxnAmRxAIBGKXyyWnKKrdQG83WRyXxDgtFoty48aN2LFjB6KiopCcnAyDwXCW
    DhKhjLTZbDCZTKipqeFVlwNsBN0MVtxMhb8Be5BEIsGUKVNw2223dfu5V6xYgW3btp0FWQyj
    ucDS4tKVlZVCk8kEjUaD6Oho/p4gR2RkJB/wk4FW0hk6l7Awgd4F/9npdKK+vh7V1dW8KB+p
    FtfW1sLv9wMsm1x1mNeljQu4GZqmqeTkZKSmpiIlJQXJycl855UomHckrgh+PRd5RfBrIBDg
    9caMRiOMRiMvWkjWqby8PLiS2BbmtRmC8BAz/JX15gp2FV15kqBArQXAZoZhsHbtWkybNk06
    bty4nc3NzQ/abLZEtVptioqKWrF48eLDx44dw7x58/DJJ5/gk08+gcFgUO7evfux2trau7xe
    b09IjiAQCCQ+n09BURTRHutOiwHg9Pv9jvXr1ysCgQB1qUUrMrQuEokkDMNQXKyg4PxRj0yQ
    yFdDglCbzYaKiopuLdgJBIJ2DIcURTFhgFfyxmnruIVCYRlN03R9fb3QbrcjKioKDMPwsGai
    7dXQ0ACn08l3foJfgyHfpNNItOqCf1YqlTyaQaVSQa1W87qaTU1NaGxshEAgcOl0OhN5/zAW
    MssBjLJYLISwBwzDwOl0wmazweFwwGKxwGw288LrHdeGrAuBfJPkJ3hdyNpERUUhJiaGXxON
    RgOhUMiL6nJWh05C4Tub0KgB9AMgyM3NpQwGgzBc35BOp5MMGDDAv2/fPpK0aXCRYlChMvIA
    z5gxo27WrFkfWywWgdFoDIjFYjz//PP833PteG1dXd3jNpttVGJiIl588UV0xIKHK0Z3u91S
    iqIIY1d32iEAt3NBzlU+n69fa2trXGtrq76kpEQHFj7D49SDh805c3MBQjPY+ZXfwQ4QnuB+
    91/7+5kXAEMYHfPz8xEXFweDwdAOzx3SE3LQmba2NjQ2NsJoNGLXrl1YsWIFXC6Xvwck2iJu
    76VGjx6Nt99+GzExMXwi2BV7CBG9JM8bmV+yWCx47LHHsGnTJnCBnzCM60KBnT/S9KD7V8X5
    yPXoRtpzcg9MmTLFExcX90NkZOR+l8sli4uLc/fp08f68ssvB7Zt2wYAWLp0KfR6veDAgQO3
    O53Oe7uzc3ShBImiKInP55OFyR/9yvmjwX6//yrue4wHoAPbCRKRIkOwEDWpgnMJUDOAZr/f
    XwHgMOePToKtbvdooygKbW1tWLp0KVasWNGtiAKKotDc3Ay/39/tc9jnS9rEYrGzra0tYDab
    hb/88gt+/fVXnDhxAqWlpbxIts1mawdtDi44Xej9OzKwisViviiYkJCArKws9OvXD9XV1XA6
    nRAIBB6FQmEPc1HTA6AeQMDpdAr27dvHw93OnDnDw76tVisPfe9YjLvQvXCudSEJJBnD6Nev
    H3w+H5HhAFgCiU4NZXU2slACSBGJRMjOzqaFQqE4jA8zlZ2d7RSJRHK/35/IOaawcFXfcccd
    fOGh499NmTKF0KdOdjqd06VSKTV37tyekhyBoigxSZDCQPXtAcutXwLgOy4IjBEIBDcGAoEn
    5HJ51B133IGmpiZs3LgRBoMBs2bNatu7d6//zz//1IDluV8OlsWwhaseBPA3MIFAwHQMbsLh
    EP83dmF6wrrJuYBXNHjwYNx11128Fs+Fgi5ykC4IcU4koAlmbes4GE5mNzQaDWJjY9GvXz8k
    JSVhw4YNKC8vN4ClcT4QxnWJAJAnEAhw5ZVX/iUNPHE+JOHzeDzw+Xzt1uRc60JY/oI7cYRd
    iNwn5PcajQbDhw/Hjz/+CL/fnwN2UDdclGNqALmkkNJTHu2ggl1Ld5+cYxxjyLkLCwtRWFjI
    //2oUaPw888/IzExcZDL5fq3z+fTdef1XUSCJCYJUgddoe7yR2XcsZG7vyLBzjk/JRKJ9DNm
    zHC3tbWp161bB4PBgPvuuw+//PILOD2pAgAvca9W7rn4W/ij4O+HdI7/z1fqvF6hz+dLZhhG
    2NzcjEcffZQXDD6XLyUBPZnf7MjW1hHyHczcRoTPGYZBc3NzOzQPmefhEiR1c3NzQhjnj0hh
    LAWAwOl04rnnnkMgEEBbW9tZzzfxtQQGfy5GOwC85Ma52OvIHG1LSwtqa2t5LVGZTAaxWBws
    c5DAxRCX3VoThWBh5DKZDAkJCdJw38DJyclquVwusNvtci5563Hmcrlwyy23xPn9/tk0TWsm
    T56M2bNnd4q6OMQmIglSR42KyzQxV3FTgq0uC8FWetu4BNaBc1OeesB2D+ICgcCVFEXpJ0+e
    jJdeegnvvfceNmzYAKlUittuu006ceJE8Zw5c1BWVpbNBdT7cf5ZCBEALXdIwNLwBrhXa1cm
    VmPHjoVcLlcVFRWlulwuMReYBxoaGrIYhpEEAgHU1NTg9OnT3Q5pMBqNYBgGFEUpNBpNvkwm
    awZAcZhgd0pKShlN096BAwfi7bff7rZEQCgUYsiQIXxyROhOrVYrmpubYTab0dLSAqvVyou8
    kgpe8OYaPCNAZpVkMhk0Gg10Oh10Oh0iIiIQHR0NnU4HrVYLrVYLsViMxMRE9OvXD+Xl5QoA
    g8AyUYWrk5QNIFWn02H48OEAWKrtxsZGWCwWnvGovr4edrudh6DabDae7S94bQC0m9siyRGB
    LhAYQ0xMDM/UFBkZiaioKERGRmLIkCHQarWwWCzJYCUfKsK0LsRR9zRL4Pa/lp52YTqdDv/+
    978V33777Vyv19u7p10fRVFiAvcLkT+SgO3+KLnkVcS9En9k+4u93wu2GxQPYDQA3ciRIy1L
    liyRf/jhh2AYBhKJBBMmTMDo0aMxe/ZsVFZWZgMYCBYZYbvANek4fyQ+hz+ydmdixQX3DHoO
    FTnDWdgfF4ZhBgEQMAwDq9UKmUyGuLg46HQ6REZGtoN8BxMABUPGSHGJQL5J8SqYYIgcjY2N
    qKysRG1tLSwWC1pbW9HS0sITlgQCAanT6cwDy5oZLq2wGK4wBYZhYLfbIZVKERMTA51OB4PB
    gKSkJKSkpCAqKuos+HvHdaEo6qx1CX71er2wWCyorq5GdXU1mpqa+HXpsEdkcP7gsru1nU2Q
    VABkQqEQGo0m7O0PvV4v59qeH96YAAAWn0lEQVSxUu7aepTNnDkTn332GfLy8q5rbm4eFBUV
    hblz5yIuLi6sFaLgjYdhGJHb7RZTFIVOaE9IwTI4jQRLk5oMlixBzN1zQi5YqOOOGrDsV7Xc
    7wPc9zcMwJ0URQ268sorBU899RTkcjkZwIPVakVhYaHwjjvuEC5YsACLFi2KNJvNT3EV27Vg
    2ca8YOl+owEkcUci5+jiuAqDj3NGpFVcBhYKcZi7vpDtzG63G0KhcGBra+tbDocjitv80djY
    KPF6vREMw2D58uV47733uv1eIMxMFEWl2Wy2z+12e4Cr+AhEIlFxTEzMnX6/v7obO1zZAJIV
    CgUMBgO2bt2KP/74A8XFxairq4PJZGrH1ubz+S5bnJRoNBBSB8Jil5ycjJycHPTr1w8xMTEE
    2jmAu5/DVVbNBxCpVCrxxx9/YNeuXTh9+jRKS0vR0tLCs2pd7FpcLCEHEcpUKBTQ6XRIT09H
    Tk4OdDodIWswcNe2NUzBlZw7eprJwXYfepSdOHECN9xwA3w+3zCHwzExHAHohc7JMIzI4/FI
    AMDpvGziSBnYri/xRyncvSrikhMRlxzVcs90bZBPsnC+QQXgCgAzAQwcPHiw9dVXX5XIZDIN
    ITNqbm7GkSNHcN999+GZZ57BokWL9CaT6XEueFwLFhnh4+6H2CB/lMD5o3juWj0d/FE5gP+A
    hYzXhjJZGj9+PCnYpXQo2GUGAgGJRCLBrbfeiv79+3c7adD+/fvx448/AoBCrVbnSaXS5piY
    GFKwc6WlpZXTNO0bM2YMFi5c2C01eLDEHejduzdmzJiB1NRUft6TUFgrFIqQMbb5/X60tbXx
    DHakm1dcXIzPPvuM6M8N4IqJ4fJHudx9jKSkJNx5553IyspCfHw84uLioNfr+XUJFRyepml+
    dil4PrayshKff/456ZIngIXFXrbMQmevVsDey1RYKKk7WhAjCMUdPcoKCgowatQo7cmTJ6d5
    PB7l0KFDL0lXoSusIwaUYRiBz+cTkWD+MiwHwBywMIQUrVYri42NhcFggMFgAEm8TCYTT88c
    CAR8YKvxbq7SRnMOSa9SqeQTJkzAggULkJ+fj/379+PQoUMgDnPLli2YMmUKZs6cCbVajVde
    eUVdUFBwK03TN3JOz4X/HYqVAZBJJBJBREQEYmNjER0dDalUCrfbjaamJlgsFtTX1zMej2c2
    gNMAvgTwdaiqv1zbWOFyuRJdLlekWq3mN41gRrDm5u4fmaIoCnq9HlwiGw+w8zhOpxMikcjm
    8/lEpOPQTdYPQKTL5cLSpUvhcDjI/fK/pVeJhFe2Jyr3er0ecrmcT3gIZI6sLRGZ83q9vOOx
    2+28I6qvryeOBwB4RqqgxDCFC7jC4ZDUYGf0RCaTCc899xzcbjcfaFIUBY1Gg+TkZGi1WhgM
    BkRFRSE6Opqf2yKMfwTeQHQnfD4fvz6ENr+xsZHvTJGOXVNTExoaGnDmzBls3boVUqmUdKIE
    3LVpEB42O/KM9zST9cSC3RtvvIH58+fLVq5ceavdbo8Nx37TMW4Ihn0St+52u8UALrdglwtg
    Llg2wWSuePdXNpjEX0H+yMH9WQG2yyMTiUQBg8Eg27Bhg8xisVAHDx4EAMbj8VCrVq1CbW0t
    fD4f9Ho9TCaTCsA/ANzA+TYPlyApuPtCepGxyt1B/ugrhGimtq2tDQKBYHBTU9PbDocjiqIo
    BgBTX18vdbvdeqVSiUmTJmH69Ondfn+KxWJs3boVfr+/V0tLy9cURQVIjCIWiwtjYmLu8Pv9
    td1YsOvHBd0YP348nnzyyS6Pe0UiETQaDQ/3JrpaDocDJSUlWLduHQCkhtEfCcBqV+oAYMSI
    EViwYAGUyq4FcBGGWZVKhejoaB5mTtM0GhoaSIIk55LHr7lCebcnSDYALpqmQ9X+7tzF2Gwk
    2CeBdo8yu90OnU43oK2tbYhUKsUNN9xwlvhldxuB2pyrqncZFcU4AMsATExLS6MmT56M0aNH
    Iy8vDzqdrh2+tLGxEaWlpSgrK8OZM2fEFRUVYqPRqG5tbY2iaRoajQZ9+vTB5MmTiXAdLBYL
    Pv74Y9TU1EChUBR5PJ7onTt3GjZt2oSZM2fi1ltvRb9+/bBp0yZq165d2rq6Oi2hU4+MjERS
    UhIyMjKQlZXF69solUpekdrj8cBoNOL333+ntm/frtu5c+eVdrs9nwv4XkHohqwZhmEYpVKJ
    hQsXdnt17qJ3PoEAP//8M9566y34fL7uLi+rwELZRH6/HzU1NRAKhfywanp6Onr37o309HTE
    xMTAYDBAr9dDo9FAIpG0mzMir+SeJhhmQrfq9Xphs9nQ3NyMlpYWmEwmlJaWoqioCOXl5air
    q0NTU1PwdxQNtku5LwxfSywX9BE6XkRHRyMrKwt9+/bl1yQ1NRWRkZE8LpskQxfLkEnw8SRp
    IvovlZWVKC8vR3FxMU6dOoXi4mKYzebgIktvLrkOR4LU44piPfnafv31V9TV1aXV1dWN6ubC
    R7sgOPie7OiPGIahaJqmyN9dhj9aClbI/pLiL7AQPCXYynw78/v9gl27dsl37NgR/OujABKO
    Hj0ae/To0Y5zpBTnQzpDHqIB28HqxxVJlofCH3EFO3lbW1u80+mM+KtENiwPDHfeQCAgcjqd
    MR3uG4vP5xN1IzmBhEsE5EqlEsOGDWuXHAUCAbjdbtjtdjgcDp4V1Wq1wmq1wuVy8XspOYLl
    KUgRjxT41Go1T0JEEoFg6muVSoWBAwdiw4YNoGk6irsvwuGPtFxhgRKLxRgyZEi75IjACMm6
    EPIjsi5tbW1nrQvDMLzPImujUCh4TTHCZqdUKqFWq3lxWZI4DR48GAqFgsyGDQTbLb4sUc/O
    JkhOAC6v14vGxkY/wqw90dDQ4PN6vWKweGIHepA999xzWLx4MQQCwQC/3x+l0+kwePDgsF/X
    uRKkzuSAYPnwqdzcXCxYsOAv4YN6vR5ZWVkAwDNiORwONDQ0wOfz8UEvedhsNhtWrFiBDRs2
    gGGYNq/XuzIQCAxpaWm59eWXX0ZMTAyuv/56Pki8//770djYiJaWFn62hGw456v6REdHo3//
    /khLS8Phw4dht9v9YGF2IWegEovFGD58OEaNGtVjozq73Q6RSASv19vdp44iiYDBYMDgwYMx
    ZswYjBgxAunp6dBoNCEV5YuOjj7ruSCK3cXFxfjPf/6DXbt24ciRI3A6nSIueVOi+wVjc8DB
    GbKysjBt2jRcd9116NevH58chio4IQ4qeI0Ik53f74fD4UBhYSH27NmD9evXo6CgAAzDJIKd
    AywMR40MPZM62YXw60OdZZzA4lCfz5ccrmsIDm5IoBnCoNd+uYHRhaxDQcsJ4DOwdO7/vMzi
    4sWaHyz8L9T+iPmr+ODkyZOIiYnpdohdSUnJ+daxuwt2Oi7YRlxcHNLS0lBVVYWysjIUFRWh
    qqqKh303NDTwUiME9k2KcsHFOVKEJMQFwSxtwbOxMTExiI+PR2JiIlJTU5GRkYHExETk5ORA
    o9GgpaVFDGAwRVFKAM5uhsomg4XCQ6vVom/fvqitrUVlZSUKCwtRWVmJuro6GI1GNDQ08JB4
    QsAQvB7BIubBhU3yc/BsLBF0J+uSkpKCjIwMJCcnIy0tDZGRkaiurgaANLCwyLAkSF4ATR6P
    B8XFxWHf8AsLCxkua2xF+AbWzu0hXS6sXbtWNn/+/N4+n09E5irCbUTnJETmAPABgBG//PJL
    723btuGmm25CZWUl6uvreYpHIryp1Wqh0+n4SoBarT4roXI6nTh16hS++uorrFmzBk6nMwBg
    m9/v/xosW92gwsLCjMceewwPPvggxo0bh5SUFOj1egIXa1fN8Pl8/EB/S0sLzGYz3G43xGIx
    VCoVUlJSoFKp8OWXXxKY1Q/oQtXzHjB42lMtE+ysGHQ6HYYOHYqRI0ciKyuL1/bpShMKhVAq
    laAoCmlpaXA4HKisrMSpU6fILEQ+2E5SdxMSZAPQEKfhdDp5KBxxUl1Ji0sqgi0tLWhsbER1
    dTVMJlMwHJcwyXW5Dt1fJCJtPfBebkMn9ThCbUuWLMFTTz0lSEhIyHK73WGb2+ooCBnigh3v
    j8CSh3SJCwU7c7cOLH33YBIwdpF935X+6Fxxy2uvvYZ333232+8Nt9vdkzT50sEK2cPlcmHZ
    smWorq5GZWUl7HY7PJ7Qh5smk+ksn0QSp/T0dBgMhuBnJZ9hmGiKorrbH/UjfpqmaXz44Ycw
    m80oLS2FzWaDx+MJeYwTROPNJ5kkcUpNTUVcXFywP4oFi/b4TzgSJBtYCssb9+/f79m+fXtA
    pVJJujvooygKXq8Xv//+u4SrLBzvaQ7JZrPh1KlTCplMlgiwAmEmkwkikShs8CqBQACTyQSr
    NaTFzWMAPrVarc+/8sorsk2bNuHEiRP87Ahpn2q1WsTExCA2NhYxMTGIjo7mBUClUikvKlZc
    XIz9+/ejqqoKfr/fC5Zu9VmweNsGAPMAvFBYWNj/8ccfx+eff44RI0YgMTERMTExUKlUsFqt
    aGhoQENDAxobG1FfXw+TyYTGxkY4nU4EAgGe4Sw5ORkpKSnYs2cPGIYpAfA+uogu3uPxYPPm
    zSguLuavoScZRVE4cuQIDwfoZqsDS6U9pry8XPPKK69gzZo1yM7ORnp6OtLS0pCRkYGkpCQe
    jkAGQUmX8ELXTKhEyewRITewWCwoKytDWVkZqqurUVpaioqKCrS2tpJn1QrgzzAVYX4BsIlh
    mFFFRUWG4uJirF69GvHx8UhNTQURjU1LS0N0dDTUanW7dSEwu2Dx2OBCCdHu8Pv9cLvd/Jq0
    tLSgoaEBlZWVqKysRFVVFaqqqtDY2BgMr3aCpdr/HeEhafCAFeLsadbc0wp2DocDH3zwgUql
    UmVxAqZh2V86doAJrDPU/gjACwj9fJoHrL7V88D/b+/8fuO4qjj+nR93vPbueDapE9shLbJb
    JAxVQERIiERIUARFQuIlfchjJF4I6lOf/JQ/gDdQHkEg0pcoSqBQEiVRSR4iJUobFdrihNRx
    m7Vlr2V7dmd3vfPzXh7umfXEjRs3Xu9Oyv1II6/XK3t85557ftx7zsFiVh9B7jB3m/+Sw1fv
    9VzZQcGmZxpd12FZFpIk8QHMx3H8lYWFBf38+fM9v5ckSdBqtdBqtR5xnugeG3EcM13Xe3na
    QwPlHgGA67q4cOFCz8eFc95pPLu8vPyZR0gOHIMskNJTBymGrPRVv337tnP8+PGuN238IoNE
    iroJ4F08ZVLWbrG4uIhms2lGUVTSNA2VSgUnT57sexO0KIrSrchuEUMmxf14ZmbmJzMzM0uQ
    UfY5WtgLAA6srKyMzc7OOqCz2bqum+k5XE3TOsniFCGJAXwEmZx6BhvJiDGAtyEbgr2xvr7+
    6s2bN51bt251zq6mjfvSKmdCiDY59h4ZLgtkVGkARldWVl68c+fOBMnGH2l+74JtoGntdhun
    T5/u2jGx3VqUoygCY6zXhU8+AvArAD8A8KMgCL5dqVReqFQqI1evXmWmaXa6jdu23SnJ7TgO
    SqUSGGOP9FpgjHUanKbb+1EUwfd9eJ6HWq2GWq0Gz/Me6exNwZ6QjJ95yFyDK+S8rfThkdyE
    TDr/HoDvCyG+43neS57njd29e7cIyKh8WozBsiwUi8XOuKQysbnvRDbfKJW9RqPROT+fFrVo
    t9vZgI5P4/KQglI3IEvsz/fJQWqQQfxz5KcXkqAgYq5yYufn59FsNgc4531LghVC4OLFi3Bd
    N20vAM/zcP/+/a4uYaSPXoEs1LAAWRXuE9JHA5CJ92PYKLVtQ+acbKk2ab6fod9dzfytSyQT
    b0AWKio/YW6kxy89yIp5WX20H3Ln4kUy8HZLHym2YGRkBJxzMMb+5fv+L8Mw/IUQ4me6rk9F
    UbQ3CIK+rDOGYURCiKplWXO2bf/Ttu2/rK6uzjLGetlQWVCAwADwGuTx7zLykW/ZhqxG/A8A
    f34a56gbDhIgI6m3OedTruv2O9Nco8XvTt4EjZp6xUEQtACg3W6LbMO+nKB1ybCZB/BbMnL/
    Bnn0oEUKRCflU4LMMxkFMMY5P+D7/gu+7z9P7w1CHl+Yh0w+/Ctk2e7kMUJ6G8BJyP4Urwoh
    vhmGYTkMw4SMprRsa4UifVXIM6lrJEjpPjWDTMp9hYT9zacVrM/xjKBpWs0wjPcNw3gujuNc
    Nw6kSlO6YRizmqb5aTCiRywBOAvgLVp4J+m5fCuO40nP8/Z7njdMlaJKkJWhjMxc3u4inzrb
    LQqwtMhoqUJGbf8N4B4ZVXk4vrsC4O9kjJXIwJuCzP35ahzHY41GYx8FH4r0mQE82ocMm8ZJ
    bBoTTrIWZsalSX97CcCnkFW17pGD5OVgXBIKjtUgE3PzQIPuKcqTXK+uriIIAi0Mw77lDQsh
    cO3aNVy/fv0z72fWn06l3B2wQProA1pLZjLrfqqPipBNYEfJWTqAjTLc4xl9VCF99BYZYPwx
    68l7AH5NwZ2fQh453UPz09tCH1UhK6X6mbmS9hD8If2ONzO6ajd0/7NETxyTzI4En5qa+o+u
    6/cKhcLvR0ZGXp6bm/takiTfdV33G/V6vcwY26Npmh1F0UAcx511Njt3tzpdtXl+0+cEYywx
    TTMQQjSiKForFApLnPP3TNP8gDF2Vwgxd/To0drDhw/jBw8e9OM5LAH4HTlKL9N1mPT0AdJB
    1i7OL0Eykea/36cg2YcUmJrDDjZLurE4zgN4Hfnp89CihStXNJtNWJblBUHwm+Hh4cuapiFJ
    Ep4kieCc56EJWtrsLjAM40MAO93ZuAQZaQ+38O7rpLiyC7RFSqFACkmQQmnhyUmpa5B5D2/T
    XCyS4Kxjo+nsk5SLT4L2B7qXru9CkoP0rmEYr5mmqeftWN2WC4VpJgAamqb140ioTwvxEmR/
    KosM/gIZHvvIuBmhZ5/+bCDzOo0IB4+5fDKqVzJXDRulfuOcPpaY7rNGwYjzm2RoD43Jc+Qk
    WZmxy14azfXsmEQZ52iVxmSN5Cn9WZLDMXkfsjHn19H7HKjHGXEPKIiYx4Bdk3N+zbbtwW0E
    xnZFQX2ewSiE0IrFYp0xtgZgp3mHlwFc3cJRTaveLpITleojtmmtEaQfWtuYWy4F9S6RLhoi
    efVJdrajjwIKSpzZLX1E1CGDynuRn+awT5Krj3sdkKGAdgJgWQjxDoB3Tp069adz584Nlkql
    8ujo6PO+7+9fWlqyXdctO44zUSgU9uu6PiSEKHDOrSRJWBiGRhiGOgBYlsXpShhjsWEYMee8
    tb6+vuC67uzw8LA7Pj7etCyruri4WOGcrx08eLDlOE585coVAOjLsbZNcGz0tLxMsrIPMo94
    PBN0GKeve+kzBjb6YhqZ79NxTkhGsq9Dkq1qxiZYJtn9mL5f75ZuetaiBgqFQrHdtU3PfNVJ
    +ae7I9mv/8/oGQP4yzAWBmSfqlIO/h+NlPUneXOyJyYmUgdlUNf1wS/ivPSSwcFBPjk52QIQ
    DQ0N4ezZs2pl6yJHjhyBbdvsxo0bpUaj8czYg4yx5PDhw40oivixY8cwPT2dm3ubnp6GaZqo
    VqvM930WBIHu+77ebrf1ZrOp1et11Go1DQDK5bIol8twHEc4jiNs2xaMMe44Tnjo0KGw3W7j
    xIkTX4apZmYCDmkJ/TRgxza91rARhEuvbMCulXkvVjpcoVAoFAqFQqFQKBQKhUKhUCgUCoVC
    oVAoFAqFQqFQKBQKhUKhUCgUCoVCoVAoFAqFQqFQKBQKhaLP/A/1jUrIk8gMMgAAAABJRU5E
    rkJggg==
  }
  set pieceImageData(Merida1,75) {
    iVBORw0KGgoAAAANSUhEUgAAA4QAAABKCAYAAADjRJpiAAAABmJLR0QA/wD/AP+gvaeTAAAA
    CXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH2AUBCwwvSdRBQwAAIABJREFUeNrsXXd4FFX3
    fmdmW3Y3PSGVhJBCgNAJEDpSQzEgqBSVKuBPQFT8EAREQEQFUfRTsaICFgRBuvBRlKp0Qggk
    hPROdrMpu9l2fn/MbNiEbBKkbWDf55lH2czdmbl75572nnMABxxwwAEHHHDAAQcccMABBxxw
    wAEHHHDAAQcccMABBxxwwAEHHHDAAQcccMABBxxwwAEHHHDAAQcccMABBxxwwAEHHHDAAQcc
    cMABBxxwwAEHHHDAAQcccMABBxxwwAEHHHDAAQcccKBhg3FMwf3Dhx9+iKKiIoSFhXHDhg0z
    ubm5gWEcP4EDDjRAcADCALQA4AogG8AFALmOqbGJIACtAFwCkOqYDgcccMCBBg9XAI0BuAvy
    LwtAuWNaagULwOwwCB9hjBkzBu3atWP3798/XK1WKwICAg73798/64cffjAdP37cMUGP6Ev4
    bzF9+nSIxWKoVCqpTqcT2TqPiBiRSGR2d3fXATCLxWI4OTkhJycHIpGIKS0tlZnNZo5hGKpl
    nzByHKcjIvzyyy8AgHHjxgGASK/XS81mc43ODSICwzBQKBT6Vq1aGTIzM/Hhhx/a4z5oWRtU
    j/NdAIwFMBVACAAJgFIAfwNYBeAvAKZ6rkemnuc2dIgBLAMwBcDXAN4AYHBsSY8enn/+eSgU
    CkatVoeUl5dre/funafRaMyvv/66Y3Lu315nckyFA3cIEYCeAF4E0AaADEAJgEMAPgGQUE95
    +qghGkA/AH8COGpvP6g9eRnCwXuRFYKHIR1AEgD1w7AKsrOzMWjQIKSnpz+WnZ09MTU19WJi
    YuLvnp6eW+bOnZukUqlMX3zxhc3xs2bNQuPGjdmTJ0+GlZSUaPfu3ZthUbgdsAkFgPbgIxNu
    ANIAnBLWVYM2DouKiqBQKJxSUlJm5efn9zKbzWTLIFQqlYXNmzdfASBBoVDA3d0d2dnZUCgU
    vleuXFmg1+ubMgxjaz44juOOcxz3HhFpLR+mpKSA47hehYWFL1ZUVMhqMiiJCCKRyBwYGPhL
    165dN+r1entSRGQA2gLoAMAXvHfzNICzACpq2TOfBbCUZVl3FxcXODk5QaPRyMvKyoYCCAQw
    o46N3hNADICWAJwApAA4ASD5YXJYVINc2N89hP8qHpZ93YHbQ2ZmJkaMGMGsXbt2Ul5eXs8L
    Fy5s8/Pz+2P27NlXPvzwQ/3PP/+Mp59+2ub4lJQUhISEYOHCheLMzEyzk5OT6bPPPnNMbO1w
    BtARQGsrOfg3gCsN3TicOXMmRCIRSktLJXq9vladluM4cnZ2roDgGHVxcUFeXh5EIhGj0Wik
    ZrOZq8WIYRiGMbIsWwEA33zzDQBg6tSpAMAZDAap2Vz79u3k5GSIjIw05OTk4N1337UnJ0EQ
    gGYAvIR9+aogl2p7oFgAKwFEVPs8QviulwGcr2W8VDg3VJCD2QAuA8h/iN9DKXhH8hQAGwCc
    A1DmMAhvQgygB4DxALoDCBA+MwoL5CiAdYI1rW/IK6GsrAwqlQo6nc5cVlYm12g0nVUqVcf8
    /PwnCgsLvwkKCtr67bff5ly4cIFWr15dZezYsWOhVCrZ3377rX96evpCsVisGj58+JsAzixd
    uhQLFy50iLxb4Q9gpqDA+wsbn0FQ+lcC2N6Q11R5eTlEIpG4sLAwJi0tLdZgsB1w8fDwKAwO
    Dl7HMEyCSCQCx3EoLi4GwzAuGRkZj2m12kgisiUFIRKJDGKxWGR9zo0bNyASiUIyMjIGl5WV
    SW1dWyKRmJVK5VWxWPyzyWSyF+XDFcA0ANMBBIP3mhN4KuOnAL4AoKlhXCSAaQzDuA8YMADT
    pk2Dt7c3EhISsHr1aly+fLktgBcAxAMormF8MwCvAxgh3AOENXkKwLsAdgp738MGa6+Vw2ts
    Gy6CwRwIQCkoC5mCs+ChMKBVKpXlv265ubk9WJbtmp+fPykjI+Pn3r17/5SXl3dtwoQJpnXr
    1tXk3ELnzp3h5eXlk5WVNclkMt0YNmzYjzKZrESr1TqcozUjAMBsQQ76CJ8ZBWV9JYDfanGA
    2T1yc3Ph5OQku379+tTCwsKugmO0pj2GVSgUBZGRkWsAJCmVSri7uyMzMxNKpdLv4sWLr1RU
    VATWYgRxHMed4jjuYyLSWT5MSEgAx3Hdi4qKJun1eomNazMcx5kCAgK2tW/ffktZWZm9yEEJ
    gMGCntRO2H/KBPn1X2FtaGsY11gYE1HTPAPoDeD/AMwBHzWsDi8AkwE8B6CJcB83BD3/IwDH
    8XA6R2XgnaIAT7F1chiEVY3BMQAWAAhjGIZxcXEhNzc3RqPRSNRqdRMiagLem75MsKgbrALP
    sixCQ0MJgA4AMbz04m7cuNGhrKwsUqVSDcrLy1vTq1evg9YC8ejRo+jWrRu6d+/eMykp6f3C
    wsJWIpEIZrPZpW/fvq8eOHDg1Lx58/DOO+84RN9NyIUNabZUKpWFhYVBqVQiJydHnJGR0YWI
    lgsK+/6G/qBERCaTCe7u7ujQoQPEYjGICCzLIiMjA/Hx8SAis0Whqg6z2WwmIoSFhSE0NBQs
    y/Iag9GIixcvIjc3F0QEIoK1B1T4jMxmMyQSCdq2bQtPT89KmmhZWRlOnToFvV4PsmVtPhhw
    AMYBmMdxnFtwcDC8vLxQWFjIpKWlhZhMpnmCEPuyBqHUHEC4t7c3XnzxRQwdOhQA0LlzZ+Tn
    52PhwoUgoraCQl/dIPQEMA/As05OTmxoaChkMhnS09PF+fn5MQDeBlAA4NhD8g56gfc8cxKJ
    xNVkMnkJ/gB38FH7EmF+MwHkPeL7FQegK3jHaE/wEWtOmJ9c8I7R7wAcQQOn2lZUVECn08Fg
    MOiJCHq9nisqKmpRWlo6v7i4eEBBQcG3ISEhW9q1a6c6e/ZslbGtWrVCUFCQd2Ji4qLc3NyJ
    IpFI98cff/hOmzZtzeTJkx0R51uhAM9YmAk+OmGt+3UQ9CoVgL0N9QFLSkoAQJqXl9cvLS1t
    mNFotJm+4O7unhcUFPQrgCSxWAyGYVBcXAyWZT3T0tLiSktLw2pzKnAcJxeJRJ9bG4S5ubkQ
    iUTNsrKyRpeXl0tsXVsikZhlMlkux3HbDAaDvRiE/cCnOTSt5pTqKhhqJgC/1GDkNgcfca7N
    AdhD+I6LNRhF/wfgNcHpZYEPgCcFY3M6ao8uNkj9n2EYMplMlrm05bh4ZA3C/gDeAtDEz8/P
    OG7cOKZ79+6Mp6cno1Kp6MiRI7RhwwZkZWU1BbAYvIf0t4a6ILy9vTF06FB67bXXVACMHh4e
    4lGjRuGff/7B+fPnFfn5+cO0Wm1zrVb7QYcOHX4cMmSIulOnTpg1axb69esXevHixYWFhYWt
    nJycAACZmZk9jEbj0qFDh76wY8eOVIfsq6o7ABgnkUhkU6dOxdSpU+Hu7o6EhAS89dZbOHr0
    aASAieBpM5qG/rBmsxnNmzfHF198ATc3NxAROI7DDz/8gFdffdViCJoBwNnZGS1btsSOHTtg
    oYmKRCKMHDkSr7zyCsRiMQBAo9Fg9uzZ2Lp1q+UaNdp1RARXV1csWLAAPXv2hMlkAsMwuHbt
    GkaPHo3U1Pu6NBlB8dHX4mFsCmA8wzBuQ4YMwX/+8x8EBQUhPT0dK1aswM6dOz2IaCKAfeBp
    M9ZwByBxcXGBr6/vzY1UJEJgYCA4joPRaHQRhGp19AIwTC6Xs7NmzcKzzz4LhUKBEydOYNGi
    Rbh69WpL8B7TU7U4vkSCoWDvHn0ZgLkARoGnU3EMw3gKf+sM4HvczNncIZxb+ojuVSIATwFY
    CD6CXF2jDANPq+oGYHlDd4wqlUrMnDmTPvzwQ42gcHIAoNfrpYWFhd1KS0uj1Gp1l4iIiFUq
    lSpx/vz5+OyzzzB69GjI5XL5X3/99VJ2dvYknU4nA+B0+fLlVzQajSk6OnpVv379dPv374cD
    VeTg2GrGoDVCAUwAT1kvbqAOURARTCYTGY1G1EZCMZlMlTLM+r9msxlGo5HqQ2BhWbaKY9Rs
    NsNsNtd5baPRCFu59g8IvoJh1tTG3/3B5weexK1FwBrZkHHW8BSO6ugk6F5KG+M6AZgkGIz6
    Bv7+McKe3tlsNkslEomS47hmer0e4JlJ4wW5ZwJPHz2LBxgZfZAGoT+AlwA0CQkJ0b/77rvm
    YcOGSWUymeVtYQYMGMB06tTJNG/ePHNSUlIQeNrDGfD89waHwMBAMAyDli1b5hKR0Ww2ix97
    7DHMmDEDX331FX755Rfk5OSE6fX65UajsUVQUNA7O3bsyB44cKDk119/nXzjxo2eCoUCL730
    EsxmMz7++GMmPz+/79WrV59/8sknl3To0KGiJprNI4rmABqHhIRg4sSJiIqKAgAEBAQgISEB
    x48fh9lsbiFsipqH4YHFYjHc3d3h5uZW+ZlCoQDDMCAizmg0+kilUv+cnBzu+++/R0BAAJWV
    lQUwDCMGACcnJ3h4eEAk4rcFjuMglUot/+/Uvn37AF9f3zKTycQAgFQqNV6+fNmdiBiWZeHi
    4gJXV9fKa7u5uVVGG++HngngMcEr6QM+0nYEfAS4OmWlCYBQFxcXjBs3Dt26dQMANG7cGM88
    8wwOHjyIsrKyJuDpMNUNwjwA2hs3biiSk5PRsSPvJK2oqEBiYqJFISgSjip6hKCcuYaGhmLi
    xImIiODZNn5+fjh27BiuXr0K8FVLvcFXaqsuvIeAj6wpBAG9VzAe7TFixAm/g5egdLFEJBb+
    JgVPmzFbPRv3CO9VAwAsrUUxsygWYYIDVQNgCxoo9bZRo0ZgGIaaNWtWCJ66yFkr91qt1jU3
    N3eiwWBoNmjQoOVRUVH7YmNjTT/99BNat249KDs7e6pgDAIAysvLXXNzc2dcuXIl4fTp0799
    /fXXmDx5skMC8ogATxmtDS0A+DVUg/Df2JAWJ57FuS4YafV6n+yL7FLjvttcMKoCwefjnQJf
    Abu6cdUUfDGY2hAprI/qBmExeKabopaxJaiZLtqujjXJgo8++tWg68sFGdgOfMrFdcGZkWKn
    +6EMwHzwkU/o9XqGYRiJ1Xv3tnDfLICD4GndhY+iQdgNQGeJRGKaNm2a4YknnpBzHFfFdSKV
    SjF8+HAuNTXVsGDBAkan03UAz03+riHuQkFBQRCJRNDr9SkSiURbUlLilJqaiqeeegrLly9H
    r169sHTpUpw9e9YtMzNzmslkcm7duvW8ixcvNi4oKHjKaDSKBg8ejFmzZoHjOGRnZ+OHH34Q
    5+bmjt+7d+8Fk8l0uG/fvkalUlm2cuVKbXZ2Nnr16vWoCkI3AKxcLoezs3OVP7i6ulq8fM7g
    k+0fDilnI3pnUZouXLiwjOM4DRExFiFoNptlRqOxseXc6t9h+TfDMNHp6ek/Z2Zmmq0+I51O
    56XX68U1Xf8+Ck5v8LkK43EzRwbgo23rALwnGIjWm7TIUlTAGs7OzuA4DuBzGpxquNYlABdV
    KlWXDz74AAUFBfD19cXFixexfv16CzX2GHgaZHVBLQfAODk5QS6XVzHkre5DJhzWaAngTfC5
    HhYBbAYwGjzd53vYX8SwDMASAFsBSDiOUwJ4wWQytQdPIVorKBUG4d+aR3Sf8gVP52taz/Mb
    A5glKHkN0jHq7e1tcaKkMgxTgRqiVyaTiSsoKOhhMBj+q9Vq5y9atGiTUqn0+euvv14oLy/3
    rn5+aWmpb2Zm5ktPPfVU/OTJk5NKSkpu2fcfZTlYxzkPlRysAywRubm7u3vo9Xr29OnTCAkJ
    MavVaneGYerUh1mWlURHR3uEh4dL9Ho9AwAuLi6mQ4cOKe3g2ZzAp2DNAp+HLBOMwAwAnwP4
    qto+q6zDoLMYYO41fJ4EvvBMu1rGxoMvDFldDnrUY0264tYIZCPw9Ofxwr4pAl988iyA9wHs
    hv3l35vA539nCDoFS0Rewm9lAE/XNgpH8oOW4w/KIOQEz4RLcHBwxZAhQ7jqxmDliRyHIUOG
    cOvWraP4+Hi5sAB/RAMMJb/xxhsYNGgQRCLRjeLiYnV+fr5HamoqDAYD5HI5hg8fDh8fHyxa
    tAiHDh0S5+bmjpXJZKyzs3N5aWlpsL+/PyZPnoxGjRoBAF544QUcO3YMSUlJAfHx8Wvkcnle
    bm6uSqfTXe7atWtCcHBwaosWLc6Ghobmbd++Xf/qq69i1apVj4ogzAVQkZWVJbtw4QJCQ0PB
    MAw0Gg3Onj0Lo9EI4WVUPQqTYTAYRNnZ2WE2NwKRqFaDUqfTuWRlZbW5HWP0Pu5h4wG8KJFI
    FM2bN4e/vz9yc3Nx+fJlL51O93/go3UfWG22eQBUGo3G9dixY+jWrRsUCgXKyspw4sQJlJeX
    QxhT3agDwzApRPQJgMB//vkn8OLFi5BIJNBqtTAYDGbwLSfW4tZEcYOgwBsyMjKkp0+fho+P
    DziOQ1paGk6dOmU5L7ua8eoFPu9wlKurK9OyZUs4OzsjOTmZvX79ejOz2bwAfDRxlx0uu2Th
    gMlkchMM2vaCkvAzbo2iPoroCp5CeztoD55+/H1DfGC5XI42bdpAJBLlFBcXl6tUKhdbe4pa
    rW5KRCvee+89KBQKZUlJSWdb+5RKper6999/rw4ICDjUvn374s6dO2cbDIZENze3G927d9dc
    uHDBbKG/P0LIFfY9WS3n3BCOhx5ardbt4sWLS1iWVcGKmm02mxUGg8GvTsWV4zpmZmauz87O
    tuaGUnl5ub/FMfoAMRQ808Df6jOZYBwuAB/R+8LKaFILh3st36lBzfndyeDbBy21MT5ZMEIL
    ajCQclGNGVADCqutSSfw9NVXBSPV2qjtgZvVUf+ysyWnB7AawHoALMMwzkS0Ajwr5BSA/whz
    RMLzljyKBqEEvFefCQ4OlgUEBNSqTfr5+bEBAQGIj4+3eAlkDdEgnDFjBvR6PZRKZfY///xz
    GUDTa9euoaioCD4+PmAYBl27dsXHH3+M+fPnY/v27eLU1NSxYrFYbzAYRDExMYiJian8vnbt
    2iEuLg4ffPABdDpdI51O10j4U0+RSISysjIVy7JXcnJyDvn5+R08derUma1bt95IS0ujl156
    6WHf+88AOJ+fn995yZIlSEhIgLe3N86fP2/po2cAcEBQwB9aNGvWDJMnT4bBYKg1d4FlWXTs
    2LEKxVMikaB///5wc3Ordawlh9Df3/9BPGIwgDEMwyhGjBiBhQsXwsfHB4WFhVixYgXWr18v
    N5lM48HnHicKY64AOKDX6yeuXbuWyczMRNOmTZGSkoIdO3bAaDSawdM3Emt4VjN4up4OwFSd
    TtdRp9M5A8gB8Af4ymwXbNzrEQAJOTk57d544w389ddfcHZ2xsmTJ3Hw4EEIwmA3qnpxewIY
    rFQqmf/85z949tln4eTkhISEBMyZMwf//PNPEPgcoaOwf8qXowRktdcON6lPtwNLK52fGqIc
    vHbtGqKioiCRSAozMzMzwHv7be4txcXFTa5du7ZSLpdrtFqtzUiMXq8Xp6amDmFZdohEIjFl
    ZWWpGYbJdnZ2TomPjz/s5uZ2MiYm5vLAgQPV2dnZVFuLp4dMDp4RHA81+grB0+qzHoXJ0Ol0
    kuvXr7f5t+O1Wq3H9evXu9vho/mCb2VgSwi7gy/Ush98ZA8AroGvoRBSy/eeA99PsDqMFiMH
    fBuFpoJerxXW22pBv6oJ/4CneDavZU3+Vc0QbQfe8Su3MaY5+LzE87A/tkkldZaIXKzurxR8
    pLXgUReEUvCNK6l79+6UlZVFtSEvL4969+5tqcjzHWwno9o9nnzySQBAixYtlnAcZ2rcuDH9
    +eeflc9aUlJCe/bsoaFDhxLHcZZnJrFYTB9++OEtc7Nr1y7y9PQkjuOoW7duNHjwYGratCnJ
    ZDIS+sIRwzBmqVSa4+vruzUqKmrM2LFjPQE87FVJWQAjwfe1IYZhrOdTB+BXwXPWYDF06FCM
    HTvWJTw8/DcA1LNnT1KpVFXWh5DsXq9DKBpTBUKifr2O6rh69SqFh4cTx3Gmtm3brvzmm28k
    06ZNu9vT0BdAtlwup19++aXK9bdv306enp4keA6HVBvXFnzRGL1lfQhrowLAHvD5fnWhPfgy
    2SrwnleveqzJsYIQMFW7bjGAj3GzJLUFbwIwRUZGUkJCQuWzGY1GmjdvnmX8GfB5kfYMN/D0
    UQLwO2r3Sj8qcAIfTaZ/cWxE3UUd7BJLlizBtGnT8Mknn4gbN278pbWcs3WIRCISiUR1nsey
    LHl6epKLiwuxLGs93uDk5HS9UaNGv7Zs2fK5gQMH+p08eZJZv379o+B0GA6elm2qNl9a8Gyr
    0Ib8gAMHDsSoUaNcQ0NDt9VnLT2oQywW30s52BF8Pl1t91AM4PFq47rjZiGT6udfBjCojuuK
    hO/4A3yE6wfwRVTqGjMDNyNj1ocBPNulOptphqC31fZ85xrAWnYRdE8C7/z1trfN4kGgAjyn
    1piWllZnFcK0tDRKS0uDsGgzUHNflAaBTZs2QSKRQCKR/CkSiYqzs7Oxb98+mEwmqFQqvP32
    25g0aRJ27twJ4GZREJlMhsjIyFu+r0WLFvD39wfDMBg0aBC+/vprbNy4EZ988gmef/55tGzZ
    EizLMhUVFb55eXlxKSkpn5w8efKjMWPG9GzVqpXo008/fVgFoRnANoVC8ZFEIikVqpBZ/nYW
    wBK5XJ70MD1wTVE8hmHAcVy9jprGsyxb7/H1uZ97ADEAjmVZyGRVWVFSqdQS8WQE76U1zoPP
    3XoPwCEiSgGfgL8PfMXLi/WZcvARSjfwCfxMPdbkJvD0nUQAeUR0CTerbC7BrTRKCQBGLBZX
    mWOWZSGRSCxzbKk8au/vYx54KlAeHs4eU7cLiwL0b2BoqHO4aNEiaDQazJgxw+Dj43OE47hy
    W+fK5XL06dMH//nPf9CpU6c6v1sikWDChAn45ptvMHfuXAwYMABNmjQBAJFWq21SUFAwMiUl
    Zc2ZM2e+eeWVV55UqVQuc+bMeZjXmBl8v93VuLWP5XnwVWuvOV7FBg8X2K4ka22IVXfEHRfk
    4AbwzJkCYY8+Dp6eWVfJXqMwxhe8M9MTdafhGMHn9i8EH620yIQL4Bk2r0FINbCCO+pmNMrr
    MQf28k7CykFjN3iQRWVOAsjLyckJ2LhxI5o3bw5391udxhqNhjZu3GjKyMgQCR6IE8JENkj0
    6tULzs7O8vj4+J5ms1luMpmwf/9+TJo0CQaDAXv37kVhYSHatm2LuLg4iMVirFq1Ch4eHggI
    uLUwk1KpRKNGjXDx4kVoNBp4eHjA19cXnTp1wtixY5GcnIytW7di8+bNSEhIQHl5uUdaWtpY
    rVYbk5aWtjYyMvJbLy+vgmnTpuHtt99+2DbJsPLy8gFE5OTi4gIvLy+kpaXBZDKFAxhYXl6e
    goeo1L3BYIBazcv8B10JjWVZqNVq3Ic+9OkAisrLyxv98ccfiImJgaenJ4qLi7Fv3z7LfBSD
    955WV8YTwVdtbAS+Wfxo8EU76mtchQrGIMBTZrxQN/3DIAhNb/B5hh+Bz6crs7GvXQVQnpmZ
    qThy5AiCgoIglUqRlJSEY8eOWcqfX4f90kWl4Olqj4OPqJrA03+Wgo8U/oUG3BT7DqEDn6dq
    vE1ZbOnd2GAdo5bCMiUlJWqWZWs0ips1a4YXXngBTz75JGQyGZKS6vbfERH8/f0xfPhwPP74
    41Cr1bh+/ToOHjyITZs24eLFi9Bqta46nW6QwWCI/vbbb7dGRUV9pNFo4g8fPkzDhg17GNdZ
    M+H9q05NjhA+T8OjW9TpYUGu8BvWlgepxa1FXkzgUxniwbNMpgF4Arxz07I31YUAq+uGCbIt
    v44xpcI9i4R9cC34fodZqLlR+3XUXdU0387XMSsYzTcEJ0yB8G817KQYzoM0CE8D2GE0Gp9f
    v34926RJE8ycObOyzD0A6PV6+uabb4zffvutyGg0Evgy6w22afPrr78OHx8fybp166YXFBS8
    ZDAYpABw6dIlHD16FCNHjsSiRYtQXFyMbt26ISQkBGq1Gp6ennBxcUFo6K3RcJFIVGlIl5SU
    WFeFhJOTE1q1aoXmzZtj1KhR2LZtG3788UdcunSJyc7ObqpSqRZnZmZ2CAsLWz5mzJjzKpUK
    D1HEMBLAu0Q01NXVlX355ZfRv39/LF++HLt37/Y0m81zhfM+tbEBNSiwLIvExES88MILlY3p
    HyQYhkFpaSlyc3PvdaQwDcBes9kc/t1333EpKSkIDAw0ZWdnc0eOHIHQAHgHbHvBDcIGTYJB
    5w6ehnq2Ht67CNzMafASBOPlOsZ4ABgmCE05+CpptQmxvwD8o1Kpei9evBj79++Hi4sL4uPj
    8ffff0MQJr/DPotCeAN4XjiCcTOC6gO+KXYcgC8FZeBRzaM4Cd47HnAbY4rQgB2jY8aMwZo1
    a9CtW7foK1euzK+oqLglhzIqKgpr1qxBz549wXEcUlNTK51ddRmE5eXlICKIxWJ4e3vD29sb
    HTt2xBNPPIFt27Zh06ZNuHDhAtRqtWd8fPzE/Pz89oMGDVrl6+v7W/fu3cv/+usve+oVd6do
    AeBd8AWdqjPC3MFXZyYAa/AQOEeJCF5eXujUqVNlP90HjeLiYpw8eRIGwz3tDpQpyIoI2Gaq
    nETN+YAWORIPPrrXSJBTj8F2Prw1wq0MNQ9hL7tUxxgnACPAO1L14Gs5XK3l/L+F+7NVgEsP
    nt2Tb6dL0xvA0+Dp280EfWEQeKfyDvD5mA91PYv6eq52AzCGhobS0aNHq+QAnTx5Utu0aVMd
    eI/oIdTdM8Vu0bdvXxARWrduPcTFxSWNYRgKDw+nJk2aEACaMGEClZSU1JhDWVNulwV6vZ7e
    fvttCg8Pp88++6zGXC7rvKNz587RM888QwqFggAQx3FmHx+fPx977LEYIsKWLVsehnUVAb7w
    h8nV1ZXefPNNKi4uJiKiixcv0uDBgy35JYUAXkbN7QXsHkIOoWt4ePjWBpA7seoe5U5YjP+t
    gge0eo7M78Lf6xJO/7Uatw91c/slAL6xGlMOvsmg4bAnAAAgAElEQVRvXXgMfAEaEhwRz9Vj
    zEDweYLGas93A8BK2Gc+ngx8FFArlUqpY8eONGHCBJo9ezY9/fTTFBoaankHtcJ5skdUBroI
    RrEJt5c/6NkQHzY3NxdhYWEYOXJkSHBw8B5b+9agQYMoPz+fMjMz6dtvv6W4uDhycXGpc24Y
    hqGYmBj66quvKCkpifR6/S0yMDk5mZYtW1YpexmGIaVSWRAaGjp/6tSp7vWhpjYgp+jWeqyt
    IvA0PXlDfEjrHEIIufSZmZlUUlJCxcXFD/QoKSmhY8eOUXBw8L3OpYfgZDtSg5ywND3vWw+Z
    9p7VuN24Nae9OlhBBlnL3Bn1uNc2ggFIgjE3tR7XeRo8lbR6vqNeWOdN7fg9XA++sAxJpVJy
    cXEhsVhsrTv8ivrVLbineJARQjfwvW8uAOiamprqkpiYiK5dbxbDSkxMFKelpTHCIjsvKG4e
    ghejQTXlTU9PR3R0dEhmZubLGo0mKDQ0FB988AFSU1Px7rvvQqFQ2Izq1OatFIvFmD59Oh5/
    /HEEBwfXmMtlAcdxaNOmDVatWoWWLVvis88+Q3p6OlNQUNDj0qVLHwwaNGjunj17/srMzKTA
    wMCGKBsYAFHgaYCPe3h4sLNnz8asWbMq+7xFRUVhxYoVYFkWe/bs8TQaja8L46r36LF7KBQK
    eHp66sVicYpIJKowmUxSy5qIiYlBixYt7mukUOhriFOnTuHcuXMWOiPEYnEJx3HXmzRpYjpz
    5sy9uHQigJcAjALQRfC+GQVD6SzqrqDHoKr3vK0gXPfUMsYTQGORSASpVIqysjInwVPKwnZu
    lwhAf8EDW9N1bSFZ8I5amgFLBI/wH4J30R7pogMATFIoFLLnn38eL7zwAgICAipbdJw7dw7v
    v/8+du/eLTOZTJPAV577/RE0CDUAVjMM05iI+texHixtTd5HA20TMGLECLRt21bx999/T8/J
    yelji1J+4sQJzJo1CwUFBfjnn3+g0dRvayYiHD9+HBcuXEBkZCQGDBiAYcOGoW3btnBycgLH
    cQgNDcVrr72Gtm3b4v3338fRo0dRWlrqZTQa5544ccItLi5updFozH/77bcRGxvbUOVgK/A5
    yUPrsce4gy9/D/DFsRpqg3qGYRhkZ2cjISEBffr0gUgkeqA3VFZWhrNnz6K4uNiixzH3UCaf
    FYyxSeBp+h7g6fhGYW89WY/vsFYg24Gn+deWR6gAz/6wdgTWJQcBvp948G3IQTP4Am5/AOiE
    m/mClrz/78BXLrU3eIBPRxnr6+vLxMbGol27dnB3d0deXh4OHTqEgwcPOpWVlY0UDPdZqLnN
    x0MLBXiq0Ebw1faKAZg9PDxo69atVbx5O3fuJG9vbxIWg0b4wX8BXz2ywVRYGz16NNatW8cG
    Bwe/JBKJymUyGa1YsYKMRiOp1Wo6dOgQpaamEhFRRUUFlZeX072GTqej3377jTp16lRZnc3b
    2/tEx44du69YsQIDBgxoaOuKA9APfLsAo5eXF73zzjuVkcHqiI+PpxEjRlgq11kiLUEN6YEX
    L14MIkKfPn2aBAUFrVIoFEWW37Jr1660c+dOKisro4qKCtLpdPf0qKioILVaTd9//z21aNGi
    0vPu7OycGR4ePrdPnz4eALB8+fJ7OSWs4GjyEwyvFPDRuGH12JPW4mbVTzOAD3FrIRpUMxqv
    eHl5Ua9evSzraAtqbyEQAp76Yu1NnVjHvUkFxU4LPtcwAnxp8XtdaVksGL3NBOO4O4Buwr8b
    ofZogkK4Vxo4cCBlZGTU+A6ePXuWoqOjLXPxM2rPD1GAL1zQEkAf8N7ubuA9zb5ouBFGVwAd
    RSLR+yzLlqD2SE6ZsC47C+u8QfEa587lWfqRkZGxCoUiG/eBncCyLIWFhdHLL79MJ06coIqK
    iipr8PLlyzR16tTK6KNcLi9r0aLFqueee85LqVRi165dDW09cYIz5jBujRTVdRSBLz7TpCE9
    8KhRozB16lRF8+bNPxeLxUYA1KxZM/rss88oLy+PNBrNfT9KSkooLS2NFixYQD4+PgSAnJyc
    Sjt27Pjq/v37RTNnzrzXOnZTwTk+HHwaw1Xw7JS6ZM1qq/VgBh8xrI17GyYYmtbraCtu5tbb
    cqbutjrfCOCFesj2yYI83yoYvFGCUWmvhWQsLTk0jRo1os8///wWFmBOTg7NmzePlEqlZX9/
    GQ+wQNz9dp80EizgSQD8GIaBs7MzwsLC8Pjjj6N796rtXWJiYvDSSy9h69atTFJSkrNGo3Em
    ohDwTXl/AN9s2u55t8eOHUNiYmKj4uLioUaj0alTp0546qmnwHEcXF1d0atXL+j1evz999/Y
    vn07ysvLMX36dISH37uuCFKpFHFxcWjUqBHmzJmD48ePo7CwsLNer1+2cePGmRcuXLj4448/
    YsyYMQ1BJjgBeBJ8A+9IX19fvPbaa5g2bRoUipp1zJYtW2L58uUQi8X47bffPAwGwwxBEC4H
    T89rEAbhm2++iatXr6Z27tx58ZUrV65lZGS8UlJSEnrs2DHMmTMHr7/+OkaNGgW5/N6ygdRq
    Nb788kusWbMGmZmZ4DiOXF1dzwQFBa3o3r37jqSkJF1JSQmcnZ3v5W2YcbPZrhd4KkkI+P5L
    pwRhYnPz5jgO/v7+yM/PZyoqKnoJ68FWXoMvAE9XV1f06dMH58+fh1qtDhL2OFse9q4AIjw8
    PMBxHAoKCth6eEY7A3hGMHjKwRcF0N1jA6Ur+Ga/7cBXT5VZKQWlggPlMvg88Avg81KsG+q6
    A2gmEonQtWtX+PnVXOcgKioKQ4cOxdmzZ2E0GpsJ3lTrfF5n8DlQbQBEg+815SF8zoDP/6wA
    X5zgPPjo2SHwVHB7h0wwbMcB6GQ0Gn3rMIghGOGTwUd9ToPvQ/gHGkgO9MGDB9G/f3/FxYsX
    R2q12hoXhZ+fH1q2bImsrCwkJibeMcPBbDYjOTkZa9aswa5duzB+/HhMmDChck1GRkbinXfe
    QXBwMFauXAmVSiVPTk6eqtFoKnr06PHewoUL1Wg4kIOn1b0uOI5uF+7gae9NALwt7Jl2j9DQ
    UPzf//1f2YQJE9aUlpZKCgoKRl+5csXpjTfewPbt2+Hh4XHfc+oZhkFWVhZOnjyJ8vJyKBSK
    Il9f37Vubm4b+vXrZ7zHjtEy3IyWmcFHniLBF4w5D9vsguqROkYwIhvDdvStEW7Nfw4Cnydu
    691pj6rpX/WJEEYIxpWvYEBewr2PZLPgA0+hgoGttHI8Fglyx1KdvMKGYT4EgHOvXr3w5JNP
    QqlUoqSkBDdu3ICbmxt8fX0xc+ZMXL58GVu3bpULzut1qLlSq0SY11DB6e0tGI9aQTdIA18p
    thB2UqSmLmPwv8JipbCwMMMrr7xi+v333+nq1as2o2JarZaSk5Npx44dNHfuXIqKirJ48XXg
    c3gC7P3BPTw8EBMT08/FxSVXJBLRqlWryGQyVemzuHTpUoqIiCCO40ihUNAPP/xA9wNms5kO
    Hz5Mbdq0seQUmoKDg38aM2aMX/v27RuCPPACX744x+IZ/P777+sdZU1LS6MZM2aQs7OzhWt/
    QlC4xGgguHHjBrp164alS5eK27Zt29/Hx+cvjuNMAMjHx4feeustys3NJb1eTxUVFXf10Ov1
    dP36dZo5c2all10sFlcEBgZu6dy5c/t169axD6hyX5DgJSfBiJlVi9BRAvhGLBbTyJEjqXnz
    5iQYOJNqERQzAJT36NGDduzYQY0bNybBOdW9lmusgxA169KliyX34flansENfO6BxZP6Hu5d
    qyCxIPzXC+9SZXSBZVkSiUTEcZx130SzIISugY/uPSsY36xgvF2XyWT05Zdf1vr+bdy4keRy
    OQFIBRDNMAwrCLwJ4Nkg14TrmGHVT7SG+zEJgnAL+AIaUjvfsxaDb6FUU/+v+h65wprwawj7
    lKenJ7p06dLW2dn5cvVncXZ2pmeeeYb++OMPysvLo82bN5OXl9ddjxjK5XIaPnw4HT16tEpu
    vkajoSVLlljkAEml0qLw8PAX33jjDZGld7Cdw1tYU7l3YZ5M4JkMj6N2loTdwNI6ZNCgQZ6R
    kZELlEpljtXe8MAOlmXJzc0tsXXr1pPHjh2r7NevH1588cX7OTUBAP4n3I8atTNSnMD3wq3e
    u/DZWsaMFs6xHpMDoKeN8yUAVqBq9NqE2vMOpYKj3iCc/ynubTCLA8+EeQ182oiFyagTDL8K
    8IzFDOE9+UaQ41HV5E4QgPNisZiWLVtGZrOZcnNzafr06dSmTRsaPXo0XblyhYiIPvnkE5JK
    pSQYdM2rzVdzQRf5Cnw0NlPQT/TCUSHIyAwAR8EXker4b3TY+xUhlAle+oksy0p79epVsnTp
    Uknnzp1FdXG8ZTIZQkNDERoaioEDB2LkyJFYtmwZ7d69W2owGMYJSsBb9uwlZRgGer3eC4CH
    j48PoqOjLf3RkJmZiUWLFuGnn36CVquFTCbD8OHD0aVLl/t2bz169MC8efMwe/Zs5Obmsnl5
    eXGnT5++EBsbuzIiIkL/008/2evUBoLv6fYsy7LymJgYvPXWW+jdu3etuZRVrIagICxZsgSN
    GzfGRx99xGZnZ3cWNsWl4Hvz2H1JfE9Pvr5EcHCwYcWKFftWrlyZeeXKldcKCgqeysvLU7z3
    3ns4cOAAPD0977qn1JKzcebMGej1eigUiiIfH58vWrVq9cm2bduyunTpgu3btz+IaVELypHF
    UzcJPJ34oi3PqNlsRtOmTeHu7o7Lly8rwRdz2VKDp1MseCydQkNDERYWBk9PT2RkZCjBU1iO
    2PBwxigUCgwaNAg7duyoj2d0qGDcQFiH2bg3vefk4KOQrwMIYVkWvr6+aNGiBaKiouDn5wd3
    d3fodDrk5+cjNzcX169fZ5KSkpxyc3Ob6vX6poIn9DL4fI50ACKz2QyVSgWz2Vy5393yI6nV
    llxTEcuyncxm8xPgKW+RAORSqRR+fn6IiIhA06ZN0ahRI3h7e0Mmk0GtViMvLw/x8fGIj49n
    c3JyPE0m0wjBIH0XwLd2KBe8BQfWZNx5EQ8fwdHhKXynXbNlhJ6oTUUiURVqfmBgIF555RVM
    nDgRbm5uMBgM0Gq1lTnIdxPl5eXYunUr0tLSsHLlSvTp0wcWptLMmTORn5+Pzz//HBUVFe6F
    hYWvHjhw4Orx48f3bdu2DXFxcfY6tY0BLAIwFnenMIzFqfMxgGXg2Vg6e15bK1euxJkzZzBn
    zpwbcXFxK3fv3p2YnZ29oKioqLXZbGYAwN3dHR07doSzs/NdX1ssyyI/Px+nT5+GVst3gxGJ
    RMZGjRodaty48VtTpkw5vn37dtP+/fuxf//++zk1xbiZk+YKPsp2RDBybP321nABMJBhmG1E
    pKnBfmiGW4vyKcBHmf+0obP1wa20yNro712FtS0CYGYYJl8qlZr0ev292CPcBQN4vGDgSSw9
    jhUKBeRyOYxGI0pLSyU6nc7ZYDAEms3maOH+rgs6xi7BUPQB4MyyLNzc3MAwDBISErB582YU
    FBTg2rVrGDhwICIiIuDj4wORSISKigqlRCLx0+v1heBzJQeDZ0SGApBZ+kqLRCLI5XKIxWLo
    dDpotVoYjcZAs9kcCJ5VNEJw7n5hpQfZDfoIVi099thjxVeuXCm9k6hWSkqKOS4uTi94C/IF
    xcluIRKJEBgY+KxEIjE1b96czp07R0RExcXF9Morr5BEIqn0rnh7e9O+ffvofqO8vJzmz59f
    WfnIxcUlo2vXroMA4B7z3f8tgsFHXPQSiYRGjBhROa81QaPRUFZW1i1V56wj0evXr6fIyEjL
    b5EtbJ4NKjdp7dq1AIBRo0Z5REZGvuHi4nK/cnXM7u7uCe3atZsyfvx4ebdu3R70VHAAPkHV
    PIUPUHNFWWcA33McR4sWLaJNmzZZop3XBWFUHR4AtgGgJUuWUFFREQ0fPtzSZHyJDc/cywB0
    HTp0oGPHjlG/fv3qyp0IAU9/tNy/Cjwt+m5DAb70fL5l/5k2bRodOHCACgsLyWg0VomkmEwm
    MhgMdOPGDTp27BitWbOGRo4cSf7+/paqoSZBAdECoDFjxpBGo7G550yZMsXyfBUMwxQCMLEs
    S4GBgfT000/Tp59+SidPniSVSkUGg6EKs8JSNVKlUtGff/5JM2bMqMzXERyFc1E3DfN+QiY4
    sMru8vunA/COnT3rLXBzc0Pz5s3HKpVKg7W8W7t2bZXcvr1791JYWNg937M6depEx48fr7Ke
    rl27Rv3796/Mgfbz89sXFxcXEhYWhtWrV9vjtIYIBpse9ajAGhoaSt26dSMPD4/biUK/iAZU
    ifupp57CsmXLmN69e3cMCAjYIpFIdADI1dWVXnvtNbp+/fpdzZ/XarV07tw5Gjt2rCXKQ3K5
    XNOkSZNPhw0bFgoAL7zwwv0XgBwHqVTKsiy7BlUrctqSUXIAn9ewBpIF46Sm87+v4XwjwzBv
    cxwnrsEROA63RhRN4IvCwYas3Wh1bplIJJoK8MGiuww/QUcoEXRg6tq1K82dO5d++ukn+uOP
    P+j48eP0559/0vbt2+m7776j+fPnU9++falx48bWerwKPJX/fQCZHMfR3LlzyWQy0bFjx8jP
    z48AkJubG23ZsoWIiD744AOSSCQklUqLAwIC1oOPTFbWhPD09KTo6GiaPn06ffTRR7Rx40ba
    vXs3/e9//6Pff/+dvv32W5o9ezZ16tSpkuUgyIWvhD3CbiCxLDJ/f3/j7t279XfDgDl48KAh
    ODjYsgmut1dhuG7dOhARFxYWthAAtWjRgs6fP09ERJs2bbqFFuPq6kq7du361/TPO0FSUhL1
    7t27UniEhITsmDZtmu+oUaPsbVo9BM+HXiKR0Pjx4+natWu1GoOLFy+mQYMG0Z49e2pty7Fr
    1y5q1aqV5ffIEJTwBteUKi4uDq+99ppTu3btxjo5OaUBoJCQEHr66adp3LhxNHbs2Ds6xo0b
    RyNHjrQUfSJPT8/4mJiYxz799FPR9OnT7SIgISjfRpFIZKEWpgnRJ9TgBV3PsiwtWrSIUlJS
    KCYmxmLgza/BaxoJ4LRMJqPvvvuODAYDvfrqq1TLXuQNvhoovfTSS5SZmUmPPfaYRRDW1KpC
    LFxXa3XvOeCLqNxVx7YgoKvQrW0VYrK15xQVFdHu3btp4sSJlcLOckRERNDJkydrHHvhwgXr
    d40AkJ+fH02ZMoX27t1LKpXqtvY0jUZDGzdupJYtW1pTl8bh3tFsbxe9hDV4LwycXPBRWrtE
    SQmfYtqkSZPpYrHYBD49gebMmUOlpVX9w9u3b69Xi4k7PRiGoSeeeIKysrJuKWYXEBBgoY7q
    o6Ki3vrvf/8rHjdunL1Nqyd4upqhPs/r7e1NP/30E+Xm5tLMmTNvZ66yhfeowcjB119/HQAw
    dOjQxqGhoSuVSmWRYKjR4sWLyWAw3DVnukqlonHjxlVS2F1dXVOjoqJeGzZsmHvHjh0f2ByI
    xWI0atSI4ThufrU1chVA9xqq1ysEvar6718Bnj5ZfUAAgAM23q0fGYZRVruGEsDXqJmiPNuG
    DH8WN/sEWxx9g+/BdHmDT2nTsixLrVq1ok8++YTS09NtBhGIiAwGA+Xn59OhQ4do+fLl1KNH
    j8qWbsK8mQDQgAEDKD8/n/Ly8mjAgAEEgKKjoyklJYVKSkpo9OjRlXuSJd1HLBZTy5Yt6eWX
    X6YtW7ZUOjJsoaKigq5fv04ff/wxtW7d2uKgrQBfgdVuUuvCAZxnGIamT59uLCsrM9+Nl7Ci
    osL08ssva4WHvgKgtT1uTKNHj8aECRPcw8LC9gCgfv36UX5+Pt24cYMef/xxSzSOPDw8SCaT
    0cCBA+n69eu3NRdGo5F2795N8+fPpyNHjvxrw9BsNtMvv/xS6WWXy+Vl0dHRM9LT01kLR99O
    FP3xAIo4jqPRo0fXOV/JycnUtm1bAkCvv/56reeaTCbavn07RUREWF7qQ7Df/ja1IiAgAJGR
    kW5KpfKQJVqTm5tLxcXFpFar7+jQaDR09epV6ty5M4HPCf71zTffFFsqCdoJJgIoCQ4OpvDw
    cMvv+St4Koc1XAFsZFmWFixYQFqtlubPn2/ZUP9Xw2baG0Cuv78/HTx4kIiIPv74Y8v5h3Fr
    tdq+ALLc3d1p586dVFBQYG0Q1pQ7EQPgskgkoi5dulg8flfBF1i5m+gIvigMBQUF0c8//3xL
    BO52UFxcTFu2bKFu3bqRpb+cVCql995775b+qCaTidasWUNOTk6W3GXq0aMH/fbbbzYjivWB
    yWSirVu3UmhoqOX3Pg++Sqo9OEY/u8dGzgbc++qz/wqLFy/G559/Lm/duvW3ltyu1q1bU3x8
    /C2/4Zdfflm5Lm7XwPP19aV27dpRo0aN6jVGoVDQBx98UMVAKC8vp3nz5lV6/D09Pa/Hxsb2
    AoCTJ0/akxychJstuOo8mjVrRpcuXSIiorVr19Jt9q49IuhyDQp9+/bFpEmTXFq1avWCVCrN
    AkDjxo2j4uJi0uv1d3wYjUZKS0urrJbs7u6eGB0d/fiCBQtk48ePt5dpeLZaVM4Mnl1VvX+t
    Uogo1fT772UYxreagdcRPPW0pvP/QtV2FABfpCyxhnPNAF6xYTscrvaOZ3Ac16G+KUH1hExw
    wJaCZzHS0aNHq8gss9lMxcXFlJ6eTklJSZScnExZWVlVqoYajUZKSUmhzz//nHr06GHdZ5B8
    fHxo586dlfmCLi4utHjxYjKbzXT8+HFreUUMw1BUVBQtWbKEzp49S1qttvIaJSUllJWVRcnJ
    yZSUlEQZGRm3yEuj0UgnTpyg2NhYizNZC75IVJ1Bs/uRQxgCIFAikSA6OhpyufyueJkkEgkb
    HR0NmUxmKi8v9xeU9gv2tBmNGTMGu3btQnh4eFRubm6USCRCTEwM3N3dkZOTg/z8fCgUCsye
    PRvt2rVDYWEhunTpgiZNmtzWdbRaLX788Ud8//33yMvLQ/v27eHkdPsMD4ZhMGDAAMTGxuK7
    775DeXm5PD09ffKMGTMOXrly5ZKdTGuIoOi7t2rVCvPmzatzvkwmEwwGAwBAr9fXHjJhWcTG
    xiItLQ1z585FWVlZJ/BtTlajAVRusoZer4dlsxDeGbi6ut41qkVZWZl1nyfKzMzE5cuX7WkK
    MgFoOY5TPv300/j0009RVFTUD3zbm69wMx+vSi6fRCJB//798fXXXyMvL6+1YFBY9zIMAuDi
    4eGBxo0b8x8EBcHV1RUqlaoxeOpJulW0ry8Av7Zt26Jt27Y1KXbVjdPJACIiIyPRr18/y5zm
    oWolzzuFpWJlK6lUimnTpmH48OE2c/3qAxcXFwwfPhxhYWFYunQptmzZgoqKCuzZswdjxoyB
    dW/TnJwcbN++HVqtFhzHYdSoUVi4cCFatGhRa9/VusCyLIYMGYKUlBQsWLAA5eXlrYX9IkEQ
    jA8KQYKhfy8RDT7X5Lw9vYSLFi3C5s2b4e3t7Zubm9veksccExODsLAwFBUVYdeuXXB3d4dK
    pcIXX3xRmYd1WwtaLsecOXPw1FNPYfPmzViwYAHKysrq3MO+/vpr9OzZEx068H4DJycnTJgw
    AYcPH8axY8egVqubJCUlTZ84ceL5ZcuW2UvV0abgCy+53Y58t7xbLMve7nvWATxb5n0h2tQg
    8L///Q+BgYEaLy+vn1mWHQ3A//Tp05g3bx5EItEd59QzDIPy8nJkZGSAYRh4eHhcio2N3WMw
    GPTfffedPclBHW62amPAp1ntYxhmI1WdBFsCoA0RtQPfLsICf9zsqVsdjVmW9SeiNCICwzAM
    EfWE7ZYm1a8rBZ+X17mKwSISaRQKRSnA55/fJfQBT4tWtG/fHkuXLq3sh67T6XDhwgUcPnwY
    586dQ2pqKtRqNViWhZeXF4KDg9GlSxf06tULYWFhCAkJwdSpU9G7d2+sWbMGGzZsQHFxMQoK
    CrB//37069cP/fv3x4EDBzBs2DAQEfbv34/0dF5dkEqlGDJkCObMmYPo6GiIRCIYDAYkJCTg
    0KFDOHHiBDIyMnDjxg2YTCa4ubkhJCQE7dq1Q58+fRAVFQWJRILOnTtj2bJl0Gg0OHr0qAx8
    0ZvT4GsiPFA8DUDr5eVl3LNnj+5u5r0dOXJEFxgYaAQfFp1kb5tRr1698Nxzz8kaN268hmEY
    Cg8Pp2PHjhERkV6vp507d9Inn3xCOTk5dzQParWannjiCQJAY8eOpbKysjv6vr1791ZSZiQS
    iT4iImIBETGLFy+2h2kdDaBYKpXS6tWrbUY0jEYjlZeXk06no/Pnz1f2xps5cyZptdrKv9mK
    pubk5NDAgQMtXpsD4MsdNyh4e3vD39/fVaFQHARAzz33XBVv050iJyeHunXrZokQbpoyZYq4
    R48e9jQFbQCkenp60q+//lpJywBfSTbS6jw3AJssEUKTyUT5+fk0ePBgy/kf4WYuqVjwthn7
    9+9PhYWFRER05swZi5evBHxCtwVNABwXiUT01ltvVX63VYRwVrV7HgWgwBJZe++99yyRil9v
    R/mrB3qAp0RT+/btKyMHdwuJiYmV74+bmxv9+OOPVf6+YcMGcnV1JQhVVy3V1u4WkpOTqWvX
    rpbfLw0154LeT/QHT3e6lxHCEvB9x+wKQ4YMAREhIiJimkQi0Vrut3fv3nTgwAFatWoVeXl5
    kZeXF7m5udG/rQ7p6upKmzdvtqSU1DtKyLIszZ07twodyxLBFirgklwuL2zRosVwsdhuik+P
    BV/psNZnk0qlpFQqSS6XU/v27SkxMZGIiNatW0fu7u6kVCpJqVRa+qjWdRxGA6jqXh3Ozs5w
    d3d3lclkB3Hve15umjx5sthiUDxoiEQiiMXi1gzDXK/hng+gan6ZM4RK2DaOlbhZdZYFT/Os
    qGUvGmnldPAG8LuNc83gKanW6Ioaoo8sy+5XKBR+ttqJ/Qu4g69mTUqlktauXVupE+bk5NCC
    BQsoLCysSrQPNVQubtWqFS1fvpzS09OrUE9pvQkAACAASURBVImtKxe3adOGLl26RDqdjg4e
    PEgajYaSk5MtFcdJLBbTtGnTqvTtTUtLo2XLllFUVFStrAmJRELNmjWjJUuWUH5+fuX4n3/+
    2TotbbvwO9h2qN6vhclxnMHJyemuVqpSKBSsVCplrCbGrozBw4cP4/Dhw30KCgqe4DgOcXFx
    lRECsViMwYMH48UXX4Sv753ZGkajERqNptIIuNNwekxMDPr162eJMokLCgqG9ejRo+nmzZux
    bt26BzmtUvA0BZewsDAMGDCgxohGWVkZ1q5di6lTp2Ly5MlYsGABsrL4AM++ffswZcoUTJky
    BTNmzMD+/ftr9BL6+vpi+PDhEBSA8GoGhAMNAyUAbmi1WpSUlGDKlCmWKFUH8FU1pVYe08qF
    RETw9PRE3759IZVKAT73K9hqDYYD4MLCwir7O/r4+FiqvUrAN+u1fF8nAM19fX3Rp0+fmtar
    9QeBgifPKyYmBiNHjkR2drYlqp0HntJyN8CCLwvux3EcYmNj73rP02bNmmH+/PkIDw+HWq3G
    5s2bUVRUBAAoKirC5s2bUVxcjLCwMMybNw8RERF39fpNmjTB4MGDLe9vgPC8DzIHyg33Ps9d
    Ar6lhV0hNTUVHTp0aFpYWPiMXq+vpCccOXIEzz33HJYtW4bCwkIUFhZCrVb/66gNy7KW9xU6
    nQ4VFfUrEG02m/Hbb78hPj6+yncNHToU7dq1AwBotVrPvLy8Uf369XPp06fPg55Sixystalr
    UFAQ3n77bfzyyy/YtGkTVq9eXRml79u3LzZu3IhffvkFGzduxIsvvlgfVlE47j5t/Z7jThgH
    //Z6d5nS+O83epYFy7IlQsGu6ugGPmAjspKDtd14bwjpEAzDSASdSFLLGg0jIsv3RQlr1qaJ
    YPX/LuDZK2E1vKvZZWVlmroi/7eBzuAjhOjQoQMGDhwIhmFQXFyMd955B++//z6Sk5MrGWY1
    oby8HBcvXsSSJUswefJkbN++HRUVFXBzc8PMmTMxadIkiMViJCQkYPfu3RCLxejZsycUCgX2
    7NmDc+fOAQBGjBiBBQsWIDAwEBUVFdi2bRsmT56MZcuWIT4+vlbWhF6vx5UrV/DOO+9gxYoV
    lfZAnz59rPu7d0cddQjuh0FYCKC0rKyMuXHjxl394hs3bphKSkrM4MPh+fa0CSUnJ6NNmzYh
    arV6jk6nC2jfvj0mTpz4r6icdSEnJwfp6ekQi8Vo2bJlpVC8E4/ayJEjK9sZlJaWRmVkZAy4
    cOECtm7d+iCn1RVAWwBo06YNgoODazwpLy8PX375JdavX48NGzZg+/btKC7me5gmJiZiw4YN
    2LhxI7766its3rzZJo20Y8eO8Pf3B/icswYnCB1ACYBcnU6HlJQUdO3aFU8++SSEXjfjAHSx
    ZRCyLItevXpZFKgw8BE1i0cxkGVZhIaGVr7PSqXSQl2WgC/FLREMgIEAXDt27IgWLVrUtgdz
    gnDu6enpieeffx5eXl7IyMiA4EHNw92jLMsFQ5VzcnJCVFQU7kXkIyYmBs8//zxkMhkOHjyI
    48ePAwBOnTqFI0eOQCqVYsqUKbgX3nSO49C8eXMInmROEPzyB7we6VF7AVu1aoUmTZo4ZWVl
    TS0uLu5c3ZGZmZkJlUp1V67l7Oxc2XA+NTW13gahRV7/+uuvVWRBSEgIRo0aBalUCiJCeXl5
    n6SkpOiDBw9i4MCBD3Ja3VC1sXeNaNGiBSZMmIDY2FgMHjy4UgkF+FYfgwYNQmxsLIYNG4Zx
    48ZVyvta4I2qPdIcsHPo9XpUVFRozGZztg0H0njwuX31sQmaQWBaEJECtVevFDMME8myrEQw
    OPvj1tx9W7bIQPBpHTUZuAVKpfJuWYOcYCR5isViDBo0qDIF5NChQ9iwYcNt7SE6nQ779u3D
    jBkzsGnTpkpK50svvYSePXvCYDDg119/xfXr18GyLHJzc7FlyxbodDq0adMGc+fORWBgIIxG
    I3766SfMnDkT+/fvh05X/ziaVqvF999/j8OHD/MvrLc3hgwZYnFcu4F3bosfpEGYD95LL42P
    j5eazea7JhTj4+M5tVotAl+eNc9eXsJ+/fohJiZGlp+fP6WkpKS7q6srpk+fbkshvCOYzWbs
    27cPqamp8PPzQ8uWLe/K93bq1Kkymmk0GuVqtXp4+/bt/VJTUx/k1CoANOI4DuHh4TZz4Xx8
    fDB+/HiMGjUKcXFx6NOnD5RKvtZCeHg4Ro0ahZEjR+LZZ59FXFwcJJKanVx+fn4Wg0AMPsog
    ggMNziA0m81IS0uDSCTC+PHjERUVBfBUzqm4ScO8ZS8MDw9HTEyMZd0NEDyXfgD8nZycKoUH
    wOcdhYVVOjRDhDGhAHrIZDL07t27JoWLwc2oVRsAExiGkcXGxiI2Nvb/2fvu8KjK9O37nGmZ
    lkwyKZNGGkkIIRCpoQmEDgIrIoo069pZ3VWUqsvSVVyVBVxd0BUbKKgIqEgHRSC0kEAq6ZlM
    ZjKZ3ud8f5yyk0gJkGSG3+dzXeeagSQzZ945532e+yn3DaPRiLq6OjAJr/bUmBOAmf0IDg5G
    eHjHFJUEAgHuvfde3HXXXdDpdNi/fz8sFgsOHjwIjUaD7OxsTJ06FR3VhhcREYGQkBD2nyr4
    V6xeh/ar8F4zJgkkP/jyyy8jPz8fRUVFY41G41yPx9Oh/Za9e/dGYmIi7HY7Tp8+fVOBlNfr
    xQ8//IDKysoW/z969GgkJ9OcYg6HI8ZgMNw3efJksdvt13FyCa49u8VZYWEhPvroI+zduxd7
    9+7FsWPHuJnK6upq7N27F3v27MGuXbvw6aefog0Jez6z//3hB+9AP3gdkPc4aEKZG+nistq8
    Mub6i7lu9ouiErxer4yJnXJv8Nrsz+IBPAmaQbelsyQIT1BQkNZsNrfnfZQNgBCJREhMTARJ
    knC5XDh8+DButYBVVVWFlStX4uDBg1xi6emnn0ZERATOnj2LAwcOAABOnDiBvLw8yGQyPPXU
    U8jOzuZmCleuXMkmg2/atFotjhw5AnaPSkxMhELBTZtk4zqdKp0BCCsAnPN4PPj++++p8vJy
    T3u8aHV1tfPbb7/1Mhm98wDKAuHOGz58OH7++Wfk5+ePMhgMc71er/Cee+7pMFHb0tJSfPHF
    F3A6nRg4cCAyMtongRcVFYWxY8dCIBCAoijY7fY+ZrO537lz5/DCCy/4ExAG8Xg8hISEXLMV
    RCqV4tlnn8XmzZuxdetWvPHGG1zwPnbsWGzZsgWbN2/Gxo0buRaBq5lYLOZaApkNSviHb7mj
    jAuQa2trodfrkZWVhdmzZ7Pf63jQVP28q+2FwcHBvsmEgaCz4zEAIiMiIlqQpAgEAiQmJrIk
    O9HM7w0DkBAfH4/rzFYS+B/BS0ZCQgIeffRRjmCDAYS2dgaEJAtEZTKZr7Nod0tISMC4cePA
    4/Fw7NgxnD9/HocOHQKPx8O4ceNumkDrZiwkJAQ+syZ8PweyjaATlx1pTQgQEeKXXnoJmzZt
    wpAhQ7rqdLq/2O32Dp3BDg0NxfTp0xEWFoaioqJbYgMtLi7GkSMttbS7du2KYcOGcaDRarWO
    qqioyNy/fz8uXPAbh520LcmNqqoqLFmyBA899BAefPBB/O1vf+NGJw4cOIDZs2fjoYcewuzZ
    s7Fx48a2EvmE/uEH7zhz8vn8xuv4nz8BGNUGQAjQLYdpBEFE3wgQMj9Xge5GuVE1hGSuqxm4
    xrw3RVFWp9NZ1c5+MIT19RER9HidzWZj/e4t26VLl7Bs2TJcvnwZAD1CNmTIEDgcDhw8eBCN
    jY04ePAgDAYDBg8ejHvuuQckSaKgoADLli1DcXHxbb1/XV0ddz9HRkb6+vhgXEdTtDMAoQnA
    dgDNZ8+eFb///vsk2996q2a1Wl3/+te/LMeOHeODptP9HDT9sl/twoULOHToEEaPHp2i0+le
    sFqtsd26dcNzzz2HsLCwdn8/vV6P9evX48yZM4iIiMC0adMQGhrabq8/atQoLuj1eDxKl8s1
    9tlnnxWzPc9+MBd9Kh7o9frrzpoIBALI5XLIZDLI5XJudksoFEImkyE4OBhSqfS6rIoWiwU+
    2SgbaBKQP+zOsjoAdhYQkiSJ6dOnY/DgwWxw8yToit5VswKDBg1CSkoKC/ImgJ6bCIqMjERs
    bEt+hdjYWHbjVYGWwRkDQJiTk3O9GT2Sccb38fl83oMPPsi1UNbX17OtztZ2BoROMC32drsd
    Vqu1wxZfIBBg/PjxSEpKQklJCT788EMUFxcjKSnJd8avQ8xsNvsGuVomQeAvq0THs3+eAy0i
    7XerrKzE9OnTxZWVlX82mUyDb5fN8XrG5/Nx//33Y8KECXC73di1axdKSkpuJa7Anj17uPEC
    4H+sf6z/drlcCW63e+R//vMf3ooVK/wW4KON7eM2mw3Nzc0wGo0wGo3weDzs54DBYOCOG7Fv
    +77kH37wzjOCIOqus/9FAngKdCXvRgOXsQDGUBSVwoKp65iKIIh0AONwg3lXxnqDZs69FmCx
    ut3u6nZeGg9Ai9yzyX+32432mFH85Zdf8OGHH8JutyM8PByTJk2CVCrFqVOncPToURw5cgQS
    iQT3338/4uLiYLPZ8MEHH7SLtI3FYuEqhBKJxHeMjLred9xZpDKHAOx2uVzeDz/8kHz77bc5
    goGbNYPBgPfee4/YtGmTzOVyEaAFn/cHwk23dOlSLFy4UFxdXf2owWC4WyaT4emnn0ZHiJMa
    DAZs2rQJH3/8MdxuN0aMGIHRo0e363skJydzVNzMTTLwypUrXXwdZiebDYDD4/GgtrYWbW3b
    4fP53A1xM5ILzc3NbNsABbrly4k/7E6zWgA2rVaLxkY6SRoXF4fHH3+cbeHsB5pg5qpOKDEx
    kR3K5jGAMBcAERMTA6FQiLNnz2LPnj0oKytDdHQ0IiMjwTi/PwHoL5PJkJubC7n8qv7Qi/+1
    yET16tULc+bM4a5VnzmoZrRvdckOWteQYimxO9J69OiBESNGwGg0Yvv27TAYDBg+fDjbutth
    ptFofKnJi/wMCI2g2ewMHfj6XyAAEqPz58/Htm3biMLCwonNzc2z3W53h7aKRkZG4pFHHkFI
    SAhOnjx507M/vnb69OnfZefvuusubtzD5XIJtVrt4F27doXdbhb/Nv3gTV/LXq+XA4Rut/tW
    yHv+8IN3qLlcrmrQicVr2VDQDO43qv7yQXfVDGsDfpBSFDUONKHXja6rUNCtq+nXAbVWHo/X
    0I6EPU4w8lBms5nzFWKxGFFRUbePND0efPnllzh+/DgAukrYs2dP1NTUYMOGDaioqEB6ejpH
    +nLkyBF89dVX8Hq9t/3eUVFRHL9Bc3OzL8Ctx3XkqzoLEOoArAZwqLm5GW+99Rbmz5+Pc+fO
    tfnDe71eXLx4EYsWLcLq1av5BoNBwADN1czr+9WOHj2Kb775BgUFBaO0Wu3DLpdLMGHCBMyY
    McNXq+22jaIoXLp0Ca+++irWrFnDsQnJ5XLf9sZ2seDgYOTk5HBZfJPJ1PXSpUvdz549i6ef
    ftofy2xlLmhcvny5zYFsVFQUpk+fjj/96U8ce2pbrLi4GPX19ezG0YD/D0kh/g9YHQCbzWZr
    MR80duxYjB8/HqDlJB4A0J3V6aqsrMSWLVvwz3/+ExcuXMDdd9/NgseeAAbzeDyoVCps2bIF
    9913H2bNmoWHHnoIRUVFbNsJH3Q7akTXrl3Ru3dvnD59Grt27UJRUREXlDH770QAd0skEjzy
    yCPo1q0bd59fuXKFDWzVN3DmNx0fgKb09thsNvYa7zATi8UYMmQIJBIJzGYzxGIxhg4d2u77
    VWtTq9Vs9dPNAEJ/B7JHAPzQAfsIBVof7EAg3HBnzpzBs88+m6pWq583m80dLtdjNptx4MAB
    7Nu3D2vXrkVRUdFtJRFOnTrV4v8iIiLQv39/7r602+19ysrK0hobG9GRlc8b+MHam/2jxsZG
    HD9+nGup9dmHbiaAVv/hB+9cP3idn0tAC9i3hYSiN+julxtVE3mgyWGS2vCaI5jfvSYmEQgE
    zSEhIZZrJFdvxRygE6Nes9kMrVbL+atevXpdk1viZqympgZffvklXC4XEhMTMWrUKLjdbhw6
    dAgmkwk5OTlISkqCw+HAl19+edutqgDd1dCrVy+u+KHRaFjiLgr+T4y2sP4A9gCwkiRJ9enT
    hzp06FCbdKVOnDhB5eTkUDwej2Iu7D3M6/nddu/ejSlTpuDll1+Oz8jI2EcQBJWenk4dO3as
    3XS13G43VVVVRW3evJkaOHAgRZIkRZIkpx80ZswYSq1WU+1tx44do2JiYjidnYSEhHdmz54t
    8BP1Nh/A6wA8MpmM+uKLL9r8OaxWK6XT6a6pW9jazGYzNXv2bFbO5Ar8r2N20/aHDiEAWsD5
    EqsD6GuHDx+mEhMTOS0fHo9HzZkzh5o2bRoVFBREEQRBde/enVqwYAGVmprK/R6fz6eys7M5
    nTM+n08RBEH169ePysrK4n6PIAhq8uTJ1KJFi6iuXbtSCoWC6tOnD7Vx40bq7rvvbqEjdM89
    91B1dXXcuTmdTmrWrFnszz9C+0sW5LJJjilTplANDQ1UR9rx48cplUpFAaBiYmKoEydOdOj7
    GQwGas6cOez6NQAYGSDXY08GuLWnBtoB5nX9ahRFYeXKlfjuu+8kI0aMeEsikbjRsbqLLbTA
    IiMj26qnd91j5syZlNVqbXE9bd++ndPN5PP5zpSUlJd37txJzpgxwx9LzQOwlEl03NRni4iI
    oFJTUympVHora1MOepb6jrLg4OBO1SEMND9IkiR4PF4iQRAFbfgc3s66Z2/2ffl8/nfBwcGh
    LEFgO9kMADY+n08tWbKEcrlcFEVRVHl5OTV69Oh2+WwDBw7k9Al37NjB7SNSqZTasmULp5vb
    p0+fdnm/UaNGUVeuXOH2rn/9619UUFAQxSR0ngi0+zMedFWvGQA1b968a4qD+9qiRYsogiAo
    gUBgCwkJWQ9GDyUQbObMmWhsbCR69er1gkQisUskEuqtt97iLq7bMafTSRUWFlLr1q2jhg0b
    xolcymQyR9++fYsTExMbAFB9+/aliouL2z2wUqvVrIg2BYAKDQ396d577w3Lzs7m2JI62YaA
    JhCi7r333hYinO1pP/74IxUXF8d+7s9BtzT8AQjvPEAYCeAgAGratGktgI/dbqcWL17Mic4S
    BEEpFApKIBBQIpGIioqKovh8PiUWi9kN9XcBwIgRI6j58+e3SJr4/k5YWBgVFBREkSTJiVzH
    xMS0EM2Ojo6mdu3a1WJtKysrqWHDhrG/swrtr6EXzlarQkNDqc8++6xDAVpxcTEHlvv27UuV
    l5d36Pvt3bvX9/7di8DS5xvAnJPtNp2/jXmdAYHwoTZv3gwA+NOf/jRGpVLVdUYgSZIkFRkZ
    6VQqla72es2srCyqoKCgxfVUUlLCXb8kSVIqlWrbqFGjJCwzoB9sEOh50c4M2j/F/1iZ/wCE
    dwggZDpfIgDs8xPYa6/jX2h/puje7H3Ur18/qrCwkLvnf/rpJyo9Pf22zzs2NpY6evQoRVEU
    9euvv141Mfrjjz/6Csjf8pGamkr98MMP3Geoq6ujJkyYwP68+kaFDbKTr0056B5hFZPlgsPh
    uOGGSlGU7++RLpcrCjTjX4i/b7Ynn3wSGo0GM2fOjKmqqrrfarWKcnJycN9994HP58NsNuPk
    yZM3TSFLURRKS0uxbt06zJkzBwsWLMDhw4dhtVpdoaGhF7Ozs1dMmjRpHkmSZQCtu3U9gpRb
    NYVCgaysLN9sU6rL5UoSiUTYvn27P5b8DOi5Uc++ffuwefPmtrKjtdmKi4uxbt061NTUgLmJ
    tiIAZnP+sFsyG5g243379mHevHnYuXMnSktLYbfbkZuby+lZUhTFzRHMmDEDH330EZ5++mmE
    hobC7XZzbLQ8Hg+xsbH485//jPfeew+vv/46VqxYgV69ev3uHmxqakJISAiefvpprFu3Dj16
    9EBdXR00mv/Jpk6YMAGDBw+Gy+VCU1MTDh8+jOXLl7OCtS7m/Ns76tSCJvsy6/V6fPDBBy2E
    udt945fL2flKREZGoh3bfn5nBQUFeOutt9j71wjgS+bzBor9Bnpu9F3c+kyhiQmQnmJez6+2
    fv167Nq1C3PnzpWcOXNmTmNjY3RHv6dIJHKnpKScveeeezZERUUVtdfrVldXo7S0JTdPVFQU
    evaki7Berxd2uz1ZLper+Hw+/EQucw7Ad+g8gpcqxg82/+FS7iyjKAoURbU3MVmnG4/Ha5BI
    JI52jnMvg27lx4ULF/Dtt99y3BS5ubl4/fXXb5sJu7m5mYv/Q0JCOCkkhULBsX9euXIFtyun
    0bVrVyxfvhwjR/6vGebAgQP45Zdf2H8eB5B/vdfoLBpuEkAfxnmNYwAhGRsbi7Fjx94QyBAE
    gZEjR+Krr75CRUWF0OVy3Qea/nYfgI0ATsFPzFd5eXlQq9UQiUR9rFZrpkgkwqRJk5CQkACz
    2Yx3330XH374IcaNG4e1a9eiLeVuq9WK77//HuvXr8epU6dgt9shFovtSqXyrFQq3aFUKn98
    8cUXL73zzjuxNpstlHGO7dLzfBWni5SUFPB4PHg8HthstqhLly5FNzY24siRI9i4cWNnL7kV
    wH8A9DObzQPXrVsHiqLw+OOP37aemtvtxpkzZ7By5Urs37+fDbreBfDzH27ljjXOERoMBmzb
    tg379+9HQkIClEolfGcHWODy4IMPYtGiRUhISMDgwYNx//3349KlSygvL4fT6UR8fDz69OmD
    Xr16cZv7rFmz0Lt3b+zfvx9nzpyBVquFUqlEamoqBgwYgEGDBkEmkyEqKgpLlizhwBdBEMjL
    y8Pf/vY3eL1e1NXVoaSkBNXV1eyMDzc32wG2i9mPpx05cgQLFy7EmjVr2k26xteEQiE3MygS
    idp1rtrX2PlqVgMKwG4mgRRIJgOtURkJJjF6iz41EkBX0IRDJn9+oO3bt8PpdKKuri6rqalp
    aOv5NIFAgOjoaJjN5lsmlPPxSQ6pVHohIiLi20GDBu2IjIx02e324e2WQbLZUFxcDK/Xy8Um
    MpkM6ekt+C6S6+rqEqxWa3lrqYpO3Nc2gybFGtLWP2LnpBmQ0NY/MwJ4BwEyo/qH3dpl3YF+
    pDPAoFMul2tdLhfCw8NbJFTb4T76DMAYh8MRu2XLFmRnZ2Ps2LHg8Xi477774HK5sHjxYlRV
    3ZrihcvlQkNDAxdfREREoKioCHK5HEFBQaAoCo2Njbcy08tZeno6VqxYgSlTpnC+NS8vDxs2
    bGCT3GoAn9zIT3QGIAwB3af7HIAMHo9HZmRkuCdNmkTl5ubyWIadG1lubi62bNmCAwcOYPfu
    3UR+fn60y+WaBXqO8F/+yl4lJSXhxIkTZEJCQk+HwyFPSkrCgAF0B89nn32GN998EwaDARRF
    XVPvzte0Wi3Wr1+PjRs3QqPRQCAQ2GJiYk7GxsZ+GhkZ+WNsbGyNx+PxPvTQQ4iIiEjQarVK
    gKa87whpC4BmGw0LC0NjYyNsNlsQRVFZBoNh97x58/w1XJ4PYAmA5RqNpt+KFSt4eXl5eOyx
    x9C3b18IBAKYzWaYzWY4HA643W44nU54PB4IhULw+XwIBAJIJBLIZDKIxWJUV1dj27Zt+OKL
    L1BSUgKv12sA8CFzOPCHtTkbGWDmYQChhyRJnlwuR3NzcwsQSBAEwsLCkJmZiTlz5mDq1Knc
    vSSXyzF06FAMHToULpcLFEWBz+f/LonF5/PRs2dP9OjRg7vmeDweRCIRfFnRJk2ahKioKLz7
    7rvYv38/tFotzp07B18pFzZoY8zSgY5cA+ANAPEej2fA7t274fV6sWrVqhZdAW35zpmqCWw2
    G/f5PR4P3G43vF4v9Ho9J29hMplw+fJlKBQK8Hg88Hg88Pl88Pl8TvtTIBDcdMdDfn4+FixY
    gL1797JkZceYzxco1UEeaGHgp0Az1kbj1luBpaDZcUcB+JFJjOb5KzGqUCjw7bffIjo6+i6b
    zdaiOigWizF79mw88sgjuHDhApYuXcoFSDcDZIKCgoxKpfJkSEjItujo6J8zMjKqd+/e7SZJ
    srtWq223ln6Hw4GioiI4HA6OqY8gCCQnJ0Mmk7G+Ra7VapPKysoOvvDCC/jpp5/8sewXASwG
    sBz0bF+L5EJoaChGjx6N+Ph4BAcHc9UJgUAAq9XKSU4YjUZcvHgRhw8fvlpQ2gzgAyYJ+4cf
    vHPNy/hBF4DbYv31jWMJggBJktzh8Xjg9Xp/RxZ5u3GB1+s1ezyeWvb129mOA/gYwF+Li4uD
    Fi9eDB6PhxEjRkAgEOCBBx6Ax+PB4sWLOR3PtqwPSZKcT7NarfB6vQgKCuK6Y8RiMQQCAbxe
    L1wuFyQSCWw2G3w/Y1vWLTk5GStXrsSUKVPA4/Hg9Xrx22+/YdGiRfj111/B3LefgB6dgT8B
    YRSAl0HTyYbEx8d7Zs2a5Zw9ezYvLS2NdzP0sUKhEMOHD8fQoUMxc+ZMfP755/jvf/9LXrly
    pRuAFUymdE1nZ0H4fD7eeOMNkVwu7wqAjImJQdeuXdHY2IidO3dCr9dj4sSJePnll31Fkq9q
    VVVVWLVqFT7++GPY7XYqJCSkRKlUfpiamvrZSy+9VHvw4EGsXLkS77zzDux2O5GamjqKoqgw
    Pp+PzMzMG77+7QBCpVLJsnoSALLnzp0rrKur85eDYIkUHgfwnNlsvv+rr75SHj58GH379oVE
    IoFGo0FjYyNMJhPsdjtHs02SJIRCIcRiMUJDQznRzqKiIhQWFsLlcnkZR/sv0K1mhjvZCzDg
    guoMwCaVSqng4OBAXIYaABaBQBA8bdo09OjRA5WVlTAajZBKpYiKikJWVhb69euHqKioawKR
    tmjmkSTJBZHXyHRi4MCB6NatG3777TccOnQIly9fhlarhdfrRWRkJLp06YKDBw+yVURjB+9p
    p5jkyhter7fX3r17YbFY8Nprr2HoMdawqQAAIABJREFU0KEtwKzL5eL0zBobG1FRUYGamhro
    dDo0Nzdzh9lsht1uh9Pp5A673c6B8GPHjuH+++9HUFAQ19kgEokQFBSEkJAQhIaGIiwsDOHh
    4YiIiEBsbCzi4uKgUCg4bVHfCqPH48GRI0ewbNkyHDlyhHWmecznOhcg16AcNJvtPNBMfu3R
    90QwoHIukxh9D/S8c6fvWRKJBJs2bRK++eabmV6vV+B7z8yZMwfLli1DZGQknE7nTbPL8vl8
    Z0hISF5cXNy/u3Xrtnvu3Lna0tJS6vnnn8d7772HjIyM/larVdmen6eqqopjxGUtJSWF6yrw
    eDx8Pp/fb/Xq1Z8cOHDA5cfr6ghooohnmesrgv1BRkYGVq1ahYSEBC5wv1oiBwC+//57nDp1
    CiaTyRdAXACwHsBXd7of/MMABhBacZ1RK4IgIBKJIJPJIJPJIJVKERISgrCwMCiVSoSFhSE4
    OBhBQUEQCoUQCATcI0mScLvdcLlccLlcLfZ+vV4PnU4HrVaLpqYmmM1mWCwWmEymFpp510k6
    mkwmUxWbsGlnszHxXhyAh/Ly8vjPP/88FixYgOnTp0MsFuOhhx6CzWbD66+/Do1Gw8WPISEh
    iIqKQkxMDEJCQiCVSiGVSiGTySCRSCAWiyGVStG9e3cONLM+lU38spXI7t27w2q1cgerg22x
    WGAwGFBbWwuNRgOj0YimpibY7XZER0dj6dKlHBh0Op347rvvsHz5cpw/f55NiH8NutPthkzl
    HQkIuzAOeSaPxxMPHjzYsWDBAt6IESMEIpHolgkSeDwe0tPTsXDhQgwePBhvvvkmDh48GOxy
    uZ4EEAzg76BFgDvFlEolYmNjIRaLCYBuh5JIJLhy5QouX74MmUyGRx99FMnJydd9ncrKSixa
    tAjbtm2D1+t1KBSK3enp6W+lp6f/ptPpPKzGIEVRGDJkCE6cOJFsNpvHud1uXkxMDCdm3RHG
    AqfLly+Doig0NTUpTpw4QXakoHUbQWEBgFcB/ALg+cbGxj579+4lWwfoQqEQQqEQPB4PLpcL
    FosFGo2mhQwBY2YA34BujzmLO1iAt6ysDCkpKRg4cGD0hQsXQgGgqKgI77//PoRC4W0DQ5Ik
    YTQaOckCq9UaVlRUFJqXl9fY1mp4J9oZAJccDseAsrIyLFiwAAkJCXA6neDxeBAKhW06X7bq
    5fV6uWCKbb1iAy7fRz6fj2slvUJDQzFu3DiMHDkSVquVE4YWCoU4ePAgdu7cyV7jBzsYEFKg
    dVz/CmCZ1+sddOjQIUKj0eDVV1/FqFGjoNfrcf78eZw9exbFxcW4cuUKGhoaOODXllYXtgIo
    lUrh8XigVqtvGASQJAmBQMBlVWNjY5GQkIDk5GRkZWUhKysLYWFh2L9/P9asWYPCwkL28xxj
    fM9RBAZFfgSAF0FXBjuCnIoA0B00+VBXAG+CbhHqNBOLxbDb7XyJRBLGtiQCdCvTs88+i8jI
    SJw/fx7Lly9HRUVFm5NZIpGoVqlUfpSYmPjRxo0byw4cOEBNmDCB2+OWLl0avHXr1vEURbVr
    NrSurg719fWsjAwAICYmBuHh4ZzfMBgMsd9//z3PYDD4ExBSoOegFjJ+8C8A+hEEQfbv3x/x
    8fHX3IPYYBQAevXqhYyMDJw8eZL1gzsYP3ge/weE6H33d5lMBqVS2W4+yuPxQKPRwOVyAQx7
    5PWSgv4w5nsuoCiq0uv19vRN2ISFhSE+Ph7p6eno0qUL4uLiEB8fj/j4eCiVSgQFBUEgEHDH
    1TpkrmdsBczpdHKPFosFarUaVVVVqKqqQk1NDSoqKlBaWor6+noYjcYWMQpJkvlgNAM7oELI
    guVloGWo7i0qKhK88sorqK2txZNPPgmlUomHH34YJEni4sWLyMzMRPfu3REXF4eQkBCIRCII
    BAKu4+Va1xZbNWS/E/b3evbsyc0o+yZsfDtt7HY7DAYDqqurUVhYiMLCQtx111144IEHwOPx
    YDKZsGXLFrz55pvszKIb9FjI35mk+I39dAddf+EAFgGYKxQKBdOnT3ctWbKETEtLa7f3EwqF
    GD16NJKTk7Fq1Spq69atQQ6HYxaT2VoIuh2q4z19RARmz57tWrdunRoAZbFYCKPRCKVSiSlT
    poAkSQwePLhlOsJm4wAKQOsDrVy5Etu3bwePx7MplcotISEhq06cOFEzfvx4fPzxx9zfHjx4
    EMeOHSNzcnImNTc39wCAnJwcZGdnd9hnFAqFCA39XxxjMpmkMplMTBCEbfTo0di3b58/9zoD
    6HbhIADdwsLC5Lm5uYiOjoZUKuVaZRQKBYRCISdAajAYYDabYTKZkJ+fjxMnTsDr9ZYDWIsb
    DN4GurEAZeTIkV0LCgqW2u327gBw8uRJnDlzpl3fhw3qtVrtgIKCgvm9evVaPWDAAF2ALUkZ
    6HmbzF9//VX22Wef4ZVXXuEqFRRFwWazwWKxwGq1QqfTob6+Hs3NzTCZTFyWzrcF2ffwer0t
    2h592x/ZTKtcLodcLodSqYRKpYJCoeCyh+wcIkBrBn3yyScsIUoRc94dnXnxMsDzL6Dp7McW
    FhaK5s+fj+7du0OtVqO6upqrHvB4PK7dWqVSISoqCqGhoRCLxRCLxQgKCuKqf2zlj/2ZQCCA
    y+WCzWaDzWaD3W6Hw+GAw+GA3W7nDqvVCr1eD41GA5PJBKPRCLVajd9++40L6mJiYhAVFYXi
    4mK2BdEOmjl1GZPQCQSLZ/zRHNBaXx1pCgDPMKDzHwAqOutDhoWFITs728Pj8Qy+gVy3bt3Q
    pUsXOBwOfPDBB232FSRJIjg4+HJYWNjrAwYM+PbcuXN234DplVdewZo1azB8+PAcnU539+3M
    31zN9Hr972YdJRIJBxCZxKgsPz+f5/F4oFKpoFar/XmdmQB8AbqVuLtcLpdnZmYiPz8f9fX1
    MBgM3L3Fjk6wyWulUgmlUons7GycOnUKFEWVg261vog73FwuFwQCAXJyciLPnz8fDADDhw/H
    0qVLufmt202MNjY24i9/+Qvy8/Nht9tDioqK5B6PJ6BI6Jj9uNhisWx1Op3/oChK1LVrV8ye
    PRs5OTlITU1FeHg4ZDJZuydzSZLkfIGvpaSkcLGx0+mE0WhEQ0MDLl68iF9++QXbt29HfX09
    eDyeVigU/sdms+kkEgk6sBBRBmA+6JnsWQ0NDbLVq1ejqqoKf/vb35CamorHHnsMXq/3qnwd
    Xq8XTqcTVquVA75sAtnj8cDlckGn03Ha4RaLBZWVlXC73RxQbH2wIJz1eeHh4UhJScHw4cPh
    dDq5v6urq8N7772H999/n9UctILucFsOWi6mTdYRgFAC4GkAswQCAX/mzJnOZcuW8ePi4jqE
    0TQlJQXLli0j+Hy+96OPPhI4HI6HGLS/BvT8TcdGUl4vCIJw9+jR45JIJHLX1tYKLl++jBEj
    RmD58uUgSbJFi0xZWRk2bdqEiRMnYvjw4XC5XNi6dSs+/fRTAHDExsZuSktLW15SUtL0xRdf
    4MEHH+T+9v3330dubi7uvffeAVVVVY/Z7XaxUqnE9OnTWwC29jaBQADfVkCBQBCWkJCgIkmy
    qSPZAm/CRKDbsGSjRo3CO++8g4iICNyoJZkFNIcPH8acOXNQX18fDVq37o4FhPPmzQNBEBg9
    enTX/Pz85Y2NjVNJkhTEx8e3iwO8WubVYrGgrq5OqtFongZAdO/efVVqaqqupKQkYDAy6Mrv
    RIfDMXnr1q0YOnQoEhMTcenSJRQVFaG4uBhVVVVQq9XcXA0LWJjM722tEQuMJBIJgoODERYW
    hpiYGCQmJqJbt27IyMhAcnIydu3ahZ9//hmgNYP+i85reaRAt1nOY0DFI2q1OkKtVoMkSYSH
    hyMrKwupqalIS0tDYmIiYmJioFQqERwczIE93yzyzYwEsFlQtt2IBY0mkwlNTU2or69HZWUl
    SkpKUFpayj0WFxezL1EPes7p36CZgQPBwkB3MDwKQNhJ7ykGLTDNJkYbO+NNHQ4Hhg8f7khI
    SCgkSdLt8Xj4AN16efLkSRiNRuzZs6cFuOrXrx9qampQVlb2uwAyIiLiTGxs7KtTp079+ddf
    f6UuXbrUYt+eNm0a5s+fH/Xtt98+ZjabVe39edi2rdZ+0Dd54/V6g6Ojo8NIkrRER0f7GxCC
    SYpmAZDZbDa88cYb8Hg8MJlMsNlsV01gsWRPcrnc9/PGgK4039GAkKIoxMTEYPz48Qnnz59f
    4HQ6u7PjNdnZ2W0aAWiLNTU1ISUlBfn5+dBqtTmXL1+el5WV9fbgwYONx48fD4i1CAkJgV6v
    94hEoi89Hs94t9s9QiQSYfLkyW0uJrDdMOyMYOvnV+uUaf38ekWH8PBwhIeHIzMzE1FRUfjm
    m2/Y++5bqVS6PygoiAU7HWmVAF5j/MnTJpNJtXnzZlRVVWHp0qXo378/F/NYLBY0NDSguroa
    1dXVUKvV3PhEU1MTmpubuQQMe7hcLq6r6sKFC3j44Ye5JKpvmy77nE0mh4eHIz4+HnFxcQgP
    D+cSriRJoqioCCtWrMDXX3/N3sMa0NwX63GT3UXtDQgJAPcAeIYgCMn48ePtr732Gq+jwCC3
    e8XEYPHixURTU5Prq6++ElMU9SSTXf8MHdwy9Ntvv2H8+PFwu92F1dXVdWq1OuGHH37AwIED
    f8coarfb8Z///AcbNmzgUH5eXh7+/e9/w2azUSqVamd8fPzaK1euNJWWlrYAgwCt8zR69Ogu
    Z86cma/RaDJ5PB4efPBBjB8/vkPvED6f3wIQ8vn8UIIgogAU2u32QNjvugIYKZPJiAkTJkCl
    alt8QBAEBAIB+vTpg4EDB2LHjh0RoFkXfwLdV35H2QcffIAnnngCY8aMSb5w4cKyxsbG+3g8
    Hn/GjBl4+umnIZPJOgQQarVarF27Fnv37mVBIZWdnb2yublZ/9VXX2HYsGGBsDwaBjAMKC0t
    jXruuecgFApRV1cHnU7Xon2Rx+NxpEMsExibUfc92P/j8/lwu91wOBxwOp1cxcv3ucPhgM1m
    g06ng1qtbtH2EhQUxM0hqNVqNoN4AsA20G0fnWmVTFbxAuj5714qlQpr167FkCFDoFQqIZFI
    2l3ihm21aZ1Fbp18s9vtaGpqQl5eHl544QW2/fAcgJUA9nRGEvAmgvMnQVcGhZ383gIAD4Fu
    E3oDHV9hxqFDh5CRkQGv11ssFAoNNptNCQBnz57FE088AafTyQEmgiAwZcoULF++HFu2bMHq
    1atb3H8KhaI8KSlp4a+//rpvwYIF2L17d4v3euCBBzBgwADh559/PqempmZie1cHAbpi0VrO
    qLUfFIlE4eHh4dEEQVTf7FxkR/pBAITL5fJNllw1AcNWM1ipHR8LBzCe8YNW3IG2YsUK9jqL
    P3369GsajWYmQRDCqVOn4oknnmg3MAjQ1fGXX34ZWq0Wx48fD25oaHiRIAj069dvXVZWlik/
    3//55bq6OoSFhWHFihVVL7744n88Hs9dly5dUnz++efIyMiASCRiWeTR1NSEpqYm6HQ6NDU1
    tagu+3ZytH7udru5Fn8WsPg+ss/FYjEUCgVXmVYqlVAoFBzAMZlM2Lp1K6qqqiAQCMrFYvEW
    nU5nuueee7Br167OihXeZDDEyy6Xq/fevXsJjUaD+++/H1arFWVlZaisrIRWq4Ver4fBYIDL
    5eLAcVvMYrHg8uXL14yrfI+goCAoFAqEhoYiKioKiYmJ6Nq1K0JDQ7Fjxw7s378fbrebAj0e
    8xboVtGb1rFob0CYBHq4WZWVleVYsmQJLyEhQdAZ32BcXByxcOFCory83JmXlxfJnMcpAMUd
    +b5DhgxBQUEBlEplfmlp6T6j0fj4J598grS0NMycORNBQUHc7/7666/44osvEBoaip49e8Ji
    sWDLli0oLi5GVFRUXq9evdbu3btXvXv3bkycOLHF+zDSD1GFhYWLGxsbJ3o8HmLo0KF4/vnn
    0dFEHmyF0IeuWmYwGEIAtLsG4C0YCWAEgJSMjAywgrCtZ7x8M1jswWatQkNDMXHiRPz444+w
    WCzDQWtlBgoZRZuzd2yb6Pnz55c3NjZOFQgE/Dlz5mDp0qWIi4vr0PcPDw8HQRDYu3evRKPR
    PHPu3Dlvdnb26pdeekkfQDOFhwB86/V6Hy8oKCAJgoBUKkVSUhLi4+O5+Ym4uDjExsYiNDSU
    G5hnj9b/ZucG2Ozf9Q4WzNTU1KCmpgbV1dWorKxETU0NGhoafGda9aBbRcv9tE4m0OQkYQDe
    cLvdIpVKxek1+u1GZ7otJBIJqqurWRDhBPCJQCD42uPxeDtovuRWE6PPg5aY8IexnTolzHfZ
    oYnR4OBgWK1W8Pn8s1Kp9ILNZhsB0C17rWe1u3XrhmeffRbx8fG/S8bIZDJdly5dVk2bNu3n
    Rx55BB999FGLv2VazMjNmzdPqaure95isXQIk5rX6/2dLljrThmCIILtdns4QRAwGPzOucL5
    Qd/7hc/n/y6Jxc7St05aeTwe32B2OIBuTIB5R9mOHTswdepUTJ48Of706dN/b2homOl2u4VJ
    SUkYOHAgioqKrhmI32pSlKIo3H333SgoKIBerw9Rq9V/O336NNW/f/91DofDXFRU5Hcf2NTU
    hCVLlkAul//I4/F+tlgs07Zv346MjAwIhUKcPXsWBQUFaGhogMlk4sZqWHZtNs7wlSy5Hvjx
    ZctuDXCEQiHkcjlCQkIQHByM2NhY9OrVC9nZ2aivr8euXbtAkqRbIpF8rlQqT0ul0s4Cg6xZ
    Qev0XgY9RvGnvLw88vz586AoCh2RhGodz/muLcuaX1NTg/z8fG7+lyRJ9vuhQI9LLAI993tL
    jrA9AaEAdKvKQLlc7n7hhRc8ffv2FXXmN5idnc1/8cUXHc8995y7ubm5H2j2tb8zQUOH2OLF
    i1nKWFufPn0+NJlMg+vr6zMWLlyI8vJyTJ48GcHBwbh06RLeffddVFRU4LHHHkPPnj1x9OhR
    fPfddxAIBHqlUvnuBx98cG7BggUtwOD8+fOxceNGpKSkRBQUFCxpaGiY43a7Bf369cM//vGP
    1tpIHRaI+Q5JezweodFoDCII4rbFNNvBIkFTuIvT09NRV1eH/Px8XLlyBfX19TCbzRxjk8fj
    gUgkglQqhUQigUKhQEJCAhITEzm2qPLy8iQmy5qPO2SYfvHixSAIArm5uV0vXry4srGxcapQ
    KOQ9/PDDWLJkCWJiYjpcDiIzMxNr1qwBSZLYs2ePRKPRPAeASEtLW5Oamqr785//jH//+9/+
    Xiojs8lPBBA7efJkPProo0hMTERcXBzkcjm3yXa0sXMFer0eNTU1KC4uxhtvvMHOeJ5mNnd/
    EqJ4AZSCFq4XscK6gWJVVVXsjJcNQBnDDhwolgRaZinaz+cR5ZMY7dD+7ePHj2PZsmVYsmRJ
    Y8+ePT8zm8397Hb778CwUCjErFmzMGjQIFy+fBnHjh37XzDC57ujo6M/HTly5LaDBw96WlcG
    J02ahNTUVHL37t2T6uvrVxmNxviOvD/NZnMLuSg+n8/NWDFBodhgMEgJgvBl5/SrHyQIIigz
    MxN9+/ZFYmIikpKSEBER0WKmlw0iWUDItPzjypUrKCsrw4kTJ1BbW5sAWtLkjiKVYb+vSZMm
    JZ45c+bvDQ0NM9xutwCgifteeeWVDvGF7DXCjhfYbDZ5fX39S6dOnaJ69uz5z7Fjx5oCYX2G
    Dh2KnTt3art27bqttrZ2ZEVFRei8efM4RtC2rE1rcOfbJuqbiPcFNq0rZ06nE2azmWufBIBv
    vvkGEokEfD4fBoMBYrH4Ulxc3Pbm5mZHW+QeOsgHngfN0jkOgORGRGjXWyf2/3zX6nrHja7z
    VufiBPA9QRBnb+f6bk9A2A007bFgzJgxtilTpoj88Q1OnDiR991339m3bdsmA3A/aMrkDiUY
    EAgEeOaZZzB48OBT//znP1e43e41Go0mdu3atfj4448REhKCmpoaGI1GdO/eHY8//jgcDgc+
    /PBDaDQahIeH/xwTE7Pn4Ycfppj5Ic5OnTqFESNGhJ8/f36hRqN51O12iwYOHIg1a9Zw1bAO
    T3e31EWD1+slKYoSVlZW4u9//ztee+01f+5xvUGzquHnn3/G/v37odfr4XQ628RGxefzIZFI
    EBoaygaYIubm/xyMoHmgW3NzM5555hn5zp07X9JqtVO9Xi8vOjoa0dHR2LNnDzqjasJeIykp
    KVAoFNDpdBKNRvOcx+NpqKureytAKjcAPTheBSA2MTER48ePv2H7UOtsKOvg2Jk3j8fDzeSw
    9Nu+DsD30TfJQpIkIiMjERkZiYSEBKxfvx4MCCxGYNC81wNocLlcyoqKCu5ztg6cXS4XrFYr
    1zbkcrmu+shWI9iqBTtryK6b73OhUAipVAqhUNhiPX0BITMvoUUnM2q2ITH6EGhduECwfqDb
    Vv/RkYlR1saPH4/evXvvdDqdAysqKuY6HA5e63upvr4ep0+fxhdffIGioiLuZzKZrDAiImLz
    W2+9Zdy7d2+LVtHJkydj9OjR5Pvvvz9OrVavNhqNKR0NLFoHfyxzsM+1z3M4HEKDwYChQ4e2
    a9XpFqwvgH6RkZFYuXIlxo0bd9PJLY/HA7vdjrVr11IrVqwQeTyecQA+BVCLO8DWrFkDgiBw
    7733Jp4+fXqZWq1+0Ov1CiIiIjgSkI5OjLL7FCMVIK+vr3+JIAj07t37nZ49exqfe+45/PnP
    f/bbGu3cuRNhYWHweDxn3G53CUVR/X2TGewYDVu9YyUnQkJCOBkF30f2OctEyrJhsqRhVqv1
    d88NBgN0Ol0LHUwWjFosFt/7q1Cn05X6mc0eTByox1VIwYRCIWQyGVfpDA0NhUKhaLE2rZ+z
    a8WOQLAkaldbL5PJBK1Wy60T2757levYBqD6dq/v9gSEowGkKJVK16OPPkqEhYXx/PHNKRQK
    /uOPP04cPHjQ2djYmMgE9+fQwdn2DRs2ID8/36tSqbbbbDYPj8f7i8lk6l1bWyusr6/nqO3T
    0tIQFxeHL7/8Ej/99BOCgoJqIyMjt/z000+6sWPHtkQ6vXsjOjo6/MSJE6/U19c/7na7xcOG
    DcOqVauQk5Pjt7vD7XYTEolEBgC5ubn+BIRBoFuzlBRFQa1WQyAQQKFQQKFQcFlRdkiXz+fD
    ZrNxVUOXywWz2Qy9Xo+qqirfm6wPE0h9eyc4QrfbDavVGmqz2bI8Hg+PDZhXr17tF6F4VkLB
    4XCItVptN7fbjQAhHwIAHQsgrly5ArvdDoFAAIfDAb1ez7GKNjY2cpo/rINjN282m8rOULBM
    duysBNtW6suwyc4AREVFITw8HHK5nHMgAoEADQ0N7IyVgwGtzgBYKzUDCruXlZVBr9fD4XCg
    oaEBFRUVqKurg1qthlarhU6n42QoWjOGskCRJSDwbXcRCoVXnTmRSqWc9lVkZCRiYmKQlJQE
    lUoFiUQCH8IidYABwjQAD6Lz5wavB1DZxOj5jnyjpUuXshUa3YQJE1ba7XZhQ0PDvXa7nWvr
    dLlc+PDDD/Hdd99Bp9P5yq04FArFp9OnT7+Ynp7eYi5+9uzZ6NOnD/nRRx+Nra2tXWM0Grt1
    xsL5jhlcA0ARJEkGGQwGzJ07F99//70//eBEAGEDBgzAwIEDf5fkYgEumyj1bXdnjcfjQSqV
    YuLEicTWrVtRXl5+F4ABoCUoAt60Wi1efvnl4G3btr1UX1//IEVRgjFjxuCJJ56AQqHoVF9Y
    VVWF9evX4+zZs8H19fUvnT59WldeXr7hvffe8/s6GY1GmEwmjcfjqQbQn8/no0uXLkhOTkZm
    ZiZSU1MRGxuL6OhoREVFcbETu2ez896+mnpXM7YLpvUjE69Ao9Ggvr6e65ApKChAUVERampq
    4PF43B6Pp8zhcDhvpirXgYlRNYBYkiQRExODlJQUZGZmolu3boiLi+PYtuVyOZcUbr1ON1qr
    1uvEHjabDY2NjVCr1airq0NpaSkuXryIoqIiXLlyha1KN7aHH2wvQKgCPYQs7Nevn3XgwIF+
    dYYDBgwQ5uTkWHft2hUCYCyAT9BGHY7bsaNHj2LZsmXOYcOGbdu9e/fZioqKcXa7PUOpVNq6
    desWeebMmdwTJ06o5s2bh9OnT8Nut3sSExO3DR48+FBGRga2b98OgCaqmTVrFgYMGBC6b9++
    l2pra59yuVyy3NxcrFmzBn369PHr3UFRFMHn88UUReHbb/2KmdIA5AJAbGwshg4dit69e6NH
    jx7o0qVLi42M1c5hNyS2cqHT6VBSUoILFy7gt99+w8mTJ2G1WkMZoLkPd8BQPePouKiFDab9
    NbPg9Xqh1Wpht9vh9Xopdj4lQMwOmo7fe/nyZXL79u3Q6XQoKyvj2owNBgMHAFnq6FbzNTdl
    vox+rPyCQqFAbGwskpOT0bVrV+h0Ouh0Ol9AGAglVSOY6sCxY8fw4osvcnOPBoOBqwpeLUvO
    OkD2/vP9N1tVZBkQ2XvyWmvMVvHlcjlUKhXi4+Nx4cIFX0DYFEC341gAqQG2RSQz/vlCRydG
    CYLAiy++iHXr1pVNmjTpZZFI9Kter5+h1+vjwsLCqMjISGl1dbWyqqqK5/s3CoXieHJy8pcb
    NmzwPPDAA9zr/eMf/8CMGTOIuXPnjq2srFzb3Nzco7MC+xu9j8fjIXg8XhADaP35/aYDyBWJ
    RBg0aJDLbrcL8vLyOOILg8EAh8PBMae63W4EBQVBKpVy+1FkZCRSUlKQkJAApVLp6dOnj6e8
    vFwBYBKAHxE4ZE3XNCYRFWE2m/u73W7BoEGDsHr1avTq1csvPlmlUuG5555DeXl5sEajyaYo
    Ckql0u/rxMyWOrxe7xUAHqVSyVu5ciVGjBjBic631/tcq0KtVCoRHx/f4rszGo3Yvn07FixY
    AKPR6HC73UV6vd4VAJdWAwMKIZFI8NJLL+GBBx5ASEgI2ktvkl0r3w4EX4uNjYVvUs1kMuHw
    4cN45pln2EQym7wNCECYDqBRhxADAAAgAElEQVSHUCikJk6cSISGhvL9+e0FBwcLJk6c6Pnh
    hx9cLperO+h21prOeO+lS5cCgPf5558vSktLK05PTw+aO3euhyAI8Zw5c6YcPXr0hZ07dybx
    +XxHaGjoT0lJSeu3b99u89U82rhxIyZMmCDdt2/fszU1Nc+4XC7Z6NGjsXbtWr9sbte4gKUA
    yOrqan8Grrlghuibm5tRWlqK4OBgiEQiEASBiIgIBAcHc7NhPrMfXPm9uroaxcXFKCkpQWVl
    pW+AO5wJ7M7jDrORI0di0aJF8AfzHUEQYEXNGZFjBAUFBZJQvQt0S6ajrKxM/OKLL3Lzpez5
    s1UrhUKBsLAwrsLXmi2Nfc7j8VpUDK/GxGaxWKDT6WCxWKDX61FZWYnz5+lLi83WMwRNTQic
    ipeTAaeuiooKASsozjLJhYWFQaVSIS4uDjExMS3W6mqHrw6hbwWx9WGz2aDX61FbW4va2lpu
    FrixsRG1tbXIy8vjcg8MuHcEyHqpQHekCANsSxD4JEY7vP3v7bffxttvv40FCxaoBw0a9P43
    33zzrdlsDs7MzKTuu++++C+//PKJU6dOTbbb7SKSJCGXy6u6deu24cCBA5WHDx/mWIk3btyI
    p556CuPHjx9RWlq6WqfT9ejMKk8b3osQCAQyiqKIDRs2+HPeNxdAMkVR7u3btzu//vprfkND
    A2E0GmE2m3GjCgvLYhgcHAyFQoHo6GhPXV2dnbmOhzGJ17MIcGMqugSbHM3IyEBqqn9yMwRB
    oGfPnoiPj0d5eTk8Hg/FBvN+39TpDhcnaMIUh9vtlshkMkRGRl4zwcsm7FpXstifsfOorG9g
    E/Bsdcz3+dWE7UUiEScV5nA4QJKkTSQS1RIEgQBoGbWDkTJyuVwICgq6JpM9RVFcspNdH981
    83g8HIkTn89vsVa+68Qerav4rP8NCwuDUCj0vZ7qATQHAiAkGMAVEhkZiZycHH4gbA6DBw8W
    RkdHo6qqSg6gO4AD6MSsO9MaQAGw/fWvf8XIkSOd8fHxn8XGxv4qkUjiXC6XSaVSlf/0009N
    /fv354Ln5ORknD17ltRoNPc1Nzc/73Q65WPGjMHatWuRlZUVKHsvQRCEFACp0+n8BQgJJrjZ
    AyDbYrGoTp8+LTx9+jTXNiqRSDhpgJCQEIhEIhiNRlgsFu6mZFsEmRk3L5MJLQPwK7MR3HEW
    GhqKzMxMSKVSv71/a8mVQIobQM8QOjwej5jH4yErKwsqlQrR0dGIj49HQkICEhISEBUVBalU
    2qLK7CtAzz4nCKKF0/R9ZJ+zWb3a2lpUVlZy7KJsG4hPy3IDaNrrQDA342hcQUFBgmHDhiE7
    OxtdunRBQkICYmNjoVAoOK0ktkpyO+CfDcJZ0gGW7a6urg6VlZWoqqpCfn4+9u/fD5vN5mLO
    zx0g65UGWg81EI1NjHbaPNiqVasAmpCkFkDtgQMHAODygQMHCiMjI0+o1epMmUxmCQ8P35uU
    lLS/vr6eA4N9+vTB66+/jvXr12dqNJrXdDpdz85uf28LIOTxeKwf9FcLBMHsZ7ucTuddeXl5
    Kvh0i7T1c7JzSw0NDSgqKuIz++QZ0PI3d5oEEwUA5eXl2LFjR4fo797ISJKETqeDRqP5HVAM
    BBOLxaAoqsbhcNjNZrOkpoaul9hsNjQ3N3PjAA0NDairq4NWq4XFYmkx38bOu9ntds7PsT6R
    TQC2njuUSqUIDw9HdHQ0IiMjERUVhdjYWISFhUEgEKCqqgoOhwMikagpKiqqiSRJlJeX+3u5
    nKBJuRwOh0PEtLTC5XLBYDCgtrYWDQ0NXAusRqOBxWL53Vyg1WrlRkw8Hg9XEWQ7h9g1Yg+J
    RAKlUono6GioVCpERkYiNjYWERERkEqlqKqqYsmsPExi9LbHTNoDvIkA9AIQFBMT40xISAiI
    7GhsbKw4Li7OVFVVpQDQkzlPv21s+/fvZwOsEuaAVqsFAA4MRkREQKfTwWaz9dXr9fPtdntk
    dnY2li1bFkhgkHVCkuPHj5OMZpq/Nv2vAPwMukrYn7kOE1wuV2xjY2MyAAm7OVmtVni9Xpak
    wmO320nmc6iZm6mW+V5Ogm6tqkHgVB7aO5D5/+IcrucPAZAymQwLFizAtGnTEBwcjODg4FvW
    p2K1C29kviLAdrsdBoOB03H873//C9BZ+UCaP0sEIIyPj8fatWvRs2fPjs400U6FYURkW6x8
    OyOKi4tx7733orCwUAAgjjnPQLhX0wEoAvSaD/ZJjPrl5mS/26eeeqp26NCh63bt2kWqVCrq
    /Pnz1Lx583znQlFZWQmJRBJZUVHxqtVqHRKo+wlJktKioiLSZDL5CxBSoFkQWT/Yl/GDiaAF
    5lMAyPl8vlculxMmk4lwu91cstRgMLB7dR1omZs6xg+eAs20XXun+sGjR49ysZW/fKDdbg+k
    7pj/Bf506z5FkiQcDgf27dsHvV6P/Px8lJSUQKvVorm5GSaTCR0xw8fj8TjimvDwcKSlpSE9
    PR1Hjx5l9wovn8/3dgbjdxvMC1qKyQPQjMpr165FUVERioqKoNFouLXqiAowSZKQSqUICQmB
    UqlESkoKsrKycPbsWXYGmz2/2y7OtAcgFACIBU0xTwVKZUAikXjT0tIcv/zyC0DTf/sVEN7I
    Vq5ciUOHDiE8PDz4p59+esZut2eGh4fjhRde8PvM4FXvEK9XXFZWRvqyQvnJGepB0/SfBq3F
    FEyS5GiKolbzeLzkmTNnIicnB8uWLUN9fT3Gjh1LTZgwofnNN9+UlJWViQEcBS3EXYw7tCLI
    tOFRbKDn7020FSut93rD1H4COb0BSFQqFcaPH4+kpKRrOvSrtX60bgGhKOp3Q+RXO1qvA9tK
    GRUVhdzcXHz11VewWq1dQM98FQfAWoUAyAbA79Gjx1XXybciyrKNsgc7O+p7sCQdvnOFPB6v
    RZaUDVZ9K7Gtkn3IyspCYWEhCSALtF5ivZ/XSsQkHsUBuk0EMUAhyN9+cNOmTdzeUFhY2CKR
    cvLkScyfPx9Dhw4lN23aNMPhcEylKMovG1pbKoQAJIWFhf72gwDNSnyGOQgActBEf2sASCdP
    ntw0duxYxbJly/i1tbUYM2YMpk6dijVr1qCgoAAAfgPwGmgxbif+DxjboeFvC0RAaDKZCCaB
    JQGAr7/+Gl9//fVVgZtIJOL8mq8eL0uexj7yeDyOm8HpdHKP7HOWWIz1Fc3NzWhubkZlZaXv
    GAAAwOl0RtbU1MQKBIJAGNkRAejB7J04ePAgDh48eFXg5rtWvozZrdeKz+fD4/G0WCffR1bk
    np23N5lMMJlMqKmpwfnz57Fjx47WMU06c563dcG3ByAUsxdVdHR00LWGIv0QJPMTEhIUPuco
    Rjv02HaUDR8+HAsXLsTQoUMHOZ3OiTweDzNmzMDUqVMRIFmS1oAwqL6+nmhHR0gw11E448x4
    PocDNDtkE/Pce53XSPV6vXMBdBk8eDAWLlwIo9HIOXeZTEbMmDEjVCAQ4NVXX4VWq81lMqHv
    XwcQEsx5SAEoAYQy4NPNZI1czLk1Mc87MtGBIUOGqEpKStKcTicPAHbs2EGFhYVFeTyeEABo
    aGjAiRMn2m3g+WadX2NjIyfUzOPx4lQq1Qif4Irg8XjWLl265Dc3N1tyc3Px7rvvduYpypnA
    nd+9e3dObN3pdEKv16OpqQlNTU3QaDRoaGiAXq9Hc3MzDAYDTCYTRzLDgiAWMLYmTuHxeBCL
    xdxcjkKhgFKphEqlglKpRGhoKJRKJYKDg8Hj8XDXXXdBpVKhvLw8mAGs++B//a9kAGkkSWLg
    wIGQSCRc2yu7PtXV1aiqqkJjYyMsFgvMZjP3yLKLtgaFrLP0XTNfNmBWJzQ8PBxdunRBfHx8
    i5YZuVyO/v37Y/v27fB6vV1BV0H8DQi5xGgAx8gBnxj98ccfodfrcfbs2XSv1/uo2+2W+Otc
    2lKVpChKXFtbSzLzv+3lB6UAInz8IJ85WD+oA012di0/SIJuD34MQEJGRobu9ddfpywWC48F
    SAKBAPfccw+sVisWLlyIpqam4aDZaDde514imPMIZvy0gvk/11X8YKdXFZk9hbqaGLq/rh8f
    uSUqwIChGDSbehC7ViKRCAqFAuHh4VyrYmJiIrp06cKxYbPgRiQS/e45n8/nQA07U9j6udPp
    hE6n48Ym1Go1R6jW3NzMiqzD6/XK7HZ7L4fD8WMA+MEwJvFIsmslFAo5n87O0rOjJkqlklub
    a60VK9FxvbVyuVzQ6/Worq5GRUUF6uvrubXS6/Wt5Se6Mf7nthLJ7YHeJCwgZIObQDCSJInQ
    0FBR63MMVNuwYQOeffbZoD179txvMpnC09LSMHfu3ICg62+1sQEAPB6PSKvVku0w8Ktgbrbh
    oOdvYpn/4/scVtCzVWrQLSzVoFs660AzIRKMkxoCWgOsZ2ZmJrlgwQKkpaVh8+bNnHBwaWkp
    dDod+eCDD+LKlSt47733lEaj8WXQlZDtTIbUzgR4StAtafHMoWKOCGZzYB2hA/TcVxXomYtf
    0EHSAUzlZZRer1/hcDgk7IbQ1NREOp3OYDaDdebMGb8lEljBdQBwuVwjtVrtAB/ASPL5/CsR
    ERGzTCbTZT84ySQwLJBxcXE4efIkCgoKcOHCBVRXV6OhoYEDN+ymfDsMo2zm0DdbGBISws1P
    JCcno1evXoiOjkZ4eDjKy8uFDCCUwf9ahBkAYoKCglBTU4Nly5ahsLAQpaWlqK+vb8HE2tZk
    AUmSvxMpvkFij5tHiYqKQkpKCjIyMmAwGNhW8CjQrZDHAiCLHNA+xscPBmxidNiwYVi8eDEx
    YMCAqWazOeDmMVtft16vN6ixsZFoBz8YyiSqhoOuRsQw/8f6QGErP1jH+ED2YPcK1g/OANAj
    NTXV/MYbb6BHjx7Kd955h2hupr/6goIC1NfXY+bMmVCr1Xj77bdDDQbDi8w5fAWacIQllonw
    8YGxjA+MZkAhwfi51n7wN+aeLOkIPxgWFobBgwcrS0pKujidTh5BEPjmm28olUoV7/F4pACQ
    k5ODBx54wC8MsARBQK/XY/PmzSgtLQVJkpEpKSl9W/kFR0JCQoler7ffd999WLhwYWcnh7oB
    gELx/9q79tiorjP/uzN3nn5cz+Dxc2yH4IkdwAa8pJSGhZJEBWmzm6ZaUm2yWm1btapokKps
    9g+qRFWLVClSq2pbqd0tqw0hBfIoKGGzZZMlwQ5JbAgJD29qBzODjWfssWc8T3vuzL1z790/
    7jmXYTAJjR/3sro/6WhGZjScOfec833f73vV4Dvf+Q42bNiA+vp6NDQ0wOfz3dBfcDHltKIo
    EARBK7ZGWypMTU2hr68PR44cAc/zdgB/oSiKEeRggOoMbrcbTzzxBLZu3Yq6ujptrSoqKjRj
    b7HXShRFrUrwzMyMtlbnz5/H/v37Qc70Sqg57LobhFpVJ1rJ0SgoMU4ZIzO33/72t3HmzBlY
    rdbu6enpB6hg7OzsNMT85mvSK0kSOzs7y8xXdv42YYdaHe0fAdwPoKG6uppdsWKFxrxYrVbw
    PI/p6WnEYrHVmUyGhkYWyOCJQWghCrTH4XA4tm7dir1792Lbtm2YmZnBG2+8oTU8HR4eRl9f
    H771rW/h6aefhs/nw69//euqUCj0DUVRHiKXT47Mr4owaA4ANtrAvr6+XmPMcrmcFm8fj8ch
    CMLfQc3F+E8AB4hAXFQUi0VXPp/35fN5l9vt1vZ5aeiV3iFMNBySrJ+TGIfgeR5WqzUjiqJt
    AXtnIeggSg2OHTuGo0ePIpVK3dQ+gYYwVldXa6GMHo8HLpfrJsaPZVmN7SsduVwOiUQCc3Nz
    WgVN2veSVuxkGEZrqVCiVHYAaIOay6ong3wfABfP89i/f7/mHS01dKurq9HY2IjKykp4vV74
    fD74fD6sWLECLpdLY0NL+57RMBg6qHKQSCQQj8cRi8UwMzODbDarVQPOZrOYnp7G4OAgjh8/
    DrvdTp+ZE2r+8CHoWxrf8KQjmV+FkSd46NAhHDhwYFUkEvlGeVN7HfUHTQ6Wt8+RJMmeTCYX
    YhA6ADxE5OBXANR9jl5WWjZTIHIwD2AW16NsOAAOhmEUn8/HfvDBB5X9/f2WP/7xj/TMKKFQ
    iNm3bx86OjqQSCTAcRzS6XQlgEeIXM6WGITuEjl4u8/km1Bz898A8B+EaF00JBIJ8Dy/Mx6P
    /zSfz9Nzp8RiMTafz9cAapXR7373u7pU2waASCSCN998E1euXIEgCDunpqY2l+rNLMtera2t
    /YdUKjWig958D0iF9o6ODjz11FNoampaNmOZ5ohzHIempiYtR7y7uxu9vb20kMw9BpCDDCFo
    6gCgqakJe/bsWbaaHtQbabfbUVVVhfr6eqxevVojz3p7e/Hhhx9SImg9gP/GAsJGF8MgnKOC
    mPaUMkLYqKIomleodI5GhN1ux6VLlyyrV69+iOd5v9frxY4dO3SrElkOqsCV71XauPcL4msA
    fsUwzMr29nY8+OCD2LZtG9atWwePx6OxerIsI5VKaa0hrly5woRCIWc4HHbG43GO5/kGqlR3
    dnbi4YcfxiOPPIK77roLsizj+PHj6Ovrg9VqnXW5XFPZbPbuF154gdmyZQsCgQB2796Nnp4e
    HD16FKdOnaqempqqLhQKWtJzQ0MDWltb0d7ejkAggI6ODrS1tcHhcGh9DXmeRzgcxsDAAHp7
    eytOnz7dlUwm7yUXyR7CmC72/lbcbjd++MMforu7+yYPrpFA2328/fbbePHFF2kJbj2qRDhA
    8gcB0P49sNvtGtu3atUqBAIB3H333ZphQ0kK+szLB/19NOafvqclplOplBbqEY1GEQqFMDIy
    gmAwiOnpaSSTyXIDvpUYhXoKQi/UnDOGViG02WxoaGhAe3s7Ojo6EAgEEAgEsHLlSni93hsM
    ZWr83Y6iQ9erNOdEEASkUimMjo7Sc4/Lly/j8uXLiEajyOdviO5eA9VboecdbyHDyLAYmRjd
    t28fnn32WXR1dW2emZnp1PvOKveM0ErCZbLRIggCs4A+q18D8CuoRWC+CKlKiUvfPOeKGRgY
    cA8MDKBEVicBXMvn890vvfQSQ0Mqy+R4FRkLJR9WE6V+NYAnAYwt5jMSRbFybm6uked5l8HP
    HURRdImieMM8WZbNCYJgW8Rw49vmOqBGZXGAWtF3vv6IgiCA53ktUobneWQyGWQyGfA8r+UF
    lua80UiY0vDSiooKrRo1/Ttt21QexdTW1ob29nZqELYBuIdhmEs6FpVyE2LUAQCdnZ1obW29
    6UPFYhE8z6NQKGhtleha5XI5bY3oepVWZC0lTN1uN2pqarT2aaVrVU5Qeb1erF+/nhqENqgh
    wJVYQATIYlhuPGGnEI/HpWKxaDWCQVgsFhGLxYrkN84a2SC8ePEivv71r1fyPL9FlmW2ubkZ
    GzZsMMz8qIdwkQ9lHoCdZVns2rULP/rRj25pANfW1qK9vV27pLLZrNbXbWJiAlarFc3NzVp+
    lsVigaIoOHXqFH75y18ikUjAYrFcEAThGIBnP/jgA89zzz2Hn/zkJ1pD+/vuuw9TU1OaO76i
    ogJNTU3gOA6VlZWorKz8zBDMlpYWbN68GTt37sT3vvc9vPfeeyyuh9MsGZHwwAMP4MEHH8Sd
    gGw2i8OHD+uZ6M8RI8dis9ng9/uxfv163H///di0aRNaWlrAcZzWt3Kx4Pf7b7qbqLAYHR1F
    f38/+vv7cf78eUxMTECW5QoAGwC8Dv0KPASg5hCC4zhs2bIF27dvx5YtW7By5cpFbWBcWmSm
    9Dubmpo0NpSe+3A4jP7+fvT29qKvr48a9XcTxXNMx+1taNLxTpjj4OAgfvzjH7teeeWVBwRB
    0N3bWm4Q0vCtRZaDOSxeP+h5ydwyXIKaGvFTAN4Fkrq3q2NKWLqCbbecfCaTQTAYhNvt1qXt
    xOTk5Of10NPLyqkgxoPN4XBg48aNUBQFk5OTGB0dxdjYGCYnJxEOh7U0inQ6jdnZ2ZsKxJQS
    oLRgWHn/QdpagRo7Ho9HI9qbm5u1dk+NjY1wOp3YuHEj3nrrLTrPHgDHdZSD9YRwBMMw2LRp
    E2w2G6anp3Ht2jWMjY1hYmJCW6toNKpVHKXEJl2rctK4dK3oe5ZlNQOQ4zh4vV7U19ejpaUF
    fr8fjY2N8Pv9aG5uBsdx6Onp0Xr7EhnYordBWCSsE0ZGRmSe5y1Op1N3FpLneXloaIgahGkY
    p1fVvEyMLMtNiUSiGVBzMT0ej2HmdwsP4ULxPoBDoig+deLECfaxxx7DmjVrtCIeNDyNXiK0
    Gbjdbte8Nq2trTcZzoqiIB6P45133sFzzz2HwcFBAEjLsvx7QRBeB7BZFMW/PXz4MCOKIp58
    8kmsXbsWLpdLSwq+lVFMG43Pzc0hlUpp3nC32w2v1wu3242+vj7acHwcaoL+kjYZN2IFMwPP
    926QMBmPx4NHH30Uu3btwtq1a5e1byLLsvB6vfB6vfD7/Vi7di26urpw+PBhvP7668jlclao
    5eNroF9PwjVQc4Xg9XrR1dWFnp4etLW1aezlcoIai5QcunbtGs6dO0f/2QeV8T6po5JFw/YM
    zckYeY5DQ0NIJBLc5OTkPXpHPFAP4TLJwd8D+CeoLP9SIgk1tPo41DSNb2LpvdrXiBycWu5n
    ePLkSXzyyScaQbzc+0cURdD+fgZDM9T8cLhcLnz00Uc4d+4cLl68iPHxcS3NYTnWzGazgeM4
    eDwetLW1obu7G9FoFFarFZIkUTnIMQwT08lL2En0BthsNgSDQTzzzDM4f/48xsbGMDMzU9rH
    esn1hqqqKng8Hvj9fnR1dUEQBDgcDnovtZHnOqinQSgA+BOAQjAYtA4NDfGrV69269k3iGEY
    jI6OWkKhkANq4Q9Dl1Im7nS/zWarBVRGnoabGQG0qeZify3UHLutly5d+vLPf/5zBAIBvP/+
    +5ientZCEKgS2NTUpLEkPp9PY5o4jgMApNNpJJNJBINBnDhxQvseAHGoITkvE+bkpwBYnucf
    PnTokO3s2bPYsWMHtm7divr6ei20IZ/PI5VKIZlMIplMIhqNYnx8/AYWiFaXdDqd6OjowLp1
    63Dw4EFks1kRwBEAfUv5XIrFIoaHh8FxnKFDRilGR0chSZKeRqFC9oAUi8Wszz//PHp7e9HV
    1YUNGzagtbUVTU1N8Pv94DjuhkqYX7RAD/Wu0wqb+Xwe0WgU4XAYkUgEwWAQFy5cwPDwMCKR
    CD3zEiGwnHpdoVALVQwB6BgdHWV/8Ytf4MUXX0QgEEBnZycCgYDG8NbV1YHjOC2fkq5XaZW/
    +Z459U7QQddIFEXMzc0hk8lgamoKkUgEV69exeXLlxEMBhEMBhGLxWg+lwy10FSaKLd6VaST
    oFZXNDLSWOIqyAsBKWixkhIRehuE5ZFO1EO4BETCCwC2Adi8hD9pGsC/AHiF7IN9xAD9Gyxd
    31MRwGGorZ2WHbStgYkbDTBZljkADkmSkE6n8dvf/lY3/UEURcTjccTjcYyMjODkyZNa4THi
    NfMqiuJlGCa2gLDshWAVSG9ZQRBw8OBB3daqWCxq+mgoFMK7776rrRVBBVRi9Bi+oANsMQxC
    CcBHAJITExN13//+9y319fW6b/xsNotr164x5PI7BwN7CHO5HFKpVJWiKC4A+PTTT7F3715D
    5GJSpuu995akiN+nAP5dkqTOl19+uYZcEDyAGNRQGgs5jDUAbCzLMrREfVVVFaqrq7UqrLQA
    RTKZpMZrEWp4zL8R44wmlP4vgKcBTEiS9Pjw8LBnZGQEBw8eBMdxqK6uhtvthiAIWljf3Nxc
    aZiETIzZBFS23Qqg5ty5c95XX32VJRUXPyZCPreUzyWXy+FnP/uZYXJNb0dAC4KgZxuVjwHs
    BrBLUZSvJpPJVclksvr8+fPMkSNHtFYHtHIY9eLR0tI0j7C8xQTDMFp+ETX+BEHQwpqpwKOl
    tWOxGKamppDJZEoLtShQCyRdhurp+gMxdPQynE+Q//+vFUX5qiiKqyKRSH0kEmH7+vq06p+0
    RDkNq6YFoehaleaTzNerio58Po9kMqmt0dzcHLLZrNYGhOZmEMjEsL8KoB+qx6Mf+pYnL0Ct
    zFgAyTcxGAxPjMqyjHw+v8JiseheWluSJAwPD+P06dOapySfz2NsbEmiki8D2A+V3a8h5y9H
    5OAclTFQq47a8eflgQoALgD4V6ihotRDPATgn6G2mHgcakXtP+txkbnNlM1xBa57Oj9aajlo
    4s+D2+2GLMuXADwjCMLfy7L8FUmSaufJI9XzHlDsdnvS5XJ95HK5DiYSiXGn04lMJqPHdN4n
    svghACuMRryXzIcnds4AFtCgfrEsjk8BDEuS1DA4OOgkYXpGQRCLXOFqsUEqL1plWbYAamuE
    YDBoqDnOc1kshptHhpontV0UxQ0AXiOberLMIKwD0FQsFluKxWJroVBozGQynkgkwpF/d5XM
    ZxbAFQBHCVMyMg8ZEALwDDnsj0uS1JNMJmuTyaSdCGOJGJBponjOQPWYjJHXyRJBaAFQoyjK
    qkKhsANqzPt+InCX7B5gGEZWFEWJRCK4k8AwDGOxWGRq1C6zEBLJhXkBaqz9PQDWKIrSIwhC
    pyAI9alUqvrKlStO8lxv8BDSIimlsf/lBmF5XkXp30t+KyUVUmQvDZE5DRHlcNwAirtAzuJF
    AL+DWvSiA0CPoijdgiA0CoJQlclkqkKhkLZeAG7Ii7iVl7DcO0g9hGX7QSHzyJIxBTUa5QK5
    00PEaDVCXz2ZEA4JqCXdjYY0gA+NTIySInBuWZZ1N6gFQcBvfvMbHDhw4IY9u0RKqUxIje1Q
    KwUeJXtpqszYqoXajqIFauGpZmIk1kDNj3aTc6iQ8zJCjMDXiB5UTpiMAngWanuIx6Hmlflw
    3WNYJCQVlYNxcjddI69TRA5SYpQj98QOqJV/f7cMutedlTOh9yWQTsPv9+fq6ur+MD4+fspi
    saz3er1/WSgUNsbj8ap7Uf4AAASjSURBVFZFUdpyuVyFJEnLxtpaLBbJarXOyLI85na7Q4VC
    4SzHcYPNzc2Dmzdvnh4eHpbnawS/TPgYakGkTVCr7/ZADc1sIHqnngRfnMi/PwF4B8C7REfV
    3SCMEiX4AvTL4Zh3r5E5hY18SGdnZwEgVCwWz7As26IoiqwQzUgxCG1TqsxZLBaGYZirWBxG
    Pg41jNNOhIf4GRc/C5V9dBHhWEfGCqjVlSQirD4hyuJnKT8pAC8BeBNqvtQq8j0iEYIxqGE2
    U+SzAq73HZwPvcQA7YDqKVCW8Fm8y7LsbpZl2Tsth1BRFIZl2QzDMOGycIflRJ4oSyNQPWFO
    qMnjd5F95SNKfaMkSY2SJNWRPWctGWzJewu5hCVcD/eUSsYs2UeT5K6Mkn0fJUrZDJmTYsBH
    JhKhE8H1fCeOKKYryKjF9R6dDbIsVxOl3lG2Tuw8a0WHCNW7lsH1XmtRcg4TJcIvSc6iEdfq
    UzKMaBAGscAeVUt+KPN5WK3WDIA5lmWrGIbR9Rnncrmb2veU5hYyDMNYrVYJi9N0fIbIQdst
    SMxyvc1G7q0VZXKwgpyncaIofp6cTkMNI/0fqB7KW8nBafJZoeR+mw+niXEbIL9jKZ8hJW8V
    g94Hn6ebynrMOxwOIxwOKwDiP/jBD07u3Lmz98iRI85cLtc4PT29ZnBw0Gez2VorKipWFYvF
    hnQ6Xc3zvJtl2WqWZd0AWIZhWEVRrIqiWBRFYWRZZmRZpmSgQgfDMArDMJIsy2KxWJwTRTHl
    crlyHMdlWZadzGazQUEQRj0ez9V0Oj3c0NCQrKmpyVutVmVgYAAXLlwwwrOKA/gvAG9Bbe9A
    ydH15Mw0kL/Ttj5ucj6/aLs7pUT28oQUyhE9IkZkzCVcJ0XjRHYueC8tpjZJhb7RIEHfUKLP
    hc/nAwBrVVWVt7Gx0VUsFpV8Pq/kcjmlUCgoRnNTMwyDxsZGfuPGjaloNKocO3bMpN5M/H+D
    lZAUNmLY0D5c9pJX+t5KlCRhnlEgl3mBXPCi0e+jBayXjQxqJFtwvak2XTNadVAoIVkEohzJ
    JcahCAN7sz5DyXsCwJexAJZ2ieb1MYCDMHAOYSAQgN1ur00kEn8ly3ItwzC3w4fqZQgwDMOg
    ubn58pe+9KU3Jycnxddee828NZcR27Zt6z579ux2nufZO3D6DMuyyXXr1r02OTk5s2fPHuzd
    u1f3SR04cADbt2/H888/z4ZCIcfo6KhteHiYzefzVS0tLS0ul6uWYRinLMvOYrFoEwTBls/n
    rblczlooFOBwOBS32624XC7J5XLJTqezaLfbi7Is53ienwqHw6OSJGXuvffeYltbm9jS0lJ4
    9NFHi2fOnMHu3bvvtGdInRMOqG2afISY8ZFRXaYnlL6ncrBQpivQ11li6MVKXmeILpEnn1n8
    TWleKyZMmDBhwsSiGcZGVFClO9DANmHChIk7FTQixoIbSVI6FFwnQeWy99TzbcKECRMmTJgw
    YcKECRMmTJgwYcKECRMmTJgwYcKECRMmTJgwYcKECRMmTJgwYcKECRMmTJgwYcKECRMmTJgw
    YcKECRMmTJgwYcKECRMmTHwx/B9kAkyD9yO5qgAAAABJRU5ErkJggg==
  }
  set pieceImageData(Merida1,80) {
    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
  }
  
}

################################################################################
#
################################################################################
if {$png_image_support} {
  lappend boardStyles Merida2
  set pieceImageData(Merida2,25) {
    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
    rkJggg==
  }
  set pieceImageData(Merida2,30) {
    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
    8a/jG3MAAAAASUVORK5CYII=
  }
  set pieceImageData(Merida2,35) {
    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
    AAAAAElFTkSuQmCC
  }
  set pieceImageData(Merida2,40) {
    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
    QmCC
  }
  set pieceImageData(Merida2,45) {
    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
    QmCC
  }
  set pieceImageData(Merida2,50) {
    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
  }
  set pieceImageData(Merida2,55) {
    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
  }
  set pieceImageData(Merida2,60) {
    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
    TkSuQmCC
  }
  set pieceImageData(Merida2,65) {
    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
    rkJggg==
  }
  set pieceImageData(Merida2,70) {
    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
  }
  set pieceImageData(Merida2,75) {
    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
  }
  set pieceImageData(Merida2,80) {
    iVBORw0KGgoAAAANSUhEUgAAA8AAAABPCAYAAAAk2KwLAAAABmJLR0QA/wD/AP+gvaeTAAAA
    CXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH2AUBChszWZTzrQAAIABJREFUeNrsnXd4VVXW
    h999zu3JTU9IBULvvTelqdgQaeqgI+qMfSzjKDOWsc3YmXHsjoiKvWGXovReQkIK6T2k9+T2
    e/b3xw2RDs4nCuH+ngd4nss5uTn77L3etdbee23wyy+//PLLL7/88ssvv/zyyy+//PLLL7/8
    8ssvv/zyyy+//PLLL7/88ssvv/zyyy+//PLLL7/88ssvv/zyyy+//PLLL7/88ssvv/zyyy+/
    /PLLL7/88ssvv/zyyy+//PLLL7/88ssvv/zyyy+//PLrl5fwN4Fffvnl1+khKasBvQB7IrhM
    vk8NDjAXgFsKEelvJL/88ssvv/zy89ev/4d0/iY4XQZeDqBcBAwFwydQkg2RUoie/sb5Td6H
    /eDx4RHC7G8Uv05xnysAGmPAsxDUG8Dbyfc/rkpofAMM70gpy8Ah/f3xWG24DzCaQH81eGNA
    lwzffAWjEGKYv4H88vPXz1+//PLz18/f02sGWEoJXAk83Q08XcAtwQDo06CpBvoihOjAHUdd
    As7rQOaD+iUYvwFrBlAhRCf/6Drl76ASUAKgZRi0GCHwat//tCyDQCcEJoHW2pHehZRVgMcA
    TUNABoCQJ3GXApQBWW0fhAKDT96cSIAUoL7tg95AHAjtJO4VIFohKBl0LiGiTtN+pFfAMQxa
    reAFDC0Qvgd0HiECjnK9QQ8NE6D5HrvdfmFebiEF+eV4JSQmxtCzRxdpCbBmg/UViHwRmryH
    90MpHYDQQfVQaAkEFQhoBlMSuLWObkOkzACUQHA+pmniFrfbZTAYDHVCsAj6/hdyEKKf39Ad
    tw1bAZcOGoeCO9D3qaEFgvaA4Yi+6+evX37++vnr56+fv2cif8Xp0XDZgMkMzRNBmw260VJ6
    BmuaR1MUPUIoP4I3A9Q3ICQbvC4hEjpY59kL6JY0NdVel51VSGJiHGHhkVII/UYwvg2V7/gc
    kGHHuL8E0JvAfis0dQPDWxCaAu4O11anpv2TAK8RAh8CeZ/T2SzsdqcipcRsNmomU5AE8RS0
    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
    AONhl8v1r7NnTZ7tUd20NPfwb5+5C1mRJ7RLVxAgndIZ6I9QUVFCU9NkXLK0IZXK7EmlJom7
    tu8CsObMn1OkB1zIfwuLkZE4lmWTzebYtGkP6XQKqwiCFUFwkgyJROqYOV2CMAfbXt4B9b87
    44yT7rzyyrPFX//6KZ5+ajU+r0JtXQWTJlejumX6B0bo748wNBjFNM2C7lhBx8ztwuN1Y1mg
    Z7LkcmYhsxUuDXDJxadz221XMm16476MZn3Mtk1mNU35zbe/c/vMu3/+CE8ue419ezv/v/bO
    NTau4zzD78yZc91dcrnkLpd3XSzJcmTZpnylhEgKWktuoySOHQRSL6mTtEUDpP3Xou2PumgL
    pEXQFCncImltNEmbunJjuzASKLYTSUmlCK1NqbIsWyQdVRQvqyW53N2zu+cy55zpj+XSpKS2
    tkqJS3cegD8IEMuzM3O+d+abmffD2OgEnn32VVBKoZsqFErh1HxwHtTvjxAsMd1SYFgaevvS
    yKTbwIMQxXkbIyOXcfr0CKIowqc+9fPYtevukPv4O02nlwi555b1IQ9CfOUvDiPRYjX9yQhC
    ALtcW5jwrTYJADohpFo9ePBnDE1XyPe+ewqjoxM4c2YUp0+P4LnDR5FIWBhYl0VPVwc60km0
    d7Qi05lCJt2KRDwGyzJhWAYSlgamqjAt45rvzP0AvuvCcX2USlXYlRoqNQ/VioPCXAkzs0UU
    5srI5+cxMZlHbroAx/EWy+KYpoaBgQx27xnE449/BIDCgzCw6rurq0EIgPiEUuzZey/On7+M
    c2+8g8nLM/jWN4/gn559Fan2Fmze1I9167uQ7Uojm21HVzaJzkwK7R0t0HV9wViHLMlKk+vG
    ocZEvWGQE0URfK9etzE/W8RsvoAr+SJyuVlMXL6C8fE8JibysG0Hvs9BKYVl6dh250ZsvWMj
    iAKfCEBhq73SbAVwwQOSX2tvT+7bsL574QpSs2V4BbbcPoCOjjaYlvK1TXckvP8cs5t8gn2t
    /q7mbhghQMWu4cTJM8hkxhd3Y261/h742C76N19/CQCpl5np6UAq1QpdU5HP1z0IHMdbqPMZ
    LnoWkCWLzqUT4MY8JpmMYf//pr8v/Bh2uXbNZyx9v5eaUDLGoDAFhqGiM9uGdHsbeBiiXLRx
    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
  }
  
}

################################################################################
#
################################################################################
if {$png_image_support} {
	lappend boardStyles USCF
	set pieceImageData(USCF,25) {
	iVBORw0KGgoAAAANSUhEUgAAASwAAAAZEAYAAADbLc+cAAAABmJLR0QAAAAAAAD5Q7t/AAAA
	CXBIWXMAAABIAAAASABGyWs+AABAOElEQVR42u19d1hTyfvvJCEVSOi9Su8IAoIIKqL0YkfF
	LqjYULCsvSwW7L1XdC2r2AUVBESKUpTee4dAKEkIJDn3j7lzs6tfv+ou4O/ey+d5fGLInHNm
	zsy8887nLQPAMIYxjGEMYxjDGMYwhjGMYQxjGMMYxjCGMYxhDGMYwxjGMIYxjP+PgPvVFfif
	ghcv7t+/cIFIfP781auEBDs7OTlZWTm53Nxdu/bvP3Gis/NX1+9ngWEY1tKCw61cuXTpmjWm
	pnw+n8/nE4n79u3e/dtvOTn79x8+fOqUllZnZ2dnV5eioqWlubmJSUbG8uXr1u3cyeMNdX1r
	a/Pz374lkzkcDofNplDIZBKJTObztbQsLFxd2eymppKS5GQ8ns1ms9lsGq27u7u7uxuPl5CQ
	kJCQEArhJ5stFAqFQiEAPB6Px+OJi/f18Xg8HoFAo4mLi4vzeOrqJibjx/f2DnX7Xr9++PDC
	BUlJcXE6XUqKz3dwmDhxxgwu98tySUkxMbdvE4ldXSxWezuFoqKipqal1dNjZeXo6OWFYUNd
	7y9x8+b58wcOSEszme3tLJaFBewPAoHPFwgEAgAIBAKBQABAQkJCQlxcIJCTk5GRlv78ee7c
	oKANGzo6fnX9/1/Bn39ev37sGIHAZnO5vb2qqioqKipKSvX1rq4+PgsWCAS/un7/FCtXLl06
	Z46RkVCIYRhGIm3fvmnTmjUFBWfPXrx444amJovV1dXdraiorq6qqqSUkREWtnXrwYNDL6/q
	64uKEhMJBAIBj8fjxcRgfYVCFRUDAyen/n4or3A4AHA4DCMSAQAA97fVFsMwrL9fSUlff+xY
	DGtoKCpKTCQS8f8bAoFQKBTy+aqqhobOzkPfn0VFmZkxMRISFAqFIinZ36+lZWIyZszX77ms
	7PPnhAQisa+vt5fDoVIVFdXUtLW7u2VlVVWNjH69vDp58uDBrVvFxQsKiopKS1VVu7q6urq6
	8HgGg8GQkgKgs7Ozs7MTADqdTpeUFAqNjQ0N9fTq61et2rBh7142+98+X2ygG5Sd/e5ddLSY
	WGTk8eOXLo0fz2az2RzO+PFQ4L59u2HD2rVLl759a2ExZoyvL5//S976X3D+/LFju3bp6xcW
	lpRUVCgpJSW9f5+RcemSgoK8vIzMH3+wWDU1Hz4cPcpgqKurqXE4OBwOp6LS1/er6/09hIau
	WLF+valpc3N7O5t99y6GAYDDSUru3h0RceRIWFhtbVNTe/uqVWJiJBKVamLy5k1CQkrKihXw
	6j/+GKp6YhiGYRgev2hRYODUqVu21NTU1TU3e3hQqRQKiVRbe/nyyZN7965YsWnTzp2HD8vI
	1NTU1TU2Hj1KJlMoVKqEBI/X28vl9vRoaqqrKyuHhjo5jRljY9PRER397Flc3NmzHA6H09ur
	qgp/f/kSPm/HDhwOh8PhhMLBbt/ixYGB06Y5OV28eOvWs2c7dtBoFAqJVFOzb9/27aGhYWGb
	N+/effQok3nqVGTkli0SEidOnDsXFbV5Mx5PIBCJY8a0tbW1tbTs3g3vFh8/VP3yLXz8mJWV
	l+foGB+flJSWFhWlrq6pqaVFJMrKysrKygLAZDKZTCYAtbXV1VVV/f0TJjg5jR49dy68+unT
	X13/L5GU9PLlzZsEwvnzV67cvTtuHI/X19ff7+ICVfy4uJCQpUtnz05IsLd3dQ0I+PWKS0TE
	9u2hoSNHlpdXVdXWMhiFhcXFFRUrVhCJRKKY2MmTsNS7d7+6nj+L335bvz442NQ0KurevadP
	b98WCgUCoVBKSlJSQkJcPCwsNjYu7t27NWvq6xsbW1qMjBwdR4+2slq5El59+/ZQ1RPJq4CA
	adM8PTdsyMjIzs7PHz9eVVVZWUGhufnevWvXjh3bsCE8fNu2yEgpqU+fcnMLC/fu5XC43N5e
	Gk1cnEajUjkcKytLS2PjrVvv3bt27ehRFisgYPHisLCDB2H7FBVHjRo50sTk7Vv4vAMHhkpe
	+fl5erq42NnNnr1o0bp1e/fCDVJ19YkTBw5s2bJx4+rVGzf+/juTefXq6dMRERISS5aEhGzY
	sHlzZ2dXV0/P2LGysjIyDMaePfBur18PVb98C/n5hYWlpc7OJSWVlQ0N588rKSkrq6iIiT15
	EhOTkACAk5OTk5MTAMXFFRUNDXw+hmEYAMHB8OoXL/7t8wdcwYqIOHz43LmJEzs6urv7+q5f
	d3R0dHRyUlBITk5OTkpavPj33yMjz5yZPx+WjokZ0rf9H5CY+P79x48LFlRWVlfX1U2fPmKE
	np6BgbY2gYDHEwjh4e7u06YFB7u5kclkMolUXz9x4rhx9vb5+YaG+vojRrx75+vr6TlpUmqq
	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
	e/eOHnV0dHWdMWMAfQGvXj17dv9+KSkPj0mTnJ0jIqZNmzLF17epaefOnTt37hQKi4uLi4uL
	sf+DsrKysrIyDNu3LyIiIqKvb8oUPz8fn5qaCROcne3tjx49ciQiYvNmVdUBq+B38OHDmze3
	b4uJjRljbz9q1MaNp06dOnXypEAAFxQMg07S2HdRXl5eXl6OYeHh4eFhYRimqamurqJSXLx8
	+eLFAQE2NkPVnq6uhoZPn8hkLy83t/Hjr1y5fPny5UuXvq5vWlpaWloahv3222+//fYbhkGf
	GQz7448//vjjDwyzsbGyMjePjo6Le/z48mVJyaGq/2+/rV8fFGRh4eY2adL48R8+HDp06NCh
	Qxj29OnTp0+fYtjjx48fP378/U9U/sCBAwcOHMAwNzdX13HjPnzYvn3DhuXLLSwGqr7Lli1e
	HBBgbT179syZ/v737gUHL1oUELBiBYZhWH09ovQBmDt3xgwvL3//3bt37dqxg8draGhoaGzE
	sKCgJUsWLszP37w5NHTx4gkTli1bunTRory8hoaGhoYGDDt+/Nixo0cFgoCAqVM9PObN+/L5
	gYGzZvn5TZ06c+bUqd7ez55BpmzSpJ9tx+zZ06Z5eCxe7OPj7e3l1d2dn5+fn5+PYdBUI5oH
	BQUFBQUFGBYcHBwcFIRh8vLy8nJyGDZ37ty5c+di2LFjx44dOyb6Li8vJycnJyqPrkf3Q/fP
	y8vLy8vDMG9vLy9Pz66uGTP8/d3ckM/WwOHWrUuXDh+Wkpo82cXF0TEiAs7TpiYSiUQiEtEC
	gwS96BO6BvT1qagoKyso1NSMHWtvP2rU0aMnThw8uG3b0MkrOHtxOCcnB4dRo3btgs7VAgF6
	33/++eeff/6JYXQ6nU6nYxhcaBDDiGHXrl29evWqaH7Y2dna2th0dZmYGBnp6q5Y0dRUWvr+
	PXTGHqr2tLSQSGPHOjiMGnX6NOyHr9+/np6enp4ehuXk5OTk5GDYiRMnTpw4gWHQRIhhkFl9
	9Ojjx7dv798fOnm1Z8+WLatXW1iYmRkb6+l9+KClpaWlpYVhW7Zs2bJlC4bt2bN79+7dGLZ7
	93/+3LNnz549ezBs8+bNmzdvxjA1NTU1NTUMMzMzNtbX//AB3X+g6jtjhr+/u7uFxejRNjYW
	FnfuBARMnerpCeUVhonk1bx5AQF+fp6eDAadLiGBGCgM09bW1FRTy82NjNyzZ8MGJycjIwMD
	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
	AAAAAElFTkSuQmCC
	}

	set pieceImageData(USCF,30) {
	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
	}

	set pieceImageData(USCF,35) {
	iVBORw0KGgoAAAANSUhEUgAAAaQAAAAjEAYAAACLHqKiAAAABmJLR0QAAAAAAAD5Q7t/AAAA
	CXBIWXMAAABIAAAASABGyWs+AABeZ0lEQVR42u29ZUBUW/s+vCbogYGhu7vTxEAREEFsRTGw
	Ueyjx+4Wj10oKnajKCgqoIgoICEg3d2dM8x+P9z/9e5z8PDoOSDwPL+5PrgdZtdas/e6+7oR
	4oEHHnjggQceeOCBBx544IEHHnjggQceeOCBBx544IEHHnjggQceeOCBBx544IEHHnjggQce
	eOCBBx544IEHHnjoHpT+voH/q3j8+M4dX18qtb6+traqSkTE3NzISFe3qcnMbMSIyZMJor/v
	b6CAINjs5mYqFaH29poaOp1CYTCUlTs6vt+Pw6mqotMRIgiEKBQKhY9PSorN7u/754GH/gRB
	EARBUP7fOk+j/buzdHZSKBQKhcJbl/5XUVaWn//tG4UiJsZiyctTKMLCoqISElxuf9/XQMNf
	3ycqFd6Lzs7v9+vsrKuj0+H/FAqFQqNJSPDkEQ88/DeB3t83QBAEUV8PgpvDERJCCCE6vbWV
	QqFQmMzvF57/FeTn5+Xl5AweHBb2/v3nzxs3FhYWF5eX79wJ3yYm9vf99Tfi4yMjnz6l0xcu
	XLBg7lxPz6KikpKyMgeHFSsWL3Z3f/XqzJkzZw4c8Pf38Tly5OxZCwtX1wkTpk1bulRAQECA
	n7+1df/+7dvXrNm/f+vWvXtPnCgs7O/x/Ajh4c+f+/sLClZUVFVVV5uYtLe3t7e3Cwry8fHx
	8fHR6RwOh9PZmZo6Z86SJRs3lpbeuXPlio8PhdLe3tHR0aGtDSJbVrazs7OTy+Vy6XQ6nUaj
	0eC4khIWS0KCyczOdnObPXvlSoJ4+vT27bNn1dSampqamptVVUH1pVCEhYWEBAU7OlgsFktc
	PC5u1Chn57lz29r6e366w4MH166dOMFkVlfX1tbW2thISbFYEhI1NS4uzs6OjomJAgJSUnp6
	HE53x9+65et79Ki6el1dfX19vY6OiIiIiIhIfPz8+cuXb95cUdHf4+spzp8/fnzXriFDMjOz
	s/PyVq1qa2tv7+ig0To7Ozvx6orNHgoFIRqNRqPREBIUFBTk5+/s1NHR0FBTO3UK9vj4sb/H
	86tBEATR0ADyqLMT5BGNBvJITOx/Rx4RBEFUV4N6LylJEK9eBQU9faqlVVVVXV1XN2ZMQsLn
	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
	jRYC6b8AAAAASUVORK5CYII=
	}

	set pieceImageData(USCF,40) {
	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
	wQUXvwr/H7wRF50p8W+ZAAAAAElFTkSuQmCC
	}

	set pieceImageData(USCF,45) {
	iVBORw0KGgoAAAANSUhEUgAAAhwAAAAtEAYAAAC1124eAAAABmJLR0QAAAAAAAD5Q7t/AAAA
	CXBIWXMAAABIAAAASABGyWs+AACAAElEQVR42u29dVxU+fc//pqBobu7kS5JEQQ7sXWttbtz
	7V7bNddOTMBWJEWQkO7u7u7m/v443/O7LupH3UUR3/N8PNzZYe7cOPO6r/t8nXgeQthggw02
	2GCDDTbYYIMNNthggw022GCDDTbYYIMNNthggw022GCDDTbYYIMNNthggw022GCDDTbYYIMN
	Nthggw022GCDDTbYYIMNNthggw022GCDDTbYYIMNNthggw022GCDDTbYYIMNNthggw022GCD
	DTbYYIMNNthggw02ehOM3j4BNn4MLl06dWrfPl3d7Ozc3IICU9OZM6dMGTPm+XMTk0GDJk+u
	r+/t8/tVERbm6/vkiZhYampqakaGmVlra1tbW1t5+YgRI0fa2aWmKilpaQ0a1NREURRFUQyG
	n9/r13fvqqmlpqanZ2WpqyspKSjIylZWjh7t4DB8eEwMg8HDo6bW2dnb18UGG/8FON4BFNXb
	5/OzICYmIODZMwmJrq6urq4uXV2wDJMJdqK3oyj4x2DAP/rvFAV/ZzAYjK4uJpPJZDKTkoyN
	bWwmTqyo6O3rY+N/A25uLi5XrsjK8vPz8/PycnLa2Y0dO3dufn5vn9evjvBwX9/Hj0VF4+IS
	ElJS9PTa2jo6OjpqasaOHTNm6NCsLCUlLS1bW5pvBAS4u9+/r6aWnp6ZmZOjri4vLysrLV1Z
	OXLk6NH29jExDAY/v6Ymm2+w0bfB5hufRkSEn9/jx1xcnZ2dnV1dQkLAOxgMiurq6uoihIOD
	k5OT8+PvdXR0dHR0EAL8ghAODiaTyaQoDg5OTg6OujpTUzu7KVPa2nr7+jj/+y5+DCoqcnLC
	w0VFGxvr6+vqZGUFBAQFhYWLi8XFVVTMzKqre/v8flZQFEU1NfHyrl27fPnSpbt2vX3r7x8a
	6uDAycnJycHBwQE3/p07SIh7+3x/Fbx58/z5rVuCgkePnjp1+fL+/Tk5eXlFRQsWwARSV5eR
	kZWVl+fkRFGtrTk5u3bdu3f16vHj/fu7uDx/7uFx/nxWVk5OYaGGhpiYiIiQUHHxu3dBQRER
	a9bA3j09e/v6vhdcXG7fPn3a3r6wsKiotHTo0Pb29vb29q4uXl5eXl5eUdGWltbW1tb0dHV1
	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
	2tr6ehERcJjMmqWlpampqiol1dBQWBgZeeaMgIC8vKnp/958BHbW1IyOjotLTjY0HD58xIiR
	IwkxMTExMTYm5OzZs2fPnSOkpKSkpKSEEBkZGRkZGULWrVu3bt06QmJioqOjownx8vLy8vAg
	ZMAAS0sTE03N3r4uxE/r4Dh06OTJy5enTXv1yt3d1/fUqdbWjo6uLlFRZWVlZRUVQnJzc3Oz
	sxUUYEIfOLCqqqamtnbjRvj27du9ff69AxYLHlCLFj1/7ur65o2R0cSJ48YNGxYWVl/f0NDY
	qKIyaNCgQYMGEZKTk5OTnS0tfeXK7dvOzidPZmRkZ+fljRsHkb/2dvBkp6RcunTq1N692dlq
	aioqiorJyaamFhZmZhkZEhIKCsbG/7uezy8BJm4xsba29va2Ni6uhoaGhoYGQpqbm5ubmwlp
	bm5paWlhMODBxmS2tYHNOzsh9au+vr6+vp4QcFMRws8vKMhiyciAZ1tQEI7y6zg4AAwGZGhw
	cbW3w8Ju586dO7dvJyQ+Pj4+Pp4Qb29Pz9evmUxubm5uHh4+PrAzEjkOjtmzp093cBAQADcG
	Ibt379ixaxchGhoaGhoahKSnp6enpxOyb9++fXv3oitPQAD2IyAA++nsdHFxdDx7VlAQHowc
	HJMnT5kybRohOjo6Ojo6hPz5559/HjyIvw8XF55/b1vwvyItLTLSw0NVNS4uISE1deVKAwMj
	o/79paVPnjx58uRJQjw9PT09PQk5ceLYscOHra1dXJ49c3dXUYFvx8R0319IyJs3Pj46Oikp
	aWlZWStXDhkydOiIESIiO3fu2rVrFyF37ty5c+eOqOi9e46ON27s2OHvHxQUHp6YCN9+86a3
	7fGjgfE/QUFBQSEhQqSlZWRkZQnR1tbS0tIiZMeOnTt37iREQkJCQkKCkIqKioqKCkIOHz58
	+NAh+n1paUlJcXFvX03fwa5dBw+ePTtt2qtXHh6+vn/9lZubn19UJCWFjlUIqCgoxMYmJKSk
	WFjU1TU0NDZu2gTfvnevt8+/t4ClVEFBISGRkatWVVRUVlZVaWjo6PTrp64uIgKZAyzWy5fu
	7m/f7trV1UVRixZxcMTHh4a6u9+5o69vYTFqVGkpLNQ6Onr7evoqwBEnJgYMgpu7++ewkGlr
	q6iorKyubmsDe3Nxdc8Iw/eQci4pCZmQH+/v1wCD0d7e3t7Rwc0NAQ10NNDPceDNHByf5huE
	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
	gQftI6GpMZNJCEWBBxoXKNhOKT0dvo/3iZSUtLSMDCGxscnJOTnCwuLiEhISEgMG6OsbGZmZ
	0cfBhRBMIKKiYF99fW9vf//w8KFDIyJiY5OSpk0rLCwqKi3duhWs4eT0o39/aNMoLl5cXFJS
	VqamJiYmJiYuTgjUAP/os/l6YMq/tLSMjKwsITU1FRUFBUZG4FDCGtmf18FBCJOpoNDQABlz
	CQlAgK2ssAvH+PETJkyY0HNHw8gA9qXHeRpLNubMmTNnzhxCnJycnB4+pMV2ra3NzQ0MeHhk
	ZTU1VVX7Xmp0QUFRUWlpcnJTU1NTSwuU3rW1qalhKdCoUaNGjRrV88dFBwk6TNDO2M3Gw8PD
	w8ODdmA1NTU1MRglJXi+vW23b8WTJ3fvnjunr+/m5uX17t3WrTEx8fHJyZKSuKDtLbS2gsM6
	KSk5OT1dWdnVlZeXm3vPHl1dbe2zZxMTYau+zzfAzpyca9YsXTpnzurVIBavr/+jHRsIdAgi
	SkpKSkpLafV+SI0uKsLuJD/qvK5dO3fu4MFp0xwdHzx4/nzPHnDA6eiAY4DB+HSXAzExOE9V
	1ZiYuLjk5A+f79A9cP/+/fv376cXfF8a93gcXMikpKSkpKQQkpqampqa2j3wwmQ+e/b6tY9P
	//5dXfC9zs7/6zhiYhwcHBxMJkZoR4zQ1Q0JiYycOBECMwcOwHbOzj/K7oi6uvr6xkZxcejK
	pqb2szs2ugMj5nj+9fUNDQ0N4uLw6c/r4CCEg0NRsbmZi4vFYrGysjg5OTg4OS0ssBTz5MmT
	J0+epDMbMfBRVVVVVVkJzydYWMN8iuPv46PAuGOxWCwuLpoPI+/Q1AReaW5uYWFhQUhBARyf
	yYSAAWR28fDIympo9EW+kZ2dm1tYGBHR3Nzc3NpaWFhTU1dXWamqunv3rl27dxNSUVFZWVlJ
	l8SiKHz3LqTfiu6lybjOQZ6H9scMYV5eHh4urvz8uLikpPR0EC3+HvhuDo6kpJSUjIyRI9PT
	MzNzc9XUtLS0tXV16UjSpUuXL0ObqR9DQPAHwAg5evbw/CDCMmUK/MDR0X09siIsLCQkIMDB
	UVJSUVFfT6dggXgg/WDDlGhMMequPo72wpKJ7l0r8EGIC3okFpgSjQsbzFzA9/g5trmFUiJC
	Ojo6O7u6IiII4efX0Ph+/adDQry9nZxUVQ8cOHHi0qUdO2RlFRTU1JSUzp+/dGnnTnph0D3T
	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
	mjV//HHo0LVrMM4+9hBjG7i//z5xYteu9PQbN+7effJk+/agoIAAf38urqam5uaWlqIiaDsp
	LAzt9sTEsP0k/E5dXdXVNTX19ZWVoKcsLQ3H4+dvampuRi0EUJVuaKivb2qCcVJR8aPHKYyq
	6moVFWVlefnISChZkZUtKysuzsv7+SMTSkry8lJSHBz9+mloqKhUVoJK//fLPOppqKkZGw8f
	Xl0N4+7kSXNzU1Mnp4cPQ0LCwiIi7OxycvLyCgtHjszJycvLzVVTy8nJyEhKUlLq7OzqoihR
	UajNrqmBiCKTCRFSISEo1amr4+Tk5OTg6OqSlpaUFBcXEQHHUH4+1LgWFKipKShISERFmZkZ
	G9vbx8TY2NjYWFgEB+vqmpmNGpWf/6toIk2bNm/eunXv3ycmhoS4ui5eDBkdI0ZAt6ARI6AG
	X1MzMzM1NSFBTS08PDQ0KAja59bU1NeLioqKiojIyQFhgOT7D2dcsGtnJ6juV1TAfc/BISYm
	IiIszGDw8/Pz8/JmZY0aNWSIlVV6uqGhnp62tpeXvb2trYWFl5euroXF2LE/bsHXU8DnNWga
	AN+YN4/mG2Cf7i55tNo/rYjx0K9bLnzOpdF9P/Sx8XnHwcFgQInEr8M35OVlZaWkgoImT3Zw
	GD782jUrKzMzIyM7uw/j5f8EWget9SXrfmmLfz4r8B1dow+WlpGRkZGU9PICLar09B9ln8rK
	qqqaGgiItLTQ3VxgvuzqEhUVERESYjKhdr66GnhVXR10jxITw+2xlBVEcgkpLS0vr6oqL4fr
	5OKCgB0hCxfOmTNlyvHjq1dv2XLgAPANJvNzfIOH5+LFv/7auzc6+tat+/efPt2+HcQJu7qA
	39TVAT+WlQXxQg4O5Olo3/Lyiorq6qoqYH9CQmBvUVHQpunqAt7CZML81NEBGme9ESEHvqGk
	pKQkJxcZaWZmYqKvLysL5/vf+caH65h//uVL23/t/uF+UlZWUpKTw/m673QXU1c3Nh4+HBuj
	X70aGvr27ZMnb968fx8SEhFhbR0fn5SUlmZhUVZWUVFZaWRUX19f39iootLS0tra1iYiAnyk
	tBTGHzQx5uEREmpubmlpaamrg4BqVxeIPIuIgGMjPx/aphYUAG+OijI1NTbW1Y2Jsba2sjIz
	Cw7W0fk1+MY/MwE9PQMDvbycnGJj37718wsKGjkyNzc/v7h4+nRYp+jqAn8TFi4qKikpK2tu
	5uPj4eHhkZaGeYiDo3tg+9MBbYqCea20VEZGWlpSkptbUlJCQlS0tlZBQU5ORiYpCdZ3Li5D
	htjZWVt7etrYjBw5Y0ZJyaxZixdv3vwd7dHbPwgb3xexscHBHh5cXA0NdXVVVUJC3UkcDlh6
	4DIYEHH5p9sCH7DwoPzQEfJphwg8iOvrjY1tbSdNamnx9X3+/NYtBgMzDZhMTk4eHkIEBISF
	QVzUwmLw4B+3oHVxuXXr9OmBA52cnj51c7t6FSIMhYVaWpqaqqppaYqKcnIyMoWFnJwsFidn
	enpcXEJCamp0tL29jY2FhZwcNzc3N4vFwQF0AwlMQ4Oj48OHz58XFIwdO2KEnZ2KChBZJtPc
	3Mpq0KDwcD09ExNr6y/L3SUlxcYGB7NYYWFBQe/emZsXF5eWlpV1dTk5PX3q7p6dPWfOtGnj
	xomLq6urqSkpSUnBrwCZOO3tnZ3gGS8qMjDQ0+vXz8QEiIqmZn5+YWFJibx8cnJqalaWujpM
	XBISc+fOnDlhwvr106fPn79hQ1DQj/odYmICA1+8YDAg0i8sDLWV/0WV51vxrRTjn4C21kwm
	LCg5OSFTprhYV9fScuzYvvugpK3T3l5UxMnZ2FhZWVYmIJCenpaWlaWsDMRVTCwqKi4uKQkc
	mLW1HBxIyCsrKyurq6uqoO1aZydEEiUkRESEhYWECgq0tXV1+/UrLWWxhIUVFBoaGAwm88OI
	+/8KKKq1taiIi6ukJDc3K0tMrKCgoKC4WF0d2le2t/v4+PsHB1dXW1qamhoZmZsLCPDz8/Ep
	K3d1UVRXF01o4P6urCwsLC4uLY2NVVZWVFRQgJpieXkWCxY+mZmysqqq6upVVQwGN7e8fN9r
	g8fGzw2KamkpKODiIqSrq7UVZSr/r7m1+/z7ccjr09v/W3Byslj19QwGN7ey8o9bYL98+fDh
	xYv29nfvOju/fHnpEjiE89aZ508AAAKhSURBVPIgJT4qql8/dXVl5epquJ+Tkiorq6trazMy
	DA319LS0ZGTgOUNrD2CJSXh4dHRCQmEhRGR5eGCBQcjw4aNHT5iQkmJo2L//gAFfjtUmJcXE
	hISwWBERISHv3pmbJyenpWVmNjTAgrKqasoUB4fhw5WVYUnJYiFPxPMBR21JCQRcoItbV5eu
	bkZGZmZurqhoRkZ2dn6+sTHMW1JSCxfOnj1lysaNEyfOnr1q1bt3P+p3iIkJCHj2jMFoaGhq
	am4WFu7q6uzs6mKxkP8S8vEI+xbXGjrsaIfU/52B8KlR/n+NeHr/HBxMZnu7gAA/Py9vba2x
	sY3NpEl9//lJUW1tubmcnA0NlZXV1QIC6enp6VlZysrAL0REPD19fAID8/PB0SYgICEhISEm
	Ji4O/LuqCsRtOzuhDTTNN3R19fS0tUtLOTgEBWVlGxoYDA4OXA39L6Gzs6EhM5OPLzU1KSkl
	RVExLy8/v6hIXDw8PDIyPr65WVVVRUVBYeBA7IrU3t7R0d5Od6lBxwaKj0LJSUdHaWlZWUVF
	YGC/fpqaqqqEYMBaS0tXV1s7P5+DQ0BAXf3Ht0lnOzjY+J9EdLS//9OnXFzg+VVVVVBQVFRW
	LitTVNTWtrauq/tVImvdgSndhYVpaaGhAgLZ2dnZmZliYpA6X1jYv7+d3ZQp7IUPG2ywwQYb
	bPQEoqLevXvyhIsLItHAN5SU/hf5RlZWZqaYGB8fHx83d2Ghqamd3dSpbL7BBhtssMEGG2yw
	wQYbbLDBBhtssMEGG2ywwQYbbLDBBhtssMEGG2ywwQYbbLDBBhtssMEGG2ywwQYbbLDBBhts
	sMEGG2ywwQYbbLDBBhtssMEGG2ywwQYbbLDBBhtssMEGG2ywwQYbbLDBBhtsdMP/B7yvVs/Q
	2lgrAAAAAElFTkSuQmCC
	}

	set pieceImageData(USCF,50) {
	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
	pU8fOzsrq0ePRo2aMmXp0ri4rm7Xzsbly6dO7d4tIrJnz5YtK1cuW1ZXV19fXz9oEDje4+K8
	vJ4+vXnzzp1+/YYPnznT3//r7atHj65ckZWF886ZA+cdPJiLi4uLiysszMnp4sVDhy5enDlz
	0aL16xMTu7odflXAem/ZMhh3Vq6EcaqtDdYXhNTW1tbCbI3fB903FEWIoKCQkJAQIXV1dXV1
	dYTAOp+La+zYESMGDjx5Evbctaurn7M9uo0Di6IoKi+Pl/fvvy9f/vtvO7s//lixYvPmOXNK
	SkpLy8sHDMDhT0pKQkJc/M2b27cvXz58+Pr1qVPnz582DRYs8vLNzV39HL8aAgNfv753T1U1
	NjYxMTV10iQVFWVlBQUXl/Dw6Oj4eGPjyMjo6MREJaXc3Ly8wkI+Pnf3N298fTdtUlM7cuTI
	ES4uiqKo0tJjxwghRFycdmT91ybmn4309KysnJzZsxMTU1IyMiZOXLBg4cIlSwiRlpaWlpbm
	4dmxY/v2bds0NF698vT08enfX11dRUVRsaHh/Xs/v+DgGTNkZOTllZWZzGPHNmzYsIGQLVu2
	bNmyRVIyIiIqKj5+6dLo6IAAN7c3b+Bq4Aj7L6CysqqqpmbAACene/eePJk1Kzs7N7eggBAB
	AQEBAQF6gAemmr193769ellZeXvD0YGBeB44rl+/+/cfP375cvHihoaGhqYmBoOPj4/vY/5U
	U1NTU1MTIUymgAAfH0VNnjxu3LBhKSnwV9qBBSaUtrab28uXXl4zZwYFhYZGR0tI4AQFDjFC
	lJQUFGRlCdm8ec2ahQuDguDo39eBlZwcGuruLiu7f//x45cvnzjh5eXjExQ0YoScnJycggKL
	VVtbW1tdTUhoaEREXJy2NrTj1KlwdMcGUVJSaKi7u7T0jh379p0+vW9fSEhkZHz81KnS0jIy
	srL8/KWlJSUlJXZ2LS3NzY2NMjJnzx45sn37pk3Llq1du3t3bm5Xt8uvAkyh2b59/fqlS9ns
	+PikpNRUQmpr6+sbGwmxt+/Vq1cvQhQUFBQUFQlpawOHFoKLCxxWubm5uTk5hPj6+vr6+oKB
	xc9PSF1dv349e7LZeJ2vNZw5+BQYWT9z5vDhbdvMzJYvX7Vqy5bly8vKyssrKwcMwP0kJcXF
	2ew3b86fP3Zsx47TpxcvXr16587w8P9aoONrUVeXnx8eLiZ27Ni5czdvHj2al5efX1gYE9Or
	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
	R0JCcPCLF1pa8H0nJkKK3s9nEGLAr73jFuefn30/aMcNGzZ4cN++r16lpEREeHh0g3GPoigq
	L4/FWrFi8eIZM44dA4ZHW9uIETBgYQQJJ94fDVyQ4MA4d+7cuXPnUhRoQVAUGPLv3wcHe3k9
	fPh5bu7vAoj4z5oFDJPi4mXLli5dupSioJrgj2/3f7OQuHaNovT09PT09CgKytfDwKivX15+
	4cKxYzt3jh/f1e3YWfDycnO7cWPQoH797O2trMrKQNOHTun8t0BGiampqamJCU0tbR85RCYW
	Mh9hQqqudnO7e/fs2eHDu7p9fhZgzODnP3Xq0KEtWw4dAmYGbbCCdlXnRwjxOnhdVVVlZQUF
	ijp79ujR7dsPHYJe+/UXHkBFt7e3trawMDHJyEDDHqoF0o4hMMBev4ZIp4RER+fLzIyJ8fJS
	V4fUt4gInEc6YoqiY8vc3NzczIyiFi+eM2fSpOvXgSly/bqpqYmJsTFFQXWWjuePZcuWLVu2
	jKJ69bKxMTdPTg4NfffOxUVf/0vPDwbZ9u09epibm5rSgRVM3QVHVkXF7t2bNy9f3q9fZ/fH
	/fvXrx87NnWqnp6Ojrp6c/OAAQMGDBhAUaDd8uPGc2TaTps2bdq0aTSzZPHixYsXLaIX7H/9
	9ddff/1Fb/ft27dv7156PzwOz4Pn/VFAByUUKaEoiJjW10PkesyYn/29fCsoiqIKClgsYJYf
	OyYjIy0tKYny012XgoPMI2ASv38fEuLt7ez8+9pXhYXJyb6+CgrguHv7Fg32jtoHHVXITGzP
	BPnWrZQUpMSeO3fu3LlznzqyCgpoxhDoweFCvbz86tUzZ/bunTWrq9uvs/H+/YsXt24NGjRo
	UP/+dnao3fb97znO076+vr6+vvS4kpOTk5OTQ6d0tj/O0hLEjp8+vX///Pn/ln3V1sbPf/bs
	kSPbth06BI5eipoyZcqUKVPojJrOBtoLmKqO9wEBzO5jX7154+Z2/bq9fY8epqYGBhkZ2Mq4
	xZS1uXOnTx837mvsq+hoLy9ZWchYAk2rr2HiALO3uXn+/FmzJkw4d2758kWLpk8/dw7mgY4Z
	XO23/frZ21tbp6eHhb175+LyT2WQPsWSJfPmTZmyfTuIn39+PrDfKyogsND59tXdu1evHj06
	ZgzaEV/73FCciWbY4vZbAxq4P2gfU1RCQkJCQgK9Xbdu3bp16779vOgQa39/eN9fex6QIKio
	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
	}

	set pieceImageData(USCF,55) {
	iVBORw0KGgoAAAANSUhEUgAAApQAAAA3EAYAAADiSAYWAAAABmJLR0QAAAAAAAD5Q7t/AAAA
	CXBIWXMAAABIAAAASABGyWs+AACAAElEQVR42ux9dXgUSfd1zUwycXd3dzdcgru76xJcXhZ3
	XdwWd3dJIBA3Qtzd3d0z6e+P+7tfs4EsspAgc55nd5hMd0931VTVqSvnEsIFF1xwwQUXXHDB
	BRdccMEFF1xwwQUXXHDBBRdccMEFF1xwwQUXXHDBBRdccMEFF1xwwQUXXHDBBRdccMEFF1xw
	wQUXXHDBBRdccMEFF1xwwQUXXHDBBRdccMEFF1xwwQUXXHDBBRdccMEFF1xwwQUXXHDBBRdc
	cMEFF1xwwQUXXHDBBRdccMEFF1xwwQUXXHDBBRdccMEFF1xwwQUXXHDBBRdccMEFF1xwwQUX
	XHDBBRdccMHFj4wrV86c2b9fTOzcuaNHt2+Xl6coiqqpYTC6+r64+DpwOPX1JSVsdmtreXlS
	kpDQ555HUW1tdXUsFkU1NGRni4hQVEtLTQ2L1dXPwwUXXHDxX0FRFEVRDAa88vB8n1fuusnF
	743y8sLCzEwWq62tra2tjTsefnbAvMZiwSuT+fnn0XwyJ4fLJ7ngggsuflVwF3ouvikoqrIy
	IUFM7H//27r10KH9+3Ny8vIKCnR1FyyYPXvy5MWLe/YcNGjy5ISErr5PLj4P9+9fvXr0qKlp
	dHRcXFLS8uXZ2Tk5BQX8/Do6WlpqakFBo0YNHdq//6NHhoZ2dkOG5ObieS9fPnhw7lyfPm/e
	eHkFBg4fXltbV1dfr6mpp6erq6kZGmphYWpqaHj4cK9eQ4ZMm1ZT09XP+aOhpaWyMjFRTIzJ
	5OXl4+PhYTJZLAaDolpaamtrawUFWSwBAQGB+nomk49PRqaqisHg4REV5XA6uh5FNTfn5QkL
	E0JRHA4vL4fT1NTczGIxGAwGk8nhENLW1tLCYBDC4bS1MZlMppCQhER9PSFstpxcQwODwWAw
	GBT14X2WlsbFCQkRwmIxmUJCcExbG4PBy8vDw2C0tXE4YMDhcJqbW1rYbCkpY+OKiq5u3x8F
	DQ3FxfHxIiLNzU1NdXVSUvz8fHz8/PX1bLaMjLZ2SQmDwWAICHzY7p9//cLCyEghoebmlpaW
	FhkZNpuPj4+vtlZAQFbW1LS0tKuf/2fH8+d37pw+3a9fRUVlZXX19OkcTlsbRbFYtAkF/9VR
	H8LnFPXPz1ksFovJ5HAkJMTEREWvXh06dMKEhQvfvOnq5+WCi85ERUVW1rt3LNbTp66uHh6L
	FgkLCwsLC6emjhkzbZqLy8uXXX1/XHwZbt26cOGvv/T0EhKSk9PTV6xISUlLy8ykKBMTQ0Nd
	3YSEUaOGDu3X7+FDAwNb2/f55KtXDx9euNCnj6enj09Q0PDhdXX19Q0NmppaWhoaqqqhobq6
	2tpqan/9NWTI+PELF9bVdfVz/mhAgzC862hNwr+3tQHfa2v7b9drf12Kguv+G09932CNrx3d
	56ev97uhqam0NCFBRKSpqbGxrk5SkoeHj09EpKJCUFBGRk+vuvq/Xr+hoagoKkpIqKWlubml
	RUaGl5fN5uWtrRUQkJMzM+Pyyf+Ku3cvXTp82MAgJyc/v7DQ0pLDaW3lcBgMcMwRwmAwmUwm
	IUwmg8FgfDgyYPwQgscDjySEh4fFYrEoSllZSUlePjx8/PiZM1es+PHtMDxdfQPfChRVU5OR
	wWbHx8fFxcUZGzc2NjY2NurqCggICPDzJycbGBgZGRnFxjIYwsIaGs3NXX2/vyq8vHx9g4Pt
	7YODw8KiosaPj4yMjk5IEBISFRURERZ2cSkuzsgIDt66VVZWQ8POrri4q++Xi4/D1fXevb//
	VlP7668TJy5f3rkzPT0rKy9v2DAmk8lksQh5+zYkJCpqwgQOh8Npa7O2pqiGhrS0P/7w8fHw
	CAgwMTl58vz5GzdOngwODguLjdXXZ7PZbH5+Qtzdvb2Dgnr3Hjy4X7/u3WFCzcvbv5/BYDCU
	lBobu/q5uxpRUf7+jx8rKh4/furU5ct//ZWTk5tbUKCsDAsPhyMkJCQkKCgj09DQ0NDYWF4u
	JycrKyXl5lZZmZX17t3Ro+Liamq2tjRBP3Pm0KGtWzU116xZtWrTpp07W1paWlpaFBR4eHh4
	eHj4+FpbW1tbWxsbgegx/w+8vPB9qakGBrq6mprbtsHV0tPxutXVubmhoYKCp09fuHDz5ubN
	ubl5eYWFvXu3tnI4HE5TE1yHhweuy2IpKysqysllZUVFBQQ8frxsmZmZk9PIkfn5Xd3enQ2K
	oqjaWhbr3Lljxw4dMjLasGHbtv3716+vra2rq6uzs5OWlpSUlCwpsbW1sjIxOXOGopqbs7Nv
	3mQw2GxV1aamz/0eIDrGxhs27Nhx+LCLCzgI+vUjhBAGIzl5zZqlS+fM2bPnwIFjxy5c8PXt
	6nb52YARjrt2bdq0fPm4cVev3r795Mm0aTU1tbUw+oA6trVRVMfbPBowXuj3IiLCwkJChEyb
	NmHC8OENDfB93t4wnlpbu/r5f3XQfDI+HvlkU5OuLj8/Hx8fX3Kyvr6BgYFBbCyLJSampcXl
	k/8Vnp5Pn16+LCBACIPBYMjK9ukzbNiMGVlZsLGSk4uPT0pKS5s9u7S0vLyysrU1Ojoo6Pnz
	9HRTUweHoUOTk7v6/rn4d7i53b9/9qyq6pYtu3cfP75+fWpqRkZ29owZdXV1dQ0NhISEhIXF
	xLS1tba2tnI4VlYU1diYng580t/fxOTUqfPnb948efL1ay+vwEB9/fr6hobGRkKkpSUlJSR6
	9LC3t7Y2MystpSiKKiq6cIHBYDDk5D5/vfxVgXxyy5b//e+PP1auTElJS8vKkpFp73AGgweD
	YW5uYqKvHxsLjs1TpwQE5OXNzWk+eerUX39t2aKhMW/ejBnjxi1bBv0gIQGfdmygFBISFBQU
	rKg4e/bo0e3bjx6dP3/Zss2bMzLwiPp6cKQePLhz59q1ixdHRcXEJCYaG7e1ockFvwEyCiBA
	oqQkMtLf//HjQ4fMzbt1+x35JOLAgR071qzR1d2wYdu2Awe2bQMDvq2tkJCgoIBASsqTJzdv
	njx569bw4WPGDBly+zaDwcenrv4lfPLy5SNHjI03bdq58+hRF5f6+vr6hoZ+/eBXk5Jy6NDu
	3evXnz69YsX69StWPHsGs/jnMB8uCKH55O7dmzevWLF06bVrd+48fbpgAfB2DkdSUkJCQoKQ
	mpqamtpaQlpaWlqAdYChEl3cvLxsNpsN/FFEhJCKioqK8nJCYN/IYgGf/Ptv+D4Xlx+dT/60
	Bkr0tPj5ubldv25svHz5mjWbN8+aFRubkJCSMnAgTJZaWgwGk8lgpKWBh+7lSz+/ly9v3Lh0
	qVu3AQMmT46N/ZSniIt/gqIoqqGBh+fBg2vXzp6dMqW2tra2vl5cfMaMRYvmzr106cSJAweO
	HnVySkhISkpPFxKqrKyqqqnh5X31ysPD33/ePA0NNTUlJT6+mpr8/IiI9etFRBQVLSyKi3Hh
	6ShSi4vOAfbD+fPHju3cOW9eamp6elbW0KGTJ0+dOmMGISNHjhw5ciQh8+fPnz9/PpPp5vbm
	ja+vg8Pgwf37d++uqhoTEx+fnDx2bGBgcHBkpL7+5MnTpk2fTsi4cWPHjhtHyIIFCxYsWCAs
	HBkZE5OQMGVKQMCrV97ejx/Dt0dHd/Xzdz0YDEJ0dHx8/P3fvRs69OXLN2/8/YWFBQUFBQUF
	aYNHc3NTU3MzIRMmjB49aJC0NJx3/TpcgyaUtbX19fX1RkaPH7948ebNyJF5efn5xcUCAvz8
	AgL8/LC8gScOFriGhoaGhgZCVFSUlOTlLSxUVZWVFRTu34er0QbKtra2NoqSlg4Pj4qKjx8+
	/M6dhw/d3PT12Ww+Pjab9vABUSJk0KB+/bp3NzDo1at7d1tbHR24yu9HKF+9evDg1i0np0eP
	nj9/8+b48cjI2NjkZCMjNTU1NXV1Fquiorw8MlJDIyQkIiImRk2tvr6hoampoADO/nTEkI+P
	q+u1ayYm+/YdOXLu3KFDcXGJienpffsqKSkpqagwGOXl5eXl5Zqa1dVVVRUVsrLz58+cOX78
	ihV//33p0p07fn7c+fdLwGCAwV9AoKiouLi0lJDq6pqaujpCbG1tbW1tCTE2NjExMaHHF72J
	A1qJ4y82NiYmJoaQd+/evXv3jhDYAAARbW0VEHj/HC6+PXDde/z45s2TJ9XUli5dtWrTJheX
	xMSUlPT0IUPgKE1NeE1PNzTU19fWfvHi+fM7d86cOX58yJDx4xcsyMrijp+vA4fD4XA4w4ff
	u/fkyatXixfv3bt166pVe/fy8PDy8vBkZtbX19c3NkpJPX/u5ublpaAAkcUuLrW1hYVxcVu3
	CgvLyxsZlZV19XNw8U/guLp48eTJXbvmzy8qKikpK5s+vby8oqKqij4ODJZMJuwT7O0HDQI+
	GRsLfNLPLygoLExfHyLV6fPy8goKiorExCoqqqqqqtatCwvz9vbzi4+HT729u/r5ux4MBoOh
	oxMdHRublLRggauru7uvr7Aw7Ivpo8ARQIiYmJiYiEhiIvTbnTvwKc0nYRwaG/v4+PuHhMyf
	n5WVm5ufLyCAfK89wMBIiLq6qqqSUkODsbGBgba2hwd8ShsoAVJSmZnZ2Xl5s2cDP9LXB4f3
	+7GdbW0URcjgwc7OPXvW1o4ZM3z4gAHPnsGnvx+fBMOhkdG+fUeOnD27b19iYkpKRsagQeBQ
	YzLBoaapCRlw5ubw96IiOPtz+OSLF+/zSX//t2/Dw/v2BcMZ5Enx8GhqKikpKsrJqatnZGRm
	ZmdXVsLvx9eXux5+CRiMpqbm5pYWISGY1xgMHR0dHT09Hp6tW7du3bqVEHd3d3d3d0IuXLhw
	4cIFer/Gz8/Pz89PyNy5c+fOnUuIs7Ozs7MzIXheSkpKSlISIXh9/L6ufuJP4ac1UD59euvW
	qVPKyrduPXjw4sXJk25ur1/7+dnbM5ksFg8PD4+0tLS0tDQhpaWlpWVl+vqhoRERsbHa2rBA
	WltXVlZWVldPmQJXy87u6uf5mVBXJyBQXFxcXFY2ffrVq3fuPHliZ5ecnJaWmamuLiwsJCQo
	2L17c3Nzc0sLL6+jo6OjgwMhCQkJCYmJPDwXL1679vDhtGlNTU1NLS0KChcunDixa1dqKqR+
	MJk3bpw7d+BAdLSUlISEuHhKioaGurqyclmZrq6pqYlJaiqDwWYrK9fXd3Ub/NpgscAQJi0N
	qaEMRl1dXV1dHe2RgY05IfX1HA6HQ1HgSWUwIKKSweBwIMS8oQE22hUVFRUVFYQ0Nzc3NzcT
	Ii4uJCQkpKgIIeiqqvC9XAMlGDAYjJaW1tbWVkLExcFztmXLli1bthACBiZC9u3bt2/fPtzY
	EQIRkR1dExa+5mYGw8DA0NDQkJC1a9euXbuWED4+Pj4+PkIg4pyQffv279+3j5Dy8pKSoiJc
	wD5cyIDQYn8TAqnDhPz5559//vknISIiIiIiIoRs27Zt27ZthLS0tLa2tND309Wt3NkAwsbH
	d+TInj3r1y9YEB0dF5ecbGq6ZMmSJS4uhMybN2/evHmEBAUFBQUFEbJs2dKlLi6ysu7unp7+
	/n37wvmvX38qpSk+PiEhNXX8+Pj4xMS0tH79ZsyYOXPOHEJcXFxcXFwIgQwDQubNmz9//nxL
	y7q6urr6+s2ba2pyc8PCZs6Eq9CpdVz8O9DsyMPDw8PLS4i2tra2tjZERDIYhEyZMmnSpEmE
	9OjRs2fPnrRBEuHj4+Pj7U3Ihg0bNsTFwflaWoSUl5eVlZV9eDwX3wcQYaKsfPXqrVuPH585
	4+np6/v2be/e1dU1NbW1bDb2M/SHnt67d2FhMTEaGhA5bmTE4bS1cTjz5sHVcnK6+nl+NkAE
	sYYGOC579ABHp6oqGDRu3AAewsdXXFxaWlbGy/vsmZubl9fChfz8/Px8fIRERgYEPHny11/m
	5k5OI0ZkZnb183DxPkA7lKKkpWFf0PGMBv1bXV1QUFhYUlJXB3kd/PwUBYapjgDjUloaDFqi
	ol39xD8WGAyITCUExtGHR7S2goESU0P/jU9SFIOB+wLoz0/fATjaGIyOVjReXh6e97+/sREc
	8MhvP7xf4Mf4fF3dwp0N5JOHD+/Zs379+vVZWTk5BQVDhmBEMgIDBMCwKCurpqaioqj4+Xwy
	Li4xMSVl/HiYj/v1g/WQ/hz2FYRkZ+fmFhTo6VVV1dTU1m7aVFublxcezuWTXwsWCzIVBw8e
	NGjQIEKGDBkyZMgQQnr2BB4pJSUlJSVFyKVLly5dvEjIrFmzZs2eTcjKlStXrlxJCEihEBIc
	HBwcHExIenpaWmrqzzdSfjoDJUVRVHOzgMCGDatXu7isXg0eITs7dXUNDU1NHp5du3bt2rWL
	EEND2IjHx8fHx8fjxpmH58WLV6+8ve3sNDRUVZWVV6+mKIpqalq3jsFgMPj43h/aXHQEKanG
	xsrKqqrq6qSkpKSUlIyMPn2ys3Ny8vNdXDQ01NSUlRkMQUEhIWFhQrA/IiMjIiIjCdm5c9eu
	Xbt4ef/668SJixcHDRIWhlQ2FgtS3GDCrKuTkZGWlpRsbpaTk5GRkioogJD+pKQLF44f37nT
	39/W1tra1NTHx9jYzs7BITaWwWAyZWS4KR3/FRjyff/+lStHj96/r6Wlrq6qOmwYeGwUFW/c
	uHHjxg0wUDEYhEyePG7c0KHx8ebmJiYGBnl54KG5c8fMzNhYT2/iRDhPQQHPA0UMinJ0tLbu
	1+/WLdAQ8vPr6uf+cUDr61AUhOYLCRHSv3///v37E1JQUFBQUEDIoUOHDh06hEROWNjHx8/v
	3TsXF3DcwGhiMtvaCguLikpKtLXb2jictjYeHnl5eXl5eUKGDx8+fPhwQgQEBAQEBGhP3JUr
	V65cuUJIaWlRUUEBDw9IM8yeDZFCPXpgkYKAgLdvw8LExGBjLivLy8vLy8v74QJ68ODBgwcP
	0s/ze4PFqqysrq6pERFBqQSMtJORkZGRkSHEwMDAwMAA+kVQkMHIyMjKys3FFNJPaUKx2SdO
	HDiwaZOKCm4c9PX19fX1CUGHna6unp6eHiHi4uLi4uJ4tpYWRNriX7iE8nOB2y0WCzZYCxcu
	XLhwISEpKcnJycmErFy5atWqVYTs379///79hPTt27dv376EvHnz5s2bN4T873/r1q1bR4id
	nb29nR0hOjo6Orq6hOzbt3fvnj1d/XS/PiiKohobgU8uW7Zmjbe3v/+7d336VFVVV9fW8vJ+
	7HiKIqSqqrq6pobNBkNmnz76+rq6mppr1nD55NeBogihqMJCmLfq62Ni4uLi4tTVt23bt+/U
	qbVrQToBikYRQkhSUmpqRgYPz+nTFy7cujV7dkJCUlJamq3tuXPHju3Y4empoCAvLyvr7Q2R
	W1lZRkaWlubmEIne0lJfz2Cw2Roan2Na4eK/APnko0c3bpw4cf8+8PhhwyBQRFERDVLS0lJS
	EhKEDBni7NyzZ1ZWnz49etjZVVSAYeT5cysrc3Mjo/HjX7xwd/fxkZbG60tIiIuLilKUurqq
	qrLyjRuamurqKio+Pl393D8jMIOmqUlY+M0bb+/AQBeXp09v3z51isWCT+vrwRClqAhnfDg/
	dnxtSGEVEREWFhScPfvFi7t3z5zp0QMCGZhMd3cvr8BADge/H++Hi38Di1VdXV1dWysq2tjY
	1PRvu9/WVjAQQ4Qqznuf5pPHj+/fv3GjigpKKnQENCSDCVpLq66Oyye/Bu/v/traCLlx4+bN
	mzcJMTQ0MjIyImTcuHHjxo0jZM2aNWvWrCFk0CAwYBobGxsbG9MBJ3fu3Llz5w4hN2/C+f8U
	Svh58NMZKKurc3OjokREkpNTUzMzbW3Bgs/Li6GtQ4cOHTp0KH28pqampqYmIWlpaWlpaRg5
	xMsbH5+UlJpqaVldnZsbHY0hr1xC+SkA4WhpmTVrypTRo7284G8zZsjLKyqqqAgK1tQ0NLS0
	0JpaUlJSUtLShPzxx5IlS5YQoqSkrKysTMjhw4cOHT5MSEpKampKCiGKioqKcnKEqKurq6ur
	CwlFRUVFRUUJCUHkq4QEeMoNDUHLbsQIS0szM0PDgoJu3eztg4OfPQsL8/F5+PDoUUvLHj1G
	jUpK4oaW/zdYW1tampgUFBgbGxpqa5eXQ8qpomJZWVlZfT0hJiZGRjo6ra329tbWpqYRESIi
	yspWVlVVVVVeXgEBIiIYQYuGK0lJSUlJSUKqqysry8sZDHFxMTFRUX5+GRkpKUlJrsRCR8Bf
	MC4wSASQ2L9+7eUVEKCkFBUVE5OQsGoVjDv0VNORroWFRUWlpYSYmn58ocLr4fdABAMPz+7d
	hw79/feIEZDK8eF5xcUlJZBYx2Ty8NDXef967z/H7007GxthAxUfLyoqLCwgMGzY6dOnT58+
	TUhxcXFxcTEhAQEBAQEBhLS0NDc3NjY1DR7s7DxkCBYV6liMHua75ubHj2/cOHHCyws85ZMm
	Xbp06dKlS2x2Wxv8bmJiYmNjYwnJycnOzspqbNTX19JSVLx5U0FBV9fIqH3KFRefAo4XioLf
	OxqaZ8yYMWPGDOAba9YQsnr16tWrVhEyatTIkaNGEfLo0ePHjx8TYm1tZWVlRcjOnTt37txJ
	iKurq6ub289LKH82VFfn5sbGCguDgcvSEiJEPn/jjceDRqKlZU1NXl5MDJdPfikgFfHdO9CM
	LyoCw4WGRkhIeHhMTMf9UVZWXl5ZKSj47NnLl15etrYQ2WppKSUlKSkuPn8+GL4KCtTUVFQU
	FHJyYF6MjHzx4u7dv//OyDA2NjbW13/5UlXVwMDJKT+fwWAweHh+XE2unxXA13NyjIwMDHR0
	ysuDg0NDo6MVFTECS15eTk5aurXVzs7a2tQ0OlpISFHR0rK2Nj/f0zMgoKUFI+rag8WCTA7o
	b35+GRkZGS6f/HJgJgwE8CgpBQWFhERGvs8nYT2CAASKAj75+fFYyCf37Dl06OxZmk/iGgd8
	kaLKy8vLKyvp++Hi39DYqK6uqqqoGB+vpKSgICc3bBgEDH14pKSkhISYWF2dk5OdnaUlZoyi
	6vWHEZTIJ8Gx4OUFjoVJk2C+ZbPbHy8oKCDAz49a9jdvysnp6HD55Jfjfc7HYBCSkZGRkZFB
	yPLly5cvX07zwsmTJ0+ePJkQOzs7Ozs7+pxbt27dunWLkBUrVqxYsYKQoqKioqIiQsTFxcRE
	RLr66b4cP52BErUy+PhA6wxD0SUkIBWyI+DnsKBB6HNjI4jPf2yAcvHvsLIyMzM0lJSMiIiJ
	SUpis/fs2bNn715asnX69OnTp08n5PXr169fvybEyOifHgB7e3t7e3tCCgsLCwsLCVFQUFBQ
	UKANWX///ffff/9NyJEjR44cPowRRYSUlJSUlJQwmffuPX786pWSEoSuL1jg6GhrGxrq6Dhw
	YHR0fPzBg1VVhYXx8Y8eiYnJyxsavh+UzsW/gaKamzMzhYQ2bPjf/3bvnjULIpQNDPr06dOn
	b19CLCwsLCwsCLl48eLFCxd4eM6du3Ll3r0lSyDiREbmxImzZ2/cUFPLzMzJyc+XlFy+fPny
	FSsI6d27d+/evVGDkpAnT1xdPTzGjVNTU1FRUoqPh4kXiuVwNWEBYGaEf6PBT0VFRUVFhZDF
	ixcvXryYEEi9/3yiiOOwfQoPGpJHjx49evRoOvLuc4EpBUpKSkpKSnREJs4H9LP8bEkG3wb4
	u05KCglxczt/HqqVysrevfv48cuXY8a4urq6urqKiqJmk46OpqaqKkUpKiooyMnBxvlzxgVs
	yDMyQEuqrs7b28/Pz4/N9vPz8/PzI0RWVkZGUpKQ7t0dHCwtHz2CCKODBxkMBkNK6tevfgqe
	aTY7NTUqystLVTU5OSUlNVVVFaolWlhAJKSwMDhY/P11dbW01NWLizU09PQMDDIzBQUlJLS0
	amrweu8nrL2v5YoRxNu3b9++Ywch06ZNmzZtGiHbtm3fvn07IX369OnTpw8h27fv2LFjB+3I
	e98wCYbPjz9HXV1FRWqqiEhGRlJSYqK6enJyampGhqwsHx+bzWY7OYHGGIPBx8fLy8sbGami
	oqqqqhoXp6Njbt67d3Y2pE5yi7vw8bHZvLzNzWAQq66GdoHPPmcVwt4CzdCGBpinuXzyS2Fi
	YmSkq1tZCfNRZiam0LdP8cQMAFxfqqqqqqqqQDqmpYWQnJy8vIICHh54lZSEDAFJyZiYhITU
	VCMjGKvOzvLysrJv3rS2mpoaGenqpqZ26+bg4OPj7h4TExT07Nn168bG9va9ekVHMxgMhogI
	N9Lya0FRFFVYKCDwxx/z5q1cOXr006dubp6eenpomESAZj0Pz/nzV68+eLBkSWlpWVllJT//
	4cOnTl25oqoKUgqSku2vX1paVlZRQQhcd9w4NTUw2HD55NehpKSsrKKCwYDXjo76cg6H/Q1F
	er7ddX9X4O86MTEkxNX1/PkxY4YPd3aWlb13D/gktDMtdSAuDpHGUMW5oOBzq5/LykpLS0pm
	ZEBACfJD2kAJ1yPEycnOzsLi0SPQrAc+KSn5e/BJimKxCgvT0oKD5eXT0tLS0tOlpcPDIyPj
	4pqbIQNNRASk6ihKVVVFRVm5slJd3djY3h40qwUE6JmQHgH/HAvKysrKSkqwv8L45Y9BUVFR
	UUGBPg4NlJ9yd0MmCZudmRkbGxioppadnZOTlycunpGRmZmby2BA6n5NjbW1ubmxMZutpaWj
	o6lZWionp6Fha1tY+Lm/py/FT2egFBRUULCwqK7u27dnT3v7uDh//6CgsDA7uzdv3rzx8KBz
	9dEgWVpaWlpaSsiLFy9evHhBE1JHRzs7c/PsbDExZWV5eS6h/FJoampqqqiIiLDZ4AsLDw8P
	DwsjRE1NTU1Njd64HT9+/Pjx44TY2NjYWFsT0r179+49etCGFnxtj1mzZs2aNYveyGGRkAsX
	Llw4fx60Fy5dAkNzUxODAQYvU9P09MzMnJyTJ2Fg6epmZyck+PgcP66qamDQsye3anhHQDHz
	U6cOHdqyZdq0R49evPDwmDNHX9/Q0MSExcJ+VFaGCFg5OVlZWVlCduzYuXPHDhkZWBCXLKmu
	rq2tr4ciOgsWELJqFaQ4ioqKioqKgido2TKILFq3jp//yRNX1zdvFi/W0dHSUlV9+xbuhitu
	3pFxQktLS0tLi5AdO8Cw8aXAcdleCYjNhupvqIX4tRFcGDmdlJSUlJTU1a3440FPz8Zm0KDU
	1Ly8pCQ/v/374+ISE1NTHR1B90lUFA34169fu3b1Kj+/r29AQEjIuHEUVV2dlPTiBYMhKqqn
	9355AQCmUG3cuGbNwoWjRhUUFBeXl0tIYIr9/fv379+/T0hLS2NjdXVDw7JlCxdOm/b4sZPT
	gAGTJ3e8FfnZgfNaYODr13fvGhoeOLBjx7p1ixb5+799GxZmZ5efX1BQXKyrC1pNQkJg1gMN
	XooqLoaIq4oKY2NDQ13duDiIKHB3J6S1NTv72TMYJbAB/th4efv27du3b+kIWfR4FxUVFRUW
	0p+PGTNmzJgxhNAm/ffR1gbfJyPz6NH16ydODBu2Zcvmzbt3OztDCqSRUVZWTk5+voQEiDvI
	yKBLAMpr1dXJysrKSkklJHTrZm/v6hocHBDg7n779unTjo79+0+YEB//u2Yc8PHJypqaNjWN
	HDl4cN++BQVQPZYQaM9Pny8mJioqLNzc7OBgY4N8UkGByye/FKKiysrW1oWFkCr/+jWk7trb
	gwFKQAAiLAlZvnzZsmXLCAkOhmJSjx49evTo0YfXw/Vs3TqQUHB2BomU1NS0tNRUJtPDw8PD
	05PN9vb29vbyMjT08QkICAkxMICN9ujRPXo4OYWFnTiRm5uQ4ONz8aKysoFBz57cIjyfC5x3
	z5w5fHjr1hkzoOjf2rV5efn5RUUfRsSiIdrXNzAwJAT4ZGbmunXl5ZWV1dWgQElR6Dr4EJBR
	x8//9OmLF56eixeDY4nLJ7n4taGvb2MzeDDwSX///fshgtLRMTU1PT07W1QUeXxOTm5uQYGw
	cFhYZGRc3MyZwCe9vT/FJ6H6+6hRUAzzwxAwTU01NWXlhoZlyxYsmDbt8WNHx9+DT8bHv3vn
	5qavD1XnBw0CzfcJE1JS0tOzshQUcnPz8goKmpqgeI2ICNTUaGuDSPG8PMik8va+f//atWPH
	XryAq0dGIp/EgI5evXr16tWLlsqysoKMm9zc3NzcXFoqCCXAevbs2bNXL0LOnTt79tw5Qlat
	Wr169WpCIiIiIsLCkKOiw0ZICKTczM3XrFm6dPHiIUPAftKrF0RIKylBMTMmEyQEamqgeCof
	n7a2pqaaWkGBgYGurqbmnTuxsW/fvnjh5mZkZGc3eHBi4rfikz+NgbK8PDs7PFxODoqodOsG
	HlYtLfSc+vr6+vr4EJKenp6enk53ZFZWVlZmJiGhoaGhoaFQ7YjNbmoCTZukpPj4d++iohQU
	GhrKyzMyWloEBCQlNTS4qTmfAoi4BgRAcY3cXDCYKCv37t27d69eEDmyfTtE2l28CJoId+8S
	4ujo6OjkREeydgTUSPunVhpEjv3xByGjR48aNXo0IQ8fPnr08CEhBw4cOHDwICEwkYqI5OcX
	FhYXL11KCCEUZW6enBwW9vLl2rW6ulZWAwcmJHR1+/1o8PB4+vTyZWfnW7fu3Xv+/I8/eHh4
	eQUExMV37YLUQzSMIRYsAK010BqhDWZ9+4JB+X//+9///vc/2jCJmDhx4sRJkwjx8vLy8vYm
	5OVLNzdXVxUVEL13camrKyiIiIiMFBJSULCwqKzs6nbpbICBgaJ4eXl4eHkpqqampqamBuax
	rCxC9PRAQxANgd8aHRkwvxQ4D1dXV1dXV0OEJg8PReHzdV0L/xiIjY2LS0rS0QFCICVlY2Nj
	Y2NDaxii59PT8/VrN7c+fW7fvnfv2bPeveFsrHpP482bJ08uXbKyCgh4+zY8fNQoa2sbG3t7
	uqpffT2M0/Pnz549dUpAADTclJW7uh2+N6AokYVFYOC7d5GRFy6AIcLMrLa2rq6hgcHAyH3U
	6GQyIYKusrKqqqpKVjY4ODw8Lk5WFhyhenoeHt7egYFDh0I7Dx8OhhQ5ufbm/KdPnz59/JiQ
	LVs2b968mZDhw0eMGDGCkEWLFi1atIgQTO3fvBk+pyOaMWUcrgcOVWPjNWtWrty27dw5Dw8f
	n6Cgfv3AIQRmGH5+QuTk5OXl5AgRFRUXFxOjq51CxoGQUHR0fHxKirU1pFZaWQUEBAdHRFhZ
	KSjcuvXo0dSpcNdpaV3dX50F5JM3b54/f/Bgt24hIRERsbFaWlhM4nMhKCggICDQ1ATxk0lJ
	iYmhodHRXD75pcCIoOPHDxzYvPnNG4g8mTcPDJQaGgoKioqKivQ4srCwtLS0JCQ/Pz8/P5/m
	92jowo05FOEjRF8ftH0dHBwdHR0JGT9+/PgJE+C8kBBCjh49evTYMXB0u7qqqkJmzoYNMF4s
	LDw8nj69dOnEiT59hg2bOfPtW25k3r/Dy+v586tXnZ1v337wwNX1jz8SEpKT09PfZ/IfBxRT
	IYTBYLHYbCZz7969e98vBnj37t27d+/SxeTaS8pAarKKysuXHh5+fmvXVlXl5oaGxseLiSkr
	W1v/fgEKkKBNUci/uvp+vhW4fPKfiIuLj3+fT7YPMMBiOcHBoaFRUX363Llz//6LFx3zyYCA
	V69u3uzXLyjo3bvIyIkTaSmnfwIcvAICyclpaVlZvz6ffPHi3r2zZ3v1evbMzc3T88gRyDA0
	NCwoKCwsLubhwarzHQHGo4ICFBO2sPDzCwwMDZ09GxyjL15AwJeiIu7vBg4cOHDgQNqehVKF
	uL9+/vzZs2fPCBk6dNiwYcMI2bt37969ewmxtITj8fzo6KioyEgsRqWsvHnzunV//HHsmLu7
	p2dAwJAh8fGJiampYmKwn8eiZu3vXk4ONEwJAT6toqKgIC8vI2NpmZKSkZGdPWPGiBHZ2bm5
	y5fD8SAB+EsBLdQJCSEhbm5GRlevnjmzd+/KlatWLVkya5avLxTfqKnh4eHhYbE4HFVVVVVV
	VYo6e/bs2bNnKQqqBFP/H6DBRlHXr1+/fv06RcEGn6JAk6GysmdPJycbm+joP/6YN2/y5Js3
	//77yJHt25cuDQ729HzwQF0drvI9TAE/N1JSwsNfvTIxGTZs4MDevXNyIMWTokADgW7/5OTk
	5ORkinJzc3NzdaWo1lboj2+FwMDAwMBAirK1tbGxsaEoCHGmKD4+fn5+fooCbQ6K2rRpzZpF
	i9zdk5MjI93d/y1I+vdCbm58vLe3uvqyZQsXTp8eGKigAO0FhuVPtz8YoChq9erVq1evpigD
	AwMDfX2KgohlUGYD7/c/ASmnFAURmRQFnrjCwmPH9u3bsGHIkK5ul65CcXFqakCAjMyOHRs2
	LF166xZEcHE4lpaWlpaWFOXn5+vr69txu3YV8H7Ao0dRJiYmJiYmFAVFszic3bs3b16x4tYt
	fL6ubucvRU1NYWF0tKRkaWlGxrt3mpocTmtrQ8OHWjyfArQWg3Hq1F9/bd68axeI+1PUkSNH
	jhw5QrcnbLgpysjI0NDAgKIWL54zZ9KkJ08oqr4+NZU2+VNUW1tOjqjo9u1//rl06f37hoYG
	Bnp6FOXl5eXl5UVfD6Q2KEpdXU1NVZWitm793/+WLLl3Dz7l4/u652CxKitzcyMi5OUrKnJy
	wsJgvWxp+TfXU+fg4sUTJ3btsrPT1dXWVld/8QIisCiqW7du3bp1o6hr165du3qVXp8g04Ki
	ysrKykpLKQocAnQ7QpE9itLV1dXV1aUoMTFRURERioIUUYoSERERERamqEmTJk2aNImirK2t
	ra2sKGrLli1btmyhqNra2traWro/8D1+bm1tbW1tTZ+P18Pr4/fp6urq6unR94P3h/eL94/P
	g88Hxa8oytHR0dHRETasvLwcDnjCnzy5evXMmX37bGy6ut++NXC8JSSEhr58CXxy376VK9es
	Wbp0zhxfX9DGq6lhs9lsXl7cWryfZP/vrxgpANIKlZWQ2RMd7eKyYMHUqTdvQtGWpUtDQry8
	uHyyY6SnR0d7eCgqTps2YcKIEbdvCwjw8/PzY9kHej2ByBF6HPn6wnoIjoYP+wd5ac+ePXv2
	6EFRkAlCUTk5OTk5OfR1KirKy8vLKWr//v379+2jKNCSpSjQVmttBUmO1NQrV06f3rNn2LCu
	bq8fFTk5iYl+fnJyy5YtWjR9uq8vGJo/fzzhq6mpqampKUWBo5PuJ5zPIFOu4/NNTAwNdXWr
	q2H8jR7d1e3SVUC+tXv3pk0rVty6pamprq6s/OXz3I/yivePz1NSkpYWGPhz88ngYOCT9fVf
	zicRJ0/+9dfmzdu3Q8p1x+0nJCQkJChIUS4u8+dPnfrkCUU1NKSlvc8nKSovT1R0796tW1et
	evIE1rWOr4e8BPjn3btfyyfb2lpa6uuZzLKyjIy3bzU0ysuzssLDVVV/lPXy5csHD86d6917
	5MghQ/r2jYsDx+S3+12Dhi6HY21tYWFs3NwMjmnaXnX48OHDhw9TVL9+/fr160dRYMCkz8f3
	/fvD57ifwPNB+oeibGwsLExMmpvx+77V/cM6SVGjRw8b1r9/XNyrV48eXbjg5NTV/fbN0NJS
	XZ2UJCQEC8rIkVAdOCICNhhtbZKSEhLi4vQGAVIRaUMHGiI7AnjgKCokJCQkJISilixZsmTJ
	EooCrTWKkpSUlJSQoCjQUGho6NHD0dHa2svrwIEdO9audXHJyoqL8/H5+SbC74V586ZPHzfO
	ysrAQE9PUzMzc/z48ePHj6eoysrKysrKzjOMYL/jBi00FPp36dKlS5cupQeuoqKCgqxsQ8PC
	hbNnT5y4fn1bW3l5fPzPKBv7bYAT/+nThw5t2bJzp7a2pqaqalsbaIRSVFXVl/UjROrQG2yo
	KkZR/v7+/v7+HfcbFK2iJ9DhwwcP7tPn6tXq6pyc0NBPe9x/VcB8o6S0Zcu6dX/8cfu2qqqK
	ioICh4Pt6u7+6tWrVxQFGpS0waOrXp88efLkyRN6ftbQUFVVUuJwwNB6+3ZOTkKCr6+SUle3
	6+eColpbs7PZbIjY79dvxoxJk0aMuHJlzpxp08aMiYs7eHDnznXrzpyJjg4IePLk/djiT12X
	oioqhIVXrFi8eMaMly/V1MBg2H6coKPNxcXFxcWFooC4VFXdu3flypEjI0bg9Tw9nz27fHnE
	CKh6WlU1c+bMmTNnUhRETNLXww25paWlpYUFRcHzxMQAIfyYyMbHkZmZkODvz2YfPrx79/r1
	ixfDOhAcDBvS2NgLF44f37lz8WKYX7+cqP5XpKdHRrq7a2nNnTt9+rhxoaFQXI3e0KakpKSk
	pHz5OtPa2tra2kpR0dHR0dHRFDVz5syZM2ZQFGjc0YYqMPxRVN++ffv26UM77J4/f/78+XOK
	evr06dOnT+H9s2cUdfv27du3btHH4/l4Pbw+FN2hvx/v50uBG3zwrFOUoKCgoIAARc2ePW3a
	mDFv3mRnx8V5ef0847QjtLRUVSUmCgmdP3/8+M6dI0dOnTphwrBhERGQktTWhoQajv72r9iu
	4KBpaOjVq1s3W1svr0OHdu1at87FJSsrPt7Xl8sn4VfJYu3fv3376tXr1kF7oSYX3Z7oyIyI
	iIiIiPjw9wwZHp/uF4g5pignJycnJyeKgmqnFAWalhTV1NTU1NREBzRgAAQYsCnK1NTYWE8v
	JGTQoP79e/bU0+vq9vtRAL3BYBw4sH37mjVLlmhpaWioqGDd3y8fPxBRTlEbN27cuHEj3S+I
	8PDw8PBwigJN7Q/Phwi7tjYwKFy9WleXnx8e/vvyyZychAQ/PyUl5GPtDZW43piZmZmZmVHU
	hAkTJkyYQFG4r+usV9yP433hK6TE/pNP+vn9POsURVFUXR0Pz8GDO3asXWtuPnPm5MkjR166
	NG/ejBnjxgGfXLv26/hkY6OgIFzn2jUQw/j0+EI++eDBtWvHjo0cidfz9n7+/MqVkSP79u3Z
	08EBU787vg7ur5EXl5SkpwcFqap+7v1nZMTH+/mx2Xv2bN68YsXs2QsWzJw5YUJIyIIFs2ZN
	mODvD4782bM5nLKyuLjO55M5OfHxXl7a2suXL1o0fXpoKEQ+dp5BHvLYPuSF/3b8+zy0s+4T
	X7F9pk+fNGnkyKtXIYL9J553KYqi6uv5+IBI/vmnnZ21tZlZebmQkJCQkFBbG5RRh4iHa9co
	KjU1NTU19cMF60uBG0C8HhKSUaNGjRo1iqLExcXFxcQoCiIMmpq2bVu/3sXl4cOsrNhYT8/P
	39D9KoBWYzJhgu3ZE7QU3N179OjRo3t3Dgeqbn99f3xr4EYQfkf0ADI2NjDQ0WloOHXqr7+2
	bFm1ColVV7dvZyM42MPjzp0ePYYOHTCgZ8/MTIxA8PT09PT0/Pp2T0xMTExMpCgogkRR8Pvo
	2DAQGRkZGRlJUZqampqamhQFGlSlpQ8eXL169Oj06V3dTl2NvLyEBB8fJaVt29avX7Lk9m1w
	oLS2gtYrbWgYOHDgwAEDKGrAgAEDBgyg//7++45e3z//Y9f5t+OdnZ2dnZ0pCorjUBRUFWxt
	3bVr06bly2/fLihISvqZiCQCqmEbGPTr17u3o2NIiJmZmZmpKUV17969e/fuFGVkZGCgq0tR
	f/65atWCBUePUhRFlZYKCHzquvHxwcEvXujpDRzYt2+3bvHxuFEGjcIPxwdGiOvp6enp6FDU
	kiXz5k2e/OABRTU3Z2UpKW3YsGrVwoUPHujp6ehoa1OUh4eHh4fHh9cBKQ6Kmjp16tSpU5Gg
	Zmb6+rq6Xr/u4PCp+8b5//jx/fs3bvzjD6jGWlior6+vr6dHUVpaMH6dnOztLS0rK2/fvnjx
	0KEFCzq73+7du3z5yJH16w0N9fS0tDgcVVUYJ6D1+O3WF3TEQYo2HamFBBGkSSgKiuWAA1RS
	8sNX/ByPx/Pxenj9b+34g2rxFAUa0BCpqafX2nrv3pUrR492fr99K1AURdXV8fGBofzPPx0c
	bG3NzcvLobgipuR2PnHHjZyenra2hkZTE0ScAJ/08vr9+CTCx8fV9do1Xd1u3RwcrKyCgjAl
	tX37ocEKik1RFGjqUhSkutHjpf15n3rFcbh169atW7dSFBTdoTMC8HtwvYXzOBwYL8HBN26c
	P3/gwJAhMKp+Px6JCAnx8rp3z8nJ2blPHyenqKhPbaQ/91VWVlZWVpbm8+0BxTTBIfAxw4GR
	kYGBtnZp6cOH168fP87lk/n5SUm+vkpKO3cCPwOHQGsr9teuXbt27dpFG+zR0fm9X/H7oPow
	3X94f3i/PyuffPToxo3jxw0Mund3cLCy8vODgIy2NlwXoDjYP/lkWdmn+SQU9VJVHTiwb9/u
	3aOjsd0+9YqGpLlzp08fO/bCBYqiqOpqSUnIVL1wAao+f/447d27Rw87u8rKgAB395s3+/X7
	1H2355M6Olpa6uqFhSD9BvM9i0VRoO0MfPKvvzqfl9y9e+nS4cMLFpiZGRvr67e2fm57fK9X
	XAcxo2DYsGHDhg2j3+PnXX2fhob6+traJSVXrpw5s3fv4MGd3W/fDA8fXr9+7Fi/fvb2NjZm
	ZhkZGMm4e/fu3bt3Q8pSWdm3I+afAqasXroEKa5KSkpKysoUBamWjY07d27cuGzZ2rVwNM9P
	o+H5XwGaFNbW4JFMTjY1NTU1MaEo0ILpvP75XKBnHT1zhoaGhoaG9Iawf//evR0dMzJevLh7
	98wZe/uubt/OAkVRVG2toOCBAzt2rFlz65acnIyMlBRFzZ49e/bs2TRR+K9wc3Nzc3OjIx8w
	sgs3AAh0FEBVaooSFRURERKiqA0bVq1asADEAhobBQW7ut26GuXlOTkhIWpqK1cuWTJzZmgo
	pqzKycnJyclRFFRXpyPkMCUcX/Hz9q8dfd7+Oh2dj9+PkWqrV7u4zJ4dGlpZmZcXHq6m1tXt
	9qWAXyWTCZ7bHTsMDPT0dHSamp49e/bs2TOKKigoKCgooKjBgwcPHjQII37T0tLTIyNfvzYz
	+9T1nz27ffv06UmTYONUXY0Rkh1FxKFhcf58yBiA87Kybt26cOGvv3btghTVrCzcuGNEbUfA
	1A9wvDU0QCr03Lmf1y48PKNHDxvWr9/58zY2kJKMkSyYQq6jo62tpUVRI0cOGdKv38aNndtv
	PDxgyL92DVML58+fP3/+/P/u0OwIoBFLUevWrVu3di2dQjVv3ty5c+dS1K1bN2/evElRN2/e
	uHHjBkXduPHP15s34XM8XkgINtoYWV5bC9f/1sD2mDNnzpw5cygKqnRSFGwEz56Fo7o+Vf9L
	8fDhtWvHjvXt6+hoa2tunpHRPhXqR3mFjXdjIzhyfj8+ib+vkycPHty0ae9e0LL6MHKy/Ssa
	UqD4AEXhhvZT533qFQ1c69eDwbO9ofLGjRs3rl+nDWZsNkSojB8/atSgQcnJPj6urtev29p2
	dbt2NigK+CRE1N+6Bf347ceLg4ODg4MDHVCCwP0hbtTbn4cpqCDxBHyyro7LJysrc3PDwtTU
	Vq92cZk1KzRUSAgivvfv379///5vv958LlavXr16zRqK4ufn42Oz3+eTcL9d3W5fCngqJhOK
	Re3YIScnKystTUtXtH+F/XVaWlpaZKS7+6f55N27ly8fPjx4MGQyokrk548rPT0dHQ2N5GTQ
	Yt62DRwvyclfeh1czy5ePHly16558z6vXXh4xo4dMWLAgPPnMUK9/XUxEwGO62w+yWKBFNK5
	c8iPPrc9+Phgf6akpKioqEhnlikqwnuM5P/SdsbIZgz4wQw2tHfg5196XYy4xEAlPT24X7x/
	fJ7PvZ6EhISEmBhF7d+/ffuaNefPfy2/6TJCRFFVVYmJ4uKrVm3YsHfvmjWxsfHxKSnq6rCh
	IGTlypUrV6wghI+Pj4+fv/PuS0REREREhJAZM2bOnDmTkMJCKFawadOmTZs28fGFhkZExMbO
	mxcbGxT09OnTp3BWYmJXteP3BvywGAzQBhwxIi4uMTE9XUdnxYpVq9asIQQi5ejjUbTcx8fb
	29ubLrZhaGhkZGREiI6Ojo6ODiGQuvb97ltbW1tbW5uQc+fOnTt7lpDKysrKqipC9u3bt2/f
	PkKuXbt27coVdfVXrzw8AgLWraupyc8PD587V0REUdHS8tet1hgW5u398qWjo7e3v/+7d/37
	czjg958yZcqUyZOhiNS3GG+glUEX/fjrr7/+OniQECCadLVomBgJAYMPIRDJTEh8fFJSWpqN
	TWpqRIS3N6Y8xMR0dft1FSQklJWtrYuKpKUlJSUkSkthQScEIuIIWbNmzZo1a+jjYdzS46/9
	+/b40uMRBw4cOHDgAFSN+/tvQkDbt7RUTExR0cKiqKir2+1LgcUPzp07enTHjpYWaGc2GyQM
	oOhIcTEhdXW1tXV1hMjJSUkJCjKZbDYfH5uNHtaO2peXF1LgTEwqK6uqamsFBHD+7KhoGBAD
	QqZMgX728vLy8vRUUbl5896958/XrausrK6ur2cyp0+fNm3aNEJgo93x84FhmZC2NopiMPj5
	09OzsnJybGzg/q5dg+dHAt0eTKa4uJiYmJiAQGFhaWltLT1f4CuLxcPDw9PWJi4uJiYszMuL
	60fnVImmqPj4pKT09Pr6lhYodmJhYWFhbk5X9f3WgMgtQlauXLFi5UqoXp+cDKL18fGErF0L
	VYRxPWoP2HATcuLEiRMnThDSv7+zs7MzIatWrVq1ahUhQkJw/W8NbA/8PYABhpAbN+7effYs
	MnLjxh07jhz5eapRQ3E1RcVduw4ePHNm27aoqNjYpCR1dSye8aMBxOZ/Pz5Jo6YmOVlYGIo1
	GRlVVFRUVFfz8oL2I120Chw3NK8EBwwh4Lj5dneDRcSOHTt+/NgxQphMmI+xGAEW1cF1YMOG
	jRs3biTE3d3T099fRwcMc2vX1tYWFERGzp0rLKygYG7+6xf5Cw318nJzMzT09PTze/u2V6+C
	gsLCkpJv/z3BwcHBwcGEnDlz5syZM4Ts3AnFGyEClhCQwCDEx8fHx8eHLs5XVVVdXVNDSExM
	fHxysplZenpkZEAApqD+DuPs4xATU1KytCwqAum00lKIWKPb+cKFCxcuXKCLD3UWoqOjo6Oi
	6H0BzSfhfru63b4UyCfBEdzSAobgD5kI8mxw9DOZwPs+zSdBaqh79+LikpLycjGxL70/KHKj
	rX3nzsOHrq4bNsC69OWaj2Vl5eWVlXx8mZnZ2fn51tZwf1evfopPQv8KCHRU9JPJhPaDYoSd
	zScJgWKSbW0NDQ0Nn7PemJgYGxsbQzHfxYsJsbeH/S4W+y0vLy8vL6eLuj169OjRo0dQ5NnX
	l16H2kNMTExMTIwQcCh/yCfRrjJnzpw5s2cT8vLly5cvXxICjrYPr4f7CtyPg7QbIXZ2dnZ2
	doRAIBchlZUVFRUVhAQFvX379i0hp06dOnXqFCGxsbGxsbEdt0N9fV1dQwMhHh7e3kFBmZlr
	127ezGB0/HvuCF1moPTx8fMLDjYwCA+PjIyPt7BobGxqam4mhMOB6kEPHz58+OgRXb3tc6vK
	4sa6PTo+H4+GT/FsSAmif1B4flZWTk5+vrp6Tk5ubkEBioD+2gtda6uQUHZ2bm5BgbW1kpKK
	iooKISNGQDVFBERkELJnz549e/YQAkWL6M8hBZSuKgsakfQG71sD+0tUVFRUTAwWPDabJpg1
	NTU1dXWE+PoGBoaEDBr08uXr176+M2fC7+fQoc6aADsL6MkDTVUrq5CQ8PCYGFFRJycnp+7d
	CbGxsbH5lv5/rEqLE6q3NxiscSPeo0ePHj16EAKaM4SYmpqampkRApp8OM6UlTMysrLy8iws
	4Kq/r4ESgQs0vgcJA0IgkrHz7we/H+7tw/v7WQHF2J4+NTc3NtbVHT36wIF9+/bsMTNrampp
	4XAIKSwsLCwsJMTExNBQR0dK6t69x49fvnR2pqiWlqysjAwGg5dXTe19qtHUlJEhIhIXl5iY
	mmpoKCIiIiImxsMDmk+fvh+s8u3k1K1b9+4MxuXLly9fvsxiTZkyZcqUKXR12k8BiY2MjKys
	rCwhqalpaVlZ+vq1tXl54eGoiZebi8dTVE1NcjI//7Vrf/+9f/+4cRkZWVm5uZaWkZGRkdHR
	hIDmLKyXkKqkrCwnl5MzZIizc8+eQUGdO4+2tcGGtKwMV/vvZZhsD1lZGH9o0MB+AXFzcND8
	9RdtyEUDy5EjR44cPkxXbT906NChQ4cIgUit73/ftGEZ+I68vJycjIyYWEJCUtLPVNM7PDwq
	Kj5eWzskJCwsJsbEBKuW/qhAnop8Mjs7L6+w8Pfgk4QQEhkZFRUfr6lZVlZWVllpajpq1OjR
	o0fTvFBeXl5eXp42UILWPO1gTkpKSkpK+vb3VVdXV1dfD+PyyBF6IwdFAIG/zptHSEpKSkpq
	Kr1he/nyzRs/vwEDdHW1tNTVsYjOtWtd3c7fC8gnIULG0TE0NDw8NlZC4nt9HxrKIOKcEIiY
	pHlkz549e/bsSQgUGyMEpIro89PSMjJycmRlU1LS07OyjIzgr7/+OPsU0A2NVXsfPnz48OFD
	QkBTvPPvB/f7IiLCwoKC9P11dTv9VxgbGxrq6Dx92r27o6OV1ejRNTU1NbW1ZmZlZRUVVVX0
	7zs9PTMzN1dK6v595JMcTm5uRgaDwWIpK7/PJ5ubMzNFRGCdNjCoqamtrav78owHOI/BeP78
	1StvbxaLw+FwvsYgjettWlp6enb2v/HJ2tqUFH7+69fPnt2/f9y41NT09OxsS0sOBxzKuG/H
	iF6QDMrJGTiwX7/u3TufT5aXV1RUVWEOb8dHysnJycnKErJv3/79+/cTAtKEHx6nrq6urq5O
	CGSmETJmzJgxY8aAg/jGDUIOHoSAj5yc3Fy61T7f/gXHdnw8Ov5cXJYscXEhZP78+fPnzSNE
	Xl5BQUHhY1eD+zU3B0c23v+sWbNmzZwJvLW4+MOzYC9ISGNjc3Nz85cbJhFdZqBsaGhsbGqy
	sgICIiUFmgiE3Lx548a1a4TcunXz5vXrHZ+PA6m2FjyqDAaDwWTSBi/QsoGBT1GEQCgsIZC0
	AccJCQEx/zd/Af4wYcAQAtoRPDytrW1tbW3S0l3Vfp0FP79Xr+7e1dIKDg4NjYpSVLS379at
	Tx+aQCLQsw2hx9hy9A969GgYiFCs4PtHULYHpC6DYbKmhv57QkJSUno6H5+Xl5/fu3czZjg5
	2dr6+j5+DJ/+TFu0f0djY1FRVJS0dHR0bGxiYo8edXV1dY2NvLxDhgwePHgwHTn8rYG/k2XL
	li1btowQSCWHCNZr1wjZvn379u3b6YlTT09PT1+fkIAAf38fHxYrMTE5OT2dm5LzPn5Euvbr
	mPIBtrZ9+44fHxnp7v7o0YULs2eDNuqSJU+furp6eo4fD+uMkJCAgJCQmJiIyIkTZ89ev75+
	fWlpWVlFhb5+ZKS//+PHO3eam3frNnJkTk5kZEhIVJSWVmFhcXFpqZ0dGgqhCMOn7wfny8mT
	wSD49m1QUFAQbQh731D8b8AIJUNDQ0MjI0KSkuLiIiLU1aOj4+KSkvBOcnPT0iIj37yRk1u+
	fO3anTvHjPHx8fd/92779vLyysq6OikpUVHw6NbUVFWVlzc2Tpo0ZszgwR4eFhampgYGx4+P
	Hj1smLOzj0/n9hqTCam98vJv34aEREURkpOTk/M+0fveQEMyRvSgAQMdeqDZShtcHjx48ODh
	Q0IWLVq0aNEi+vzOAkgWAK/h5SVkwIA+fZycDAw8PX18goJ4eIDofj3B7CzU1tbW1tWZmNTX
	NzY2NgoLQ2onzQMJoYk7IbQjGoEb49paMFB9buQQRn4gf+0oEhq+8/1/wx1AqjAPD2zQfn0+
	iXB39/IKCqqoSEhITk5PLy8fNEhHx8hIVRUj4nBexPbF+RIdnxihgrz+WwP57MGDBw8ePEg7
	DBYsWLBgwQI6whk0tAkBrWBhYQ8PH5+goAULQGvY39/Q0M5uyJCMjK5u72+NlpbS0pgYaemk
	pJSU9PSBA0tLIYLqe38vRtKCNigdAYT8EbSzaYc4juPKyqqq6moxseTktLTMTG5xqvZ4f16k
	KNox0NX4fLPMjw1b2z59gE8+fnzhwuzZRkb6+traS5Y8ferm5uU1fry/f1BQWJiQEETUi4iU
	lJSWlpevXw8Gso/xyXfvIiJoPtnc3Nzc0vL19/e1hsn3z+dwCMnKys3Nz1dXj4n5J59MT4+K
	evNGRWXnzj17jh+fPfvRo+fPPTxcXKKiYmMTE6Wk8HwDA9AOnzhx9OhBg16/NjY2NNTVPXx4
	9Ojhw/v39/Xt3F5jMu3tra3NzGg+2dzc0vKxdjY2NjY2MiLE0dHB4f2MUpAwIyQhISEhIYHm
	IxoaGhqamnSk4h9//PHHH38QAing9PqSnZ2dnZ1NR0JevAiRzVCzAY5XUIB5saCAkIsXL168
	cOHDyEk5OVi/QDqRkKlTIeMKHfgYKZmWlp6enk6vu1CEjD4O51sjIyMjY2MwUL7vCEKgvWzQ
	oH79une3sPD29vMLDv5yPtllBkqoovjmzcyZkyePGnX1alNTc3NzM8YA/ZM8whSF/wcLOiw4
	KipHj54+ffWqsbG0tIyMvDyTiR5WUVFRUVFROtR/3TpItSotLSkpLKSo5csXLZoxIyZGTExU
	VFg4J6d95A9aoNva3vfhMBgQel5UBGXm0ZD166G2Njc3PFxIaOvWffuOH1+1Kjs7L6+oyNR0
	+XJISWwfko0hyDt27NixfTsh6emzZs2aRf/AMVIOCWZnQ0JCQkJCgvbAY0TnvXv37t27R0hA
	wNu3YWGGhoGB795FRo4aBWcdPNjV/fCtEBERHZ2QICubk5OXV1hoZCQlBYTO1hZCur83+vTp
	06dPH9qz9ODBgwcPHhAC2nn070NDQ0NDXZ2Q16/d3V+9YjJLSsrKKioUFNBjjykTXd2eXYn2
	ih9cfD84O48aNWdOeDhFUVR5+cqV9fX19Q0NIiJ37z558ubNmDGzZs2evXIlgwEbIhmZmzfv
	33/xYu5c8CSLiAQGvn59+/aRI3FxCQmpqZqaMP7ExSdMmDSpf/8vdwxgCsbmzVu2bN4MhOjT
	JW5oYOoURpq8fRsY6OsrJ5eSkpaWlaWrGxLi5XX/fk3N4cMnT166tHXrs2cvX3p7DxmiqKis
	rKrKx7d48ZQpM2cScv78+fPnzhFiZKSrq6bm6rp+/bp1Li5LlwoLy8oaG+fldXY/wbzA4Vy4
	cOLErl0xMWA8bmyMjo6Kiori50eDw+cacr8WuC5iZOn9+/fv37sHxPHiRYgUNzWlU+hkZWVl
	ZWQImTx58uTJkz9cV78X0GEXExMTExNDCFT/bGgAbdvXr38WwyQC7tvDY8aMiRNHjAA+2dLy
	Pp98n0XScyesKBQFkbcqKidOnD1786axcX5+YWFx8ad7QlZWRkZSsq3NxWX+/KlTY2NBq+pD
	Pvk+MNKcEAYDDJTAJ/n5f10+ST87RVEUH9/69StXzp8/b151dW1tba2e3rlz586dO0dIZGRE
	REQEISdPgmEfIxjz8vLy8vIIaWmBDR+O4+9loETg/gENlebm5ubm5vQ8vHz58uXLl9MpbxDJ
	a2Pz4oW7u7d3375wlfPnu7rdvzUiI2NikpKATxYVGRq2tHx84/69EBQUFBQYSEhJSXFxcTEh
	iorA5x0dHR0dHOiNP2ZMgeOBySwtLS3l8kkaP7oB8N/j1n4+ODuPHNmeTzY2iohERsbEJCSM
	GVNbW1tbX89gQKaKjMz589eu3b8/dy5E/oqIBAW9fn3nzpEjcXGJiWlpmppw3I9TJbmoqLi4
	rExOLjU1IyMnR1c3NNTH58GDmprDh0+dunx52zaI1Bw+PCMjMzM3l3blocQAFG/09l62zMVl
	7tw//hAXV1Q0N09P7+znQD75999HjmzbFhMjIiIsLCTU2Ag84UMRNF5eXl4+PpA44uWl/x4W
	FhYWFkYH5iAPtbeH9cPFBTIGunXr1q1bN0JGj4ZMgooKMBhi5D6uQ/fvw745Ph4MnhoaGhoa
	GoRkZGRkZGQQEh8P0kLoaEDJpzVr1q5du5aQ6dPBcY72rVevXr169YqQY8eOHTt2jJCICFh/
	RURERISFCbl8+fLlK1dowyTabz6VmQRa7I2NkJqPka8/UYp3z55DhkyfnphIURTV0rJwIfwo
	/j1EGekig0HIixd37/79965dgoL8/Pz8pqYiIiIioqKwQDk60gYpTNHGz+vqamoqKhgM8GC8
	fDls2MSJixZt20YIIe2XqfZklp7KORyI2OxIW+HnBUVRVF0dP//WrevXr1s3c+atWw8euLoO
	GGBkZGxsZkaIk9PHUwkxcgBThb91yvB/BQ5I3CAePXr06NGjhOjq6urq6BCyb9/evXv3sliv
	X3t7BwY6OFBUU1NGhqgog8HHp6FRXd3V9/9fUVFRVVVdbWgIEV4SEhjZClVcv//340Q5ezaE
	hnt6eni8eUNPkGigFBcXF5eQwMhmJlNaWlJSXBx+cRUVaFp4Pwb298WPQC0/lfrwq4DBYDAk
	JbGa4KlTfHyurp6e3bsHBwcHv3snJ7d79+7de/aghAGTefnypUsXL06c2NrK4bS2Wljo6+vo
	aGpmZ9fV1dc3NfHwtNfu/Vxg5CJqov1bxNa/AbUHW1o4HIpisSCyZNKkV688Pf3916zx8PDx
	CQ42NOzdu0+fvn0J2bx506ZNmwi5dg00Yglpa2ttbWnp169XL0dHN7euMky2B1RJ9vaGonaZ
	mWFh4eHh4fr6ICJOP/f3hpaWlpaWFhDOMWMIgWqzhJw8CRIXqDmEEVl4fGchLS0tLS2NJtBq
	aqqqSkp5edbWlpbGxgkJnXcn3wa9ew8bNmMG8EmKAj5JyD9HRvt56v35k+aTgoL8/Kamn/u9
	4KhmMiHSw9Nz+PCJExct2rDhc86leSXwyY61un4dQJV4e/s3b7y9g4KmTq2qqqqqqREQwHUk
	IgIiEjGiBA1MxcXFxUVFYMBnseiNXmcBtWJRAxF5JEbsDRw4cODAgeDwvnuXzQ4IePs2PHzo
	0JKS1NTAwOfPZWS0tR0dCwu7uv2/FbKzc3Pz8+XkCgqKikpKvodI078jLS0tLT2dkMRESPVH
	AyVGJkFxRvr3gwZJ0LwDPllZyeWTPy57+1Hv69sA+eSdO5cuHT586pSWloaGqmr37lFRMTGJ
	ibRYE2hEMpnPn7986e09cSJE2ltY6Ovr6WlqZmfD5z9OcbWiouLikhIWKyUF+CRo9K5Z8+KF
	u7uvr6FhRQXUgmgPeXlZWWnpykpDQz09La0zZ7rKMNkekDnl66uqqqysoJCbm5ubn19Y+KGa
	OEY6olQPZvKiIxgloSorKysrKyGzJyeHkKio6OjoaNoegesIOqzba8JiZHN0NJyHrx1h1KhR
	o0aNoqX10MD44AFEoK9YsXLlypX0/SAaGhoaxMXp+6f7F54vKysrKyur4+8FqZPaWkNDPT1t
	7dDQr23/TvDV/zsYDAaDl7epicFgMHh46uv/7ZXJRA2GhgYI3efnf187sq2t4w0zft7ayuG0
	tXE4MFDy84EYwvVZrH++Mpkff/+rGiYrKgQELlw4ceLw4eXLnz1zc/P03LNHRERUVEJCVhaK
	BP2bVsHPBfTA468FInIJiY6OjU1KcnJ688bNzcurM2ILOwe8vCwWi6Wvz2SyWEymqCiGkn+q
	qMa3hrU1GK4dHBwdnZxoAyV6iFByAQ3K73u4fyVN0G+FH6VFoK/gXz+C4fR7YcSIwYP79o2L
	69HD0dHKKj0dDe2Yeobz5IYNGzdu2sRgRETExqam6utfunTjxsOHzs7S0jIysrI8PIaGhoaG
	hl9/H19rmERoa4NBTEFBXl5RkYfnypWbNx89cnb29g4ICAszNJw/f8GChQvpFGWYNwh59uzZ
	s6dPwdNtZJSR4ezct2+3bl5eXd0vCCenAQMmTYqPt7W1tjYzCwiorq6qqqykI7Yxleh7A+cv
	1EpDj/OhQ4cPHzpEvx8+fPjw4cO/TGPovwD50ZMnjx8/fkxIeXlZWWkpIX379uhhb5+R4eTU
	vbudXddvDL4WaOh7n9fhK83f6L/DWe/zya/DP89vaPjY93d0P7+DYTI3Nz7ey0tREXjlypWx
	sQkJKSmqqu35OqbE4cYsPR1SziCFn+YJnTWO28PV1dXV1ZW+P4yAx2J1wsLCwiIihEBEuqMj
	aJxbWXV1+39rQOaZnR2bzcvLwyMl1dnfjxv9kJCQkHfv3r8vcOChgfJ9MBgYoQ6hLj9PCbDv
	jx+FR9L4lVkkjeHDBw/u0ycurmdPJycbm/R0KJLz4XGoFfn0qZubp6e+/pUrt249eeLsDJHB
	P46Bsq6uvr6xkYfn2rU7d54+dXa+f//pU3f3jg2TyGN79HBysrEpLBwzZsSIAQPCwrr6ORA9
	evTq5eiYkdGrV/futrYZGRBJ+eFxaLALDw8PDw+n/45ak5hB2B7oON+wYcOGP/8kJC4uLi4u
	jrZPoPQPRkp+LtTU1NTU1AhxcXFxcXGh50WUJNm6ddu2rVs/NEwi8H7x/hFhYWFhoaFgkP2Y
	gVJAQECAn58QS0szM0PDsLBu3ZycrK2/3uHd5QbKrwObjVoNFRWVldXVdE5+e4MLandpakIH
	gzgti5Wbm59fVNSvH0XV16elfT9x558FV6/+/ffZs2PHXr5848bDh+vXV1bW1DQ2iojs3w+i
	r05OTk4o4f4rALW3Hj+GjRpq1WRm5uTk5cnJQdW/QYN+laIfsA0oLYXnaW7m4YFUz85KKUTg
	xDt06LBhQ4fSoemZmZmZGRmENDU1NjY1EdLS0tLS2trYCCkMjx4RQoi4eGfGTPzYoDd2Xe0D
	x6rfSHK7+n6+L/j55eTMzEpKzMxMTAwMzp1rampsrK+vqkKpCEyhnj9//vz58wk5ehSKLYiJ
	iYtLSRFiYmJiYmLSeUVQOoKEBGi9GRvD/fDxCQgIC4MExv79QJg2bKAzEe7dA49rVVVFRXl5
	c7Ojo52dhcWjR7q6lpYDBnyM4nQN0ODj5GRra2Fx7Zq2tqamqmp+PoqQh4aGhoaEdN79YGS4
	gwNEzIJEACEYQaunp6enp9d594MptFevXr169SohBga6upqatbWOjnZ2lpbXrjEYgoJaWuXl
	nXdHXY+qKgGBsLCoqPh4cXHQ/Pr8c3HjBcUKNDQI4fLJ9wHrFJt95szFi3fvTpvm6ennFxzc
	r19jI6zz3xvf2vBfXAwpxVhEBA2lOJ4xBRyKH0lIhIZGRsbFdeuGVXe//xN3DlpbW1s5nMxM
	eNf5BnbkP2/fBgW9fUtIXR2k+mPRL1y3/nkOhwMGHTCASEl9yzrwPzt+LNb2Y93N9wM/v6ys
	qWlJiampoaGu7rlzEEnY8QqExYSzsrKz8/K6zlHTEfB+oBo4FAP8t9lBSUlBQVaWkB49HB2t
	rV+/1tGxsHB27kzV8H8H8iEHB1tbc/Nr14yMDAy0tT8UFcGIfnSEo/QIVu9evRo0JbHadnuE
	h4eHR0QQcvr06dOnT9NFh3E9wUjIzwUeb2VlZWVlRRdlxAyA2NjY2Li4D8/D+8P7xfuvrYXa
	Hfh8WEyuPSBTrLLS3NzERF//1CkGQ1RUT6+s7Gvb/6czULq7P3p0/ryFBRCdXr14edlsfn5a
	lB4XKAQaKFEUlMXi4WGzCfHy8vMLDu7Z09vb09Pf/2uS7X4N+Pq6uV2/3rPnlSs3bz58uHx5
	Xl5RUUWFqOjevXv37ttHF7XprAgPNBQWFBQU5OfTA/Vbo7m5ubmpidZawMi9kpLS0ooKQiIj
	o6MTEy0tW1pKSmJjO99D/K0BccOBgVAMobi4ogKkD75X+34KtrYQSYkGHfQcFRXBBkBUVERE
	SIjF0tHR0lJXb2v71aqq/3e8r5fb1ffy+wB/h3369OhhZ+fhYW9vbW1qmpv7/Pnz58+f00XC
	0DM8ZMjQocOGEXLp0uXLly8TMnPmzJkzZ9K/+64CpnqgVuKVK1euXLlCF93BdRQjmB48uHfv
	/n1ClJUVFeXkwsKsrc3MjI3Pn4f2aG7u6n5pjzFjpk9fujQoqFs3e3tLy+vXq6urqioq2tpw
	XcNUle8NdJj27t27d+/edOpPnz7wvrMi2EtLS0tLS+kqk+Xl5eWlpYT06dOzp739/fsDB44e
	PWgQOIJ+J/j6uro+e9a9O6TkDhjwNQbK6mrkk46O3t6engEBv07mxdcCDZNXrpw5s3fvwoXP
	nr186eW1alVeXn5+UdH3/8VjpAtUgYX57FuWcMEiLKiNiUVaunfv3r1bN0iNa2zk4QHDtY1N
	eXlm5tu3YmLf+7k7CyIiIiJCQmlpEhLi4mJiXWfoi44GDd2MjMzMzMyONdJAy7S5GbRpw8Jg
	3epM1cwfG521v/t80Fz/V2b9yCd79+7Rw97ewwPmq9zc/5oh86MDf286OlpaampRUTY2FhbG
	xhcu/KjjcujQ0aMHD370yNbWysrU9OZNiCD/0DT88uXLly9fEvLixYsXL17Qf7e3Bw1HjJSU
	lJSU/JgbEwOmUHoHfweoTdm+OHF74Odjx44dO3YsPR+Gh4eHh4UR8vTp06dPn354Ht4P3h/e
	L+LZM9jfvHr16pW7+4fnw3rb2tq/f+/eDg6vX48bN3LkwIGBgf+13X+Y0OBPAQgPD8+ff65a
	tWDB4MHx8YmJqalKSgMHDho0ZAgtMtoRunfv3r17d3qj4OHx5o27u4iIq6u7u4+PgwNc/+cT
	h/9atLWVl8fFSUpu27Zv38mT//tfUVFpaVWVpeXevXv37t1LyJgxY8aMHv35EXYYCYdi4WiJ
	x6qMGPqLGkJoiESNA9xA+fv7+/v7E5KdDSHT//vf//73v//RYunfCmpqamrq6oScPXv27Nmz
	oB138iS9UYcUJHV1SNHR14ez/P27ut++FlAdrbVVS0tdXVW1sTE6OjExLY2OJP1eVbw7gpyc
	nJycHP0aHR0VFR1NG3igClhtLRhESku7uv1+ZHQlgfuxSG3nQVPTzKx///x8e3sbG29vV1df
	36CgsDAdnUePHj169IjNxqJsSMRsbW1tP6bJiymNKIqNov+FhWBAw4gdTGlDTy1q0SABERIC
	QxeOY2lpqNYtLy8vLycH1btlZeniAWiAxHWxIyBhKiwsLMzP53CmTBk3bujQZ88cHJydJ06E
	VOBJk7q6Nz4EGk4DAtzdb926ejUrKzs7P3/AAFfXly9fvjQzw2Jp27Zt27Zt26fnP1yv0DOO
	Bk6cP/EVNc+wP+vr6+vr60HDLiUFi7IQ4u7++vXr17CxzsigU0Oxf3BeRCkOfI9V2NGw+amN
	ZftqxC9evHjx/DkhQ4Y4O/foERs7ZMiAAb16HTzIYDCZysrfs9zIjwWaT65cuWBBt24REdHR
	8fFfH/kYFhYZGRcnIuLm9uaNr+/vxycR8Nws1t27ly8fOTJ37tWrt249ebJ9O2SkiInh7/V7
	aRdjNfUxY4YPd3ZOTrawMDMzMBAVjYyMjk5I+Let3ZcBNVyxyBRWHbewsLCwtCSEzQa+Cpla
	BgZv34aGRkdrasLZPz+f0dBQU1NWLitTVFRQkJUtKoJ9gpgYzpOdBUxR9Pb28vLyovcdNTUQ
	8YOAyDReXjs7KytT058/4OBbg86A+TGAq9qPZzj9PtDUNDPr1y8/387O2trb29XVw8PbOyhI
	RweqdP9bOZLPA7Yj7ufx9Z9SWvS8jK84nvH1W83bMjJSUhISGDnp4WFp2bPnmDGxsV3dDx23
	Hy+vmlpt7Zs3T55cunT6dExMXFxysoWFj09AQEiIjQ22D1bP3rVr165du+hUa4ywnzBhwoSJ
	E8GxlZ8PVbV37aIza7Catp+fn5+vL11TBTOvnJ2dnZ2daQcZ9iN+f69evXr16gUaySYm9P37
	+fn5+fnREilYTRwD+FatWrVq9Wr6/vD3EBQUFBQURFf/bl8dHA2oIFGQmDhgQN++3bvv2cPH
	Jytravrf17mfxkCZlBQa6uamqZmQkJSUnj56NIcDy+CECRMmTJjw6eqcuAEZN27cuHHjaEs3
	aMVMnpyYGBLi6vrsGRzdmUlgXQOoVm1jExAQHBwR4ejYr1///gMG0JZ63BijpoKxsbGxsTFN
	xNoDN0KowYYEQVZWVlZODjZgQkJ05BBusPE4FJEtKAAtt8WLQSRdUPD7Vl1VV1dX19CgJxT8
	nVy+fPHi+fOKimlpGRnZ2T17wsQcEPCzRvKpq5uY2NllZCgoyMvLyPj5vXnj6/v2rba2t7e3
	t5cXFAvS1e28+0EDCWpj+PsHBPj7Q8RWRgYhenpaWioqVVVKSoqKcnI/X9GG7w1a85GLrgAa
	HiAC/do1PT0tLXX1UaMePnz48OFDbW2MTESCgsXaEhMTExMTCXn37t27d+9oTZfU1JSU1FSI
	4C4pgcjm5maaAODrpwglzqvtDZho+EItG0z9QOJkZGRkZGREG8Jw43f37t27d++ip7uwcMCA
	vn27dfPw+Fmqnzo69u8/cWJ8fFJSSkpGxtateXkFBUVFZ8+eO3fu3NmzMjLCwrC+rFmzdu2a
	NXQxPTQwhoWFhoaGEuLt7ePj4wMp4qGhtIECHWtYxRb7Adc5dKzhe3FxSD0MDg4OfvuWJo4Y
	yY79hhH9bDabzcdHSwLgBhyrsKOBGVOBcD7FdfXQoUOHDh2iU4f09LS11dVTUoYOHTCgd+//
	/c/evm/f8ePj4wkhZMKEru6tzgPwPU3NhITk5LS0UaPKysrLKyu//noYeZmWlpGRkzN5clJS
	WJib2+/DJxGBge7ut27p6l68eP36gwfz5gUHh4VFR4uJoRYrVr9GSZfHjx8/fvKE5ptfCjRf
	SElJSkpINDaOHDlkSN++UVF//DFv3pQp27a9fPnmjZ/fhg0wLr+dgRLHF0a6YKYRSk1hinFh
	YVFRSYmERG5uXl5hobk5nP2+auLPCUVFPT0Hh/x8DQ1VVUXFiAhwKOvqglbe518H1yecJ/n5
	4RU1j3Hj3dzc3NzSQs+TON/i69Wr165du0YXkWtfPEJOTkZGSqqyUkZGWlpC4n2VOC5Qmqer
	7+Pf7u5XB/JJH58XL65du3rV0FBfX1t7xIiiopKS0lJd3Y7MgmigwnVfSQmKRbUvgqqgALUj
	MGUX9+N8fHx8UMnjn3wSU4JxX498CPfpyA8zMyFyOS8vLy83FwxY1dX0uO0IFhampoaGVVW9
	enXvbmfn5oZVs7u6Hz6Ffv1GjJg1KzLy4MGdO9et27u3urqmpq7uypWwsMjI2Fi6WBg6rpYt
	W7Zs2TJCUCoP+dqSJUuWLFlCZ3CigRIlf4yMQKMe+wPtEmgoxP1EeyDPRx6L52OxRgMDAwND
	QwgESk6m593p06dPnzGDjjxHA+i6dVD9GwPP/vl7Ba1JA4OSEtBS3by5T59hw2bMiIwkhJCZ
	M/97e/80Bsq4uMTE1FQnJ6gOpa2NBrMvrYbq5OTk5OhIE/2kpNTUjAw1NfDwYn3PX59QhodH
	RcXHS0hkZ+fmFhayWHPnLlzo4ED/8C5dunTp0iV6I71169atW7Z0bKBEra2+ffv27duXkDNn
	Tp8+daqtrbm5sbGuDn2ZQkJwfRYLUmBKSsAAJSAgKMjHx2IJC4M2IoNhZ2dnZ2vbeRqJGBmD
	IrKwMPDyJiWlpmZmQjmL8nKcgH6+qn8MBoMhIlJXd/HiiRM7d3p7P3784oWHx9ixEDEqIjJw
	4MCBgwZ13L8cDmycGxuBICJRbO9ZQ0MKTTjBENk+ZQHPw+sEBgYGBgXBRp6HhxBd3QEDuncv
	KTEy0tfX1v56DYtfHV3tYcZ+/10Npt27Dxzo7JyR0bdvYGBoaHT08eNnz964oa3999+g9YIb
	JiwGhaLYuDHDYjU2Nra2NjY0QcEIbyQcmBqM46m95xTHEW6ckcBgdcGkJKh2ikQDq0pj9UDc
	WA8ePHjw4MEQ2V5fT0hmZkZGejohCxfOmjV+/Nu3zs6jRg0fDgatnwHoUKIoDicnx90dNrRn
	z54+feHC7dsrV/7116FDhw4JCGC7oQHl+vUbN65fh4j+gAC6XaWlpaWlpIA/6OrSGRno4MEN
	gaysrCxGOuJGgI+PngdRqwkjaHH9QYMn9hv+XuLj4+Pj42mPNqYQiYqKioqKEtK9O2SQTJwI
	hvF376CIB5hiCTEy0tfX0mpoWLhw9uyJE69enTp1/vw1a9zdf1aH238FZEg4OYFB8WOqUF+H
	5OTU1MxMNbXY2Pj4lJTfh08ioqJiYxMT9fVjYxMSkpM1NKysrKysrQk5efLkyZMn6Q00FhVA
	h424uKiooCCHo6SkoCAnV1KSlJSSkp4uLZ2fX1hYUkIXgZCVlZGRkmpsBIMYVn0VELC1tbIy
	Mbl+ffjwQYP69Dl0yNy8W7d+/YqLDx06ceLSpcrK5mYwZH1r4HyKG3qMcEaHQnp6WlpqqoBA
	dnZOTn6+llZX98+3AoPBYLDZ9fUXLpw4sXPn/fugJTdkSGJiSkpGxodVvXHdQkeYo6Ojo4MD
	vDc2povavC+5xMNDz5MYiY4GkqQk+N0EBb19+/YtncKIRSUwM4uHB+ZbcXFxcVHR0FBTUyMj
	Pb2UlK5uvx8Nv0ec4o+PHj0GD546NTnZwcHLKyDAxyc8PCoqLk5Xt7Kyqqqmhh5HlpaWlhYW
	hPTv37+/szOdQYo8BHkjRsh9q310+8zHsrKysrIymqdgBuTr169fu7vT2oo4P4qKwvh2dLSz
	Mzf39u7Ro2/fbt2+vspzV2HVqjVrFi92d4fiy8eOwfy0YkVCQnJyerqAAB6H9hM0UCK/x1Rs
	FxcXl6VLP/97cf1EgzO9/6IjZN8fyXQqPdi7OtLAROD8euDAgQP79xPy7l1IyMfYi7GxoaGO
	TkPDjBmTJ48adfbsvHlLlsya9erVt+aTP7yBElNxjh7du/fPP+3siotLS8vL+fgGDRo6dORI
	WvvlcyEvLy+voEAbNu/cuX375k0eHoiwMDSE74NErJ8hQuRrAVqEurrwnDCNCQrSGyjUSps7
	d86cOXNAlDc7mxAfH4gkQU8ATnyY4oaeA3t7Gxszs8TEsWNHjhw0aNMmHh4Wi8mUkxMRERIS
	FFRWjolJSEhJefYMNDfs7U+ePHv2xo3Nm/n5hYTExCQkvtTw/F8BkU+0IQEjmIqLS0rKyszM
	iopSUxMSxMXh6J/PQImAYgje3tramppqaiEhfn5BQaGhffocOwaGiuXLV6xYsYL2jIWGwgQV
	EwNEHDWXkDCi4RKnJB4eHh4WCyKahYUJUVaGCZUmpuAg4OcHz11GBmjc4cInKCggwM/P4aiq
	KikpKPj7Q6g410D5MfwIZoX3DaQ/wv10xfPLytbWPn9+586ZM+fPwwa7Z08wfElJoWHRygqq
	4WHqNxJKjGhED/j3csjg+MIUDxzfSChRQxOL+qBBDohIaam1Na0RJCv786UCMxgslopKfT1F
	1dampOzdC+3B4Zw5c/HinTuzZ58+febMmTOKiufOnTt37hyTiUXE7OwgNX/gwEGDBg2CfnNy
	gn7T1KQjEtDg/K2BEZWY4p+RAQZjNJy6ubm5ubnR6/KbNx4eHh54XlsbGCbz8xcsmDVrwoSL
	F2fNmjVr/PgjR35UrafvDUxB3rdv27ZVq0xNv1UKHaKgoKiopISHBwyVRkb4fT9LhMh/BYfD
	4bS18fO3tbW1URSLhRtmNNhhxPiuXTt37txJCJvNZLa11dRs2rRmzaJFp09bWpqZGRkFB+/c
	eeDA6dOnT9+69eDBixeysmJioqIiIoSAAfLGDSsrc3Mjo7//hggOISFTU2NjA4PwcAEBOTlT
	0+rq6OjAwCdPDAzy8goLi4s1NKDo3rd/XpxHcXziPI6OjOjo6OioKEJqa+vrGxqsrCiqri4l
	RVqawRAS0tH5+VO9+/Tp0cPBITT02TM3N2/vqKjk5LS0rCwnJ1xvsP+XL1++fPlyQjCSFqUr
	vna9w405GkhQWw2lO9BgApFiHI6+vq6uhkZEBJstI2NiUlHR1e32o+B9/vYxw0Zn48MU4t/L
	cIrSNMAnHz6ECPBRo2Ji4uNTUqSlV69evXrVKojAc3Gh51XsLzToI38rKSkpKS6GcVJeTs9T
	uH9DBymOVzRwYeYGZqbivCYlBZJtmAmCBjMMbMEAJXQUnDhx4sTx42CgO3CAEC0tDQ0VldJS
	iKD8+28Gg49PQ+O/5C50VT/x8amp1dY2N5eUxMTs2QPrHiF37z565Oa2YkVERHR0QoKAAEbS
	z507d+7cuXSGEgIDCzCgID8fMkhzcnJysrPBUZ2TQ9tXKioqKsrLwaENUk/geEO+ihlBEhKg
	KamgoKCgqEj3DzrQcf5FCT50oOP9zZ07d+68eYS8ffv2bXAwHUFrYWFqamBQVzdt2oQJw4cf
	PfrHHwsWTJ26dy/y62/dzj+8gRLQ1hYZGROTmFhf39AAVaHQEvylCxxuJNCSjVWm8vIKCoqL
	IQWkshKTin9eQ9SnUFfX0NDYGBoKE1RtLVQ3FRUdPHjw4EGDaAs/blw3boSqrgsWLFy4cCEh
	PXv27NmzJ13MZsuWrVu3biUkMzM9PSWlqWn+/Bkzxo27dGnRohUrtmx5/Li9wTczMybGy0tf
	/9ixM2euXBk8+N278PCYGHHx1avXrFm3DgbSxyL5vjXah7S3j0yCamSiolA1DT3gP07V2i+F
	vr6NzeDB2dl79mzZsnKlhwcY5nv3hkgbBsPHx9fXxwciHLKzaU8ZRurghCsmBu/5+D6M6OJw
	aK0KDP1HzbVTpyDVEBe81FRIlUQoKMjJyciUlmpqamioqKCG16+/sftctCeU7TXxvpe2V0fA
	7//Y/f1OgIU7MlJcXExMRCQqCsZDnz4oOj1nzpw5c+fSv/svBc5PSFDQgYIpGUg02heJQ+D4
	RIMapgTj6/Tp06dPn05Hzq9fv379+vWEKCrKy8vK5uTA8/24GkGfCwZDWFhHp7aWoiiqpWXX
	LuADcXGXLl2//vDhpUvR0fHxKSmCgvv3w0Z3woSJEydOpOe/L/19oyZlenp6eloaXf1QSAi0
	8jQ1NTW1tOjIq/ZAvoKOWHy1tra2trEhZPbs2bNnzybk9u3bt2/dorWErKzMzAwNGxvnzJk+
	fezYVatmz/7jj//9D9ZhFuvHK2rUuWhr8/MLDAwLq6ioqampqavDGfO/z1zYv5Dx8/vNhNra
	mpqqqtnZamrKyoqKtbURERERERHCwhcvXrx48SI9v6SkJCcnJra0LFo0Z87EiUeOTJ06f/7a
	tbt2gWSGqWlZWUVFZSWDgeOtWzcHByuroqLp0ydNGjHi4cMePQYNmjq148jU8PDIyPh4B4fM
	zKysvDwVle/1vKWlIMmBkc8YuSQpKSkpJQV8iKLwd6GkVFNTUVFV1RllsToHGhqmpn37ZmZu
	2LB69cKFly4FBAQHh4ebmEB1e1HRFSvA4b1wIewbmpqamhob6eJr6KDOzc3Nzc2FIolFRfQ4
	QgcfOrrV1CB1FVNYcUON8yCmfP/xB0hEgUZmaamRkb6+jo6//68eePK1wFUNNe4wAOVz+WT7
	SK6vBQaIREdHRUGi6O8JS0szM0PDmBiIGE9OFhMTEysulpbG/sHISJScwcw/mG9pLX8MKEED
	ExrEsEgsOm7a9x9K0rDZbDZK1fDz0/s/NEyiHcbCwsLCwoLmk2hfcXZ2dh4wgM7YAQf+r8Mn
	weFRW1tbW1yclLRnj7q6qqqSEpt95Mjp01eurFiRmJiSkpXFYuE+CSV9MPAnPBz6CzOcsL9w
	/4z776/d12F/4u9FTExMTFQU+k9Zme4nS0voP2trGxsbG0Jqa+vqamtpO4iNjaWlsXFT06JF
	c+ZMmrR9+8SJEyaMH3/yJIMhIqKt/SWiHl+Gn8RAyWDAhozBwAbDyIKvBQ48uDr+FUJzm5s7
	I6m4a2Fvb21tZpaR4erq7u7rm5Z2/vz58+fOWVig5gROQKhdhZpbqMmFEw6WnY+Li42NjuZw
	und3cLC0PHJkxoypU0ePvnjxY4ZJDw8Dg+vX79x58uTkyTt3Hj1yc+vd28zM3NzSkq4i21mp
	3TiAMWIUDT0QAUVIXV19fUODrGxRUXFxWdnHtpA/J/r3793byenBA6heOnw4iPvb2aWkgBbe
	mDFjxowZQ8igQRA5hJ7w9h4XNJC0N+yiZw4XwtLS0tL3UwEw8ic1NTU1LY0QioLznJzs7Cwt
	Cwp69XJysrH5eVJJOwPV1by8oFXCy9vaCp7SGzdu3LhxgxAvLxCJ/zRwofs2hkT0+LW2ggex
	rq6urqEBZtbKSpxhu67KZ2dBUVFf394eNK4kJaurUUsLDVBfa5hEYrNjx44dO3bAuHF1xSqx
	tEFy4MCBAwcOpDWA0aD2ucDjMdUb10cBAQEBPr6iImVlQ0MDg4+p3vycYDAYDF7e5uasrNhY
	L6/cXG9vP7/g4ObmuLikpPR0QUF9fQMDA4Ov7zf0eONG2dfX19fXl45wwEyFHj169OjRg06B
	xdSdz7l/BoO+P9QWQoMmFLFobu7Xr1cvR8fcXK5h8n0wmWAglpQE/dZvZ0h8X/IC+eTvFAU0
	cODgwX37RkQ8fPjs2evX588/eeLq6un555+gucVkIm/X19fV1dRMT7ewMDMzNn7yxN390aOL
	F83Mzp27cuXu3eXLg4NDQ6OiJCVBi62lZfDg/v179Dh4sHv3gQOnTIE6olOnfvj9jY3FxdHR
	EhJLl65du3Pn2LGgAfn9yv9VV1dX19TQkUk4rtvPG1BEKTGRw2ltbWv79TJCxowZPnzAAA8P
	qFqenOzq+vq1r6+1NRbPvHPnzp3bt0GawtUVUh+DgyGlsKiI5o24/uB61D7iHw0nGAlkYwMb
	aozcwu/D9atbN3t7mk/GxXV1O/1IqK7m5a2rq69vbOTlRUM6tuPataA91/n3BP0dEQEp+7D/
	Ah5ZXf378EkFBT09A4PqamVlRUV5+eZmKMYCUmvbttHsPT4+Pj4h4UMt7E8BI+gwUxH3dRjJ
	9/YtSCcgv0dgCnBCQkJCQgIhb968efPmDT0uZWRkZKSlQfLNwIA+D3msoKCgoIAA8ElDw1+H
	TwoLy8rq6dXWZmXFxXl5PX787Jmbm5fX3Llv34aEREWJi6OjBoHrBfLBzwVqx2MRYykpKSlp
	abr/MRMUtZGRj2DELL4WFBQUFBbSBu5bt27dunWLNkC3v08dHS2t7t0bGvr06d7d3t7PT0BA
	Sup7GiYRP4mBkhAzMxMTfX0W6/Vrb+/AQFoEGQckDpBPAQlSYmJiYlISLGQ8PG1tUCY9JoYQ
	QmRlf93ISYSDQ//+EycmJY0fHx+fknL69N27jx+/fLlp0+XLly5duCAnB7GqbDZutLHq1s2b
	N2/evAmGyfv3CZGXl5OTlq6vHz166NB+/W7fnjFj0qSRI8+fl5XV1HRwoCeg+Pjg4BcvDA0v
	XLh69f79EycuXbpx49Gj3r2FhUVExMXpaqqoRdPZQBFaNFRi9drs7NzcvLyaGlggCgq6ut++
	Fayte/UaMyYp6ciRPXvWr3/0KDQ0IiI21traxMTMzMKCxTpw4MCBAwfohas9cBxhClNOTk5O
	bi4QR2VlqCJmZkZvmNFjY2ZmZmZmRki/fv369etHe85jY6OjIyPb2qysLCyMjJ4+lZfX0+ve
	/eeNVP1WoCiKKi/n4ztyZO/evXvnzn361M3Ny8vSElNMLS0hdbirIhdRCxiLaT154urq4WFp
	KSEhLr5799y5FEVRpaWnTjEYDIa0dFNTV7fn90RtLZttYKCnp6kpLe3u7ukZEAAOj8LCDyNN
	MXXmU/3W3nOKWp/vF8v52HGfAh6PDilEQUF+/vuzHEhB4AzwOSvszwUBAX5+NjshAVJB376F
	eW3gQDQw1tWBJ5kQaPfPrZ7NZgMfwY0AVlPHjA00LCspKSkpKtLHfwrtCSe+x/vFebmgoLi4
	pCQ4WEhIUJCfPzGxq9v5R4OZmbGxnh6T6enp6/v2LR2R/F8hIMDPz8/f1gba2lj25feJ2GIw
	BAW1tOrrw8J8fR8/vnoV2qNfv/v3nzx59creHvhAc/OwYQMH9u7t7Z2cnJKSnm5l9fSpm5un
	59Kl0dFxcUlJRkaKivLycnKtrZMmjRkzePCVK9OmTZ48evSlSx1VRcdU+r//Pnp027Z584Cv
	9e4NPPb7PW9zM0QkVVdXV1dV0Y5aISGYJxBQTKGtLS+vsLCo6NcTQ7Gw6N595Mjs7H79QkIi
	Il68AAOzpeWFCxcuXLjAZHp5eXlpatJauu3XHXNzc3MzMyjqdfgwvQ/AiCLc4GOkGG7I0eGN
	kWMYmSkpKS4uJtbWZmVlZmZk9OSJrKyOjpMTl0/SfHLPnr1758599uzlSy8vS0ss0kE7sAGd
	XZUdgeP2+XO4P2lpKam9e4FPlpUBn5SS+rX5JA8Pg6GioqQkL48SIYR4enp6enp+/TUxsGTj
	xo0bN2ygU3nRfoL2lPPnz58/f54edxh52RHwvPx84I/4ioB1gBAdHU1NVVUpKUIIoahfj0+C
	dF58PBRjfPsW+m3gQJSi+FpgINCCBQsWLFhAyLx58+bNm/fhcZiJg0V4MFDoU2gvmYHA311B
	AfDjzuaTP7yBElM8vbyePbtyxdvbwcHGxtx88mSowi0lhWLxI0eOHDly5KevhwMcRVzt7Kys
	TE0LCrp3d3CwsvLy+l1SAPA5Kaq2Ni3t8mUg1GFhoaGRkbGxQ4ZERcXEJCaqqSkoyMvLylZV
	SUpKSIiK8vLGxycmpqXJyKipqagoKra0gDZZRISdnY2NhcWVK1paZmZ9+5aXww+ewfDweP78
	6lV9/ePHz569fv348QcPnj51d+/dW0hIWFhEhJADB0A81tHR0dHRsevaAweoq6urq6srHTEK
	zy0pqa2toaGqinfo79/V/fetkJmZk5OfHxkJIvJ1dUAgRUVxXGE14vYaa+Xl5eVlZYRs3bpl
	y9atUIU7IAA02hwdCblw4fz5CxcIkZGBKu4I3EA/f/78+bNntCcOPKUVFb6+AQGhoa9eLVy4
	YsXvMA47AkVRVHExH9+JEwcOHDq0ePH163fuPH26dauAgLCwuLio6OHDhw8fPkxHEHQ1QkIg
	ZQEIjZjYjRv37j1/vnUriwW/G4qiqIICIJYKCr8msZSUBP9/be3r1yCe7eR0/Pjx4ydOMBg4
	r0ycOHHipEmETJgwYcKECZ82dKHjBB04S5cuXbp0KRDC5mYglmw2nVrYUYp3e+B8hxGZN25c
	v37jBsx76el4BCHi4mJioqLQXzw8v954lJHR0nJ0hNqzDQ1ZWUi0Ucvs9u3bt2/fJmTWrFmz
	Zs2iNdQ+BSkpSMVGR0/7CAfcEGDKNqbgfC48PEBrElNmsegIXh80fmtrpaQ0NAwNYevJBc0n
	PTyePr10ydvb0dHOzsJi8mRXV3d3Hx8pqdbW1tavERTB9dHOzsbGzKygADIBPD1/Fz7ZHlZW
	PXqMHJmS8u6dp+fdu/PmqagoKysozJsH805enqmpkZGubnn5xo07dhw5smoVaMvr69vbW1ub
	mxcUDBrUv3+PHrduTZgwevSQIXv3iooqKpqbf7jFg+ux2XPnzpgxbpyBgb9/UFBY2Jgxqanp
	6dnZnzMT/jdwOGDAoQ08ADYbDAEIKSlJSXFxWVm4XzRdfnvNrq4C/s5XrFi8eMaMt2/BwFRb
	q6ysoqKmJiqKVc7z8/Pz8/I+NFAmJCQkJCbSWpUoRVJZWVlZUQEpkMnJH34vRqri9TGjKzc3
	Jycrq7Y2Pj45OS0tKOh3HYcIGHX8/MePHzhw6NCiRdev37377NnWrbGxcXFJSaKiaJR89gwk
	vfLyIHKusySDkAcFBMA+AhETExeXnCwmhvwXix5RFEUVFgKflJf/NfmkuHhNTXV1TU1NzZs3
	UMOhWzcwVDEYhoaGhgYGtJQERsJhBGpHwP1XXFxcXHw87TBAnonalXFxcXFxcZ8f4Yf8xcbG
	xsbampDGRkhNjomJjY2Lg2JVTCbwUz6+oiJCCJGS+vU0sOXktLWdnIBP1tdnZaGmp4aGhoaW
	FiFjx44dO3Ys/Xs/cwaKaWIKfkdAQyNmzOG4RP6I/BIDyD7XMIkRkyjBgQ4JnEdR8xyfR0pK
	U9PB4dcP4PtiIBE5f/748R07jh8HrTqKWrhw0aJFiygKBh7VIfDzxYsXL/7jD4qCqnMUdePG
	uXMHDty+DUd9f0LzowOLElEURTU08PJC27FYoNmFf+fjw/7AokL/PJ/JdHW9d+/s2bFjR44c
	MqRfv4AAYWEhIUHB1lZtbW1tbW2Kevz48eNHjygKJkCqywERYBQF1chxSaYoZWUlJXl5irp0
	6eTJ3bv37EHDa1f307fCtGkTJ44Y0bcvRBBXVMCER1GXL1++fPlyx/2D4wnbDSJO6fewUf7w
	PLweXh+/Dwwh1dWLF8+dO3ny0KFd3S5djXv3rlw5cmTyZEdHW1sLi4oKPT09PV1digoMDAwM
	DOzq0dIx8P5A24Si7OysrU1Ny8uvXz97dv/+sWO7ul2/N44d27dvw4Z163DegL9S1OjRo0eP
	Hk1RUJ25q3uJBkQwU9S4cePGjRtH3y/MB42NCxfOnj1pkosLHP3rzHsIiqKovDwxMZh3AgMh
	NZCisBrh5MmTJ0+eTFGQ2tTVvUUD7wfvD+8XNjAUtXTpwoXTpgUHw/NhcTcuENCKbPb588eO
	7dx5/DjyQfz0S19xvHP55McB7QF8kqJYrCdPbt48eVJD4+DBnTvXrj116vjx/fs3btyxAwIR
	7O2bmqqrc3LeN/G9fx0mMycnKcnPT0lp375t21avXrcOMqxSUv4ZYfn1/fm5r7AxpyhIkaPH
	J2j40seBo//yZYpqasrIYLG6uj++F9atW7587tzx48EgW18PhnuKgshzuj3AkUZRampqampq
	FAWpphQFkkIUBQEnFDV06JAhQ4ZQFGgiUpSenq6uri6sT8LC9LyH18fvk5OTkZGSam7evv3P
	P5cunT27q9ulq3Hu3LFjO3YMGADFS4uLwXDy/cfHt3rFfgaHUnn5zZvnzx88+OvzyePHgU/i
	+jR06NChQ4dSVGJiQkJCAkX5+/v7+/l9uG/91CuOE5ByoyjQkoT3ior05597PUVFRUUFBYp6
	8eLFi+fPKQo0tykKHLs0n5w6dcKE4cPnzOnqdv1eoCiKys8XEwOtRppPzpkzZ86cORQVERER
	ER5OUYcO/fXXX39RFDhivnw8YP9AROyX9xe+4vfj/eD94f3i/f/xB/BjfL7Oas8fJoISiUdJ
	SVZWSIiMTFpaSkp6uqpqXl5+flGRsvKLF3fv/v23nV1jY2Njc7OjIzaxmpqqqooKrf3SEfBz
	TEFFzY3Kyqqqmhp9/efP7949c2brVjAMBAcD4czN1dLS1tbQyM6WkVFTs7UtKfnVPXEdpdD8
	Ex1/PmfOtGljxtjaggd7zx4ofqOtjRpZGFHSp0+fPn36/DhFNTCSD1OOEfC7bG6Gat6xsbhQ
	dvX9fitoaamrq6gICPDx8fGx2SwWihwPHz58+PDhdApTfT14xDBVFYt2YMojalRif6LnBcWV
	oZoieNoEBenrX79+/fr164RER0dGhoczmfLysrLS0r8ugf8UcON85MjevX/+2b17cnJaWmam
	uHivXr179+1Lp8j/qMD7MzU1NTU1JeT1a3f3ly/FxFJS0tKysiws4PmePPlVqwirqqqoKCjw
	8YmIQBEUbI/du3fv3r2b1s6CdqDHEaZWoAYuekRRAwYjTjBCrr2YOXqwsagAekbxVUYGPK1i
	YhCZgikjqDW8a9euXbt20SlyBQV5eTk5bLaeno6Oujqb/avNe++Dl5fBEBMTFRUWBm83g0GI
	rS1U796+ffv27dvpYgzYX9hPuF5gKmJxcXFxcTGInGO/YbXMpiaad3ysWqagIGiviYnR34f9
	gymP+Hd8xftDLd+oqKioiCXtwWUAACiRSURBVAhC4PcH/fXrJVJ9GjSfzMx8905GJj09NTUj
	Q00tPj45OT1dUPDp09u3T53q1auxsbm5qcnREatwfi0wMqWqqrq6pkZf/8WLe/f+/nvr1vv3
	r149ejQ4GIoD5OZqaeno/E58EvHx+T4jA/pp2TJ4z+F01B4UVVmZmCgoePnyqVN79oweDSnc
	y5a5u3t5BQTo6oLWpKgozqudBUzpxtRJRPvUWFtbKysTEyOjior8/KIi1DIvLOy8O+0cwDzW
	1MTLy8PDw8Ph4LjAdWjEiBEjRowgZPDgwYMHD6aLa6D2Lkqf4H4N2xGLReC6iBFejx8/evTo
	ESEvXkCGAs6/bW0URVENDTU1tbW1tXl5Xd0uXQV0DEARIysrKIopLo7r0M8CHNdw/2JiaWmZ
	mTk5vz6fVFEBPikmJioqIgKSBklJwCd37SIkMjIqKjqaLoqDQH6HqdU4rgQEYL+G8xWOM+ST
	mIGDEcyY2o08Bnko8iCM1ENNwxUrVqxYuZLO7MIITeBXbLa1tbm5kZG4OETEdnXrfh/w8NB8
	EteHe/fu3bt3jxDI/KWLJ7aPdMT+QF6PmRn4Hl/b9xshYHbkcCADBDIi6f0CzsP4HiNjcX/x
	v/9BUUxZWVlZGRlaW5nFgvsXFYXnwefrtLbs6s4MC/P2fvBAU/Po0X37NmyYPDk2Nj4+OXn4
	cNjQqqnl5ubnFxby8jKZDAaTKSGBhhJICSVESwuKEHwuUIS5thbO3737r7/OnDEzExQUEBAQ
	MDNra6OotraKChCnbWmBqoRZWaamRkZ6ek+fhoX5+Dx4cPOmlVXPnmPGQDLc7wz0iIOnslev
	S5du3Hj48MCB3Nz8/KIiLS3UGty1a9eunTtBM8/Kqqvv+kNgisjChaDxcPz4iRMnTmDRj9LS
	6Oj4+OTkH19km6I4nKIiSMZubhYWJoTJhCmMosDwzGCw2bW1DAaDISNDUVAtTkkJtEQFBVEU
	GTe+KE6OG3IkilitG4kOEgicMHEDzmQymSwWGFD4+WFjLS9PV2HE75OTg++H+6FVSCmKokpK
	4P7hecB/hJ+CkkltLYPBYsnJ/ZeyWV3dbxRVV8dm37x57tzBg/PnP33q6urhMWGCmpqamoYG
	IYsXL168eDFtEP5RgfeHGiiQespkvnnj4xMUtGiRktKxYzt2FBRQFEWVlZ09C1pCv07xDqiK
	6OMDqX8FBRoaGhoaGgoKqA2DqfAoNRIcHBz89i0YBjMy6BQbJC5ISJBQ4nt6VMP3IgFpbwjD
	89oXwbG2tra2toYiLd2708V81NU1NDQ0CKmtra4uK2Mw1NVVVBQVf+0IPIoiBCL8GQyct7Cd
	kCBeuXLlypUrtARITExMTEwMTTRbW1tb0XDMZNLn4UYB3yNhpSiKamujq2hif2M/YtEwHp5/
	is+bmJiYmJrSG/zevXv37t2bEC0tbW0tLUJiYqKjIyMJERISFhYURH3Srm7hzsO7d15e9+9r
	au7evWXLypUDB6ampqVlZk6alJmZnZ2fr6ubk5OXV1gIvcBgSElBsSkGo6SkrOzfUqw+hZKS
	0tKKCkL27Dl06OxZMzMoBmBmBusi8Ek5uZYWkMZJTtbW1tJSV791KzTUx+fBg5cvra1/Tz75
	KcMCRm6fOnXo0NatgwbduHH37tOnf/0VGhoeHhsrK4sbsa4Cjuf26zJu5HGeVlZWUJCTExEB
	RzCb3XV3/GWAeQjmkaIi4F8cDvAvimpoYDCYTBUVWuXTwsLExMBAXl5GRlpaQkJAgMnk4WGz
	6SJgWMwN50XcICO/rKmpqamupudFXO8wBRUdMyi1MWDAgAEDBtAbf+RJEhKiooKCAgIgtaCk
	dOAAIRcv/vO5cnL4+WF2BHENFqu1lRAmU0EB+PHP7JCjKIqqqWGzIaJ7/vy3b0NCIiNXr66u
	rqmprf15XVaVlVVV1dVMppeXr+/bt4sWaWicO3fgAPDJ2lrgk8LCvw6fBMkRHx+YBwsKkpOT
	k1NSFBTglTb89+sHxY2srSHFWldXV1dPj3ZsSklJSUlK0gEi7XkJ7ttwH4cGLDRQouY1Snvl
	5ubm5uXRBtOQkJCQ0FA61RxTkRGGhnp6WloMhpqaqqqS0q/NJwkBBzE4WmB9wNR75HcGBgYG
	+vp0MSHkm8rKyspKSsD3ZGVpQzFEjBPCzw+BCO37DSWZWls5nNZWuogmBhRhCjk6cCCTi5CM
	DAhISEyEKuKpqampqan0Ph8d58LCQkJCQp0fStbpBkr0bL98+eDBuXPDhh0+fOrU5cvr1/v4
	BAaGhtrYVFRUVFRXM5mKihA5YGhobGxuToiKiqqqqipEgkhJgaaLlBQhdnZQhepzgVWrdu3a
	tWv3bkLKysAjV1ICr7ChlpBITExMTEwkJCQkIiIuTlb29Wtv76Aga2svLz+/4GAHh/Pnjx3b
	sWPdujlzXFw2boyP/1084e0BxW90daF639GjpaXl5ZWVRkZz586dO3cuIZDqQoiqKvTfjwrU
	skHx2SdPnj59+pQQimptbWoSE+vbt2dPe3sVlRs37t599iwysqvvt6wsPT0oSFo6JiY+PiXF
	2DgzMzs7L8/KauPGtWu3bBESkpCQkBAV7d0bDchwVlVVSUlpaXn569dXr545s3cvPz94YsTF
	YcHKywsPj4yMi1NVzcmBCQyrzGLEK3q6kTAC4f5nFW+Kohc2NLhgEYfISBAzB/F0+nOoKo6G
	gkGDIFJCQGDOnOnTFy4sLNTT09bW0BgzhsWCjSVMzRxORUVFRVWVl9elSydP7tlTV6ehoaam
	qBgWZmJiZKSrGxsrJaWh4eBQWtrV/dURsH+uXDl9eu/eefPOn7927f797dtbWjgcFktC4tix
	48ePH+96jdYvBf5uTp06ffrUKUJWr165ctUqCYm//7506c6dLVuKioqLy8pKSuD57937VeZP
	dXVVVSWl1lYwSLDZaOBHbS0U+cfxA6nwoElpYwMec1VVKD4mLw8Rj2JidIQkGhyRmGCECRq4
	GhoaGurrgZBUVtJVF7Ozc3KyswlJTU1JSU2lPbqXLl26dPEiRLJYWhKSmQlVUMF8VlEB/QPF
	435VCAm1tvLw8PCwWJWVSPyw+MK8efPmzZ1LazZhRKOtra2tjQ0h2tra2jo6H0Y4IrHEfsON
	dvuNAHq0sd8qKysrq6oIKS6GDXtODkRopqampqak0FU7//zzzz///JMQIyMjI0ND2DhUVNDE
	lcViMlmsykpCCBEU/HkdN5+Lhw9v3Dhxom/fo0dPn75yZedOHx9//5AQK6vCwuLikhIeHtjo
	fT+CjRs6MIC2/1RCIjk5NTUzE/qHxZKRUVCQk5OVtbOLjIyKio/39n769NatU6d27Ro2bOLE
	RYv8/H6V+fC/4tWrhw8vXOjZ88mTFy/evNmzB6qiysh0VfGO9sDxhgZKOjIFNoQMBjg8hISE
	hAQEyssFBSHCsKvvuz0qKgoKYmKEhKKiwsIiIkxMkE+uW7dixfz5fHyystLSkpJ9+sDvV0wM
	NHuTkmbPnjp1zJjXr4Efq6nB5+Li0C55eWBAUVWFFFQ6ogqLUPr6+vr6+kKRxZwcekPN4cBG
	m8VisXh46PUS51lI+SZk1KhRo0aNotdRNNjw8jKZHE5BAfBabW0w1K1d6+np6xscnJW1e/eW
	LX/91b+/kJCgoICAnl5LS2trayvw44oKT0/gn01NqqoqKkpKYWHm5lZWFhYxMZKSioomJt+/
	eu3XAvnkpUunTu3ePW/exYvXrz98uH17UNC7d5GREhL/NVK8q4H37+MTEBAaKiHR3NzS0tq6
	fTs4KlBg4cwZ1Bru6vv9r8BaD4qKCgpycry8CQnJyenphIDUASF794JWNu7P0BGNwHkS5yXk
	G8gX8e/tA0wwQg8Nme0j+tpnPqIBDh3v//vf//63bh2tHQsO+4oK+KZfm09SFEh/8PFxODj/
	Y4ACRr4OGjRo0ODBtIYk7p/RMFhRUVFRXg7749paulgjOr5w3w1a44Q0NsJ+G/fd2E/y8vLy
	8vKEQAo/PT9ipCz2Ozra0QG/cePGjRs3gpZoXR1qiAKfFBDoPD7Z6QZKb+8XL65eNTK6cuXW
	rceP9+x5+tTV1cvLwEBf38DAwICQzZu3bNm+nY4MQINI+5DkrwUaylxcXFxcXOi/t08lwJQt
	d3d3d3d3Qk6dOnXq1CkGw9XV3d3Xd+DA+vr6+sZGNltLS0NDVRULyMfGdnZ7djViYuLjk5Nt
	bGJjExKSk3V0Bg+GgYcpje3L1v/oyM8HQxqmXGpra2goK/PzQzW1rvf8vH79+PHFi9267dlz
	+PC5c+vW+fkFBYWGWlsXF5eUlJfLyNTU1NbW16PnF1QpYOGB/2AiHDRIVFRERFCQyRQUFBDg
	529uBpF6esnR1QXCh8U5jI1NTExM6AXrc1PzcQLEBTE2NjY2JgaqkS1cSEhYWFhYWBghCQlJ
	SampDMaqVRs37ts3ZAhILwweXFFRVVVT09QE3wWmGbp2MfqNunUTFRURERJiMIBIl5R06+bg
	YGUVGvrq1aNHFy7s2zdgwKhRc+b8iMWN6utTUyUkYmMTE1NSZs2CauoSEtu3b9++Y8fPZ5hs
	DysriJieMmXq1KlTCVm+fNmyZcukpUtL7e3Ly1esIKSuLjXVwwOO/nENyZ8LSUkJCTGx5mbQ
	4Gpu9vEJCHjzBtYxeXlC9u8HQmlpaWVlZQUi55KSHxah+l5AglpeXl5eXg4RnMHBhBw5AkWX
	sBqqnp6OjoZGSUlzc3NzS0tUVFe36/cCRFzU1i5ZMm/elCmenkAo+/cHQzKDgZH1WIzGwsLC
	wtwcDJCwEf686tv/Fdhv6AmPioqKiowk5MQJiPSPjIyM9PICB4+AAEXl5OTlFRRAkRYRkffr
	x/9a8PB4+vTyZUPDY8fOnLl6dffu16+9vAIDbW2/d/XmrwUaSqF/eHlLSkpLy8r69YOMIDYb
	pFCWLIGjfz8+iSgoSEkJCJCV3bFj794TJ9atCwx89y4iQkfnRzFMIpAP8fPD/gR5Tmkp8Ef8
	O2zQ/fwIERXV08Pq7l0HjEyF8WNltWHDpk179sybB4EGo0dnZ+fm5udLSJSVlZdXVWHGDGjR
	E4L8z8kJmNiUKT4+AQHv3vHxiYqKiAgLNzeDA5LBKCurqKiqImT69OnTp0//UBrjc/sTI3+w
	eKWfn5+fnx8hV69evXrlCiFyclCMESOApKQkJMTE5OX//HPHjsOHV66sqampqatjs0tLy8oq
	Kpqa4PlRS59ms5DxM3AgrOOEqKoqKysoVFQYGurra2s/fPjmzZMnly6dO9e37/DhM2eGhf14
	kZZ1dampEhIJCYmJaWmzZoWEhIfHxIBh8uc319HA58Hns7e3tjYzmzULnv/OHTjq5+eTUlIS
	EuLiTKasrIyMpCRd68HGBhykffr06dO7N21gwnGRmJiYmJAAGXBZWTB+iopoB2hdHTgCwDD/
	oYGSl5eXl4eHTg1Hh6usLIwzdXV1dTU1OgLQwAAcEGi3sba2traxoQ2UsO8sKWlq+rX5JCGE
	yMrW1hYWFheXlXl5we7bwQEMggyGoqKiopISLaV0//79+/fv0xk56IguKioqQqmgqio6pR7n
	SzpDB/gnZhJghCYaPDHFX1QUArBkZWVlZWVpg6WJCezrLS0tLS0taQc8GjAbGurr6+ra2rKz
	8/IKCzufT3aagRIGAA/P+vUrVy5YMHHiq1ceHv7+Ojq6uvDDxogq1MD7Nt/XsSHlYympTCY9
	IFFTD1/RQweir0xmWFhUVFxcv37u7p6eAQELFsD1Vq78VbUwOoKb2+vXvr75+YWFxcXl5fX1
	Cxb06NGjB5v9sxkmEZiCiRt4AQFDQ23t+noIcf63+mjfFx4eT55cumRvf+7c1av37p0/HxAQ
	HBwVpadnZGRsbGJCyIABgwePHEkb4NHjjL9rJM4QschioQEWUqz5+DDCET3ZmHqzYsXKlStX
	0guStLS0tIwMrXVHp5zSEZSYutjSQnvEcQHNysrKysykPW4YiaSsrKysokI7JBQVFRUVFRkM
	qE7Mz4/PgxsC/J6amtramhoenuzsrKzsbELevXv37t07efm7dx8/dncfOhSkBnR0gFjOnNmv
	34gRs2a9fdvVvzMaHE5bG5PZ0tLc3NIC9a4J+fxqzD8L8HnQo4h/JaStjcOhidfPDk1NDQ1V
	1aQk0EoOD4cIuiFDZs2aOXPWLEIGDhw0aNCgrrs/HK8Y6YdasDTB9ff39ydEU1NdXUVFRsbQ
	0MBAW1tWFs5OSurq9v1eAM2y/HyQkmlsFPg/YCaAs7Ozs7Nz190f9hsSzP79+/d3dgbi2tQE
	kQteXshnGhshkj0/v6vb9XsB+SRoq02ZEhAQHBwRYWn5oxomO0JjY1NTczODAVrdPXu+eePt
	/TvzScSTJ8+fv349dKiXl7//u3e9e9fW1tb+iDWvMWCCxYINY20tZISgVqKIiIiIkBCmOOL4
	7HqDlp/fy5c3btjZXb588+ajRxcuPHny4oWHh64u1J/9XFcZruT8/FVV1dX0tvXD4kbIq78V
	kP9lZ2dn5+TQrwjYkbDZ8Nr+7E8xKxYLUokJSU/PzMzJkZYODY2MjIubPRs0Zrt1A8MAFvv4
	kfhkW1tbG5MJkYU8PD+aQf97PG1bGxpmeHh+NT4J0lcpKfB8kZEwf/Tp4+3t7e3jQ8jkyZMn
	T5lCG+4xsAoj7b5X/+N+D/bFtGELpWaioqKi3jdDQq0DGRkjI319La1fl09i5C44vNPTgbe1
	tMC+ms2eNWvmzJkz0WFF77O/lwMBZWsw8AozgzFyHdcvNECzWFBtvbi4uLikBNYvYeGGhoKC
	oqKSkuTkzm7PTjNQFhWlpgYEKCmlpKSnZ2X17l1RUVlZXc3Do6kJP3QM+cfX7433PYGfc3xL
	Cxh4UEsPJ4KkpNTUjIz+/TMyoqPfvDEwgKOjozurXbsaUGVYTg483AICmFKIEyRGpKKGBb5H
	wxUeh5+jpwBDldEjgCkfFIXiztBv7TW/MNIWDSJoSMMiLSIiIiKiorQhGj9Hza+3b9++fZ9u
	QGhzWhpoSoWHd3b7UhRFNTby869fv3Kli8uCBaGhkZEJCXp669f/+eeGDYRMmTJlypQpH4b2
	f8n130/Jxn5BbcikJNCmePbs2bNnzwg5c+bMmTNnoL04HKgCJirKYKAnBz1ylZWVldXV4AJg
	MhmMsWPHjh07FiKXly6lDf5giKQ1Ntjsf6awfinQ8IkaKIcOHTx44ICenoaGqmpgIGz8mppg
	oefj+1G2svQvGrcuuGDh689KNJHI4Dj+EAwGk9n1G7ZvB1FRPb3GRqg2CaU5srMpCjRtGYym
	JlhHHBwcHBwcaIM8pgJ/r6Jh7TMEcHz7+4NB8ty5c+fOniUEqkU2N2tpqasrK7u5SUiIiYmK
	pqV1dat+b/Tq1a2bjU1GBojwFxb6+gYGhoZqaBw6dOjQoUP0+oTFczB1hja8f99+w/kZ11fc
	8J8+ffr06dP053Z2jo7W1oWFvXp162Zrm5Fx6tT58zdvdnXrfnsUFaWk+PsrKUF/9e5dXl5R
	UVnZGTHI3wcQ2UVIYmJKSkZG//7p6VFRvyOfbGurqIiPl5GZO9fFZdOmYcPS0zMyPlbN+0cB
	jrvcXHDsomMb51coblFdDfzIy6ur75eiKKq1lZ9/27b165cvX7Dg5cs3b/z8DA3BMNn590MX
	54BqtOLi4uIiIgwGFNnBiGPUHqSohobGxqYmBqOziyHV1oLhFgJrDA2hNgHwyeZm4JNs9o/D
	J3E1+hEKkH5PYGbYP//26/BJQUF5eXPzigpLSzMzI6PY2Ojo2Njk5F69UlLS0jIzmcz2RV07
	C8hLqqvBIVNdDYavhAR4Rd4PEcjNzZqayCfFxcXEfn0+OXBgv37durW0QEp+Y6O3t59fcDCb
	XVwMgQA/CnB/iQFLCNTOtLW1tDQ2bmmZMWPSpBEj2OyHD58+dXfvvPvrNEJXUVFZWVWlri4g
	wMfHZhsaiouLiYmKgkhnaiohx48fO3bkCH385xoQ2y9T71c0+pzzPw36Su9/B94/LKRKSuDh
	lZTsrPb8UWBtbWFhbJyba2Cgp6elVVEBxQTk5VEsFzUGMVQZDWC4UW5fZaq9QQY9DbRh8p+i
	/+0jYPGVroYFEXdoQEOtINScxBRLMTEw8AUEBAYGBkKkHi8vIQYGurpaWnV1pqbGxnp6DQ2d
	3b5ZWTExAQFycvHxiYmpqXZ2qqqqqurqhAwbNnTo0KF0e2EKTPt2xPftX9uLH2O/tCfYWN08
	LS01NTmZohwcbGxMTRMTjY0NDXV1g4KMjfX1dXSamkREhIUFBXl4amvr6urrW1qCg8PCYmKa
	mqCae9++aWmpqSkpJiYgmcBgoEivsjJ43iQkoB8wUhL7CfsN+xH7ldZa++d7jDQaOnTo0CFD
	CLl/H7T24uOTklJT7eyysmJi/P3l5LB1u3r84K8Y/4XFh65evXr16lVCgoKCgoKCaEPyzwYc
	n6jFCJGi7z81pFh19X1+2+dtbk5Li4hwd9+3T0JCXFxUtKXl5s17954/79178+ZNmzZs0NcX
	EhIWFhHh51dTU1NTV2cwUCQbq3yj4RLnp/c1X9+XOsFxjo4dnG8xFRjHMS2KDRqTeXl5ebm5
	oLHb3NzWZmCgp6ehkZ8/a9bEiYMH37sHEgl//aWiYmTUu/evG4mHGDduypTRo0NDQeNq0yaQ
	vli+PCIiOjo+3tp6/vz58+fPJwS1sVEDSltbW1tb+8N+wwwCdIB11G/tHUPYb+9HtIN2KFTp
	xpSp/Pz8/Lw8QkRFhYUFBJAQh4ZOnjx27NChR46MGzdlyqhRoaGEzJy5fHlXt+63Bzi41dUF
	BPj5+fgMDUVF6YyBn3E2oVO3WCweHiUlqJr6+/HJ4uKSkrIy1Jg0N0d++KMCx+uSJbRkFINB
	j19z8/79u3dvbgZN7K7LwEHk5SUm+vtjoEiPHmVl5eWgLNa5gKqwFGVmZmSkp5eYaGZmYmJg
	EBRkbGxoqKPT1ASSPTw8sK9qbQX+y8cXEREdnZDg4BAZGROTmKivDxGNnTfisb0ghdrOLi8v
	ISEwECPCsrM7vyU/BtpE93Oyxs8H8uKPWwF+fiCfTE0ND3d3370bNF4LCtzcXr/285s8OTk5
	LS0z09i4qKioqLQUA0Q67/mR38M6TAhoZba1WVmZmxsa5uf37t2tm50dzSeVlQ0Ne/X69fnk
	kCFjxw4Zcu8ezBeSkvA7nTcvMjImJiFBXx/4C0hm/AgjFPsR9iscjoWFqamBQWLi9OmTJo0c
	ee7c8OGjRw8a9ORJZ99XpxkogXAkJNjZWVubme3dq6+vq6upaWDwsZSH9kbGjzVkxx37z6pG
	H77/1PXbf/bvR8vLy8nJyJSUQGhs54fAdjUsLXv2HD06MNDR0ds7MPDEibS09PTs7HXroqIi
	IsLCoC4qgwEmiPd9ery8LBZoXUCVPwYDE0P+6fn7WGTK+0d0NBXD743DKS+vqKiqKimpq6up
	qalpbq6oAANcbm5ubk7Ox1P9WSwGQ0pKUlJCorFRQUFeXkbm1i2IjCov7+z2dXV9/drPr7gY
	UsBSUwlhMHh4DAxmzpw1a9asDw2SGGna2trS0tqKrUAXp2ppaWlpbn6/eiy8r6+vr29o4HDq
	6sCTDsexWJhSPXXq+PHDhkVFTZs2ceLw4S4u9vZ9+/bpExbGYDCZcnIfGm5RrDs42MPj7l1b
	22vXbt9+8uTUqWvX7t69fdvcvKmpqam5GQyQbDaHA+LxFCUkJCgoKIjfy2CgFgoch7+Itjas
	Dg6GSSYTU6zap1zFx4OBFUwxqalubm/e+Pp2vQbUP8HhgKhyXZ2iory8rCxFFRbm5+fmcjgF
	BXl5mLr0z/nrw3npaxe69mPoQ5fMx6//qc//eSxEOsN44uERFBQU5OdvaMBiR53b3t8fWloW
	Fs7OeXkURVHl5evWgYaVlhaI1Q8blpiYnJyW5uycm5uXV1hobu7h8fp1YqKgYFVVVVVtLZsN
	9aSxrAoWn2prAwMGfMpkMhjwV4ricFpbORyKgr9CihMQ97a2traGBtAwam2FjV9aWq9eDg7m
	5vn5ZmbGxnp63t6wLnt6Ghra2JiZRUczGCyWisqPbBr4tmAweHnV1BobYd66eVNLS0NDTS0h
	ISjo3bvw8KlTQRu2Rw9I+dPRCQsLCXn7locnMDAgwM9PUBDnUzifw+Hj4+fn52cyYX6C/mKx
	PuQvOD//03GEdXOZTJz/+PjYbF7e+nqogtnaamNjZtarV0qKjY2lpYmJr6+9va2tpeX16zY2
	vXqNHh0R8aOkkn4vtLZyOBxOQoKtLc0ntbSAT/7bTPShA/uf7//tWPwbfsP72s7vv+/oep/6
	vvf5JJP5e/JJOTlFRTm5jAzYID15UlFRVVVdPWcORLBBteXP/V13tI79Gz7cLXze99CGEjhP
	X19LS1mZwTA1NTLS0wsK0tHR1FRTi4/v6vYtLS0trahobs7Jyc0tKKiv72gf1d7hj6sN1CBn
	MIBnfdiy7asAg4Yxh4MK6FCUhsGYNGns2KFDo6KAV7q4ODj079+3L2g6ysp+jE+2tRUVCQgE
	B3t5eXtbWV2/fufO06fHj1+/fufOs2fm5sBf8Vk4HDablxfWSph/cd59v3/xPtvaKAr4KBZZ
	YTIxMOJjmSsURUhERExMYmJODmjwYyLljwIOBwxGdXWKigoKsrIUBesL8KzP5Xsdff6pkfHf
	5sBP39/750H/slj4vPj8ndXSnQVtbUtLZ+eiIsioO3iwWzcHhydPXr4MDQ0Pj4kZNerdu7Cw
	6GhzcyhuZWQE+155+fLyysqqKjYbep+XFyRhKAqKqsA+Cp16yBio9wDtymSili60dkODnJys
	rLR0a6u4uJiYiEhampmZsbG+fn6+iYmhoa6ut7etrbW1qamnp5GRnZ2VVXQ0g8FgKCr+TnyS
	xVJVRT558qSCgry8nJyPD0i4jBmTkpKenp09ZgzMw1pahYVFRaWlvLy1tXV1dXUMBkjVgPAQ
	RTGZWHyWEHq9+fj30v+CGRfnPZi/BQUFBAQEmEwoRktR8vJyctLSLS0Q6ZqWpqWlqamq+uBB
	//69ejk5PXjQv//IkbNmxcbC/Nn5xRY7zUBpZGRnN2xYcTE0+L598Fcsd/OzEml6yvxVqoZ9
	eQuARlJEhK/vo0fHj0NEaVgYpDLKyOC0137gQJIGDBwm8/1Q/Y8bKNu/0teh370f7t/ayuG0
	tjY3u7t7eAQGxsXBBrO29n3C8v55+J2okQdi3y0tjY2trRxOcXFXVdXs169XL3t7CYnnz1++
	9PRUVvb3f/s2PJyQnJzMzNTUxkYlJUVFefnaWhUVRUVZ2dpaMTFRUWHhysr4+KSk9PQnT6Sl
	paSkpAjR19fR0dTU0cHFCCc42Fi3tYWERETExkZGZmXl5OTnV1XZ29vYmJk5OsICxGD07dur
	l6Pj8eMODv37T5r06VT3f46HoKAnT27fPn16zhzYeLm4YAo4GF6DgmDh43AGDOjTp1s3OzuY
	QIWFsXdwgoaUvpSUkhJIiYPIrxEjqqurq2trxcXz8goKiouFhXNyMjMLC4WF6+pqa2tq+Pm7
	dXNwsLRUVu7Xr1cvR0dUR+38iNgPwcvLy1tZaWxsYKCjs3btggWzZk2YoKmJBKHr7utrtnf/
	djUAaHKJiampqagoKWVmEiIsLCb2oxH8bwcG4/+1dyc/TW1xHMB7pRRKoUCZOtFeaCmEBsok
	g0NIyAvuXGmMG00clu507X9B3KkxxrgyrJSEmBAcCqbYMgi0QAc6MFM63QqF+xa/3JQiPPC9
	GHz4/exuoLTc03vO75zfGRhGoRAa9tlZugsuVyTi99tsz565XHNzHo/BQDNaysupo9XWRnvT
	mUy0hxbHvX8/NPT5s8Oh01VWqtUmEwUaxcUcl0wmk5ubdHqw0/nXX93dXV0Wi0ajUlVUSCRU
	Dw4N0euCQa1WrVYqJyfr6xsbm5s3NrKzCwp0uljsrA9onVTmfRgbo+FGhyMQcDo/fSorc7lc
	Lre7sdHr9fkCAZalGQuXL9OhJ9vbtATQ4aiq0uk0GouFOogdHdQNkMmoHhPiBaGzTKW4ve31
	er1+fzBotba0NDaazZWVWq1Go1Tm5FB3e3iYZfV6jcbjMZlqaqqrx8fVapOpq2t1lWEYRiz+
	c+KPhoaurqtXEU+eNQyTn28ycdza2sKC1fr4cXf3pUvt7e/e0UBXWZlwf/a/5vDSPn4N1XEJ
	v8zP9eNP/7mF5Hme39ujePLLF5lMrW5pOY25iplohoxUSvUKbQyUn8/zGo1SWV6eTCoUCkVR
	kd9vMhkMen1WVkFBfr5MtrZms9nt3769ft3R0dbW2FhdXVqqUBQXKxRCQoBqtfSSbJrZGIsN
	Dg4NWa02G9WHNTV0+IxYTHHY8+cXLvT23rxptx/3uTMT4R8+9Pe/evXkyd27NFD64AHFrevr
	Y2N2+9SUw9Hb29Nz8aLZTB1vnY5+jxJ4wl7pPM8w6+sbG5ubGxsjIzbb+PjCQmurxWI237gR
	jcZisVhpqcs1P+/17u7SYUFabSAQCi0v5+Y2NTU01NUZDJQYEb6X0ehply+l8sNhs/nwePK4
	CT77Ey6Cn6lN97dqP85szHyfo/72SQdC0+/HMJWVWq1KtbAgEkkkYvHpP2e/CsMwTG6uEE/a
	7RSfjI9Ho8HgxIRcPjU1PT07y7Jut8ezuFhZSYevtbXRGQQmE32fl5ffvh0cHB6enGxpsVjq
	61taaOu6oiKO47hkcnOTEudOZ09Pd3dnp8VCEyeEgc6hIZbV6dTqYJBmTKbjSYlELtfrEU8K
	Mgf27Hae//59fX1qanra4RgZefFiYcHt9vmam1dW1tbW19vbA4FgcGWlsPDjR6vVZvP5DIbq
	ar3+yhXqH6vVtAKN5ylB++MEK7E4vXI0O5th6DoWo5WM/f2trc3NZnNFBfUDIhE6VHZ0lN7n
	69e6Oouls9PtZhiJpLiYBpTv3DnF+3faBQgAR9vYcLutVrmcNjN/9CgSiUbjcb2+psZoZNmB
	gdpao5FlvV6dTqNRqZaXZTKZLC+P4/LyioqUylBIJJJKlUqhoThu8+jdXaFh4fm9PdpkOxJx
	u3NzeX5nJx6Px8XisrKmpp9veFKp1VXaqUcslslksnPn5PKqqmSSYbKyxOJ0ZkaYeUlXR8+P
	5XmOC4UYJpEIh5eWVKpEIh7nOKnU5/P7Q6GKitnZ+XmPh2UdjomJmZnz5+lUx6Wle/du3bp2
	ra+vpKS6uqtra+u0yxdgPyFjSlfp51UIdA5/PtIDGsLhIZl/Nf1cn/b/d1YI3T26Sg+MpcuB
	45aXJRKOC4dDIZVqdzeVSqVycoTst5Bcy8rKzhaLt7el0oKC4uLNTZEoL0+nEzq6+1NnIhHK
	EQD+i3DY5xsdlcufPn358s2bhw9pIJFla2uNxqqqgQEamJyZoUTI1hadAstxUmleXn5+KCQS
	yeVG48F66SgH2yWhPROGlf79APzu7tqaw0FdcoonCwp0Oo5jmKwsieTg+x0X9/K8SBSJzM3x
	fCIRj8diKhVtmSKVejyLi8FgYaHTOT/v9dbV0ZYf7e10uvLS0v37t29fv97Xp1CwbEcH4kn4
	vRz+HOztCRNuEE/+Hg7WjyIRJVGSyZWVqanyclrRWFgoJLj3z9jPXAGaOfWKBja3t3NzS0pK
	SwOBc+eys7VaYaKVUM7/x9MNAOC3kUpFIk6nVJpKRaOLi2fpfOdfi+cTCb9fIuH5RGJ+HvcN
	AAAA/lw7O+HwzIxUmkpFIognTy4dT8bjc3O4bwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
	AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHBSfwPHvfAILRLS0wAAAABJ
	RU5ErkJggg==
	}

	set pieceImageData(USCF,60) {
	iVBORw0KGgoAAAANSUhEUgAAAtAAAAA8EAYAAAAf3lEPAAAABmJLR0QAAAAAAAD5Q7t/AAAA
	CXBIWXMAAABIAAAASABGyWs+AACAAElEQVR42ux9dXgUWfP1nUkycXd3N6IkRCDB3X1xZ/HF
	FllgcdjF3d2SECxAgBhxd3d3d+3vj/rV19lAXpwEmPM8+/bLZKbndvf07XOrTp0ihA022GCD
	DTbYYIMNNthggw022GCDDTbYYIMNNthggw022GCDDTbYYIMNNthggw022GCDDTbYYIMNNthg
	gw022GCDDTbYYIMNNthggw022GCDDTbYYIMNNthggw022GCDDTbYYIMNNthggw022GCDDTbY
	YIMNNthggw022GCDDTbYYIMNNthggw022GCDDTbYYIMNNthggw022GCDDTbYYIMNNthggw02
	2GCDDTbYYIMNNthggw022GCDDTbYYIMNNthggw022GCDDTbYYIMNNthggw022GCDDTbYYIMN
	Nno/GD09ADbYIIQQiqIoimIwTp06fHjbNmPjpqbm5tZWAYH16zdsWLUqOJjB4OFRUGht7elx
	svF1Adedyayqys2NjJSQqKysqCgvFxcXF1dQUFLKyRESEhfX0mpoYDAYDAaDot79fGNjbi4v
	b0lJfn5+vqBgQ0NDQ12dhIScnKyslFR+Pje3pKSRUXV1Tx8nG2ywwcaPgubm4uLoaF5eTk5O
	Tk5OEREGg4ODyWT8f74I8zH9fpjHCWEw4D/83/f9vfOrra2trW1tVVUslqSkoWFjY08fNxts
	/Ijw8XFzu3mTyRQRERYWFBQRkZWVlpaUbGiQktLUtLFpaurp8bHxbYD8uba2oCAmRkyspKSk
	pLiYg0NWVk1NQ6O2lo9PSEhVtbGxe/7c1JSXx8tbWlpQUFAgKNjYWF9fVychISMjJwf8WVzc
	wIDNn9lggw022Pi64OzpAbDBBiGEpKaGh798aWQUGRkTk5R09WppaVlZRYWQkKGhvv7Ll7Nn
	w7v8/Xt6nGx8XVy9eubMvn02NtHRsbFJSXv2pKamp2dnS0qKiYmKCgsnJEyYMHr04MGPHlEU
	RRUUPHjAYDAYcnItLVlZsbEeHmJi58+fPXv58pYtL168efP2rZkZJycnJweHoqK+vo6OpmZA
	gIvLzZsnT27cOHHirFkrVxYV9fTx/igoLExO9vUVF4cwk7Q0k8lgMJnNzR0dHR0dHfz8FEUI
	RbFYnJwcHBwcpaVcXFxcXFyFhSIiysqWli0t3e23pCQtzd9fUhKWTsLCsCRiMmEhxcXFwcFk
	Mpm1tW1t7e0dHaKiEPaqrWUwmEwms7paUlJdvV+/8vL/PW4BAfiXpiZ8vqqqvb2jA/fHwVFb
	297e0dHeLiRECEURkpUlK6ujY2/f/X5/dcD14eAoKEhJ8fNTVq6rq6urq5OX5+fn5+fnr6mR
	kVFR0dRMSuLk5OGRlW1u/rLvYTAKClJTg4JkZevra2urq9XV4fdVXS0lJS+vrp6UxM8vLq6i
	0v3vjI0vg6urm5uHx7Rp+fkFBcXFK1e2tXV0tLczmfh3RhfpAoY2GN1IGrqGPmDe6OhQUJCV
	lZY+eRJevXq1p4+bDTZ+RPDz8/Pz8goJ+foGBoaH//uvhISYmIjI69fw1zt3enp8bHwbnDhx
	6NDWrYaGmZlZWXl5R44kJCQnp6cLCEhLS0qKi+fkjB8/atSgQY8fd+XP2dlxcZ6eYmIXLpw7
	d/nyli3u7h4efn7Anzk5FRW1tDQ0VFT8/c+dO3Jk585165YuXbdu5042P/pYlJVlZAQGcnOz
	WCwWFxc3NyYAMHGLz0ngoYQ0NDQ0NDU1NcnIaGnZ2XUvtKqvLyiIjOTlpShCOjq4uCCtS+8X
	/kUI/i+D0TlV3NoqICAnZ2rafaK3uDglxc+Pi4uXl4+Pm5uHh8FgMJjM/yac4bs7OiiKwWhp
	aWlpbW1ulpBQU7O2/nze97MD+XNhYWqqv7+ycn19bW1dnZwcP7+goIBAXp6srKamhUV+PoPB
	YHBzf77Qrit/bmioq6upUVfn4uLk5OSsrpaQkJVVVU1KEhCQlFRTY/Pnrw08/7duXbhw6NDg
	wcnJaWlZWQMHtrW1tbW1MRgdHe3tHR30/QTr2q776Pz/OzrwnqYoQphMeD8nJwcHJydFaWlp
	aqqoeHjMmrV48caNr193l2jsrfhpA9AURVEtLRwcSUmhoW/eqKlVVVVX19Q4OuIkKiIiIiIk
	5OmprW1uPmhQRgaDwWCwWO3tPT3unx2YsYcbpaMDXw8JiYiIjR0yJDAwNDQqytAwMzM7Oy+P
	okRFRUWFhDZsSEwMCXFzKy/X1bW0HDkyKamnj4ONL8Pz505OFy7o6x84cPTohQu7dqWmZmbm
	5dnbS0iIi0tIEBIeHh2dmKirW1fX0NDYaGcnJCQoKCBQWQm/n9evz549cmTHjs2bz569cuXe
	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
	5MkLF27d+uef8PCoqLi41lZ3d1fXy5e3bIH7TVCwvr6hobGRj+/581evfHzExMTFxcRERFav
	LipKSwsK2rZNRkZDw8oqL6+nj4eNzwPy52vXzpzZv3/ZsvLyioqqqvHjGxpgnkY0NjY1NTUR
	AnxLQkJXV1tbXV1f38bGysrUND09NDQyMjZ2zBgMPLe3gzIPAetlPr6KisrK6urFixMTU1Mz
	M2Nj4a/37/f0eeitgMSssHBxcUlJWdno0W5u7u7e3np6INSA98BTDp6XIiLCwkJChACfgXc0
	Nl68CO+k+XNHB0V1dMjLR0bGxiYmjhkTEREdHR8vKYkK5e4Az3FCLCxMTAwN9fWHDx882N7+
	zBn4a1f+zMNTWVlVVVMzZMirVx4e/v4ODvA7gFF3VkCDtpsQTU11dWVlKSk47hMn4B3sADQE
	nrm49uzZvn3LlhEj7txxcnr27ODB7Ozc3IICbe22tra29nYI5HNw6OtHRcXGJiZqaNTW1tXV
	1xcWfj5/PnHi8uX9+8PDo6ISEgwMmpqam5ubkY8JCkIiYv16SFRWVVFUTU1y8qVLDIaQEFt4
	87XAYMD15eCorq6urq0lRFpaWlpGhpBDhw4f/ucfXM8QsnMnxDmysrKysrLoPSgrKysrK8Pf
	d+4EwayICCF//PHHH3/8QQhYLcF6tr39x+XPP00AOjMzNtbTk4/vzJmLF2/f3rnz/v2HD58/
	nzy5sLC4uKyMl1dUVFRUVJR+P2QezMxiYxMSUlL09Kqqqqtra3V1s7Pj4728li1TVtbXd3Bg
	35BfC5AxNTPz8fHzCwlZvjw7Oy+vsNDWtqOjvb293dm5pqampq6ub1/wiWQwLC0tLS0tCUlK
	SkxMTGQwrl+/c8fVdeBA2NulS05O164dOxYY+OjRnTunTzMYoAioq4Mb0t1dU1NNTUmJwRAV
	FReXlExLk5RUVTU3LyvrqrxmoyfAyQmBB0lJKOEipLGxsbGxkZCKioqKigr6362tra2trYSA
	krW9HYgYJydYKjCZqMQDSwBCqqpgYm9pgc8JCwsI8PPLyIByV1sbvp8dgP7fwMI++pXx48eP
	Hz+ekLFjx44dO5aQW7du3bp1ixBvby8vT0/4DL6Xk/P9ewQyDP8JCgoKCgoSsmXLn3/++Sch
	amrq6urq9PvT0tLS0tII2b9///79+zFQRVFI3t83avxe/B6KImTkyJEjR44kZNq0adOmTSPE
	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
	lRLSf4d/Qya3ra2mpq6uri4zk4dHWtrYOD29p89Lb0dExNu3Dx+am585c/ny3bsnToSEhIfH
	xvbtO378hAkTJxIyYQJ44/xsQCWglZWVlZUVIRhwxcTG27cBAWFh5uYjRgQGPnmirQ2f+pgp
	5sdCRUVWVm6uoqKQkKAgP7+9PSry0EOupzzNBg+GEn8jI2h2hmb7nZtfsVj0Qg1KhTDD+z4X
	YTYAvVsH0XW+72lPvZ5C//62tpaWb996e/v7h4YWFb1+7e7u7i4iMn8+/P537969e/duJFqc
	nEePHj165IiS0uHDJ05cubJ9OziocXBoa2tp6ei828TiU9GdN/enAgOuuDCOj4+JCQ+3tz94
	8PjxS5dsbBISkpMzMri4Zs787bfZswn5808gZKhEwAC0oaGuroZGSYmjY//+1tavX8PvpK2t
	p68bAom8n9/Ll7dvv35tYKCrq6m5ZAlYPamr+/r6+vr60sqL7w1UbOjr6+vr6xNy5crly5cv
	YzKefh3f11MICoIAV2RkZGRkJCFWVubmhoZ1dVZW5ubGxhERWHLacyP8OuDnl5MzNf18/hwS
	4un54AGDARYan65gxM+BNyCDwcMjLW1kxObPHwusILx69fTpffsmT3Z39/Dw9R0+HJRq774f
	S2Rx+62aDX4pwsPDwyMiCHFxcXZ2cSHkjz9AuGFv379///6EDBo0aNCgQVipxmKBpdLEiYmJ
	ISFubug2/PPxZgRYUCopQYLRwQEETz03nrw8SHDExsbExMTQz1kUEKmra2ioqxNCyKtXnT8H
	LIvNn39m/Eo8GoQJb9++fRsQEBpaVAS9Q0RE0PMeAYpaTs6XLz08/PyUlKqqqqtra7dvb2ho
	ampq4uDACoHeBrTaggSnvf2hQ8Cfg4LCwqKjubjgOf7u53A9ZW5uYmJgUFY2bNigQXZ2Hh7w
	ek/OXO8bZ0dHYODr1/fuhYUZGxsYaGvX1XUXgC4pKS0tLaUDxVhpiVYV9vb29v37Q4WIjw9d
	+YHN3q9cuXLlyhV6nkRBIgovVq0CIRwGsjHB97HAgPjatRB4RqFdbW1tbU0NNP/dt4+QBw8e
	PHjwgB4fAhwdoHdE//70cSGQH3dtMtsVYAlYWwvWGyEhX8qfe11pwOeioqKqqrqakLq6+vrG
	Rlqq3tUjDcHNzWKxWIRwcUEgsbGxsbG5mZOztra2tqGhJ7Q6PxaAIJqa3rr14MGTJ6dOQVdr
	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
	gg==
	}

	set pieceImageData(USCF,65) {
	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
	2dnZ2dHR1VVampdXUFBcTAiUNM+bB1rpPT3AKOHhUVZWVlZWhkDd4cOEeHl5enp6EnLq1OnT
	p08Tcu7clSseHgYGEFBCSSxCeHl5eHh4cACpqZGUlJQUE6uv19bW0FBVbW+HkqXnzx88uH79
	+PHkZNDcDw/X0NDX19LKy2OxeHk1NBim2mCCmFhrq5CQgAA//507srKyslJStraQWRYXnz59
	+vTp0wmpqampqa5GxhshDg52dlZWtbU6OlpaamotLT09PT29vR4eFhampgYGs2dD6a2p6fLl
	y5cvX04nJmpra2qqqynKzMzQ0M4uPByYB3fvsvsafOlA8x8ndnFxcXFxcUKmTp06depUer3z
	58+fP3+ekIaG+vrqakLgvRYXLylJSwsMdHXNzo6N9fXl44PAQ18fGHRSUlBBICqKRrmFhaWl
	pSVWpLx+PGVlZWVlZYTcunXr1u3btESTkJCgoIDAxIk5OXFxT57U1GDRdFFRampgIAeHoKCA
	AD+/tjYILREiLQ0MCHwOUdPx0qVLly5dIqSqqqKCKZR/d9TVNTQ0NYmKVlZWV9fW8vDo6Ojo
	6OgQ4uzs7OzsTIikpKSkpCQhFhYWFpaWUKqqqkpIYmJ8fFxcVxfMC29fodjW1tbW0aGn19DQ
	2NjcrKICGriE2Nvb29vbEyIlJS0tLU2IpKSUlJQUIZaW8Hw9fx4aGhwsIEAIIRTl4kIIIRUV
	R47AVhmH4VOCg+NlKSP4b/z48ePHj6dLns+ePXPm7Fm6ouiXX3755ddfCZGQkJCQkCCkrq6u
	rraWkH379u3bt4+Qq1evXr16lZBly5YtW76cLnm+ffv27Zs3X93/1+AwfK149MjD4+zZcePu
	3Hnw4MmTFSuSk9PSsrMVFDABPBC6urq6urtZrMTElJTMTAUFHh4ensePV6zQ09PW1tBIT8et
	s/v8/iuA97uzE/0DqDzh4XFzu33b2/v774Ex3tlZUFBUVFpKp/zQvzh+/OzZ69dHjUpJSUvL
	zpaXnzx5/Pj0dA+P7Oy4uCdPYmKUldXV1dVTUnh5+fm5uFpbWSw+Pg2N1lZ2nzeD94e4eGsr
	2HF37sjJychISdnaVlRUVtbUiIv3XxcIaIRMnDhmjLNzT4+jo739kCE9PTk5eXmFhUFBtrZW
	VqamxcXp6VlZublqash8RQABiaIUFOTkZGTCw2G/QFlh8PmAfgVon4uLFxWlpAQEuLqCHc/H
	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
	J4eQHTt27NixA/7Ozqa/x8pCjFO+L9B/QIlGBMb/0M8dKLGAcHV1dZ0wgT4/RH09nH9QUFBQ
	UBB9fQaCgYGurqZmRYW5ubGxri72LPnwnq9frQEcH5+cnJ4uKpqZmZ1dUMBi9W/+219CB/9G
	hx4zWNBcSV6+oKCwsLQUm2kNntLLwQ5kot+9++DB48cLFly6dP36vXs//ZSQkJSUkSEgsHLl
	ypUrVxLy448//vjjj19uRcKH4unTp0+fPqVLrRDZ2Xl5hYVCQunpmZl5eWPH/reev74+GOhq
	asDQpqj+FUfsBo4T48aNGzd2LB34Ri2+7m4odevoAEcYmjY2NeXlFRQUF1+5QggPj5ra4NFK
	/1LQ/95jAudLAOMs0GCxBAQ0NevrTUyMjHR1T51SVJSXl5YuLPT29vb29qYNPJwXFixYsGDh
	QmjCe+IEMD/09OiKBRMTExMTE3af1cDQ09PX19cHBousLPRoUVYm5J9//vnn8GFCNm7cuHHj
	RlpSLT8/Pz8/nw7AKyjIykpLt7ZCAPnuXQkJNTUbm8pKdp/X28LKytl5xozkZHt7Gxtz83v3
	ZGWlpSUkenuvX79+/fp1ukKA3bCzs7OztSVETw+YpcgoRaapjY2NjY0Nu4+SkLi4+Pi4OEKu
	Xr169epVQmRkpKQkJAhxdnZ0tLEJCDAxMTHR0/P3Z/dxDlagfZqQkJKSkSEunpWVm1tQ8P6W
	BTSd5OICYoiBwX/LXvt08PC4cuXWrWHDPD0fPw4MXLoUpC++Xk8Bm8k/fPjw4cOHtGQCSjZg
	BRUPD0gbgD0pLx8bm5CQkmJjA8/dlxNA+1BgjxJIUCcng58weCxCsPshYRQV9XrCCytUuLlf
	JUaArdjd3d7e0dHRERlJCD+/qio7xbwYfE4wvsKroP0FQ0Nd3VOnQHqzsPBNv8NK8oaGxsam
	Jvp9/FLQ3Q0B4oaGxsbm5rev1NfT09bW0OjrGzrUxsbc3MdHXFxV1dq6ooLd5/O2MDMzNzc2
	9vd3cho6dMiQgACQTBp4/YgIkFyNiHg1MY/S2hhnNDV9VUqoP7An6qVLly5dvEjPv1hxhtKo
	2GPzbYFNmxcsWLBgwQKaQIcSidgLKi4uLi4+/n9dF6j0xvPp39Q6IiIiIjz8dYJCf4BUNyFW
	VhYWxsb37llZDRs2ZMjTpx/r/n11CYbKyuzs588VFQMDQ0OjoiZPTk/PzMzJAWajjQ3dZGkg
	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
	X/F4S6llnI/ohCFraz4f/A9iMe2HQLvE3t7e3t6eTpTGXi+YCIMVUFVV1dVVVXTAEwKLHR2w
	X9izh8FgsTw8iL0A82NrK9wHvB4ODnhdN23atGnzZggsRUTQ/lx05OO8jHZbdTVcd0wcwvGA
	+3v0Slhb8/nW1vT9xkS37m6QxEJ4PB6Pz6craDDRCdcJb2/oJYr2K77HdQPHcX5+fn5BAUVV
	VYHELqz7YC8wmaNvL4x6gAEy07ncHTu2bHnvvf/5n+++O3r01KlJk0B7m8lcuXLlypUrKeof
	//jHP/7xD4oKCQkJCQm5d/PWhwU6ePHVEpQ2iIqKioqKgojYqlW0wYtSPUlJSUlJSVIpNA/7
	wx8UCh8fL6/+fpNpcLCubuNGBsPKys3t8dVYvhdQwu7sXFqqUlVWwuPo7ExRr732l7+89tpv
	L7CAYMQSM2OlUokEFiYbG4kEjhmLhnROTmrqyZMREbt2ffvtkSMffhgXd/FicvLs2WVlKlV1
	NZfLYECEF0vNMGOYyRzq8IOFm82GV4Wiurqu7uZNWsMQZhBPT8wYRHp7e3t7eiiqra2tra2N
	jgQj6GDCeWQkBxNq4oGjhy5xxM/Dz8e/h0CTPYr66qtvvz16lMmEygZbWz6fz7e2hlc+3929
	tbW9vauLjnwjYPiy2f39/f19fUplefm5c5cuQbO6gYFnnklMTE5OS1u2bPHi+fNnz549Ozs7
	JeXEiXfeiYiYNWvFCvMiyvEAkwmZpnJ5Y2NTU2urlRWOCyxh/60FFkYCNxIYMG9sbGiorRWJ
	YOM6YQIchU/I4xNgAAO8uJjL5XA4nI4OyNi0scHA/+bNULnm7AxN2R/1eEEHEM4r+IoGBBoy
	8+bNmzdvHkWtXfuHP/zhDxT17rvvvvvuu3STOKXS11cuFwiioiIjQ0KcnUf7uo8V3N29vT08
	amoaGhobW1oyMqysGAwGQ6FAwwCl06ACCHpnOTo++nGA6whWQOArPs9+fiClN3fu3Llz51LU
	iy+++OKLL1LURx999NFHH1HU559//vnnn9MSfQ0NTU3NzRkZ7u5yubv749dryRKTyWTq7QV7
	YePGDRsgsLBwYWVldXVd3fh3MKGDorGxubm1VSw+evSnn86dW7DAycnR0c6uvp7YCw8GOI64
	3C+/3LFj06YNGy5evHTp6tWJE7ESfbyA8wqXO9QOpXvHQEWdSCQSCQQU5eXl4eHq2t3NYNjY
	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
	}

	set pieceImageData(USCF,70) {
	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
	VlSUlz9+/Oef4dNhYUN9/VggaJoQYeHa2trahgZj4+vX79x5+JCfv7W1tRVpClMx9N+Bln/D
	4wGax79RVFRERFiYEB0dTU01NWNj+Ba0AH5/CNKHjrq6goLH+VFXV3d3T8+ECYQ8HhC8dQt4
	VGSkjIyWlpMTy4+GKzo6qqoSEynqwYPg4KgoO7sLF44e3bVLQADGhfBw2IqioqMfPrxwwc0t
	ISE5OSNDSQmEDV99paWloaGqGhcH2wUEDPX5sBheoGmarqigqLt3/fxu3hw5Ep6fX38FgYqa
	GgiwMLoiLl5RUVVVUyMuDuvp5cuVlBQU5OT+jR9dvHjz5qJF4eHR0YmJgoI4j5WWlpcTQgjw
	LyMjDw9nZ1vb336Li0tMTEv74Qf4HpYfvW4ATxk79saNO3cCA3fuhMqwZ7cAMDY2MNDRaWlZ
	uHDOnClTvvsO/nr9+sDt2ttratLSBATWrdu0adeun3+Oj09KSk//+OO+PuBHzwvgL4TY2Vlb
	m5ufP9/dXV+fnf3DDwIC0tIGBk/zIziv0aOB1+/YkZmZnZ2fLyb2rO8xMTEy0tNrb583b9as
	yZO//Rb+yvKjV8WuXZs3r1mjrb1u3ebNe/du3FheXllZXT19OiRyBATExcXEREXb2jw8XFzs
	7HJzR4709Kyp+eUXmqbppibgRxISL86PHj26ffv0aXHx7dv37j1yZM2a0NCIiNhY4Eft7Xp6
	wLy7u5WUFBXl5X19nZxsbcPDd+yAT1+4MNTXjQWCh4eihIWrq2tr6+qcnW/f9vcPDjY0BJ5L
	iIyMjIyMDCHa2tra2tqEpKenp6enE9Le3t7+7ywG5h0REVFRERFCTEyMjU1MCCkoKCwsLCSk
	tra2traWEDExeF9fX1dXU7OuDj75/vGjDy6B1N5eWZmUJCERGhoZGRfn6rpx47Ztf//92WfR
	0bGxyclWVu3tHR2dnWpquL2IiIgIhzNmDCgtExMDAq5ePXLk4EE3N0dHG5uwMFDKNDUN9Xmx
	AKSmRkTcuGFtff781at3765ZIyMjLR0RER4OFUUHDyYmhoTcu+foCAFhTc329o4ORkfPyxsc
	HBYWG6ujA+ZhW7aIiYmJiYpipvrcOTaRxIKixMRqampr6+s/+6ysrLy8qsrc3Nra2trGhpBj
	x44dO3aMEC6Xy+VyCZk1a9asWbMIiYiIjk5MFBW1s7OyMjVVVra2trW1t1dQSEvLzMzN9fZO
	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
	Nzc3N0I++gh+76/ag8be3t7e3p4QsPYgZPny5cu/+YYQsDBixhns0TUQ+PexY2GcO3bs2LFj
	x/j4oPmgp2dyckpKWpqPD03TdEfH+fMURVEcDjuuvChERZWVbWy43I6Ourq0tPXrKYqHh6Lg
	ztP0okVQuSMg8PXXX3/99ddMTyvshQXbPbnPgctpfP9Vwx0vsh+odCPkzp07d+7cISQzMzMz
	I4MQqHDs7l66dNGijz8+enTSJF/fUaPWrxcSkpU1Na2tHer78abQ1FRenpAgIXHx4rVr9+6t
	XHnixNmz167NnFlf39jY0iIpSf0fpKQkJUVFdXRmz542bcIEJaW5c4WEhIQWLoS9PH8vFprm
	4+PnFxUtKiopKS+3sqqsrKricmF88fBgfv8DgfPClClTp06dSsiff+7cuWOHkFBYWHR0QsKs
	Wfb29vYRETdvCgoKCgoKEhIWFhWVkDBrVnx8UlJGhpDQggWLFi1eTAhY2D29fwEBAQEBAegJ
	aWsLvfkuXSIkMTE5OTNTQKC+vrq6pgYVhs3Nz3u+YNUnKXnkyKlTly8vXHjunJ/f7dvffAPn
	r6CAPeEgsDxx4pQpEyeOHKmklJISHn79+ooV5uYuLpMmhYcP9XOCyMhIS8vO9vQMCgoLi4kZ
	PbqwsKiotBR6fhgbg3f2zz8TApU/r+97wQqPELBQJQQsngiBijKmKT0ksuF33tEB64dTpwgB
	i7qn9wurEAgU4L/BvRs8wXE/uF98HyoWCdm8efPm338nxMXFxcXV9fX3aMMeTD///PPPP/1E
	SF5eXl5uLiGQoKOouLikpLS0BQs8PLKz8/Pv3YNP3b//5p6A4YX+fhDWIT86ceLcuWvXvvnm
	1q1794KCVFWbmpqbh4NHf28vPD91dfX1jY34CvyotHT69PJy4Ef19Q0NjY3Aj0JC1q2Tl5eW
	lpTMz+fnl5dnrKtYPC8gcMbL++efmzevXevhcffugwchIYaGra3/3eMKee3Nmzdu3LhBiKen
	l5eXFyGtra2tra2ExMfHx8fHv+zxEFJUBPxm585du3btIiQ2Ni4uLo5pao3ji7GxsbGJCSHb
	t2/fvmMHIfz8fHz8/IRcvnzlypUrhGRmZmfn50tL19bW1dXXb95sbm5iYmCgotLRUVWVlHTq
	FIejqGhp+fzzFYt/R05OQsL9+8bG167dvv3gwbRpCQnJyRkZEhJ4P18XuFwul8slBBxDmPiN
	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
	h2QjIV999dVXX33FLMCfF1gZCZZyhJw7d/bs2bPYe09evro6Ly8vT0UFtn56XkEBUFFRSsqD
	ByYmfn43bty/P3ZsTQ2XW1cnJpaampGRm8soibGysqAgPz8vj6Y9PFxc7OzKy+3srKzMzDBg
	PFwU4/39dXV1dY2N5eVQMdHfz8fH+xiG7sge7w0xdSoh0dHR0dHRhBw/fvz48eOEHDly5MiR
	IzCvrF3L3GdEV1dXV1cXbHf0KCFBQUFBQUFMTwDc71CfJ1hwMb1QIMDBw6Orq62toSElVVpa
	VlZRgc78759wpre3q6uxUVgYeh7a2aWnZ2Xl5g71Ub1+1NY+yY8qKnJykpNZfvS86Orq6Ght
	1ddvb29v7+gYO1ZUVExMXJyH59tvv/vuiy+YynpMxBICs39JSUlJSQnTO+3ChQsXzp+H3kdt
	bW//PLAyf82aNWtWr4ZE0p9/MjwNe4piLzhUEGNPk9u3/f2Dg83M9PS0tTU1Fy2iaZrmcjdu
	pCiKkpN7F2v13g643MLC7Gxl5YCAoKCICGNj6PUxdMeDgbQTJ06cOHGCEWphIgJ7DmJv2IyM
	jIyMjKfjQ4WFRUVlZTQNvbPU1Hp6gB/x87P86PUA1n8Mr4D/hhYThIBl+1Af4+DA5wUrVbAz
	JPzXh8ePYB0fGgoVe/HxBQVFRWVldnbQA+np+GdTU3NzaysPD/ROdXBQUXkxfgQOTXJyjY1N
	TS0tr55AQkBFHPz361wVQq+m5+dHCOCdpqZ+ftev+/uPHVtVVV3N5T7uMfMkIDFH0+AsU15u
	Y2NlZWIy/PgRl1tbW19fXt7f//jI+2zG4OHh4eHuDr0Ot28HBwwtrcG3V1FRUVFRYV7RYWHy
	5MmTJ0+GyuXt2wm5d8/fPyDg+RMuz8Lzprsx/uPk5OTk5ETI6tUghPH29vHx8WEqnwYDJpzw
	Fec3THTfv3///vN0ekXxcWdnV1d39+sT1g3bBFJNTWFhRoaRUVVVTU1traUlDCTMQPXHH3/8
	sWULo2RgLhRzawda/OArlr89DgzAD5YQwlLWgY/NYImjwZTi3d3d3T09zAOA6Ojo6OjqUlLq
	7Ozs7OpCDStLkAYDlEhKS4eFRUbGx/f1KSvDAIJWXgOBA0dISEhISAghlZWVlZWVzPt4nyQk
	oKmjri5UEgxMRA0XFBUVFRUWMiWciLq6+vqGBlDeRUba2dnb29iYm0+bRtNtbfn5W7ZQlIiI
	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
	9Y0bYmIKCgYGw1HD/HogLKyoaGbW3FxRkZ0dEnL+PNzP0aP37Tt06MwZV9eAgICA+/cJWbVq
	1aqVKwnZvPn33zdvJsTc3MLCwoIhTNevQ0Uz9vzBClMktPj7xXkAhS94n7DSDf+NCUJM+Ax8
	XnC1gpUjSIyRSGNFbl1dXR1WOtXWMgnDgoL8/Px8RjGHx4Xfj88Hrr9RwIWJyrQ0CPT9+ONP
	P/30EyH379+/f/8+ITo6WlpqaoQsWjRnztSp/v4zZkyZMnbsjh0iIkpKFhasZd3LIisrOzs/
	384uLS0rKy/PxgYC/K9/nYD7BSGfg0NZWVlZZSXLj14GvLy8vLGx8fGpqT4+0MtXXZ2Pj4+P
	n5+Qn34C54F58+bNmzeP+X3j7/OXX3755ZdfmF5igoICAvz8zO+/vb2j4796fw6sROXlhX9j
	028HBxsbc/OgoIUL58yZOvX8eW9vX99Zs06cCA29e/fSpU8/hcDb21sjYaAPE+/e3t7e3t6M
	0FBTEwI7yOfa2traOjrExXt7+/p6ez/6iBBC+vsvX4a9vYmU27sBLS1NTTW1yEgFBXl5GZnI
	SLCidXXt6enpeRG/CqxkRWt1BQUFBUVFxnoIE56PCy8p6mnHD5yHampqampq4PmuqgKld3Mz
	IcnJyckpKYRgBTjTG/ZJRbqCgpycrGxbm6qqioqiYmYmRYmI6OoOhy6F7wcerziC13eLH/3b
	+bB4fiA/Cgy8efPEiUePoLfinDnV1TU1dXUyMoMlXHA+wrgVCpFsbGxsrK3h36amDB9SVFRU
	VFBgEkY4fqDgH9eh+DowLofHgfPeQKchFOji+INCcXQewvklISEhISGBEXYhn3tW71NLS1NT
	Q8OuLhcXBwcrq/v3RURkZdXU/q3G5P2AtLSmpoNDS0tBQUrKgwe3bnE4HI6g4OTJhw4dP37x
	oqNjVVVNzb/1CsIed19++eWXy5YRgs5UkydPnvzRRwyvQeenr7/++uuvv2aeC5z3B4vL4vNh
	awtxZFvblzs/FGaOHz9+/PjxzCvyb3yOMGGE8yJjVQcCiHXr1q1bt47hg4NBVVVZWUGBkCVL
	5s+fPj01dc6cmTN9fc+fl5BQUbGyevPP0XuXQKLp/v7qakHBS5dOnjx71t0dFKDi4uLiEGjB
	heTL9h7AhTnu5/x5UNpmZeXmFhTw8WVl5eYWFhoagkWEoCBFUZSc3NvshvNuoby8vLy6Wl29
	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
	K4jUX1N/Rn2BhK/fz+/gdhcVlZRUVmprp6dnZWVne3nB6yUljIF9b0BmnUQSFDR3rre3j096
	+tWr2dmQ8dTfD/fv0NDDCyDV1dXV1dVBpvm2beOlwG4HVgZhpjAa8r8VHJf6+mBdhRl8M2Y4
	OtrZWVhApjyutJiAAAL3XXU13Ok474rFPT09Pb29t/bs+K1gRff+/fv3799PVypMREVFRUVF
	BSEozftbA0hj91ulopvcIzDeSaVgMDHz1qNCU1NX19hYpYL1Sn8/JrSgA/dRgQkuFDU6SlEt
	LQKBri7TG/b+mTNnwYJ167Kyfvrp++8//XTPnsFBhWJoyM8vMTE1NTOTx0NHB1bK29paW1tY
	5OYGBMyZ4+1dXBwT88svP/zw1FPbt3/99e7db70VGxsXl5zs6wu9lTgcHx9PT1dXpfK559as
	Wbbs5MmFC1esWLbs5EnoVXWnduBAeXlOzqVLrq5JSampV6+uX19aCr2vJut4oZ2O8xOCAQZN
	TU3NsfMxVMhVVr777gcffPFFcfFkbfdUZcGCsLCgoKIi6IFUXl5f39DQ0uLgUFAA6w+UasJe
	FXl54OibSAkDJX82bdq0aeNGuqcxghUI//sfSM8XFhYWovRpUREh586dP3/+PEjw6urS6xqU
	5EVHnIWFmZmpKSEg3VhaamtrZ2dtzcwzDxu0jy5ejIz8+WfaPsLKAXXJ9kdtN98vOC7gdiqV
	YB/hfmRlXb+em8vYR/cLJNZraTk52dvb2BgZ4fyECeHp6enp6el0AsRvBRJVCHnmmWeeeeYZ
	QjZs2LBhwwZCzMzAQY82cktLS0tzMyGHDx8+fPgwIZGRkZGRkfe+HkL7Byuh8DE5OTk5JQUV
	lqDHzsgIvV0zZjg52dqCfSSRMPaROpDYXloK54m2j7D3KlZyPSxwHHr77bfffvttQl599dVX
	X30VKpV1den39fZCQsp///vTTz/9RMiOHTt27Nhx/4FN9L/gvIiPJSUlJaWlt74fxhmpdHRU
	pRodran5/c/I7XnsAkiEEDI4yOEEBvr7+/hoa0OGFl3KhiWQuHB5UHBhU1MDFQJisUgkFI6M
	eHu7u7u4dHcLhQYGBgZ/3JLE+wUy3RITh4ZGRpTKTz+VSAwM9PReey0lJT392jVz8+rqqqrK
	SrEYMrxZLOhZo1JB8zM2u7GxubmtjcVCSR0jI0NDAwNCVq5ctmzhwubmsLCQEH//HTtWrly2
	7IknoqP//vePPvryy1u3o6YmPz8hwcPj9OmzZy9d+u67n38+dOjUqXnzCgtLSioq6IDMhx9+
	+OGHH06dnkcTgZFua2vQ4hQKhUJtbdpB1dLS2treTkh1dVVVff3vLzEx1TAwsLb29u7pSUiI
	jt6/Pzn53Ln4+JSUdetaW9vaOjvFYsygdnOD5sV3A6UbEhMTExMTIRMlI4N+PSAANHNRgpHL
	vb2DGSc4NJB8fX19fX0JOXbs2LFjx0C6TiKRSm1tra3NzQ8fFonMzLy87uQiZLgfxgaOfv55
	5cr9+48cOX36X/+C5tMi0fz58+eHhsKCdeXKiZspThWwaWRkZGRkVBQhly+npWVmikSampqa
	Ghr/+heMGgoF7HdUFGMo3RlIIBke1tUViUQiqVRTEyqe0ZFSU1NTU1NDOzYwMIDNWe83UICS
	vLjgRUNsbAUSIfTv4byFmsz3Czr+sXk1LPDpDG/8XUykMDSUSPT1ORw+X1OTx2NaEKvT3t7V
	1d2dklJTU1fX2JiUBPfb009jr0K8XtAA5fF4PE1N+npBB8e94uHh4eHuTldGpqampqam0hng
	CF4vwcHBwSEhhHh4gDTH/YKZc2jwoWMAH/F5XJ/U1zc2trampvb2SqUDA6mpk31+HldYLDZ7
	eJjDCQry9/f21ta+fDklJSsLJY0f3e9CT9GREQ+PWbNmzuzt5fFAIo3hwVi7duXKJUsSErS1
	tbQEggMH2GwOh83euBES8Ph8UHRobd20aePGNWuSko4fP336/PmZM69evXEjN/eLL9LTr17N
	yTEygvuUy/X19fR0dVWpXnwxImLlymPHwsMXLAgJ+eQTCBzJ5XfbHorq7S0pEYu//37fviNH
	3n8/MTElJTPT01OhUCjux7HysEE7ByWiEXQUqyd0gAStpeXbb7/++oYNdnaZmdeu5eQUFEze
	HkwtdHRMTDw8OjpcXZ2ds7OPHjUzMzU1MgoMhPFDLEYHGCaqqAfo1MHM/bCw0NDQULpJPTp4
	UTL33Llz586doyubkLESzRwO9CIxMKAljAYGBgZkMkKg51Ffn7W1lZW5+aFDOjqmpp6ejH30
	sFC3jw4cAPsoISE5OSNDJFJX3ECHK96HUwVcn+B24nbjfggEAoGmJmMf3S9gFwwNwTqgtxcU
	PEBJQaF4eIEjBCVKN23atOnVV2n/yu3w9oZ1tkBASFJSUlJy8q09wx8UTBwcfxzQPuJyNTV5
	PMY+upX29s7Orq6UlJqa2trGxqQkqFh7+mmsSEXQbkZ7CP0a9wuOQ6gkhAUL6mDFEEoW4ufu
	N4CEoJ8IxxtcryC4X7W1YCd2d/f09PWlpEz2+fn/j/9kb8DDZ2RkeLivb9YsFxdHx5MnFy0K
	CwsMDAo6fjwq6sIFPb2dO3fu3LmTdsCgFuG9giWV//nPf/7zn/9AZlNvLyHLli1aNG9eezuU
	SJ8+TcjoaH+/TDbZR2O6IBCYmnp6yuUURVEKxd69jo52dlZW8fFQUbFoETR3nTEDAh4cTnBw
	QICvb2MjNMfT1YUSRzs7GGhaWgICZs/28hKJnJwcHGxtT5/28wsK8vO7cIHF4vFsbOhbHSUX
	btxITo6MdHPbv//IkcjIb7/95ZdTp2Jj582rrKyurq8HbeXZswnZvn379s8+oxfIUx0c2A4c
	OHjw4EFaKxQXRqAJ7ePD4XC5bDbmpE+dAWqyyM7OyysuLi5ua4OpDAZ4sfjw4UOHDh2iDRuU
	hJqoAk0qhR5J+/bt27dvHyHnz0PGHLJ06ZIlTz5JiJ+fn5+fHyH6+gYGEsmt34OBqNjYs2fP
	niXk0CHYDjyP4Iisrz98+PjxmJg/btPfhw1FUdTwMJt9+fLZswcPrlhx+PDx49HRX3114cKl
	S2lpNjYhIfPmzZ9PV4Q9rMqO3wsMLGzZsmXLli2ExMdfvpyaamvL5XK5GhpffQUZ6lCfODQU
	HQ1azYyhpA6Xq6UlkbS1QQVyVBSMB25uIHmgofHKK6+88sortKTlmjVr1qxeDQbOpk33H0DC
	hexLL7300ksvEfLss88+++yztHYyvV1croYG/bv32mNLHVzYnjkTFRUVRcgvvxw/fvw4ZHjL
	5XTFCgbORCIdHaEQEmgYw/pWDA319fX0RkbA8SuVYiUIZmI+99xzzz33HN1T6MUXoblqRERE
	RETE/QeQ9PT09PT1CfnLX/7yl7/8hf4+dYMFtwN/935/B8GAY1xcXFxcHCEHD8L6AysCcB2N
	kkVmZiYmRkZCoaWlubmJyVSq5X7cGBkZGenrA4nbkyfDw8E+gl5cenrYq+hhoaWlpSUQQM/R
	uXPb2yFQcfo0ISrVePEPhvsBerd0dPT01NVdu/bRR3Cc8/PBPvL3Nzc3NTU2jowER5WBwddf
	79lz4MCWLZAIZ2YGzZgJAWWGxsalS8PD58+PioIeSV98YWzs4DB37lhX/e3p7a2vv35dIFi0
	aNWqTZs8PaHiyMursbGpqbV18h1jOA4NDo4PZOF6Xb03IMxfAoGmJp/P42lrT/b2TzVQkuyL
	L7Zt+9vfiopaW9vaOjq6umCeEItxPenlBdK2OTk5OSgQf7tOQ1g5vXHjxo0bNxJiYCCRGBjQ
	kkGYmIIJBxOBTc3Dw8PDw8PpRAtUbGhpge2EnlyMZNTDgqIoqreXw0lIiI4+eHD5crSPIPHS
	xkYuB0l2BKWn/v73v//973+n78OJesHeTYpqovfda69Z9Z6xKCGPCTyIXA7jx7lzFy+mpNja
	gjTzePtocBDsIz6fWe+qg/YROMDBPuJy0VLW0EDpMGdnkDbGABBWEN5vQAcrOmJiYmJiYuiW
	AhiwRlAa7+zZs2djYkDK7kE61otEIpFIBOOepychw8NDQ4ODUPlfUUEn2vF4YOdB4KC1lcPh
	cLjch7niejyARI6REbCLpVK0Q7CCKyQkJCQkhFZIQOWLPXv27PnhB9q+uFfwevnqq6+++uor
	WqFJPeESnz9x4sSJEycmrqy9G1hpi4pQ6N+7dOnSpfh4kBi/coW252GckUoNDPT1dXXvXgnO
	8BuRyzs68vMFgnPnTpz48cdPP50zx9fXw2NoCCKGFPXzzz///PPP1H0DhjBFQcSaooKC/P19
	fCgqMTE6+sCB/fv7+1tb8/KY3LqHBQSUQJqBovh8+BseKYrNhkcej6IGB2tqdHTGvq+tbeLz
	QFEUJZdramZmXrp0/PiGDc8/v3bt8uXnz0Mlh1KJC2V/f3//OXMoKi0tLS01laIgkHD/181k
	ER9/8eLFixQFEfXxDS0JwabVfX0lJVevxsauXTvZ53uqsGvXl19++GFwsLW1paWZWVMTPEtR
	IOVDUfv379//88/Qknp4eOLjDxMDRWVkZGRkZFDUd999991339GP6enp6RkZ9PsmAn8Hfxe3
	A7cLtO5bW/fu/eabjz8OC5vs4zfdgaPOYqWlxcUdPbpkycsvP//8M89UVenoCIXa2hS1aNGi
	RYsWURRkOk72Xf7bwf3A/RIKhUItLYp64YX1659+uqoqJeXcuUOHlizB4zLZ52eqgcdl377v
	vvvXv7Zssbe3tbWywoUefZ8+9dRTTz31FEVBwGWyz/r9AwtzigJpiFvnE319PT2xWC7/6KP3
	3vvLXz7+eHi4v7+iglkPqQO9FW1s3nzz9dc3bCgrA4OSPo64/gDJVIoCDfbJPvv3D253RATs
	B+4X7idkqFPU3/72xhsvvVRd3dlZXZ2ZaWc32efncUcu7+oqKtLSQvvI39/Pz8MDc2Vvva8f
	9BF66VAUVHTv3z8w0NaWm8uMBw8buNug20h3t1AIf7PZSUmxsf/7n4vLp59++OFbb0VHb9v2
	/vtvvHHjxv/+t3fv9u3ffHPt2uXLJ06EhFCUXF5Zeffzgt9bUZGTEx/v7Pztt5999o9//Pwz
	SOWVlYGjBx2oD+86etBHSLSgKKjUp8clUBChKMg4Vp+/EhJWr3766UWLdHQm+7xOVQ4f3rfv
	yy+feWbmTKjsgWfp4w0O1VvHe3wERQWK0tfX19fXpyhI6KUocKzRj9bW1tZWVhQFASH4fqGQ
	ouA6u/V78XdxO/B56CEhl//yy88/f/11RMRkH7/HBRhfQkOhcrGiAu0jePXxfcT9fOklsAvT
	0i5cOHKEsY8mAo/LTz/t2vXJJ1u22Nvb2FhajoxA4IiiIAGTHpdBopuiINHuwc8TjjNOTk5O
	Tk7gz/P3px+hlzWsQzU1H/x35s6dO9ffn6JKSkpKiospqrGxoaG+Hvw1+/fT/hpdXV1dkUgu
	f/PN117bsOHNNylKoWhqGpvCwEAIIR0dVVWZmTY2f/3ra689/3xZmYYGl8vhUJSDg4ODgwP4
	Y9PSKAp6gVMUKHBQFPSi/+33N9pjeH3io7qd9qCPuJ243bgfuF+4nxCopqi33gI7EY/LZJ8f
	5LGrQBocbG3Ny7O2BokVkcjMzNTU0JDP19bW0uLzORwsOXtQ6TEjIyMjIyOIIGtoQOkjj4dN
	4lQqQlQqpdLeXqFobc3NlUoFAhMTT8+6usk+LtMVFovFEgjuVpSIr9978eLx4/v37927evX5
	8/Hxqalffx0Tc+HC5cuGhv39UPKOJa+fffbZZ//+N1SIzJ492Ufj3sHI+P79Bw4cOEA3AVTP
	zBkeVipHRnp6RkaUSpXqduqbf0xqa+vrm5qamhSKwcGhod5eOG5mZuAII2T9+vXrIyLu3vsK
	KwvmzgWpOny8X/B3IiIiIp57jpCiItAA//ZbqKiEANTAQF+fVNrff7tcP4YHobm5ubmtbf58
	aBZsZzc4ODQ0PEzIqlWrVq1adf8VrFMV3A/cr6SkpKSkJELS0jIzb9ywtAQHo5PTvHlLl7JY
	Y2voGGjYbHCkGRpCk3out6qqpqa+npD58+fPnz+fbh4MC8R7/2YscUepByzVx8wlfB3BcR4z
	rHEcwnEEpWVQ+uVeQYmZTz/99NNPP6UrLLHHkkAgEPD5KhVI+tXU8Hg6Oo6Od5dA+qMB61A2
	Gyq1oFMnm01X/GBm3datW7du3UpXzE8Enn+5XC6XywmRy6HSR6GACuSx1ws+KpVg2KNUCyH0
	74PhQoiGBkgsoNQCSqlihRI2oZ+oUgm3e+vWjz/eupWQzk7IKE9ISEhISKB742hra2sLBBSF
	0iYMjwaKoqjmZpFIJmtpaW21tITebXy+lpZAIBA8fEcGSjCCJLVKRYhSOTpqbz842N6elyeV
	8vlGRh4ejH30WxnvqFev7Cou7uurq7t+ffNmLldDg8tlsbS0TE09PZub4XN3l1pvbCwuTk62
	tIyJOX78hx9eeOHUqejo+Pjg4NTU9PTr1+fNa2hoampt1dRUn4cmG5wH77ROH1uZABJnJiav
	vfbii+vWWVicOnXmzMWLJSWTvR9TDZCMr6jo7+/vl8mwNkgkwibmCFZKu7i4uMycCdLbfn6E
	eHp6enp4EGJra2trZ0dXBuD8glYq9g7p6YEMfmyWjhJ1kJgHvY+zs+n3qQOVlV1dXV3d3b29
	tbWTffweF5KT09KuXdPXT0xMScnKMjJC/8njDu5namp6OthHvr4eHk5OwcFPPsnYRxPBZsP4
	amgI/lIut7Ozp0cqJUQgAD8qBGCgAiMtDe7vzMwH/0VU4CkvLy8vL390e1ZaWlpaVkbIrl27
	dn3//fjKmLF2F4tFCJ+vUkkkEomenlRKCJ9vZjaVZsypAfjX2WwI1II1yeVCz6qWFlrxBY9r
	bm5ubk4O9Aaur//tv4/20oNK4t2NkpKSkpISWkHE09PT09OTtudxP7GyChInuFweT1NTQ2Pq
	tBqZdgEkpbK7u6jIyCgvr6CgtHTWLOhNsmABSE7J5d999+OPhw6Fh4NSopUVSKzo6YHGOoeD
	zRYn0ji8G2gQ6+rC99TW1tc3NxMCC+o1a0CT+oknYOFaX//JJx988NZb8fHe3h4eM2dqaRkb
	GxpKJImJXl4eHi4uBQUcjr6+i8vDUNtkuBOYObdhw7PPrlgxb97HH3/++e7db75ZW1tX19Rk
	aAhVRYSsXbt27dq1tONmujqI0eHj7Q1SAhcuXLhw4QJdoosOK5lMJlMoGhpYLDabxWI0oZHl
	yxcvDg319b1+/ebNggIrq87Orq6eHkJMTaEZK0rx1NZCqTtkENAOsr6+vr7eXlrjFycilNRA
	0MGL5wsdcmKxWCwWE2JgoK+vr0+Inp6+vp4eSDMYGRFiYjK+qTkszIyM5szx8XF3d3KCZ/Pz
	J/s4TldaW8vLr1xxcampqa9vagoIaG/v7Ozupsd/yFya7K18+ECmFj0/dnZ2dLS1sdlNTS0t
	7e1PPllfX1h4+XJ8vJWVm1tYGNNkejwUBfN/ayufr6mpqalQaGpqavL5AgFKkqlLHKKEGEop
	YIk8luDX1NTUVFdDILOlhZZ0kclAAAoDBDiuwDxHO/Qx0QUTZ1DrG9dBKPViYmJiYmoK0pxW
	VlC6b21N94rE8QgNIpwXn38emtOmp4Mjx8hIItHXFwp9fDw9XVzc3HDeZTTix0NLxYHEF0jv
	0uM/Svo4Ozs7OzvT57etra2trY02iLGnZ2UlSAg2NoKDDa8TTCTB+WpoCKQ1xgaQxjpQcTvw
	PMP1S28XSnWgw8/c3Nzc3JweDyGzjh5HjI2NjY2N4W9nZ0JeeOGFF154gXb8EQIBLAhgEAKS
	fpN9dqYvFDUyUlenp5ednZFx44aXV2tra2tHx8KFN2/m5xcXDwx89NF7733yibs7XHdz5sD6
	RF8fJMcefgAJ7aPTp2Ni0D7S0gL7iJD6eqiMiY/39Jw1a+ZMLS0IaCUkeHvPmePtnZPDYvH5
	tra3cwkz3A9isbW1n19j4/1+rqAgIyMmJizshx9++unYsfffT0hIScnMDA0tLCwpqazkcHB9
	O1XBcRbHL0SpBEeNUqlUjl2PQ2Y8CGkaGdnawrNMAEmduXP9/Dw8Zsw4f/7ixeRkY2PsoYbH
	OTQUehpFRERErF9PSGBgYGBQEL2euFvi3d3AeQulrUAhBKS9Dx+me85iQgVUlnG5NjZWVmZm
	U7k76fSgubmsLDXVxQV6RL/6KkjV/fEkH3t7+/qkUjYbhO6ffBKOS3y8mZmzc0gIYx+Nh7aP
	INFMoQB/lEDw0UcfffTPf8L6j8ul/Sl4n+N6FKXucP2JPTsNDAwM9PVp6TsMXON4hP4V9Hth
	YgGuqzFQLZfL5TIZIf39Uml/PyE9PdAjtLOzs7Ora6yfB+y1gQGwwzBwvXfv3r1799K9qdEO
	w8/BOkco9PHx8HBxcXWF44Ip3XcSa/xjgedJKIRemZBiR8jAANgxsbGxsbGxE38epe7QfsHe
	73hdCAQCgZYWLe2O1wkmMOD1gucPExowQQYDPSh5iVLuGLDEeae/v79fKoXHgQE6ARTtfpTK
	VJfMRHC7IcHuVsndyWbKB5AoSiotLRWJLly4eDElZfnyTz/dsWPv3hdfzM8vKiov9/WtrKyu
	rqsTi5ubW1ra20dHZTK5XC5ns1UqlWpsEzz8e+5cf/85c2hNzPsFP2dhYW5uYUFIVlZWVlYW
	IV98sXPnf/8rFsPAJBZDZqW1tba2traWVmAgNJtksx0cbG2trP7yFw8PN7cZM27cOH/+1Kl9
	+w4eXLRowYKgoLNnORw9PReXB1HhZLgdMllbW1GRQLBnz1df/fOf4eEQePz88/Lyysra2hkz
	0DH2yisvv/zyy4S888677777Lu0Yma7gQPj663/+85//DBkz/f2EfPvtt9/u3Ama4AoFIVVV
	NTUNDdnZkDnf3T3Z2/2woSiZrLJSLFapFIrBQYEAAmXgtqKo0VEOx8DA1bWrSz0TE7RGKcrY
	2MjIwACkEgkh5PTp06cjIyEgFxdHSGNjY2NDAyHd3d3dPT2wEBkaojP70SFHCCwT7qTNDE1G
	YZyCraMnMpB6AMe+lRXtEMTPQw8JHs/QUCLR0+Pzbz0OFEVRXK5K1dVVVKSvD8eBzYbjQAiH
	o6XF5ysULJaWloPDH3f8qa7Ozb10yc3tyJFff42J+fbbAweOHo2MDAjQ1zcwMDQk5JNPPvnk
	k08ICQgICAgImOytffgEBAQEzJ1LyI4dO3bs2EHIhx9++OGHH3I40BMuPBwWct99V1iYmXn2
	7DvvuLnNnfvUU4ymPAZIMjPj448fP39+ZESpVCo3bIBKH3d3NHzQ0Lh69erVrCzQPE5IoP+u
	qqqqqq6mDRNcwOLCEcd1/D50vGtqwvP0ghe2a2BgYGBs02Jc2MpkMtnAAG04jQ1sUxQYYrq6
	dMURVuBiJdXs2bNnz54NC3xtbdg+MPBgwS8Wi0RCISPlMRF4ZLS0BAI+n8XicHC+gOOIBg1q
	wJ8+ffr06dOExMfHx8fHg7Z6WRmdEIKGDc4XGDDESjMtLTCY+Hy4XoRCoVBH51aDZHR0dFSl
	AkNneJgQhQKul66urq7OTvp59Uo4nOd0dcViXV1CnJwg8IU9KbCyEfcLHQKjo6OjSiU8z+cz
	18v9olL19BQXi0QXLsTHp6YuXfrOO2+99c9/hoVB090VK2pqIEEKepWMjkIvBzZbqYT7Hdcb
	aBA/bKqqqqvr6gj58svvvvv5Z7EYVh1iMTgIrK2hd09goJmZiYmhIWYo/+lPsB6NjgaJvcuX
	Fy9+4ong4PPnGfvo96GyMifn0iVz85079+49eHDDhqios2cvXVq4EBJJJnvr7h0c39BRhGBv
	lqGh8c2vdXXFYh0dGCc1NSd76x89YBfweKOj3d1FRXp6kEjJYnG5AgGfPzjIYmlrOzr29qp/
	TiLR19fVJQQk3+mQP0ggQy+KPXsIAekm+nO4rqmtra2traUzraVSqbSvj16ngK1ECI8H8xja
	6RiAQgUZTFBYvXr16jVrCAkODg4ODqZ7/UVGRkZGRRFia2ttbW4uEkHvLyOjiY+HTFZRoas7
	MiKTKRR8Plb2cbkSiZtbTw/8/Shy0qcHVVW5ufHxtH109OiJE2fPLlzY3d3Tc+tV8vgDPX04
	nKNHT5yIjQ0P19Tk8Xi8776D4/TOO/b2np7h4Yx9hPZRVlZCwvHj58+rVEqlSrVhAzzv7g7K
	KfT78b5GezQgICAgMJBOwEP/HPpj0R5S7203NgAw1v+CfhP1BCpcR6M9hOsiHLcwMau5ubm5
	qQl6ehUU0AlRWVlZWZmZhLS2tra2td16HHR0hEJIxNLR0dFh1rsTgecJ7CM6oKQOKoLhdaGe
	wIY9jAwNDQ0lEkiAE4vHB5IEAtpuQrvkboEavE4wEIT2EAaUsBIX7TNM/ANpRjrhr6iouLio
	iE4E7Ojo6BirH4QKDVpafD7MRpN9ZsYzZQNINTX5+QkJ7u7ff7937+HDmzeDxNj69dAEUUen
	t7evr7+fvhAsLS0sLCzYbFtbcHjgwgUz+HGAQcMWHbL3C37urbfeeuuttwh58sknn1y8mI4w
	jh1gmpsJAU1PNruqqqYGBpzCwrIysfjy5dTUq1cXLPD19fZ2c5s9OykpNTUrSyyurMzLS0g4
	ftzBwcNj4cKursk+D9Od+vra2tpaT8+iopKSyspdu8rKKitraqysMMN+y5b33nvvPUI2bNi4
	ccMGuJ5Eosne6ocH3h8bNmzYsHEjIdHR0dExMYSUlIAEwLx5gYG+vrNnw0CI7QWnTyWSStXd
	XVRkYFBRUVVVX29v39HR1dXdHRSUl1dYWFbW1nbo0KFDp04tXw4OLmtr1ECHCUKl6u8fGDh1
	Kj5+//7du//978pKZ2dHR1tbc3OYwEZGYAFy8yZ8Pjg4MzMzMzOTnnBAQ50QbB5rbW1tbWND
	jxM47ozNgBk7MY3NgBkephcq3d3d3d3d9ISDzWjT0lJTU1MJGRqC9+MEY2VlaWlqCoW+XO7S
	pdC7x8QEjkNZ2ddff/rpli3m5hDIfv55yLzkcHBZBZ296up2796x46OPYmI8PNzcnJ2hXlJf
	/8oVJydHRxubqio2W1fXxeXxG5cKCzMzY2NdXY8ePXkyNnbnzoMHjx2LigoL09QUCIRCFmvH
	js8///xzQpYsWbJkyZKplwnysNDQ0NDg8QhZsWLFihUr6IqDf/zjH//4xz8IgYDaggWtre3t
	nZ0ffnjxYlTUgQN/+9uiRStXvvQS9gr742JhYW5uZCQUOjs7ONjYSCQFBcXFFRWEXL4MEm8n
	T548efIknXiCBg4GapYtW7Zs2TL429YWDCULC9qgwnFFPWMKDSd1KTH1jCl00GAAGtcruMBt
	ampqamykA1lY6XL48OHDhw9Dhu+hQ4SAhjjtyBkrhUZRnZ0QaMzLg61gMuvUwfkFMuUGBtBA
	Qsd+VFRUVFQU3XQaA0aYcYmGEkoh2tra2trYgIPN3Jw2rOh5CAJ96JC71+tleBgMo/7+8ZmW
	mPmNkkLoEMSm5VhB9+WXX3755Zew7oiOJsTd3d3d3Z2e9zCzEEQqBgZgNmKaxN6N6uq8vIQE
	O7vdu3/88ciR9947ezYuLikpIuL69ezswkKhEBwy6ubm71/bhZX9GHhUZ2BAJpPL2ez29o6O
	ri5CcnMLCkpLDQ3FYpFIR+eVVwoLi4srKtauzc0tKCgp2bGjvr6oKCnp5EkrK1fX0NCyssk6
	/o8rMllzc06Ovv7+/UePRkb++98g8b1u3XQLHCHoEFIPIGECBQaS0GEFkqIKBTiCp3Jt1b1B
	URTV0aGlVV5+8+aNG9bWcJ8FBUEFWX//f/+7a9cnn/j5QeLHnDl41CDhtrV127b33//rX48d
	MzExNpZIFAoPD1dXZ+eZM2HeGB6GdTDYR2x2cLB6ZQAm2CUnJyenpBASFxcXFxdHJ0Z0dHR0
	dHTQmf9YGat+/tQrD9BhuHjx4sWLF9MVT/i6gYGBgURCOx4hoe/mTZQih97H771XWFhSUlFR
	UgIJyALB0aNHj0ZFRUTA/piYwHpGqZTJ5PKoqKtXocfs9etubjNnOjjo6IBY8ZUrzs6+vn5+
	dXUsFoslkTx+kr35+enpMTGurkeO/Prr2bM7dx46dPz4mTNhYZCAOtlbN3lgAKK0tLy8upqQ
	H388cODXXxcsAOn7nTvhuL31lrt7YODy5UVFk729k425uampkZFQ6ORkb29jI5FkZl6/npsL
	60GKoqW8Pv74448//pj2q2BC293A86EeCMK/1QNGOO6rJ+rh+hjnDbSDMYA9a9asWbNmQcB8
	8WK6wiglJSUlJYWQbdu2bfv4Y/Db5Oaqb19nJ5fL5bLZjH00Eeing0o18HON9bcEBkIC7wcf
	fPjhBx8Q4uPj4+PrS4//6nYNBnrQv4Z2sPrfeH2ghDefD79PCCQ0DA4ODioU9DyFv4MJe3i9
	oFINKkjgPIbgdYnz340bN27cuEHI9u3bt2/fTgckcf6Czw8MQH/cqWMfTbkAUnt7VVVWloHB
	iRORkefOffDBTz8dPnzq1Jo1EHhhsUxNwWGxatXq1WvX0g49d3d391mz6IUDnsiJDGX1SoB7
	BR02a9asWbNmDf28uuGNmb5oaOfl5eXl5RESExMTExNDL6QSEpKSMjJ0dCorq6rq6rZuBYkH
	Q8Pu7vr6mze//VZf38rKx4fJuLtfUDonOvqXX374Yd68a9eys/PzTU1FIggQYSUBNKn+7SX1
	Ux10EHZ2dnZ2dBACWuiEmJoaGxsa6utD6GHq59yBRIumZmZmcnJmZlAQLNjeeQcCsubmHR1d
	XT09bm7V1bW1DQ0KxfDw0NDwsI4OVvTgZD1+wTB7NpSIDg9bWJiZmZgIBCB50N8P0nUqFQ7k
	OPBjptuuXbt27dpFO/IwUPSwwPGkogIyFt58880333yTlmhgs2HBAwFSLveTT7788ocf1q5t
	amptbW9fs6aurr6+uVkqlUr7+wcGQFGVw9HRubVnCpvNYs2ZA4bzk0/a2dnYWFoKBIaGBgZ6
	eoWFoaEhIf7+TU1XrsTFHTv27beBgWFhAQFXrrBYPJ6NDTbfnr40NDQ1NTe//DIkKoSF1dU1
	NLS0sFiff/7559u3E7J06dKlS5dO3OvjcQP3MywsLCwsjJDNmzdv3ryZkDfeeOONN95gsdLS
	MjJu3Fix4sknFy4MDq6uhk/93/872ds92YB0HYsFmbksFow/dABmxgxYUMJxhOMbGkr3AkBD
	BRekD7pOeVBwXMCAdl8fGEZVVdXV1dVQMXXpEiHHjx8/fvw4LY2K4xQ4rvPyQCM+Pn58bw4G
	RENDR8fcvK2tp6e3VypNToZAkptbb29fX08Pi3XixIkTJ04Q4uYGgaJt27Zt27aNkJCQkJCQ
	EEJsbGxsbGxuvV5+7/FJvTcXSuZhQCk1FRIefv31119//ZWQEydOnPj1VzqgAAkKFNXT09vb
	15eczOOJxRYWt8vdZCAEpVX19H766dChkyc3bz5+/PTp8+dfeaWoqLS0spLLVXeQTFcwAJaY
	mJKSmSkS1dc3NDQ3/5//A68KhV1d9fU3bmzfbmBgZeXry9hHvxVMqzpz5tixPXtWrTp1Kjr6
	4sWVK2tq6uoaG2+taJ8uYAUmjo9IX19f31hpT3wf9MqJjxeLdXV1dW/enOztv1/QPkpPv3w5
	PX3GjJ07t2//5ps//7mwsKSkvHzhQjif5uYgLTkyAuOwtjaM4/TMgfMIJDSEhopEQqG2tkpl
	bW1lZWYmFuvqisUiEdhHvb0qFSayYYXsu++CkgdmVmMCnHqPpHsF5xVMzMXEirNnz549e5YQ
	Ly8vL09POrECt4PFYrHYbEIgcObqunXr9u27d7u7g/SYjk5dXUNDczOMNjIZhwP2kUikbh/B
	8Zg7F64Tmcza2tLSzExDw8bG2trcvKlp1iwXl5SUhIT09Pj4X37ZuzcgYMGCoKDSUhaLw7G0
	nP72UWNjc3NLy8svx8ZevJiUhIGjqZYPP/ngcYmNjYtLSgoL8/Pz8nJze/llePVvf5vs7Zts
	YBzmcIyNjY0lEhg12Gy6B+eaNatXr15NJzDiegYd/ehPbWlpaWluhgB1UxM839ZGSG8vVML1
	9cF4gZ9D+0S9hcBYqW8ej060ghGOlsTDBD5zc3NzMzMoUDAzoxO1sEISt7uwsLCwsBD8vvn5
	9H5A4UNeHiTOMPbRRHC5XC6P19MD81NODozMKCnLYnl6QmuOefPmzZs/nz6/paWlpaWldAIb
	Jt5hYhsmSKIEoVQK6wCUglcPIEGFPL1dsD6gA1LqASS8DjCQhQFHlPjGgJK9vb29vT0daEI/
	AMYFxgaQOBywj6TSlBQeTyw2N5869tGUCSCNjPT0VFSw2adPR0XFxCxefOzYqVOxsU88UVBQ
	VFRezmLhwgANacw8wWa+vzfqjh2MXKtLzWAG6IwZM2bMmEFvNzoIsNdObW19fVOToeH585cu
	paZu3jxrlqurk1N3N1zQu3czPQQejLKyioqaGi2tpqaWlrY2FsvPD6R30CH8uAeOEGwyiiWS
	fD40LdTT09UVi1ksLndq9x6gKLm8qorPj409ffr8+U2bTpw4cyYubssWcDCYm2NFIpaowoSv
	oyMUQgUWTgjq2rdDQ4ODQ0MaGjKZXC6TaWhUVtbWNjcTIpXm55eWisU4UaAEJoIBHXSM+fuD
	NKaxsbGxiQnt2MNxADMQJsr4xt9RL4FtbW1tbW0FiaurV+nfVf88NPOEwKCGBpuNvy8Wi8W6
	unp6RkYmJubm9ESH4xROmCC5RcjAQH9/f7+OTllZVVVDAyHXr+fkFBZ6emZkXLuWm+vpuWDB
	vHn+/p6eIFnwxRdwXv77XxZLS8vefqwYyPQCFipCISzsWCxYsNDj9x8lcKQO3i94HHC8VKlG
	R0dH+XzIMH8QMdjHEx5PU1MgqK2FuyovDwKzpqa4kNy16/vvv/8eegIEBk696wq3B8ctPh+l
	YuBxzpw5c+bMAUk7Pz9CNm3atGnTJlqKxsvL3d3FxcnJ2dnR0c4Ou0xOnQXvVEFDQyg0NBwe
	fvnl559ftSozc2RkZESlevFFGI91dLAibc+eH3744QdC/Px8fX19IdA/Fa8XTNjCRzS4Z8+G
	6wQzSbFpLDZBh3lvYAASPjIzNTS0tQ0N/7gSQROhVIJ9FBkZHR0bu2QJ2AkvvfS4BY7Uwf2q
	qKiqqq0ViaKjz59PTHz55ZkznZ3t7JqbGfvo4VBefvNmXJyTU1JSaurVq2+/feNGdnZBgUg0
	3a8rrKhWzwDGzF8MfIvFOjpCISFQea+vr61tYuLgMHUyfe8GRSkU1dV8flxcdHR8/J/+dPDg
	0aORkS+9lJqamXnjxqxZHR2dnT09GhpoZwD3GhgUidra2ts7OwmpqABJSgCkKDkc2p5CxQTs
	BfKoQTspNTU1NS2NflQnNTUj48YNfX31wBCgp3dvv4Yzr44OzFeEcLmZmRyOvT0kQlhZBQfP
	nevr6+cHKXsHDsB5+eknFksgsLObvvYRSB2DfaRQMIGjuwG9pVksPG6TvT1TBfDD9PSANFlT
	E4zLxsZKpVI5NERIeTn4N9CRjoGY7Ozs7Js3QRGhooIOBGDvGayURz/G7e/zewfXtThv0AEm
	6EmDyhDOziCV5u3t7e3tDZWRrq7gpykvH9+TlsUC+2jmTCcnJycHB1tbxj6aCD7fyMjNrbd3
	48b1659++uRJqPh54gl4VSQ6c+bMmTNnwF8ml4MyQm8vHUBCexQTRB6VRPO9ol5JiwppGBfQ
	04MKu4sX4+MvXqQ/B+OHVFpQUFxcXp6cPNXsoykTQJLL5XKp1MDgxo3c3OLiNWugV41IhAEi
	zLxHxz86tnABiDfq3TJ27/a+iUocJ3qfetPqu30/Gtjr1q1bt24dZOgUFhKye/fu3bt3E1JS
	UlZWVSWRwEJ+8WJ/fz8/T89Tp+DTzc2TfZ6mC2hQhoWFhPj75+YODAwMyOVDQ9A0nMudrMDj
	7w0OoFgiiQMpaLGqVHDdFhSAdMyD5Ib9PqSkXL6cnr5gwS+/nDp17tw//3n27MWLyckSia8v
	ONZWrVq1avVqKGX18aEzANS1cRE0eLB0VV3aCTMUWlog462urr6+rg4kKWtq6AxrDAQfO3b0
	6NGjhEAlF/176s34JgogqWf+j4yMjAwP001+8fvQsbhgwYIFYWF05YK1NWi9oqNaXx+0gfE6
	x3EHHcPqASQ0LHH/0cC+efPmzZs3CTl9+tSpU6cIOXPm/PnLl83NITPxn//U0dHREQqxAuXc
	ucm+Th42092B8qgY29eLgUYksrDw8urogNy6nByo6AsPh/uNzZ6sSpGHhXqACdc5mIGMFSV8
	Pp+vqcncORMB4wqLBb0ZRaLExNTUrKzRUajEoQ0OuhJtel4vuN24H+qOXJg/Rkch8AgO61On
	WCwmM3M8crlMBvZRTk5hISoyTH8H/72C+1hSUlZWXW1omJSUlnbtGthHV64w9tGDgkoNBw7s
	2fPZZ0uWJCampmZmOjpipu10R12iCMFKFuwBCFI1Q0O6urq6IlF5OSGEDA+PzVWf2mRmXrly
	9eqCBb/+GhV1/vzWrWfPxsUlJ0skKNH3qFDP6J+q/FaH8kSgfdbS0tra0aGhAVKi3t4CAZ+v
	qWllBVKc2B59+ttHzHr/fmGO2Fh0dc3MbG2rqoaHR0aUysREUGzw9FQooDcj+lNiY2NjY2Pp
	ysPfOwCg7o9RbzGAPY7QP3LyJPhHxGKxWCSC9ZpcPt4/zOHQ9hGMD3+ElduDgeuSfft27vzX
	v2xsrlzJzLx5U0sLKkdp6ez9+/fvP3Bgsrf27qB/DaUO8bGkpKSkpGTiz+no6Ohoa7PZM2Y4
	OdnZ8XhoN04V+2jKBJAaGxsbW1rc3MrLKypqahwcoNkrh4OOT5RKwRt2uhtOuLCtrq6urqqi
	F7gg/UJIXV1jY3Ozn19HR2dnd3d4OHzq4MHJ3u7pAkoyHD78449ffBEU1NDQ2NjcLBDU1NTU
	1NTQkm4QUKInBqwAwcAkPo+P6GCXy+GRfj9MMPi5sZUrqMGqUtGluhheHCulNjbTAR/x+sdA
	CD5ibyN8xJ4YGDDA96GhhBKKCGh9q1RQ4J+czOcbG3t4dHdP9nlTp7e3sTE/XyTau/e//z14
	8MUXL19OS7t6VSJZtmzp0mXLCPnsM9AMRUmfRw2eV+wFgdfR9evXr1+/Tsi+ffv27dtH9zjh
	8SDwg815USoDQQO2txeaSKK0D/YYefXVV1999VU64x9LplFj/FFV0GGJLW4HBu7ff//9999/
	n5CkpKSkxESJBOoNXnyxr6+5uaAgLU0sNjObNUsqffRn4lEzPkFgIg3lxx2cpx6VAf64Ehwc
	EODj09RUWVlTU18vk8XHX76cnq6j89e//vWvf/0rIREREREREbQUprW1tbW1Na31Pdk9ttTH
	OcwsTkpKSkpKIuTo0aNHjxyBikWplJA5c3x9PTyampyc7O2trQ8cAIfc2FpJhrGgAZCVdenS
	8eMZGYsXL1gQFFRRcfLkmTNxcb6+hYWFhUVFtNQhSu0GBQUFBQURgj0cUTJhsgOSuM5Bg7+h
	oaGhoYGQ9PT09PR0uF6OHqUzSkEilhDcb19fLy9X14yMqWIYTTVAws3NDXotODiAg/9x7MJ3
	Z9A+AsUGPz+QpmLsowelo6OqKivL3j4nJz+/pGThwurqmprGxsfnupLJwG6rrgZJGwxg5+bm
	5ubm0naZkZFEoq+vUEBmfEICi8Vi6elNnUzfiZBKW1qKikSin346cODw4RdfvHgxMfHKlUcf
	OHpYgAMZ1j1gH42XAB8eBsdxb29vL0oNTWVBOHCEE3Lx4uXL6ekSibu7m5uz84svSqVgH4lE
	j4t9xHAnxoaNmBDSWDQ0DA2VysDAOXO8vevqYD3T3x8Xl5CQliYW4/yOfrXpAga4Ojs7O8d2
	iNbRgYqlWbNcXJycmpqcnBwcbGwOHODztbQEAsY+ujMU5ePj5eXiUle3cOH8+XPndnUdO3by
	ZFeXsTEoxUz29j06hEKhUEuLkCVLnngiJEQuf+qpxYvnz596HpgpE0ACx7uPD5T6ubqqVxjF
	xMTEREcTQueiwev36tCj64Hg3fdqoo7/1NjvwecxIKD+vvG/PNF24n6qZ0oNDw8NjYxIJDCQ
	SiSTfX6mJ6Ojzs4ODra2xcUuLjNmODoODkKmr5bWG2+88cbmzbCA5fMJ6e4GR1lfX19fXx9d
	Go+9rCYKDKk36VN/VK9UU2ei86/e1A8NHzozGRba2toQKELHIwYWUEIGJzYMnCFWVhYWpqZs
	9qxZM2c6OU1dg7Gvr6ens9PBoaqqurq+PiAA3dgbN77wwgsv0IEjPC8TOfzVH9XPE55HPF54
	vnEhgwHDnh7IHEAN3vLysrLyckKuXbt+/do1Qjo7Ozra2kZGFiyYP3/u3JaWmTOdnOzssrPd
	3V1dnZ01NPT0dHVFIlqNHaT3hoauXr1xIz+/q6uysrq6rs7fH3oY2dqePHny5IkTGhpY8eTk
	BCXTWGmEpa/a2rBQEQgEAi2tWzO+aYlNuK4wM3yi6w/Bv/E4v/ACHPfLl6EHU2VlTU1DQ0BA
	b293d0eHgwN8Kjt7sq+b38rIiFI5MkI7PrGC748aQKqrq6urraXHQ0JYLEa47law8nV0tLu7
	uPjAAWhOzePZ2Fhamplt3Hj69Nmz8fFmZtu2ffzx1q0SCQhMstkYsMX7G+831EjG8RzHeUwY
	wAQDTDhQDzzhuIYZdPR4Bk2rsfQfA+GNjeD4x55HKJmJ48/Q0OCgXE6InZ2NjYWFSvX223/+
	88aNFRVBQXPn+vj88ENoaFCQn9+BA1yuRDJr1sDAZJ+Pqc6cOXPn+viUlbHZHA6b/c03cL7W
	rbtyJSsrO/upp7KysrIyM9nsa9euXbt27dbmrHi92Nra2tra0q9jogFKmUJvTci0x96gOC/c
	rrkrzoPqlbkYIELN+eZmkBKprKyqqqkBiZHycvoRMwVVKpVKqSQEDOjR0aAgf39v77NnX3ll
	w4ZVq3791c9v9mwvr7KyyT4fUxVwpIJ9xGbT9tHtAoeggAD/3WmuutVWuTP3+/57+b773U6c
	fyHRhrGPfiuDg0NDCoWlJdz3c+YMDQ0PDw1Nx1rH29PWBj0z3n77nXfeeYeunK2vr69vaKDf
	B+MShzNjhqOjnd3UtYfU6e/v7e3sdHauqamtbWwMCWlv7+iYemmANNA7aWTE29vDw8WlpcXZ
	2dHR1jY728PDzW3GDA0NSCzQ1EQ/C9pH+flFRWVlIyMlJeXl1dXe3jdv5uQUFZmaQsXu1BOh
	h8RfWEfV1wcESKV9fV1dj499xHBn6Pnsj2Qt3h1MEEL7CO7zri5jY0NDA4PXX790KTk5I8Pd
	vamppaW9XU9vYAACSlMdlKiDlhCEQMWISgWS/xUVQUH+/mAfBQfPnn3ggIYGYx/dCbxOKIqi
	GhsjIyMiBgYUCi0t8Ne9+y5U2NrbQ49yPn+6VMJOBNrt0HN8cPCpp558MjS0qioiYvXqZcu+
	+cbHJzh49uyoqKmWYDdlAkhwqRQWurm5uDg5ZWbq6+vp6era28ONOf6AqRsw6obN7STo7sXx
	d7vP0yEj+vP38/u3e36iz4/9FVtbGxsLC7kcKgyqqn7fszH9wRuttbWiIiMjJmbu3NmzPT1D
	Q3Ny8vOLiyMiYmNjY++noHwiScKxzz6YYY2BDfhrdBQGwrtdUxM/N/46BeEk+rrCChhbW2tr
	C4u6OmhmmJLyqM/HgwIGQ319evq1azk55eVQ6WVmhhWJ2NtpcHBwECvHhodpx9fQEDxiJtvg
	IASGUDMXA0X4fnS0jpW2UyigAk0mo5vKDwyAQw3f7+BgZ2dlRciLL65fv2LF9ethYSEhc+du
	3QqBo/JybW0zMze3jg5CCOnrAwMd8wnE4tHRP/1JpWpv53IzMhITr1yZNSslJT39+vUdOw4e
	PHYsKiogIC4uLu7ixds3e9TVpSvO0KGMASR8P93ThM8f+zyPBwFUrJTC9+Hnx36Oz6d7MmHF
	XUYGnBeQ3qyvn+zr5beBpcGEUBQEFpOToeICKy/u9ElCxs4Sv/eWw+Pd57gH2847f47JsVOH
	zdbXd3GRy2E83rULmi7HxDg5OTra2gYGFhYWF5eXR0TcvJmXV1Rkb9/U1NBQU+PgkJ198+b1
	6xDAxASF0VH6fqQDAnD/YyAJKxEnCiBhQAADgFhRi4kS+Dr2woN5Q6mERIPRUX9/Hx8Xl74+
	cPTk5vr5eXu7uaWlzZzp5GRvHxVlZjZjRkhIcTHTi+T+YLGEQkdHzHT/5ZeKiuzsixdzcubN
	u349L6+zMz396tXs7EWLsrPz8oqKjI1raurqmpo0NBITExMTEujKfDzveB2oVyirzw/3er1g
	wHFgoL9/YIAQqRQqzm7XnBivUw0NrHAmxMPD1dXJaWTE29vT09W1rS0w0N/f2/vixblz/fw8
	PL76ysHBy2vRotLSyT4PUx0wnAsL3dxmznR0zMw0MAD7iDYo72ZlqHOv1syDMpEV9KDfQ88/
	FAXrV0tLuZzL5XIZ++jBEQj4fD6/vNzKytLSzCw3F3rXhYa2tLS2trdP3noGeVjrqq6uzk7c
	H4qCRCoWixATE2NjiQQT6srLLSwsLc3Mbt6czH2+H7q7e3r6+uRySDyTSmGcMDKa7O1SBwJ0
	hDz//Nq1y5dfvw6O1a1bYT0B9pG7+3j7CM+4ru7oqEzW3Jyfb2iYn19cXF4OvbqysrZtO3To
	+PHo6IAA6HU82XtJg9cZ9I4tL6+srKqqr5/O9hFrDHdvFTFVuVc76bf/Dh4fFouipuORerSg
	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
	ReXlUikElAID8/IKCkpLR0fBXpNI1q9ftWrZsvb29957661XXlmxwsLCxWX+/Kysyb5u7pec
	nNTUyEhNTaVSpUL7iG7mfvsWEWPvQ/pevH3YZuLRZKLAMyaEYwCQVo64XVCK/rZbR4vbb6f6
	dt0+kI3/Vv992C6K4nI5HC63vd3LKyRk5crpm2A5VaAoqbSsTCLp74dEuqYmtI+Gh8E+6u+X
	yQgpK6usrK0tK9uz56efjh0rL9+wYd265cv9/CAxztQUzzesm5uboQdgcfHatU8/vWiRn5+h
	oUSiry8WQ+B3cBAKHBITrawsLMzMZDJNTSMjR0fGPpoqwH3MZo+MdHYWFRkaQuDfzAyUg/z9
	29o6Orq6RkYSEpKSMjKKiiBgEx6uoyMUammFhAwPj4wolVzuyMitvevHloSgX5dWfMCWIpqa
	PB6IM46OlpVBBd3//hcSEhTk5+fsDP5JCEhqa2dlmZubmZmaNjfzeBKJq2tHx3StTGNcYwwM
	DFOWrq7q6sxMff3IyLNnL1167TVwoM6fD5mSp0/PmOHoaGtbV2dubmZmbFxVJRabmZmY9PaC
	uBxFESIQ2Nv39cEA/fANQ8xggL+UyoetUQrfj8tarIh5+KWs8DtcLiFyeVWVWAw1oSxWX19j
	Y0uLrm5jY3NzW5u9fWlpZWVNjaVlUVFxcUXF7NlGRoaG+vqlpWvWrFixaNHBgxKJvX1AwFRW
	YWdgYGD4Y0HPI/395eW6uhSlVKpUHM7tHSYsFovF5XI4SiUhOjrm5lDHKhT+cRJXGBgYGKY6
	XV01NVlZenpRUbGxCQmvvw6JJ/PnW1lZWZmbnz49c6ajo51dba2Dg52dpWVxsYaGRGJgoFBA
	agkhhGhrOzg8OvvoUfP720cyWWWlWAxdBQkZGens7O4WCKAi2MWluLisrLraygokitE+KilZ
	s+bppxcv/t//oOKPsY8YGBgYJgt6PB8YqKgQi6FbOISGINEfe4tOVFGJf0HACfyNLBYhYrFI
	JJezWCyWufnUryBiYGBgeOxRKFpb8/KEQooaGqqp0dMbbzgw/F7gcacoiuroEImGhzs6CgqE
	wsneLgYGBgYGBgYGBoY/EnJ5S0tOjlBIUYODjH00edxqH7W35+cz9hEDAwMDAwMDAwMDAwMD
	AwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMD
	AwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMD
	AwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMD
	AwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwPDg/D/ABa915OyTDTJAAAA
	AElFTkSuQmCC
	}

	set pieceImageData(USCF,75) {
	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
	HB0dFmZmdubM+fNXrjB+4I3g5eXp6eqakREZGRISEJCWlpJy8WJm5qZN2FsJe/2hFJ5cDi0i
	NBODCKzIeP75559//nlCVq9evXr16msrck6fhp7TZWVlZWVl9HqFwHVrcqWESAQB9StX6ASl
	tbWVlbk5IX5+vr4eHpcv29nZ29vYgD8oFDL+4N2GWq1Wt7fr6f3++549v//+6qs//7xv3+HD
	GzdWVdXW1tdPVWKZvJ2tmO48q6pqahoaCPnll/j4I0c2boRKyYYGtVqtbmv76iuKoihra8Yf
	/LMwNjY0NDBQKg0M9PUnS+/fLWIf2uNbt27d+vjj0Ppp507w/67nda1Zs2bN6tX0uPjnP4Fo
	eqd69Wq2UELo6+vpoXSpQMD4gzcLfX0jI0vL6mro9X3iBPhFr7wC7949OwftEoyfrlixYsWK
	FdPPe7a2oJSExNLc3NzcnJzp19c7BZi/Jiaam8Xijo4TJ/h8I6PZ6A/e9wlCtVqpVCplMl9f
	Ly83tytXoPIsIiI5+eLFzEw2e9++ffv27aM1Yx0cHBwcHG699xIaTFhpg1rw4eHBwf7+cjn0
	Rjh7lpCxsdFRhvFyu3B1DQyMi2to6O1tbMzNff11e3s7O0vLEycKC4uLRaKlS6uqamsbG/38
	WlpaW9vbORx/f19fT0+p1M7OxsbScmQkN7egoLTUy0sqlcv7+uRyNzdnZ3t7LhcSH52dfn4+
	Pu7uP/4YGbl8+dq1hw9TFEXx+dc6gHJ5W1txsVB44MDBgydP7ty5f/+hQydP/uUvKSkXL2Zl
	8XhomD///PPPb9tGJwj/bA+cmQIuxKdOnTp16hQ4DGVl9PsmJkKhsbGPj6WlhYWJSVQU/PXA
	gZk+79kGitLTc3Hp7//LX5599tFHz5wZHh4eHh1dtw4CjTo6yckgvefrCxK4mj01NYGBycOH
	Dx9OTIReT++9Rxt2WPL+j398/PEHHxCybdvzz7/4Iko3Tv99WPKPUoAYCB0cHBoaHh4cTE29
	ciU7+/fft2175ZWdO+9FaO3Bhlrd11dbq6eXmPjbb4cOvfba3r0JCceP79iRmZmbW1LC5y9f
	vnx5XBwhn3wCTCgkvMyWHhM3Aq63SNhBKZzz58+fT042NgbD7623gOFPUWp1X19NzZdfUpSB
	gZsb4xjeGsbGRkdHR5XKpCS4n3FxUOlkaLh37969v/4KhnJuLm1wr169evWaNYTExMTExMTc
	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
	}

	set pieceImageData(USCF,80) {
	iVBORw0KGgoAAAANSUhEUgAAA8AAAABQEAYAAACGyMAGAAAABmJLR0QAAAAAAAD5Q7t/AAAA
	CXBIWXMAAABIAAAASABGyWs+AACAAElEQVR42uyddXQU19vH72YtnmySjbsLcVdIgntxl5Yf
	9VJHWqRUoLRUaIsW15AECSHu7u7u2fjGPfP+8bz3DCSkwRNgPudwluzOzs7M3r1zH/s+CFFQ
	UFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ
	UFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ
	UFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ
	UFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ
	UFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ
	UFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ
	UEwitMk+AAqKN4GEhJAQDw9p6aCgsLCYmPnzZWVlZKSlq6vfffezz95/PyaGRqPR5OSGhib7
	OCneTAYHm5tzckREWlvb2trb5eX7+vr6+vslJVVV9fQ0NQsLEWIy1dS6u2k0Go1GI4iJ9tfT
	U1+fni4qKiQkKCgoyGRWVdXU1NVpaAgKCgqy2d3dMjJSUhxOTQ2dLi1tZNTdPdnnT0FBQUFB
	8TJoaSkri48XFRUQEBAQEBAXp9MZDDqdRiMIuLfSaDQaQggJCMD/yDsu/G9kBLYc/Tp+3+jt
	MAICAgKwPTA0NDQ0PNzRISWlrm5r29U12deFgoLi9QPsXzExMTEREWFhYWEZGWlpScmWFjk5
	XV1nZ8rupZhcRkb4/Px8EZGWlpaWtjZJyZ6e3t6+vsFBVVVDQx2dnh6EaDRl5aexf4WFhYSY
	zOrq6uoH7V8uV1ZWWrqmhkYTF9fXp+xfCgoKCgoKipcHY7IPgILidaa3l8fLyBAXDwoKC4uN
	3bkzKiouLiXlww8NDPT0tLQqK0tLMzIyMt57D7aOiprs46V4s6iuzssLD5eWvnPH1zckZOfO
	rKy8vKKi2bMbGhoampoQEhEREREWTk2dO3fmTGfn9PTW1vLyhAQPDykpDQ07u6am0ftraSkv
	T0iQlYVxvnt3YGBoaEyMgkJXV3d3T4+BgbKykpK8PEKmpkZGenp+flVV2dmhoT/+qKpqbOzu
	TjmgpxoQJqDREBocrKoSFUWIyZSWBoediAg4QpqaGAyE2ttbWgQFEZKQkJTs60MIIXn5/n5w
	mAwOPt3nMpkIIdTTw2AghBCLBZ/X1kanw1YQ7OByBwYQQqizk05HqKensVFQECFhYS0tcjw9
	6XHA5wsIINTZWVwsKYmQmJi6ek8PQgh1dNDpCPX1dXQwmQgJCioq9vfDcTEYCHV1dXbS6TSa
	mJiuLp8/2d8fBUCOY4KoqZGURGhkZGSEwYAQ2fAwJLjw+TBORkZexvHw+cLCCA0O8vkiIjBC
	CQIhBkNODhyNgoK9vZN93SieL4ODXV0lJQICUVFhYdHRGzZ0d3d39/Zu2YLDvjBOyUAujQb/
	HnQ5w//HC/niWfHh7ccGlgUEBAQIQlhYSEhQ8MKFoaGurpKS06cZDFFRbe0XP/4pKCjeHOrr
	GxqamlasKCzs6OjqWrzY0tLMzMhozx54NT9/so+P4s2kvb26OjlZROTWLR+foKBvv83MzMkp
	LHR3Ly+vrKypaW+XlZWRkZKqqpozx93dySk9va2toiIx0cODw1FXt7Uda/+2tVVUJCXJysbE
	JCSkpY21f5WUFBTk5BAyNjY01NHx8ystTU8PCvrhBy0tc/PZs6lAMAUFxfOHtH8RqquTlERo
	aGhoiMEAe7Or62Xbm2PtX7BSEGKxZGTgeERFwY9E8fowONjSkptLp4eGRkTExdna8vnt7Z2d
	ZmbY7sWMtmmfF3i/4OcBb6W4eEbGrFmzZjk7JybS6WJienrDw5N9nV4WVAD4Cenvb2zMzBQT
	g8x5SUk8QJlMOp1O5/PZbDk5U9POzsk+ToqpARi+NjYJCSkpmZnr1iUkJCdnZgoLFxQUFZWX
	q6iIi4uJiYrOn19TU1QUHV1UpKysq+vszONN9nFTvN7k5iYk+PqKif3++/Hjly69/XZMTHx8
	aurHH+flFRSUlAgKDgwMDg4OIiQiIiwsJGRiUlZWWVlTs3bt5s1r1ixdqqPT09PYmJW1b5+w
	sKysiUl7e01NYWF0tILC3bv374eG7t9/9aqnp6/v1q3JyWlpWVksVl9ff//AAEJQEYyQtram
	pqqqnNz8+bNmubjU19fVFRXFx3t4KCrq6trbNzRM9vV50yGIvr6yMgGByEg/v8uXXV17erq7
	e3s//LCnp6+vr4/PHxkZHh4Z6e9nMplMBoPDERISEhIU1NSEyvHKSvi+q6pu37569e+//fzc
	3Z2dbW2josTFVVWtrccPxN68ef7877/LyXl4nD//++/vvcdg0OkCAqqqsDwcGmIwGAw6XVwc
	IVjM9fb29fX11dfDcYiLCwsLCgoKami0tvL53t7JyfB8b6+n54ULf/xx8uTKlVu2fPrp+OOr
	q6u2Ni2NyQwI8PY+c2bRIlgw7tjR0dHZ2d2dm0un0+kCAsLCbDabzWYrKvb19fX19VVWMhgM
	BoMhKSkkJCjIZktIREbev3/p0uHDLi7u7s7OERE0mqCghgYVWHnZNDaWlMTGiooGBHh7//vv
	ihWtrW1tfP6mTTA+JSWlpCQlxcU7O5WUFBXl5Dw929oqKxMTvbw4HDU1W9vndx8mCIJobmYw
	cnLi4+PizMxu3rxw4dy5xYvh97JwIawjh4ZgXPn4JCdHRt66df26tfX06cuWlZZO9nWkeD4M
	DXV3d3UpKsbHJyVlZKxff+PGrVt+fra2PT09PeDueN6m76PCwQhB4BehNWuWLZs/f3DQ0dHW
	1sLC1xe2qamZ7OtEMTUZGGhqys4WExsZGRkZGZGUxI4bOh3sXxaLyzU2puzfNwXSsdzVVVws
	JASJb5AohxBC7e319RkZ4uL379+/Hxzs4nL7tq9vcPCCBTB+Wlvb2mpqMjP37eNwlJVNTWtr
	J/t8KN4M8vISE319xcTWrdu27csvZ86srq6pqa/fsqWysrq6vl5evq+vv7+/H9u/BFFaWl5e
	VbV2bXf32rWPsn9ra8H+vXPn/v2QELB/790D+zc7m8Xq7e3r6+8n7V8NDTU1JSVZWR0dTU01
	tdTU0tKMjKCgoCAtLTOz2bM7Oib7+rzpEERvb3m5gEBgoL9/aKi1dUVFVVVNjYVFfz/4MR6E
	RkNIQIBM1MP3QwEBhFRUlJTk5QsKZs50dXV0jIkRFpaXNzMb3/69fv3s2aNHZWVBiW3OnKGh
	4eHhYVFR2hitTqz8Mjpw8vD6Eezlri4ZGWlpDicwcNWqLVs++6yxcbzP7+nh8TIymMyQkPDw
	2Fgnp+rq2loeT18fjuPhc37wmPB5s9lsNouFkLq6qqqyclranDnz5rm7JyfTaEJClP378sFK
	Q4GBt25h+7e9fdOmgYGBgYEBDofFYrFYrPT0xMTQ0Js3IyJ0dbW01NSCgyHBpb7+eR0HBHwZ
	jNzchIToaDMzT88LF86fX7wY7PCFC2GLoSE2W1CQzfbxycqKj793z8fH2NjOzt09N5dGo9GE
	hd+cwNzrytDQ4ODgoIJCZmZ2dkHBjz/evHnnTmCgoyO+3+JU5bHzmoAAnmNhq9F7fjjFmXw/
	Tqh++P14nlq5cunSuXNjY11dnZysrTduhFffHPuXCgBPAEH095eVCQunpyckpKdPm+bvHxwc
	HT1z5vDw8PDw8OLFeDtwAPv4pKdHRd26FRJiZmZra2aWk0OjsdmamqRBRPF6EBFx797FiwIC
	Cgry8rKyEhKamhoaKioDA0ymjMy0ad3dBNHWlpcnIODrGxQUGamiAhWRoqKQCYpQd3dPT2+v
	qGhISEREfPyOHQYGurqamhwOSAcdOCAsrKBgbv78bsAUFAgh1Nvb0JCZSacHB4eFxcauXx8d
	HRubkvLxxzk5EPh1c3Nzc3dHSF9fX19PD6HAwMDAwEAazd8/ODgqSkgIpJvXrdPU1NBQVg4N
	hb36+FRUlJVVVa1c6esbGBgRsWVLVFRcXHIyi2VpaWVlZYWQi4uzs7MzQgkJCQmJiQjFx8fH
	x8fLyXG5MjJSUnv2WFunpWVkFBXB/gICJvs6UYCBUFVVXV1X9803//576ZKXl6trS0trK58/
	dgH2sOFpbc1isVhMJkIrVixZMmeOs7Obm4uLre369bBNcfF4n9rS0tbG5y9bdu2al9f9+7t2
	tba2tvL5goL49dFVbg9Ko+LKObJizs1NRkZKSlKyr2/9+lWrFi3Chu+JE+N9/sgIQYyMqKun
	pWVm5uXt3u3t7eMTFGRlBYa/iws2dEdX5uHjkZaWkpKUROh//9u8eeVKOh2hgYH+/sxMfHaT
	/a2+KZSUpKUFBpqb//bbP/9cuLB0KVRkbNtWW1tX19AAgfv+foRERUVFRUQQsre3sTEzs7Vd
	unT+fDc3U9Pm5tLS+Pi9e2VktLTs7Z8+EEwQBFFTIyBw8eKJE2fOmJhAAtjvv4eHR0cnJBgZ
	wXqAw8FSvWJioqIiIlpaamqqqkpKqqqzZ7u7Ozvv2RMUFBoaHd3cPNnXleLZgHmCzYb5hMMp
	L6+oqKnB60FyO7AnSLMWoScPCcMcBZ84NDQ09KDQKji2Eervh3ketmOzJ/v6UEwtCKKrq7hY
	WDg9PS0tK2vatPv3g4IiI2fOhAAeaf/S6QICAgI+PmlpkZHe3iEh5ua2tubmOTk0mqAgZf++
	foASkICAn5+n5+nT7u5wX9XVTUgIDb1588IFOzt391WrurtHRvr7+/q4XEhsMjeHCksmE+53
	y5bJy8vJcblhYeCwu379ZSlwULyZDA01N+fk0OkBAaGhMTHr1zc1NTe3te3enZ2dl1dcLC8/
	2vEM92kazd8/JCQ6WkhIRkZaWkpq3TotLQ0NVVXS/i0vLy+vqlq58t69gICIiC1bwsKiohIT
	WSyYJ8n9DQwMDAwOIpSVlZtbVCQvDwHh777LyysoKC3t6envb2rKygoIYLO5XBMT6ncwecC6
	qLGxqaml5aefrlzx8Lh3z80N7NFHv+NBmxQSohHatGnNmiVLkpMJYmSEICa2f/l8Pr+zc/ny
	Gze8vf38jh5taWltbWsTEhpr8Y5VfnkYeJbL5XKlpHp7N2xYtWrx4i++gNfGt3/hONXVy8oq
	K2trf/758uUbN+7etbbu7e3tfZx6TCkpsH+3b9+yZdWqsDC4jqtWwauU/fuySE+Pibl9W1j4
	229//PHPP7dty80tKCgp+eqr2traWrB/IZEB7E0zM7B/165dvHj+fDe3K1eam0tL4+LA/nVw
	eBb7d2SkulpA4MKFEyeOHzcxSUxMScnK+v33yMiYmORksH+7uzkcPIax/evkZGdnYeHmpqHh
	7x8aumULvFpVNdnXleLZgEAsmw1+Dy63oKCoqLSUycT2r6AgJEi5ubm5ubkh1NbW1tbWhlBi
	YmJiYiLotv3XXRGUrRCytbW1tbWF+UhKCqHQ0NDQ0FCEoGCDtH+7u+E4wKf35tm/VAB4FAMD
	TU1ZWQxGXR2P19w8bdrx43/9deHCkiWxsQkJaWmbNqWkpKfn5HA4UCHH4eCbMIvFZrNYurrW
	1ubm06a9846jY0qKhcWlS5WVOTlhYXfvKijIysrI5OSwWLKyJiZUz5tXHVlZWVkZGQeH6OiE
	hNTUAwcyMnJy8vNLS5uaSkvj4w8eREhUVESkvx8CJsuXV1ZWVdXWPhjIAEMDxpOg4KVLN274
	+GzZIi4uLi4qKiAwNNTSkp+/dy+DIS1tYEBVBFM8HwQEaDQBAQWFpqbm5tbWDRtqa3m8hgYV
	FWVlZWVlZYQOHDhwYP9+hMzMzMzMzBBSVFRUVFREaM+ePXv27EEoMTE1NSuLwXBwyMgwMxMW
	Joj29pISDufatZs3b992cEhPz8zMy2OzxcXFxSUkEPr8888++/xzhN5666233noLIT8/P7/7
	9xHasmXLlq1bEYKKY0lJHq+hoalp/vyBgebm/PyYGBZLRsbAgJKEnjxGRgiCyRwYGBwcGoKF
	WlkZQo2Nzc2trQgxmUwmk4kQ9K5ECCqCwdwbGCAz7GChJy0Njj1h4Yk+dXh4eHhkhMutqKis
	rKlhsyEDGVcYIcRgMJmM/1+1PJiFjAOzQ0ODg0NDsJ/hYYRUVZWVFRTYbDg+Lneiz4dZWVgY
	pFmlpMBwwo4ghCBjllxo4s8ZHISKeejtjh09srKwR5Cypnjx1NUVFERHc7n37wcFRUR88klA
	QEhIdPT69Tk5+fklJQyGnp6enp4eQgYGRkZqaghVVVVVVVUh5OV1505gIJvd2NjY2NKyciWM
	78jI4eHe3tLSGzfodCEhLa0nX7fl5iYkpKe7u4MCyE8/Xb3q5XXvnqmpiIiIiJgYk2lsbGxs
	akpun5OTk5OTIyUVGxsfn5q6fr21tYWFsfHISHx8cPCNG0eP2tvPmrVmzfgOJIqpDdx/caIK
	QeB5BAMVGwi5urq6uroi5OLi4uLiQs5/ox3Uo8EJMHheioqKioqKQig8PDw8LAwCwcPD5PwF
	4NmT4k2HILq7S0ro9Pz8nJyCAhmZX3/9/ffTpzdsyMjIysrP//BDsFckJWFdwOHg97FYTCaT
	qatrY2NpaWy8bZuFRVxcSso//xQVpaT4+1+5oqOjr6+t3dxMo4mK6uhQlRyvOjAfKShA5cau
	XZ6ed+8GBJiaNjY2N7e0GBlVVeXlRUYePAgOvZERvH7Cj8HB4eFxcSIiXK6UFIfz2Wfy8nJy
	MjJdXTC/+frCPEaNE4rnDY2GkIJCU1NLS2vrhg319TxeYyMoDP3XHRAHbhMTU1IyMxmMlBRb
	W3NzYeGREbB/b9zw9Lxzx8EhIyM7Oz+fzZ7IUY1fr6vj8RobtbXBAb5jB9yHU1NhK0oJazIh
	CCYT7DpZ2aKikpKKCoQgIDzxe0VERESEhBCCXtLS0jC+Hs/+HR7mcqHiWFAQ279Pi5paT09v
	r6Dg49q/cN7CwhDwlZYuLCwuLi/HdvzE75WV5XKlpcEeHhqi7N+XTUNDcXFcHJd78uS5c9ev
	r14NBWtffVVZWV1dW6ugMN4sBwoHgoI8XmNjc/PKlbCei4yE1jA3bkBrmCe3f/PykpIyMtzd
	ExKSkjIzf/rp2jUvL19fU9POzq6u7u7xxoWUFCgyODjY2lpZmZh8801ycni4p+evv1pbu7qu
	XEnZv68qAgJkcyMajSCwvYr9amvWrF69ahVC33//ww8//IBQa2tra1sbQgcPHjx48CBCvr6+
	vr6+sI6EimEAv3/hwoULFy5EaP/+/fv37ycDwN9+++2333yD0PXr169fv05WBD94HJN9bSYD
	KgA8iuLi0tLKSmnpoKDw8Li4P/44ffr8eQ8PE5Pi4rKyykoOBztQsAMcAwsFDqe0tLy8uprD
	SUvLysrP37EDboSurrNmubo6OKxeDVtTC7tXHXDUWVuDlIG7e0pKRkZOjosLZDh3dn7wwbZt
	69bFxzc3t7S0tenrwwKKzRYVFRUVFSUDa+Xl5eXl5QiFh0dHJybCNMZkbtoEmXgiIpmZsbF3
	78bH49AEjDsajcViMhmMri5JSQkJMbHAQKg8GxoCqVIaTVxcRcXKqrGRyqimeBC40QkKQgY+
	zGdDQ2SFUGdnZ2dnJ2RGdXfDIw7DEgQYNL29AwPNzc3NbW3d3QixWHQ6kwmObVFRXMk2PDwy
	MjyMUE9PTw/eT3c3Ql1dXV3d3WAAk70J2WxRURERISFn55ERghgaEhODT6QCwJPFw5WtIyMC
	AhCAYLMhQ2/9+nXr1q1DyNra2trampzHzp49e/bsWYR6emDcQJAWzz8TBxlgTIyM4B6V8Eij
	4YXd7NmzZ8+eDUf2cAAYRlJAQEBAQABC9+/fv3//PtnrEj554nmQrB+GeRMvUGVlZWVlZRHa
	vn379u3byfk7JSUlJSUFoatXr169epWU/gKoefdlw+fz+e3tS5YkJ6emZmevXAmBXyZz5syZ
	M93dEfr++4MHv/8eIXV1DQ11dXLc7ty5c+fOnQjFxCQkJCcLC0PgddkyV1cXFzu7yEjYe3X1
	4x5HR0d1dXIykwmO7rlzQfLXyorBYDBYLIT279+3b98+hJYuhcQYPM7wuIWEG2FhcACtXl1c
	XFpaUVFVNTzc0VFY+NdfdLq4uJ4eJbX6qoEdv3i+wo9iYrAuZLHYbDYbobq62traWoT09SFh
	YfHiJUuWLCHtDjxeMHg/OBHFx8fH5+5dhG7cuHHjxg2EJCQkJCQkyAAMvAcMYbIr8GRfHYrJ
	Jjc3Kys/X0bG1zcwMDz85MkzZy5e9PKys6uqqqmpq5OXB3t2vHdzONA7k8MBpYMvv4SELCcn
	EP197z3YjrJ/X3VgncNmgz+Ew4FAgbQ0BEi2bQM7ls3eunX9+mXLbt4EpQEGA9sFEGBgMv38
	QkKioiwt5eXl5bncI0cgAXBwkCCGh2tqwsNpNDpdWfnl9SakeL0Bu1NQEB45nMFB8Oc9LpAA
	29ICCYaFhVu3vvPOunUMBtyPRUQmCvw+6nhGRnClsJwc3Ifp9Mm+ThQPMjICCheP/w46HX+L
	NBrYgQ/qRU38edhuhb+fPjjxpPYvgDWu8HE82Xk/bP++mYGVyaKlpbW1tXXJkpqaujoe7/Bh
	eBQR+e/0FoQGB8H/FxOTkJCaKixsa2tpaWy8bJmLi6OjldWT27+gZMlk+vkFBUVFzZ2bkJCS
	kpFhZQWB34nfj/3lVVU1NfX1q1bB+qKycmgI7F8Gg7J/X0UelGZ+8G9FRUVFBQWEtm3btu1/
	/0NIWVlZWUWFfDxy5MiRI0cQ4nA4HA4HoWvXrl27epXc77p14I/cvXv37j17ENLU1NTU1CRf
	37Zt27Zt2xCKjIyIiIxEqKmpqelBIfzRkvZvClQA+P/p7q6rS0+XkPjzz5MnL11atercucuX
	vb1NTEpLKyqqqzkcYWERERERhBYtmjVr1iyEHBzs7e3tyffHxcXHx8cjFBQUFBQcjFB+fmFh
	aSmH89dfp09fvWpiAplgq1Z1dtbWpqZeuiQmpqRkadnePtnnTfF0wMQF7rSBgaEhkLZgMisq
	Kitra995R1RURERYeM2atjY+v6NDWrqrq7u7txekCWxswOG8axdC//575syZMwj5+oLjFyqW
	WCwIHK9dCz1EVq3CgQVBQXAQQg+3gYGOjq6u7u7QUBMTIyNdXRERTU01NWXl7m5xcXHxrCwP
	j+LitLTAwJoabW19fW3t7GyEhIQ0NdvaqMDwm8nICEEICLS1QYZfUBBIUKmqVldXV1dXi4ru
	2rVr165dCGloQIAkISEhISEBZ3QiZGxsYKCjw2Y7ONjampuLiSEkKKiu3tQkKSkpKSZ27Zq+
	vq6upqaTU2hoZGRCgoTEkSNHjvzyCwTmAgOhwi07GwLNHR0I6epqaamodHaCRNzt20ymhASH
	Q0kFTTZjM+LIBBQGAyF3d3d3d3dy4ZWcnJycnIyQp6enp6cnmTiAM+1gnEHFeEEBlzsyMjw8
	PAzBXTAYhYUFBQniwoV//712TVT0weOg0RCys7Ozs7ND6IMP3n///ffHHiFeSPL5fD6fD5Xm
	fn7k65BgICpKEAMDFRWysgTR1dXdTaM9HEghiN7evr6BAWlpOl1AgEZjMAgCHDo4gLJq1apV
	q1YhZGxsbGxsDAvRa9cQunnz5s2bNyeu0KN4sbS1tbd3dEhLV1RUV9fW4l7NCC1b9tZby5Yh
	ZGUFCQsYaWlpaRkZhJycnJycnRGKiYmJiY1lMkHyr6Fh//5vvvn446amJz0OcDCqqnZ2dnX1
	9Dg719bW1fF4CIHWAkJz586dO3cuQvLy8vLy8uT7Zs6cOXPmTDKRoqyspKSoSEICHOMrVxLE
	4ODQ0LVrsDVlAL9qYPcuKVUP84WmppaWpiZCK1asWLFiBfn94/txf//AQH8/vL5yJSgsPChY
	hZUXvLy8vLy8IAN63z6sqIDQjh07duzYAfOzlxdCZWWlpSUlCGFDfHRAmeLNoru7ri4tTULi
	2LFTp65cWbXq/PkrV27dmjGjoqKqqrZWUhJXlE8EKGMhBHazvPyZM5cueXrOmDE8PDIyMrJq
	VWdnTU1KyqVLYmLKylZWlP37qoITOGGdRKPhNQ9I2zKZBOHh4eOzcaOwsJCQkJCLS2srn9/e
	Dq0XHuyhWV/P4zU1IXT27OXLXl66upBA/c03GzaUlVVWOjnV1ubnR0aeP6+oqKOjrt7SghCd
	rqrK51P2K8XTMDwM9i+bzWJh+5fNVlWFV0m7YzQ4EGZlZWZmZCQm9v77W7euWSMvLyAgJKSh
	kZ4eExMQcPVqQoKp6bRp+vpz50LggsEYLyBMJpZyudLSnZ1sNovFYt26xWRKSHC5VKuPqcbT
	aqRg+xbGGWn/wsrvwdCqhISWVk/PuXN//33kyPOXIgV/JGn/Qir/gys+mE/B3hUWftLA73jX
	jOLlgv3NlZXV1XV1wsK4YO1x6e/v6+vvJ+3fb7/dteujj57c/gV/Idi/3d3OzqB08OTnA0ps
	EhLQg3rlSghVU/bvqwqNhv19ZB0wjYZQS0tLS2srQgEBgYGBgQgZGBgaGhqSFbw4oIsrgfHz
	CME88+mnn3762WcIKSgoKCgokJ/X2tra2toKrQyDghBqbQVJafy5D8+Ak311Xj5UAPj/KSur
	qKiudnCACuCdOysra2rq6jgcQUFBQSEhhD788IMPPvgAoc8///zzzz9HSEZGRkZGhnz/hg1N
	TU1NCP3666+//vorQsePHz9+/DhCIOXB4YCEyM6dYFCD6wUhf//JPm+KpwMCGHFxkMlcWgqS
	WHp69fUNDU1NkpJ//nnixKVLkpKSkpKS4uJgMA8PI2RgYGBgaEg6erW1tbS0tEiH3r17IHGQ
	kJCcnJEBkkMIkbmEDzc1FxKCgMzChdCjFS/0Bgeht5KDAwSG+/uNjPT1dXQKCw0M9PQ0NUNC
	Kiqys0ND4+NBIjU5WUCAwzE0pG6orzuCgrKyRkYtLYmJISEeHj4+ixfPm+fmtmDB1auenvfu
	6egkJSUlJSWRAT18o7S0NDMzMhocnD9/9uzp0wMC9PR0dDQ1w8KwlGVjY2lpXFx4OOwvPT03
	Nz+/uHjGjLy8vLy8PITwI0ZTU11dWZkg5sxxc3N0vHnTwEBfX1f31Ck6ncVSVn7QRUQxFcDG
	HCgTjA10jq5sg/kRMlLb2sTF793z9w8L+/ZbSGRRUID30ul4fIGhjAOwUGk0OPgoE/S/AxWj
	K+vAIS0gABJrmzf7+t665e8/Zw4cL7kExNtDYoSQECgpKCiA43rs/sf7m2JywRK6cF8k/h8a
	DRK1xm6PKyax8gFOtNLS0tBQVpaW7u3t6+vvx9Jtj9MFC4D7c08P7K+lBUsUwf4gw/lR+ga9
	vT09PT1QIUXWPQ0NwRhrbobxSrUQeVUZ60iE+QePDxwAVlNTU1NVRWjv3r179+2DivBvviF7
	GK1bt24d7iiHECgQXLkCBvL334PDmkaDiveDByHxwcYGKoPv3RvvyCjeVLD9i+3U8vKqqpqa
	xw/8jgavB6AiWFIS7xcck5T9+6oD99X2dlgfpaVBGNjQEJ5nsaCnKpN58ODPP//zj7Y2nl3G
	qwDi8RoampsRCgoKDY2JsbeHnsKWltnZeXlFRcuWmZpOm6anV1ZGpzMYTOb166CMRafLy3O5
	MjIhIbKycnLS0sPDw8ODg4ODPT0MhoyMsTGVYEDxMEJCYP+mpEREeHn5+EDPywULrlzx8PDx
	0dGBll3k9jgQZmFhampoODi4ZMn8+e7u4eFmZsbGBgYZGXg7bW0tLTW1W7fmzZs1y8Vl/nxQ
	hHNwgHE89jjU1FRVFRUJYvZsV1dHx5s39fUNDHR0Tp0SEGAy5eQo+3cq8TSBAXz/A0UEcfG7
	d/38wsK+/RbmSQUFsHtxpTdB9PcPDAQElJVB5aO+PgTunl2TBQJxYP/29JD2L7aL8HoU7Prh
	YVBwq6+HVjji4k9a0Q5n8+B1o9aVL5PR9i88+/gjGCu9aWqqqamoSEv39Q0MDA4+uf0LqQQ9
	PWCHtLSwWEwmi/W0ZzU0BGfQ3AzhQ8r+fZV5cEbA/j/sfzl27NixY8dAKbKrC6Evvvjiiy++
	gEpgZWUywPvtt99+++235H7ExMTEsG4kQgjV1NTU1NQgdPTo0aO//orQ+fPnz58/j1BHR0dH
	RwdCoqKioiIi1OxEBYD/H8hQ0dMDLXw5OVzxNm2akdG0aQi9887bb7/9NkJycnJycnJj348r
	Od5555133nkHoeDg4ODgYISysrKysrIQAglpObm6uvr6xkY9PXgXZQC/qoiLczgcTkVFc3Nr
	K5+fmgrTmK4uSDzTaFJSXK6sLEI8Xn09j0dmTOMm5wwGg8FgkJkuv/zyyy+//IKQvr6BgYEB
	QpcvX758+TJClZWVlZWVZA84YWFhYWFhhLhcLldGBiEpKQ5HSgqh/PyCgoICCLjU1TGZ4GiR
	kkpNzcjIyUFIRkZaWkpKQcHQUF9fS2vGDHt7KytT05oaOztrazOzoKDy8szMkJALF9TVTUzc
	3WNicGBvsq8zxYvB0NDAQEenpMTOzsbG1LSsLDg4IiIuTkentbWtrb2dDGzhcQqZzX199vY2
	NmZm4eFcrpaWvT1p2nZ1dXX19GhptbXx+e3tcnI40IHfjxNmWlpaWlpacE8lGk1EREREWFhf
	X0xMVFRIaOIeORSTAzYhyMy5RwdiHwy8Dg0h5O3t4xMUJCsbEhIRER+/YAH5rkcbJ7jXFu41
	PDqgOxGjDVbcs+nw4d9/P3NGXh6kCeXlx37+w3+3t7e3d3aSPTOfFio8/HKRkpKUlJAoLNTX
	19HR1GxrCwuLjExMlJa+dg16v2DpblVVVVVVVYSys7Ozs7NJ6XAZGWlpDqenx9nZ3t7KiseD
	EfDkPawkJFRUrKzq6yMj79+/dCkmxtzc1NTAYNasiIiYmJQUOv3UqVOnTp9GaM2aNWvWrCFH
	oZeXt7e3N0IlJSUlJSUIqaurqioo8HhQwX7xIp3OYrFYT5NLTTEVIOezBx1v5LyFEwHXrFmz
	Zu1asqf5vn1Q0btv3759+/cj1NXV2dnVRc5av/7666+//EJ+zoED+/d/9x1Cq1fDfrBB/DQO
	PYrXn7o6Hq+pSU+vpORh+/dZwfspKQH7t7aWsn9fByQkVFWtrVtaPDzOn//9d39/MTExMVHR
	t96CV1ksPM/hddzjAgl7NFp6elZWXh6bXVZWUVFVpafH4UhKSkhoakpJcTiSkjY2+vq6uhoa
	IG1JEKGhdnZWVqamgoJycrKy0tLR0dAzsK5OTo7LlZEpK1NRMTIyNExIoNFoNDm5xxGhpHid
	gQTmkhIYN2VlkHgwNgCMEwJNTIyM9PT6+sBeDg+XkdHSsrcnu7P29vb09PVJS8P7OZwHWy08
	iqGhwcHhYRpNQkJCQkxMX19CQkwMPDsUU5EnlQgFxUeErl719PT1lZW9d8/fPzx8wYKH9/gg
	BIGQmRlW0IBe6s9+3A0NYP8eOvTbb6dPy8tD5TupOURapw/bqaAsSJ4HxasBhyMhIS5eWKir
	q6Wlrt7WFhoqKJiQIC3d1wf+uImQluZwJCQ6OmxsLC2NjcvKCGJwcHDwye1fDkdNzda2vj4i
	AuxfU1NjY339WbPq6xsaGhvpdOwPHw/sXwJ7nMcTEhISEhS8eFFAgLJ/X2XGFlA8PPPgAO3J
	kydPnjxJVvB+99133333HULq6urq6upjA74YHC85cAB6AHt4eHh4eEDi/YPzGOnPnOwrMrlQ
	AeD/p7a2vr6hoaGhpaWtrb0d12ZISmKHoZSUtLS09MT74XK5XC4XMhaUlMgAcGVlVVVdXW1t
	aGhUVGJiaupkny/FsyEnx+VKSQ0PS0iIiYmK9vaC444g1q9fv37jRhrt448//vijjxDy9gaH
	7qFDhw4dOkRWQjY08Hg8HkLKyioqKioIqanBxLZ79+7du3cjNH369OnTpyPk7+/v7+9PSpAa
	GECAWEdHR0dHhwyw7d0LGTG3b9+5c+cOeZw4gMHjNTQ0NZGPIFmtrGxkFBERH791q5ubi4ud
	nb29i4uDQ2np3393dzc0ZGZ6eYmIyMmZmlI33NcFgiCIpiZBweDg27fv3n33XQ8Pb28/P2dn
	cNCRGVZ43svJycnJyUEIeh6JiioqKijIyn72GUhWtbSUl2dlhYQkJn799b59v/5qapqcnJaW
	na2sjAPJbm5ubq6uCP3vf9Db4dixv/766y+E4uLi4uLiELpxw9v7/n1ray5XWprD+eqr1taK
	iuTk/fulpNTVra2fXHqGYnIYHejv6YFKRrzga2trb38ctxsOEHM4kNgyOvFlIvB2uGcvrmDq
	7u7tHRhAqKurp+dx8uuxVA0+H2lpuP/jHpz/9U6ExgtvU7xopKSkpCQlo6Jmzpwxw97ezy8v
	r6CgpGTJkrCw6OikJCGh9957771332UyRURERERFEWprA0mg9vb29o4OhJYvX7x49uyBAXAM
	RkWBVOnT96yEQHRgoJOTnZ2V1QcfREfHxaWmKiqeOnXq1KlTCN25A/drbPC2tbW1tbZiw5fP
	V1JSUJCT+/FHMzNjY339+/dpNFFRHR2qQuRlQRAE0dwsIjI42NxcX49FpxBiMkVFRUQ6Omg0
	ISFNzcevNMOS+PD/8Xv54opgLLGPDeUDBw4c+O47hPbvP3DgwAH8DoTExWF9iKWf166FCmG8
	H7zf0dLTz359enpKSyUkBge7u7u7xcUf7M1Oow0MMBjS0kZGjY1UQuHUJiYmPj41NS2turqm
	pr6+thaeVVN7XvsH5ava2vDw6GjK/n19MDDQ1dXUlJLS0lJXV1EZHMzJycsrKpr4fePNe6Np
	b+/o6OrCj0wmjCNpaQgQ40qnBQuCg8PD4+Kw1KqVlYnJtGn6+kwm3Df5fAMDXV0treDgzMyY
	mDt3IiJ0dLS01NQiI4WE5OXNzCorKUnpN4vQ0MjIuLgFC27cuHXLz8/JCRJfxm6HE1j8/IKC
	IiNFRRUU5OW53M8+g0TS5mYer6goOjo8/L33Pv/84EFDw6ysnJz8fGXl5ubW1ra28T8fenMi
	dP26l9f9+9bWsrIyMhzOV1/x+VVVKSn790tKqqpaWVH271SAVL96/PfgRLvRfreXDVY4gnnz
	5V0rEsoCfpmA3RgVNWvWjBkODn5+ubmFhaWlS5aEh0dFJSYKCcF4GOvBwPdjCwtTUyOjzk4j
	IwMDHZ3r16FV5dPbvwYGenpaWoGBLi4ODlZWH3wA60xFxY4OSGAdDZMJfiQlJUVFOTk+H/yN
	D9q/IiKU/fvqQkpA478fPUNgpavCwsLCwkKycAgHgMejubm5ubmZLIgbHfjFPJiE/SZDBYD/
	H2NjQ0NdXVlZ6GEpIgKOQ3AMtreTA3Iiuru7u7u7ScciRlNTXV1FRV5+5szp0+3tp007cuSP
	P86ciY6e7POmeDpGRoaGhoZkZCBTysIiKio+PjVVQMDIyMjI0BAhQ0Oo7O3v7+/v70fo0qVL
	ly5dIqV1vb1v3fL2Ruj9999//4MPSEedkJCQkJAQ2WPTxcXFxcWFDISM15tj06bNmzdvRojH
	g8AygwG9OnEghcfj8errEUpLS0tLT4dx2tODUFJSampWFo1WUFBUVFZmYACG9a+/5ucXFpaV
	2drm5SUm+vqePWtgYGOzYAGuDKYM5VcNgiCIhgY6PTLSz8/f39n5xIlz527ccHWFykxhYXV1
	dXUNDVJaw8zMzMzMDKEjR44c+fln3NuVRoPecHp6YOD89ZeIiLCwkFB9fUxMQkJamrw8GDpi
	Yg4ODg729mTPBltbGxtbW4Swg7i0tLS0tBShnJz8/JISFsvHx98/PHzLFhUVZWUFheJigiCI
	urpjx2g0Gk1R8VlqMCmeD/9tyGlpgZT90aNHjx49OlrC9lk+FcYLTniZaLulS5cuXboUoWnT
	pk2bNm2sY3Eix+PoAAl+BGUHUorm8a8WZQC/TKSlNTTs7Fpb6+oKCqKi9u373/82b165MjVV
	Xl5ensv98ENv77t3g4J0dJqbIcMeJ1bh+25lJfQOBklUfX2CaGvLz2cwaDQOx8DgyWviysqq
	qmpqFBSys/PyCgsFBfFok5LicDgchBobGxsbGyFRa3AQodmz3dycnAYGli1buHDWLB8fY2Mj
	I13dGzd0dS0t582jJC2fNz099fXp6aKi0CtXXBy+d3d36OHH5V69eubMuXN6erA+s7bG88Pw
	8PDw0FBy8o0b58//9ltwsJGRnp62NnYQR0WJi4uKiog0N7NYsrImJh0d+PPI4OjDxzGeooKg
	IIzLhQsXLly0CCFfX1/f+/fJxAGMq6ubm5sbuR0ez8/KwEBjY1aWuHhHR1dXV5eMTH09j9fc
	7OKSk1NQUFLS1XXjxvXrd+7MmgXSc2R3bUgI4vPZbDY7Li4kJCMjJubOnepqsINCQ2H7jg5h
	YXl5M7NHuYIoXiZz586a5eysoZGZmZtbWCglBeP/+VWMY/sXEk2nTQNFDsr+fdXhcmVlpaWD
	g1VUlJTk5ZcvFxYWFhYSmj27p6en51HrP2zHOjk5OTk6IlRXV1dXX49QcXFxcXHx438uTjjE
	iar4b0jkkpAIDY2MjI9HKCwsMjI+XlhYTU1VVUlp82YbGwsLY+PVqx0cbG3NzTMyzM2NjYuK
	btxobi4ri4/39ZWWVldXVi4vp9EEBFRUKDv3dYEgCKKxkU4PDfXxuX/fyQnmn8WL4+KSktLS
	hIUnUjzg8Robm5tptAsXrl69fVtPb2RkeHhk5NgxsBESEkJDIyLi4gwNQcJXTOxxXcs5Ofn5
	xcUsFkgEb9mirKykhO3fxkawf2VlKfv35UOFMp+Gh5sqTfbRvHlISYH9W19fWBgdvW/f//63
	adPKlampiopyclzuhx/eunXvXnCwjs7oACz2c0ALQy63vb2jo7Nz4UKC6OgoKMjNpdHExfX1
	n9z+hRYgYP8WFQkKjldRjtcFkLg9MLB06cKFM2f6+EybZmCgo0PZvy8K+N4FBHp66uszMrhc
	SEwyNGxpaW1tb9fX9/UNCoqMTE5WUVFQ4HKNjZlMJpPFEhJis9lsJrOuTl9fV1dLS0NDSkpS
	Ulw8M1NNTU1NSSkri07ncOTk+HwajUaTkXn8cUOnQ3zDycnZ2ckJEp4PHEDI1NTU1NR09HGT
	f2P7GW93+PDhw4cOkQnTMTExMdHRYLePjIxvhz/q+rS1MRgEwefzeJKSoEhjYsLnt7d3dpqa
	5uUVFJSWlpeDcqGi4sDA4ODAQG9vbW19fVNTdvbChXPmTJ9ubS0tLSUlKVlQoKgoLy8rm5cn
	IqKoaG7e1DTZ8RQqAPz/qKmpqCgqRka6ujo52djk58fGJiSkppqYFBYWFRUVIRQfHx8fH086
	mEdXAuFAX1BQUFBgIEIFBZCBANIFw8PgyKusVFdXVVVUrK+f7POleDaGhoaGhoZoNFlZLlda
	mnTe4XGyePHixYsXg4FbVwfSpgMDpNb9P//888/x4xAoNjIiewKPdgROXHEGzJkzZ86cOQiZ
	mJiYmJiQBjGuiAsPj4gID0foo48+/PDDDyFBgc8nb7x4QRAUFBYWGyskVFZWXl5dvWkTSNFY
	Wc2e3dDQ1PTJJzDxRkfDcVKZWK8K5eVZWVlZlpbh4VFRCQlHj0ZFxcWlpBgZ4QSB/ftBMmP1
	6tWrV68mx93+/fv3HzhAjt/bt2/fvnMHob//PnPm6lWQFGKx5OWx1K6FhYWFhQVCP/zwww8/
	/oiQvb29vYMDOa4XLFiwYMEChJKTk5ISExH666+///77b4TCwqKjExOFhKA38PbtKipKSgoK
	6elw9BERk339KP7bnINu56RywWSBA9H48UXzqMAN5SiYfBQV9fVdXCoqCKK3t7T09u3q6tpa
	Hm/1ah8fP7+wMB0dXV1IKNi9e8+e3bsRioyMjIyMRMjb28vLy4vFio9PTk5PX77c0tLc3Mjo
	1i3Y64NdzP+bzs6amtRUKanz569evXVr48bo6Li4lBQpKRcX+H189NFHH330EUJnz549e/Ys
	GdBTVVVWVlDo7p49293d0fH+fXV1Y2N3d8rwfd6Aw19FJS4uKSkj4+OPIyNjYpKSjIzy8goL
	S0vNzaFVi6wsVPLQ6aOl4CERb9o0kHBctUpHR0NDVXVgAAIN6ekzZjg729g0NRUXp6UFBl6/
	rq1tbm5pGRlJEHx+UxN0WsNm7H/NrHi9iHsYxcbGxsbGIqSlpampqYkQTqjCz+PtPvwQ1nnj
	SWU9rFRAEBCQheNqbhYRKS5OS0tNnT49JCQyMj5+7drw8Ojo5GQuFxIkzM1LSsrKqqpYLD6/
	vb2jA0uxkitVnMkvLS0tzeFMn66gICcnI9PQAJV4+Prk5ra2VlQkJv71F4ejpmZjU1NDVQpP
	DtramppqallZs2a5ujo6VlQkJ6emZmcbG4ND8On3i+3fadMMDXV0Kiuh9yVl/74uyMvLycnL
	NzVZWpqZGRllZfn6BgZGRNjaQsWZhMTo7VVVVVVVVBD68ssvv/zqK4Tu379///79Jw8AOzk5
	OTk5IfT9999///33CImLwzxXV1dfX1+PUGZmRkZGBkJhYeHh4eEIJSQkJCQkIHT5soeHj4+g
	IASI7ewcHe3sLCxMTefPnzVr+vQ1aywszMyMjPbuhfksKoqyc18PKiuzs7OyLC1jYuLjU1L+
	+iszMyenoGDatJ6enp6+vsdfsYNSIEKQQK2oyGKxWAzGsmXj9baeCKxQ9KD9q6KyfTv4Iyn7
	dyoACcGTfRSvGo9OaKR4OSgo6Ok5O1dUEERfX1nZ7dtgz6xefe9eQEB4+Pip9Pn5RUVlZSxW
	fHxSUkbGihVwX799G159fPu3u7u+Pi2Nwzl37vJlsH/j41NTpaTAbz52ezxaVFVVVBQVu7vn
	znV3d3K6f19NjbJ/XwRdXbW1aWmqqhER9+9fvmxmBolImzdD4aOtbWVlVVVtrYwMBO5rawUF
	BQXZbDk5BoNOp9OZTDqdwaDTOzu1tTU01NQkJcXExMSEhTMyoFVgSQlUft+9W1dXWBgVlZio
	oKCr6+xcUTE01Nqalzc24IkL4ObNmzt37lyEDhwAyWdciITBfuigoKCgoCDyeRz/wH7rGTNm
	zHB1ReiPP/74g8MhJaH9/aHV14OtmBACe55GA/uXIAQEIIFCXf3+/Zs3PTxsbeF3sWRJZmZ2
	dkGBtnZnZ3d3d7eZWUlJaWlVFZ8/PDwyMjwsJgb388HBvr7+/oGBhob09Kys3FwlJTU1FRUl
	peZmQ0M9PS2txEQjIwODrKyLF7u66upSUzMyREUVFS0tH6VB8mJ54wPA0PJeSKiwMCUlPV1M
	DCL1nZ3QO4YgsrJycwsLaTTco1VTExwvlpaWlpaW5H4yMzMzMzMR+usvkDjFATZweHR1GRsb
	GuroHDumo2Nioq9PLehedYaGhoeHh/l8mHBSUsCBZmDg4+Pjc+8em11eXl5eXk5OSLNnz549
	axZCSUlJScnJCOXm5ubm5iKEpSAtLCwszM3BYSYj8+THgys+8Pgcjb29nZ29PUKffPLJJ598
	Qm5fVlZWVl5OOg6xdCv0rEbozJmLFz099fWhUnP/foIYGUEoPLy9vbo6OfmffyQkVFSsrSmJ
	6KlKQ0NZWUKCvPy//54/7+GxYMGFC9eu3bmjpjY0NDxMEAICn3766aefforQsmXLli1bNjbh
	AEIl4Gj54Qcy0eX+/fv3/fzIChFzc3Nzc3PIvDp8GCFnZ2dnZ+exATJcSbltG0hCJyVBRXx0
	dHR0TAxCAQGhoTEx+vo6Otra6urbtjU2lpUlJ+fny8pqalpbP70UDcWzQKPhBRPu3YIXYm86
	+PeAfwcEATMkQJnAk015eWFhaamiYkxMQkJq6vAwZDYTxMKFixYtWUKjrVy5cuWqVeCYVlND
	KCwsLCw8HKHY2ISE9HQjI3t7GxsLi+XLQTq/uJhGo9G43MHBiT43NTUjIzfX2Tk0NDIyIWH6
	9P7+wcGREYQ2bNiwYcMGhObOBUOnoaGhoaEBocDAwMDAQCzVJilZUVFZWVPzOLXmFI8DzF90
	enJyeLiX14wZZ89evuztfeDA/ftBQZGRVlbZ2bm5hYWCgm1tfD5Zr0vyaOUAfKeUlExLy8jI
	zYWAq6jonDkhIRERcXEIgfTZ3LkODjY2eXm3bk2f7uxsY3PnDp3OYAgIkHdaHAbGn9Pd3d3d
	1YXQiRMnTpw4QSorqKhAyxAc+MBg5Y5ff/31119/JZViPvjggw8++OBRiSrwedDjkMmERD99
	/aioO3cCAnbtio1NTExPX7YsKiouLjlZRqakpKysuhqhzs6urkfV646vrFBaWlGBNWsUFCQl
	JSQSExUUoqLi41NS3NwWLJg9e/p0OzsHB1vb4uKvvoLtEhMne7y8KRAEQfB4QkJFRamp6emi
	olyulJSkZEcHJLYSBASAn/4+pq6uoqKo2NVlZmZsbGBw7JiurqmpkRFl/74u0Gji4traXV1J
	SWFhN2/evKmrq62toeHgAAlXDg44wIWxsQElIBzAxa/jVkdVVVVVVVUTS9SrqampqamRDkIR
	ERERERGEjI0hARoraG3cuGnTpk1kgtfFixcvXryIUFQU/O3ldfduYKCQUFJSamp2to0NBIC/
	+27VqqVLS0oCAiBB5cwZDkdFRV6+sZFGo9PV1KjK4FeFpqaKiuRkefkzZ86du3aNtH+bmpqb
	W1uffl6DxCeE5OTk5OTkEFqyZMmSJUvI+yBu9VVWVlZWVoYLBsbfX2dnZ2d3N2n/6unp6Gho
	bNvW1FRenpKSn8/lamg8SysSiieDlAglCIJ4uK0PxfiQ8zY0HKGu2uSC7d/o6ISElBSwf7u6
	xm9QhZUhYf0P9q+ZGdi/zc1g/8rIjG//QsI1kxkXFxWVmDh/fmhoVFRCwvTpdXWQODMeOMGW
	tH+rqmprKfv3eYEDm4WFKSn+/q6unp537gQEHDhw8+adOwEBuropKenpOTkSEuAfYbOhohW/
	+1ERBYQQkpbOycnLKy7GBWeWlv7+QUFRUSYmmpoaGqqq7u6urs7OtraVlY6Odna5uZ6erq7O
	zjY2sbHYUzYyAv4yXV1dXV1dhL79du/evXvHBn57enp6ursRunz58uUrVxD6+WfwM+PUgZ07
	d+7cuROhjRs3btywAQrfRETI/eD9lpaWlZWWIlReDvdlYGSkt7evr79fSSk83MPj5MlVq6AA
	dOXK8PDo6KQkNbXS0vLyqiq4Pl1dTObD9/PRzWFZLHzdoKUOBLiZTCUlCQkxMTGxBQssLc3M
	DA2dnFasWLp07tyiovz85GQ/vwMH9PWtrObNCw9/WZXBb1wAmCAIgs8XEamoyMpKSXF09PS8
	ePHGjcWLPT3v3AkMNDUFKVwHh8LCkhIQAgJHioaGhoaGBtlbcDRKSkpKSkoQGLayAu3yoiKE
	6up4vMZGUVFvbx+f4OB167q7u7t7e1ks6EXD4ykrKysrKERHS0mpqenotLbSaDSalFRPz2Rf
	J4r/RlxcWdnKqrX1+vWzZ48eDQwUERERERZetqyysrq6ro7NTkxMTExMROi999577733SIcd
	1rT//ffff//9dzAQSktJjfunDQBPBB6fu3bt2rV7N1n5i4/Tz8/Pz88PIRy4xkAvVwGBiIjo
	6MREZ2foeWxtDYtjKSkIBH//PRUInlpAbz5R0eDgwMCIiD17IiNjY5OStm2D+UhIaPPmTZs2
	b0Zoy5atW7duHb/HKpbJ0NfX19fXJyU1Ojs7Ojo7EYqMjIqKikJIX19PT0+PrADG42s8dHTg
	hr99+/bt776LUH5+fn5BAULFxSUlFRUIwUJi1iw9PS0tdXU7O4IYHKypuXePRmMylZUpB8yL
	BqRShoeFhYWFBQV7ekRFRUWFhRFqamppaWtD6N69e/fu3UPI0dHR0dFxYonm1w3s4Ll9+/bt
	27fJXiNKSvLyXC44JIWEenqGh4eGRkYoCbfJora2vr6x0cmpq6u7u7fX0ZFOZzCYTBoNz1N4
	3sMJfViJw9Pz5k0PDyYzISE5OSNj+XI7OxsbMzNPT9hrQcF4n9fRUV2dkqKkdPLk+fMeHlu2
	pKRkZOTkyMra2dnZ2dlBZuqMGeT2RkbQKoLL5XJlZLBkFo1WXV1b29BgakoQnZ1FRWJiNJqY
	mK5uZ+dkX89Xlb17v/76gw+UlMCxsGcPVPw6OUGggkx80tbW1tbWJpVUcM8hSUlJSQmJB3ua
	Q4JndXV1dXU1qfhTWVlZWVmJUFpaZmZeHkK5ufn5JSUyMpGRsbEpKW+/XVxcVlZV5eZGECMj
	BKGkhPcHGchkAt6//545c/o0BH5//ZUM/B46dOjQoUMIzZo1a9asWeT5YcWX3bt37969mwwE
	4/PC24+VuB8ZIQg1tX//vXjR0/PYMW9vH5+gIHV1kLZiMPr7IdEHJ25haX09Pbjfq6ioqCgr
	Q6sRDofcP5/P5/P5sJ6sqCATZHGAByriBQXBsHZ29vcPDo6K2r7d1dXFxc6utBSUSpqbJ3vc
	vG4QBEG0tIiIlJdnZ6enk/YvBMIetH+Li8vLnz2Bqb6+oaG5WVT01i0fn6CgdetgfLNYmZmx
	sWD/Kilh+1dbG+xfaWnK/n1VIAiCGBwUEDh16o8/fvqpt7e9vb29s5MgRieE4PkJt0bCrRdw
	oBYnzmNFDFwZPF7gLDQ0NDQ0FOzo335DaNGiRYsWLwZHoo4OJDgLCyOkoKCgoKCA0Jo1a9as
	WYOQg4ODg4MDQleuXL58+TJCp0+fOXPmDEIVFZWVlZUCAjxeQ0Nzs4MDJGDp6sL92MBgyZIF
	C9zdr1yBedPfn1IqmNoQRFdXcbGYWEhISEh0NNzvk5O3bQNp+2dvjoDt27Vr165duxahb775
	5ptvviHvfyUlJSUlJeR4vn79+vXr1xHq6np0AhWmqAjs37CwqKiEhOXLIXEmORlaIv31F7RE
	ouzfFw22f6HFVU+PmJioqIgI9PKlViXjIyYmJiYi8qD9C9dxso/rTQUqf52coCWDoyNWrpzo
	fXl5hYUlJWD/ZmYuX25ra239ePZvc3Nbm5YWFM59+WVyclpadras7GgFpfEA+4xGq6mpqwP7
	t6entFRMjEYTFtbSouzfJwUnsCQkhIbevOnm5usbEBAefvQorPdNTIqLS0srK5+91QtepzU3
	t7by+UwmPMrIgB0hIwOtJk1MSkpKSysrcStJLhcniOD4R1ERKO5i/0xHR0dHRwdCJ0+ePHny
	JFT0/vEHmTiPwQqWuPUqjruIi4uLi4uT+21paWlpbSXfB78ELvfMmQsXbt48eBAq5J2c0tIy
	M3NzmUwI+D7794AD6k1NLS2trWx2UFB4eFycrGxZWWVlTY2s7MqVlZVz5/722+LFnZ1dXV98
	Ae8KCXnpA+Z1AQ/89vaqqqQkHZ3U1IgIL6933rly5cyZI0cuXtyz54sv3n2Xx7OwMDU1NBwZ
	gQg9/gkQBFRIEsSaNWvWrF5NEPn5+fn5+cSEVFRUVFRUEMS777777rvvEgQMQIKABePICDQ3
	b29ftGjuXFfXqqrPPvvgg82bAwIuXjxx4vDhixfj4oKCrl/fsKGvr6kpK0tR8cEMNIqpR3p6
	VNStW19+uWTJ/PlubrgmjiCMjIyMjIwIIiUlJSUlZew4qa2tra2tJQgvLy8vT0+CaGpqamps
	nHh8PW+ampqampoIYtOmTZs2biQIyGglCAkJCQlxcYIAByI2dAlCUJDNZrEIYt26FSsWLuzr
	Cw318blw4fffcSX9ZH8fbzoE0dtbVkanQ+/mJUs++eTddzdubGiAQB5BQKUuQaSmpqampj75
	eIGMfYKAjHqCgBs1QUhLS0lJSRHETz/99NOPPxIE3Lgn3h/c+Ali8+bNmzdvJghIuCEISUkJ
	CXHx/v4vv/zoo61bz55taSkrS0hQUJjs6/umMDDA55eX0+lpaZGR3t6rV3/99Y4d77xTXs7l
	yshISYFkKJNJEMuWvfXWW28RRG5uTk5Ozsufv142qakwn4NUDb6vE4ScnKysjAxB7Nnz+efb
	t5eXw31h9eqBgba28vL/SoV4M4CrJyAwMNDUlJWloEAQ7e35+VJSL+rzRkba20tLxcSuXDl9
	+siRCxd0dbW01NUJAhKhYP6KiBj7/UIlLkGA45gg7O2trc3MBgfv3Ll69e+/QRqyrY0xJnGS
	IIaGKisZjMTEkBAPj2+/feuthQtnzuzvl5KCefHatWvXrl2DnFcsNEQQBMHj1dfX1xPEnDlz
	5syeTRAcjqSkuDhB/Prr999//XVu7vBwa2turpLSi/1eGIy+voaGzEwVFYLo6ysvFxV9UZ/3
	ssDjLTz83r2LFx0cbG2trExNz50DSVrcnZIgILGTIPbu3bt3715yvdba2tra2koQoHRAEGDg
	ko9Q+U9uh+0DqDAjiBUrli9fvpwgZGSkpWVkyPWTjIy0NIdDECAFBfMog0EQ0AqEIECRA8af
	vDxBWFtbW1tbE0RYWFhYWNjY8YPBz0NghCBsbGxsbGzIcYz3CwGYBz8XjgMfF3mcMjIyMgSx
	fDmcBz4vfJ74vPF1GH198HXD2yUnJycnJxPEnj179uzZQxDq6urqamoPrisFBQUFu7udnOzt
	LS3PnYuODgi4etXBAX+Pkz2eXjXgutFobW2Vldj+9fZ+552rV8+c+eWXixe/+ebLL997j8cD
	ib+REWjlQdq/z/sR7IiRERUVZWUFhfb2xYvnzXN1rar6/PMPP9yyJSDg0qVTp37++eLFhISQ
	kBs3Nmzo729spOzfqU9BQXKyn5+z88cfb9++YUNCgqioiIiwcH8/vDr6+yeIn3/++eeffx5/
	fXX37t27d+8ShLS0tLS09MTjCuYNgjAwMDAwMCAIULgi7ZPu7u7u7u6xn9PX19fX10d+nq2t
	ra2tLQ5c4/2PjGhoqKkpK4+M7Nz56af/+19+Pvhn5s+n5qWpTW5uYqKvr5vbjh3vvbdxI48H
	4/L5zWfYTsV+PmjVMHacgaOaHJfYrzjR/uXkQIFh376dOz/4wNOTz6+sTEqi7N+XBbZ/sR23
	e/fnn7/7bnm5vDzYebAV9Ygf5eXl5GRkCGL37tH2L59fUUHZv4+yfwsKXpz9SxBdXeXlYmKw
	3rtwARQFnvx7dXCwsTEzGxy8e/f69X/++W/7t6qKwQAlkL17ly9fsmT27MHBh++nEz9KSXE4
	EhIEcfToDz/s3JmbOzzc1paX9yLt346OggIpKbB/1dVBMvv1sH97egQEsrPj4u7edXP74ouP
	Ptq6NTNTQUFOjsudvHlCWVlJSV6eIKyszM2nTcN2B/k6JBgTxJkzZ86cOUMQn366Y8eOHQQB
	LeYm3j/eDtu7eD94v3g7NhviGNbW5ubGxiMjKipwXJN1XfD3snPnp59u25aZmZeXlHT/vrs7
	+POpdeZjQxB8fn6+kBAs1GfO/OefX3/duzchYc2a5csXLOjt1dXV1lZXh4WYoCD5BUAlCBnQ
	wIZKTU1NTXX1kzuKcWANJNwIAiqlCAIy6cnPhQwzgtDRAQfl7Nlubk5O9fUffbR9+4YNZ8/e
	vXvt2j//LFvW1FRaGhcnLz/Z15fiYe7du3Hj+PGVK6F5fWsrXuD/8MMPP/zwA2loTlVwQA8q
	fwkiJCQ4ODiYIC5fvnz58mWCgCbsBAEVfg+OWzColi9fvHj27MLCc+f++efHH01NCYIgOjqo
	CWuy4PEKC2NitLROn/7zz4MH4+M1NNTUlJTIeef48ePH//mHdNQ+Lfj90LuSILS0tLQ0NQmC
	y+VyuVyC+Pvvv/766y+C6O3t6enpmXh/2GEDEuakI8bc3NTU0LCgwMvr0qU//1y8mCAGBiiD
	4uVBEATR1cVgpKRERnp5rVkDgeCyMuygwI6QBQvmz58/nyDS0tLS0tIme1Z7fuDASkxMTExM
	DEG4urq6urqS41NBQV6eyyUISCgrKwPDd80agiCIzk7GG6ewgoGEDTq9sbG4ODZWRsbH58aN
	48eXLLl+/ezZX3/18rp588KF33+/dSs2NjDw2rWPP66rKyiIjBxPaujJGRhobMzKUlb++ecD
	B774IjdXUlJCQkyMIKBHNUFA5ebY7xsqFwli48aNGzduJAgJCXFxMTFYmP/vf5mZJSUZGUFB
	BgajPw+O38Dgzz8PH96zJzMTJwRAz3OC4PF4PB5v7OfhQNnXX3/11VdfEQQkIhLEu+9u3bp6
	NY9XWpqRERQ0e/bzui4E0dlZXMxiZWRER9++vWjRjRvnzv3226FDnp4XLvzxR2JiYOCtW//+
	e+pUUVFKSkCAkxMc5at3Py8pSU8PDLS3P3Bg9+6PPkpPx5K2+CpAhS95/3pe6zQ8X+D1/9Wr
	V69evUoQ0BKBDLzi48DzCA5kgJQpQYB0FXl8OFGKz+fz29oIAjKdxz7i7XBgA+8H7xd/zmjH
	DD4ufJw4YaG5ubm5ufn5zae9vb29vb0E4e3t7e3tPdYwV1RUUJCVJYiDB/fs+eSTsLCiorS0
	wEBV1ckeT68KIyNg/8bGYvv36NF9+xIS1q4F+xc7ArHdCe+avEeorCIIbJfPmzdzprNzff0n
	n7z77oYNZ8/eu+fhceLEsmUtLeXlCQmU/TtVaGmprExKkpf/669ffvn22ytXcIIVvDr2Ec83
	X3755ZdffkkQg4ODg4ODYxNacKKIsrKysrLy0wfmsB3x+eefffbZZwSRkZGRkZEx1u7B9i/0
	CCaI+fPnzZs3b+w8je8f69evXLlwYULCnj1ffPH++2pqk/09UDxMY2NJSVycvPxvv/34465d
	V69CAP/FzV84oRCUgMjxPHpcg/IFmVCFx+l4+8W/FyhQKSi4ffvq1b/+WryYIIaGqqsp+/dl
	QRBg/6anR0Xdvr1mDbbzJgqk4O8PFwBhvwhOrMOPXO7Df499Hd43ejv89+j9TrS/iT4f709U
	FNaL450ffhxt/6alkfZve/uba/9i+vp4vIwMNtvH5/r148cXL7527d9/f/3Vy8vD4/z53367
	dSs62t//ypWPP66tzc9/nvbv4CAkWEPigq8vTiyGV59kfSYmJiJCELt2ffYZtn+Dg8fav/X1
	hYVRUQYGx479/PM334D9+zgJXKMfoZUiQbz33ttvr1nD44Ed9zzt37a2/Hw2OykpJMTDw9kZ
	7N4//wT/Ymaml9fFi3/+uWsXFNBYWb2q9m9FRXZ2aKi9/R9/HDq0e3d6OiReTv56f6LH0fMm
	m81ms9lPvh/oKUzu50kTESbrUU1NRUVRcWTk4MFvvtmx49w5Hq+8PCHhRWjCAq/NBN3b29CQ
	lSUn5+sbGBgRsWPHqVPnznl4uLqmpWVl5eXZ2oIUAtlsWktLS0tLi5T+c3aGnjTOzi4uLi6k
	pCWWLnpS4IYKEqfbt0MP2NmzyV404eHh4eHhCEHFAdkrpLi4tLSiQl4+Li4pKS1t48acnLy8
	oqIFC0BaODy8qCg1NSDgxAkdHQuLOXOioykposlhxgwnJxsbWdmPP/766x9/nD69sbGpqaVF
	UNDFxcVl+nRScgomsMk+2vHBEudY6hA/YrAEA5ZQKC4uLi4uJntF+PuHhERHq6nBAuPECQsL
	E5PQ0O+/hxtnYODL0rJ/04FggoBAUNDt25cuLV5869a9e8HBZmYVFVVVdXUILVy4cOHChQi9
	9dZbby1bNrFE80Tg98+bN2/evHmk9CVUUiH0889Hjhw5QvZIWrZs+fLly8nxNhqodEJo6dKl
	S5cuRejYsWPHjh1DqKysvLy6WlMzOjo+PjV1wYLZs2fOdHZOSIB3UZLjLxoajUYTFcUuM09P
	NhsqeeB7PHLk3LkrV27dUlPz84MeblgydNeuXbt27SKl5zGwn4f3j+t7cM+lxz2uB//G75to
	f6MlUP9r/w9Kuf30008//fQTQvHx8fHx8QhBxjNC27Zt3LhiRWUlONh37TIwsLVdsMDbG97/
	5kpftbW1t3d0mJqC5NBHH12+7OHh4+PkxOM1NDQ1qalBAh6LZWo6bZq+/oIFy5YtWjRr1vTp
	NTV5eZGRX32lrGxoOH36g80IngyQ1jEwyM8vKiork5YGCWiyJww4Osa+D0tTrlq1atWqVQgF
	BQUHBwcjBBL6BgYP9kQiiEOH8PvAkF++PDAwNDQmxsBgcHBoaGSEXAeM1zoES/Sam4PkkaCg
	oKCQEJbC4nAaG5uaWlu1tWHroKCnvR4jI319FRUMxunTJ09eumRvD5JMv/ySmJiSkpmpq9vR
	0dnZ1UWjgUPHxmbWLFdXR0c7u3nzWlpaW7/4giAIoqcnNJRGo9HISpqpB0iGCQv7+Ny5ExCw
	cWNAQEhITIypKazPyPlo3759+/btQ2jRIrgvCgg82/0Qg+cNvP7HEpHm5ubmZmYIHT36669H
	jyJ0/fqNGzdukJLPEIBGSEAA3j8yAsJ5N27AdlhCcvTnkOcN89no5/F+IBELIXBKk69jCXRQ
	OkLoiy+++OLLL0mp1ucNBKDJnokQCELos88+++yzz0Cyrr4eocDAsLCYGDs7S0tzcyOjDz+E
	xIXvvqPRxMR0dCiJ4NH09PB4mZlycn5+gYGRkTt2nD594cLNm66uqamZmbm5pP070X3vZdPZ
	2dXV3Y1QZ2dJSXc3lkCVl4cedBs35uTk55eULFhQWVlVVVcXHl5cnJYWGHjihLa2ufns2ZT9
	+7KB8UOj+ft7eZ054+Bw756/f3i4m1tJSXl5VdVE70MoKysrKzMTofr6+vq6OpCQfzC9Ayop
	J+6ZOh5YyhD7U/78E+yI6Ojo6OhohD79FOYZbGfg+Q8qgBE6evS3344eJXuq3717966PD0L4
	/nHnzv37oaFmZkpKSkry8l9/ffDgN9988snRo/v2/fjjsWNkVzmKlwtBEERfn4CAj8+NG+fO
	OTj4+gYGhoe7u4Pf7MV9Lii5IQQJz2SLBNxKAo973MIBKpMQysnJycnJIVuCPep8CAKhsrKK
	ipoaTc3o6Li41NQFC2bOdHNzcqLs35fFaPuXxWKzGYyREVinHTny77+XL3t7q6mBXUO+DwpB
	EPrggw8++OADsvXL6J7oz/M4H7UefNL340dI0EPo/Pnz58+fH3vc2P59550NG5Yvr6xcu3bF
	igULdu0yNLS1XbiQsn/BT6+nt3//oUN//71sWXBwRERc3ObN0HtcQ0NQELQUTUyMjPT0FixY
	tmzhQrB/8/PB/jUweDb7t6iovNzUtLy8oqK6WkvraaVscW9yaNliYODgYGtrbv4o+zcg4OrV
	5cuDgsLCYmMNDMBuffLPw1LR0DtVVralpbW1vd3UFF59Nvu3uprBOH36xImzZ+3sYmISEtLS
	/vwzISElJTNTW3twcHBwaEhEBJQiVFVBoXXlygUL+Pz29p07IXkV7F8ycXLqge3f4ODAwPDw
	jRvv3vX3DwszNcW9aKc6eN7CcYenBRLrycdXBbxeCQgICYmKmj3b3NzExMAgKgquy8WLlL0z
	iubmiorERDm527evXPn77xMnFi6cO3fGjL4+XFqOpYegBxtB/Pbbb7/99htBZGdnZ2dnk1Kl
	40mrvSjw5+LjgIAHQUAPOjIDC3/h+vq6upqaBHH48IEDX3yRn5+fn5R0//6CBd3ddXVpaVSm
	1YuGIAiiu5tODwz09v733xkz7OysrExNL18GR3Zf3/Tp06e7uJCZxC97PL0ocMY0GMTjZ66q
	qiorKyri8RkbW12dlxcRoaEx2d/bm0JFRXZ2SMj06SDtl58vLi4uLipKEBB4IAhPT09PT88X
	Ny5x5RE4ckEqnM0mK5DAATPx58fGQqUlrjjH89+CBXPmTJ/e1JSYGBp68+bHHxNEb29pKTXv
	vWwIAjKi09Kiory916wByZKyMiyNhecHnBmPv8cHH7W1H34c7/XRzz/r46P2Cz3jxt9OXl5e
	Xl5+bMXv3r1fffX++2VlWVkxMXfuUBnPD44PgmCxfvvtp5927frgAyMjAwMdnaYmLEULiXAE
	Ab34IMMYKnMdHa2tu7tv3jx//o8/PvwQJECfPHWqo6O6OjmZwQgKun377Nlt20DCmc/HmaBX
	rly5cvnyxPMZrnxcvXr16tWrCUJcXExMVBRnQmdk1NYWFERGGhk1N5eVJSQYGf3884EDX36Z
	kSEtLSUlKUlWxNfV1dXV1U38eVlZWVlZWeS4U1JSUJCTa2u7ePHkycOH9+3r7q6vT0sTF3/a
	7wUy81eu3LJl/fq33srLAwWPwUH8O8UtK7CEEq7EPHRo//7PP8/KqqrKyQkPt7ef7PE1EfX1
	hYXR0U5OBw/u2fPxx5WVuMIQ2wH4/jSeNOiLpr4eJL+/+OKLL774ghz/OC0FzzPQE/j5ZVSP
	zoDGiiD4OPBxvWywHfTxxx999NFHZOUdloKD8ZeZyedXVSUnP78KideFpqby8sREOTmQqD9x
	YtEibP+CxBls9eo+4vWEgQFIlR85cvDgl1/m5+fnJyf7+S1Y0NVF2b8vk4aGiorkZDm5zz77
	4IMtW/79F5Q1xko+j/coJgbzztatW7Zs2UIQFy5cuHDhAkGcPn369OnTBLFwIShmjK7AfV6P
	ioqKioqKpMIbVk4YDfR0Jys2R7dCAkdxX9+WLevWvfVWYiJIX86bRxAE0d5OVWi+bKqqcnLC
	wqZPBwnapCToQfr44/JZH3HF0eeff/7555+TSjIYbPfilgm//HLkyJEjYxUBRz9CoJEgFi2a
	N8/VtakpKSkszNPz448Joru7pISa91428PtmMDIyYmJu316z5ttvv/zyvffKyhQV5eVlZcnv
	DdsbWEnlVePIERifo+c9fJ7gZyory8wk7d+uLmo8wtVjsY4e/fHHr79+/31osdLQMJ7fFD/v
	4uLgYGXV3Q3KWE9v/2Lu379589Sp1asdHGxszM35/NGf+6SP2P794INt29auvXePxystjY9X
	VQX7V1UVxsO9e6NbyTztIyjVjIxAZe6FCz09TU2Zmc9u/27evHbt0qV5eeC3xylm41e2//TT
	vn2ffZaVVVWVmxsWNvXt39bWysqkJE3NH3749tsdOzIynrbye6o94nkItzBatmzZsmXLyFZL
	o1sbTfbxPusjbrUH65mLF5ubq6szMh5VsvBsvLITNkH09ZWW0un+/vfuhYTY2p47d/Wqt/ey
	ZYGBISExMWy2oCBkYEFvSYTef//9999/HyF9fX19ff3xK9FeFuD4ITMGwQGH0NKlkBl//fqN
	G9evI/T333///c8/CBUUFBWVlSH077+XLnl66uvDrWbdum3bNm1auTI5GfZKZQS+KPLykpLC
	w52dIyJiYpKS/vkHMp4NDXV1dXX19BA6ePC77w4eRAh6r43NyHtVwZWe+HcDBjRC4CBHCAwa
	hKqqamrq6hC6efP2bX9/CwtlZUVFOblPPoGegt98Q6MJCmpoUJUbzxvoJSIqev9+QEBExDvv
	hIVFRSUk6Ot3dEDG37x5c+fOn48QSNe+uHEJvS4R+vjjjz/++GOEoFcgQkFBQUFBQQgdPnz4
	8KFDUNn7118IgUTb2P2YmkKFnqurq+uMGWQFJsx/MjKgkLBwoY2NjY2p6dWr8K6nyTWkeBoe
	zIgeGPDyYrGYTCaTRoPK3z//PH36wgVPTy4XZ8bj+QOkffA+Hv/zwKAaW7n7rOMY7+fB83pw
	f7gCBWc+g2QmQuvWrVy5cGFT09q1K1cuXPjNNwYG1taurl5eUBn5NDUrrxdVVXl5ERGmpvB7
	XbWqqqqmhseTlv7qq6+++vJLhLZt27btf/8jMzyhJyhCQUGBgQEBLFZJSXl5ZeWqVXBfiYiA
	vebmPu7nCwgICNDpXG5zc0tLW9vixRUV1dV1dWw2ViIwMTExwfnE/wX0IERoxYoVK1asQAh6
	qyIUHBweHhenpGRhYWJiYGBpiSuI7t8PCoqIUFIaHga1ixUrVq5cuRIhSCCY+PMgQE7eZ2Nj
	Y2KioiQlW1paW/n8efNgfJ49C1s/eW5sVlZOTmGhomJ8fFJSRoaWlpqampq6OoPx88+HDx8+
	jJCWFlSs+Pr6+vr6IvT9999///33kIkaEyMtbWZmbGxgICj4EobQM9Hc3NLS2mpkVFxcWlpZ
	qayMKwzx/eatt9566623yMqvlw0eD19//fXXX39NZij/+++//545A9vQaKRiB1YqGj1fPWr+
	ws/D3wICNBpCZWWlpWVl5PeK37d169atW7citHPnzp07d45fEf+iwXbQ8uXwO7t3D44TK4oU
	F5eVVVZqa9fX83iNjXZ28C6q0g56Q9Hpfn737gUH29qeP3/16q1by5YFBISGxsSw2VDRMNlH
	+ezgis78/MLC0lKEzpy5eNHTU18fxvG6de+8s3HjihWU/fuiaWsrL09IoNMLC0tKysqWLwdl
	snnzoLKIxXrc/XR2dnV1dSF04cLFixcvInTzpqenpyf5PYNE/Is7D0jIQggCwOT8i+0WrACi
	p6enp6dH3gfxcfn7g9JNV1d3d08Pmw2/NxsbTU11dWXlo0ehZcT778OnRUZO9vf2uoPt38DA
	kJDo6HfeiYmJj09Ntbbu7gbFl5cFHkeXLl26dOkSQqampqampght2LBhw4YNpH2BFQhXrwZl
	mJCQ0NCQEIQCAwMDH1XfhhU78vMLCx+0f62tra1NTCj792VDo9FoEhJg//b0kPZvb29fX3//
	n3+ePHnu3I0bXC5eZ41ep716wPGLiMB6GSp9m5rWr1+5ctGib74xMLCxcXcH+5cMqL25VFXl
	5kZEmJoWFhYXV1SsXl1aWl5eXS0ri+9vo8HPp6ZmZOTmsljwvlWr+vqezv4dGGhuzskRFz93
	7vJlLy9HR1CSenYNSlCIQig8PDo6KUlf38nJ3j421t5eWBjiLAEBISHR0fr6YK8++3WESmka
	raqqpqa+Xl8foeHhkRExMXw0T7q/zMycnIICRUVQvNLS6u3t7e3rGz9Rq74eKvoDA8PCYmOl
	pUGKf+rbv7W1dXU8nq1tYWFJSUWFtnZ7e0dHZ+fz/5zRigHjje9nBSuoQiI+Qp988sknn3yC
	kIaGhoaGBvn5paWlpaWlCP31119/HTuGkIeHh8fNm2R84nkzOn74vM8ffkcEUVfH4zU2uru3
	tDQ01Ne7usKrN28+r895ZQPAFRVFReXlEJBLTt67NzQ0IiIhgcNhMEBS7/3333vv3XcR+uqr
	r7/euZOUZJuq4IGsoqKqqqoKA33HDoQ4HA5HSgqhb7755ptvvkGopKSsrKoKHI6RkbNnGxsb
	GenprVoFC40TJ9506Y3nDUH09lZWiopevnzx4o0bGzb4+Pj7h4UZGiJEo9HpCEFPI4QcHUFC
	fKLABA4oPKsE78sGS5hLSkpKSkiAxFZ5OULQ24aU2MrKyszMzBQU9PHx8wsLW71aVVVZWUEh
	NBQyBP39IYBEjc/nBUgk29rGxCQkpKbOnJmZmZ1dUEAGMLCUKf77RYMlxKGyiLwxBwcHB4eE
	IHTmzJkzp0+DxNrevQhBb0Ly/fjvOXPmzJkzByGoXEaopqa2tqEBFqCJiUJCTk52dhYW+vrw
	rri4yf4e3jRoNBqNxRoaIoiuruLiiAgjI319HZ2mJlFREREhIS4XO6BXroRAGFR8kgYxXkDh
	hdPoBdV4hvPoAPB4C9DR8/DoAPJ4gWUMlnrG4w8qJhHS19fR0dRsajIwMDDQ1Y2IoAK/DzM8
	PDg4NKSnBwF/Kyu4z9Fo5ubm5hYWZKATB8JwwDMwMDAwIIDB6Ovr7x8Y0NAYGhoeHhl58hDd
	wMDg4OAgmw0GtZBQR0dnZ2enoKCdnb29oyNC0Fvw8fcHPYMRcnR0dHR0hHksKEhcvLCwpKSy
	8rvvmEwmk8FAKD09Kys/X1zc3h7G+axZs2bNmvX4iQrY8YwlqnHiTEJCcnJm5uDgkiXz57u5
	4eYMtbVPel0gINrRAYHxwUF3d3d3KysWa/p0kKbDgTj8Ozh58uTJEycg8aa0tLnZ29vHJyjo
	v0Q+pwZFRaWllZW1tSD93dYGz0pLGxgYGBgYkONtssGS4DgxAifM3Lt3756PD0gICgqSgYnx
	JMTHo7GxsbGxEaHdu3fv3rULEloGBxFatGjRosWL4XO/+mryAr+jMTAwMNDXh0cDA4QqKioq
	KioQyssrKCgtbW+H77WhYbKPc6pQUVFcXFbm7BwVFReXkrJ3b0hIRER8PIfzugR+xwPmMYTu
	3w8MBPvX0FBXl7J/XzSCgiIiwsKSkoWFJSXl5QsWQGKGouLTBjjw+0CJ4eWfT2tra2trK0J/
	/PHHH3/8Qd6n8XwLFXzkfHTgwIED+/cjxOe3tbW1IRQXB+tDLP16/bq3t5+fgQGHIykpIbFt
	W1tbVVVKSn4+h6OqamVFJSa8KCorq6pqa21tY2MTEtLSZs5MS8vMzMubvOPBifHHjx8/fvw4
	2frB2NjY2MSEHPd4Hbpu3bp169cjlJSUlJScjBBUpI/db01NbS2PhxAUIAgJOTra2VlY4F6c
	sbGTd8ZvJtjuw/YvVCw2NYGdyOX29PT29veT3ze2T1+VgDBpJ8PfYNcjBEqUTU0GBkZG2P6l
	Ar8kw8PDw0NDenpMJoPBYFhZgT068fvgejMYkEivoQF6AU9u/3Z3d3X19HA4sE7S14eEq+cX
	uISArJpaaWlZWXX14cMsFovFZOJ1mZLS8xrfHR0gPQ3278DA87N/W1v5fPyNjJ+4hm32oqLi
	4vLy5mZoqTf17V9IOOjqKioqKSkv7+uDcfSgh/XJwH4B3BLIwODhQjAaDfx2OA6AC39wq8j2
	9vb29vanPx8rKysrS0uyJQduzfqo7aysIE727bdQOFRailBcXFzcs3iHQaGDbOmACzWxn5sg
	CGJkBKG6utraujqE8vMLCgoKEMrLy8vLyyNbmjwpcL+g0Xi8hobmZhmZxsbm5tbW55+A8MoF
	gAliZKSqik6/e/f6dR8fF5f4+OTkjAwrq54eyNB0dQWHFu69MNUDv+OBe2VhB3pISEhISAhC
	N2/evHnzJu6VJCNTUFBcXFa2evWcOe3txcUeHvDuB7tRUDwLLS319XV1ysp5eQUFJSX29lij
	fdWqVatWr4ZKjQULxgZ08Y0QB8D8/Pz8/Pyg91F9Pdkb1djY2NjYmHzE43WyK9RHgx2FCxYs
	WLBwIfk8zozGCQrJycnJyckIgWNKQcHc3MTE0HDnTk1NTU1V1fx8eFdp6WSfz6sOSL9LSOBe
	aWAYysv39PT29vUh5O7u7j5zJkJOTpCY8LLAjhRnZ2dnZ2eE/ve///1v2zaEDh48ePDgQYQu
	X7506fJl6LllZ0f2AhwdKLG0tLS0sgKHvYEBGZCD3iL29o2Nzc1tbY6OsDUVAJ4shocHBgYG
	aLTRAVU8H7q4uLi4uCD07rvvvvvuu5N9tI8P7s1669atW7dvk8/j8xweHhwcGHgdNB6eLyCN
	mJgIlTAVFRBcNzLCAU1c0YgdsAkJCQnx8QiBZDxC0tIcjoREVRXsp7n5ST8fel26ulZVVVfX
	1RkaDg4ODg4Pw3xiaUk6dh8XfD/GvXxjYmJiYmJYrLt3/fxCQ9XVcc9WOp3BYDLJ7XCg+3HB
	4w1XjmDDAwLY1tYNDY2NLS24dvnJHX4ODra2Zmbq6n5+wcFRUWx2eTkE2EDqkqyQTUtLS0tL
	Q4jP5/M7OhCysjIzMzDgcLZuXb/+rbcMDECBZurev6HyR1wcEglIg0lZWVlZSQkS2CQlJ/so
	SXAPTJxIiHtX3r59+/adO6AQZGyM0I4dO3bs2EFWEI3HwMDAQH8/QlevXr169So5fxkZGRlN
	m0Z+Du5JOFWQlJSU5HCgR7OiIvk8VD5VV3/88ddf//RTTs5kH+dkA5W/oqIhIQEB4eFbtiQk
	gP3b3d3T8zIr3iYbqHCQkQGlidWrZ8+m7N8XCY/X2NjcLCwMiQYE0dDQ2NjcTN63sAIQlwv3
	S6yw0NnZ1dXZCXYvjwf3ledRIfS8gNY1ZCAYJARJxTi8XsD2yP79+/fv30/2EsYOT3AUYyWQ
	FSvU1FRVFRWTkwliZKSm5p9/aDQBAWVlKjHheQE94RmMgIDAwPBwZ+ewsOjoxERZ2akyD6al
	paWlpiJ09uzZs2fPQiX5Dz+QDnWMu7u7u7s72YM6ICAgICBg7P6gIhChujoer6nJygp6UpuY
	wKtUAHiyGBkZGBgaAivnwedx5RlOIM7Nzc3NzX1xlXLPC2y/JyUlJSUlQUDzweMliJERCGgP
	DAwOUvbvaKDlTGIitEaoqAA71sgIKxGNB66klZGRkpKUBPtXSOhp7F8er6HBzQ0CtUZGXV3P
	Vwmhu7u7u6eHySTtX1Aamuj8nhSswNbV1dXV02NtDX6/p7d/HR1tbc3N1dUDA0EhBxKh/+sd
	8Hs2MzM21tfncN5+e8OGZcsMDE6fvnDh5s2pa/9Cxa+YGPiBnzxgiL2wOjo6Orq6ZELc3Llz
	586dS/o1RitodXWBsguPx+PxeAglJiYmJiaCHXv7NkJhYWFhYWFPvv6zsrKysrYmA64TgSuD
	ra2tra2snjwAjM8L+81x/M3R0dHRyYm0T0cnzOM4CI7vYKWYv//++++//yYD4o+bIIHn4ays
	nJyioqKia9c8Pe/ff/5+7lcuADw83NnZ3S0lBRn+s2ZBYI58HVfQ4gkJL9BHM7YygxRPe1RF
	0HiVQk/K4+6HPD7YTloaDCz8PGSyQAVgVZWOTlVVRUVFBZ4gQ0Im+Wt6bWhqam5ua7OzAwNY
	Q0NEBByzWOIRO65GgzM5f/gBJKRu3PDw8PAgpYKw4SwtLS0tJQWVP+bmpGQQlioUEoKFwVSl
	qwsyXAoLwZGMF7gNDU1NLS0goRETY21taWlubmT08ccE0d9fXr5nD43GZlOS0E8PVHpISoaE
	REbGx3O5eXkgkYcDB4sXQ2CVy32yyqHnBZbu2LBhw4aNGxGKjY2NjYtD6O7du3fv3iUrzCws
	LCwsLBBSVYV5G4MTJHAGGPTWhky+igoBgerq2tr6ekPD9vaqquRkCQkJCVVVa+tnyTWjeD48
	fFd7VTKex54FedwQ2J7sI3o14HIVFOTk6uqg91BYWHJyWlp2to7OpUuXLl28yGIFBQUHBwUh
	NDDQ3z8wgFB1dXV1dTUEgFksrHCippaUlJaWlTVjBnwPNTWw7hk/l3p4uKenpYVOv3vX2/vq
	VQEBqBgUEeFwOBwOByoxzM2fXHkDr7fc3Nzc3NwQsre3t7e3R+j+/fv3798nt5s5c+ZMd3dQ
	ypgz5+kTuPT1QXoSV0jn5ubnl5T095eWlpdXVcnLQ28oCQk2W1bWxGT8+Y4gCKKxkc3OyUlI
	SEy0tvbyunMnMBAcAt3dDEZ5eV5eURGZmIE/D6+XpaU5HDExhKZPd3CwsoqK0tHR0lJXT02d
	nFH1+LS2trW1t9fXg8QXvj4iIiwWk8liTb3EOgxuHfLBBx988P77oKDx5ZegmHHmDEJ2dnZ2
	traQWOXiMv5+sOGNJaXx+MX7xZ8z1cDfC143YAQFITUEeqQJC1+54uFRUzPZRzt5DA/39vb1
	iYnl5OTnFxdbWsLjZB/Vy6elBRx4paUVFdXVOjogGU7Zvy+K9nY+v6Nj7ty+vr6+/v4ZM0RE
	REXFxBDauHHjxg0byMRgFRUVFWVl+B0LCpIVvjix6OzZf//991+EYmJiY2NjSUfvZIMrN48e
	PXr06FFyHtq+ffv27dtJx6CbGwTsoNcrQrt27dq1axcZSI6JiY9PSxMUhPvltm2Ghnp62trY
	YT3175+vCl1d7e0dHVxuaGhkZEKCnl5ubkFBScnUubNjJQZPT09PLy9woM+bRzrSsX2BK6kW
	L168ePFihKKioqKiohDq6enpeZR3JDs7N7ewcGAAF4C0t1dXg/2rokLZvy8f0rYFCxHbiYOD
	UPnp4+Pj4+NDPr4qTGS3Uzbxo5GRkZOTla2rs7OztjYzCwtLSgL7F6STWazx7ncDA4ODAwMI
	QWtBNbWEhJSUJ7F/h4bA/vXxuXXr2jUBAVDoEBF5Uf6XtLTMTBCmhr2/qM+Beb2/v6SkrKyy
	Ul6+v7+hAexfObmJ7N+WFjY7Jyc+Pi7O2trL6+7dgAAjI5CynrhXtba2lpaaGkLOzmD/amtr
	aqqpTf37d2trayufX18PidCk/fu475eRkZHhcsnWXDgeMZHfBAdE8SOu1MXKobdv37p16xYp
	0ZyXl59fUPD4cbDHVVJ7cLsnmZ+UlJSUlJQQeu+999577z2ENm3atGnTprF+6fE+DytX4krh
	0QmEWHGrqamp6UnSU4eGQDMWvtfnv1J+5QLAFRVlZdXVpqZQiamj09YGlQoYX9979+7dIyP/
	MHgeHGj/PSzwq3hQjg3YPlzphHt0YHBFyGjGG+Sj9zP6vfjvlhaomCErkEBKuLOzq6unh8uF
	igfKAH5eEARBdHfT6XfuXLt2/jxeePf3gwSAkBCu1BmPoqKioqIihCIiIiIiIsZq0eNAMGRU
	kQtGzKvSQ7i2tq6uthahgoLCwoKCh68fQcBCIS+PzQaJppUrQSoH19RRPZKeFlgYWVpCb0cT
	k85OkEyxsLCwMDcHR/HjSJK/aHBg4d133313+3aE0tPT09PTEYqJiY6OiSEzxLBiA06MwJVO
	uGcndsCAg19AAHqEmJrC9ljcmjKAXz74rvjgX68fr+t5PW9oNFFRbe3u7urq3Nzw8EOHNm9e
	u/att+h0LldaWkpqxYrc3MLCkhJZ2fLysrKaGrIiE/++r13z8rp/X1m5pqaujsf79luQbiKI
	pqbS0ri4qCguV0vLwWFsD1CC6O3l8eTkmppaWtrali2D3ilCQpqampra2tDTT1f36c8LK2Cs
	WLF8+fLl0PIgKgqhkRHIkF+5cuXKVauevPJ3NAoK4BDEPQgjIyMiwsIkJEACaPp0FktQkMU6
	eRK2Hn++Cwi4devu3SVLgoJCQ2NiDh++evXmzXv3uNy2tvb2ByWJMjMzMjIyEOLzVVWVlRHS
	0lJXV1ZuaXF1dXa2sYmOXrRo3rwZM27e5HJVVBQUpr4Er7y8vDyXOzQEFehkxRVeP/f19fX1
	9oLBJio62UdLgg3st956661ly6DndFgYQl5eXl5eXpAwdeoUSJIaGo5VNsIBiFOnTp06fRqU
	Z8rKEFq5Enrr4v1O1dYjuHK5vb29/UF7ztjY0FBHR0dn27ZNm5Ytc3C4csXD486d8vLJPt7J
	orKyqqqmxsgIpHhlZEbbv28K4BjBid5cbn9/X19/P2X/viggMau2FhIwOzshMVNEBCeqYAfa
	eGApZRMTExNjYzLBJTQ0NDQ0dOokCmIH3ZEjR44cOUI69jZv3rx582bSLlmxAubVnJycnJwc
	hE6cOHHixAncGxghX9+AgIgIZWU9PW1tdfXZs/v6+Pz8/KIiQUFJSQODF9GV780iP7+oqLTU
	waGoqLS0osLZuaOjo6Ora7KPaiy4IujGjRs3btyARC47u7FKJLjVCFbIyc7Ozs7OHrs/8PNJ
	SMA4W7oUetDiXsCU/Tt5PGwHk89OjXnt+UF6k16v83o+YPu3piY/PyLi0KFNm9auXbqUTudy
	ZWSkpFasyM8vLCwtlZXFBRv9/ZAIjSWPwU5TVq6tra9vaPj2W0j8JYjW1vLyhISoKCkpDQ07
	u7H2L0Jg/zY3t7S0ti5bxuPxeE1NL650CKSFX/z1hEQY0v5lMtlsNnt8+3dkpLU1J0dMLDj4
	zp07dxYt8vcPDo6K+uGHq1dv3vT15XKbmlpaHuyYjhNPNTXV1JSVEdLQIO1fW1uwf11db96U
	llZUlJef+vavnJysrIzM0JC4uJjY07RatLGxtrawQGjevLlz58x5dnsRty56551t27ZtQ0hH
	R1dXV5dUUsFxuvGUEbCiKFbG0tWF949HeXl5eVkZQqmpqakpKRMfH1ZexQqmWJESK/A+LVhJ
	Bid8YeVerAQ7Efi+MW2aoaG2tq7u9u1bt65a5eDg4XH7tp9fRcXTH9mo43xeO3pZQOBTWxs0
	9jkcaWkpKUnJsYHatrbW1icTUIAb2/Dw0NDwMJTSd3WR+8MDAlfYjQ6s4O1wKXxfX19fXx+5
	nYSEuLio6Pg/qLGB54f/xoFlLpfLlZIiX2Gz2WzoxYgQQpPRTef1pLGxrCwzU1k5LS0jIzd3
	zZqyssrK2lpBwfffX7AAKiv/u3cavrGIiUEGCO7pJiQkKCgkRGrW4+bms2ZBpoyyMhjSWFt/
	qkOn0+kMBjgAlJWhF0B1NZnZDRlXCAUFhYXFxiooODjY2pqbb9rU1VVbm5qaliYqqqRkaUkZ
	xI8L9JwRE7t06fJlLy9ra8gExqJSNBquUFNTU1N7HMmMFw2e/1xcXFymT0do+XIIoBw7duzY
	sWMIeXhAZfy8efPmzZtH3uDx+MeZZDiTCnpwEURyclpaTk5Z2aZNGzasXk0ZvpPHw5nPFBQI
	IaSiYmTk6lpfPzDQ1JSd/e23BgYGBlpa/v6VlZWVtbUffXTkyB9//PvvzJm1tQ0Nra10+pYt
	4GANDw8PDwtDyNc3MDAyUk0NpJp++QVWV5GRtbUFBZGRX3+tpKSvP306aQi3tfH57e0cDjiq
	tbQgsYrFmjYNFvgKCgoKD0rLPilkJTBUAOH7N77P4Z6/z1phih2DpqYmJiYmCPn7g8GQkZGV
	VVDAZldUVFTU1Ghrw9Z1dfh9ra0VFYmJmprQq3fp0h9+OHLkxInVq7Oz8/KKijQ0mEwWi81G
	yN0dKplTUlJTU1NhXTkyMjz80Ufbt69bl5Pj4uLgYG195QoEgq9e5XA4HEnJpiZQ7JjK4nWA
	sbGBgY6OoaGJiZGRrq6iIs5Ur6uDRDWszDLVAsAYHNh955133nnnHbL1AZaGxFJaWJoKgwMp
	WHoKVxZt3fr222+/PfVb4fD5fH57O+kwxygrKyrKydFosrIyMtLSUzF0/XIZHh4aGhnR1gYH
	g5SUlBSHIyExdrsHFaTw3w++/mBC9IN284Pr9u7uZ5esxPOhhISYGNi/DAadPvb4Rlu8D/Yf
	fHh/DydMs9ksFos1NARbU/bv84YgCKK/X0Bg69b169es4fHKyioqampaW1tb29t7euTlcUXH
	4sWLFy9ZQrZawIHS0RUcOKFz69YtW7ZsQSglJSUlJWXqSUPjeQgHgtXUoBIE2+n4Po0rRnCF
	c3R0dHR0NELgwOdwkpPT0nJzP/zQ3j4jIzcXVxAFBU32+b2qEERnZ1GRmNiNGzdv3rtnZQUt
	AkRFcc+8yT6+sccL81RsLFS8FxYWFhYWkpLPGDU1NTU1NVCYsbMjEwtGBxAh8EsQycnp6Tk5
	FRWbN2/cSNm/U4epNwKp85wMlJUNDGbMqK/v729szMz89ltDQ319bW1//6qqqqra2o8++vnn
	P//899+ZM6HHLbmuxQl99+75+4eHq6m1tLS08Plg/xIE2L9RUWD/uriQ9m9ra1sbnw+9f6uq
	tLQ6Orq6urv/q1nMqwGf39HR2YlQZmZ2dkEBm11VVV39KPu3paW8PCFBW/vWLV/fsLBPPz15
	8ty569dnzAA/oYYGSCOP3b+Cgpwcl4vQjh3vv79xY0mJg4ONjYXFqVPq6mpqSkpXr8L6uqmJ
	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
	0Zk+LxaAsbHOzsJCsRicEoyNBQIgChja4PFkMisraEUgkw0OdnfX1aWlmZlB4I7Px9cRi8Vi
	oVCtlskcHMLDoVtqT49YrNEoFG1tRkZIXIDQqNVg5dXV9aAQCRa/DAzIQGLYzAwqmyCsy+XC
	OLO0BGJpZjYw0NRUWpqYaG4O48XTE1Y3V9eJVvI3htgYeR2Ho9VCgLC1FWqIWlttbR0dbW0r
	KggRiYyNCdFours7OoyMQNuPgie12shILg8OZsclCxYsWLC4PYyPq1RlZcbGp06dPRsX9+WX
	IIBevx4Cumo1CI7j40NDAwN9fMRiWP/27YOEsVhsYGBgIBZzOPD7qip7ey+v6OjEREIIGRsT
	CDQahaKqSiqdrNGabmIfK4lg/VOrORyp1MOjuxsD1+3tlZUpKebmIMSjKCcnX99ly3Ddm75K
	nu7u2tq0NIkE3tfFRSgUCgWC5mZzc2fnyEhm3aVpmm5tNTRUq7u7u7slEnQ2uLkSHgHXrdWO
	jwMPNjNzcYFKS6FwbKyhobg4IWHJEhDyz5s3MDAwMDio1YJV9eAgJI6ffjo9PTu7oGBoCBJE
	YWEgUKPpP/3pt7994YWrV9etW7s2JuaVV7hcY2M3N5b/smAxlwHxMbEYKoONjbGgB3iJWk2I
	kZGbGzMvdXZWV6emmptD4pjhv+BwpVabm7u4REQA/1UqxWKttqentdXICARg4EzA8t+HDxqN
	QlFcDHGW8XFjY2jJp9FQlLGxu7tC0dhYVJSQYGenVo+PazQRERB9kUgmVgTf6FwBce6JZWUT
	BVFYMDfRCYvDgfgwj1dQYGfn6blkSVYWIb295eVSKVS683jwd5UKevg+aAU+N4NNALNgwYLF
	PUKrVasbGjic69fj41NSnJ2hB8KWLdDrqaXF3d3dfd68y5dFIkNDsXhkhBCRyMkJleBzzzri
	QQFsKDgcQoaHa2ul0qGh/v6BAZGorKysrLo6KKihoamppUUmAyVYcvKCBTExUVHV1dBzk71v
	LFiwYMGCBQsWLFiwePig1Y6N1dVxOGlpCQlpacB/+/q2bIEex8B/58+/fFkkMjDQ1x8dvZH/
	3o5ZNIvpAApUgf+amAwN9fcPDgL/raqayH/NzKTS5OTIyJiYRYuqqzkcLtfOjuW/LFiwYMGC
	BQsWLFiweIhB0zQ9NAQa3t5epuczi7kJmqbpnh49PbyvM30+LFiwYMGCBQsWLFiwYDFbQNM0
	3dfH8t8HBRP57+Agy39ZsGDBggULFixYsGDBggULFixYsGDBggULFixYsGDBggULFixYsGDB
	ggULFixYsGDBggULFixYsGDBggULFixYsGDBggULFixYsGDBggULFixYsGDBggULFixYsGDB
	ggULFixYsGDBggULFixYsGDBggULFixYsGDBggULFixYsGDBggULFixYsGDBggULFixYsGDB
	ggULFixYsGDBggULFixYsGDBggULFixYsGDBggULFixYsGDBggULFixYsGDBggULFixYsGDB
	ggULFixYsGDBggULFixYsGDBggULFixYsGDBggULFixYsGDBggULFixYsGDBggULFixYsGDB
	ggULFixYsGDBggULFixYsGDBggULFixYsGDBggULFixYsGDBggULFixYsGDBggULFixYsJiT
	+P8BkrJ/m52G8z0AAAAASUVORK5CYII=
}

}

################################################################################
# Disable all piecedisplay for blindfold play
################################################################################

lappend boardStyles Blindfold
set pieceImageData(Blindfold,25) {
  R0lGODlhLAEZAPAAAAAAAMzMzCH5BAEAAAEALAAAAAAsARkAAAJgjI+py+0Po5y02ouz3rz7
  D4biSJbmiabqyrbuC8fyTNf2jef6zvf+DwwKh8Si8YhMKpfMpvMJjUqn1Kr1is1qt9yu9wsO
  i8fksvmMTqvX7Lb7DY/L5/S6/Y7P6/f8/r4AADs=
}

set pieceImageData(Blindfold,30) {
  R0lGODlhaAEeAPAAAAAAAMzMzCH5BAEAAAEALAAAAABoAR4AAAJ5jI+py+0Po5y02ouz3rz7
  D4biSJbmiabqyrbuC8fyTNf2jef6zvf+DwwKh8Si8YhMKpfMpvMJjUqn1Kr1is1qt9yu9wsO
  i8fksvmMTqvX7Lb7DY/L5/S6/Y7P6/f8vv8PGCg4SFhoeIiYqLjI2Oj4CBkpOUlZaZlUAAA7
}

set pieceImageData(Blindfold,35) {
  R0lGODlhpAEjAPAAAAAAAMzMzCH5BAEAAAEALAAAAACkASMAAAKRjI+py+0Po5y02ouz3rz7
  D4biSJbmiabqyrbuC8fyTNf2jef6zvf+DwwKh8Si8YhMKpfMpvMJjUqn1Kr1is1qt9yu9wsO
  i8fksvmMTqvX7Lb7DY/L5/S6/Y7P6/f8vv8PGCg4SFhoeIiYqLjI2Oj4CBkpOUlZaXmJmam5
  ydnp+QkaKjpKWmp6ipqqusra6ppaAAA7
}

set pieceImageData(Blindfold,40) {
  R0lGODlh4AEoAPAAAAAAAMzMzCH5BAEAAAEALAAAAADgASgAAAKqjI+py+0Po5y02ouz3rz7
  D4biSJbmiabqyrbuC8fyTNf2jef6zvf+DwwKh8Si8YhMKpfMpvMJjUqn1Kr1is1qt9yu9wsO
  i8fksvmMTqvX7Lb7DY/L5/S6/Y7P6/f8vv8PGCg4SFhoeIiYqLjI2Oj4CBkpOUlZaXmJmam5
  ydnp+QkaKjpKWmp6ipqqusra6voKGys7S1tre4ubq7vL2+v7CxwsPExcbHzsVQAAOw==
}

set pieceImageData(Blindfold,45) {
  R0lGODlhHAItAPAAAAAAAMzMzCH5BAEAAAEALAAAAAAcAi0AAALCjI+py+0Po5y02ouz3rz7
  D4biSJbmiabqyrbuC8fyTNf2jef6zvf+DwwKh8Si8YhMKpfMpvMJjUqn1Kr1is1qt9yu9wsO
  i8fksvmMTqvX7Lb7DY/L5/S6/Y7P6/f8vv8PGCg4SFhoeIiYqLjI2Oj4CBkpOUlZaXmJmam5
  ydnp+QkaKjpKWmp6ipqqusra6voKGys7S1tre4ubq7vL2+v7CxwsPExcbHyMnKy8zNzs/Awd
  LT1NXW19jZ2tvc3d7f1tXQAAOw==
}

set pieceImageData(Blindfold,50) {
  R0lGODlhWAIyAPAAAAAAAMzMzCH5BAEAAAEALAAAAABYAjIAAALbjI+py+0Po5y02ouz3rz7
  D4biSJbmiabqyrbuC8fyTNf2jef6zvf+DwwKh8Si8YhMKpfMpvMJjUqn1Kr1is1qt9yu9wsO
  i8fksvmMTqvX7Lb7DY/L5/S6/Y7P6/f8vv8PGCg4SFhoeIiYqLjI2Oj4CBkpOUlZaXmJmam5
  ydnp+QkaKjpKWmp6ipqqusra6voKGys7S1tre4ubq7vL2+v7CxwsPExcbHyMnKy8zNzs/Awd
  LT1NXW19jZ2tvc3d7f0NHi4+Tl5ufo6err7O3u7+Dh8vP09fb3+PL1cAADs=
}

set pieceImageData(Blindfold,55) {
  R0lGODlhlAI3APAAAAAAAMzMzCH5BAEAAAEALAAAAACUAjcAAAL1jI+py+0Po5y02ouz3rz7
  D4biSJbmiabqyrbuC8fyTNf2jef6zvf+DwwKh8Si8YhMKpfMpvMJjUqn1Kr1is1qt9yu9wsO
  i8fksvmMTqvX7Lb7DY/L5/S6/Y7P6/f8vv8PGCg4SFhoeIiYqLjI2Oj4CBkpOUlZaXmJmam5
  ydnp+QkaKjpKWmp6ipqqusra6voKGys7S1tre4ubq7vL2+v7CxwsPExcbHyMnKy8zNzs/Awd
  LT1NXW19jZ2tvc3d7f0NHi4+Tl5ufo6err7O3u7+Dh8vP09fb3+Pn6+/z9/v/w8woMCBBAsa
  PIgwocKFDBs6fAhRYAEAOw==
}

set pieceImageData(Blindfold,60) {
  R0lGODlh0AI8APAAAAAAAMzMzCH5BAEAAAEALAAAAADQAjwAAAL+jI+py+0Po5y02ouz3rz7
  D4biSJbmiabqyrbuC8fyTNf2jef6zvf+DwwKh8Si8YhMKpfMpvMJjUqn1Kr1is1qt9yu9wsO
  i8fksvmMTqvX7Lb7DY/L5/S6/Y7P6/f8vv8PGCg4SFhoeIiYqLjI2Oj4CBkpOUlZaXmJmam5
  ydnp+QkaKjpKWmp6ipqqusra6voKGys7S1tre4ubq7vL2+v7CxwsPExcbHyMnKy8zNzs/Awd
  LT1NXW19jZ2tvc3d7f0NHi4+Tl5ufo6err7O3u7+Dh8vP09fb3+Pn6+/z9/v/w8woMCBBAsa
  PIgwocKFDBs6fAgxosSJFCtavIgxo8YTjRw7evwIMqTIkSRLmjyJMmWhAgA7
}

set pieceImageData(Blindfold,65) {
  R0lGODlhDANBAPAAAAAAAMzMzCH5BAEAAAEALAAAAAAMA0EAAAL+jI+py+0Po5y02ouz3rz7
  D4biSJbmiabqyrbuC8fyTNf2jef6zvf+DwwKh8Si8YhMKpfMpvMJjUqn1Kr1is1qt9yu9wsO
  i8fksvmMTqvX7Lb7DY/L5/S6/Y7P6/f8vv8PGCg4SFhoeIiYqLjI2Oj4CBkpOUlZaXmJmam5
  ydnp+QkaKjpKWmp6ipqqusra6voKGys7S1tre4ubq7vL2+v7CxwsPExcbHyMnKy8zNzs/Awd
  LT1NXW19jZ2tvc3d7f0NHi4+Tl5ufo6err7O3u7+Dh8vP09fb3+Pn6+/z9/v/w8woMCBBAsa
  PIgwocKFDBs6fAgxosSJFCtavIgxo8YujRw7evwIMqTIkSRLmjyJMqXKlSxbunwJM6bMmTRr
  2ryJM6fOnTx7+vwJNGjLAgA7
}

set pieceImageData(Blindfold,70) {
  R0lGODlhSANGAPAAAAAAAMzMzCH5BAEAAAEALAAAAABIA0YAAAL+jI+py+0Po5y02ouz3rz7
  D4biSJbmiabqyrbuC8fyTNf2jef6zvf+DwwKh8Si8YhMKpfMpvMJjUqn1Kr1is1qt9yu9wsO
  i8fksvmMTqvX7Lb7DY/L5/S6/Y7P6/f8vv8PGCg4SFhoeIiYqLjI2Oj4CBkpOUlZaXmJmam5
  ydnp+QkaKjpKWmp6ipqqusra6voKGys7S1tre4ubq7vL2+v7CxwsPExcbHyMnKy8zNzs/Awd
  LT1NXW19jZ2tvc3d7f0NHi4+Tl5ufo6err7O3u7+Dh8vP09fb3+Pn6+/z9/v/w8woMCBBAsa
  PIgwocKFDBs6fAgxosSJFCtavIgxo8ZLjRw7evwIMqTIkSRLmjyJMqXKlSxbunwJM6bMmTRr
  2ryJM6fOnTx7+vwJNKjQoUSLGj2KNKnSpUybOn0KNarUqVSrWr2KNavWSwUAADs=
}

set pieceImageData(Blindfold,75) {
  R0lGODlhhANLAPAAAAAAAMzMzCH5BAEAAAEALAAAAACEA0sAAAL+jI+py+0Po5y02ouz3rz7
  D4biSJbmiabqyrbuC8fyTNf2jef6zvf+DwwKh8Si8YhMKpfMpvMJjUqn1Kr1is1qt9yu9wsO
  i8fksvmMTqvX7Lb7DY/L5/S6/Y7P6/f8vv8PGCg4SFhoeIiYqLjI2Oj4CBkpOUlZaXmJmam5
  ydnp+QkaKjpKWmp6ipqqusra6voKGys7S1tre4ubq7vL2+v7CxwsPExcbHyMnKy8zNzs/Awd
  LT1NXW19jZ2tvc3d7f0NHi4+Tl5ufo6err7O3u7+Dh8vP09fb3+Pn6+/z9/v/w8woMCBBAsa
  PIgwocKFDBs6fAgxosSJFCtavIgxo8ZmjRw7evwIMqTIkSRLmjyJMqXKlSxbunwJM6bMmTRr
  2ryJM6fOnTx7+vwJNKjQoUSLGj2KNKnSpUybOn0KNarUqVSrWr2KNavWrVy7ev0KNqzYsWTL
  mj2LNq3atWzbun0LN67cqwUAADs=
}

set pieceImageData(Blindfold,80) {
  R0lGODlhwANQAPAAAAAAAMzMzCH5BAEAAAEALAAAAADAA1AAAAL+jI+py+0Po5y02ouz3rz7
  D4biSJbmiabqyrbuC8fyTNf2jef6zvf+DwwKh8Si8YhMKpfMpvMJjUqn1Kr1is1qt9yu9wsO
  i8fksvmMTqvX7Lb7DY/L5/S6/Y7P6/f8vv8PGCg4SFhoeIiYqLjI2Oj4CBkpOUlZaXmJmam5
  ydnp+QkaKjpKWmp6ipqqusra6voKGys7S1tre4ubq7vL2+v7CxwsPExcbHyMnKy8zNzs/Awd
  LT1NXW19jZ2tvc3d7f0NHi4+Tl5ufo6err7O3u7+Dh8vP09fb3+Pn6+/z9/v/w8woMCBBAsa
  PIgwocKFDBs6fAgxosSJFCtavIgxo8aCjRw7evwIMqTIkSRLmjyJMqXKlSxbunwJM6bMmTRr
  2ryJM6fOnTx7+vwJNKjQoUSLGj2KNKnSpUybOn0KNarUqVSrWr2KNavWrVy7ev0KNqzYsWTL
  mj2LNq3atWzbun0LN67cuXTr2r2LN6/evXz7+v0LOLDgwYQLGz6MOLHixagKAAA7
}




######################################################################

# setPieceData:
#   Given a piece font name and size, resets the images for
#   pieces of that size.
#
proc setPieceData {font size} {
  image create photo e$size -height $size -width $size
  image create photo tempPieces$font$size -data $::pieceImageData($font,$size)
  set x 0
  foreach p {wp wn wb wr wq wk bp bn bb br bq bk} {
    image create photo $p$size -width $size -height $size
    $p$size copy tempPieces$font$size -from $x 0 [expr $x + $size - 1] [expr $size - 1]
    incr x $size
  }
  image delete tempPieces$font$size
}

# setPieceFont:
#   Given a piece font name, resets all piece images in all
#   available board sizes to that font.
#
proc setPieceFont {font} {
  #set start [clock clicks -milli]
  foreach size $::boardSizes {
    setPieceData $font $size
    #Klimmek: create lite and dark squares
    #    image create photo bgl$size -width $size -height $size
    #    image create photo bgd$size -width $size -height $size
    #    bgl$size copy board_lite -from 0 0 $size $size
    #    bgd$size copy board_dark -from 0 0 $size $size
  }
  #set end [clock clicks -milli]
  #puts "Font: $font. Time: [expr $end - $start] ms."
}

# Ensure the board style is valid:
if {[lsearch -exact $boardStyles $boardStyle] == -1} {
  set boardStyle [lindex $boardStyles 0]
}

# Set up the board style:
setPieceFont $boardStyle

################################################################################
# Textures for white and black squares
################################################################################

set textureSquare { BrownMarble DarkWood F8BrownMarble F8GreenMarble F8Wood LightWood1 LightWood2 LightWood3 MapleWalnut Stone}

image create photo emptySquare -format gif -data {
  R0lGODlhUABQALMAAP8AAP8AAP8AAP8AAP8AAP8AAP8AAP8AAP8AAP8AAP8A
  AP8AAP8AAP8AAP8AAP8AACH5BAEAAAAALAAAAABQAFAAAwRdEMhJq7046827
  /2AojmRpnmiqrmzrvnAsz3Rt33iu73zv/8CgcEgsGo/IpHLJbDqf0Kh0Sq1a
  r9isdsvter/gsHhMLpvP6LR6zW673/C4fE6v2+/4vH7P7/v/gFgRADs=
}

image create photo BrownMarble-l -data {
  R0lGODlhUABQAOeCAG9vb3BwcHJycnNzc3x8fH5+fn9/f4GBgYKCgoaGhoeHh4iIiImJiYqK
  iouLi4yMjI2NjY6Ojo+Pj5CQkJGRkZKSkpOTk5SUlJWVlZaWlpeXl5iYmJmZmZqampubm5yc
  nJ2dnZ6enp+fn6CgoKGhoaKioqOjo6SkpKWlpaampqenp6ioqKmpqaqqqqurq6ysrK2tra6u
  rq+vr7CwsLGxsbKysrOzs7S0tLW1tba2tre3t7i4uLm5ubq6uru7u7y8vL29vb6+vr+/v8DA
  wMHBwcLCwsPDw8TExMXFxcbGxsfHx8jIyMnJycrKysvLy8zMzM3Nzc7Ozs/Pz9DQ0NHR0dLS
  0tPT09TU1NXV1dbW1tfX19jY2NnZ2dra2tvb29zc3N3d3d7e3t/f3+Dg4OHh4eLi4uPj4+Tk
  5OXl5ebm5ufn5+jo6Onp6erq6uvr6+zs7O3t7e7u7u/v7/Dw8PHx8fLy8vPz8/T09PX19fb2
  9vf39/j4+Pn5+fr6+vv7+/z8/P39/f7+/v//////////////////////////////////////
  ////////////////////////////////////////////////////////////////////////
  ////////////////////////////////////////////////////////////////////////
  ////////////////////////////////////////////////////////////////////////
  ////////////////////////////////////////////////////////////////////////
  ////////////////////////////////////////////////////////////////////////
  ////////////////////////////////////////////////////////////////////////
  /////////////////////////////////ywAAAAAUABQAAAI/gDFxJlTJ04dN2i+gEmDho0Z
  M2/mzKFz8A6eO3X6+PHDh08ePWve1LlDxw4dgnYKypHTJs6aNmvSfKFS5gsbN27mwLFzx82b
  kyntXKTzhsyXK1y6qLlSRg6cOGjU1Mzi5YuZMm/iwKGD5w2bkXj04OHTZ0/YO20i0pFTZ23b
  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
  ciXG1l4BH29zYFTFJQcBAQA7
}

image create photo BrownMarble-d -data {
  R0lGODlhUABQAOfOAEUeFEoZEE0fGFMaD1McFVUeGFodFUshGFYhF1wgFVwiGlspHVcoJFwm
  IlwrI18vLVwxJmMdF2YfGWsfFmciFmMkG2MpHmskHmkoH3IpH2QnI2UsIWMtK20mIGwrI2wv
  K2MxJWAxKGc5KmsxJWw0Kmw5Lm09NXImIXMrJXUuKHwnI3krJXotKXIwJXQzKnQ4LnsxJXsz
  LHo5LnM2MHU7MX02MHw6Mns+OG1ANHRBNHVEOXdIOXxANn1DOX9IPYAtKoEzLYI4LYs4LoI2
  MYM7NIU+OIk2M4k7NYo9OZA9NpE+O4NANoRCOoNJNYNIPYtBNotCPItJPZBDNZFDPZNJPZhE
  PplLPp9UP4dHQoVKQY1FQI1KQo1QRI5SSJNFQZRJQ5VNSJhFQplLRJtNSZRRRJRRSZZYRpdZ
  SZtRRZxSS5laRpxZS55VUJ5ZUp5gT55mWaFMRqFOSqFTRqJTS6NbR6RZTKlXTKlbTaNVUaRa
  UqddWKhWUqpcU6tdWLFdU7FcW6BhT6tgTqRhU6NmWaxhU6xkWa1pVaxpWq9wXLFjVbJkWrNo
  VrRpW7lnWrlrXbNwVrVwXbtwXa5xYbNmYbRrYblkYbttYbVyYrZ2aLxyY711art5Ybx5acBt
  XsN3X8FuY8ZvaMJ0ZcN1acR5ZcR6ash1a8h6Zcl7bMV9cM13cMx9cdF9b9B9cceAb8uAbcyC
  ctCDbtKEc9SFeNOJdNWKetiHeNiMdtmMe9WRftyRfOGTf+Gaf9iPgN2Tgd2ahd6bieGUguOa
  geOciuqfjOWkiemii+qojOujkO2uk/KqlPKxlvazmfuxoPy9ov//////////////////////
  ////////////////////////////////////////////////////////////////////////
  ////////////////////////////////////////////////////////////////////////
  /////////////////////////////////ywAAAAAUABQAAAI/gA9bFAQIwwfIUpQVChwwwMK
  FWHiiBFDyU8iR5/uiGHBooaXPF+6bElRhAmpQkqG1BhCBMkQFkhYpPBwQssWL1+8hElZY0MP
  MFOYbHHi4ogRJEo8IiFCYwMEFwYMxDhCZAoMDxgU0BgRYwuRGGL4OMp0qtSeOEqMggFTqE8f
  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
  
}

image create photo DarkWood-l -data {
  R0lGODlhUABQAOfdAGMrAmQ8HWw7GXA9Hms9IXI8IHc+KnZFHHxKHWxBJG5IMXBDJnRFKnZK
  I3RIKXpGKntMIH1LLHVFM3RKNHxMMnhKO3xSMYVEGoxMG4FLJoBJLotOIoFVLoxTKIxbKoRQ
  NoRSPIJYNYRbOotVNohWO45aMolcO5hOJ5xTJpBfPo1gOZBkM5ZtP5tjNJ1nOZ1tP6diK6do
  MqZwMq5yPIhVQJBdSIRgQI1kQpJlQ5ZnTZRrRpRrTJtsQplnUJ1rVJNwRplwRJxzS5twUJx4
  WJx/YaNtRK9qQKVzRaB0T6J6TKt1Rat1TKx6TKF1UKJ7VKN8Wqt9Va1/XbNzRLR0SrN7RrJ7
  TL12S795Rrl8TbF9Urh+UZ+GXqWCVKWCWqmEVKuDW6yKXLOCS7WJSruCSr+PT7SBVLKEW7KJ
  VbSLXLuEVLqFWruLVbqKW7eQV7SRXL6QVbqSXaGJY6uGY6mGaKyLY66Naa6RYq2Raq6Vc6+f
  fbKGYbOMY7KNabmNY7mOabSSZLSTa7OaY7WabLqTZLmUa7uaZbqabLWWcLWbc7WderqWcrqc
  c7ueebWhb7qgZ7yhbbagdbWhe7apf7yhdLyje76odr2ofsOEUcKFWcKLU8OPX8GQVsGTXMOb
  XsWGY8KVY8KVasGaZMKca8qbZcqdasGWc8Gdc8CdecqffdOebMKhbMqgZsmibcKidMKkfMWp
  dMOpfcmjc8ime8qodMmpfc2weNKjbNSlc9GodNCrfrWfgLqfgLufibaigbejiLeogbykgryl
  iL2pg72pib+rkMCegcKmgcGmiMSqg8SsicimgcmshMmtisOtkcmukMawhcWwjMmwhcqxisax
  kcqyks63mM64k8+4mdCvhNCvjtCwh9C1jtCzkv//////////////////////////////////
  ////////////////////////////////////////////////////////////////////////
  /////////////////////////////////ywAAAAAUABQAAAI/gCFUUpEydgyY8iQGZMWDdky
  SrQERYtGaZGsSnwALVrkapIoWYb+ePrkBs4yZNGW0RIGSZAgQIIsVTImTBKsZcmSwYI1TCAl
  SrCQVYP2KhQbOIskSfoFbFgwSpYoRSro8KawZ9CQnZL5yBWtZbBaUepDCBClZac6gmJiRFQh
  QbRouULrqpepPmbuPEMmyVKkSq4WUQImqRasSpUaIXZZqLEqV7AkBdMVDBglYVMhRVLoUNiy
  vTZ/ypobFtIfQoZaLVvUctAUKaFawX1ljBalU71AlUhiaJlMWJAgvRJsSVKgQm5UefHiqHHj
  P4Z+AhM2XSAsYLBcCZNGae5ZZsiE/iGDRUlZMmGVXr3qs8fQolaGDA1iY+XSmVCEUs51ZSyY
  GgBMiKIQJI1Asoggfxz4hyqFsHJGBhkc0NwjjwgCiSGauZKIMJZY4gpkaYHl0IjIMLKMK7Io
  dJh6e6ARiCCtFALHGmlYgYkYnYyyjDBeGWPMMUcgwIkbPhYCySSLxCfIcRWK0sQHIwjgiBsG
  QgLLJMH91FclyjBCy0awiLfMmMeUSIsijCgTHiypsQcIJK7A0cYYVGBRBRWbpNKfMMr46F8V
  nXjhCiOOGDLJI5MMskcohrzlShQLMECAI45YCEkrjTzCGiId/hRMMH0hw58xriCjTJ/GlOej
  K5W08goa/mgcwsgiaqRBZxppoAHHKohEIowso/XyiiivTNJKK6qoQsgiogxSyCsUhvWKBgSE
  8JNLrE5iqCCIUKcUMOAKM8yHCX114qAfutLKIpPQggZZixCiBhtYYKGGFmewEcoi2MlVl6uV
  PHKsKMrG55YhoghSCSSV9BEFIZJU4lIllBh4oGYCbeTKKacYsxNkcXUHi2CzVnIgLGaYccoh
  hOCqRBFZVNHHIJ+IBQstow1jyCMtUSiIIT8P1wpgBsJiCXwxBcaR0htFEswxt6X2nm2VcHxT
  YEobAlhglHzxhSKEEJKFGkpkkYbMbHDSys04a1eIe4K88jaMj8jSSkvdJSWM/qutSEIqR6dQ
  MklgkfSSKi9PLRwJeSgqs58rlFQyOESLRPKFHoqgIrYaSyyRhRI0j+KGYK3IIswx8dFySmOC
  UNLKIz/B2V13tRUUiSRcZ2cyIpdpBoyPjKTbSmA3y7I0I8YkksgpC3vxBSOMEAJFFEWUUAYT
  aMQn2IekCgN9WoaCLzFwP/l43bmQIOIKIkP/FN1glDySSKpg3RE8LT4ac4ohgbsCzKDvQYQe
  vsYyPfgBCgjMAhtQ8xOOkCpdxpDNIlqliEFl6TI/oYRC0AMJSsBkEj+hkN+EAYtE/G4uqTrF
  iWzTio4xYiCUYMT79hAFRfDBD2Qxwxfk4AU0aMQV/ofozodi+EBBIAkWiEDeIhBBntkBZYgG
  cgnsIBGIDg7jGMZYBCMCd5DuKEMWwVuEKcBYsanEkBJ7gEIdDrEHPfRBD3uQAx8OIRipQC5/
  yAsjCAeVlgxehoQapElFJAhCWPwsEVcMxkYKciLBnApysfDSoAYCuYrsgQt1IMQe/OAHOciB
  DnM4BCJ4dxv+KKNjqdqIFo8BOcgJBhIdEsgylAFIl7gHXICYiTB8BIngGeNURJSFMvJGqll1
  hyCH+MMX6qAIP7iREHyI5iESEYmppEU8HHvgRtKUlo0dwhWSEAY0fjKew7iiEIMY3O/MMh1g
  HMOd2IkGLJIxP/40MXYw/lzkHszgB0D8wQ9l4YMcmHkKLcLwR1hM5aWUcS4eiSwh4BqPMhLh
  ipcELi1BpMTTGAEMZewCIZRIRkG6WZEO+jESL/yDHPywiNOATaB12CJF/6iMd+bPFe7xERG5
  9pVjYDEhE8UpITj2ExP2wlfB+JE7l3GMX0iCGY+smFQ0U1QNAUIOd3AJS+WgiD3MQXm8i4Sf
  jqEMWJAqVY7rEyNEFZagSAMZzMCfQiLoQP8NBhi+cArygoEMnwpDGMnoEzIyCAszUsJwlFDp
  HVpKCEZwcg/MVN5gkuEjZPzPi67oU5/K85OdjMchajKGZYbDCMkOphdOaQYWj7ELRvg0JyJ9
  /iEletXEXbiTETa8gyJKQQhR3lARwE1EXpOR1FWdpUvnOhEJgQMnUh0jKMqIimzgBC6m/GKU
  xrjDMJH3I2aUSSqRI4gxzNiLYDDiEHOAjiEAkQhC3IGThFAEIopxjGRQ46wFIeEp/JWNL9oN
  hv7KH6n8CIzJXDEPeajMQPaajPoyIxhRmS0GC1Jg4NYBEJM4DSMQcQg/yLe0BfHpMQ7io7T6
  FxvAasUslmUbih6kVKkKHiXuEIfKoHYYv6COLo4BWGfANhg+EYxlBpOq9l74QIpYhCJYFjaC
  9GKXY5rlhxgBiFOgYjRfjIXxTMERWXTnIKg4JSI4Igka/44Sw3CK/lIpoQtgOMO7NKEs1yp5
  5lHeARDrWuIiAMFJ9hLZVAZZBjM+pEJT4EwZtIhFoo/lilj4aBmy8FHgEgEWLfVCo8EYRlOA
  EQnLNKPBw+iPZQJX5EpyGBB3KOgWEQFNgIr3gQbBn1eCJ4u4nApYsniEKobHDKiW1RjB410i
  klFgTQcjr5luMzB6UV+ffup/p9jlJF2RvkXc4Q+zVQQlDsFGgCpCEKYaDWmy4xVgZedUtXmF
  KlqlDIbcVDAOdIpTfjEMXwA5GL2gLCOccYxmFNgYvRhyQfIXiUUk4g99AIYqw9YHDxPiD1EO
  dEIOgjNgxUIlsphFLFghilI5BCHKaImB/k4CLmPogjK++AWQVT6QatT32WdGhiWCkgywaBEN
  hADGKWalCFMMghCiAFqUb6KSm8QFRVrGBv5m0QpSGGIuJ4GF4zQzFdHuUtPg6oXKg8EUYCTC
  GWnOsWhn/Nf5MfWFiujDH1gpGEMQgiym2AMhmDGmQA9dGbFQjbmMIYtXsCIUwhyTrDMoEHBJ
  x8bCULkw2kyJZjjlr78DxiE89ju6z4oRfegDWpLkdoQbAnNQBUuUT/IVV8ziVLa2Wyw+Uuv8
  Ce4nlpgOcU2I7ydXJxiJqEODhVGZp1ECPJQFRq+nbIaEsyo+b3d4TZ1xqij3eky1psUsan1K
  WYiCFYqGusde/lFQVyyOrKL9RSLKS4yeHIMywSi/U4BhCYSKlBLHKMYwAQGGPwRvYec9BB8a
  axDmm6vmsBANtRAXclFWyCANyKIKs1AJtFBTZTVEwLALmTYZg+EL9vYpi7dszaB+lkUTPpIM
  YFAIBjErsvAHfxBp2xQ9ZLFFygBVQTF6EwELswALtQYWs8AKnbAJmWASJzFg5NEf/cEUSUUM
  6odveMBRx5BmyfBW7QRYLJAENcVHgEAIc1EJIMFwy6JC2CBx47EMDLETKvFFtKAKnSAGMhAD
  a8BQD3QWqVJgePVsaZZmEQgup5BpSkhs5/ETfeAGsMBKlKAIJugdrqAInYcap9CC/qQxJkEx
  EXEBfbWmCmsQBhiAAUqgaDQBOWZleJBnYwX2KbxgASbgBz6VZvVFHRTjCk7wBXPxJafwB3Rw
  KhyjSYPwc+6RWSg0JiMSF9igH1d2Cx7ABh2wAWugZTsxcD6BabzHIdPhC8BQBwQgACOgDMOQ
  E9AAHkrBgHsAQsgQHafgT67ADN1hCoQACmQxCItwCtiwCFuIDF+xFzXHUMtgCrEQC7bACbfg
  ApXoFXLBXcA2GHL4E5EACZIALkNAAg+gAYzwV8FgXwvZGTziMaRyChemHShiCggHUGMkTFzQ
  CgyVEiphKswgT7SgHqwwC9Knbq9QeoEDWMDAUZnmCnMQ/gILYAGWMD9zkAACYAI/QR3D4HL1
  lRBy1kTGkBECoT+m0AU/tywfogyDUIOKuAzyRHQDSCwpiTMpWWmXwRNexwgpJwx0sAAVIADa
  0QvMMAd84IfiMo1X1GDUUA3BUFOiwgxUNk+NtAeCUAo9hyI48xXSMEuyEA3SIA1B8QwpMRpf
  4RAnwQzkYVbGkBOj9D+vQAgUIAEM4D+pYgzMMHaNCVjJEGrHIA3NYBB9VR5LtiMn4h77pwji
  RguKGQ3gcSLS8AxvFQ3PMCZe0Wtv5TG9JhDNdgyjVFpihAMKYAOuoHiSABQ/MQzQkAey92PA
  0FeKtAzcNh7SwDHIt0g38VZe/qgStPAMeyGbfQkWN5EThAlXP+UjWDRmiScJkFALJIQImTZk
  laRRJtSYSfhpnCkMKrQIcnASUJMkfwAIg5AarBmSBkF3n/EZHpkSCQFXdHcez3AegdUUwzBK
  AdcfA8kSe1WMdNaSzDAMn3Yep5MTHMGfYZIxIWGXQacM2SBoUIeLy2AYYxIN7TgmUGUM4SSh
  yhBO4rdE0tEUisQLcwU/d3Uq3tVrzLBLNCENWnQHcgBdQvU2p7E0ghYUUEV33hllNMoQEZcq
  pUIdPJZ4iZBLA6F1XOc3DUZshmcZczVizsBvYQoN6uMHdHATjjMr8UIIpmAKp2ClJxFlyECY
  4ZkS/q4paJlpVgUxGH8lDL3ACHVQCYz5bIMhYuLyTi2JDBKKqcfAb8mQEMFjB3MwF2mBp3Cg
  B8PzQhMnaFHWqc8HFpbQDG8KVQ4hFX4hohSlCAO5kzxSCXziTpkGfs8pDdOxqczAb+HJH6BE
  CdKACInwHpPwLh8yQTbqmv/HDOGJi5v6ZmQFNZVgCZDAY8Nwq79TXn9FHrxXc/9TSX+FQSNy
  DMxgX86AOyqlQTgFI5SAFM26B30ClYLmMfiTRTixF5hKDdAwDT81WBySZiwhDIfAhOdhCeJC
  WdSARX60I0/jTr2WDPxGDSLlCnVAB78jC9+2EeaIJkHgB2MiDdmQmaJq/gyHICYJ4QwEO07T
  IQ1/5SuaBkuH0Km/QGyLekVwOh2VBAtJlVScIQ05MQ0QAQh0cJlhsQiFQAge9AcmgAM2CpUf
  QncBCBk052OLirTUwCGRcB6SgAeBAZWN+ZyURQyb6hDY4RP5s0s6IR45QQ1L+wfKYDin+Qei
  sBGCYAI54HzSwB9ycQjZ8QxB0WMiihPQQBiQcBUsAUQjhqkFERXTMI1Fe0+KCqEOcaV2uwyI
  8Afg8UDyAQgyJAgj4APOJ54P8SXiKU5L+Fc2y2PMlRN+oQyAoKrMwH4atVoIUSodBDkQSwuY
  CgzLAA3JYAnccYUn8VanAB8HIgiEwANIMKPQ/iCeiykJ7CgefaWYsDCx0gAN3molmAEL0fOu
  CZEqUbGWLJlBHcQSGnQeQKlBlQBpGVWNXVIWbkcIX7AIKftWNzFzMtcQgLUdecgNxwsNNfG4
  RjMVd/CT1yEesTcM9wWOFFWftEAxTDUXDBEe/ME9z5kQrqBJJugqZrUM1CAN1LAjKAHA4jFP
  yPsMkoC81qDAMsch3tqNxnC9LMxjwdAM1IAM3DBoyZMqyBm7zSvCGwSjwLYIs5iNOyEegdkM
  InKA0hBXMQwNxPBXyBu+EuwbCwNEyJAVJ9Fgv1NfyJkdiAAnRvM7EzceGqQakKEStgk9y7II
  5oIV0QAN1Rgm8wSA/mM8xllhCTXMx5aADIuzDBRDCY8KWGYFDaIVrIB0T6zCO8LQEDa6H4fh
  GWVFblq0SAxFmBNBmDQhHiN2FcjLx1fhnTkhHtWEyNvWBYZAloVFXH/lrl6RLt3UJaQCVUto
  rchgCo+0E7ImVEmGjgsBHgqRDMAMHtFwHsoJDc3AxzlBwdYRCcVhGXaQFAaxS5chCfb1jbB2
  VmlhEAgRmNKAOkdXG+NxCrLgT4BgCKZwELGZvpj5GXBVzbW5w7KJFclgDVHBITIXDJDAh7x3
  EIXHH5T1EPyRFg4htXe6GVorzC+WWbSwLqeRGq4VmCeBDPdVmymL0DrhhUEBC95ps9tx/siS
  MAyJBWPKzCGYOKv8oUUMhQgGQS4JwR2t8BXZsRLL0AoPBx3urAzc8J1eGL5EJ5iUpROBOnM1
  tw0cYtK8utKwUAhBAVcIQR5I0rwPuTyZdYin5BXUuTeyQHGJuQiZRxat4CPNkBCAGZjHUJuE
  6YWtfBOictIcslyWFQyw8AdBgZkeB7Eh1QxIa67ZHE6ycDOJIA0zJ31rIypgYTL8W3xuMHAN
  cYANFgzaGRSbMXONCbGEEZsdMnPC0CsRQTHseDOUIAlyZV9eKpRAcTOwcAh0RxGlU3dlRQts
  8gc4RwhrjRJwhbSZGb4nsRe+waY5gc5v1SENDAkRARmBxiF+/oMQ1koqTQQM3CEelCAIrhC2
  UKkMreAQqzgyLgEKs+jX3xiomH2Acr0NzwAU0XDOwW3IMoGJlRANQEMVTXTIfNVrqBAUQjS4
  tgknfRmAZ6KIR4c0n4AGbvAHH9LRgSoM3XkSgMnCg7XDOW3I3UptRoPfMTFiiGoJUHNc2jG4
  fLeYiIsQZVK/F22b4Y0MCfMug/AHgnDC0CBPiGvS2hkeDUq3mIoMxCC+3folnvHTjSDimQkW
  4jRYp7I2RVd6iesZ1PDey5ALXsKOKYIMlfB2qBGgfDG5sR2ADPFWgbojYdKp6RzkwnDkAjEX
  0TALgQDOSUpClSChJAQJSfol2fET/n8KCyHp3LQwCIB6E68gCG2gSWFzIg7xDJZAmM+wDduA
  DNsg0dLAq4cBCRrrEAtzE+CcDOLbOvzBF5bxkEOGlWZFHikhdfuR2H2g2zAqMWcwCFwQoHJh
  LoEqUt4pCdIACRQunogBDdWwF2FyEoClynX0zYhsDQsB3d1KHoM1cyz7FYqpDNHwB7RgCYCZ
  wa+DTmggCH4wKgoKC/Ucm7WpHZ5BMRHKx9AQvgAsWtBADdOQCJl5nIdsCY27JjvRRCrBqwjc
  y+5qDNGQH+WpEh0hCIryEvqDi7GJzycdDd68ME0dzVnh6WBBC9IwDcSACJia1zKXKuXkWdTG
  gIF6xd7F8LEC7ge0OXG6AwiFYJeAwB+CNvLb8RngCcAQz8V8PA18TA1gBKn21S068ccQGyaD
  NXSMeRbfK7MEmwwWPwgVTnGB4XZfYAZBwAiqEe4HSPOinO/TQQ0pjLwEq8J9oAERwAPGUA3q
  QxM2sQzkK+7JANIiLHqwwA3cAJpZCg1OLw2yQOZRPwhoYAZAkBpQOR6WwAxhC5SjbBPYbQ2w
  5el8LA0qEAEMYAE/IivhoUEIGxUJIe4N0W5xcZlmAZhbCgfGYA0Wz9PHAgclAQaTkJI34Y5Q
  qePhW8ODMQ1tqfPqXZscEAEg4ACCgBwKA6m1SQkBAQA7
  
}

image create photo DarkWood-d -data {
  R0lGODlhUABQAMZcAF0pG2IrF2QsHGotG2YwHGsxHm49H3ExHmQuImIvKGguIGUxImcyKmsz
  I2s1KWw4JW06K206MW0+OHI1I3E2KHM5JXQ7K3o6JXo9K3M9Mnk+MW9AOnFDInVBLHpAJntB
  LXpKLHVBM3VCOXZIO3xDMntFOXxJNX1JO3hHQn1LQX9RRIA+KYJCLYJIL4hIL4JFM4JGOYNJ
  NYRLOohGNIlLNYpNO4FRNIVRPYpQNotRPYtaPZBOPJJTPZRYP5hUPphYPoRNQYpOQYVRQodT
  SIxTQoxUSI1ZRI1ZSZFPQZJUQpJWSJNZRZRbSZhWQ5laRZpcSpZfUJpeUZVgTJxhTJxiUZ9n
  WKBfS6BgRaFiTKFkUaRpVKBoWf//////////////////////////////////////////////
  ////////////////////////////////////////////////////////////////////////
  /////////////////////////yH5BAEAAH8ALAAAAABQAFAAAAf+gDg4NzpESUZMRYpMS0xG
  S0tEREVEOUs5iFI6jUZGhD06PTg6Ojg8oqSEhY1FTFBGTU5MSDU8NTlJSaOROUQyJ7dETTVJ
  NjEgHR0WDwUKDicTDxMVGBUgH9QmMS80pj1LSlNTjYyQ5pBSTublrlBVWfBPWVpPU05OT1Lr
  kEyTkMSDcLwAQeLDBw0kEBnJVWSJjGMwapDAMGPGixgwZtCoMSMHjhgxZNTQFqNFDBMtTFw0
  QcLEkBq+aEWsUSsGCRgxlhiJoUOKJBkikzTZEfJWjhs3fJmQIcnIpCQ5dCSp1KRqkh1JkCCp
  usNGjRhfv8rAUeOGRx03cOTIQVPGC27+NF7U4sEjBgsYBj9gwNCyIEISJF54tXG0l5GjZiVV
  KqQ4CBKhVa1kHWaihsiHmNfq4GvChF6CgAPTgPECA4u9plF6aAkCQ+ebJjbmdNqUCKIl+pg4
  yqWj11olSppkzZUkuIyWr1u7PkmQBUsQJmDwpYYhBo0ZMExguEDNQwsb0WNgsMC32t4OeStU
  6BBi7zJmB6Jh6DCfPvsQJk6YICTEiJQiCiUBFE057EbOVDiYAEJcqJGwURL4lHNJUooZcogM
  SZ2kEkgP5SASETcY4ZVZOZiQzIkcsAfdBw9QA4ECoUUXGmAv5JKDMVDRsFENztE0ElgxEMGI
  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
  
}
image create photo F8BrownMarble-l -data {
  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
}

image create photo F8BrownMarble-d -data {
  R0lGODlhUABQAOf/AGxHL3FNP3NNO3BQPHRSOXFTQ3ZSRHBWP3RUP3hSP3tQQ3hWPH1VPXhX
  QnxYOXpZP3VbRHhZSX5XRHpaRX1bQYFZQX9aTH1cR4VZSHxdTYJbSIBeQ4RcQ39eSYJgRYZe
  RYFgS4VeS39iRoBgUIVfUYRiR4hgR4NiTIdgTYteTYlhSIpiQodhU4VjTolhToZkSYpiSY5g
  SYpjT45hT4xjSo1kS4hmUYxkUYlnTJFjUY1mUo9mTZNkTZVkSJFnSIxpTpBnTo1nWItpU49n
  U5FlWZJoT5VpRZNpUI1rVpVqS49sUYxsW5JqVpRqUZhoUZVoW5ppTJJtTZVrUplpUpBtWJhp
  WJRsWJZsU5htTpNtXpFvWZVtWZNvVJdtVJtrVJhuVZdxUJNxW5VxVplvVp1tVptvUZhvW5ly
  TJ1wTKBuUZxuXJpwV5NyYZdwYZ9uV55xTZxxWKBvWJl0U51yU5h0WJd0XptyXp1yWaBzT6Rx
  T55zWqB0VZp2W590W6JyYJx3VqNzW5p3YZ51YaB1XJl3Z5l6V594UqJ2V6Z0V514XaF2XZ53
  aJ56XqB6WaR4WaN4Xp16ZKd2X6J4ZKd5VKV5WqR5YKF+UKh4Zql7VqN9XKd7XKJ9YaZ7Ya15
  XKt5YqZ+V6d8Yq96WKR8baKBWJ9/baV/XqJ/aJ5/c6Z9aKR/Y6h9Y6KBXqp9Xqx+WaeBX6t/
  X6aBZap/Za59ZamCYaeFXKSFZ6iDZ62BZ6+BYquEYqeEbbGCXaeGY6yCbqGJaayFY66FXqKH
  dKuFabCGWaeIaq2GZayGaqiGdaaJcLKFZauHcLGFa7aGW7WGYbiEZ7GKXLCJZ6+JbbWIaKuM
  brOKY6iMebSIbqqMdK2Naa+KdLOLabKMb7WKdreOZ7aObLSOcrSRZ7uNbK+ReLGRc62RfrOS
  briQbraQdLKQgLWQebuOdLyRZLmSdreWcbWWd7yUcryWebaYf7WZhrqXhbyXgL6acMGZdr2b
  d7ubfcGchL2ehcaahbyfjMGejMKkiv///yH5BAEKAP8ALAAAAABQAFAAAAj+AIVQ4bImDB84
  V1q4uPFDDB8+fRpp+kSJkiNHsxo58gKnDBg4Hcd4SeIkSZIyJ0cdSkLjAwcOFyo4cLDAAYUf
  XK4Q/JNJWC5j06YVyzhIj55BysQJs6iEixI6a+iIoYMDR5QvjeSMGaOn0SpKjf40YqXpEBiP
  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
  iEc5voEOdQQEADs=
}
image create photo F8GreenMarble-l -data {
  R0lGODlhUABQAKUkAL22vb26vb2+vb2+xsa+vca+xsbHxsbHzs7Hxs7Hzs7Lxs7Lzs7Pzs7P
  1tbPztbP1tbP3tbXztbX1tbX3tbb3t7X3t7b3t7X597b5+fb5+fj5+fn5+fn7+/n7+/r7+/n
  9+/r9/fr9/fz9/f39///////////////////////////////////////////////////////
  /////////////////////////////////////////////////////////yH5BAEAAD8ALAAA
  AABQAFAAAAb+QM5oOBJxOp7ORnNUHp8djmfK2VQ1GIzFurFqsJbvUtP9IjmaTAaLqUwsb4yY
  Gf3aNSBiETQFIZMfHkYbSUl1dmhYaxlaWhNZWGQcTVRYFRgZS413mExjX2t4eiIgpXxTgWeT
  HlJXX4mgbJiNi0xUHppaFmFXoaCdn2xMIaMixschhSKBhYleR2NqcJePvkx8ibtkTJ5dXmBh
  aXdkHaMgxiHoISDpyaoeYhtRSrFuEg9vd1ZJaJ3QXU2sdEhjQYKvUGsIERGRzJigEOmwwZuE
  hB6TVXYYYZDQoIEEYFWkDFRjy9CTgBosVLiUJoscObZI8UFyaoqIZmjQJBFD6RP+pgkMPMJc
  QvSTIHXJRI6poHLCGwudxF3jR6gmxJsfYMmrInAKq08ZKDRgAEHCF3hEXRErwpDPh0MpJ1Sg
  AFWLPg4WpkQhBDCK1w8b7Gq41QGi1zGO8Mk9u9OOFRELPaTy9qWNXDkW1nz1EELCnz+TALZi
  lUZzTSqBlsqVC1VKMnh3pEA2Nvpb5czi1kiZMkKO3iqGWmLY2vgIv39LP876cszYOCu7DUv2
  m5Xzza+u1454BdhZNjmrYNni6lMC0zXg0zE04gzRhw+vN5eCzPa6MT1Ixuvbdtcx122MBLUL
  bhp0gAxp3KCRQU5eoWGgHhAWMcRNk6BBCC6L7DNQMKD+yGNRShV4RMFKMHGgXgihORMKdWNs
  QF+E9Un3CwelwLOgB2z5YUcbFMBkxy5OkWiNcVRYlAVJ4zDx4h4gvJIgZBrMdc1Nr3A2BIoI
  CcZILJZlQeA2fXy1xBq7MAKVJIIwmdFBHEAWWAVTJoXEbFgeuaUmvjiSmZe4XTiTF4vogsk+
  5zCkCVM+npXOQAVKwZZN9FnESD5OsNHUeV0mxMpn4sERxl/9ZJDZBA8YZF2NFXLhwTlsqScC
  o5WR+IQVosIxwUeiIprJYPOsCtsXFlxgwR+kqbTLRh5lQB86rDjYx2zXAQuHBJclFAVE/Vjw
  QAPH2hrGPs22IhxTF5WR0Ub+5mmwJBFK/FFoEYEAa88j4hByTFZp3MNaBdR+Oys59GTBLxnP
  KKEJaxmsGmFIqzK0jkOu7AKnJHlEBlcj53niylmuiPrcEgrmA4eiRMgjDzvxGePEEuQOpt2E
  1+21oxkpfoJEvPoUdcVGcGYwwSttQkZRUtCN5wpLQsCIzHVvudZquEi4OgUXdxicgRtnJiTJ
  QKvoWJQZsA3cptL31ReIdsd4ZeWVpIRWL1EaODUizSGBXUk0Yki2gQULhLHulWPDLGGEN70L
  Mym4RPLKoW7oZtIY//6StyAcXD0BfDD6xQqOMHYeIQiTDPabEqLKAa4UYyAouRiFUflRYTCW
  QlH+mp7XfqVX8Z0BTJgdfMCLgmaOM6dzGrw8yggNFZGO7Z5Lhs4pzJg+OxWdMCrYHLJBxhvZ
  60mYPPMQivAFO6eA5pg8qHAgmCZngtzVsmUXs55MknUN/ggfxC1BOF3wkzgw3BAGJybGky6c
  rTnha05bSLMEzjEPDduqQChE4pUkkUMqv7gEI2qlQTpsziateliNvMKoefxND/nblo+gsCrQ
  +SdJY9LWU4xFC1/M7iqb4l39xsGO5oEBaAbbjY54YqEgaqJUIQoKRzqIEJ78RSDQododkrA8
  GKGIEOrJyX8qM4f+daBSFYBAQRiwACWmK0/5cBkJYbElxb3jhCOA1Aj+/BBFgqUEPF0g1hX4
  hYGxjIUj5vERBoIENmNgw2fU0mAnUOEh401IO+tIHFguw5WvSCJKu2hAGUuFG1FNoIx+DIeJ
  JkSaOKgBA8BpBeTil8BXnUsL99hC5NATBk+mMRFkXMACxrKAj9DhZR3A2lCMU7dQKIxsiSgd
  VBJJhikA6wFkZEBmTPYK0klglxLgiBJJErghfAUSXaGHSiJxhL9RKRK64FcDHnAj0twjl7cC
  BQUyMaZblUqbpfLRg/TgB/D4pQ58yoRsFoIVLmJBAhSAJgPOAoJoDPJYbiCjRy4hQYxl81aY
  OVOEfiWPdCQBb03gwFvQB5cx6ItaaMoIJqH+whQG5FKJUGHpBBrglD1JsHgLC81R1HYF6JCG
  SFr5Aj7ggEr0kQE9pbqVStQJh7G4lAHUAuRinEg4BcIsBKTjBHiUMoeUxIYfoppnBjqyTm0l
  dVQP2BYvQfkAH7FiXc0Jwdnc0o+KOgJOAJHifrZyhKZGiQEJ0OW2dvmAMDT1nbrcJQOOJIYP
  3IdZCLKGJSAxyFuFomjnc4ZANIAABDBALk59AFM6gihzwcGM9+jXRyaRld4dJwricQwTLuDL
  c0GDSDKbwwEQsAA3RHCemKDhWUARSEGt4YD0++JOqVAGkEVBJYlaA2yVuzn+YGEBge0IPrbV
  Pk7YERENUyBDQmf+r/XIlYS+YoVk/SOQVVTCDgw4gGKz+ccKbECylCEYO5aFrTswopwN8V8L
  YbufWNzlZmJCF128lE0G4JULn3BvFdmSBt92JJtb3ensQNdc7OGNHH14DRp820k2sGRx4wBh
  ZNQ3RrZO4E4ajkKN9hLhLfKED+x4L1NiekrhhGMbk3AkK7JwzTIuQL5kRFhJClGKeWglNKeE
  im7sdcX7XoaGwVXyPjAHIdhs66VH5m0vaUou19AEVpDLLWbiUCBBcPigTrkVU0j1lOEgQWmw
  CVBig6LJBBwgAU/tSJJ+sq2LQONH2pKmLDkTsXuWigFJFcdulmTIYGyAI4ld55ENIOb+IzeA
  P9MCJE21lsFb9U16jclANpP6gDIaJBClCJ9cW+IfaCJgALzV5AEGMIAD+Jq3AILmOpcYzznk
  KrUEPHSF1QrpF9OOoF9IKKQ9Yp5wWCC+uz1ALheA6z+XcQ1A2SVLZlGQiprpViM6sUr150d8
  bICfFmm1H4NyzwkowQ0L6Kx8E4sAA+gyKHJo9f7g1pJ8SrkpPDawOP4dlMV+QyWpzfcA/r1O
  l3qkMPBIgL49W0YGIEC+HrmVA+jlFT4wQgJQhVNwz9TVcUAzrRFowJoVmlYy7nbi1O4IoAez
  DF1/PLELMACSSdWRb+23FGmYqVDOjaRgmK4CHXfwWAIb2N3+anzXBiiAAah9q8AaZI5l/HVH
  jLxvi5PrIRVEZEdqOpeo2HhSftalJnW5b14bYAAF4HXelajOzypLBBZowM+d2gD5BraMl6Ey
  ihIR0VIVNo3k2JgWEhAAvPdb7g0oy6Z5PQAC8Fruu5QvPo6QEgUA2qWmBjpK29zajg3SAZ/F
  Vf9gERUNDCAAARBAr7FpHo5osgC35vzHt91wbmSA4tK81dwXkI+tUC10YHi5lMs1s5YMAAAB
  KACSQ57Oa+Ka1wQYPiijSQY5KJaTgywy86XXItbV0+JQAciOQoEJBFQeyRB/xLHseWThd/zI
  f0YBcfNJupQPgwRNuzR9saCA0XD+TdsEIGBgJhhwawIASvZUbbdyDx3hcbeHZLrEawjwM9qS
  dcyXGQWhSUGxGnKAHlHxNeqUgMNxLrR0AHcHSjTlEY6XWo53cwQgX7/Ga2ahLbyWANSCCbk0
  b5CGKMYSD8anBX6kHORWC/kGcqumLyFyVuEGgt0WfAVgEBYAAQIgAAmAROo3dnK3P/yyPwnB
  BVXACPwiIAdXe0eWAB6hWEloK6lFRsEXfruWbQkggHHzhDrna7u0fIg3FoVlOjeTIsBCX4EE
  NBwwh5nGZzsWIu9UeAOgewPgZx8nXz8TN6WyfJzmgWF3AHUIaC8WCSYDRW8ydw0wQUgQX4HF
  Z9uSTe/+pFCJtVsGcHhHdmT7c1A2hwAFUHlGVohjlm9i5iOXFRKMclKYsCCTEE0oCFWA1GoU
  R3e9+G/ZSC+Bp0sJwGmWl0tR9UkaJ3RQxSEnUQZuMAttsIKiRSp56FLYWIxAN34MZxCBkXfa
  N4W7JXfjZnMgeADkdg05pjbG11SEdVikEl+5yIvaOH5H+FnDUQHB54N+RoiLZQdjsVu3FoLT
  twHn8BpZRCYLKVHqdE8N4JA/Z3iE53sWF0jq843edmsAuEsJoWrYdXO8tT+mk2OrQCVyEVVz
  J01JBFVBoVi5OI/ahWlRJVrwAHTyuG/JAiy3YnN5l2sE5F2iUhZYM1O9NFpXcmdxmoaNf0ZG
  KClR1LJOUeARmmSGF3Zi6edzASBmBkFrxrISFJBILOWAQclW9vBl9Ohq9IV6y7QAGxACKSGI
  n0VUwOIIvESIcfcSK3FRqbVUI1IQDxAEADs=
  
}

image create photo F8GreenMarble-d -data {
  R0lGODlhUABQAMZuAClRKTldKTFVMTFdMTldMTFpKTlhKTFhMTFpMTlhMTlpMTlpOTFxMTF1
  MTlxMTl1MTlxOTl1OTl9MTl9OTl1QkJhOUJpMUJpOUJxOUJ1OUJ9OUpxMUp1OUp9OUppQkJx
  QkJ1QkJ1SkJ9QkpxQkp1Qkp1Skp9Qkp5Skp9SjmGMTmGOTmKOTmGQjmSQkKGOUKKOUqGOUKS
  OUKaOUKGSkKKQkqGQkqGSkqKQkqKSkKSQkKSSkKaQkKaSkKeSkqSQkqSSkqaQkqeQkqaSkqe
  SkqeUlKGQlKCSlKKSlqKSlKOUlqGUlqKUlKSSlKaSlKeSlqaSlqeSlKSUlKeUlKaWlqaUlqe
  WkKmQkqmQkqmSkquQkquSlKmSlKuSlquSlKmUlKuUlKqWlqmUlqmWlKySlqyUlquY2OKSmOS
  WmOeWmOmUmOmWmuuWmOyWmO+Wv//////////////////////////////////////////////
  /////////////////////////yH5BAEAAH8ALAAAAABQAFAAAAf+gBISNj5CGhMRGBgRERo3
  DgwbGhoSN4gwLjYZECYZEzUgMBoYkxqaGBkLihgQi50ZGjUskyY2mBpPNDA2EzY3vjc4N79H
  NjQ3GRk3NIkQyckTh40RLpMgyRSjjBrJJhomNckRDhoLCYoRrQ4gpJ4mN9+2IBM3QjkmMBMu
  LL/DmfAacIAwwc9HhFSoMuCzMakGjF+INCR6ACERA26dMIrgtiCaQgwOMlx7Nu9dhgckTNn4
  cW8hPBMu9E2YYELCqF4waMCCNS9cDRsRYHjD4UJCBgwMSJUi582UBhU6udmowS1DugUMkj14
  JqLWoU9Aa7n45SJqPoWaGEKYhUoDCEf+DW3MOjQJlsSqBxVeYxjMqLefE54twlAL2gQQU72+
  tcHYh8NvLGxlgxEBHgQIVUXywgcDx88I+A7GYzjKmlNHOL59y2DLLSxNwzaB5vVNBEORjmpk
  +iZhFw4bOEiFO9qtFmMYR264cMcYw1tTu/KdPkJDiI+xwoDBgFHjiBBDeScxjvUz3NxvTV3U
  okGIllRuGrKBS/5rxu9JCzSQaASvBo6ZMBTkxA1M/PDLQzf8gIMPNzghxA0SkKCZBC5wV8NP
  3BllFwTH0aMBDA5goIAEBDE2zEq/mBLMD9Y1EstUnt0QA30GfufDEA4amKANOQzToxA/PJNS
  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
  DuywnNlLurUAAydoAnQWxEuIqm40QIEAADs=
  
}

image create photo F8Wood-l -data {
  R0lGODlhUABQAMZrAM6SWtaeY96ea9aia96ma9ame9auc9aue96uc96ue962e96+e+e2e++2
  c9auhNaujN6uhN6ujNa2hNa2jN62hN62jN6+hN6+jN62lN62nN6+lN6+nOeuhOe2hOe2jOe+
  jO++jOe+lOe+nO++lO++nOe+rd7HjN7HnN7LtefHhOfHjO/HhO/PjOfHlOfHnOfPnO/HnO/P
  lO/PnPfPjPfHlPfHnPfPnP/HlPfXlPfXnOfHpefHrefPpefPre/Hpe/Hre/Ppe/PrefHte/H
  te/Pte/Xpe/XrefXte/Xte/fte/fvffHpffPpffPrf/PrffPtf/PtffXpffXrfffpfffrf/f
  pf/frffXtffftfffvf/ftf/fvf/nrffntffnvf/ntf/nvf/vvf/3vffXxvffxv/Xxv/fxvfn
  xv/nxv/vxv/n1v//////////////////////////////////////////////////////////
  /////////////////////////yH5BAEAAH8ALAAAAABQAFAAAAf+gFJFTUA0LTQvTFIwRFdA
  WllXZk1GZpJXRllbVy9QW1lYV6JaUEBAMoYyQEw6MU0hMjIwLUBGLkBBIi1Sqi1GuEAtHTww
  TENXIrhGV0FATbQxMi4wy1dMUJFIQDBmWTxXmp9SUltYUFhGWldFQFVMMBpSTNsyhFJRiYpM
  Li9AGqdSfMFw5oJWCxhXeOhodmWcjUVNEL2oB4WZKHBBgkQywiSUlytUjGDZQkXKD3VNZNgI
  YuNDFEctYshzJGPRFRQvBn6QoeJKCyLFtsWAkUxKkHlMgqDTwkRlSmsNmenQUmlLEExBzITa
  AqSTESlNmljaYsZGDBoxWqTcBuyKKin+LhbCaDZQIBAXPlWQCPJhXrNmy4A0ZHKlCo17TWxo
  0SFYY5Zlj7dUC9KECREqQKhc1FIkigpZSe+aGg1DCmPBQHTI6Gdkx9ErOj6Y0qDjShN0RoyU
  NBIEipEotDIT3sasEmVRWSpyDZVZeCgjRVAVodHMBi0mPFwwefGsiQ4sp0YbacFQVlcSIhT1
  IHIarKkgOQ6DRXglBhG8V1xkCWJkkxYpG12BhSX9WSWFDYjQQJgKLVimgRZREGEKDDr84ogp
  iwThBBCLmOaDDy7w4Mwv41BBiw1UNLEhEE4kRYgMorigRRNEbCFFKJhApwUWWPAgmRRARIEK
  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
  
}
image create photo F8Wood-d -data {
  R0lGODlhUABQAMZfAJRJMZxJMZxRMZxZMaVJKa1JKaVJMa1JMa1JOaVRKa1RKa1ZKaVRMaVZ
  MaVZOa1RMa1ZMa1ZOb1JMbVRKbVZKb1ZIbVRMbVRObVZMb1RMb1ROb1ZMb1ZOaVhOa1hMa1h
  ObVhKbVhMbVhObVpMbVpOb1hMb1hOb1pMb1pOb1xObVZQrVhQrVpSr1hQr1pSr1xQr1xSsZZ
  McZZOc5ZMcZhMcZhOcZpMcZpOc5hMc5hOc5pMc5pOcZxOc5xOc55OdZxMdZxOdZ5Od5xOd55
  Med5OcZhQsZpSs5hQs5pQs5pSsZxQsZxSsZ5Qs5xQs5xSs55Qs55StZpQtZxStZ5QtZ5St55
  Qud5Qud5StaGSt6GQt6OSueGQueGSu+GSu+OSv//////////////////////////////////
  ////////////////////////////////////////////////////////////////////////
  /////////////////////////yH5BAEAAH8ALAAAAABQAFAAAAf+gAkYGBslJxA3NycbPDY2
  JzGLJycchA+XDxZNUE03TVRTOzY9PE8oIok8PUBKiTc1EJcQsxghJrOzgg8hvCEnKCEYv5MK
  g5EbFiUlOIk7OTqRJxg3OoSzD7VNU4lBQT09NTc9nTdKPTc+59Q7NYPBAw0QFu4YDQkbCxgi
  IRsg0rwbfNHaACmEskkxFO3QYWMDBg6KBsXS9+SJpx5RxCUal2iUOCk/mvQwgUKYiFi4MEQI
  MYsBBgjSakFAcSuYMAjFIEk7cWPhCRs7ItGIuWOeCQzYIDRpYm5cEiDnSIE70WNHjyA/zmGo
  IQ2CSgguQ3ggwevlzBO2RtDsZQuDgkL+i2Kk0EFNIY6DMTJMGvRSn0hz4qpGFakoqrhOIXbU
  +xBhVgNeEPaJMGvChIiTa9FCFkbhRAleVh0RjLGjROVog05cMMFBlZJO33ZobMX1m20pOiDE
  wMBAAS4IwRqYCCGiwUvikTyg+MfLhKAN0DzLVvTTBgYaMQieqExcRARKPaQo2XYDCDkUN0wE
  5uFp6Q1alxjMujzopFcMCUKQ3cfjn6ESXp1AQ08l3GCDgZPssAMNNGwAlz4XEMeBCea8Ng5H
  6SmhHnsbObGDNAcgdclxwJk1GQQUsOVBCp/xI5BDpG2QQyqP/BQDeidoQElAInCAChImLNWK
  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
  yxEIADs=
  
}
image create photo LightWood1-l -data {
  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
  
}
image create photo LightWood1-d -data {
  R0lGODlhUABQAMZ/AIFNJotNJIZOM45TK4VTM4tVM4xWOI1aOpNVLJNYLphWLJpZL5JXNZRb
  M5NcO5pdNJpeOZZgNJRgPJ1gNpxiO55oPaJaLqFdMqlfM6FiNqJkPKBoN6RpPaxiNqplO6lp
  PbJmPLNqPbptPpZfQJViQ5ZmSJZoR5dpSJtkQ5pmSJ1oRJxqSp5uUZ9xUKJmQaJnSKRqRKNs
  SqlmQapsRKptSaNuUKtuUKZwRqVwS6xxRaxyS654TqRxUad5Vad5WKt0Uat3WK15Uqx7WrJu
  Q7NvSrluQbJxRbJ0S7R5TbtyRLp1S7l6TrJ1UbR3WLR6UrR9WLl3ULp8U7t+WMJ0RMF2ScN4
  R8N6TMl8TMJ9UsB/Wcp+Ur2BT7aAVbWAWbyBVbyCWr6IXbyFYL6IYcyAT8GCVcKEWsaIV8SJ
  XMuBU8qFWcmKXdGEVNKGWdSIV9OJW9iLW8OGYMSKYcqMYcqOacaQY8eQacyQZMySac6YbdKM
  YtGRZNKUadWYbNqbb+SWaP///yH5BAEAAH8ALAAAAABQAFAAAAf+gEFdYF1PT11BYHFcXjlb
  YF50R15ISzM3SGdlX1w5Tl85OV5fW2deW6dfZ6RgW1xIcmdnOxqvSFw7O1xfZkZIX5BgSFtm
  XVxLS1ucOGJgQkF1X0FcT06zXmBfaqNmZ2Rer0uZcrlbHEhIXqc74DpesWB08mZbZe9xt6eP
  Zl6yZmZgdv1aYgYYGEVPDkrrAoyOMDpOuGxBZceLkRxq7JWJmGPHlmTqhuVAZ2SPLDvdAMqj
  88XONonqdnVxxYsLl4pfkKhZ0mwiGCcRd+iYtiPOjhyb7NDhEHDLDjB2zkTxYgaJEyRHkYSq
  lMPIDkyUHqmi88+nOmxHHp06aNOLkyX+EsGckdPP4aOvcL/ktIYrUw6JE2FGjbLkb1UuZjrm
  gHuGnxc1kMzooUNpwwYOEwFOPHPwFGc7ckAD5IK5lOZWcVY9iePkKJglO+R8kcOBS7xWIRlF
  UaYVRjpYvxmhHCVPjdJ9uLOxwtZqFWR9OSjHOm3mJpJDX5yImSEHSUWJdHY4jAnVTlS4R87c
  6uaFzGzE4kKfsuyQUb+CYOjFsyOXjh1d+yBGDzrK8KLCF+LppYMqBzkExlNOETNMJxc5NdIR
  HDjiyyw5mPLaF9joMxEwv7DElm1mwLWWS14soc8HHHyxhBFg6NAFIg/GkcMXMNgGxgZgfJBO
  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
  
}
image create photo LightWood2-l -data {
  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
  DvBGU8IQAgA7
  
}
image create photo LightWood2-d -data {
  R0lGODlhUABQAMZ0AEkiAWhAHW1GJXdMKX1bNYBXN4NdM4RkPY5lN4xiPJJsP41jQJNqRZRu
  SphuSJZvUJ10Rpx0S5lyUZ5+V6N6TaJ2UaV8VKZ/WKh7Ua1+WqGCVKaDXaOIWauBVayDW6+I
  XLGFXLKKXq2MZK+Ta7GHYbSMYraNaLmOZLiNarWTZLWTa7uSZbyUa7qZZryZbLeXcLyWcL2a
  cr6gdMGWZsGWa8GYZ8OabcidbsGWccSccsOdeMiec8qeeMahbsigbsWhdMWiesesd8eoe8ui
  dMukesuodcypfNCldtCmetCodtKqfNitftSxftiwfsengMSrgsqmgM2rgs6tiMewhs6whM6x
  iMy+kdKmgNOtgtKuiNiugtuvidSxhNSzita4hdW5jNmyhNm1itq4hdq5i9a1kdW5kdm2kNq7
  kuC0h+C2ieC4h+G5i+G8k+G/md7AjtTAldvAlN7BmeHAlePCm///////////////////////
  /////////////////////////ywAAAAAUABQAAAH/oAwRDqEODlAOi4xPDw2NIw5Nj8yMUBn
  ZWVSQlhSZl1dYDNESkpMRkZQUUZfX1VlUaBhrFFVT11YRDlIPEcsN4guRENDRDtYP0M6UEEs
  OTmEOjE6QDE9OLs0Ozs5RD8xMUSYZFJEn11QZ0o2REuq7kZZUWdmUlVdXF1RQlJZTmRZ3dQh
  sTHkB5AO2XbwuNFNiA4iLF7EcDYxBpRKMW4g2UHjBg9dknT4wyTFSZcs+bpsvOKFyikhRqJk
  ybLlDJUvZcBkCQIkSsmTP3QsGaJuxw8lH3Jo47EjlxAeSHLEkChN2rRvHneg0FbihLZpOM9I
  AVLlZhcpJ7uEiYIFCBAh/ijHyupiBstMeJpuFayxQwmjH0RQ8DDUFBcQHEaoTY3hzQm1aLx4
  ZOPRwYJCt1285DNy70wrlFywRImCiEhcI2HmmYnCZfRJI1u4dMOAg9FCR9py8BjVDUjiqSqo
  TlNBaNcOG7w8eLhBwzcXKlmAlOtypnqUL/FOQgGCNksVe9XPcKkSpUiXL9dl28CgkNGOGTZ0
  uzciJEZiIFRf6IDB6FsMJzrYptANXjnhhBJYjAMFGdSdxEU8UGSBxSlY3NIFFVx8cQlKXQAR
  RhdC3MPUEEj84M0OOKBIxEdEGGGiWzzoJ40hhJQgAiFQQGHcMCcQkeMSdkmhwydn5IMdW1tg
  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
  AoEAADs=
  
}
image create photo LightWood3-l -data {
  R0lGODlhUABQAKUoANy+jOzOlOTGpOzOrOTGlOTOpOzWrNzGnNy+nOzWpNy+lPTOpOzWtOzG
  nOTOnOzKrOzStOTKlNzClOTKpOzSrOzSpOzarOTKnNzCnOzSnOzGlOzOpPTWrOTGnOS+lPTS
  pPTWtOzKnOzOnOzKlOTClOzKpPTSrOTCnP//////////////////////////////////////
  /////////////////////////////////////////////////////////ywAAAAAUABQAAAG
  /sDKp1KhGDemwaBiohSblA0luRkiK4ONdvhJZImfj5NbQRoNxY9BCzVVDM01UlrhGKODqdRc
  jjr/Rk10TVhEhkRwfhR5YndQFAYGU0UUYkQUCZBrjot+G0RflVNRT4UUHJRnkKp3rAyqIAyv
  rG+IZ3YJdqNGeQMmG1kLWlFuqZ9iWQOvEHdwBnlNSa2+zyazFBAczNkMdiAQryCRd8yro1rA
  6FFsS36PWkXASp2LeRQLTtB8i59H850MIGSTxMDALEkQrCU6NwxLHnSfIkIssKHEhQ0i0JWY
  UCJEgwsTQl4Q0GFCBwETSAo4IOCEgJUdWIossDHkgwIDQhbYmaWE/gCfP39yrCiFlxIlOzdM
  KLB0A0WnZSg+zQJRnhSqoJweTdWr3lEIR5M+neCUAk6c9oxcmld0HU50D4dB7BOvDLy7eNpm
  +YOF1qdLTopQKkO1qhIsH+bgS1dh8V5h6dg0dsLG04c8TIoMaGSiCQc4TE5FSfT5Hj7C+O4M
  +6VW7QKH6+5ihEh5wWYskAn1CbzrjKRV44rFCyQxcuQBthMnQ1fmV+S8WpQYfxp72KLde/ZQ
  tZfM9pXERT9tF5/saKPC6uBt9mREmBt199bXOZOEyB7nczZ4P6pH9rC9y10VURQflCAgbBtI
  EgldvlDFniBXtSLYXnhIV9WFWlxwkYFO/imF4V/pgZKYWpfAY19v8WD4VEbphLBBCBxCdFFF
  MDpgUUhKlXCjSRd0oGEHH/W4UY8d+OjjkCFoqCRNG/hI1oUsPqnFRgY+NdU6R1SXHUQhiFCA
  iw54KcIFY4pgpoYdhrmBA7PRJlEZfcy1DmJ9USXCEsjRFZ52wNj1iYuzjamFCF0GamZxzCVm
  wmWViHeXZnO8l88WpMCFpZ9zQoQec06waSKLcvVpnX7pQBFpFe34YgR4fkL1lFJS8qlHEovp
  14tdu+lpikR47rVHJe+xIaA6zrXaZput4lccesbOBt6HGBKWTjJxQltkkSdcW6RJ2hrZI5Hd
  FkkCBkUScAIB/tqSoK665pIgbpECgDSURTRqwZFFG4UwQZIudnBCtv6eRO5JJxxwLUnXcqTw
  wj3aq/BGJYVU01IhVVwCTRXLi+OTIJXgQJHg2rcpIRCBiig6r2FkCKIpwylXBlo4AAamWIRq
  4qdMMLclXH2Fl88umRX1ixtO1IdcPxUkUAYaWhRAGWXNgRZRZ30NTcQv0vlShByTRKRqo6zR
  MWoW0uxmhB3FniLiQ3YFUpfWivgCV3SECbJONMRIt4ncooj9iRtdQWKCJL9Igkor0oyCRtCi
  ZNnWKHgSh0c+oYX23yi65MOaPZEYUNoqn40DyRuseA6aG9Hcxx4x5iwKdBKm3jHE/j2sp3UJ
  JeN8Lkkqv7UyDiWpfiCIdJS1A0gzfzyzB5ytdNLG1sD3pRYafxjvu2hMRPPMYcdzlwrypL9K
  E5UGxkibg4TwVXv6d3zfPGZXkWWg/D8qWVKPE6CpFIt2FWDfW7BaCr5KADKLIOxa2QLYCfKX
  v468SCNSAJePBAUSfRGFJhdwwEVcBJI1XQBGF/HSXKxEESl5SicP2wBKYAWxlBwMAQfcEFl6
  lCRCXaABO0kSRljEJjMRKmYY+ZIIIiCCMHXAh1VhkRArQhYmQeRiG2FKE5XiIqnQy0X7MokI
  RcAhfSVJg176IBcJFYIuldFMhQrhoGCWkYx0iQgGEkGz/iZSADYlpU0ZYQo6XnUhyJTMATps
  46DU5EM17fADIoBZAIqYkQrIUQQLEOQnHkkmMnkII2hykW2W4BTzmeyJMyoDI9vIQx828jWH
  MlQFumSmVolyA2TSYaFelMrqDOAthSmDHz/5J2PZhX+/cJlEnvUmKyRgC4Ga5Ryjg6FnNcaV
  JSOVf5SVtEZFpAxqQMQXhCdMiOhGCrBTRCNyNi3CgGdzCxjR4LACv3UMIBKDywTh4PQ8VSHn
  Z30aQ2D+VghCpK8tc6CLc6LwGn8IJhqDaUY17VMKvGUGDYBrQz+wdIQ+gWJVoyva6DqjB9Ll
  wxKsWxAa5PkGNFgiTs0Rwh/+/nI1pLXFEK1plISg8Js3hE4SueidMxIamN8ZIRMwVcU4TFdN
  wgUiefNEnOA657mjaoKpq0iAAaQqmJjqLhVFyBxpIKG0sxH1FqWbQiTswFRdNJWp3YgEAwbn
  1MMVw3dN9c30OmcOBY0VEu9kql2pB9WxooGscdCr6TjA1s5tIBOV6B0HyGo6c5RmQUhVECTS
  ajpn/MYAnKksaChQEM1C1aNuG0MeQidUIihNDLlQW1wXB1TJbs0ZjDWCOAT7V8Z21q97DU0l
  MtBGR+5QjGf0YQYyAAY/hIamhoCDPBXEWL2GDrG/4YAFHuuExTmSUCOIAAEiQAINaKAD7GIX
  AcZL/gAAaIAE5j2BBggQAg2MYARmCoAQKuDdWT5CssB57dJGB6d2/GkE3gVAeN0Fr6CI5CUv
  MQnCFlykBmRrXSQgwHrBi14NRKABRGRlFVgKIh/Cl1AdIECExxvhBgQMSCfhSMeYghIDNrBh
  +UNJgkOiEmyVJGIpEQmNQ5ITitVEKQkeyUlGkjEUdkCPBRBACEq45Co2bU1P6SEsi8ghk1QM
  ViVkpkaslAWxwHJNTVKYvjgixZ0wsIkldIAD/CcV/w2qIgUAVRlstOaLqZAsDphitOZoxzV3
  iIRNW7OX2rymItJyRixqZKGReCiKXER8TVtyVSbwSSXa5SJ+TpOn4iwo/kk3C5CSRMeh5Ay1
  DmUkhCzSmn78xEsvLZmHaZqLXWTmW5UNgREq43AjGbo8P30BZUIAhpYwNOoSnOlYz6xP0jiQ
  iWsi8xiNGQIR5DhMvglHGAuJ0y+sACrI+BKbdhmRcQkhideIUo5OSACoAgMnuyyBaL5ph+cQ
  418lLCDOF3oWZRrxMyd8plZuI4IwwtAPRWPiNtP+W5ZOKtactYYqYoD3O33WIFMhIQ/4yFxb
  EuPHxFD7GMeUDf+yQzPCYAdSu+ADI/SUjuMVJQtqSMBl7pIYUT7LCr5tlmBeY25V6WWgEULC
  QhQBTko0YXagoCuuIiJtTqkMVCJUM2FawU94/oT2D1DgKR06MU6jU3R3FYDZIRARbG6XAWYR
  abVwrSO3UeVtUPbZYSuLmIFIMtqUZuIt3heZdzMZEtGv0tGFfO2yyZVIUwv4Bdpznkheg4G3
  gxIuKsP+ShF2iIpWumR27AStKRl7lRqy0QMZaixjY6SMYbrACJJEAAcQ4ALj/VEHykgmHe2r
  Ij+s1wMNVAFskeAACiQXBg5AAAk8+ADuOoDBijQwdMUkxL93SbrASxJYWqQDGMDAvzCgAO5r
  HwESwIAExk+C8I8LAwQQvwRIIJUiEkbRJ0uirP9iyiEI9wMBQKT+E7kA3hI3A9wmd4lEJosk
  aql0eqYUeTu0YQdI/kqTdAgAOGofMFx4l0imNFyOdG4BwHekNGp6l3eitoCDMktP92bXRVwq
  E0kfKHcVsEh8x0obyIGm5Fs+JAyp5H+JNEnokHoduIDgAUnU9nEiMIE1aHdE8IEVKIAZATN6
  twADJ0fEFYQZaB+Q94CzkYGCZG5gAA8ZQQqiZAi8ZX+R9IUOeIVA5GZ8RkqEhIFyRHm4QlxK
  I3MLlXN/wW4rA4Y2N1wBkCQjoCEhsWTyYkFVNnhHWADERRUXMXbuxkntdgnHtAQZiA68FQLk
  NWLoBQAKwC7GJ36Y6AECZnwSgADl5wGgiAEk4BIJ1mIFcIr+Ynz/cmJEoiQCkCMXExI+/nIu
  4gVhEcYuRBIvF6MhfhcCgNQlZNJGZeQRIxBhAiZg6oIBHgAlUEhtOXci0hZ3CQeCLKiFZvIa
  iVGNGSBzU4UKmUAG8yUEkoBzjQRJSjNfQ/AaqDAzJgBU1aiIWsBbYadohjCBbjhVU3Ba4VgL
  g9MFT5M0a7AyMKM0YDeEn5AAQFUXlyBtaoBTU0WE9sFxu+MEYlcE69hTI2VdcNIFwiEGqFAF
  MLU7G7kg5HgI0mAH/UU6HrmOUhUJDBmOajE78qQ2xUAIMbkgV6NSUGNLwlIzfdE2cedssVE8
  u7BYvHFUTyAFkgCJhSAe/UhV9CQhINUJm3ciRWd1enAE0iMYD8PQO4JxUGOpPn0gbb4RBAA7
  
}
image create photo LightWood3-d -data {
  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
}

image create photo MapleWalnut-l -data {
  R0lGODlhUABQAKUoANy2g9y3it24ht69jN6+kOG2h+C1ieC7huG9jOK+kem+k97Cjt7Dk97G
  md7Ilt7Jmd7Qn97XqeHBjuLElOPGmePIluTJm+jDlejGmujIlujLneXQnujRn+fHoOXMoeLO
  qejNoeXRo+XUqOXYrOnRpOnTqejYp+nYrv//////////////////////////////////////
  /////////////////////////////////////////////////////////yH5BAEAAD8ALAAA
  AABQAFAAAAb+QItD83AMLaLHRCK5TCgTx6RyoVgqk0sFu91SoMtFhfl0YBOTtGRjsXwpjm+D
  4nE7LJ7Ow03/PilEdUYVGiRXaVRYUBgYFW4VGRJYU2ZpalMICFsTDAhoSxMaGxWMFHMEBBQd
  bQ8PHR1WFh0gDgxpDB5wGkMYGiaMFQmSX1IOVUJFUxWDFI1dUxMDjRRMwhIDDHFRFc1zzR0N
  buEN4A0QGhQM2BMbXx4NvSQhhBfCtU/QzaxYxRRc0JOgLWEiYUKCIf64VWgwhxsEDA8YamgD
  wQKEOtGmCKlAIg4IeRY0YGCSTpkiKw8SLtNWalPANAgIjgFk5As3OBhMqaLwgET+HQsNPJDg
  xsCfEAclvvjakJIaAigOMGjTtSenv0Fp4AxM82lgkyftlKWzwm0OrJ55Xj3YpciIGRAE8JTo
  6GbC06xFt7BqwO3JgwUFnxSFdiHwkgEFAWngctOfRpQPPOQBETTXFwmArsDt4EGDILsTMigU
  ixKKhKIOxOAznSHSJyaIM0RpA+dqHMwQrPCcWCfy4qJFAXlo1QbE4i0EDWf5IuRKl76Y30zA
  kGbAGDJT/O2xKeSLaHRB6ewyhedLlWWFHkAEYWEoJJkFJ93c6IXQkuDNsg6Q3SV+SIVG1bJM
  HTuBYNUeHhjTxRAaTETbI9chFx8icMRhhmJSZMcIIpL+jIFcFBt0NEWDtG0hGR0ElEKeBwDu
  VgghVmU4gHUFSZJVhf4QQwcDYgQHCjUSYtFhO18wQtsTFuSEAQGzyEHBB29swaAFrXiAQRu2
  XFPjM9kxEBwXOW2xACIcRlIjIhtMFF1K7E0AFDgdENCZHD3F0YV4+khGWwaZmGRJjk/c6cc2
  WHiJyRaiTXIHOkpR2UoF211pxXiclbCLAyAQ0kYb6LCX01YebjHYn6Ju4qMlU0iSaD5UvoFS
  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
  oiwU4BNr+TWz8FN6twrk8A7gMChBAAA7
  
}
image create photo MapleWalnut-d -data {
  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
  
}
image create photo Stone-l -data {
  R0lGODlhUABQAMZoAHyKXn6KY36LaoGPZYSOa4SSbIyUbIWUcoaWeoaZdYaZfIqWdImXeYua
  dIybe5CXcZCcdJKdfJiffo2hfZOkdpSifZaofpmjfZ2pf6Gpf4acgYydgoyeiZGegpGeiIeg
  go2hhI2jio2phI6oio6mkY2pk5SjhJSkipSohZWpjJmlhJmli5qphZuqjJSmkZWrkpWtmZmm
  kZuskputmZawjZuxh5ywjZawlJaxm5yxlJyym5+4l5y4nJStoZuuoZayoZ20opy2qJ25o525
  qqGmhaCmjqGphKGtjKCtlKGumaKxjaixjaKylKOzm6S4laO5nKm1lKi1nKm5lqm6nKO1oaK2
  qKO6o6S7qqi1oqq7o6q9qaW+sKi+sbC8orC+q6bApKXAqqvApavBq6fDtavDsbHDq7jGrbDD
  sf//////////////////////////////////////////////////////////////////////
  /////////////////////////ywAAAAAUABQAAAH/oBHTIMzRkkzMzkyKy0nESwpHh4NDgsO
  DA4JKCghIQ4NHR4REqQmEw5WNy0spi8uKi1NTC1HUVlJTEdOR0tMMjMtwSwoKSYtKDEtKowr
  UUxJtDNNyicewSYgJi4h2AodJpcKCiQvLQ4rMR0LDcYvJjLHLC0gMDAtMoPOUFFHSkeCNoK1
  CLjqhAwZKJwoOyKvyJQoTQ41oVLwxApGJz6EAHEChDgTHzY44AACxAoHMpJ0kOCA2AhjKiyo
  YDHBxQkVOlowiSJFhREWSpZEGSrMhjwTVIDISMaKBQsmVLJkaZJDSxQkg5LIsLj1RIsYJhQ4
  cCCSQYIOHVR0cBCKgoQL/iZOvDhhAoLTCQNNrJjxKwcTKH+nQCESSwlQFjNZVGkiA5aNI7Cg
  WsmyY8fkJBAHxdhsMBmHDSbAOTi1Cm0EtReIEFGhzYWJC5sczNBhcJATJli6DGViI4ONGbuW
  GLbAwoqVVUaYKPFn60kTK0KadMEShcqzFUuxYwcX95SJDRZXRECb1siRFiZU0O1wDMRsREJw
  PNk55eEsJzqYNJk2UwWKewPtoMg/Cjlhw35MFJEEFgxeNYNW8MiQggOhdVDBCnGdgMQRRUQQ
  gQzn6SADBKBhOEEKL8DwoBNZ/AUFFFN0sZMOOjD2xBTBMKGDc7840YQzCs0wyBMpDYWFVVRE
  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
  AoEAADs=
  
}
image create photo Stone-d -data {
  R0lGODlhUABQAOfCADpBPj1GQj9JRj1KTENGQ0NLRENMS0lOR0hNSkJOUUxPUkVRTEtSR0tT
  TU1YTkVRU0FRWEZaWExVUkxWWU1ZVE1aWVBWTlNbTVFWUlJXWVNbVFNdWVldVlleWlReYVhe
  YFZgVlVgW1lgVltjXF1oXlViYVtlYltlaF1pY11qaV5tcF1yZl9xbGBlXWFoXmlsX2FmYmFm
  aWNrZGNtaWhtZmluaWNucGpucWVwZmVxa2pxZWtzbG14bmVycWd4dGZ6eWt1cWx1em15c216
  eXJvY3JzZnB1bXJ5bXl7bXF2cXF3enN7c3N9eXh3cnl9dXl+eWp/gHR+gXl/gG+IfXSAdXWB
  e3qBdXuDfH6Idn2IfXWCgXaKhHuFgXuGiH2Jg32KiX2Pk32QjYGDdoCFfYKJfYmLfoGGgYCF
  iYOLg4KMiYmNhYmOiYONkIqOkIWQhYWRi4SYjoqRhYuTi42ZjYSRkYOXmIeYk4uUkoyWmI2Z
  k42amZCShZGVjJOZjZibjpGWkZOak5KcmpmdlJidmZOdoI+hnJOhl5Whm5qhlZujm5uonY2i
  opSiopeop5uloZ2nqJyoo5yrqp+zrpyys6ClnKGpnKqqn6CmoKOqo6Ktqqmto6iuqqausaSw
  p6Wwq6u0rK64rqOysqS4tqW7u6q1sau3u624tKy7u7G3rbK6rrK7tLK9uay+wbG/wbXAubrD
  uqnCwq3ByLTCwrfIxrXKy7nGw73JxLvLybTK0LjP1bvQzrrQ08HJvsXPysDO1MPR1MPX2sjb
  3///////////////////////////////////////////////////////////////////////
  ////////////////////////////////////////////////////////////////////////
  ////////////////////////////////////////////////////////////////////////
  /////////////////////////////////ywAAAAAUABQAAAI/gCT8Kk00M+eRHLWeLokiA+l
  PXv8DKpChcmVN1fSyACByIkVJzVGUIKxAUgLIztaaGghYsMIEDtimGAyowoPIDxWyNiBI8uO
  FThyQDLUhZGPKWvOyPHC5Q2XIGveyLEURw0ZSolcGRKUqI8gg2j6UKlSJdAbU7Z6ksmCRoeL
  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
  c+hnFrIQEAA7
}


### lang.tcl: Support for multiple-language menus, buttons, etc.
### Part of Scid, which is Copyright 2001-2003 Shane Hudson.

array set langEncoding {}
set languages {}

if {[catch {encoding names}]} {
  set hasEncoding 0
} else {
  set hasEncoding 1
}
################################################################################
#  Translation of pieces
#  Note to adopt also tkscid.cpp to allow for a new langauge as well
#  as add transPieces to langPieces[] in game.cpp
################################################################################
array set transPieces {}

set transPieces(F)   { P P K R Q D R T B F N C }
set untransPieces(F) { P P R K D Q T R F B C N }
set transPieces(S)   { P P K R Q D R T B A N C }
set untransPieces(S) { P P R K D Q T R A B C N }
set transPieces(D)   { P B K K Q D R T B L N S }
set untransPieces(D) { B P K K D Q T R L B S N }
set transPieces(I)   { P P K R Q D R T B A N C }
set untransPieces(I) { P P R K D Q T R A B C N }
set transPieces(N)   { P p K K Q D R T B L N P }
set untransPieces(N) { p P K K D Q T R L B P N }
set transPieces(C)   { P P K K Q D R V B S N J }
set untransPieces(C) { P P K K D Q V R S B J N }
## TODO Put in the right letters for greek
set transPieces(G)   { P B K K Q D R T B L N S }
set untransPieces(G) { B P K K D Q T R L B S N }
set transPieces(H)   { P G K K Q V R B B F N H }
set untransPieces(H) { G P K K V Q B R F B H N }
set transPieces(O)   { P B K K Q D R T B L N S }
set untransPieces(O) { B P K K D Q T R L B S N }
set transPieces(W)   { P B K K Q D R T B L N S }
set untransPieces(W) { B P K K D Q T R L B S N }
set transPieces(K)   { P P K R Q D R T B A N C }
set untransPieces(K) { P P R K D Q T R A B C N }
set transPieces(U)   { P S K K Q D R T B L N R }
set untransPieces(U) { S P K K D Q T R L B R N }

################################################################################
proc trans { msg } {
  if { $::language == "E" || ! $::translatePieces || $msg == "\[end\]"} {
    return $msg
  }
  if { [ catch { set t [string map $::transPieces($::language) $msg ]} ] } {
    return $msg
  }
  return $t
}
################################################################################
proc untrans { msg } {
  if { $::language == "E"  || ! $::translatePieces || $msg == "\[end\]"} {
    return $msg
  }
  if { [ catch { set t [string map $::untransPieces($::language) $msg ]} ] } {
    return $msg
  }
  return $t
}
################################################################################
#
################################################################################
proc addLanguage {letter name underline {encodingSystem ""}} {
  global langEncoding languages
  .menu.options.language add radiobutton -label $name \
      -underline $underline -variable language -value $letter \
      -command setLanguage
  set ::langEncoding($letter) $encodingSystem
  lappend languages $letter
}
################################################################################
# menuText:
#    Assigns the menu name and help message for a menu entry and language.
################################################################################
proc menuText {lang tag label underline {helpMsg ""}} {
  global hasEncoding langEncoding
  if {$hasEncoding  &&  $langEncoding($lang) != ""  &&  $::tcl_version <= 8.3} {
    catch {set label [encoding convertfrom $langEncoding($lang) $label]}
    catch {set helpMsg [encoding convertfrom $langEncoding($lang) $helpMsg]}
  }
  
  set ::menuLabel($lang,$tag) $label
  set ::menuUnder($lang,$tag) $underline
  if {$helpMsg != ""} {
    set ::helpMessage($lang,$tag) $helpMsg
  }
}
################################################################################
# helpMsg:
#    Assigns the help message for a particular language for a button.
# ################################################################################
proc helpMsg {lang button message} {
  global hasEncoding langEncoding
  if {$hasEncoding  &&  $langEncoding($lang) != ""  &&  $::tcl_version <= 8.3} {
    catch {set message [encoding convertfrom $langEncoding($lang) $message]}
  }
  set ::helpMessage($lang,$button) $message
}

array set tr {}
array set translations {}
################################################################################
# translate:
#    Assigns a translation for future reference.
################################################################################
proc translate {lang tag label} {
  global menuLabel hasEncoding langEncoding
  regsub {\\n} $label "\n" label
  if {$hasEncoding  &&  $langEncoding($lang) != ""  &&  $::tcl_version <= 8.3} {
    catch {set label [encoding convertfrom $langEncoding($lang) $label]}
  }
  set ::translations($lang,$tag) $label
  set ::tr($tag) $label
  foreach extra {":" "..."} {
    set newtag "${tag}${extra}"
    set newlabel "${label}${extra}"
    set ::translations($lang,$newtag) $newlabel
    set ::tr($newtag) $newlabel
  }
}
################################################################################
# translateECO:
#    Given a pair list of ECO opening name phrase translations,
#    assigns the translations for future reference.
################################################################################
proc translateECO {lang pairList} {
  global hasEncoding langEncoding
  foreach {from to} $pairList {
    if {$hasEncoding  &&  $langEncoding($lang) != ""  &&  $::tcl_version <= 8.3} {
      catch {set to [encoding convertfrom $langEncoding($lang) $to]}
    }
    sc_eco translate $lang $from $to
  }
}
################################################################################
# tr:
#    Given a tag and language, returns the stored text for that tag.
################################################################################
proc tr {tag {lang ""}} {
  global menuLabel tr
  if {$lang == ""} {set lang $::language}
  if {$lang == "X"} {return $tag}
  # First, look for a menu label
  if {[info exists menuLabel($lang,$tag)]} {
    return $menuLabel($lang,$tag)
  }
  if {[info exists menuLabel(E,$tag)]} {
    return $menuLabel(E,$tag)
  }
  # Now look for a regular button/message translation
  if {[info exists tr($tag)]} {
    return $tr($tag)
  }
  # Finally, just give up and return the original tag
  return $tag
}
################################################################################
#
################################################################################
proc setLanguage {{lang ""}} {
  global menuLabel menuUnder oldLang hasEncoding langEncoding
  
  if {$lang == ""} {set lang $::language}
  
  if { $::translatePieces } {
    switch $lang {
      C {sc_info language cz}
      D {sc_info language de}
      F {sc_info language fr}
      G {sc_info language gr}
      H {sc_info language hu}
      I {sc_info language it}
      K {sc_info language ca}
      N {sc_info language ne}
      O {sc_info language no}
      S {sc_info language es}
      U {sc_info language fi}
      W {sc_info language sw}
      default {sc_info language en}
    }
  } else {
    sc_info language en
  }
  
  if {[catch {setLanguage_$lang} err]} { puts "Error: $err" }
  # TODO: Check this:
  if {$hasEncoding  &&  $langEncoding($lang) != ""} {
    # encoding system $langEncoding($lang)
  }
  
  # If using Tk, translate all menus:
  if {! [catch {winfo exists .}]} { setLanguageMenus $lang }
  
  foreach i [array names ::tr] {
    if {[info exists ::translations($lang,$i)]} {
      set ::tr($i) $::translations($lang,$i)
    } elseif {[info exists ::translations(E,$i)]} {
      set ::tr($i) $::translations(E,$i)
    }
  }
  set oldLang $lang
}
################################################################################
# Will switch language only for Scid backoffice, no UI
# Used to make callbacks use english by default
################################################################################
proc setLanguageTemp { lang } {
  switch $lang {
    C {sc_info language cz}
    D {sc_info language de}
    F {sc_info language fr}
    G {sc_info language gr}
    H {sc_info language hu}
    I {sc_info language it}
    K {sc_info language ca}
    N {sc_info language ne}
    O {sc_info language no}
    S {sc_info language es}
    U {sc_info language fi}
    W {sc_info language sw}
    default {sc_info language en}
  }
}

### End of file: lang.tcl



# thousands, percentFormat:
#   Functions to format integer numbers.
#   thousands inserts the thousands separator (usually "," or ".") for
#   every three digits before the decimal separator in the number.
#   percentFormat does the same as thousands, but also adds a percentage.
#   If "kilo" is true, numbers >= 100,000 are divided by 1000 and have
#   the unit "K" appended while values over 1 million appear as "1.00M"
#
proc ::utils::thousands {n {kilo 0}} {
  global locale
  set commaChar [string index $locale(numeric) 1]
  set unit ""
  if {$kilo} {
    if {$n >= 1000000} {
      set decimalChar [string index $locale(numeric) 0]
      set decimalPart [format "%02d" [expr {(int($n / 10000)) % 100}]]
      set n [expr {int($n) / 1000000}]
      set unit "${decimalChar}${decimalPart}M"
    } elseif {$n >= 100000} {
      set unit "K"
      set n [expr {int($n / 1000)} ]
    }
  }
  if {$commaChar == ""} { return "$n$unit" }
  while {[regsub {^([-+]?[0-9]+)([0-9][0-9][0-9])} $n "\\1$commaChar\\2" n]} {}
  return "$n$unit"
}

proc ::utils::percentFormat {num denom} {
  # Ensure denominator is not zero:
  if {$denom == 0} {set denom 1}
  return "[::utils::thousands $num] ([expr $num * 100 / $denom]%)"
}

###
### flags.tcl: part of Scid.
### This file contains 171 flags from countries all over the world
### for usage in scid. Original work from Andy Templeton (Palview)
###     http://www.enpassant.dk/chess/palview/index.htm
### and where slightly edited by Austin Lockwood for the usage at
###     http://www.schemingmind.com
### Usage for scid granted May, 23 2008 :)
###
### Each flags dimension is 24x12 pixels.
#======================================================================
#
image create photo flag_afg -data {
R0lGODlhGAAMAKL/AP//////AL4AJ6WEAKCJTSOeRgAAAAAAACwAAAAAGAAMAEADOGi6Kv6uyCkZ
cwNHOu0SBBiGXOcZEFRWJyi6a3Gi6VbOtc3hIhEKMdxoBFzxAoNBQEfh1YKtXCwBADs=
}

image create photo flag_aho -data {
R0lGODlhGAAMAJH/AP///74AJ43E7wAAACwAAAAAGAAMAEACJoR/oYrtuNgzotorAN55xjBR3DiG
X4ieqBehJaaRpBbP7LLe0lQAADs=
}

image create photo flag_alb -data {
R0lGODlhGAAMAPAAA74AJwAAACwAAAAAGAAMAEACJoSPqZvhz1YAr84ZKcLYdNZVx5eVJvU5J+q1
bKlaFynJlgm9+boWADs=
}

image create photo flag_alg -data {
R0lGODlhGAAMAJH/AP///74AJyOeRgAAACwAAAAAGAAMAEACK5SPBsu9eUJQrkIjaW03bXdlihR8
HfJxp5auZPpAorCUpjxR9uZKMLBifQoAOw==
}

image create photo flag_and -data {
R0lGODlhGAAMAKL/AP//////AP8zM/8AAMyZM5lmAAxBmgAAACwAAAAAGAAMAEADQWi6Gv5uyCkZ
CySTQgKl1oJlXPdNYQM9Z5VigOCYbWqsbP3inh4GBWAw2BrYMAPZgHY6EpIe5ufoKAQjPguvd0oA
ADs=
}

image create photo flag_ang -data {
R0lGODlhGAAMAJH/AP//////AL4AJwAAACwAAAAAGAAMAEACJpSPqTftH2J4dKwUTL5c71tRUzOG
5ll16oqxyifAyDlOJYre+F4VADs=
}

image create photo flag_ant -data {
R0lGODlhGAAMAKL/AP////f0Cb4AJzan6QAAAAAAAAAAAAAAACwAAAAAGAAMAEADNki6rNFQyCmB
vZbq6Uj44OcpW/N4YMds0uC+sMvOAkZLkKo3FBSKPFZs+Lq1iDIjBZNRspq0BAA7
}

image create photo flag_arg -data {
R0lGODlhGAAMAPEAA////7TX9P//AP/MACwAAAAAGAAMAEACHoyPqct9AKOcNLr7KhRcWwyG4hh4
ACeYqjCkJgmDBQA7
}

image create photo flag_arm -data {
R0lGODlhGAAMAPEAA+KuVztao74AJwAAACwAAAAAGAAMAEACHpSPqQftD6MLtNqL69o8+y+FIkeW
pvKl6oqJ7gtHBQA7
}

image create photo flag_aru -data {
R0lGODlhGAAMAPEAA7TX9Pf0Cb4AJwAAACwAAAAAGAAMAEACGYSPqcvtz4SEtNor7sq6swCG4kiW
5hl6SQEAOw==
}

image create photo flag_aus -data {
R0lGODlhGAAMAJH/AP///74AJztaowAAACwAAAAAGAAMAEACKowuAWjo/xacEBglLD2SLYxV2xiN
HXV6RxiSwQvHDZk1ocbROg30+08rAAA7
}

image create photo flag_aut -data {
R0lGODlhGAAMAPAAA////74AJywAAAAAGAAMAEACGIyPqct9AKOcNLr7qta4+w8a20iWVIh2BQA7
}

image create photo flag_aze -data {
R0lGODlhGAAMAPEAA////zan6SOeRr4AJywAAAAAGAAMAEACJoyPqSftD6MbtFoArK6r+11llAgO
0ol66soq5UCSb4nNFIrnelQAADs=
}

image create photo flag_bah -data {
R0lGODlhGAAMAJH/AP////f0CTan6QAAACwAAAAAGAAMAEACJJSPqTftC5lrodqL7YtczJ+F1dZB
Q9l9qPI5othSb6auyGkvBQA7
}

image create photo flag_ban -data {
R0lGODlhGAAMAPAAAyOeRr4AJywAAAAAGAAMAEACG4SPqYvhz+KbIUpoF8W5++9toLE5Y1mNwKS2
BQA7
}

image create photo flag_bar -data {
R0lGODlhGAAMAPEAA+/UZpmZmTtaowAAACwAAAAAGAAMAEACLJRvoKvoL9hYsMYZRgDDQsZ4jzKV
gOiAFHqoDZss0wuT3A3Hw76fueuruSoFADs=
}

image create photo flag_bdi -data {
R0lGODlhGAAMAJH/AP///74AJyOeRgAAACwAAAAAGAAMAEACNESOqQsgD5uRQTqIsZ0267aEkpdN
VUV+Rsg0D8Wyo4rAlZtqAiJcuVer/V6gYGJGXMVEjQIAOw==
}

image create photo flag_bel -data {
R0lGODlhGAAMAJH/AP////f0Cb4AJwAAACwAAAAAGAAMAEACJ5xvoavi7xBiDEJ56LIPJx1wkQeG
ojeUooCqJwmubfxiLjdrMqyLBQA7
}

image create photo flag_ben -data {
R0lGODlhGAAMAJEAAPf0CSOeRr4AJwAAACH5BAAAAAAALAAAAAAYAAwAAAIkjG+gyw2InFzwzFnT
dTlsnn1NJ5TmiQpkypZrm77wKc9uZqMFADs=
}

image create photo flag_ber -data {
R0lGODlhGAAMAPIAA////8yZmTlXozOZAL4AJwAAAAAAAAAAACwAAAAAGAAMAEADLkiyQsAkykmr
laMuoJzgzQSM1OKdz6WuUfCxsOY1Dx3f62vWHMX1uMlgGCwaIwkAOw==
}

image create photo flag_bih -data {
R0lGODlhGAAMAJH/AP////f0CTtaowAAACwAAAAAGAAMAEACJpQFEsu9B6NMTVqk3LuHasZZXhVy
Xjl+QWmkDttlLxzPdL3dECUVADs=
}

image create photo flag_blr -data {
R0lGODlhGAAMAJH/AP///74AJyOeRgAAACwAAAAAGAAMAEACIAyCqcspD6OcotlrsEZn30OFVOdZ
ZNmcqKKunAhDRhwXADs=
}

image create photo flag_blz -data {
R0lGODlhGAAMAPIAA//+/5n/mf/MAL4AJztaowBmAAD/AAAA/ywAAAAAGAAMAEADNzi63L4kygiM
vWDqXUH5RbeNE2BmJGmYQnGE1fjMdG1DYxUYhYWmkxVAMIQZgCXhSYTULIG3WwIAOw==
}

image create photo flag_bol -data {
R0lGODlhGAAMAPEAA/f0CYCAgCOeRr4AJywAAAAAGAAMAEACJpyPqSftD6MDtFoQwt2r+20NlAhS
0ol66soq5diQ72zMAIrnelQAADs=
}

image create photo flag_bot -data {
R0lGODlhGAAMAJH/AP///2647QAAAAAAACwAAAAAGAAMAEACHIyPqct9AKOcNLp7hN68+42F4kga
34lW6lq2YQEAOw==
}

image create photo flag_bra -data {
R0lGODlhGAAMAPEAA/////f0CSOeRjtaoywAAAAAGAAMAEACK5SPqWvhA6NjyYUoJ1V2H2thwDiA
mnd66oqEZbCCwwhgICNjENCpZsoKFgAAOw==
}

image create photo flag_brn -data {
R0lGODlhGAAMAPAAA/////8AACwAAAAAGAAMAEACH4QPocuteJxk0Mxb05V58+o5mRY+XWmCaDCu
7Im2awEAOw==
}

image create photo flag_bru -data {
R0lGODlhGAAMAKL/AP//////hPf0CcZjAL4AJ4SEhAAAAAAAACwAAAAAGAAMAEADPyi63P6LGEPq
lNMUwDX/X0VwAQQCJUNATOZKYwyMJ8oKYutO6e3Xp5VvR9nIaDRb40URwYAAFmFAxRAnvqEhAQA7
}

image create photo flag_bul -data {
R0lGODlhGAAMAJH/AP///74AJyOeRgAAACwAAAAAGAAMAEACHoSPqRftD6MTtNqL69o8+y+FIkeW
pvKl6oqJ7gtHBQA7
}

image create photo flag_can -data {
R0lGODlhGAAMAPAAA/////8AACwAAAAAGAAMAEACJ4wPqZvnr2B8tAEUJnUs982BnogsnkmeDEqy
Xys2qSxds7mm6pU/BQA7
}

image create photo flag_chi -data {
R0lGODlhGAAMAJH/AP///74AJztaowAAACwAAAAAGAAMAEACJpRvoMsNAaOcNB4gcHZcJbZ1TkWW
5mldl+ggWsguiBsz6I3nOlQAADs=
}

image create photo flag_chn -data {
R0lGODlhGAAMAPAAA/f0Cb4AJywAAAAAGAAMAEACGowfgMvtf5SCEFiKs94xeTNtIcgtY4mmKlQA
ADs=
}

image create photo flag_cmr -data {
R0lGODlhGAAMAPEAA/f0CSOeRr4AJwAAACwAAAAAGAAMAEACLYxvoqvg7xBiDEJ52tMW4ERx1hc0
ptBFXyheK5t6LwosMWnX7YPDaR+6zSixAgA7
}

image create photo flag_col -data {
R0lGODlhGAAMAPEAA/f0Cb4AJztaowAAACwAAAAAGAAMAEACHoSPqSftD6NbtNrLpNah+w+GHkaW
5mlsKiS27gt7BQA7
}

image create photo flag_com -data {
R0lGODlhGAAMAKL/AP////f0Cb4AJztaoyOeRgAAAAAAAAAAACwAAAAAGAAMAEADNBi63L4EkEmE
vTjfSCP4YCh+1GM6XDdprEUNcCzPNHHezESO/MhJlF7v12m1dBKasrZs0hIAOw==
}

image create photo flag_crc -data {
R0lGODlhGAAMAPEAA////ztao4CAAL4AJywAAAAAGAAMAEACJoyPqQftD6MbtI5ms5a8byEA2jgs
5ommTMc+myGScoXNVosDqloAADs=
}

image create photo flag_cro -data {
R0lGODlhGAAMAPEAA////7TX9Dtao74AJywAAAAAGAAMAEACLJyPqSftDwZ4tIGLsdy5x2UIgQAe
nhal51W1rlPG8jHW8Xpx+J5K+wsMCisFADs=
}

image create photo flag_cub -data {
R0lGODlhGAAMAJH/AP///74AJztaowAAACwAAAAAGAAMAEACJpSPqRftAKOc0T2KpVtchWp1XiOW
QYlaX8YCjRuizKe2lCp7eVcAADs=
}

image create photo flag_cym -data {
R0lGODlhGAAMAPIAA//////M/5n////MADtao74AJ8wAAAAzMywAAAAAGAAMAEADOVi0VMCKyUkr
A7gC5cimgfFQXTlKQ2qtl+CebDx1zUjHRa7vEXP8lE9tIVyEBiJZJTAQDALKqJSVAAA7
}

image create photo flag_cyp -data {
R0lGODlhGAAMAJH/AP////DWiSOeRgAAACwAAAAAGAAMAEACH4SPqYsi8Bxjodo6s952+w96gYGR
o3iV4KOwYRTGRgEAOw==
}

image create photo flag_cze -data {
R0lGODlhGAAMAJH/AP///74AJztaowAAACwAAAAAGAAMAEACJISPqSftAaOc0bmFWcvc2E+F0COW
VYd+6PJdq9cKJgXOoWybBQA7
}

image create photo flag_den -data {
R0lGODlhGAAMAPAAA////74AJywAAAAAGAAMAEACIIxvAMjt6uJbsiZqg9q8ex5BmSSOk/mlaoiZ
TOkicFUAADs=
}

image create photo flag_dom -data {
R0lGODlhGAAMAPEAA////ztao74AJwCAACwAAAAAGAAMAEACLoyPoMLtDxVA1Mgrhxi417RATnc1
ZCky0sdWUtq0CKyewBBwNkCvcq+QBYATWQEAOw==
}

image create photo flag_ecu -data {
R0lGODlhGAAMAPIAA////+Hv+7TX9M6tb/f0Cf9mAMAUJztaoywAAAAAGAAMAEADNEi63L4nykkM
mTg+NUjvWyg6mUQIgHCVkeG+cCy/Yy0OQ4HbjxCoItbhdFAJD7Okcsl8JQAAOw==
}

image create photo flag_egy -data {
R0lGODlhGAAMAJH/AP////DWib4AJwAAACwAAAAAGAAMAEACI5SPqTftD6MDtFoQrgar+10FIlhJ
5uml6qqQ2OvGWXzW9h0VADs=
}

image create photo flag_eng -data {
R0lGODlhGAAMAPAAA////74AJywAAAAAGAAMAEACH4SPEJHtuJ5Mcdoql96878tYEyY6pOmlKVhm
YducTQEAOw==
}

image create photo flag_eri -data {
R0lGODlhGAAMAPEAA7TX9PPilSOeRr4AJywAAAAAGAAMAEACMpSPqTcT/VxsDdhr4ZSULtF13+do
3RamKca2gDjGYYDGBmSWaoPonK/CnGghF6tjTF4KADs=
}

image create photo flag_esa -data {
R0lGODlhGAAMAJH/AP///2J4ogCAAAAAACwAAAAAGAAMAEACH4yPqct9AKMEZlqHn42iix1l4kiW
FQh8KcpCXWvGYgEAOw==
}

image create photo flag_esp -data {
R0lGODlhGAAMAKL/AP//////AP8AAJmZmZlmM5kzAAAAAAAAACwAAAAAGAAMAEADKCi63L4hxqHK
kDjrKIrY4COO2VAQxAVmY+u+zirLA2rNoOmpOOz/jgQAOw==
}

image create photo flag_est -data {
R0lGODlhGAAMAJH/AP///ztaowAAAAAAACwAAAAAGAAMAEACHoyPqQftD6MTtNqL69o8+y+FIkeW
pvKl6oqJ7gtHBQA7
}

image create photo flag_eth -data {
R0lGODlhGAAMAPEAA5qw2SOeRr4AJ/f0CSwAAAAAGAAMAEACJ4yPqSftD+KbbdiLI8Dcrg92VzSQ
okWlqgO27quc5SjX212v+s5TBQA7
}

image create photo flag_eur -data {
R0lGODlhGAAMAPEAA/fGAIyEKRA5cwAAACwAAAAAGAAMAAACHZSPApHtBlB8tFr15t1VO2aBGUeO
jlemh4eSQZsUADs=
}

image create photo flag_fai -data {
R0lGODlhGAAMAJH/AP///74AJztaowAAACwAAAAAGAAMAEACKoQPEiHo7xSDT9hrF94bykYhy0iW
Julp4ZqoLPW9wEnXXMbcXDrJlcsqAAA7
}

image create photo flag_fij -data {
R0lGODlhGAAMAPIAA////7TX9P+EQv9CQv8AAL4AJztaowD/hCwAAAAAGAAMAEADPFi2VsAlyEmr
vQEQUBdQjvEZFCEIA0EtYftgcBwQNC3fXdg8O178wGDkJlLsPEPJQQM44CxNwvJ5UVGfCQA7
}

image create photo flag_fin -data {
R0lGODlhGAAMAPAAA////ztaoywAAAAAGAAMAEACIIQfGcftptZzsdqbqJoa+9pJHBeNY2lC38q2
IrKlD5oWADs=
}

image create photo flag_fra -data {
R0lGODlhGAAMAJH/AP///74AJztaowAAACwAAAAAGAAMAEACJ5RvoKvh7xBiDEJ56LIPJw1wkQeG
oieUYoCqJwmubfxiLjdrMqyLBQA7
}

image create photo flag_gam -data {
R0lGODlhGAAMAPEAA////ztaoyOeRr4AJywAAAAAGAAMAEACIpyPqSftD6MDtNqL69o8+A+G4ieV
JoemqjK2bgbH5kzXUQEAOw==
}

image create photo flag_gbr -data {
R0lGODlhGAAMAJH/AP///74AJztaowAAACwAAAAAGAAMAEACO4SFKRABmliARlrTnqqc594tnyY6
0Yc06sq264JNp4lUmTBS94bWuVU6JFzEIqgzOpJsMiBzKYEEKbECADs=
}

image create photo flag_geo -data {
R0lGODlhGAAMAPAAA////74AJywAAAAAGAAMAEACJ4SPEJGdjNZzVMEa5dFmXeuF4hhOmUl9Fuqo
XPeQsoyt9fbmb703BQA7
}

image create photo flag_ger -data {
R0lGODlhGAAMAJH/AP///+/UZr4AJwAAACwAAAAAGAAMAEACHpyPqRftD6MTtNqL69o8+y+FIkeW
pvKl6oqJ7gtHBQA7
}

image create photo flag_gha -data {
R0lGODlhGAAMAPEAA/f0CSOeRr4AJwAAACwAAAAAGAAMAEACJJSPqRftD6MDtFowrgar+21lYCWV
poemqjJig9iOGQya9o1HBQA7
}

image create photo flag_grd -data {
R0lGODlhGAAMAKL/AP/////GAP9jQvf0Cb4AJyOeRgAAAAAAACwAAAAAGAAMAEADO0i6sdTMyULp
uBjX6nbJoFd0YGmOSxGIxECInCTPdG3LlXlSHSwQggEMpaAIPL/gsPfRhXgziEL6mCUAADs=
}

image create photo flag_gre -data {
R0lGODlhGAAMAPAAA////5qw2SwAAAAAGAAMAEACIIxhqcvtn9ABtNorQ4Zw84WFYhVF42l9jqdO
KNrGclIAADs=
}

image create photo flag_gua -data {
R0lGODlhGAAMAKL/AP//////AP9mM7TX9JkAAGbMMwCZAAAAACwAAAAAGAAMAEADMzi6Cv6OyTkg
pLiWAIIoQEZZjzgBhQEQBmhKZPQucTg3TwHaN8oJLd7ModPJerEbjoRJAAA7
}

image create photo flag_guy -data {
R0lGODlhGAAMAKL/AP////f0Cb4AJyOeRgAAAAAAAAAAAAAAACwAAAAAGAAMAEADNzi63L4iSkKC
vQC8IWe9VrZFVJBp29OtQgm+GVmd6UOJddq5Jl6zslfIxwHyQDSIB0Pc3FC5RwIAOw==
}

image create photo flag_hai -data {
R0lGODlhGAAMAPEAA////ztao74AJwCAACwAAAAAGAAMAEACIIyPqSftD6NbB4ABqN5LOtCA3khG
3ImmWsORF1bG8uwVADs=
}

image create photo flag_hkg -data {
R0lGODlhGAAMAPAAA////74AJywAAAAAGAAMAEACIoyPqYvgASBbUdY658tUnohxnhGK5gmVpgOm
LkpuaBvDdgEAOw==
}

image create photo flag_hon -data {
R0lGODlhGAAMAPAAA////2J4oiwAAAAAGAAMAEACGoyPqct9AKOcNLr7qtUS+w+GBhdsHGlq4uoV
ADs=
}

image create photo flag_hun -data {
R0lGODlhGAAMAJH/AP///74AJyOeRgAAACwAAAAAGAAMAEACHoyPqSftD6MDtNqL69o8+y+FIkeW
pvKl6oqJ7gtHBQA7
}

image create photo flag_ina -data {
R0lGODlhGAAMAPAAA////74AJywAAAAAGAAMAEACGYyPqQftD6NbtNrLpN68NwyG4mh45ommTQEA
Ow==
}

image create photo flag_ind -data {
R0lGODlhGAAMAPEAA////+KuVztaoyOeRiwAAAAAGAAMAEACJoyPqTftD6MDtFpBsd2r+70JmAZS
0ol66soqZQaI71xp5Ivm+h4VADs=
}

image create photo flag_iri -data {
R0lGODlhGAAMAJH/AP///74AJyOeRgAAACwAAAAAGAAMAEACKpSPqRftD6MTgNqKr86rdwCGYgCQ
pDhKquq17qugqFnKY03n+L72/i8pAAA7
}

image create photo flag_irl -data {
R0lGODlhGAAMAJH/AP///+S0WCOeRgAAACwAAAAAGAAMAEACJ5RvoKvh7xBiDEJ56LIPJw1wkQeG
oieUYoCqJwmubfxiLjdrMqyLBQA7
}

image create photo flag_irq -data {
R0lGODlhGAAMAJH/AP///74AJyOeRgAAACwAAAAAGAAMAEACKoyPqTftD6MDtNqL69qcig8IYQiS
pEhJ6sq17qtU6DVbtZzdnrX2/h8pAAA7
}

image create photo flag_isl -data {
R0lGODlhGAAMAJH/AP///74AJztaowAAACwAAAAAGAAMAEACKpQvEAHo7xSDD9hrF94bykYhy0iW
Julp4ZqoLPW9wknXXMbcXDrJlcsqAAA7
}

image create photo flag_isr -data {
R0lGODlhGAAMAPAAA////5qw2SwAAAAAGAAMAAACHYSPqRftD6NbtFoTbpVaZdx5TIhwZHmmmMSy
qlIAADs=
}

image create photo flag_ita -data {
R0lGODlhGAAMAJH/AP///74AJyOeRgAAACwAAAAAGAAMAEACJ5RvoKvh7xBiDEJ56LIPJw1wkQeG
oieUYoCqJwmubfxiLjdrMqyLBQA7
}

image create photo flag_jam -data {
R0lGODlhGAAMAJH/AP////f0CSOeRgAAACwAAAAAGAAMAEACLYyOqRsxD5tREtorabs2L7ZxnOSI
XfN91eClahih6WrGE1xjMl23b/nwuTSBAgA7
}

image create photo flag_jor -data {
R0lGODlhGAAMAJH/AP///74AJyOeRgAAACwAAAAAGAAMAEACK5yPqRftLaKcVLwHst4cvAUmjnc1
XfdUqtqELnO9S4mdKG3aXLn2VuALCgoAOw==
}

image create photo flag_jpn -data {
R0lGODlhGAAMAPAAA////74AJywAAAAAGAAMAEACG4SPqZvhz+KbIUpoF8W5++9toLE5Y1mNwKSq
BQA7
}

image create photo flag_kaz -data {
R0lGODlhGAAMAPEAA43E7//GAP//AAAAACwAAAAAGAAMAEACMkQEqcvtERh06TSBRaQVra14lKVE
GWZwpARyhrggsBsnWaXO7+1OpY0C6Eq6iS9HcxUAADs=
}

image create photo flag_ken -data {
R0lGODlhGAAMAKL/AP////8zM74AJyOeRgAAAAAAAAAAAAAAACwAAAAAGAAMAEADPEi63L4gSikC
CGLqPevNXPQASwA9hKCuK2GZbCwMdE0D9oDnNer/DVJGQCChZK0kcqkkMme823AXrVqrCQA7
}

image create photo flag_kgz -data {
R0lGODlhGAAMAPAAA/f0Cb4AJywAAAAAGAAMAEACH4yPqZsA5piM9Enm4l3P9g2G4qhpZOChI9q1
K5S9bwEAOw==
}

image create photo flag_khm -data {
R0lGODlhGAAMAJH/AP///74AJztaowAAACwAAAAAGAAMAEACJZSPqRftAAJsc7qLr81u+c9J0Lhh
34mmSsi2WBWVbkWJnIrnSgEAOw==
}

image create photo flag_kir -data {
R0lGODlhGAAMALMAAGyDunCHvD9dpUNhpz5dpHSKvoiax2N7tniOwPf0CTtao////74AJwAAAAAA
AAAAACH5BAAAAAAALAAAAAAYAAwAAARMkMlJq7016Z2w/+DUbUwXiiVXnhRnYkscM3Kc1AuNL0ov
94qfLwbkKQoLQI9wWAR6A8QCAZQqd9gsrkgcGoPdYC8wBRqSPYE1LX1GAAA7
}

image create photo flag_kor -data {
R0lGODlhGAAMAJH/AP///74AJztaowAAACwAAAAAGAAMAEACK4SPqWtjAmNjKthr6XGA49lpzxUJ
IqhxjEqxi4cFqIhF8nmU5clxewjE4QoAOw==
}

image create photo flag_kuw -data {
R0lGODlhGAAMAJH/AP///74AJyOeRgAAACwAAAAAGAAMAEACK5yOqXvjH6KcVL4Lst48X8OEyOd0
5gZVqvqIbvO9DDmcNm2f38pHQw+MFAAAOw==
}

image create photo flag_lao -data {
R0lGODlhGAAMAJH/AP///74AJztaowAAACwAAAAAGAAMAEACIoyPqSftDyJ4tEIZbVu8a4FlWkeW
pvKBUvqFE1u530nXSgEAOw==
}

image create photo flag_lat -data {
R0lGODlhGAAMAPAAA////4AAJiwAAAAAGAAMAEACFYyPqcvtD2MCtNqLq9y8uwyG3khuBQA7
}

image create photo flag_lba -data {
R0lGODlhGAAMAPAAAyOeRgAAACwAAAAAGAAMAEACD4SPqcvtD6OctNqLs96wAAA7
}

image create photo flag_lbr -data {
R0lGODlhGAAMAJH/AP///74AJztaowAAACwAAAAAGAAMAEACIJQdqcvt7wSQAloJpt28+0hh2UiW
ozGJ5sq27gvH8rwWADs=
}

image create photo flag_lib -data {
R0lGODlhGAAMAKL/AP///74AJ5nMmTOZAABmAAAAAAAAAAAAACwAAAAAGAAMAEADKxi63L4gykkA
qTPrOYjAG/CMZGhdw2eSbOs6ZkQMcexdYM3dl0Bvr6DQkQAAOw==
}

image create photo flag_lie -data {
R0lGODlhGAAMAPEAA/TkZDtao74AJwAAACwAAAAAGAAMAEACIIyPqSftD6M7oK6bqsZX+g+GE8WV
wIAC5com4gvHclMAADs=
}

image create photo flag_ltu -data {
R0lGODlhGAAMAPEAA/f0CSOeRr4AJwAAACwAAAAAGAAMAEACHoSPqSftD6MLtNqL69o8+y+FIkeW
pvKl6oqJ7gtHBQA7
}

image create photo flag_lux -data {
R0lGODlhGAAMAJH/AP///74AJ5qw2QAAACwAAAAAGAAMAEACHoyPqSftD6MDtNqL69o8+y+FIkeW
pvKl6oqJ7gtHBQA7
}

image create photo flag_mad -data {
R0lGODlhGAAMAJH/AP///74AJyOeRgAAACwAAAAAGAAMAEACJIRvocsdiISctAp4nF44bd0B1jiF
JBl+YKc6acuYpyXPVG1LBQA7
}

image create photo flag_mar -data {
R0lGODlhGAAMAPEAA5nMmSOeRr4AJwAAACwAAAAAGAAMAEACHpSPqYsQFwCbwFk5M8468g+GYvKM
SPCgpuEI3grHBQA7
}

image create photo flag_mas -data {
R0lGODlhGAAMAPEAA/////f0CTtao74AJywAAAAAGAAMAEACJpSPNsvtD+MJIanITNX74g+GYsZZ
AoCmKqpN3bnGZhLX9o3n+m4XADs=
}

image create photo flag_mau -data {
R0lGODlhGAAMAPAAA/f0CSOeRiwAAAAAGAAMAEACHYyPqYvg/5g0YFp6k5M7+w9qnVdNpXk26QWt
oVUAADs=
}

image create photo flag_mda -data {
R0lGODlhGAAMAPIAA///APf0CZlmAP8AAL4AJztaowBmmQAAACwAAAAAGAAMAEADPFi6Gv6OyCkZ
e0OMSKddjgAIAdl5XwFBZ5WGRmCYbaqu3GnjebeHpB7lpxlkAi0CMTZD1l6BDWmT/OGSCQA7
}

image create photo flag_mex -data {
R0lGODlhGAAMAKL/AP///86tb74AJ5mZmSOeRgCZAAAAAAAAACwAAAAAGAAMAEADOUi6Cv5OyCkZ
g5BSu8AIYBBpFUdgD1lyQOGAriqYJwrItH2r+SuOpNwHBBDhTI6C0rULIm1HFlSVAAA7
}

image create photo flag_mgl -data {
R0lGODlhGAAMAPEAA/TkZDtao74AJwAAACwAAAAAGAAMAEACL5RvoavoAARMbLkbT7X3wCxsTSd5
1EZKXyYGqQGG4nu16crOZMSf1V3KoWgIW6cAADs=
}

image create photo flag_mkd -data {
R0lGODlhGAAMAPEAA/f0Cf+ZM74AJwAAACwAAAAAGAAMAEACL4Qhqad72FY0sc4JrcuC7vaE4ugl
jAOWH4apqWS6nREEbVWL9R3lcsmRxTixFqQAADs=
}

image create photo flag_mli -data {
R0lGODlhGAAMAPEAA/f0CSOeRr4AJwAAACwAAAAAGAAMAEACJ4xvoKvi7xBiDEJ56LIPJw1wkQeG
oheUooCqJwmubfxiLjdrMqyLBQA7
}

image create photo flag_mlt -data {
R0lGODlhGAAMAJH/AP///74AJ4SEhAAAACwAAAAAGAAMAEACI4SPFsu9CYGbISbqgNgWN4t4DHiI
jwaaFdqZpOK+6ivFpFoAADs=
}

image create photo flag_mnc -data {
R0lGODlhGAAMAPAAA////74AJywAAAAAGAAMAEACGYyPqQftD6NbtNrLpN68NwyG4mh45ommTQEA
Ow==
}

image create photo flag_mne -data {
R0lGODlhGAAMAPEAA+26SMs0SBmtTwFxtywAAAAAGAAMAAACLoSPqRjtD2Mw0tE6gdSQd/9wF2iR
zTEMx2aeQHpFcRcIwlTNcltifv/zLYZEQAEAOw==
}

image create photo flag_moz -data {
R0lGODlhGAAMAKL/AP////f0Cb4AJyOeRgAAAAAAAAAAAAAAACwAAAAAGAAMAEADNzi63L4iSkCr
vVUGIrC/0iM6EQFIEqGuLKsFcCzPszDeDGrjTxSnraCLEBAUS8KkjsakGZvQWQIAOw==
}

image create photo flag_mri -data {
R0lGODlhGAAMAPEAA/f0CSOeRjtao74AJywAAAAAGAAMAEACI5yPqQftD6MTtNqL69pc+h+E4kiW
Iocm2cq2bvXFkEnX9i0WADs=
}

image create photo flag_mya -data {
R0lGODlhGAAMAPEAA////zOZ/ztao74AJywAAAAAGAAMAEACIZSPo8vtDxUCIEV2QBDV3A+GopR1
XpgJgSkirjDG8kwPBQA7
}

image create photo flag_nca -data {
R0lGODlhGAAMAJH/AP///2J4ogCA/wAAACwAAAAAGAAMAEACHIyPqct9AKOcNLr7KkR64w+GYtBB
glCmqje2VwEAOw==
}

image create photo flag_ned -data {
R0lGODlhGAAMAJH/AP///74AJztaowAAACwAAAAAGAAMAEACHoyPqSftD6MDtNqL69o8+y+FIkeW
pvKl6oqJ7gtHBQA7
}

image create photo flag_nep -data {
R0lGODlhGAAMAPIAA////ztao74AJ2YAM////wAAAAAAAAAAACH5BAEAAAQALAAAAAAYAAwAQAM7
GEHc/pAEIYAFNK/YJrZVRg1bNIkkx50ipbxwybBg28qzkKo82+48CeWCsWkgtKIrmKtcjMBHbErF
JQAAOw==
}

image create photo flag_ngr -data {
R0lGODlhGAAMAPAAA////yOeRiwAAAAAGAAMAEACIIxvoKvoHxiDNMpW38UZbdA5X+ht5DGe1qWu
UpuesVMAADs=
}

image create photo flag_nir -data {
R0lGODlhGAAMAJH/AP/////OMb4AJwAAACwAAAAAGAAMAEACJoSPIJvtJ9SbKFiKRYhz+c9EIJgx
WGeezcaiY2q88pfMJac2HlUAADs=
}

image create photo flag_nor -data {
R0lGODlhGAAMAJH/AP///74AJztaowAAACwAAAAAGAAMAEACKowfIALo7xSDD9hrF94bykYhy0iW
Julp4ZqoLPW9wUnXXMbcXDrJlcsqAAA7
}

image create photo flag_nzl -data {
R0lGODlhGAAMAPEAA////ztao74AJwAAACwAAAAAGAAMAEACJlQeAmjoD6N8wKhQZ3q3L9ho4jiG
zpV8qCi07mtqWXrMG4nn+v4UADs=
}

image create photo flag_omn -data {
R0lGODlhGAAMAPEAA/////9mM74AJyOeRiwAAAAAGAAMAEACJpQvoMuteIactEqIsw4gGAcy2kgi
1kkdgBqGX/K1YEnXNoTmWY4WADs=
}

image create photo flag_pak -data {
R0lGODlhGAAMAPAAA////yOeRiwAAAAAGAAMAEACKIQfqct6yMwC8dE5ZX4t3O5ZEbhBZGd9Z8WN
TpO6L2smGhnDbXmvSwEAOw==
}

image create photo flag_pan -data {
R0lGODlhGAAMAJH/AP///74AJztaowAAACwAAAAAGAAMAEACK4SPFsu9AqOECYSKRHX85t0106hh
GSlt5ho2Z3m0zBrLAZrSAB4l88Gj6AoAOw==
}

image create photo flag_par -data {
R0lGODlhGAAMAJH/AP///74AJztaowAAACwAAAAAGAAMAEACI4yPqSftD6MDtNqL69o86xZ4lESW
3ImmikgZ7Au4bEnXdlQAADs=
}

image create photo flag_per -data {
R0lGODlhGAAMAKL/AP//////AL4AJ2b//wCZAABmAAAAAAAAACwAAAAAGAAMAEADMCi6Cv6OySkc
sZFqcEvhgLY53iNSYFBd5wRBrfSa8ULeYd18Q5frgM/uV5tlgEZNAgA7
}

image create photo flag_phi -data {
R0lGODlhGAAMAPEAA/////f0CTtao74AJywAAAAAGAAMAEACK5SPqQftA6Oc0bmFWQC5mxaEwAZQ
JjSW51p5rsW5ikM2MgNaLAXvp+pbFQAAOw==
}

image create photo flag_png -data {
R0lGODlhGAAMAJH/AP////f0Cb4AJwAAACwAAAAAGAAMAEACM5SPqTftD8cSsaUgAtbozbMpFbRg
jAOMVSd9hpkl0aTV8pM6iglTQ94A6kA3nMpSPKoMBQA7
}

image create photo flag_pol -data {
R0lGODlhGAAMAPAAA////74AJywAAAAAGAAMAEACGYSPqRftD6NbtNrLpN68NwyG4mh45ommTQEA
Ow==
}

image create photo flag_por -data {
R0lGODlhGAAMAKL/AP////TkZL4AJztaoyOeRgAAAAAAAAAAACwAAAAAGAAMAEADM0i6K/4wshVq
vG8GAQYQGwZNShWKI7N134mSDSrBhDxTkSuq2+CDuovmZLHRarYMLflIAAA7
}

image create photo flag_prk -data {
R0lGODlhGAAMAJH/AP///74AJztaowAAACwAAAAAGAAMAEACJpSPqRftAJ2c9AVQM9y8ez5FUTYt
5ommDMmSWPO2FEbL8IfjqloAADs=
}

image create photo flag_pur -data {
R0lGODlhGAAMAJH/AP///74AJztaowAAACwAAAAAGAAMAEACJoyPqSftAKOc0T2KpVtciWp1XiOW
QolaX8YCjRuizKe2lCp7eVcAADs=
}

image create photo flag_qat -data {
R0lGODlhGAAMAPAAA////4AAJiwAAAAAGAAMAEACH4QPocuteJxk0Mxb05V58+o5mRY+XWmCaDCu
7Im2awEAOw==
}

image create photo flag_que -data {
R0lGODlhGAAMAPAAA////ztaoywAAAAAGAAMAEACJ4yPAZCdjNZzVMEa5dFmXeuF4hhOmUl9Fuqo
XPeQsoyt9fbmb703BQA7
}

image create photo flag_rom -data {
R0lGODlhGAAMAPEAA/f0Cb4AJztaowAAACwAAAAAGAAMAEACJ5RvoKvh7xBiDEJ56LIPJw1wkQeG
oieUYoCqJwmubfxiLjdrMqyLBQA7
}

image create photo flag_rsa -data {
R0lGODlhGAAMAKL/AP////f0Cb4AJztaoyOeRgAAAAAAAAAAACwAAAAAGAAMAEADPEhKAPIwSlhq
CGu1wbsfVXFlWmOeDUYyzuSG8LjOhJptX96tjesLItut9QPGhDQSLMhDoZgknM4TBUyvCQA7
}

image create photo flag_rus -data {
R0lGODlhGAAMAJH/AP///74AJztaowAAACwAAAAAGAAMAEACHoSPqRftD6MTtNqL69o8+y+FIkeW
pvKl6oqJ7gtHBQA7
}

image create photo flag_sau -data {
R0lGODlhGAAMAPAAA////yOeRiwAAAAAGAAMAEACHYyPqXvgDwFDMtqJs968+yUFj1g5mUmG0Mee
bVYAADs=
}

image create photo flag_sco -data {
R0lGODlhGAAMAPAAA////ztaoywAAAAAGAAMAEACKISDqZsG6xyKhzU6MdQ20Nd5nPWFYnRWZiax
rVKGH7q6cXdfdArWVAEAOw==
}

image create photo flag_sen -data {
R0lGODlhGAAMAPEAA/f0CSOeRr4AJwAAACwAAAAAGAAMAEACK4xvoKvi7xBiDEJ5Vmo24kAtnYdp
INd9ZzgKaohaL9zOE1B/MD7ObK+jjQoAOw==
}

image create photo flag_sey -data {
R0lGODlhGAAMAKL/AP////f0Cb4AJztaoyOeRgAAAAAAAAAAACwAAAAAGAAMAEADOzi6Gv5OyClb
pBLozQFhAxRg5ASG4liaC7RmXUh1RG3f9omKr3CmvUrLFdwMVaUOx4JRanA11RNKxSUAADs=
}

image create photo flag_sin -data {
R0lGODlhGAAMAPAAA////74AJywAAAAAGAAMAEACIYyPqQftD6MLgK2LqtF4yQ+G4kRx3aVV5pmt
LDPG8kwDBQA7
}

image create photo flag_sle -data {
R0lGODlhGAAMAJH/AP///5qw2WWwcAAAACwAAAAAGAAMAEACHpSPqRftD6MDtNqL69o8+y+FIkeW
pvKl6oqJ7gtHBQA7
}

image create photo flag_slo -data {
R0lGODlhGAAMAJH/AP///74AJztaowAAACwAAAAAGAAMAEACJISPqRftD6MTVJyKc0bWrg9o4lhJ
5slR4Idd5KvC4knX9o07BQA7
}

image create photo flag_smr -data {
R0lGODlhGAAMAKL/AP///+SzV74AJ5qw2SOeRgAAAAAAAAAAACwAAAAAGAAMAEADJgi63L4jyjkA
AZS+RYK/Wyg22dSdZaqqY+sK7tYBAfisA4rvfF8mADs=
}

image create photo flag_srb -data {
R0lGODlhGAAMAPEAA////++5Se4cIwBKjSwAAAAAGAAMAAACK5SPqQvSvSIKVNprhx6u7w+Gw+OI
5gek6cmSAAuqTQAEjozn8qH3/g8M6goAOw==
}

image create photo flag_sri -data {
R0lGODlhGAAMAPEAA/f0CeSzVyOeRoAAJiwAAAAAGAAMAEACPoSPqSgdD4aUZtRIQRMvYJtRk6U5
EBgdYVpy57R8xtZ94w23Nc5n9IsKjmYmD4yUyP2MIhBpqDvZeKyYVVEAADs=
}

image create photo flag_sud -data {
R0lGODlhGAAMAJH/AP///74AJyOeRgAAACwAAAAAGAAMAEACKoyPqSftA6Oc0TmAs97Zra9YIkdi
D4WiAsgiYvuJV0nKDV1b6Q4J/A8pAAA7
}

image create photo flag_sui -data {
R0lGODlhGAAMAPAAA////74AJywAAAAAGAAMAEACHYyPqavgwOKbL7JpF6W51a59YIKNxlZ2qDim
5lsAADs=
}

image create photo flag_sun -data {
R0lGODlhGAAMAPAAA/f0Cb4AJywAAAAAGAAMAEACGoyPqcuNECB0dFIG5N082e4ZHyiSx2imKlMA
ADs=
}

# sur is also URS (Soviet Union)
image create photo flag_sur -data {
R0lGODlhGAAMAPEAA/////f0CSOeRr4AJywAAAAAGAAMAEACI5SPqTftD6OcYTqAs948W1d9y0iW
JvOlasCyKjWEU0fX51kAADs=
}

image create photo flag_urs -data {
R0lGODlhGAAMAPEAA/////f0CSOeRr4AJywAAAAAGAAMAEACI5SPqTftD6OcYTqAs948W1d9y0iW
JvOlasCyKjWEU0fX51kAADs=
}

image create photo flag_svk -data {
R0lGODlhGAAMAJH/AP///74AJztaowAAACwAAAAAGAAMAEACJ4SPqRftAp2cD0Zms4arex1g20iV
puOlaQOwqgGGzUhvQE2e+s5PBQA7
}

image create photo flag_swe -data {
R0lGODlhGAAMAPAAA+zRHDtppCwAAAAAGAAMAEACIIwfoMjdCpyDtFo7l2S3+xxtYqKNEmQa3lqB
6Vm+CJoWADs=
}

image create photo flag_syr -data {
R0lGODlhGAAMAJH/AP///74AJyOeRgAAACwAAAAAGAAMAEACJIyPqTftD6MDtNqL69oci++Bl0SW
3ImmSiZkQOtesJeV9o1HBQA7
}

image create photo flag_tcd -data {
R0lGODlhGAAMAPEAA/f0Cb4AJztaowAAACwAAAAAGAAMAEACJ5RvoKvh7xBiDEJ56LIPJw1wkQeG
oieUYoCqJwmubfxiLjdrMqyLBQA7
}

image create photo flag_tha -data {
R0lGODlhGAAMAJH/AP///74AJztaowAAACwAAAAAGAAMAEACH4yPqQftD6MTtNqLq9w8+7+E4kgy
3Pl86spi6AuUZQEAOw==
}

image create photo flag_tjk -data {
R0lGODlhGAAMAPEAA////+SzVyOeRr4AJywAAAAAGAAMAEACJ5yPqQftHmJ8tL4AMLZt+c9BoSOU
5omm5scm4/tuMkzNWajm+s6bBQA7
}

image create photo flag_tkm -data {
R0lGODlhGAAMAPIAA////7mYd4phX85EOYwzLq0EJ19rMSOeRiwAAAAAGAAMAEADNHgnNvowykOK
mziSrcDzGSQwXxdChfWB5zMGbZZeINsW1WHbIWEUEV7IQIlhYBdjZJBTPhIAOw==
}

image create photo flag_tri -data {
R0lGODlhGAAMAJH/AP///74AJwAAAAAAACwAAAAAGAAMAEACKIQuEMvtDwMwSMU1UbouVw5i1GGF
l0c2Y1Kaqja5zxrLb9XadC7vQQEAOw==
}

image create photo flag_tun -data {
R0lGODlhGAAMAPAAA////74AJywAAAAAGAAMAEACHYyPqavgwGJw5kG5LM5X7w+GEjVdIYWaIEmK
7osUADs=
}

image create photo flag_tur -data {
R0lGODlhGAAMAPAAA////74AJywAAAAAGAAMAEACGYyPqYsADJt5sVpIT768e+V8WrJxVCmmaQEA
Ow==
}

image create photo flag_twn -data {
R0lGODlhGAAMAJH/AP///74AJztaowAAACwAAAAAGAAMAEACH5SPFsvtD2MCIMWGKEW3+w86U8V5
mVZ2ySqE7gvHTQEAOw==
}

image create photo flag_uae -data {
R0lGODlhGAAMAJH/AP///74AJyOeRgAAACwAAAAAGAAMAEACJ4wvqct6N6KcVD4Dst5c39CEzNeV
3Fel1Ce2AuuGpEnPdImqeq6nBQA7
}

image create photo flag_uga -data {
R0lGODlhGAAMAKL/AP////f0CcDAwL4AJwAAAAAAAAAAAAAAACwAAAAAGAAMAEADKki63L4hykmr
HDhrwLXHVig+CicMAKl8bJupcCPOlMsRnQt3Me0HrqAnAQA7
}

image create photo flag_ukr -data {
R0lGODlhGAAMAPAAA43E7/f0CSwAAAAAGAAMAEACGYSPqRftD6NbtNrLpN68NwyG4mh45ommTQEA
Ow==
}

image create photo flag_uru -data {
R0lGODlhGAAMAJH/AP////f0CZqw2QAAACwAAAAAGAAMAEACH4SPqcutEY6YtFphIHS8twuG1LEZ
Iphp3sqe7sjGcQEAOw==
}

image create photo flag_usa -data {
R0lGODlhGAAMAJH/AP///74AJztaowAAACwAAAAAGAAMAEACJpR/ocvtDxea0U1U2025eyUA4SgC
5ommRjmG6XuSMkzX9o3n+lkAADs=
}

image create photo flag_uzb -data {
R0lGODlhGAAMAPEAA////5qw2SOeRr4AJywAAAAAGAAMAEACKkwApss9D6OctFp4mt4H+Q+GnkCW
5omW2ZIkXINk7cuK9o3nSMr3/l8qAAA7
}

image create photo flag_ven -data {
R0lGODlhGAAMAKL/AP////f0Cb4AJztaoxp2NAAA/wAAAAAAACwAAAAAGAAMAEADLRi63L4iykmr
HDjrAfjeAVEUxGMyX6pmVuuGAlGedBDV59pp+7r1vJRrSCxWEgA7
}

image create photo flag_vie -data {
R0lGODlhGAAMAPAAA/f0Cb4AJywAAAAAGAAMAEACGoyPqYuQzhiYFMZoL566+w8+oUKNB8eZ6loA
ADs=
}

image create photo flag_wal -data {
R0lGODlhGAAMAKL/AP///74AJ4CAgCOeRgAAAAAAAAAAAAAAACwAAAAAGAAMAEADRgi63L4jjjCD
tYSSbOVYARgq1wVYTxhwzThCEVUKhDCvlBdxxH75Hc+D9BqmSiITqUVElVAnhmRmu9iquuylB8xx
s+BwNgEAOw==
}

image create photo flag_yem -data {
R0lGODlhGAAMAJH/AP///74AJwAAAAAAACwAAAAAGAAMAEACHoyPqSftD6MDtNqL69o8+y+FIkeW
pvKl6oqJ7gtHBQA7
}

image create photo flag_yug -data {
R0lGODlhGAAMAJH/AP///74AJztaowAAACwAAAAAGAAMAEACHpSPqRftD6MDtNqL69o8+y+FIkeW
pvKl6oqJ7gtHBQA7
}

image create photo flag_zam -data {
R0lGODlhGAAMAKL/AP///+SzV74AJ2YzACOeRgAAAAAAAAAAACwAAAAAGAAMAEADLUi63P5wiVlq
uDHrPMbtWzMJVXEFoTKWZ9oNBBzL6eLVzGphqW7yIV+rR9kFEgA7
}

image create photo flag_zim -data {
R0lGODlhGAAMAKL/AP////f0Cb4AJyOeRgAAAAAAAAAAAAAAACwAAAAAGAAMAEADNzi63L4gRiKq
vdiCIGb+2BSMZGmemxBIAOG+cEyIZ10Tdo5KFOhfnIls+AJ0Op5fiKfLER5QaAIAOw==
}

namespace eval ::utils::date {}

# ::utils::date::today:
#   Returns todays date, in "yyyy.mm.dd" format.
#   The optional parameter "year", "month" or "day" can be used to
#   limit the returned value to just the year, month or day.
#
proc ::utils::date::today {{type all}} {
  set timeNow [clock seconds]
  set year [clock format $timeNow -format "%Y"]
  set month [clock format $timeNow -format "%m"]
  set day [clock format $timeNow -format "%d"]
  switch -- $type {
    "all"   { return [format "%s.%s.%s" $year $month $day] }
    "year"  { return $year }
    "month" { return $month }
    "day"   { return $day }
    default { error "Unrecognised parameter: $type" }
  }
}

image create photo ::utils::date::calendar -data {
R0lGODdhFgAUAMIAANnZ2VFR+wAAAP////oTQP//AAAAAAAAACwAAAAAFgAUAAADTwi63A4h
yklrVAFruDO0lCCO5NMIw4CqqWAya9ySdG3LbI7He+vrsxthSLiJfitCoUBAzpwDJRNqFBCL
RqpW1QN6q+DRdrfomsvh2mvtSAAAOw==
}

# ::utils::date::chooser
#
#   Produce a date-selection dialog box.
#   Originally based on code from Effective Tcl/Tk Programming by
#   Mark Harrison, but with lots of changes and improvements.
#
proc ::utils::date::chooser {{date "now"}} {
  set time [clock seconds]
  if {$date != "now"} {
    catch {set time [clock scan $date]}
  }
  set ::utils::date::_time $time
  set ::utils::date::_selected [clock format $time -format "%Y-%m-%d"]

  set win .dateChooser
  toplevel $win
  canvas $win.cal -width 300 -height 220
  pack [frame $win.b] -side bottom -fill x
  button $win.b.ok -text "OK" -command "destroy $win"
  button $win.b.cancel -text $::tr(Cancel) -command "
    set ::utils::date::_selected {}
    destroy $win"
  pack $win.b.cancel $win.b.ok -side right -padx 5 -pady 5
  pack $win.cal -side top -expand yes -fill both

  button $win.cal.prevY -image tb_start -command "::utils::date::_month $win -12"
  button $win.cal.prev -image tb_prev -command "::utils::date::_month $win -1"
  button $win.cal.next -image tb_next -command "::utils::date::_month $win +1"
  button $win.cal.nextY -image tb_end -command "::utils::date::_month $win +12"
  bind $win.cal <Configure> "::utils::date::_redraw $win"
  bind $win.cal <Double-Button-1> "destroy $win"
  bind $win <Escape> "$win.b.cancel invoke"
  bind $win <Return> "$win.b.ok invoke"
  bind $win <Prior> "$win.cal.prev invoke"
  bind $win <Next> "$win.cal.next invoke"
  bind $win <Shift-Prior> "$win.cal.prevY invoke"
  bind $win <Shift-Next> "$win.cal.nextY invoke"
  bind $win <Up> "::utils::date::_day $win -7"
  bind $win <Down> "::utils::date::_day $win +7"
  bind $win <Left> "::utils::date::_day $win -1"
  bind $win <Right> "::utils::date::_day $win +1"

  wm minsize $win 250 200
  wm title $win "Scid: Choose Date"
  focus $win
  grab $win
  tkwait window $win
  if {$::utils::date::_selected == ""} { return {} }
  set time [clock scan $::utils::date::_selected]
  return [list \
          [clock format $time -format "%Y"] \
          [clock format $time -format "%m"] \
          [clock format $time -format "%d"] \
         ]
}

proc ::utils::date::_day {win delta} {
  set unit "day"
  if {$delta < 0} {set unit "day ago"}
  set time [clock scan "[expr abs($delta)] $unit" -base $::utils::date::_time]
  set day [string trimleft [clock format $time -format "%d"] 0]
  set month [string trimleft [clock format $time -format "%m"] 0]
  set year [clock format $time -format "%Y"]
  ::utils::date::_select $win "$year-$month-$day"
}

proc ::utils::date::_month {win delta} {
  set dir [expr {($delta > 0) ? 1 : -1} ]
  set day [string trimleft [clock format $::utils::date::_time -format "%d"] 0]
  set month [string trimleft [clock format $::utils::date::_time -format "%m"] 0]
  set year [clock format $::utils::date::_time -format "%Y"]

  for {set i 0} {$i < abs($delta)} {incr i} {
    incr month $dir
    if {$month < 1} {
      set month 12
      incr year -1
    } elseif {$month > 12} {
      set month 1
      incr year 1
    }
  }
  if {[catch {::date::_select $win "$year-$month-$day"}]} {
    ::utils::date::_select $win "$year-$month-28"
  }
}

proc ::utils::date::_redraw {win} {
  $win.cal delete all
  set time $::utils::date::_time
  set wmax [winfo width $win.cal]
  set hmax [winfo height $win.cal]

  $win.cal create window 3 3 -anchor nw -window $win.cal.prevY
  $win.cal create window 40 3 -anchor nw -window $win.cal.prev
  $win.cal create window [expr {$wmax-43} ] 3 -anchor ne -window $win.cal.next
  $win.cal create window [expr {$wmax-3} ] 3 -anchor ne -window $win.cal.nextY
  set bottom [lindex [$win.cal bbox all] 3]

  set month [string trimleft [clock format $time -format "%m"] 0]
  set year [clock format $time -format "%Y"]
  $win.cal create text [expr {$wmax/2} ] $bottom -anchor s -font font_Bold \
    -text "[lindex $::tr(Months) [expr $month - 1]] $year"

  incr bottom 3
  $win.cal create line 0 $bottom $wmax $bottom -width 2
  incr bottom 25

  set current ""

  set layout [::utils::date::_layout $time]
  set weeks [expr {[lindex $layout end]+1} ]

  for {set day 0} {$day < 7} {incr day} {
    set x0 [expr {$day*($wmax-7)/7+3} ]
    set x1 [expr {($day+1)*($wmax-7)/7+3} ]
    $win.cal create text [expr {($x1+$x0)/2} ] $bottom -anchor s \
      -text [lindex $::tr(Days) $day] -font font_Small
  }
  incr bottom 3

  foreach {day date dcol wrow} $layout {
    set x0 [expr {$dcol*($wmax-7)/7+3} ]
    set y0 [expr {$wrow*($hmax-$bottom-4)/$weeks+$bottom} ]
    set x1 [expr {($dcol+1)*($wmax-7)/7+3} ]
    set y1 [expr {($wrow+1)*($hmax-$bottom-4)/$weeks+$bottom} ]

    if {$date == $::utils::date::_selected} {set current $date}

    $win.cal create rectangle $x0 $y0 $x1 $y1 -outline black -fill white

    $win.cal create text [expr {$x0+4} ] [expr {$y0+2} ] -anchor nw -text "$day" \
      -fill black -font font_Small -tags [list $date-text all-text]

    $win.cal create rectangle $x0 $y0 $x1 $y1 \
      -outline "" -fill "" -tags [list $date-sensor all-sensor]

    $win.cal bind $date-sensor <ButtonPress-1> "::utils::date::_select $win $date"
  }

  if {$current != ""} {
    $win.cal itemconfigure $current-sensor -outline red -width 3
    $win.cal raise $current-sensor
  } elseif {$::utils::date::_selected == ""} {
    set date [clock format $time -format "%Y-%m-%d"]
    ::utils::date::_select $win $date
  }
}

proc ::utils::date::_layout {time} {
  set month [string trimleft [clock format $time -format "%m"] 0]
  set year  [clock format $time -format "%Y"]

  foreach lastday {31 30 29 28} {
    if {[catch {clock scan "$year-$month-$lastday"}] == 0} { break }
  }
  set seconds [clock scan "$year-$month-1"]
  set firstday [clock format $seconds -format %w]
  set weeks [expr {ceil(double($lastday+$firstday)/7)} ]

  set rlist ""
  for {set day 1} {$day <= $lastday} {incr day} {
    set seconds [clock scan "$year-$month-$day"]
    set date [clock format $seconds -format "%Y-%m-%d"]
    set daycol [clock format $seconds -format %w]
    set weekrow [expr {($firstday+$day-1)/7} ]
    lappend rlist $day $date $daycol $weekrow
  }
  return $rlist
}

proc ::utils::date::_select {win date} {
  set time [clock scan $date]
  set date [clock format $time -format "%Y-%m-%d"]

  set currentMonth [clock format $::utils::date::_time -format "%m %Y"]
  set selectedMonth [clock format $time -format "%m %Y"]
  set ::utils::date::_time $time
  set ::utils::date::_selected $date

  if {$currentMonth == $selectedMonth} {
    $win.cal itemconfigure all-sensor -outline "" -width 1
    $win.cal itemconfigure $date-sensor -outline red -width 3
    $win.cal raise $date-sensor
  } else {
    ::utils::date::_redraw $win
  }
}
########################################
### utils/font.tcl: part of Scid.
#
# The following procs implement a font selection dialog. I found the code
# at codearchive.com (I dont think there was an author listed for it) and
# simplified it for use with Scid.

# FontDialog:
#   Creates a font dialog to select a font.
#   Returns 1 if user chose a font, 0 otherwise.
#
proc FontDialog {font_name {options ""} {fixedOnly 0}} {
  global fd_family fd_style fd_size fd_close
  global fd_strikeout fd_underline

  set fd_family {}; set fd_style {}; set fd_size {}
  set fd_close  -1

  set unsorted_fam [font families]
  set families [lsort $unsorted_fam]
  if {$fixedOnly} {
    set fams $families
    set families {}
    foreach f $fams {
      if {[font metrics [list $f] -fixed] == 1} { lappend families $f }
    }
  }

  # Get current font's family and so on.
  if {[llength $options] == 4} {
    # Use provided font settings:
    set family [lindex $options 0]
    set size [lindex $options 1]
    set weight [lindex $options 2]
    set slant [lindex $options 3]
  } else {
    # Get options using [font actual]:
    set family [font actual $font_name -family]
    set size   [font actual $font_name -size]
    set weight    [font actual $font_name -weight]
    set slant     [font actual $font_name -slant]
  }

  # Default style.
  set fd_style "Regular"
  if { $slant == "italic" } {
    if { $weight == "bold" } {
      set fd_style "Bold Italic"
    } else {
      set fd_style "Italic"
    }
  } else {
    if { $weight == "bold" } {
      set fd_style "Bold"
    }
  }

  set fd_family $family
  set fd_size   $size

  # Create font dialog.
  set tl .fontdialog
  toplevel $tl
  set dlg $tl.f
  pack [ttk::frame $tl.f] -expand 1 -fill both
  wm protocol $tl WM_DELETE_WINDOW "set fd_close 0"
  wm title $tl Font

  ttk::label $dlg.family_lbl -text "Font:" -anchor w
  ttk::entry $dlg.family_ent -textvariable fd_family -background white
  bind  $dlg.family_ent <Key-Return> "FontDialogRegen $font_name"
  grid config $dlg.family_lbl -column 0 -row 0 -sticky w
  grid config $dlg.family_ent -column 0 -row 1 -sticky snew

  ttk::label $dlg.style_lbl  -text "Font Style:" -anchor w
  ttk::entry $dlg.style_ent  -textvariable fd_style -width 11 -background white
  bind  $dlg.style_ent  <Key-Return>  "FontDialogRegen $font_name"
  grid config $dlg.style_lbl  -column 1 -row 0 -sticky w
  grid config $dlg.style_ent  -column 1 -row 1 -sticky snew

  ttk::label $dlg.size_lbl   -text "Size:" -anchor w
  ttk::entry $dlg.size_ent   -textvariable fd_size -width 4 -background white
  bind  $dlg.size_ent   <Key-Return> "FontDialogRegen $font_name"
  grid config $dlg.size_lbl   -column 2 -row 0 -sticky w
  grid config $dlg.size_ent   -column 2 -row 1 -sticky snew

  # Font family listbox.
  set fr $dlg.family_list
  ttk::frame $fr
  listbox $fr.list -height 6 -selectmode single -width 30 -background white -yscrollcommand "$fr.scroll set"
  ttk::scrollbar $fr.scroll -command "$fr.list yview"

  foreach f $families {
    $fr.list insert end $f
  }

  bind $fr.list <Double-Button-1> "FontDialogFamily $fr.list $font_name $dlg.family_ent"

  pack $fr.scroll -side right -fill y
  pack $fr.list -side left
  grid config $fr -column 0 -row 2 -rowspan 16

  # Font style listbox.
  set fr $dlg.style_list
  ttk::frame $fr
  listbox $fr.list -height 6 -selectmode single -width 11 -background white -yscrollcommand "$fr.scroll set"
  ttk::scrollbar $fr.scroll -command "$fr.list yview"

  $fr.list insert end "Regular"
  $fr.list insert end "Bold"
  $fr.list insert end "Italic"
  $fr.list insert end "Bold Italic"

  bind $fr.list <Double-Button-1> "FontDialogStyle $fr.list $font_name $dlg.style_ent"

  pack $fr.scroll -side right -fill y
  pack $fr.list -side left
  grid config $fr -column 1 -row 2 -rowspan 16

  # Font size listbox.
  set fr $dlg.size_list
  ttk::frame $fr
  listbox $fr.list -height 6 -selectmode single -width 4 -background white -yscrollcommand "$fr.scroll set"
  ttk::scrollbar $fr.scroll -command "$fr.list yview"

  for {set i 7} {$i <= 20} {incr i} {
    $fr.list insert end $i
  }

  bind $fr.list <Double-Button-1> "FontDialogSize $fr.list $font_name $dlg.size_ent"

  pack $fr.scroll -side right -fill y
  pack $fr.list -side left
  grid config $fr -column 2 -row 2 -rowspan 16

  # OK/Cancel
  set fr $dlg.ok_cancel
  ttk::frame $fr

  ttk::button $fr.ok -text "OK" -command "set fd_close 1"
  ttk::button $fr.cancel  -text "Cancel" -command "set fd_close 0"
  pack $fr.ok -side top -fill x
  pack $fr.cancel -side top -fill x -pady 2
  ttk::button $fr.help -text "Help" -command "helpWindow Options"
  pack $fr.help -side top -fill x -pady 10
  grid config $fr -column 4 -row 1 -rowspan 2 -sticky snew -padx 12

  # Sample text
  set fr $dlg.sample
  ttk::frame $fr -borderwidth 3 -relief groove
  ttk::label $fr.l_sample -text "Sample" -anchor w

  ttk::label $fr.sample -font $font_name -relief sunken -text "This is some sample text\nAaBbCcDdEeFfGgHhIiJjKkLlMm\n 0123456789. +=-"

  pack  $fr.l_sample -side top -fill x -pady 4
  pack  $fr.sample -side top -pady 4 -ipadx 10 -ipady 10

  grid config $fr -column 0 -columnspan 3 -row 20 -rowspan 2 -sticky snew -pady 10 -padx 2

  # Make this a modal dialog.
  tkwait variable fd_close

  # Get rid of dialog and return value.
  destroy $tl

  # Restore old font characteristics on a cancel:
  if { $fd_close == 0 } {
    font configure $font_name -family $family -size $size -slant $slant -weight $weight
    return ""
  }

  return [list $fd_family $fd_size [FontWeight $fd_style] [FontSlant $fd_style]]
}


proc FontDialogFamily { listname font_name entrywidget } {
  # Get selected text from list.
  catch {
    set item_num [$listname curselection]
    set item [$listname get $item_num]

    # Set selected list item into entry for font family.
    $entrywidget delete 0 end
    $entrywidget insert end $item

    # Use this family in the font and regenerate font.
    FontDialogRegen $font_name
  }
}


proc FontDialogStyle { listname font_name entrywidget } {
  # Get selected text from list.
  catch {
    set item_num [$listname curselection]
    set item [$listname get $item_num]

    # Set selected list item into entry for font family.
    $entrywidget delete 0 end
    $entrywidget insert end $item

    # Use this family in the font and regenerate font.
    FontDialogRegen $font_name
  }
}


proc FontDialogSize { listname font_name entrywidget } {
  # Get selected text from list.
  catch {
    set item_num [$listname curselection]
    set item [$listname get $item_num]

    # Set selected list item into entry for font family.
    $entrywidget delete 0 end
    $entrywidget insert end $item

    # Use this family in the font and regenerate font.
    FontDialogRegen $font_name
  }
}

proc FontWeight {style} {
  if { $style == "Bold Italic" || $style == "Bold" } {
    return "bold"
  }
  return "normal"
}

proc FontSlant {style} {
  if { $style == "Bold Italic" || $style == "Italic" } {
    return "italic"
  }
  return "roman"
}

# FontDialogRegen: Regenerates font from attributes.
proc FontDialogRegen { font_name } {
  global fd_family fd_style fd_size

  set weight "normal"
  if { $fd_style == "Bold Italic" || $fd_style == "Bold" } {
    set weight "bold"
  }

  set slant "roman"
  if { $fd_style == "Bold Italic" || $fd_style == "Italic" } {
    set slant "italic"
  }

  # Change font to have new characteristics.
  font configure $font_name -family $fd_family -size $fd_size -slant $slant -weight $weight
}

## End of file: fontsel.tcl
# utils/graph.tcl: Graph plotting package for Scid.
#

namespace eval ::utils::graph {}

# Configuration options, specific to each graph:
#
#  -width:     width of graph in canvas units.
#  -height:    height of graph in canvas units.
#  -xtop:      x-coord of top-left graph corner in canvas.
#  -ytop:      y-coord of top-left graph corner in canvas.
#  -background: background color in graph.
#  -font:      font of axis text.
#  -textcolor: color of axis text.
#  -ticksize:  length of ticks on axes, in canvas units.
#  -tickcolor: color to draw x-axis and y-axis ticks.
#  -textgap:   distance from graph border to text, in canvas units.
#  -xtick:     distance between x-axis ticks, in graph units.
#  -ytick:     distance between y-axis ticks, in graph units.
#  -xlabels, -ylabels: lists of {value,label} pairs to print on each axis.
#              If a list has no pairs, values are printed at each tick.
#  -xmin, -xmax, -ymin, -ymax:  miminum/maximum graph units to plot.
#  -canvas:    canvas to plot the graph in.
#  -vline, -hline: list of vertical/horizontal lines to plot. Each
#              element is a list of four items: {color width type value}
#              where color is the line color, width is its width in
#              pixels, type is "each" or "at", and value is the value.
#  -brect: list of background rectangles. Each element is a list of 5 items:
#              the graph coordinates of a rectangle, and its color.
#
set ::utils::graph::_options(graph) {
  width height xtop ytop background font ticksize textgap xtick ytick
  xmin xmax ymin ymax canvas vline hline textcolor tickcolor
  xlabels ylabels brect
}
set ::utils::graph::_defaults(graph) \
  { -width 400 -height 300 -xtop 50 -ytop 30 -ticksize 5 -textgap 2 \
    -xtick 5 -ytick 5 -tickcolor black -font fixed -background white \
      -canvas {} -hline {} -vline {} -textcolor black \
      -xlabels {} -ylabels {} -brect {} }

# Data options, specific to each data set within a graph:
#
#   -points:  1 to display data points.
#   -lines:   1 to display data line.
#   -bars:    1 to display vertical bars.
#   -color:   color to display points, lines and bars in.
#   -outline: color for outline of bars or points. Not used for lines.
#   -radius:  radius of points in canvas units.
#   -linewidth: width of line in canvas units.
#   -barwidth:  width of bars -- in GRAPH units, NOT canvas units.
#   -key:     key name to print by line.
#   -coords:  actual data to plot; should be a list containing an
#             EVEN number of numeric values.
#
set ::utils::graph::_options(data) {
  points lines bars color outline radius linewidth barwidth coords key
}
set ::utils::graph::_defaults(data) \
  { -points 0 -lines 1 -bars 0 -color red -outline black -radius 2 \
    -linewidth 1 -barwidth 1.0 -key {} -coords {} }

set ::utils::graph::_graphs {}
array set ::utils::graph::_data {}


# create:
#    Create a new graph. Sets up the graph configuration and creates a
#    new proc (in the global namespace) with the same name as the graph.
#
proc ::utils::graph::create args {
  set graph [lindex $args 0]
  lappend ::utils::graph::_graphs $graph
  
  # Remove any existing data for this graph name:
  foreach key [array names ::utils::graph::_data] {
    if {[string match "$graph,*" $key]} { unset ::utils::graph::_data($key) }
  }
  set ::utils::graph::_data($graph,sets) {}

  set args [concat graph $graph $::utils::graph::_defaults(graph) [lrange $args 1 end]]
  set extraArgs [eval "::utils::graph::_configure $args"]
  if {$extraArgs != ""} {
    error "Unrecognised arguments: $extraArgs"
  }
  return $graph
}


# delete:
#    Removes all privately stored information about a graph.
#
proc ::utils::graph::delete {graph} {
  # Remove from the list of available graphs:
  set index [lindex $::utils::graph::_graphs $graph]
  if {$index < 0} { return }
  set ::utils::graph::_graphs [lreplace $::utils::graph::_graphs $index $index]
  # Remove all configuration data for the graph:
  foreach key [array names ::utils::graph::_data] {
    if {[string match "$graph,*" $key]} {
      unset ::utils::graph::_data($key)
    }
  }
}


# isgraph:
#    Returns true if the named graph exists.
#
proc ::utils::graph::isgraph {graph} {
  if {[lsearch $::utils::graph::_graphs $graph] >= 0} { return 1 }
  return 0
}


# data:
#    Adds a new data set to the graph, or modifies an existing one.
#
proc ::utils::graph::data args {
  variable _data
  variable _defaults
  set graph [lindex $args 0]
  set dataset [lindex $args 1]

  set args [concat data $graph,$dataset $_defaults(data) \
              [lrange $args 2 end]]

  set extraArgs [eval "::utils::graph::_configure $args"]
  if {$extraArgs != ""} {
    error "Unrecognised graph data options: $extraArgs"
  }

  set marklist $_data($graph,sets)
  if {[lsearch -exact $marklist $dataset] < 0} {
    lappend _data($graph,sets) $dataset
  }

  set datalength 0
  set ncoords [llength $_data($graph,$dataset,coords)]
  if {$ncoords % 2 != 0} {
    error "Error: coordinates list must have an even length"
  }

  # Redraw graph: do we want to do this here?
  #::utils::graph::redraw $graph
}


# cget:
#    Return a stored attribute of a graph.
#
proc ::utils::graph::cget {graph opt} {
  variable _data
  # Remove initial "-" if necessary:
  if {[string index $opt 0] == "-"} { set opt [string range $opt 1 end] }

  # If asking for axmin/axmax/aymin/aymax, set ranges first:
  if {[string match "a?m??" $opt]} { ::utils::graph::set_range $graph }

  if {! [info exists _data($graph,$opt)]} {
    error "No such graph option: $opt"
  }
  return $_data($graph,$opt)
}

# configure:
#    Modify stored attributes for a graph.
#
proc ::utils::graph::configure args {
  set newargs [concat "graph" [lindex $args 0] [lrange $args 1 end]]
  eval "::utils::graph::_configure $newargs"
}


# _configure:
#    Handle configuration of both the graph, and individual data sets.
#    The first arg (type) should be "graph" or "data". The second should
#    be a graph name for graph configuration, or a "graph,set" pair
#    for dataset configuration.
#
proc ::utils::graph::_configure args {
  variable _data
  set type [lindex $args 0]
  set dataset [lindex $args 1]
  set args [lrange $args 2 end]

  set optionList $::utils::graph::_options($type)
  set option {}

  if {[llength $args] % 2} { error "Error: odd-length options list: $args" }

  for {set i 0} {$i < [llength $args]} {incr i 2} {
    set option [lindex $args $i]
    if {[string index $option 0] != "-"} { return [lrange $args $i end] }
    set option [string range $option 1 end]
    if {[lsearch $optionList $option] >= 0} {
      set _data($dataset,$option) [lindex $args [expr {$i + 1}]]
    }
  }
}

# redraw:
#    Redraw the entire graph, axes and data.
#
proc ::utils::graph::redraw {graph} {
  if {! [::utils::graph::isgraph $graph]} { error "$graph: no such graph" }
  if {! [info exists ::utils::graph::_data($graph,canvas)]} { return }
  $::utils::graph::_data($graph,canvas) delete -withtag g$graph
  ::utils::graph::plot_axes $graph
  ::utils::graph::plot_data $graph
}

# plot_axes:
#    Replot the graph axes.
#
proc ::utils::graph::plot_axes {graph} {
  variable _data
  # Set ranges and scaling factors:
  ::utils::graph::set_range $graph
  ::utils::graph::rescale $graph

  set xmin $_data($graph,axmin)
  set xmax $_data($graph,axmax)
  set ymin $_data($graph,aymin)
  set ymax $_data($graph,aymax)

  set xminc [xmap $graph $xmin]
  set xmaxc [xmap $graph $xmax]
  set yminc [ymap $graph $ymin]
  set ymaxc [ymap $graph $ymax]
  #Klimmek: additional space for 6.and 7.number
  set fontsize [font configure font_Small -size]
  if { $ymax > 99999 } { set xminc [expr {$xminc + $fontsize}] }
  if { $ymax > 999999 } { set xminc [expr {$xminc + $fontsize}] }

  set canvas $_data($graph,canvas)
  set tag g$graph

  # Extract the graph attributes we will need to use:
  foreach attr {ticksize font textcolor tickcolor textgap \
                  xtick ytick xlabels ylabels} {
    set $attr $_data($graph,$attr)
  }

  $canvas create rectangle $xminc $yminc $xmaxc $ymaxc -outline $tickcolor \
    -fill $_data($graph,background) -tag $tag

  set brect $_data($graph,brect)
  for {set i 0} {$i < [llength $brect]} {incr i} {
    set item [lindex $brect $i]
    set x1 [xmap $graph [lindex $item 0]]
    set y1 [ymap $graph [lindex $item 1]]
    set x2 [xmap $graph [lindex $item 2]]
    set y2 [ymap $graph [lindex $item 3]]
    if {$x1 < $xminc} { set x1 $xminc }
    if {$x1 > $xmaxc} { set x1 $xmaxc }
    if {$x2 < $xminc} { set x2 $xminc }
    if {$x2 > $xmaxc} { set x2 $xmaxc }
    if {$y1 > $yminc} { set y1 $yminc }
    if {$y1 < $ymaxc} { set y1 $ymaxc }
    if {$y2 > $yminc} { set y2 $yminc }
    if {$y2 < $ymaxc} { set y2 $ymaxc }
    $canvas create rectangle $x1 $y1 $x2 $y2 -fill [lindex $item 4] -width 0 \
      -tag $tag
  }

  # Plot vertical guide lines:
  foreach vline $_data($graph,vline) {
    set color [lindex $vline 0]
    set width [lindex $vline 1]
    set type [lindex $vline 2]
    set inc [lindex $vline 3]
    set xminvalue [xmap $graph $xmin]
    set xmaxvalue [xmap $graph $xmax]
    if {$type == "at"} {
      # Plot just one line:
      set xvalue [xmap $graph $inc]
      if {$xvalue != $xminvalue  &&  $xvalue != $xmaxvalue} {
        $canvas create line $xvalue $yminc $xvalue $ymaxc -width $width \
          -fill $color -tag $tag
      }
    } elseif {$inc > 0} {
      # Plot a line at each multiple of "inc" units:
      set x [expr {int($xmin/$inc) * $inc + $inc}]
      while {$x < $xmax} {
        set xvalue [xmap $graph $x]
        if {$xvalue != $xminvalue  &&  $xvalue != $xmaxvalue} {
          $canvas create line $xvalue $yminc $xvalue $ymaxc -width $width \
            -fill $color -tag $tag
        }
        set x [expr {$x + $inc}]
      }
    }
  }

  # Plot horizontal guide lines:
  foreach hline $_data($graph,hline) {
    set color [lindex $hline 0]
    set width [lindex $hline 1]
    set type [lindex $hline 2]
    set inc [lindex $hline 3]
    set yminvalue [ymap $graph $ymin]
    set ymaxvalue [ymap $graph $ymax]
    if {$type == "at"} {
      set yvalue [ymap $graph $inc]
      if {$yvalue != $yminvalue  &&  $yvalue != $ymaxvalue} {
        $canvas create line $xminc $yvalue $xmaxc $yvalue -width $width \
          -fill $color -tag $tag
      }
    } elseif {$inc > 0} {
      set y [expr {int($ymin/$inc) * $inc + $inc}]
      while {$y < $ymax} {
        set yvalue [ymap $graph $y]
        if {$yvalue != $yminvalue  &&  $yvalue != $ymaxvalue} {
          $canvas create line $xminc $yvalue $xmaxc $yvalue -width $width \
            -fill $color -tag $tag
        }
        set y [expr {$y + $inc}]
      }
    }
  }

  # Plot x ticks and y ticks:
  set nxlabels [llength $xlabels]
  set nylabels [llength $ylabels]

  if {$xtick > 0} {
    set x [expr {int($xmin/$xtick) * $xtick}]
    while {$x < $xmin} { set x [expr {$x + $xtick}] }
    while {$x <= $xmax} {
      set xc [xmap $graph $x]
      $canvas create line $xc $yminc $xc [expr {$yminc - $ticksize}] \
        -tag $tag -fill $tickcolor
      $canvas create line $xc $ymaxc $xc [expr {$ymaxc + $ticksize}] \
        -tag $tag -fill $tickcolor
      if {$nxlabels == 0} {
        $canvas create text $xc [expr {$yminc + $textgap}] -font $font \
          -text [::utils::graph::round $x] -anchor n -tag $tag -fill $textcolor
      }
      set x [expr {$x + $xtick}]
    }
  }
  for {set i 0} {$i < $nxlabels} {incr i} {
    set label [lindex $xlabels $i]
    set x [lindex $label 0]
    set text [lindex $label 1]
    set xc [xmap $graph $x]
    $canvas create text $xc [expr {$yminc + $textgap}] -font $font \
      -text $text -anchor n -tag $tag -fill $textcolor -justify center
  }

  if {$ytick > 0} {
    set y [expr {int($ymin/$ytick) * $ytick}]
    while {$y < $ymin} { set y [expr {$y + $ytick}] }
    while {$y <= $ymax} {
      set yc [ymap $graph $y]
      $canvas create line $xminc $yc [expr {$xminc + $ticksize}] $yc \
        -tag $tag -fill $tickcolor
      $canvas create line [expr {$xmaxc - $ticksize}] $yc $xmaxc $yc \
        -tag $tag -fill $tickcolor
      if {$nylabels == 0} {
        $canvas create text [expr {$xminc - $textgap}] $yc -font $font \
          -text [::utils::graph::round $y] -anchor e -tag $tag -fill $textcolor
      }
      set y [expr {$y + $ytick}]
    }
  }
  for {set i 0} {$i < $nylabels} {incr i} {
    set label [lindex $ylabels $i]
    set y [lindex $label 0]
    set text [lindex $label 1]
    set yc [ymap $graph $y]
    $canvas create text [expr {$xminc - $textgap}] $yc -font $font \
      -text $text -anchor e -tag $tag -fill $textcolor
  }
}

# plot_data:
#    Plot the lines/points/bars for each data set in the graph.
#
proc ::utils::graph::plot_data {graph} {
  variable _data
  set canvas $_data($graph,canvas)

  foreach dataset $_data($graph,sets) {
    set color $_data($graph,$dataset,color)
    set outline $_data($graph,$dataset,outline)
    set tag g$graph
    set coords [scale_data $graph $_data($graph,$dataset,coords)]
    set ncoords [expr {[llength $coords] - 1}]

    # Draw key:
    if {$_data($graph,$dataset,key) != ""} {
      set key $_data($graph,$dataset,key)
      if {$ncoords >= 1} {
        set dy 3
        set anchor nw
        set x [expr {[lindex $coords 0] + 3}]
        set y [lindex $coords 1]
        if {$ncoords >= 3} {
          set nexty [lindex $coords 3]
          if {$nexty > $y} { set dy -3; set anchor sw }
        }
        incr y $dy
        catch {$canvas create text $x $y -fill $color -tag $tag \
                 -text $_data($graph,$dataset,key) \
                 -font $_data($graph,font) -anchor $anchor}
      }
    }

    # Plot line:
    if {$_data($graph,$dataset,lines)} {
      # Catch errors drawing line in case the data set contains no data:
      catch {eval "$canvas create line $coords -fill $color \
                   -width $_data($graph,$dataset,linewidth) -tag $tag"}
    }

    # Plot points:
    if {$_data($graph,$dataset,points)} {
      for {set i 0} {$i < $ncoords} {incr i 2} {
        set x [lindex $coords $i]
        set y [lindex $coords [expr {$i + 1}]]
        set p $_data($graph,$dataset,radius)
        $canvas create oval [expr {$x-$p}] [expr {$y-$p}] \
          [expr {$x+$p}] [expr {$y+$p}] \
          -fill $color -outline $outline -width 1 -tag $tag
      }
    }

    # Plot bars:
    if {$_data($graph,$dataset,bars)} {
      set base [ymap $graph $_data($graph,aymin)]
      set hwidth [xmap $graph $_data($graph,$dataset,barwidth)]
      set hwidth [expr {$hwidth - [xmap $graph 0]}]
      set hwidth [expr {$hwidth / 2}]
      if {$hwidth < 1} { set hwidth 1 }

      for {set i 0} {$i < $ncoords} {incr i 2} {
        set x [lindex $coords $i]
        set y [lindex $coords [expr {$i + 1}]]
        $canvas create rectangle \
          [expr {$x-$hwidth}] $y [expr {$x+$hwidth}] $base \
          -fill $color -outline $outline -tag $tag
      }
    }
  }
}


# round
#
#    Returns a value n rounded to the nearest integer if it is
#    within 0.1 of n, or to one decimal place otherwise.
#    Used to print axis values to a sensible precision.
#
proc ::utils::graph::round {n} {
  set intn [expr {int($n)}]
  if {[expr {$n - $intn}] < 0.1  &&  [expr {$intn - $n}] < 0.1} {
    return [expr {round($n)}]
  }
  return [expr {double(round($n * 10.0)) / 10.0}]
}


# point_visible
#
#    Returns true if a point (in graph coordinates) is visible given
#    the current display boundaries.
#
proc ::utils::graph::point_visible {graph x y} {
  variable data
  set xmin $_data($graph,xtop)
  set ymin $_data($graph,ytop)
  set xmax [expr {$xmin + $_data($graph,width)}]
  set ymax [expr {$ymin + $_data($graph,height)}]

  if {$x >= $xmin && $x <= $xmax && $y >= $ymin && $y <= $ymax} { return 1 }
  return 0
}


# rescale:
#    Sets the scaling factors used for mapping graph to canvas coordinates.
#
proc ::utils::graph::rescale {graph} {
  variable _data
  set width $_data($graph,width)
  set height $_data($graph,height)
  set xdelta [expr {double($_data($graph,axmax) - $_data($graph,axmin))}]
  set ydelta [expr {double($_data($graph,aymax) - $_data($graph,aymin))}]
  # Ensure deltas are not zero or too close to it:
  if {$xdelta < 0.0001} { set xdelta 0.0001 }
  if {$ydelta < 0.0001} { set ydelta 0.0001 }

  set _data($graph,xfac) [expr {double($width)/$xdelta}]
  set _data($graph,yfac) [expr {double($height)/$ydelta}]
}


# xmap:
#    Map a graph X coordinate to its canvas unit equivalent.
#
proc ::utils::graph::xmap {graph x} {
  variable _data
  return [expr {int(($x - $_data($graph,axmin)) * \
            $_data($graph,xfac) + $_data($graph,xtop))}]
}

# ymap:
#    Map a graph Y coordinate to its canvas unit equivalent.
#
proc ::utils::graph::ymap {graph y} {
  variable _data
if {$y == ""} { error "y is empty" }
  return [expr {int(($_data($graph,aymax) - $y) * \
            $_data($graph,yfac) + $_data($graph,ytop))}]
}

# Xunmap:
#    Transform a canvas unit to its graph X coordinate equivalent.
#
proc ::utils::graph::xunmap {graph cx} {
  variable _data
  return [expr {$_data($graph,axmin) + \
            double($cx - $_data($graph,xtop)) / \
            double($_data($graph,xfac))}]
}

# Yunmap:
#    Transform a canvas unit to its graph Y coordinate equivalent.
#
proc ::utils::graph::yunmap {graph cy} {
  variable _data
  return [expr {$_data($graph,aymax) - \
            double($cy - $_data($graph,ytop)) / \
            double($_data($graph,yfac))}]
}

# scale_data:
#    Transforms an even-sized list of graph coordinates to canvas units.
#
proc ::utils::graph::scale_data {graph coords} {
  set result {}
  for {set i 0} {$i < [llength $coords] - 1} {incr i 2} {
    lappend result [xmap $graph [lindex $coords $i]]
    lappend result [ymap $graph [lindex $coords [expr {$i + 1}]]]
  }
  return $result
}

# set_range:
#    Sets any range boundaries that are not already set for a graph.
#
proc ::utils::graph::set_range {graph} {
  variable _data

  set xmin 1000000000; set xmax -100000000
  set ymin 1000000000; set ymax -100000000

  foreach dataset $_data($graph,sets) {
    set coords $_data($graph,$dataset,coords)
    for {set i 0} {$i < [llength $coords] - 1} {incr i 2} {
      set x [lindex $coords $i]
      set y [lindex $coords [expr {$i + 1}]]

      if {$x < $xmin} { set xmin $x }
      if {$x > $xmax} { set xmax $x }
      if {$y < $ymin} { set ymin $y }
      if {$y > $ymax} { set ymax $y }
    }
  }

  # Set sane values if no data coordinates exist at all:
  if {$xmax < $xmin} { set xmin 0; set xmax 1 }
  if {$ymax < $ymin} { set ymin 0; set ymax 1 }

  set xtick $_data($graph,xtick)
  set ytick $_data($graph,ytick)
  set _data($graph,axmin) [expr {floor($xmin/$xtick) * $xtick}]
  set _data($graph,axmax) [expr {floor($xmax/$xtick) * $xtick + $xtick}]
  set _data($graph,aymin) [expr {floor($ymin/$ytick) * $ytick}]
  set _data($graph,aymax) [expr {floor($ymax/$ytick) * $ytick + $ytick}]

  # Explicitly set boundaries override the detected ranges:
  foreach coord {xmin xmax ymin ymax} {
    if {[info exists _data($graph,$coord)]} {
      set _data($graph,a$coord) $_data($graph,$coord)
    }
  }
}

### history.tcl
### Text entry history functions for Scid.
### Copyright (C) 2004 Shane Hudson.

namespace eval ::utils::history {}


set ::utils::history::defaultListLength 10
array set ::utils::history::listLength {}
array set ::utils::history::comboboxWidget {}

if {! [info exists ::utils::history::listData]} {
  array set ::utils::history::listData {}
}

# Load any history lists that were saved in the last session:
catch {source [scidConfigFile history]}


proc ::utils::history::SetList {key list} {
  set ::utils::history::listData($key) $list
}


proc ::utils::history::GetList {key} {
  variable listData
  if {[info exists listData($key)]} {
    return $listData($key)
  }
  return {}
}


#  ::utils::history::AddEntry
#
#   Inserts an entry at the top of the list of the specified key and
#   ensures that only one copy of the entry exists in the list.
#   The list is then pruned to the limit size is necessary.
#
proc ::utils::history::AddEntry {key entry} {
  variable listData
  # We do not add the empty string to a history list:
  if {$entry == "" } {
    return
  }
  
  if {[info exists listData($key)]} {
    # Take out this entry if it exists, so it will not appear twice:
    set index [lsearch -exact $listData($key) $entry]
    if {$index == 0} {
      # The entry is already at the start of the list; nothing to do
      return
    } elseif {$index > 0} {
      set listData($key) [lreplace $listData($key) $index $index]
    }
    set listData($key) [linsert $listData($key) 0 $entry]
    ::utils::history::PruneList $key
  } else {
    set listData($key) [list $entry]
  }
  RefillCombobox $key
  
  if { [llength [GetList $key]] > 0 } {
    set cb [ GetCombobox $key ]
    if { $cb != "" && [winfo exists $cb]} {
      $cb current 0
    }
  }
  
}


proc ::utils::history::SetLimit {key length} {
  set ::utils::history::listLength($key) $length
  ::utils::history::PruneList $key
}


proc ::utils::history::GetLimit {key} {
  variable listLength
  variable defaultListLength
  if {[info exists ::utils::history::listLength($key)]} {
    return $::utils::history::listLength($key)
  }
  return $defaultListLength
}


proc ::utils::history::PruneList {key {length -1}} {
  variable listData
  if {! [info exists listData($key)]} { return }
  if {$length < 0} {
    set length [::utils::history::GetLimit $key]
  }
  set listData($key) [lrange $listData($key) 0 [expr {$length - 1}]]
}



# ::utils::history::SetCombobox
#
#   Returns the combobox widget associated with this history key.
#
proc ::utils::history::GetCombobox {key} {
  variable comboboxWidget
  if {[info exists comboboxWidget($key)]} {
    return $comboboxWidget($key)
  }
  return ""
}


# ::utils::history::SetCombobox
#
#   Associates the specified widget (which must be a megawidget created
#   with ::combobox::combobox, see contrib/combobox.tcl) with the specifiec
#   history key. Whenever the list for this history key is modified, the
#   combobox widget will be updated.
#
proc ::utils::history::SetCombobox {key cbWidget} {
  set ::utils::history::comboboxWidget($key) $cbWidget
  RefillCombobox $key
}


# ::utils::history::SetCombobox
#
#   Refills the history list of the combobox associated with the specified
#   history key, if there is one.
#
proc ::utils::history::RefillCombobox {key} {
  variable comboboxWidget
  
  set cbWidget [GetCombobox $key]
  if {$cbWidget == ""} { return }
  
  # If the combobox widget is part of a dialog which is generated as needed,
  # it may not exist right now:
  if {! [winfo exists $cbWidget]} { return }
  
  $cbWidget delete 0 end
  set entries [GetList $key]
  $cbWidget configure -values $entries
}


# ::utils::history::Save
#   Saves the combobox history file, reporting any error in a message box
#   if reportError is true.
#
proc ::utils::history::Save {{reportError 0}} {
  variable listData
  
  set f {}
  set filename [scidConfigFile history]
  
  if  {[catch {open $filename w} f]} {
    if {$reportError} {
      tk_messageBox -title "Scid" -type ok -icon warning \
          -message "Unable to write file: $filename\n$f"
    }
    return
  }
  
  puts $f "# Scid [sc_info version] combobox history lists"
  puts $f ""
  foreach i [lsort [array names listData]] {
    puts $f "set ::utils::history::listData($i) [list $listData($i)]"
  }
  close $f
}

# The following paned window code is loosely based on code from the book:
#
#  Effective Tcl/Tk Programming
#     Mark Harrison, DSC Communications Corp.
#     Michael McLennan, Bell Labs Innovations for Lucent Technologies
#     Addison-Wesley Professional Computing Series
#  Copyright (c) 1996-1997  Lucent Technologies Inc. and Mark Harrison
#
# Many modifications and improvements for use in Scid have been made,
# including namespacing the code.

namespace eval ::utils::pane {}

array set ::utils::pane::_data {}

# Create
#
#   Create a paned window.
#
proc ::utils::pane::Create {win pane1 pane2 width height {ratio 0.5} {orient vert}} {
  variable _data
  set _data($win,1) $pane1
  set _data($win,2) $pane2
  set _data($win,drag) 1
  set vertical 1
  if {[string index $orient 0] == "h"} { set vertical 0 }
  set _data($win,vertical) $vertical
  # Default minimum size of each frame is 10%:
  set _data($win,min) 0.1
  set _data($win,max) 0.9

  frame $win -width $width -height $height
  frame $win.$pane1
  frame $win.$pane2
  if {$vertical} {
    place $win.$pane1 -relx 0.5 -rely 0 -anchor n -relwidth 1.0 -relheight 0.5
    place $win.$pane2 -relx 0.5 -rely 1 -anchor s -relwidth 1.0 -relheight 0.5

    frame $win.pane_sash -height 2 -borderwidth 2 -relief groove \
      -cursor sb_v_double_arrow ;# -background black
    place $win.pane_sash -relx 0.5 -rely 0.5 -relwidth 1.0 -anchor c

    frame $win.pane_grip -width 20 -height 7 -borderwidth 1 -relief solid \
      -cursor sb_v_double_arrow -background gray
    place $win.pane_grip -relx 0.95 -rely 0.5 -anchor c
  } else {
    place $win.$pane1 -relx 0 -rely 0.5 -anchor w -relwidth 0.5 -relheight 1.0
    place $win.$pane2 -relx 1 -rely 0.5 -anchor e -relwidth 0.5 -relheight 1.0

    frame $win.pane_sash -width 1 -borderwidth 1 -relief flat \
      -cursor sb_h_double_arrow -background black
    place $win.pane_sash -relx 0.5 -rely 0.5 -relheight 1.0 -anchor c

    frame $win.pane_grip -height 20 -width 7 -borderwidth 1 -relief solid \
      -cursor sb_h_double_arrow -background gray
    place $win.pane_grip -relx 0.5 -rely 0.95 -anchor c
  }

  #bind $win.pane_grip <Enter>           "::utils::pane::Enter $win"
  #bind $win.pane_grip <Leave>           "::utils::pane::Leave $win"
  #bind $win.pane_sash <Enter>           "::utils::pane::Enter $win"
  #bind $win.pane_sash <Leave>           "::utils::pane::Leave $win"

  if {$vertical} { set c "%Y" } else { set c "%X" }
  bind $win.pane_grip <ButtonPress-1>   "::utils::pane::Grab $win"
  bind $win.pane_grip <B1-Motion>       "::utils::pane::Drag $win $c"
  bind $win.pane_grip <ButtonRelease-1> "::utils::pane::Drop $win $c"
  bind $win.pane_sash <ButtonPress-1>   "::utils::pane::Grab $win"
  bind $win.pane_sash <B1-Motion>       "::utils::pane::Drag $win $c"
  bind $win.pane_sash <ButtonRelease-1> "::utils::pane::Drop $win $c"

  ::utils::pane::Divide $win $ratio
  return $win
}

proc ::utils::pane::SetDrag {win bool} {
  set ::utils::pane::_data($win,drag) $bool
}

proc ::utils::pane::SetRange {win min max} {
  set ::utils::pane::_data($win,min) $min
  set ::utils::pane::_data($win,max) $max
}

proc ::utils::pane::Enter {win} {
  $win.pane_sash configure -background yellow
  $win.pane_grip configure -background yellow
}

proc ::utils::pane::Leave {win} {
  $win.pane_sash configure -background black
  $win.pane_grip configure -background black
}

proc ::utils::pane::Grab {win} {
  $win.pane_sash configure -background red
  $win.pane_grip configure -background red
}

proc ::utils::pane::Drag {win y} {
  variable _data
  set vertical $_data($win,vertical)
  if {$vertical} {
    set realY [expr {$y-[winfo rooty $win]}]
    set Ymax  [winfo height $win]
  } else {
    set realY [expr {$y-[winfo rootx $win]}]
    set Ymax  [winfo width $win]
  }
  set frac [expr {double($realY) / $Ymax}]
  if {$frac < $_data($win,min)} {set frac $_data($win,min)}
  if {$frac > $_data($win,max)} {set frac $_data($win,max)}

  if {$_data($win,drag)} {
    ::utils::pane::Divide $win $frac
  } else {
    if {$vertical} {
      place $win.pane_sash -rely $frac
      place $win.pane_grip -rely $frac
    } else {
      place $win.pane_sash -relx $frac
      place $win.pane_grip -relx $frac
    }
  }
  return $frac
}

proc ::utils::pane::Drop {win y} {
  set frac [::utils::pane::Drag $win $y]
  ::utils::pane::Divide $win $frac
  $win.pane_sash configure -background black
  $win.pane_grip configure -background gray
}

proc ::utils::pane::Divide {win frac} {
  if {$::utils::pane::_data($win,vertical)} {
    place $win.pane_sash -rely $frac
    place $win.pane_grip -rely $frac
    place $win.$::utils::pane::_data($win,1) -relheight $frac
    place $win.$::utils::pane::_data($win,2) -relheight [expr {1.0 - $frac}]
  } else {
    place $win.pane_sash -relx $frac
    place $win.pane_grip -relx $frac
    place $win.$::utils::pane::_data($win,1) -relwidth $frac
    place $win.$::utils::pane::_data($win,2) -relwidth [expr {1.0 - $frac}]
  }
}
### sound.tcl
### Functions for playing sound files to announce moves.
### Part of Scid. Copyright (C) Shane Hudson 2004.
###
### Uses the free Tcl/Tk sound package "Snack", which comes with
### most Tcl distributions. See http://www.speech.kth.se/snack/

### when an other application uses the audio device, no sound can be played. Forces a reset of pending sounds after 5 seconds
### which limits the maximum length of a playable sound

namespace eval ::utils::sound {}

set ::utils::sound::hasSnackPackage 0
set ::utils::sound::isPlayingSound 0
set ::utils::sound::soundQueue {}
set ::utils::sound::soundFiles [list \
    King Queen Rook Bishop Knight CastleQ CastleK Back Mate Promote Check \
    a b c d e f g h x 1 2 3 4 5 6 7 8 move alert]

# soundMap
#
#   Maps characters in a move to sounds.
#   Before this map is used, "O-O-O" is converted to "q" and "O-O" to "k"
#   Also note that "U" (undo) is used for taking back a move.
#
array set ::utils::sound::soundMap {
  K King Q Queen R Rook B Bishop N Knight k CastleK q CastleQ
  x x U Back # Mate = Promote  + Check alert alert
  a a b b c c d d e e f f g g h h
  1 1 2 2 3 3 4 4 5 5 6 6 7 7 8 8
} 


# ::utils::sound::Setup
#
#   Called once at startup to load the Snack package and set up sounds.
#
proc ::utils::sound::Setup {} {
  variable hasSnackPackage
  variable soundFiles
  variable soundFolder
  
  ::splash::add "Setting up audio move announcement..."
  if {[catch {package require snack 2.0}]} {
    set hasSnackPackage 0
    ::splash::add "    Move speech disabled - Snack sound package not found"
    return
  }
  
  ::splash::add "    Move speech enabled - Snack sound package found"
  set hasSnackPackage 1
  
  # Set up sounds. Each sound will be empty until a WAV file for it is found.
  foreach soundFile $soundFiles {
    ::snack::sound sound_$soundFile
  }
  
  set numSounds [::utils::sound::ReadFolder]
  set numSought [llength $soundFiles]
  ::splash::add "Searching sounds folder for move announcement sounds..."
  ::splash::add "   Found $numSounds of $numSought sound files in $soundFolder"
}


# ::utils::sound::ReadFolder
#
#   Reads sound files from the specified directory.
#   Returns the number of Scid sound files found in that directory.
#
proc ::utils::sound::ReadFolder {{newFolder ""}} {
  variable soundFiles
  variable soundFolder
  
  if {$newFolder != ""} { set soundFolder "" }
  
  set count 0
  foreach soundFile $soundFiles {
    set f [file join $soundFolder $soundFile.wav]
    if {[file readable $f]} {
      sound_$soundFile configure -file $f
      incr count
    }
  }
  return $count
}



proc ::utils::sound::AnnounceMove {move} {
  variable hasSnackPackage
  variable soundMap
  
  if {! $hasSnackPackage} { return }
  
  if {[string range $move 0 4] == "O-O-O"} { set move q }
  if {[string range $move 0 2] == "O-O"} { set move k }
  set move [::untrans $move]
  set parts [split $move ""]
  set soundList {}
  foreach part $parts {
    if {[info exists soundMap($part)]} {
      lappend soundList sound_$soundMap($part)
    }
  }
  if {[llength $soundList] > 0} {
    CancelSounds
    foreach s $soundList {
      PlaySound $s
    }
  }
}


proc ::utils::sound::AnnounceNewMove {move} {
  if {$::utils::sound::announceNew} { AnnounceMove $move }
}


proc ::utils::sound::AnnounceForward {move} {
  if {$::utils::sound::announceForward} { AnnounceMove $move }
}


proc ::utils::sound::AnnounceBack {} {
  if {$::utils::sound::announceBack} { AnnounceMove U }
}


proc ::utils::sound::SoundFinished {} {
  after cancel ::utils::sound::CancelSounds
  set ::utils::sound::isPlayingSound 0
  CheckSoundQueue
}


proc ::utils::sound::CancelSounds {} {
  if {! $::utils::sound::hasSnackPackage} { return }
  
  snack::audio stop
  set ::utils::sound::soundQueue {}
  set ::utils::sound::isPlayingSound 0
}

################################################################################
#
################################################################################
proc ::utils::sound::PlaySound {sound} {
  if {! $::utils::sound::hasSnackPackage} { return }
  lappend ::utils::sound::soundQueue $sound
  after idle ::utils::sound::CheckSoundQueue
}

# ::utils::sound::CheckSoundQueue
#
#   Starts playing the next available sound, if there is one waiting
#   and no sound is currently playing. Called whenever a sound is
#   added to the queue or a sound has finished playing.
#
proc ::utils::sound::CheckSoundQueue {} {
  variable soundQueue
  variable isPlayingSound
  if {$isPlayingSound} { return }
  if {[llength $soundQueue] == 0} { return }
  
  set next [lindex $soundQueue 0]
  set soundQueue [lrange $soundQueue 1 end]
  set isPlayingSound 1
  catch { $next play -blocking 0 -command ::utils::sound::SoundFinished }
  after 5000 ::utils::sound::CancelSounds
}


# ::utils::sound::OptionsDialog
#
#   Dialog window for configuring move sounds.
#
#   TODO: language translations for this dialog.
#
proc ::utils::sound::OptionsDialog {} {
  set w .soundOptions
  
  foreach v {soundFolder announceNew announceForward announceBack} {
    set ::utils::sound::${v}_temp [set ::utils::sound::$v]
  }
  
  toplevel $w
  wm title $w "Scid: Sound Options"
  # wm transient $w .
  
  
  label $w.status -text ""
  if {! $::utils::sound::hasSnackPackage} {
    $w.status configure -text "Scid could not find the Snack audio package at startup; Sound is disabled."
    pack $w.status -side bottom
  }
  pack [frame $w.b] -side bottom -fill x -pady 2
  pack [frame $w.f -relief groove -borderwidth 2] \
      -side top -fill x -padx 5 -pady 5 -ipadx 4 -ipady 4
  
  set f $w.f
  set r 0
  
  label $f.ftitle -text $::tr(SoundsFolder) -font font_Bold
  grid $f.ftitle -row $r -column 0 -columnspan 3 -pady 4
  incr r
  
  entry $f.folderEntry -width 40 -textvariable ::utils::sound::soundFolder_temp
  grid $f.folderEntry -row $r -column 0 -columnspan 2 -sticky we
  button $f.folderBrowse -text " $::tr(Browse)... " \
      -command ::utils::sound::OptionsDialogChooseFolder
  grid $f.folderBrowse -row $r -column 2
  incr r
  
  label $f.folderHelp -text $::tr(SoundsFolderHelp)
  grid $f.folderHelp -row $r -column 0 -columnspan 3
  incr r
  
  grid [frame $f.gap$r -height 5] -row $r -column -0; incr r
  
  label $f.title -text $::tr(SoundsAnnounceOptions) -font font_Bold
  grid $f.title -row $r -column 0 -columnspan 3 -pady 4
  incr r
  
  checkbutton $f.announceNew -text $::tr(SoundsAnnounceNew) \
      -variable ::utils::sound::announceNew_temp
  grid $f.announceNew -row $r -column 0 -columnspan 2 -sticky w
  incr r
  
  grid [frame $f.gap$r -height 5] -row $r -column -0; incr r
  
  checkbutton $f.announceForward -text $::tr(SoundsAnnounceForward) \
      -variable ::utils::sound::announceForward_temp
  grid $f.announceForward -row $r -column 0 -columnspan 2 -sticky w
  incr r
  
  grid [frame $f.gap$r -height 5] -row $r -column -0; incr r
  
  checkbutton $f.announceBack -text $::tr(SoundsAnnounceBack) \
      -variable ::utils::sound::announceBack_temp
  grid $f.announceBack -row $r -column 0 -columnspan 2 -sticky w
  incr r
  
  dialogbutton $w.b.ok -text OK -command ::utils::sound::OptionsDialogOK
  dialogbutton $w.b.cancel -text $::tr(Cancel) -command [list destroy $w]
  packbuttons right $w.b.cancel $w.b.ok
  bind $w <Return> [list $w.b.ok invoke]
  bind $w <Escape> [list $w.b.cancel invoke]
  ::utils::win::Centre $w
  wm resizable $w 0 0
  raiseWin $w
  grab $w
  focus $w.f.folderEntry
}

proc ::utils::sound::OptionsDialogChooseFolder {} {
  set newFolder [tk_chooseDirectory \
      -initialdir $::utils::sound::soundFolder_temp \
      -parent .soundOptions \
      -title "Scid: $::tr(SoundsFolder)"]
  if {$newFolder != ""} {
    set ::utils::sound::soundFolder_temp [file nativename $newFolder]
  }
}

proc ::utils::sound::OptionsDialogOK {} {
  variable soundFolder
  
  # Destroy the Sounds options dialog
  set w .soundOptions
  catch {grab release $w}
  destroy $w
  
  set isNewSoundFolder 0
  if {$soundFolder != $::utils::sound::soundFolder_temp} {
    set isNewSoundFolder 1
  }
  
  # Update the user-settable sound variables:
  foreach v {soundFolder announceNew announceForward announceBack} {
    set ::utils::sound::$v [set ::utils::sound::${v}_temp]
  }
  
  # If the user selected a different folder to look in, read it
  # and tell the user how many sound files were found there.
  
  if {$isNewSoundFolder  &&  $soundFolder != ""} {
    set numSoundFiles [::utils::sound::ReadFolder]
    tk_messageBox -title "Scid: Sound Files" -type ok -icon info \
        -message "Found $numSoundFiles of [llength $::utils::sound::soundFiles] sound files in $::utils::sound::soundFolder"
  }
}


# Read the sound files at startup:

::utils::sound::Setup

# ::utils::string::Surname
#
#   Returns the surname of a player name.
#
proc ::utils::string::Surname {name} {
  set idx [string first "," $name]
  if {$idx > 0} { set name [string range $name 0 [expr {$idx - 1} ]] }
  return $name
}


proc ::utils::string::CityName {siteName} {
  regsub { [A-Z][A-Z][A-Z]$} $siteName "" siteName
  return [string trim [::utils::string::Surname $siteName]]
}


# ::utils::string::Capital
#
#    Returns a string with the first character capitalised.
#
proc ::utils::string::Capital {str} {
  set s [string toupper [string index $str 0]]
  append s [string range $str 1 end]
  return $s
}

# PadLeft
#
#   Given a string and a length, pads the string with padChar to have
#   the required length.
#
proc ::utils::string::PadLeft {str length {padChar " "}} {
  set s $str
  for {set actual [string length $s]} {$actual < $length} {incr actual} {
    append s $padChar
  }
  return $s
}

# Pad
#
#   Same as PadLeft.
#
proc ::utils::string::Pad {str length {padChar " "}} {
  return [::utils::string::PadLeft $str $length $padChar]
}

# PadRight
#
#   Like PadLeft, but adds the padding characters to the start of the string.
#
proc ::utils::string::PadRight {str length {padChar " "}} {
  set s $str
  for {set actual [string length $s]} {$actual < $length} {incr actual} {
    set s "$padChar$s"
  }
  return $s
}

# PadCenter
#
#   Like PadLeft and PadRight, but centers the specified string.
#
proc ::utils::string::PadCenter {str length {padChar " "}} {
  set pre 1
  set s $str
  for {set actual [string length $s]} {$actual < $length} {incr actual} {
    if {$pre} {
      set s "$padChar$s"
      set pre 0
    } else {
      append s $padChar
      set pre 1
    }
  }
  return $s
}

###
#
# ToolTips
#

namespace eval ::utils::tooltip {}

set ::utils::tooltip::showToolTips 1
set ::utils::tooltip::time 0
set ::utils::tooltip::enteredWidget {}
set ::utils::tooltip::tooltipDelay 400
set ::utils::tooltip::tooltipWidth 30

array set ::utils::tooltip::message {}

# Construct tooltip window:
#
toplevel .tooltip
label .tooltip.text -relief solid -borderwidth 1 -justify left \
    -background lightYellow -padx 3 -pady 1
pack .tooltip.text -side left
wm overrideredirect .tooltip 1
if { $macOS }  {
  ::tk::unsupported::MacWindowStyle style .tooltip help none
}
bind .tooltip <Button-1> { wm withdraw .tooltip }
wm withdraw .tooltip


# ::utils::tooltip::Set
#
#   Set the tooltip message for <button> to be <msg>
#
proc ::utils::tooltip::Set { button msg } {
  variable message
  set msg [string trim $msg]
  if {$msg == ""} { return }
  regsub {\\n} $msg "\n" msg
  set msg [::utils::tooltip::trimWidth $msg]
  set message($button) $msg
  bind $button <Any-Enter> +[list ::utils::tooltip::Enter $button]
  bind $button <Any-Leave> +[list ::utils::tooltip::Leave $button]
}

# ::utils::tooltip::SetTag
#
#   remove a tooltip message for a given button
#
proc ::utils::tooltip::UnSet { button } {
  variable message
  if { [info exists ::utils::tooltip::message($button)] } {
	  unset message($button)
	  bind $button <Any-Enter> ""
	  bind $button <Any-Leave> ""
  }
}

# ::utils::tooltip::SetTag
#
#   Set the tooltip message for a text with tag <tag> to be <msg>
#
proc ::utils::tooltip::SetTag { text_widget msg tag } {
  variable message
  set msg [string trim $msg]
  if {$msg == ""} { return }
  regsub {\\n} $msg "\n" msg
  set msg [::utils::tooltip::trimWidth $msg]
  set message(${tag}_$text_widget) $msg
  $text_widget tag bind $tag <Any-Enter> +[list ::utils::tooltip::Enter ${tag}_$text_widget]
  $text_widget tag bind $tag <Any-Leave> +[list ::utils::tooltip::Leave ${tag}_$text_widget]
}

# ::utils::tooltip::Enter
#
#   Handles the mouse entering a button which has a tooltip.
#
proc ::utils::tooltip::Enter {button} {
  variable showToolTips
  variable enteredWidget
  variable tooltipDelay
  
  if {! $showToolTips} { return }
  set enteredWidget $button
  after $tooltipDelay [list ::utils::tooltip::Check $button]
}


# ::utils::tooltip::Check
#
#   Called a set time after the mouse has entered a button with a
#   tooltip, to check if it is still there. If so, the tooltip
#   message is displayed.
#
proc ::utils::tooltip::Check {button} {
  variable enteredWidget
  
  if {$enteredWidget != $button} {
    # The mouse cursor has moved somewhere else; display no tooltip
    return
  }
  
  if {! [info exists ::utils::tooltip::message($button)]} { return }
  
  .tooltip.text configure -text [tr $::utils::tooltip::message($button)]
  set x [winfo pointerx .]
  set y [winfo pointery .]
  incr x 10
  incr y 4
  catch {wm transient .tooltip [winfo toplevel $button]}
  
  # make the tooltip visible
  set maxw [ winfo vrootwidth .]
  set maxh [ winfo vrootheight .]
  set w [winfo reqwidth .tooltip]
  set h [winfo reqheight .tooltip]
  if { [expr $x + $w] > $maxw } {
    set x [expr $maxw - $w]
  }
  if { [expr $y + $h] > $maxh } {
    set y [expr $maxh - $h]
  }
  
  catch {wm geometry .tooltip +$x+$y}
  wm deiconify .tooltip
  raise .tooltip
  
  # Automatically erase tooltip after a short delay
  after 15000 [ list ::utils::tooltip::Leave $button ]
}


# ::utils::tooltip::Leave
#
#   Handles the mouse leaving a button which has a tooltip.
#
proc ::utils::tooltip::Leave {button} {
  after cancel [ list ::utils::tooltip::Leave $button ]
  variable showToolTips
  if {! $showToolTips} { return }
  wm withdraw .tooltip
  after cancel [list ::utils::tooltip::Check $button]
}

# ::utils::tooltip::ToWidth
#
#   Returns the arg with CR every tooltipWidth chars at most
#
proc ::utils::tooltip::trimWidth { msg } {
  set ret ""
  foreach line [split $msg "\n"] {
    
    if {[string length $line] < $::utils::tooltip::tooltipWidth} {
      append ret "$line\n"
      continue
    } else  {
      # must split the line
      set words [split $line " "]
      
      while {[llength $words] > 0} {
        set tmp [lindex $words 0]
        set words [lreplace $words 0 0]
        while {[string length "$tmp [lindex $words 0]"] < $::utils::tooltip::tooltipWidth && [llength $words] > 0} {
          append tmp " " [lindex $words 0]
          set words [lreplace $words 0 0]
        }
        append ret $tmp "\n"
      }
      
    }
  }
  return [string trim $ret]
}


# ::utils::validate::Integer
#
#   Used to check the size of integers in entry boxes.
#
proc ::utils::validate::Integer {maxValue allowQuestionMarks name el op} {
  global $name ${name}_old
  if {[string comp {} $el]} {
    set old  ${name}_old\($el\)
    set name $name\($el\)
  } else {
    set old ${name}_old
  }

  if {$allowQuestionMarks > 0} {
    if {[regexp {^\?*$} [set $name]]} {
      # Accept this value:
      set $old [set $name]
      return
    }
  }

  # Only non-negative integers up to maxValue are allowed, unless the
  # value is negative:
  set allowNegatives 0
  if {$maxValue < 0} {
    set allowNegatives 1
    set maxValue [expr {0 - $maxValue}]
  }

  if {$allowNegatives} {
    if {![regexp {^[-+]?[0-9]*$} [set $name]]} {
      set $name [set $old]
      bell
      return
    }
  } else {
    if {![regexp {^[+]?[0-9]*$} [set $name]]} {
      set $name [set $old]
      bell
      return
    }
  }
  if {[set $name] > $maxValue} {
    set $name [set $old]
    bell
    return
  }
  #if {[expr {0 - [set $name]}] < [expr {0 - $maxValue}]} {
  #  set $name [set $old]
  #  bell
  #  return
  #}
  set $old [set $name]
}



# ::utils::validate::Date
#
#    Used to check the validity of a date string as it is entered.
#
proc ::utils::validate::Date {name el op} {
  global $name ${name}_old
  set old ${name}_old
  if {![sc_info validDate [set $name]]} {
    set $name [set $old]
    bell
    return
  }
  set $old [set $name]
}

# ::utils::validate::Result
#
#    Used to check the validity of a result entrybox value.
#    Result can be empty, "1", "0", "=", or "*".
#
proc ::utils::validate::Result {name el op} {
  global $name ${name}_old
  set old ${name}_old
  if {![regexp {^[1|0|=|\*]?$} [set $name]]} {
    set $name [set $old]
    bell
    return
  }
  set $old [set $name]
}

# ::utils::validate::Alpha
#
#    Used to check that an entrybox contains only letters.
#
proc ::utils::validate::Alpha {name el op} {
  global $name ${name}_old
  set old ${name}_old
  if {![regexp {^[A-Za-z]*$} [set $name]]} {
    set $name [set $old]
    bell
    return
  }
  set $old [set $name]

}

# ::utils::validate::Regexp
#
#    Used to check the validity of an entrybox given a regular expression.
#    Used to verify a file is "a-h", for example.
#
proc ::utils::validate::Regexp {expression name el op} {
  global $name ${name}_old
  set old ${name}_old
  if {![regexp $expression [set $name]]} {
    set $name [set $old]
    bell
    return
  }
  set $old [set $name]
}

# ::utils::validate::roundScale
# will round var to the next integer which is a multiple of tickinterval
# given its current value
proc ::utils::validate::roundScale { var tickinterval value } {
  set $var [expr int($value/$tickinterval ) * $tickinterval]
}

# ::utils::validate::floatScale
# returns a float value with 1 decimal
proc ::utils::validate::floatScale { var tickinterval value } {
  set $var [format "%.1f" [expr ($value/$tickinterval ) * $tickinterval] ]
}

# ::utils::win::Centre
#
#   Centres a window on the screen.
#
proc ::utils::win::Centre {w} {
  if { $::docking::USE_DOCKING } { return }
  wm withdraw $w
  update idletasks
  set x [expr {[winfo screenwidth $w]/2 - [winfo reqwidth $w]/2 \
        - [winfo vrootx .]}]
  set y [expr {[winfo screenheight $w]/2 - [winfo reqheight $w]/2 \
        - [winfo vrooty .]}]
  wm geom $w +$x+$y
  wm deiconify $w
}

################################################################################
# Scrolledframe.tcl file integrated here for convenience
################################################################################
if {[info exists ::scrolledframe::version]} { return }
namespace eval ::scrolledframe {
  # beginning of ::scrolledframe namespace definition
  
  namespace export scrolledframe
  
  # ==============================
  #
  # scrolledframe
  set version 0.9.1
  set (debug,place) 0
  #
  # a scrolled frame
  #
  # (C) 2003, ulis
  #
  # NOL licence (No Obligation Licence)
  #
  # Changes (C) 2004, KJN
  #
  # NOL licence (No Obligation Licence)
  # ==============================
  #
  # Hacked package, no documentation, sorry
  # See example at bottom
  #
  # ------------------------------
  # v 0.9.1
  #  automatic scroll on resize
  # ==============================
  
  package provide Scrolledframe $version
  
  # --------------
  #
  # create a scrolled frame
  #
  # --------------
  # parm1: widget name
  # parm2: options key/value list
  # --------------
  proc scrolledframe {w args} \
      {
        variable {}
        # create a scrolled frame
        frame $w
        # trap the reference
        rename $w ::scrolledframe::_$w
        # redirect to dispatch
        interp alias {} $w {} ::scrolledframe::dispatch $w
        # create scrollable internal frame
        frame $w.scrolled -highlightt 0 -padx 0 -pady 0
        # place it
        place $w.scrolled -in $w -x 0 -y 0
        if {$(debug,place)} { puts "place $w.scrolled -in $w -x 0 -y 0" } ;#DEBUG
        # init internal data
        set ($w:vheight) 0
        set ($w:vwidth) 0
        set ($w:vtop) 0
        set ($w:vleft) 0
        set ($w:xscroll) ""
        set ($w:yscroll) ""
        set ($w:width)    0
        set ($w:height)   0
        set ($w:fillx)    0
        set ($w:filly)    0
        # configure
        if {$args != ""} { uplevel 1 ::scrolledframe::config $w $args }
        # bind <Configure>
        bind $w <Configure> [namespace code [list resize $w]]
        bind $w.scrolled <Configure> [namespace code [list resize $w]]
        # return widget ref
        return $w
      }
  
  # --------------
  #
  # dispatch the trapped command
  #
  # --------------
  # parm1: widget name
  # parm2: operation
  # parm2: operation args
  # --------------
  proc dispatch {w cmd args} \
      {
        variable {}
        switch -glob -- $cmd \
        {
          con*    { uplevel 1 [linsert $args 0 ::scrolledframe::config $w] }
          xvi*    { uplevel 1 [linsert $args 0 ::scrolledframe::xview  $w] }
          yvi*    { uplevel 1 [linsert $args 0 ::scrolledframe::yview  $w] }
          default { uplevel 1 [linsert $args 0 ::scrolledframe::_$w    $cmd] }
        }
      }
  
  # --------------
  # configure operation
  #
  # configure the widget
  # --------------
  # parm1: widget name
  # parm2: options
  # --------------
  proc config {w args} \
      {
        variable {}
        set options {}
        set flag 0
        foreach {key value} $args \
        {
          switch -glob -- $key \
          {
            -fill   \
            {
              # new fill option: what should the scrolled object do if it is smaller than the viewing window?
              if {$value == "none"} {
                set ($w:fillx) 0
                set ($w:filly) 0
              } elseif {$value == "x"} {
                set ($w:fillx) 1
                set ($w:filly) 0
              } elseif {$value == "y"} {
                set ($w:fillx) 0
                set ($w:filly) 1
              } elseif {$value == "both"} {
                set ($w:fillx) 1
                set ($w:filly) 1
              } else {
                error "invalid value: should be \"$w configure -fill value\", where \"value\" is \"x\", \"y\", \"none\", or \"both\""
              }
              resize $w force
              set flag 1
            }
            -xsc*   \
            {
              # new xscroll option
              set ($w:xscroll) $value
              set flag 1
            }
            -ysc*   \
            {
              # new yscroll option
              set ($w:yscroll) $value
              set flag 1
            }
            default { lappend options $key $value }
          }
        }
        # check if needed
        if {!$flag || $options != ""} \
        {
          # call frame config
          uplevel 1 [linsert $options 0 ::scrolledframe::_$w config]
        }
      }
  
  # --------------
  # resize proc
  #
  # Update the scrollbars if necessary, in response to a change in either the viewing window
  # or the scrolled object.
  # Replaces the old resize and the old vresize
  # A <Configure> call may mean any change to the viewing window or the scrolled object.
  # We only need to resize the scrollbars if the size of one of these objects has changed.
  # Usually the window sizes have not changed, and so the proc will not resize the scrollbars.
  # --------------
  # parm1: widget name
  # parm2: pass anything to force resize even if dimensions are unchanged
  # --------------
  proc resize {w args} \
      {
        variable {}
        set force [llength $args]
        
        set _vheight     $($w:vheight)
        set _vwidth      $($w:vwidth)
        # compute new height & width
        set ($w:vheight) [winfo reqheight $w.scrolled]
        set ($w:vwidth)  [winfo reqwidth  $w.scrolled]
        
        # The size may have changed, e.g. by manual resizing of the window
        set _height     $($w:height)
        set _width      $($w:width)
        set ($w:height) [winfo height $w] ;# gives the actual height of the viewing window
        set ($w:width)  [winfo width  $w] ;# gives the actual width of the viewing window
        
        if {$force || $($w:vheight) != $_vheight || $($w:height) != $_height} {
          # resize the vertical scroll bar
          yview $w scroll 0 unit
          # yset $w
        }
        
        if {$force || $($w:vwidth) != $_vwidth || $($w:width) != $_width} {
          # resize the horizontal scroll bar
          xview $w scroll 0 unit
          # xset $w
        }
      } ;# end proc resize
  
  # --------------
  # xset proc
  #
  # resize the visible part
  # --------------
  # parm1: widget name
  # --------------
  proc xset {w} \
      {
        variable {}
        # call the xscroll command
        set cmd $($w:xscroll)
        if {$cmd != ""} { catch { eval $cmd [xview $w] } }
      }
  
  # --------------
  # yset proc
  #
  # resize the visible part
  # --------------
  # parm1: widget name
  # --------------
  proc yset {w} \
      {
        variable {}
        # call the yscroll command
        set cmd $($w:yscroll)
        if {$cmd != ""} { catch { eval $cmd [yview $w] } }
      }
  
  # -------------
  # xview
  #
  # called on horizontal scrolling
  # -------------
  # parm1: widget path
  # parm2: optional moveto or scroll
  # parm3: fraction if parm2 == moveto, count unit if parm2 == scroll
  # -------------
  # return: scrolling info if parm2 is empty
  # -------------
  proc xview {w {cmd ""} args} \
      {
        variable {}
        # check args
        set len [llength $args]
        switch -glob -- $cmd \
        {
          ""      {set args {}}
          mov*    \
          { if {$len != 1} { error "wrong # args: should be \"$w xview moveto fraction\"" } }
          scr*    \
          { if {$len != 2} { error "wrong # args: should be \"$w xview scroll count unit\"" } }
          default \
          { error "unknown operation \"$cmd\": should be empty, moveto or scroll" }
        }
        # save old values:
        set _vleft $($w:vleft)
        set _vwidth $($w:vwidth)
        set _width  $($w:width)
        # compute new vleft
        set count ""
        switch $len \
        {
          0       \
          {
            # return fractions
            if {$_vwidth == 0} { return {0 1} }
            set first [expr {double($_vleft) / $_vwidth}]
            set last [expr {double($_vleft + $_width) / $_vwidth}]
            if {$last > 1.0} { return {0 1} }
            return [list [format %g $first] [format %g $last]]
          }
          1       \
          {
            # absolute movement
            set vleft [expr {int(double($args) * $_vwidth)}]
          }
          2       \
          {
            # relative movement
            foreach {count unit} $args break
            if {[string match p* $unit]} { set count [expr {$count * 9}] }
            set vleft [expr {$_vleft + $count * 0.1 * $_width}]
          }
        }
        if {$vleft + $_width > $_vwidth} { set vleft [expr {$_vwidth - $_width}] }
        if {$vleft < 0} { set vleft 0 }
        if {$vleft != $_vleft || $count == 0} \
        {
          set ($w:vleft) $vleft
          xset $w
          if {$($w:fillx) && ($_vwidth < $_width || $($w:xscroll) == "") } {
            # "scrolled object" is not scrolled, because it is too small or because no scrollbar was requested
            # fillx means that, in these cases, we must tell the object what its width should be
            place $w.scrolled -in $w -x [expr {-$vleft}] -width $_width
            if {$(debug,place)} { puts "place $w.scrolled -in $w -x [expr {-$vleft}] -width $_width" } ;#DEBUG
          } else {
            place $w.scrolled -in $w -x [expr {-$vleft}] -width {}
            if {$(debug,place)} { puts "place $w.scrolled -in $w -x [expr {-$vleft}] -width {}" } ;#DEBUG
          }
          
        }
      }
  
  # -------------
  # yview
  #
  # called on vertical scrolling
  # -------------
  # parm1: widget path
  # parm2: optional moveto or scroll
  # parm3: fraction if parm2 == moveto, count unit if parm2 == scroll
  # -------------
  # return: scrolling info if parm2 is empty
  # -------------
  proc yview {w {cmd ""} args} \
      {
        variable {}
        # check args
        set len [llength $args]
        switch -glob -- $cmd \
        {
          ""      {set args {}}
          mov*    \
          { if {$len != 1} { error "wrong # args: should be \"$w yview moveto fraction\"" } }
          scr*    \
          { if {$len != 2} { error "wrong # args: should be \"$w yview scroll count unit\"" } }
          default \
          { error "unknown operation \"$cmd\": should be empty, moveto or scroll" }
        }
        # save old values
        set _vtop $($w:vtop)
        set _vheight $($w:vheight)
        #    set _height [winfo height $w]
        set _height $($w:height)
        # compute new vtop
        set count ""
        switch $len \
        {
          0       \
          {
            # return fractions
            if {$_vheight == 0} { return {0 1} }
            set first [expr {double($_vtop) / $_vheight}]
            set last [expr {double($_vtop + $_height) / $_vheight}]
            if {$last > 1.0} { return {0 1} }
            return [list [format %g $first] [format %g $last]]
          }
          1       \
          {
            # absolute movement
            set vtop [expr {int(double($args) * $_vheight)}]
          }
          2       \
          {
            # relative movement
            foreach {count unit} $args break
            if {[string match p* $unit]} { set count [expr {$count * 9}] }
            set vtop [expr {$_vtop + $count * 0.1 * $_height}]
          }
        }
        if {$vtop + $_height > $_vheight} { set vtop [expr {$_vheight - $_height}] }
        if {$vtop < 0} { set vtop 0 }
        if {$vtop != $_vtop || $count == 0} \
        {
          set ($w:vtop) $vtop
          yset $w
          if {$($w:filly) && ($_vheight < $_height || $($w:yscroll) == "")} {
            # "scrolled object" is not scrolled, because it is too small or because no scrollbar was requested
            # filly means that, in these cases, we must tell the object what its height should be
            place $w.scrolled -in $w -y [expr {-$vtop}] -height $_height
            if {$(debug,place)} { puts "place $w.scrolled -in $w -y [expr {-$vtop}] -height $_height" } ;#DEBUG
          } else {
            place $w.scrolled -in $w -y [expr {-$vtop}] -height {}
            if {$(debug,place)} { puts "place $w.scrolled -in $w -y [expr {-$vtop}] -height {}" } ;#DEBUG
          }
        }
      }
  
  # end of ::scrolledframe namespace definition
}

################################################################################
#
#     DockingFramework
#
#     Code is inspired by
#     http://wiki.tcl.tk/21846
#     which is published under BSD license
#
################################################################################
image create photo bluetriangle -data {
  R0lGODlhCAAIAKECADNBUEFYb////////yH5BAEKAAIALAAAAAAIAAgAAAINlI8pAe2wHjSs
  JaayKgA7
}

namespace eval docking {
  # associates notebook to paned window
  variable tbs
  
  # keep tracks of active tab for each notebook
  array set activeTab {}
  # associates notebook with a boolean value indicating the tab has changed
  array set changedTab {}
  
  variable tbcnt 0
  array set notebook_name {}
  
  # redraw takes some time : skip some events
  variable lastConfigureEvent 0
  variable deltaConfigureEvent 400
  
  # set to 1 to inhibit autostart of engines when restoring the default layout at startup
  set restore_running 0
}

################################################################################
proc ::docking::handleConfigureEvent { cmd } {
  variable lastConfigureEvent
  variable deltaConfigureEvent
  
  after cancel "eval $cmd"
  set t [clock clicks -milliseconds]
  
  if {  [expr $t - $lastConfigureEvent ] < $deltaConfigureEvent } {
    after [ expr $deltaConfigureEvent + $lastConfigureEvent -$t ] "eval $cmd"
  } else  {
    set lastConfigureEvent $t
    eval $cmd
    # Necessary on MacOs to refresh user interface
    # update idletasks
  }
}
################################################################################
# find notebook, corresponding to path
proc ::docking::find_tbn {path} {
  variable tbs
  
  if {$path==""} { return $path }
  # already a managed notebook?
  if {[info exists tbs($path)]} {
    return $path
  }
  # managed notebooks have the form .toplevel.tbn#
  # pages within notebooks should also have the path .toplevel.page#
  set spath [split $path "."]
  if {[winfo toplevel $path]=="."} {
    set path [join [lrange $path 0 1] "."]
  } else {
    set path [join [lrange $path 0 2] "."]
  }
  
  # is it a managed notebook?
  if {[info exists tbs($path)]} {
    return $path
  }
  
  # try to find notebook that manages this page
  foreach tb [array names tbs] {
    if {[get_class $tb] != "TNotebook"} {
      continue
    }
    if {[lsearch -exact [$tb tabs] $path]>=0} {
      return $tb
    }
  }
  
  return {}
}

################################################################################
# added paned window of other direction, move a notebook there and create a new notebook
proc ::docking::embed_tbn {tbn anchor} {
  variable tbcnt
  variable tbs
  set pw $tbs($tbn)
  if {$anchor=="w" || $anchor=="e"} {
    set orient "horizontal"
  } else {
    set orient "vertical"
  }
  # create new paned window
  set npw [ttk::panedwindow $pw.pw$tbcnt -orient $orient  ]
  incr tbcnt
  # move old notebook
  set i [lsearch -exact [$pw panes] $tbn]
  $pw forget $tbn
  if {$i>=[llength [$pw panes]]} {
    $pw add $npw -weight 1
  } else {
    $pw insert $i $npw -weight 1
  }
  # add new notebook
  set ntb [ttk::notebook [winfo toplevel $pw].tb$tbcnt]
  incr tbcnt
  set tbs($tbn) $npw
  set tbs($ntb) $npw
  # make sure correct order
  if {$anchor=="n" || $anchor=="w"} {
    $npw add $ntb -weight 1
    $npw add $tbn -weight 1
  } else {
    $npw add $tbn -weight 1
    $npw add $ntb -weight 1
  }
  return $ntb
}

################################################################################
# add a new notebook to the side anchor of the notebook tbn
proc ::docking::add_tbn {tbn anchor} {
  variable tbcnt
  variable tbs
  
  set pw $tbs($tbn)
  set orient [$pw cget -orient]
  
  # if orientation of the uplevel panedwindow is consistent with anchor, just add the pane
  if {$orient=="horizontal" && ($anchor=="w" || $anchor=="e")} {
    set i [lsearch -exact [$pw panes] $tbn]
    if {$anchor=="e"} { incr i }
    set tbn [ttk::notebook [winfo toplevel $pw].tb$tbcnt]
    incr tbcnt
    set tbs($tbn) $pw
    if {$i>=[llength [$pw panes]]} {
      $pw add $tbn -weight 1
    } else {
      $pw insert $i $tbn -weight 1
    }
  } elseif {$orient=="vertical" && ($anchor=="n" || $anchor=="s")} {
    set i [lsearch -exact [$pw panes] $tbn]
    if {$anchor=="s"} { incr i}
    set tbn [ttk::notebook [winfo toplevel $pw].tb$tbcnt]
    incr tbcnt
    set tbs($tbn) $pw
    if {$i>=[llength [$pw panes]]} {
      $pw add $tbn -weight 1
    } else {
      $pw insert $i $tbn -weight 1
    }
  } else {
    # orientation of the uplevel panedwindow is opposite to the anchor
    # need to add new panedwindow
    set tbn [embed_tbn $tbn $anchor]
  }
  return $tbn
}

################################################################################
proc ::docking::get_class {path} {
  if {![winfo exists $path]} {
    return ""
  }
  return [lindex [bindtags $path] 1]
}

################################################################################
# always keep .pw paned window
proc ::docking::_cleanup_tabs {srctab} {
  variable tbs
  
  # if srctab is empty, then remove it
  if {[llength [$srctab tabs]]==0} {
    destroy $srctab
    set pw $tbs($srctab)
    unset tbs($srctab)
    
    while {[llength [$pw panes]]==0} {
      set parent [winfo parent $pw]
      
      if {$pw == ".pw"} {
        break
      }
      destroy $pw
      set pw $parent
    }
    
  }
}
################################################################################
# cleans up a window when it was closed without calling the notebook menu
proc ::docking::cleanup { w { origin "" } } {
  variable tbs
  
  if { ! $::docking::USE_DOCKING } { return }

  # if the destroy event came from a sub-widget, do nothing. Necessary because if a widget is destroyed, it sends a destroy event to
  # its containing window
  if { [ string last "." $origin ] > 0 } {
    return
  }
  
  set dockw ".fdock[string range $w 1 end]"
  
  catch {
    bind $w <Destroy> {}
    bind $dockw <Destroy> {}
  }
  
  # Maybe during Scid closing, some race conditions lead to exceptions ? In case, catch this by default
  catch {
    foreach nb [array names tbs] {
      if { [lsearch  [$nb tabs] $dockw ] != -1 } {
        $nb forget $dockw
        destroy $dockw
        ::docking::_cleanup_tabs $nb
        return
      }
    }
  }
  
  # Make sure the frame is destroyed
  if { [winfo exists $dockw]} {
    destroy $dockw
  }
  
  array unset ::docking::notebook_name $dockw
  
}
################################################################################
proc ::docking::isUndocked { w } {
  set w ".fdock[string range $w 1 end]"
  return [info exists ::docking::notebook_name($w)]
}
################################################################################
proc ::docking::move_tab {srctab dsttab} {
  variable tbs
  # move tab
  set f [$srctab select]
  set o [$srctab tab $f]
  $srctab forget $f
  eval $dsttab add $f $o
  raise $f
  $dsttab select $f
  _cleanup_tabs $srctab
}

variable ::docking::c_path {}

################################################################################
proc ::docking::start_motion {path} {
  variable c_path
  if {[winfo exists .ctxtMenu]} {
    destroy .ctxtMenu
  }
  if {$path!=$c_path} {
    set c_path [find_tbn $path]
  }
}
################################################################################
proc ::docking::motion {path} {
  variable c_path
  if {$c_path==""} { return }
  
  $c_path configure -cursor exchange
}
################################################################################
proc ::docking::end_motion {w x y} {
  variable c_path
  
  bind TNotebook <ButtonRelease-1> [namespace code {::docking::show_menu %W %X %Y}]
  
  if {$c_path==""} { return }
  set path [winfo containing $x $y]
  if {$path == ""} {
    return
  }
  $path configure -cursor {}
  
  set t [find_tbn $path]
  if {$t!=""} {
    if {$t==$c_path} {
      # we stayed on the same notebook, so display the menu
      show_menu $w $x $y
      
      if {[$c_path identify [expr $x-[winfo rootx $c_path]] [expr $y-[winfo rooty $c_path]]]!=""} {
        set c_path {}
        return
      }
    }
    if {$t!=$c_path} {
      move_tab $c_path $t
    }
  }
  set c_path {}
  
  setTabStatus
  
}
################################################################################
proc ::docking::show_menu { path x y} {
  variable c_path
  
  if {[winfo exists .ctxtMenu]} {
    destroy .ctxtMenu
  }
  
  if {$path!=$c_path} {
    set c_path [find_tbn $path]
  }
  
  # HACK ! Because notebooks may also be used inside internal windows
  if {! [info exists ::docking::changedTab($c_path)] } {
    return
  }
  
  # display window's menu (workaround for windows where the menu
  # of embedded toplevels is not displayed. The menu must be of the form $w.menu
  
  # if the tab has changed, don't display the menu at once (wait a second click)
  if { $::docking::changedTab($c_path) == 1 } {
    set ::docking::changedTab($c_path) 0
  } else  {
    # the tab was already active, show the menu
    set f [$c_path select]
    set m [getMenu $f]
    if { [winfo exists $m] } {
      tk_popup $m [winfo pointerx .] [winfo pointery .]
    }
  }
  
}
################################################################################
# returns the menu name of a toplevel window (must be in the form $w.menu)
# f is the frame embedding the toplevel (.fdock$w)
proc  ::docking::getMenu  {f} {
  if { [scan $f ".fdock%s" tl] != 1 || $f == ".fdockmain"} {
    return ""
  }
  return ".$tl.menu"
}
################################################################################
# Toggles menu visibility
# f is the frame embedding the toplevel (.fdock$w)
proc ::docking::setMenuVisibility  { f show } {
  
  if { [scan $f ".fdock%s" tl] != 1 || $f == ".fdockmain"} {
    return
  }
  set tl ".$tl"
  
  if { $show == "true" || $show == "1" } {
    $tl configure -menu "$tl.menu"
  } else  {
    $tl configure -menu {}
  }
  
}

################################################################################
proc  ::docking::tabChanged  {path} {
  update
  
  # HACK ! Because notebooks may also be used inside internal windows
  if { ! [ info exists ::docking::activeTab($path)] } {
    return
  }
  if { [$path select] != $::docking::activeTab($path)} {
    set ::docking::activeTab($path) [$path select]
    set ::docking::changedTab($path) 1
  }
}

################################################################################

bind TNotebook <ButtonRelease-1> {::docking::show_menu %W %X %Y}

bind TNotebook <ButtonPress-1> +[ list ::docking::start_motion %W ]

bind TNotebook <B1-Motion> {
  ::docking::motion %W
  bind TNotebook <ButtonRelease-1> {::docking::end_motion %W %X %Y}
}

bind TNotebook <Escape> {
  if {[winfo exists .ctxtMenu]} {
    destroy .ctxtMenu
  }
}

bind TNotebook <ButtonPress-$::MB3> {::docking::ctx_menu %W}
bind TNotebook <<NotebookTabChanged>> {::docking::tabChanged %W}

################################################################################
#
################################################################################
proc ::docking::ctx_cmd {path anchor} {
  variable c_path
  
  if {$path!=$c_path} {
    set c_path [find_tbn $path]
  }
  
  if {$c_path==""} {
    puts "WARNING c_path null in ctx_cmd"
    return
  }
  
  set tbn [add_tbn $path $anchor]
  move_tab $c_path $tbn
  
  set c_path {}
  
  setTabStatus
}
################################################################################
proc ::docking::ctx_menu {w} {
  
  # HACK ! Because notebooks may also be used inside internal windows
  if {! [info exists ::docking::changedTab($w)] } {
    return
  }
  
  update idletasks
  set mctxt .ctxtMenu
  if { [winfo exists $mctxt] } {
    destroy $mctxt
  }
  
  menu $mctxt -tearoff 0
  set state "normal"
  if { [llength [$w tabs]] == "1"} {
    set state "disabled"
  }
  $mctxt add command -label [ ::tr DockTop ] -state $state -command "::docking::ctx_cmd $w n"
  $mctxt add command -label [ ::tr DockBottom ] -state $state -command "::docking::ctx_cmd $w s"
  $mctxt add command -label [ ::tr DockLeft ] -state $state -command "::docking::ctx_cmd $w w"
  $mctxt add command -label [ ::tr DockRight ] -state $state -command "::docking::ctx_cmd $w e"
  $mctxt add separator
  # Main board can not be closed or undocked
  if { [$w select] != ".fdockmain" } {
    $mctxt add command -label [ ::tr Undock ] -command "::docking::undock $w"
    $mctxt add command -label [ ::tr Close ] -command " ::docking::close $w"
  } else {
    $mctxt add checkbutton -label [::tr "showGameInfo"] -variable ::showGameInfo -command ::toggleGameInfo
    $mctxt add checkbutton -label [::tr "autoResizeBoard"] -variable ::autoResizeBoard -command ::docking::toggleAutoResizeBoard
  }
  tk_popup $mctxt [winfo pointerx .] [winfo pointery .]
}
################################################################################
proc ::docking::toggleAutoResizeBoard {} {
  ::resizeMainBoard
  set m .menu.options.board
  
  if {$::autoResizeBoard} {
    $m entryconfigure 0 -state disabled
  } else  {
    $m entryconfigure 0 -state normal
  }
}
################################################################################
proc ::docking::close {w} {
  set tabid [$w select]
  $w forget $tabid
  
  destroy $tabid
  _cleanup_tabs $w
  setTabStatus
}
################################################################################
proc ::docking::undock {srctab} {
  variable tbs
  if {[llength [$srctab tabs]]==1 && [llength [array names tbs]]==1} { return }
  
  set f [$srctab select]
  
  set name [$srctab tab $f -text]
  set o [$srctab tab $f]
  
  $srctab forget $f
  _cleanup_tabs $srctab
  
  wm manage $f
  
  setMenuVisibility $f true
  
  wm title $f $name
  
  # Uncomment this code to dock windows that have been previously undocked
  # wm protocol $f WM_DELETE_WINDOW [namespace code [list __dock $f]]
  
  wm deiconify $f
  set ::docking::notebook_name($f) [list $srctab $o]
  setTabStatus
}

################################################################################
proc ::docking::__dock {wnd} {
  variable tbs
  
  setMenuVisibility $wnd false
  
  set name [wm title $wnd]
  wm withdraw $wnd
  wm forget $wnd
  
  set d  $::docking::notebook_name($wnd)
  
  set dsttab [lindex $d 0]
  set o [lindex $d 1]
  
  if {![winfo exists $dsttab]} {
    set dsttab [lindex [array names tbs] 0]
  }
  eval $dsttab add $wnd $o
  raise $wnd
  $dsttab select $wnd
}

################################################################################
proc ::docking::add_tab {path anchor args} {
  variable tbs
  
  if { $::docking::layout_dest_notebook == ""} {
    # scan all tabs to find the most suitable
    set dsttab {}
    
    foreach tb [array names tbs] {
      set x [winfo rootx $tb]
      set y [winfo rooty $tb]
      set w [winfo width $tb]
      set h [winfo height $tb]
      switch $anchor {
        n { set rel {$y < $_y} }
        w { set rel {$x < $_x} }
        s { set rel {$y > $_y} }
        e { set rel {$x > $_x} }
      }
      if {$dsttab==""} {
        set dsttab $tb
        set _x $x
        set _y $y
      } elseif { [expr $rel] } {
        set dsttab $tb
        set _x $x
        set _y $y
      }
    }
  } else  {
    set dsttab $::docking::layout_dest_notebook
  }
  
  set title $path
  eval [list $dsttab add $path] $args -text "$title"
  setMenuMark $dsttab $path
  $dsttab select $path
}
################################################################################
# display a blue triangle showing the tab has a menu associated
proc ::docking::setMenuMark { nb tab} {
  if { $tab == ".fdockpgnWin" || [string match "\.fdocktreeWin*" $tab] || $tab == ".fdockccWindow" || \
        $tab == ".fdockoprepWin" } {
    $nb tab $tab -image bluetriangle -compound left
  }
}
################################################################################
# Layout management
################################################################################

set ::docking::layout_tbcnt 0

# associates pw -> notebook list
array set ::docking::layout_notebook {}

# associates notebook -> list of tabs
array set ::docking::layout_tabs {}

# the notebook into which to create a new tab
set ::docking::layout_dest_notebook ""

################################################################################
# saves layout (bail out if some windows cannot be restored like FICS)
proc ::docking::layout_save { slot } {
  if {[winfo exists .fics]} {
    tk_messageBox -title Scid -icon question -type ok -message "Cannot save layout with FICS opened"
    return
  }
  if {[winfo exists .oprepWin]} {
    tk_messageBox -title Scid -icon question -type ok -message "Cannot save layout with opening report opened"
    return
  }
  
  # on Windows the geometry is false if the window was maximized (x and y offsets are the ones before the maximization)
  set geometry [wm geometry .]
  if {[wm state .] == "zoomed"} {
    if { [scan $geometry "%dx%d+%d+%d" w h x y] == 4 } {
      set geometry "${w}x${h}+0+0"
    }
  }
  set ::docking::layout_list($slot) [list [list "MainWindowGeometry" $geometry] ]
  lappend ::docking::layout_list($slot) [ layout_save_pw .pw ]
}
################################################################################
proc ::docking::layout_save_pw {pw} {
  set ret {}
  
  # record sash position for each panes
  set sashpos {}
  for {set i 0} {$i < [ expr [llength [$pw panes]] -1]} {incr i} {
    lappend sashpos [$pw sashpos $i]
  }
  lappend ret [list $pw [$pw cget -orient ] $sashpos ]
  
  foreach p [$pw panes] {
    if {[get_class $p] == "TNotebook"} {
      lappend ret [list "TNotebook" $p [$p tabs] ]
    }
    if {[get_class $p] == "TPanedwindow"} {
      lappend ret [ list "TPanedwindow" [layout_save_pw $p] ]
    }
  }
  return $ret
}

################################################################################
# restores paned windows and internal notebooks
proc ::docking::layout_restore_pw { data } {
  
  foreach elt $data {
    update idletasks
    
    set type [lindex $elt 0]
    
    if {$type == "MainWindowGeometry"} {
      wm geometry . [lindex $elt 1]
      layout_restore_pw [lindex $data 1]
      break
    } elseif {$type == "TPanedwindow"} {
      layout_restore_pw [lindex $elt 1]
      
    } elseif {$type == "TNotebook"} {
      set name [lindex $elt 1]
      set tabs [lindex $elt 2]
      ::docking::layout_restore_nb $pw $name $tabs
      
    } else {
      
      set pw [lindex $elt 0]
      set orient [lindex $elt 1]
      # we have sash geometry
      if {[llength $elt] > 2} {
        lappend ::docking::sashpos [ list $pw [lindex $elt 2] ]
      }
      if { $pw == ".pw"} { continue }
      # build a new pw
      ttk::panedwindow $pw -orient $orient
      
      set parent [string range $pw 0 [expr [string last "." $pw ]-1 ] ]
      $parent add $pw -weight 1
    }
    
  }
  
}
################################################################################
# Sash position
################################################################################
proc ::docking::restoreGeometry {} {
  foreach elt $::docking::sashpos {
    update idletasks
    set pw [lindex $elt 0]
    set sash [lindex $elt 1]
    set i 0
    foreach pos $sash {
      $pw sashpos $i $pos
      incr i
    }
  }
}
################################################################################
# restores a notebook in a pre-existing panedwindow
# panewindow -> pw
# widget name -> name
# data to make tabs -> data (list of names wich can be used to trigger the correct windows)
proc ::docking::layout_restore_nb { pw name tabs} {
  variable tbcnt
  variable tbs
  
  set nb [ttk::notebook $name]
  incr tbcnt
  if {[scan $name ".tb%d" tmp] == 1} {
    if {$tmp >= $tbcnt} {
      set tbcnt [ expr $tmp +1]
    }
  }
  
  set tbs($nb) $pw
  
  $pw add $nb -weight 1
  
  set ::docking::tbs($nb) $pw
  
  set ::docking::layout_dest_notebook $nb
  
  foreach d $tabs {
    
    if { $d == ".fdockmain" } {
      $nb add $d -text $::tr(Board)
      raise $d
    }
    if { $d == ".fdockpgnWin" } { ::pgn::OpenClose ; ::pgn::Refresh 1 }
    if { $d == ".fdockanalysisWin1" } { ::makeAnalysisWin 1 0 }
    if { $d == ".fdockanalysisWin2" } { ::makeAnalysisWin 2 0 }
    if { $d == ".fdockbaseWin" } {  ::windows::switcher::Open }
    if { $d == ".fdockbookWin" } {  ::book::open }
    if { $d == ".fdockecograph" } {  ::windows::eco::OpenClose }
    if { $d == ".fdocktbWin" } { ::tb::Open }
    if { $d == ".fdockcommentWin" } {  ::commenteditor::Open }
    if { $d == ".fdockglistWin" } {::windows::gamelist::Open}
    if { $d == ".fdockccWindow" } {::CorrespondenceChess::CCWindow}
    if { [ scan $d ".fdocktreeWin%d" base ] == 1 } { ::tree::make $base}
  }
  
  # force the selection of first tab
  $nb select [ lindex [ $nb tabs] 0 ]
  
  set ::docking::layout_dest_notebook ""
}

################################################################################
proc ::docking::layout_restore { slot } {
  variable tbcnt
  variable tbs
  bind TNotebook <<NotebookTabChanged>> {}
  
  # if no layout recorded, return
  if { $::docking::layout_list($slot) == {} } {
    return
  }
  
  closeAll {.pw}
  set tbcnt 0
  array set ::docking::notebook_name {}
  array set ::docking::tbs {}
  set ::docking::sashpos {}
  
  layout_restore_pw $::docking::layout_list($slot)
  restoreGeometry
  
  array set ::docking::activeTab {}
  setTabStatus
  
  bind TNotebook <<NotebookTabChanged>> {::docking::tabChanged %W}
  
}
################################################################################
# for every notebook, keeps track of the last selected tab to see if the local menu can be popped up or not
proc ::docking::setTabStatus { } {
  variable tbs
  array set ::docking::activeTab {}
  array set ::docking::changedTab {}
  
  foreach nb [array names tbs] {
    set ::docking::activeTab($nb) [$nb select]
    set ::docking::changedTab($nb) 0
  }
  
}
################################################################################
# erase all mapped windows, except .main
proc ::docking::closeAll {pw} {
  
  foreach p [$pw panes] {
    
    if {[get_class $p] == "TPanedwindow"} {
      ::docking::closeAll $p
    }
    
    if {[get_class $p] == "TNotebook"} {
      foreach tabid [$p tabs] {
        $p forget $tabid
        if {$tabid != ".fdockmain"} {
          destroy $tabid
        }
        _cleanup_tabs $p
      }
    }
  }
  
}

################################################################################
if {$::docking::USE_DOCKING} {
  pack [ttk::panedwindow .pw -orient vertical] -fill both -expand true
  .pw add [ttk::notebook .nb] -weight 1
  
  set docking::tbs(.nb) .pw
  
}

createToplevel .main
::docking::setTabStatus
###
### misc.tcl: part of Scid.
### Copyright (C) 2001  Shane Hudson.
### Copyright (C) 2007  Pascal Georges
###
### Miscellaneous routines called by other Tcl functions

################################################################################
# vwait but will timeout after a delay. Var must be fully qualified (::)
################################################################################
proc vwaitTimed { var {delay 0} {warn "warnuser"} } {
  
  proc trigger {var warn} {
    if {$warn == "warnuser"} {
      tk_messageBox -type ok -icon error -parent . -title "Protocol error" -message "vwait timeout for $var"
    }
    set $var 1
  }
  
  if { $delay != 0 } {
    set timerId [after $delay "trigger $var $warn"]
  }
  
  vwait $var
  
  if [info exists timerId] { after cancel $timerId }
  
}

################################################################################
# bindFocusColors:
#   Configures a text or entry widget so it turns lightYellow when it
#   gets the focus, and turns white again when it loses focus.
#
# THIS IS CURRENTLY DISABLED since it works fine with regular entry widgets
# but causes problems with our combobox widgets, not sure why!
#
proc bindFocusColors {w {inColor lightYellow} {outColor white}} {
  $w configure -background $outColor
  #bind $w <FocusIn> "+$w configure -background $inColor"
  #bind $w <FocusOut> "+$w configure -background $outColor"
}


## FROM TK 8.5.9
## ttk::bindMouseWheel $bindtag $command...
#	Adds basic mousewheel support to $bindtag.
#	$command will be passed one additional argument
#	specifying the mousewheel direction (-1: up, +1: down).
#

proc ttk_bindMouseWheel {bindtag callback} {
    switch -- [tk windowingsystem] {
	x11 {
	    bind $bindtag <ButtonPress-4> "$callback -1"
	    bind $bindtag <ButtonPress-5> "$callback +1"
	}
	win32 {
	    bind $bindtag <MouseWheel> [append callback { [expr {-(%D/120)}]}]
	}
	aqua {
	    bind $bindtag <MouseWheel> [append callback { [expr {-(%D)}]} ]
	}
    }
}


# bindMouseWheel:
#   Given a window and a text frame within that window, binds
#   the mouse wheel to scroll the text frame vertically.
#
proc bindMouseWheel {win text} {
  bind $win <MouseWheel> \
      "$text yview scroll \[expr -(%D / 120)\] units"
  if {! $::windowsOS} {
    bind $win <Button-4> [list $text yview scroll -1 units]
    bind $win <Button-5> [list $text yview scroll  1 units]
  }
}

# dialogbuttonframe:
#   Creates a frame that will be shown at the bottom of a
#   dialog window. It takes two parameters: the frame widget
#   name to create, and a list of button args. Each element
#   should contain a widget name, and button arguments.
#
proc dialogbuttonframe {frame buttonlist} {
  ttk::frame $frame
  set bnames {}
  set maxlength 0
  foreach buttonargs $buttonlist {
    set bname $frame.[lindex $buttonargs 0]
    set bargs [lrange $buttonargs 1 end]
    eval ttk::button $bname $bargs
    set bnames [linsert $bnames 0 $bname]
    set length [string length [$bname cget -text]]
    if {$length > $maxlength} { set length $maxlength}
  }
  if {$maxlength < 7} { set maxlength 7 }
  foreach b $bnames {
    $b configure -width $maxlength -padx 4
    pack $b -side right -padx 4 -pady 4
  }
}

# packbuttons
#   Packs a row of dialog buttons to the left/right of their frame
#   with a standard amount of padding.
#
proc packbuttons {side args} {
  eval pack $args -side $side -padx 5 -pady 3
}

# dialogbutton:
#   Creates a button that will be shown in a dialog box, so it
#   is given a minumin width.
#
proc dialogbutton {w args} {
  set retval [eval ttk::button $w $args] ;# -style TButton
  set length [string length [$w cget -text]]
  if {$length < 7} { set length 7 }
  $w configure -width $length
  return retval
}

proc dialogbuttonsmall {w args {style "Small.TButton"} } {
  set retval [eval ttk::button $w -style $style $args]
  set length [string length [$w cget -text]]
  if {$length < 7} { set length 7 }
  $w configure -width $length
  return retval
}

# autoscrollframe
#   Creates and returns a frame containing a widget which is gridded
#   with scrollbars that automatically hide themselves when they are
#   not needed.
#   The frame and widget may already exist; they are created if needed.
#   FBF 2011.03.05:
#     $frame and $w aspects are not changed if they already exists
#     scrollbars are created on time 0, otherwise they are not hidden
#
#   Usage:
#      autoscrollframe [-bars none|x|y|both] frame type w args
#
proc autoscrollframe {args} {
  global _autoscroll
  set bars both
  if {[lindex $args 0] == "-bars"} {
    set bars [lindex $args 1]
    if {$bars != "x" && $bars != "y" && $bars != "none" && $bars != "both"} {
      return -code error "Invalid parameter: -bars $bars"
    }
    set args [lrange $args 2 end]
  }
  if {[llength $args] < 3} {
    return -code error "Insufficient number of parameters"
  }
  set frame [lindex $args 0]
  set type [lindex $args 1]
  set w [lindex $args 2]
  set args [lrange $args 3 end]
  
  set retval $frame
  if {! [winfo exists $frame]} {
    frame $frame
    $frame configure -relief sunken -borderwidth 2
  }
  if {! [winfo exists $w]} {
    $type $w
    if {[llength $args] > 0} {
      eval $w configure $args
    }
    $w configure -relief flat -borderwidth 0
  }
  grid $w -in $frame -row 0 -column 0 -sticky news
  set setgrid 0
  catch {set setgrid [$w cget -setgrid]}
  
  if {$bars == "y"  ||  $bars == "both"} {
    ttk::scrollbar $frame.ybar -command [list $w yview] -takefocus 0
    $w configure -yscrollcommand [list _autoscroll $frame.ybar]
    grid $frame.ybar -row 0 -column 1 -sticky ns
    set _autoscroll($frame.ybar) 1
    set _autoscroll(time:$frame.ybar) 0
    if {! $setgrid} {
      # bind $frame.ybar <Map> [list _autoscrollMap $frame]
    }
  }
  if {$bars == "x"  ||  $bars == "both"} {
    ttk::scrollbar $frame.xbar -command [list $w xview] -takefocus 0 -orient horizontal
    $w configure -xscrollcommand [list _autoscroll $frame.xbar]
    grid $frame.xbar -row 1 -column 0 -sticky we
    set _autoscroll($frame.xbar) 1
    set _autoscroll(time:$frame.xbar) 0
    if {! $setgrid} {
      # bind $frame.xbar <Map> [list _autoscrollMap $frame]
    }
  }
  grid rowconfigure $frame 0 -weight 1
  grid columnconfigure $frame 0 -weight 1
  grid rowconfigure $frame 1 -weight 0
  grid columnconfigure $frame 1 -weight 0
  return $retval
}

array set _autoscroll {}

# _autoscroll
#   This is the "set" command called for auto-scrollbars.
#   If the bar is shown but should not be, it is hidden.
#   If the bar is hidden but should be shown, it is redrawn.
#   Note that once a bar is shown, it will not be removed again for
#   at least a few milliseconds; this is to overcome problematic
#   interactions between the x and y scrollbars where hiding one
#   causes the other to be shown etc. This usually happens because
#   the stupid Tcl/Tk text widget doesn't handle scrollbars well.
#
proc _autoscroll {bar args} {
  global _autoscroll
  if {[llength $args] == 2} {
    set min [lindex $args 0]
    set max [lindex $args 1]
    if {$min > 0.0  ||  $max < 1.0} {
      if {! $_autoscroll($bar)} {
        grid configure $bar
        set _autoscroll($bar) 1
        set _autoscroll(time:$bar) [clock clicks -milli]
      }
    } else {
      if {[clock clicks -milli] > [expr {$_autoscroll(time:$bar) + 100}]} {
        grid remove $bar
        set _autoscroll($bar) 0
      }
    }
    # update idletasks
  }
  eval $bar set $args
}

proc _autoscrollMap {frame} {
  # wm geometry [winfo toplevel $frame] [wm geometry [winfo toplevel $frame]]
}


# busyCursor, unbusyCursor:
#   Sets all cursors to watch (indicating busy) or back to their normal
#   setting again.

array set scid_busycursor {}
set scid_busycursorState 0

proc doBusyCursor {w flag} {
  global scid_busycursor
  if {! [winfo exists $w]} { return }
  # The comment editor window "flashes" when its cursor is changed,
  # no idea why but skip over it:
  if {$w == ".commentWin"} { return }
  if {[winfo class $w] == "Menu"} { return }
  
  if {$flag} {
    if { [ catch { set scid_busycursor($w) [$w cget -cursor] } ] } {
      return
    }
    catch {$w configure -cursor watch}
  } else {
    catch {$w configure -cursor $scid_busycursor($w)} err
  }
  foreach i [winfo children $w] { doBusyCursor $i $flag }
}

proc busyCursor {w {flag 1}} {
  global scid_busycursor scid_busycursorState
  if {$scid_busycursorState == $flag} { return }
  set scid_busycursorState $flag
  doBusyCursor $w $flag
}

proc unbusyCursor {w} {busyCursor $w 0}


# addHorizontalRule, addVerticalRule
#   Add a horizontal/vertical rule frame to a window.
#   The optional parameters [x/y]padding and sunken allow the spacing and
#   appearance of the rule to be specified.
#
set horizRuleCounter 0
set vertRuleCounter 0

proc addHorizontalRule {w {ypadding 5} {relief sunken} {height 2} } {
  global horizRuleCounter
  
  ttk::separator $w.line$horizRuleCounter -orient horizontal
  pack $w.line$horizRuleCounter -fill x ;# -pady $ypadding
  
  # set f [ ttk::frame $w.line$horizRuleCounter -height $height -borderwidth 2 -relief $relief ]
  # pack $f -fill x -pady $ypadding
  incr horizRuleCounter
}

proc addVerticalRule {w {xpadding 5} {relief sunken}} {
  global vertRuleCounter
  
  ttk::separator $w.line$vertRuleCounter -orient vertical
  pack $w.line$vertRuleCounter -fill y -side left ;# -padx $xpadding
  
  # set f [ ttk::frame $w.line$vertRuleCounter -width 2 -borderwidth 2 -relief $relief ]
  # pack $f -fill y -padx $xpadding -side left
  incr vertRuleCounter
}

# progressWindow:
#   Creates a window with a label, progress bar, and (if specified),
#   a cancel button and cancellation command.
#
proc progressWindow {args} {
  set w .progressWin
  if {[winfo exists $w]} { return }
  toplevel $w
  pack [ttk::frame $w.f] -expand 1
  
  wm withdraw $w
  wm resizable $w 0 0
  if {[llength $args] == 2} {
    set title [lindex $args 0]
    set text [lindex $args 1]
    set b 0
  } elseif {[llength $args] == 4} {
    set title [lindex $args 0]
    set text [lindex $args 1]
    set button [lindex $args 2]
    set command [lindex $args 3]
    set b 1
  } else { return }
  wm title $w $title
  ttk::label $w.f.t -text $text
  pack $w.f.t -side top -expand 1 -fill both
  canvas $w.f.c -width 400 -height 20 -bg white -relief solid -border 1
  $w.f.c create rectangle 0 0 0 0 -fill blue -outline blue -tags bar
  $w.f.c create text 395 10 -anchor e -font font_Regular -tags time -fill black -text "0:00 / 0:00"
  pack $w.f.c -side top -pady 10
  if {$b} {
    pack [ttk::frame $w.f.b] -side bottom -fill x
    ttk::button $w.f.b.cancel -text $button -command $command
    pack $w.f.b.cancel -side right -padx 5 -pady 2
  }
  # Set up geometry for middle of screen:
  set x [winfo screenwidth $w]
  set x [expr {$x - 400} ]
  set x [expr {$x / 2} ]
  set y [winfo screenheight $w]
  set y [expr {$y - 20} ]
  set y [expr {$y / 2} ]
  wm geometry $w +$x+$y
  sc_progressBar $w.f.c bar 401 21 time
  update idletasks
  wm deiconify $w
  raiseWin $w
  if {$b} {
    catch { grab $w.f.b.cancel }
  } else {
    grab $w
  }
  bind $w <Visibility> "raiseWin $w"
  set ::progressWin_time [clock seconds]
}

proc leftJustifyProgressWindow {} {
  set w .progressWin
  if {! [winfo exists $w]} { return }
  pack configure $w.f.t -fill x
  $w.f.t configure -width 1 -anchor w
}

proc changeProgressWindow {newtext} {
  set w .progressWin
  if {[winfo exists $w]} {
    $w.f.t configure -text $newtext
    update idletasks
  }
}

proc resetProgressWindow {} {
  set w .progressWin
  set ::progressWin_time [clock seconds]
  if {[winfo exists $w]} {
    $w.f.c coords bar 0 0 0 0
    $w.f.c itemconfigure time -text "0:00 / 0:00"
    update idletasks
  }
}

proc updateProgressWindow {done total} {
  set w .progressWin
  if {! [winfo exists $w]} { return }
  set elapsed [expr {[clock seconds] - $::progressWin_time}]
  set width 401
  if {$total > 0} {
    set width [expr {int(double($width) * double($done) / double($total))}]
  }
  $w.f.c coords bar 0 0 $width 21
  set estimated $elapsed
  if {$done != 0} {
    set estimated [expr {int(double($elapsed) * double($total) / double($done))}]
  }
  set t [format "%d:%02d / %d:%02d" \
      [expr {$elapsed / 60}] [expr {$elapsed % 60}] \
      [expr {$estimated / 60}] [expr {$estimated % 60}]]
  $w.f.c itemconfigure time -text $t
  update
}

proc closeProgressWindow {} {
  set w .progressWin
  if {! [winfo exists $w]} {
    # puts stderr "Hmm, no progress window -- bug?"
    return
  }
  grab release $w
  destroy $w
}
################################################################################
# clock widget
################################################################################
namespace eval gameclock {
  array set data {}
  ################################################################################
  proc new { parent n { size 100 } {showfall 0} } {
    global ::gameclock::data
    set data(showfallen$n) $showfall
    set data(id$n) $parent.clock$n
    canvas $data(id$n) -height $size -width $size
    pack $data(id$n) -side top -anchor center
    for {set i 1} {$i<13} {incr i} {
      set a [expr {$i/6.*acos(-1)}]
      set x [expr { ($size/2 + (($size-15)/2)*sin($a) ) }]
      set y [expr { ($size/2 - (($size-15)/2)*cos($a) ) }]
      $data(id$n) create text $x $y -text $i -tag clock$n
    }
    set data(fg$n) "black"
    set data(running$n) 0
    set data(digital$n) 1
    ::gameclock::reset $n
    ::gameclock::draw $n
    bind $data(id$n) <Button-1> "::gameclock::toggleClock $n"
  }
  ################################################################################
  proc draw { n } {
    global ::gameclock::data
    if {! [winfo exists $data(id$n)]} { return }
    $data(id$n) delete aig$n
    
    set w [$data(id$n) cget -width ]
    set h [$data(id$n) cget -height ]
    set cx [ expr $w / 2 ]
    set cy [ expr $h / 2 ]
    if {$w < $h} {
      set size [ expr $w - 15 ]
    } else  {
      set size [ expr $h - 15 ]
    }
    
    set sec $data(counter$n)
    if { $sec > 0 && $data(showfallen$n) } {
      set color "red"
    } else  {
      set color $::gameclock::data(fg$n)
    }
    
    if {$color == "white"} {set fg "black"} else {set fg "white"}
    
    foreach divisor {30 1800 21600} length "[expr $size/2 * 0.8] [expr $size/2 * 0.7] [expr $size/2 * 0.4]" \
        width {1 2 3} {
          set angle [expr {$sec * acos(-1) / $divisor}]
          set x [expr {$cx + $length * sin($angle)}]
          set y [expr {$cy - $length * cos($angle)}]
          $data(id$n) create line $cx $cy $x $y -width $width -tags aig$n -fill $color
        }
    # draw a digital clock
    if {$data(digital$n)} {
      set m [format "%02d" [expr abs($sec) / 60] ]
      set s [format "%02d" [expr abs($sec) % 60] ]
      $data(id$n) create text $cx [expr $cy + $size/4 ] -text "$m:$s" -anchor center -fill $color -tag aig$n
    }
  }
  ################################################################################
  proc every {ms body n} {
    incr ::gameclock::data(counter$n)
    eval $body
    if {[winfo exists $::gameclock::data(id$n)]} {
      after $ms [info level 0]
    }
  }
  ################################################################################
  proc getSec { n } {
    return [expr 0 - $::gameclock::data(counter$n)]
  }
  ################################################################################
  proc setSec { n value } {
    set ::gameclock::data(counter$n) $value
    ::gameclock::draw $n
  }
  ################################################################################
  proc add { n value } {
    set ::gameclock::data(counter$n) [ expr $::gameclock::data(counter$n) - $value ]
    ::gameclock::draw $n
  }
  
  ################################################################################
  proc reset { n } {
    ::gameclock::stop $n
    set ::gameclock::data(counter$n) 0
  }
  ################################################################################
  proc start { n } {
    if {$::gameclock::data(running$n)} { return }
    set ::gameclock::data(running$n) 1
    ::gameclock::every 1000 "draw $n" $n
  }
  ################################################################################
  proc stop { n } {
    if {! $::gameclock::data(running$n)} { return }
    set ::gameclock::data(running$n) 0
    after cancel "::gameclock::every 1000 \{draw $n\} $n"
  }
  ################################################################################
  proc toggleClock { n } {
    if { $::gameclock::data(running$n) } {
      stop $n
    } else  {
      start $n
    }
  }
  ################################################################################
  proc setColor { n color } {
    if {$color == "white"} {
      set fg "black"
      set bg "white"
    } else {
      set fg "white"
      set bg "black"
    }
    set ::gameclock::data(fg$n) $fg
    $::gameclock::data(id$n) configure -background $bg
    $::gameclock::data(id$n) itemconfigure clock$n -fill $fg
    $::gameclock::data(id$n) itemconfigure aig$n -fill $fg
  }
}
################################################################################
# html generation
################################################################################
namespace eval html {
  set data {}
  set idx 0
  
  ################################################################################
  proc exportCurrentFilter {} {
    # Check that we have some games to export:
    if {![sc_base inUse]} {
      tk_messageBox -title "Scid: Empty database" -type ok -icon info \
          -message "This is an empty database, there are no games to export."
      return
    }
    if {[sc_filter count] == 0} {
      tk_messageBox -title "Scid: Filter empty" -type ok -icon info \
          -message "The filter contains no games."
      return
    }
    set ftype {
      { "HTML files" {".html" ".htm"} }
      { "All files" {"*"} }
    }
    set idir $::initialDir(html)
    set fName [tk_getSaveFile -initialdir $idir -filetypes $ftype -defaultextension ".html" -title "Create an HTML file"]
    if {$fName == ""} { return }
    if {[file extension $fName] != ".html" } {
      append fName ".html"
    }
    set prefix [file rootname [file tail $fName] ]
    set dirtarget [file dirname $fName]
    set sourcedir [file join $::scidExeDir html]
    catch {file copy -force [file join $sourcedir bitmaps] $dirtarget}
    catch {file copy -force [file join $sourcedir scid.js] $dirtarget}
    catch {file copy -force [file join $sourcedir scid.css] $dirtarget}
    # writeIndex "[file join $dirtarget $prefix].html" $prefix
    progressWindow "Scid" "Exporting games..." $::tr(Cancel) "sc_progressBar"
    busyCursor .
    set savedGameNum [sc_game number]
    set gn [sc_filter first]
    set players {}
    set ::html::cancelHTML 0
    set total [sc_filter count]
    
    # build the list of matches
    set idx 1
    while {$gn != 0 && ! $::html::cancelHTML} {
      updateProgressWindow $idx $total
      sc_game load $gn
      set pl "[sc_game tags get White] - [sc_game tags get Black]"
      lappend players $pl
      set gn [sc_filter next]
      incr idx
    }
    
    set idx 1
    set gn [sc_filter first]
    while {$gn != 0 && ! $::html::cancelHTML} {
      updateProgressWindow $idx $total
      sc_game load $gn
      fillData
      set pl "[sc_game tags get White] - [sc_game tags get Black]"
      toHtml $::html::data $idx $dirtarget $prefix $players $pl [sc_game tags get "Event"] [sc_game tags get "ECO"] [sc_game info result] [sc_game tags get "Date"]
      set gn [sc_filter next]
      incr idx
    }
    
    closeProgressWindow
    unbusyCursor .
    exportPGN "[file join $dirtarget $prefix].pgn" "filter"
    sc_game load $savedGameNum
  }
  ################################################################################
  proc sc_progressBar {} {
    set ::html::cancelHTML 1
  }
  ################################################################################
  proc exportCurrentGame {} {
    
    set ftype {
      { "HTML files" {".html" ".htm"} }
      { "All files" {"*"} }
    }
    set idir $::initialDir(html)
    set fName [tk_getSaveFile -initialdir $idir -filetypes $ftype -defaultextension ".html" -title "Create an HTML file"]
    if {[file extension $fName] != ".html" && [file extension $fName] != ".htm" } {
      append fName ".html"
    }
    if {$fName == ""} { return }
    set prefix [file rootname [file tail $fName] ]
    set dirtarget [file dirname $fName]
    set sourcedir [file join $::scidExeDir html]
    catch { file copy -force [file join $sourcedir bitmaps] $dirtarget }
    catch { file copy -force [file join $sourcedir scid.js] $dirtarget }
    catch { file copy -force [file join $sourcedir scid.css] $dirtarget }
    
    fillData
    set players [list "[sc_game tags get White] - [sc_game tags get Black]"]
    toHtml $::html::data -1 $dirtarget $prefix $players [lindex $players 0] \
        [sc_game tags get "Event"] [sc_game tags get "ECO"] \
        [sc_game info result] [sc_game tags get "Date"]
    exportPGN "[file join $dirtarget $prefix].pgn" "current"
  }
  ################################################################################
  # Dictionary mapping from special characters to their entities. (from tcllib)
  variable entities {
    \xa0 &nbsp; \xa1 &iexcl; \xa2 &cent; \xa3 &pound; \xa4 &curren;
    \xa5 &yen; \xa6 &brvbar; \xa7 &sect; \xa8 &uml; \xa9 &copy;
    \xaa &ordf; \xab &laquo; \xac &not; \xad &shy; \xae &reg;
    \xaf &macr; \xb0 &deg; \xb1 &plusmn; \xb2 &sup2; \xb3 &sup3;
    \xb4 &acute; \xb5 &micro; \xb6 &para; \xb7 &middot; \xb8 &cedil;
    \xb9 &sup1; \xba &ordm; \xbb &raquo; \xbc &frac14; \xbd &frac12;
    \xbe &frac34; \xbf &iquest; \xc0 &Agrave; \xc1 &Aacute; \xc2 &Acirc;
    \xc3 &Atilde; \xc4 &Auml; \xc5 &Aring; \xc6 &AElig; \xc7 &Ccedil;
    \xc8 &Egrave; \xc9 &Eacute; \xca &Ecirc; \xcb &Euml; \xcc &Igrave;
    \xcd &Iacute; \xce &Icirc; \xcf &Iuml; \xd0 &ETH; \xd1 &Ntilde;
    \xd2 &Ograve; \xd3 &Oacute; \xd4 &Ocirc; \xd5 &Otilde; \xd6 &Ouml;
    \xd7 &times; \xd8 &Oslash; \xd9 &Ugrave; \xda &Uacute; \xdb &Ucirc;
    \xdc &Uuml; \xdd &Yacute; \xde &THORN; \xdf &szlig; \xe0 &agrave;
    \xe1 &aacute; \xe2 &acirc; \xe3 &atilde; \xe4 &auml; \xe5 &aring;
    \xe6 &aelig; \xe7 &ccedil; \xe8 &egrave; \xe9 &eacute; \xea &ecirc;
    \xeb &euml; \xec &igrave; \xed &iacute; \xee &icirc; \xef &iuml;
    \xf0 &eth; \xf1 &ntilde; \xf2 &ograve; \xf3 &oacute; \xf4 &ocirc;
    \xf5 &otilde; \xf6 &ouml; \xf7 &divide; \xf8 &oslash; \xf9 &ugrave;
    \xfa &uacute; \xfb &ucirc; \xfc &uuml; \xfd &yacute; \xfe &thorn;
    \xff &yuml; \u192 &fnof; \u391 &Alpha; \u392 &Beta; \u393 &Gamma;
    \u394 &Delta; \u395 &Epsilon; \u396 &Zeta; \u397 &Eta; \u398 &Theta;
    \u399 &Iota; \u39A &Kappa; \u39B &Lambda; \u39C &Mu; \u39D &Nu;
    \u39E &Xi; \u39F &Omicron; \u3A0 &Pi; \u3A1 &Rho; \u3A3 &Sigma;
    \u3A4 &Tau; \u3A5 &Upsilon; \u3A6 &Phi; \u3A7 &Chi; \u3A8 &Psi;
    \u3A9 &Omega; \u3B1 &alpha; \u3B2 &beta; \u3B3 &gamma; \u3B4 &delta;
    \u3B5 &epsilon; \u3B6 &zeta; \u3B7 &eta; \u3B8 &theta; \u3B9 &iota;
    \u3BA &kappa; \u3BB &lambda; \u3BC &mu; \u3BD &nu; \u3BE &xi;
    \u3BF &omicron; \u3C0 &pi; \u3C1 &rho; \u3C2 &sigmaf; \u3C3 &sigma;
    \u3C4 &tau; \u3C5 &upsilon; \u3C6 &phi; \u3C7 &chi; \u3C8 &psi;
    \u3C9 &omega; \u3D1 &thetasym; \u3D2 &upsih; \u3D6 &piv;
    \u2022 &bull; \u2026 &hellip; \u2032 &prime; \u2033 &Prime;
    \u203E &oline; \u2044 &frasl; \u2118 &weierp; \u2111 &image;
    \u211C &real; \u2122 &trade; \u2135 &alefsym; \u2190 &larr;
    \u2191 &uarr; \u2192 &rarr; \u2193 &darr; \u2194 &harr; \u21B5 &crarr;
    \u21D0 &lArr; \u21D1 &uArr; \u21D2 &rArr; \u21D3 &dArr; \u21D4 &hArr;
    \u2200 &forall; \u2202 &part; \u2203 &exist; \u2205 &empty;
    \u2207 &nabla; \u2208 &isin; \u2209 &notin; \u220B &ni; \u220F &prod;
    \u2211 &sum; \u2212 &minus; \u2217 &lowast; \u221A &radic;
    \u221D &prop; \u221E &infin; \u2220 &ang; \u2227 &and; \u2228 &or;
    \u2229 &cap; \u222A &cup; \u222B &int; \u2234 &there4; \u223C &sim;
    \u2245 &cong; \u2248 &asymp; \u2260 &ne; \u2261 &equiv; \u2264 &le;
    \u2265 &ge; \u2282 &sub; \u2283 &sup; \u2284 &nsub; \u2286 &sube;
    \u2287 &supe; \u2295 &oplus; \u2297 &otimes; \u22A5 &perp;
    \u22C5 &sdot; \u2308 &lceil; \u2309 &rceil; \u230A &lfloor;
    \u230B &rfloor; \u2329 &lang; \u232A &rang; \u25CA &loz;
    \u2660 &spades; \u2663 &clubs; \u2665 &hearts; \u2666 &diams;
    \x22 &quot; \x26 &amp; \x3C &lt; \x3E &gt; \u152 &OElig;
    \u153 &oelig; \u160 &Scaron; \u161 &scaron; \u178 &Yuml;
    \u2C6 &circ; \u2DC &tilde; \u2002 &ensp; \u2003 &emsp; \u2009 &thinsp;
    \u200C &zwnj; \u200D &zwj; \u200E &lrm; \u200F &rlm; \u2013 &ndash;
    \u2014 &mdash; \u2018 &lsquo; \u2019 &rsquo; \u201A &sbquo;
    \u201C &ldquo; \u201D &rdquo; \u201E &bdquo; \u2020 &dagger;
    \u2021 &Dagger; \u2030 &permil; \u2039 &lsaquo; \u203A &rsaquo;
    \u20AC &euro;
  }
  proc html_entities {s} {
    variable entities
    return [string map $entities $s]
  }
  ################################################################################
  proc toHtml { dt game dirtarget prefix {players ""} {this_players ""} {event ""} {eco "ECO"} {result "*"} {date ""} } {
    
    if { $game != -1 } {
      set f [open "[file join $dirtarget $prefix]_${game}.html" w]
    } else  {
      set f [open "[file join $dirtarget $prefix].html" w]
    }
    # header
    puts $f "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd\">"
    puts $f "<html xmlns=\"http://www.w3.org/1999/xhtml\" xml:lang=\"en\" lang=\"en\">"
    puts $f "<head>"
    puts $f "<meta http-equiv=\"content-type\" content=\"text/html; charset=utf-8\" />"
    puts $f "<link rel=\"stylesheet\" type=\"text/css\" href=\"scid.css\" />"
    puts $f "<script src=\"scid.js\" type=\"text/javascript\"></script>"
    puts $f "<script type=\"text/javascript\">"
    puts $f "// <!\[CDATA\["
    puts $f "movesArray = new Array("
    for {set i 0} {$i<[llength $dt]} {incr i} {
      array set elt [lindex $dt $i]
      puts -nonewline $f "\"$elt(fen) $elt(prev) $elt(next)\""
      if {$i < [expr [llength $dt] -1]} { puts $f "," }
    }
    puts $f ");"
    puts $f "var current = 0;"
    puts $f "var prefix = \"$prefix\";"
    puts $f "// \]\]>"
    puts $f "</script>"
    puts $f "<title>Scid</title>"
    puts $f "<meta content=\"Scid\" name=\"author\" />"
    puts $f "</head>"
    puts $f "<body onload=\"doinit()\" onkeydown=\"handlekey(event)\">"
    puts $f "<div id=\"framecontent\">"
    puts $f "<div class=\"innertube\">"
    # diagram
    puts $f "<div id=\"diagram\"><!-- diagram goes here --></div>"
    # navigation
    puts $f "<div id=\"nav\" style=\"text-align: center\"><!-- navigation goes here -->"
    puts $f "<form action=\"#\">"
    puts $f "<p>"
    puts $f "<input type='button' value=' &darr;&uarr; ' onclick='rotate()' /> <input type='button' value=' |&lt; ' onclick='jump(0)' /> <input type='button' value=' &lt; ' onclick='moveForward(0)' /> <input type='button' value=' &gt; ' onclick='moveForward(1)' /> <input type='button' value=' &gt;| ' onclick='jump(1)' /> "
    puts $f "</p><p>"
    # other games navigation
    puts $f "<select name=\"gameselect\" id=\"gameselect\" size=\"1\" onchange=\"gotogame()\">"
    set i 1
    foreach l $players {
      if { $game == $i } {
        puts $f "<option  selected=\"selected\">$i. [html_entities $l]</option>"
      } else  {
        puts $f "<option>$i. [html_entities $l]</option>"
      }
      incr i
    }
    puts $f "</select>"
    puts $f "</p><p>"
    puts $f "<input type=\"button\" value=\"&lt;--\" onclick=\"gotoprevgame()\" /> &nbsp; <input type=\"button\" value=\"--&gt;\" onclick=\"gotonextgame()\" />"
    puts $f "</p><p>"
    puts $f "<a href=\"${prefix}.pgn\">${prefix}.pgn</a>"
    puts $f "</p>"
    puts $f "</form>"
    puts $f "</div>"
    puts $f "</div>"
    puts $f "</div>"
    puts $f "<div id=\"maincontent\">"
    puts $f "<div class=\"innertube\">"
    puts $f "<div id=\"moves\"><!-- moves go here -->"
    # game header
    puts $f "<span class=\"hPlayers\"> [html_entities $this_players]</span>"
    puts $f "<span class=\"hEvent\"><br /> [html_entities $event]</span>"
    puts $f "<span class=\"hEvent\"><br />\[$date\]</span>"
    puts $f "<span class=\"hAnnot\"><br />\[$eco\]</span>"
    puts $f "<p>"
    # link moves
    set prevdepth 0
    set prevvarnumber 0
    for {set i 0} {$i<[llength $dt]} {incr i} {
      array set elt [lindex $dt $i]
      if {$elt(depth) == 0} {
        set class "V0"
      } elseif {$elt(depth) == 1} {
        set class "V1"
      } else {
        set class "V2"
      }
      if { $prevdepth == $elt(depth) && $prevvarnumber != $elt(var) } {
        puts $f "<span class=\"VC\">\]</span></div>"
        puts $f "<div class=\"var\"><span class=\"VC\">\[</span>"
      } else {
        while { $prevdepth > $elt(depth) } {
            puts $f "<span class=\"VC\">\]</span></div>"
            set prevdepth [expr $prevdepth - 1]
        }
        while { $prevdepth < $elt(depth) } {
            puts $f "<div class=\"var\"><span class=\"VC\">\[</span>"
            set prevdepth [expr $prevdepth + 1]
        }
      }
      set prevvarnumber $elt(var)
      # id = "mv1" not "id=1" now
      set nag [html_entities $elt(nag)]
      set comment [html_entities $elt(comment)]
      puts $f "<a href=\"javascript:gotoMove($elt(idx))\" id=\"mv$elt(idx)\" class=\"$class\">$elt(move)$nag</a>"
      if {$elt(diag)} {
        insertMiniDiag $elt(fen) $f
      }
      if {$comment != ""} {
        puts $f "<span class=\"VC\">$comment</span>"
      }
    }
    while { $prevdepth > 0 } {
        puts $f "<span class=\"VC\">\]</span></div>"
        set prevdepth [expr $prevdepth - 1]
    }

    puts $f "<br /><span class=\"VH\">$result</span>"
    puts $f "<p>"
    puts $f "<a href=\"http://scid.sourceforge.net/\" style=\"font-size: 0.8em\">Created with Scid</a>"
    puts $f "</div>"
    puts $f "</div>"
    puts $f "</div>"
    puts $f "</body>"
    puts $f "</html>"
    close $f
  }
  ################################################################################
  proc colorSq {sq} {
    if { [expr $sq % 2] == 1 && [expr int($sq / 8) %2 ] == 0 || [expr $sq % 2] == 0 && [expr int($sq / 8) %2 ] == 1 } {
      return "bs"
    } else {
      return "ws"
    }
  }
  ################################################################################
  proc piece2gif {piece} {
    if {$piece == "K"} { return "wk" }
    if {$piece == "k"} { return "bk" }
    if {$piece == "Q"} { return "wq" }
    if {$piece == "q"} { return "bq" }
    if {$piece == "R"} { return "wr" }
    if {$piece == "r"} { return "br" }
    if {$piece == "B"} { return "wb" }
    if {$piece == "b"} { return "bb" }
    if {$piece == "N"} { return "wn" }
    if {$piece == "n"} { return "bn" }
    if {$piece == "P"} { return "wp" }
    if {$piece == "p"} { return "bp" }
    if {$piece == " "} { return "sq" }
  }
  ################################################################################
  proc insertMiniDiag {fen f} {
    
    set square 0
    set space " "
    puts $f "<table Border=0 CellSpacing=0 CellPadding=0><tr>"
    
    for {set i 0} {$i < [string length $fen]} {incr i} {
      set l [string range $fen $i $i ]
      set res [scan $l "%d" c]
      if {$res == 1} {
        if  { $c >= 1 && $c <= 8 } {
          for { set j 0} {$j < $c} {incr j} {
            puts $f "<td class=\"[colorSq $square]\"><img border=0 align=\"left\" src=\"bitmaps/mini/[piece2gif $space].gif\"></td>"
            incr square
          }
        }
      } elseif {$l == "/"}  {
        puts $f "</tr><tr>"
      } else  {
        puts $f "<td class=\"[colorSq $square]\"><img border=0 align=\"left\" src=\"bitmaps/mini/[piece2gif $l].gif\"></td>"
        incr square
      }
    }
    
    puts $f "</tr></table>"
  }
  
  ################################################################################
  # fill data with { idx FEN prev next move nag comment depth }
  proc fillData {} {
    sc_info preMoveCmd {}
    set ::html::data {}
    set ::html::idx -1
    sc_move start
    parseGame
    sc_info preMoveCmd preMoveCommand
  }
  
  ################################################################################
  proc parseGame { {prev -2} } {
    global ::html::data ::html::idx
    
    set already_written 0
    
    set dots 0
    
    while {1} {
      if { ! $already_written } {
        recordElt $dots $prev
        set dots 0
        set prev -2
      } else {
        set dots 1
      }
      set already_written 0
      
      # handle variants
      if {[sc_var count]>0} {
        # First write the move in the current line for which variations exist
        #
        if { ![sc_pos isAt vend]} {
          sc_move forward
          recordElt $dots $prev
          sc_move back
          set lastIdx $idx
          set already_written 1
        }
        for {set v 0} {$v<[sc_var count]} {incr v} {
          sc_var enter $v
          # in order to get the comment before first move
          sc_move back
          parseGame -1
          sc_var exit
        }
        #update the "next" token
        array set elt [lindex $data $lastIdx]
        set elt(next) [expr $idx + 1]
        lset data $lastIdx [array get elt]
        #update the "previous" token
        set prev $lastIdx
      }
      
      if {[sc_pos isAt vend]} { break }
      sc_move forward
    }
  }
  ################################################################################
  proc recordElt { dots {prev -2} } {
    global ::html::data ::html::idx
    
    array set elt {}
    
    incr idx
    set elt(idx) $idx
    set elt(fen) [lindex [split [sc_pos fen]] 0]
    if {$prev != -2} {
      set elt(prev) $prev
    } else  {
      set elt(prev) [expr $idx-1]
    }
    
    set nag [sc_pos getNags]
    if {$nag == "0"} { set nag "" }
    if {[string match "*D *" $nag] || [string match "*# *" $nag]} {
      set elt(diag) 1
    } else  {
      set elt(diag) 0
    }
    set nag [regsub -all "D " $nag "" ]
    set nag [regsub -all "# " $nag "" ]
    set elt(nag) $nag
    set comment [sc_pos getComment]
    set comment [regsub -all "\[\x5B\]%draw (.)+\[\x5D\]" $comment ""]
    set elt(comment) $comment
    set elt(depth) [sc_var level]
    set elt(var) [sc_var number]
    if {![sc_pos isAt vend]} {
      set elt(next) [expr $idx +1 ]
    } else  {
      set elt(next) -1
    }
    
    set m [sc_game info previousMove]
    set mn [sc_pos moveNumber]
    
    set elt(move) ""
    if {[sc_pos side] == "black" && $m != ""} {
      set elt(move) "$mn.$m"
    } else {
      
      if {! [sc_pos isAt vstart] } {
        sc_move back
        set pnag [sc_pos getNags]
        if {$pnag == "0"} { set pnag "" }
        if {[string match "*D *" $pnag] || [string match "*# *" $pnag]} {
          set pdiag 1
        } else  {
          set pdiag 0
        }
        if {  [sc_pos isAt vstart] ||  [sc_pos getComment] != "" || $pdiag > 0 } {
          set dots 1
        }
        sc_move forward
      }
      
      if {$dots && $m != ""} {
        set elt(move) "[expr $mn -1]. ... $m"
      } else  {
        set elt(move) $m
      }
      
    }
    
    lappend ::html::data [array get elt]
    
  }
  
  ################################################################################
  # proc writeIndex {fn prefix} {
  # set f [open $fn w]
  # puts $f "<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">"
  # puts $f "<html>"
  # puts $f "<head>"
  # puts $f "<meta content=\"text/html; charset=ISO-8859-1\" http-equiv=\"content-type\">"
  # puts $f "<title>Scid</title>"
  # puts $f "<meta content=\"Scid\" name=\"author\">"
  # puts $f "</head>"
  # puts $f "<frameset BORDER=\"0\" FRAMEBORDER=\"0\" FRAMESPACING=\"0\" COLS=\"380,*\">"
  # puts $f "<frameset BORDER=\"0\" FRAMEBORDER=\"0\" FRAMESPACING=\"0\" ROWS=\"380,*\">"
  # puts $f "<frame NAME=\"diagram\" SCROLLING=\"Auto\">"
  # puts $f "<frame NAME=\"nav\" SRC=\"${prefix}_nav.html\" SCROLLING=\"Auto\">"
  # puts $f "</frameset>"
  # puts $f "<frame NAME=\"moves\" SRC=\"${prefix}_1.html\" SCROLLING=\"Auto\">"
  # puts $f "</frameset>"
  # puts $f "</html>"
  # close $f
  # }
  ################################################################################
  proc exportPGN { fName selection } {
    if {$selection == "filter"} {
      progressWindow "Scid" "Exporting games..." $::tr(Cancel) "sc_progressBar"
    }
    busyCursor .
    sc_base export $selection "PGN" $fName -append 0 -starttext "" -endtext "" -comments 1 -variations 1 \
        -space 1 -symbols 1 -indentC 0 -indentV 0 -column 0 -noMarkCodes 1 -convertNullMoves 1
    unbusyCursor .
    if {$selection == "filter"} {
      closeProgressWindow
    }
  }
  
}
################################################################################
#
################################################################################

# end of misc.tcl
###################
# htext.tcl: Online help/hypertext display module for Scid
#
# The htext module implements html-like display in a text widget.
# It is used in Scid for the help and crosstable windows, and for
# the game information area.

namespace eval ::htext {}

set helpWin(Stack) {}
set helpWin(yStack) {}
set helpWin(Indent) 0

# help_PushStack and help_PopStack:
#   Implements the stack of help windows for the "Back" button.
#
proc help_PushStack {name {heading ""}} {
  global helpWin
  lappend helpWin(Stack) $name
  if {[llength $helpWin(Stack)] > 10} {
    set helpWin(Stack) [lrange $helpWin(Stack) 1 end]
  }
  if {[winfo exists .helpWin]} {
    set helpWin(yStack) [linsert $helpWin(yStack) 0 \
        [lindex [.helpWin.text yview] 0]]
    if {[llength $helpWin(yStack)] > 10} {
      set helpWin(yStack) [lrange $helpWin(yStack) 0 9]
    }
  }
}

set ::htext::headingColor "\#990000"
array set ::htext:updates {}

proc help_PopStack {} {
  global helpWin helpText
  set len [llength $helpWin(Stack)]
  if {$len < 1} { return }
  incr len -2
  set name [lindex $helpWin(Stack) $len]
  set helpWin(Stack) [lrange $helpWin(Stack) 0 $len]
  
  set ylen [llength $helpWin(yStack)]
  set yview 0.0
  if {$ylen >= 1} {
    set yview [lindex $helpWin(yStack) 0]
    set helpWin(yStack) [lrange $helpWin(yStack) 1 end]
  }
  updateHelpWindow $name
  .helpWin.text yview moveto $yview
}

proc helpWindow {name {heading ""}} {
  help_PushStack $name
  updateHelpWindow $name $heading
}

proc updateHelpWindow {name {heading ""}} {
  global helpWin helpText helpTitle windowsOS language
  set w .helpWin
  
  set slist [split $name " "]
  if {[llength $slist] > 1} {
    set name [lindex $slist 0]
    set heading [lindex $slist 1]
  }
  
  if {[info exists helpText($language,$name)] && [info exists helpTitle($language,$name)]} {
    set title $helpTitle($language,$name)
    set helptext $helpText($language,$name)
  } elseif {[info exists helpText($name)] && [info exists helpTitle($name)]} {
    set title $helpTitle($name)
    set helptext $helpText($name)
  } else {
    return
  }
  
  if {![winfo exists $w]} {
    toplevel $w
    # wm geometry $w -10+0
    setWinLocation $w
    setWinSize $w
    
    wm minsize $w 20 5
    text $w.text -setgrid yes -wrap word -width $::winWidth($w) -height $::winHeight($w) -relief sunken -border 0 -yscroll "$w.scroll set"
    ttk::scrollbar $w.scroll -command "$w.text yview"
    
    ttk::frame $w.b -relief raised -border 2
    pack $w.b -side bottom -fill x
    ttk::button $w.b.contents -textvar ::tr(Contents) -command { helpWindow Contents }
    ttk::button $w.b.index -textvar ::tr(Index) -command { helpWindow Index }
    ttk::button $w.b.back -textvar ::tr(Back) -command { help_PopStack }
    ttk::button $w.b.close -textvar ::tr(Close) -command {
      set ::helpWin(Stack) {}
      set ::helpWin(yStack) {}
      destroy .helpWin
    }
    
    pack $w.b.contents $w.b.index $w.b.back -side left -padx 1 -pady 2
    pack $w.b.close -side right -padx 5 -pady 2
    pack $w.scroll -side right -fill y -padx 2 -pady 2
    pack $w.text -fill both -expand 1 -padx 1
    
    $w.text configure -font font_Regular -foreground black -background white
    ::htext::init $w.text
    bind $w <Configure> "recordWinSize $w"
  }
  
  $w.text configure -cursor top_left_arrow
  $w.text configure -state normal
  $w.text delete 0.0 end
  
  $w.b.index configure -state normal
  if {$name == "Index"} { $w.b.index configure -state disabled }
  $w.b.contents configure -state normal
  if {$name == "Contents"} { $w.b.contents configure -state disabled }
  $w.b.back configure -state disabled
  if {[llength $helpWin(Stack)] >= 2} {
    $w.b.back configure -state normal
  }
  
  wm title $w "Scid Help: $title"
  wm iconname $w "Scid help"
  
  $w.text delete 0.0 end
  bind $w <Up> "$w.text yview scroll -1 units"
  bind $w <Down> "$w.text yview scroll 1 units"
  bind $w <Prior> "$w.text yview scroll -1 pages"
  bind $w <Next> "$w.text yview scroll 1 pages"
  bind $w <Key-Home> "$w.text yview moveto 0"
  bind $w <Key-End> "$w.text yview moveto 0.99"
  bind $w <Escape> "$w.b.close invoke"
  bind $w <Key-b> "$w.b.back invoke"
  bind $w <Left> "$w.b.back invoke"
  bind $w <Key-i> "$w.b.index invoke"
  
  ::htext::display $w.text $helptext $heading 0
  focus $w
}

proc ::htext::updateRate {w rate} {
  set ::htext::updates($w) $rate
}

proc ::htext::init {w} {
  set cyan "\#007000"
  set maroon "\#990000"
  set green "darkgreen"
  
  set ::htext::updates($w) 100
  $w tag configure black -foreground black
  $w tag configure white -foreground white
  $w tag configure red -foreground red
  $w tag configure blue -foreground blue
  $w tag configure darkblue -foreground darkBlue
  $w tag configure green -foreground $green
  $w tag configure cyan -foreground $cyan
  $w tag configure yellow -foreground yellow
  $w tag configure maroon -foreground $maroon
  $w tag configure gray -foreground gray20
  
  $w tag configure bgBlack -background black
  $w tag configure bgWhite -background white
  $w tag configure bgRed -background red
  $w tag configure bgBlue -background blue
  $w tag configure bgLightBlue -background lightBlue
  $w tag configure bgGreen -background $green
  $w tag configure bgCyan -background $cyan
  $w tag configure bgYellow -background yellow
  
  $w tag configure tab -lmargin2 50
  $w tag configure li -lmargin2 50
  $w tag configure center -justify center
  
  if {[$w cget -font] == "font_Small"} {
    $w tag configure b -font font_SmallBold
    $w tag configure i -font font_SmallItalic
  } else {
    $w tag configure b -font font_Bold
    $w tag configure i -font font_Italic
  }
  $w tag configure bi -font font_BoldItalic
  $w tag configure tt -font font_Fixed
  $w tag configure u -underline 1
  $w tag configure h1 -font font_H1 -foreground $::htext::headingColor \
      -justify center
  $w tag configure h2 -font font_H2 -foreground $::htext::headingColor
  $w tag configure h3 -font font_H3 -foreground $::htext::headingColor
  $w tag configure h4 -font font_H4 -foreground $::htext::headingColor
  $w tag configure h5 -font font_H5 -foreground $::htext::headingColor
  $w tag configure footer -font font_Small -justify center
  
  $w tag configure term -font font_BoldItalic -foreground $::htext::headingColor
  $w tag configure menu -font font_Bold -foreground $cyan
  
  # PGN-window-specific tags:
  $w tag configure tag -foreground $::pgnColor(Header)
  if { $::::pgn::boldMainLine } {
    $w tag configure nag -foreground $::pgnColor(Nag) -font font_Regular
    $w tag configure var -foreground $::pgnColor(Var) -font font_Regular
  } else {
    $w tag configure nag -foreground $::pgnColor(Nag)
    $w tag configure var -foreground $::pgnColor(Var)
	 ### TODO
    ### $w tag configure var -foreground $::pgnColor(Var) -font font_Figurine_Var

  }
  $w tag configure ip1 -lmargin1 25 -lmargin2 25
  $w tag configure ip2 -lmargin1 50 -lmargin2 50
  $w tag configure ip3 -lmargin1 75 -lmargin2 75
  $w tag configure ip4 -lmargin1 100 -lmargin2 100
}

proc ::htext::isStartTag {tagName} {
  return [expr {![strIsPrefix "/" $tagName]} ]
}

proc ::htext::isEndTag {tagName} {
  return [strIsPrefix "/" $tagName]
}

proc ::htext::isLinkTag {tagName} {
  return [strIsPrefix "a " $tagName]
}

proc ::htext::extractLinkName {tagName} {
  if {[::htext::isLinkTag $tagName]} {
    return [lindex [split [string range $tagName 2 end] " "] 0]
  }
  return ""
}

proc ::htext::extractSectionName {tagName} {
  if {[::htext::isLinkTag $tagName]} {
    return [lindex [split [string range $tagName 2 end] " "] 1]
  }
  return ""
}

set ::htext::interrupt 0

proc ::htext::display {w helptext {section ""} {fixed 1}} {
  global helpWin
  # set start [clock clicks -milli]
  set helpWin(Indent) 0
  set ::htext::interrupt 0
  $w mark set insert 0.0
  $w configure -state normal
  set linkName ""
  
  set count 0
  set str $helptext
  if {$fixed} {
    regsub -all "\n\n" $str "<p>" str
    regsub -all "\n" $str " " str
  } else {
    regsub -all "\[ \n\]+" $str " " str
    regsub -all ">\[ \n\]+" $str "> " str
    regsub -all "\[ \n\]+<" $str " <" str
  }
  set tagType ""
  set seePoint ""
  
  if {! [info exists ::htext::updates($w)]} {
    set ::htext::updates($w) 100
  }
  
  # Loop through the text finding the next formatting tag:
  
  while {1} {
    set startPos [string first "<" $str]
    if {$startPos < 0} { break }
    set endPos [string first ">" $str]
    if {$endPos < 1} { break }
    
    set tagName [string range $str [expr {$startPos + 1}] [expr {$endPos - 1}]]
    
    # Check if it is a starting tag (no "/" at the start):
    
    if {![strIsPrefix "/" $tagName]} {
      
      # Check if it is a link tag:
      if {[strIsPrefix "a " $tagName]} {
        set linkName [::htext::extractLinkName $tagName]
        set sectionName [::htext::extractSectionName $tagName]
        set linkTag "link ${linkName} ${sectionName}"
        set tagName "a"
        $w tag configure "$linkTag" -foreground blue -underline 1
        $w tag bind "$linkTag" <ButtonRelease-1> \
            "helpWindow $linkName $sectionName"
        $w tag bind $linkTag <Any-Enter> \
            "$w tag configure \"$linkTag\" -background yellow
        $w configure -cursor hand2"
        $w tag bind $linkTag <Any-Leave> \
            "$w tag configure \"$linkTag\" -background {}
        $w configure -cursor {}"
      } elseif {[strIsPrefix "url " $tagName]} {
        # Check if it is a URL tag:
        set urlName [string range $tagName 4 end]
        set urlTag "url $urlName"
        set tagName "url"
        $w tag configure "$urlTag" -foreground red -underline 1
        $w tag bind "$urlTag" <ButtonRelease-1> "openURL {$urlName}"
        $w tag bind $urlTag <Any-Enter> \
            "$w tag configure \"$urlTag\" -background yellow
        $w configure -cursor hand2"
        $w tag bind $urlTag <Any-Leave> \
            "$w tag configure \"$urlTag\" -background {}
        $w configure -cursor {}"
      } elseif {[strIsPrefix "run " $tagName]} {
        # Check if it is a Tcl command tag:
        set runName [string range $tagName 4 end]
        set runTag "run $runName"
        set tagName "run"
        $w tag bind "$runTag" <ButtonRelease-1> "catch {$runName}"
        $w tag bind $runTag <Any-Enter> \
            "$w tag configure \"$runTag\" -foreground yellow
        $w tag configure \"$runTag\" -background darkBlue
        $w configure -cursor hand2"
        $w tag bind $runTag <Any-Leave> \
            "$w tag configure \"$runTag\" -foreground {}
        $w tag configure \"$runTag\" -background {}
        $w configure -cursor {}"
      } elseif {[strIsPrefix "go " $tagName]} {
        # Check if it is a goto tag:
        set goName [string range $tagName 3 end]
        set goTag "go $goName"
        set tagName "go"
        $w tag bind "$goTag" <ButtonRelease-1> \
            "catch {$w see \[lindex \[$w tag nextrange $goName 1.0\] 0\]}"
        $w tag bind $goTag <Any-Enter> \
            "$w tag configure \"$goTag\" -foreground yellow
        $w tag configure \"$goTag\" -background maroon
        $w configure -cursor hand2"
        $w tag bind $goTag <Any-Leave> \
            "$w tag configure \"$goTag\" -foreground {}
        $w tag configure \"$goTag\" -background {}
        $w configure -cursor {}"
      } elseif {[strIsPrefix "pi " $tagName]} {
        # Check if it is a player info tag:
        set playerTag $tagName
        set playerName [string range $playerTag 3 end]
        set tagName "pi"
        $w tag configure "$playerTag" -foreground darkBlue
        $w tag bind "$playerTag" <ButtonRelease-1> "::pinfo::playerInfo \"$playerName\""
        $w tag bind $playerTag <Any-Enter> \
            "$w tag configure \"$playerTag\" -foreground yellow
        $w tag configure \"$playerTag\" -background darkBlue
        $w configure -cursor hand2"
        $w tag bind $playerTag <Any-Leave> \
            "$w tag configure \"$playerTag\" -foreground darkBlue
        $w tag configure \"$playerTag\" -background {}
        $w configure -cursor {}"
      } elseif {[strIsPrefix "g_" $tagName]} {
        # Check if it is a game-load tag:
        set gameTag $tagName
        set tagName "g"
        set gnum [string range $gameTag 2 end]
        set glCommand "::game::LoadMenu $w [sc_base current] $gnum %X %Y"
        $w tag bind $gameTag <ButtonPress-1> $glCommand
        $w tag bind $gameTag <ButtonPress-$::MB3> \
            "::gbrowser::new [sc_base current] $gnum"
        $w tag bind $gameTag <Any-Enter> \
            "$w tag configure $gameTag -foreground yellow
        $w tag configure $gameTag -background darkBlue
        $w configure -cursor hand2"
        $w tag bind $gameTag <Any-Leave> \
            "$w tag configure $gameTag -foreground {}
        $w tag configure $gameTag -background {}
        $w configure -cursor {}"
      } elseif {[strIsPrefix "m_" $tagName]} {
        # Check if it is a move tag:
        set moveTag $tagName
        set tagName "m"
		  ### TODO
		  ### Does not work for variations as the var-Tag appears before
		  ### the <m_ tags, therefore this overwrites font sizes
        ### $w tag configure $moveTag -font font_Figurine_ML
        $w tag bind $moveTag <ButtonRelease-1> "sc_move pgn [string range $moveTag 2 end]; updateBoard"
        # invoking contextual menu in PGN window
        $w tag bind $moveTag <ButtonPress-$::MB3> "sc_move pgn [string range $moveTag 2 end]; updateBoard"
        $w tag bind $moveTag <Any-Enter> "$w tag configure $moveTag -underline 1
        $w configure -cursor hand2"
        $w tag bind $moveTag <Any-Leave> "$w tag configure $moveTag -underline 0
        $w configure -cursor {}"
      } elseif {[strIsPrefix "c_" $tagName]} {
        # Check if it is a comment tag:
        set commentTag $tagName
        set tagName "c"
        if { $::pgn::boldMainLine } {
          $w tag configure $commentTag -foreground $::pgnColor(Comment) -font font_Regular
        } else {
          $w tag configure $commentTag -foreground $::pgnColor(Comment)
        }
        $w tag bind $commentTag <ButtonRelease-1> "sc_move pgn [string range $commentTag 2 end]; updateBoard; ::commenteditor::Open"
        $w tag bind $commentTag <Any-Enter> "$w tag configure $commentTag -underline 1
        $w configure -cursor hand2"
        $w tag bind $commentTag <Any-Leave> "$w tag configure $commentTag -underline 0
        $w configure -cursor {}"
      }
      
      if {$tagName == "h1"} {$w insert end "\n"}
      
    }
    
    # Now insert the text up to the formatting tag:
    $w insert end [string range $str 0 [expr {$startPos - 1}]]
    
    # Check if it is a name tag matching the section we want:
    if {$section != ""  &&  [strIsPrefix "name " $tagName]} {
      set sect [string range $tagName 5 end]
      if {$section == $sect} { set seePoint [$w index insert] }
    }
    
    if {[string index $tagName 0] == "/"} {
      # Get rid of initial "/" character:
      set tagName [string range $tagName 1 end]
      switch -- $tagName {
        h1 - h2 - h3 - h4 - h5  {$w insert end "\n"}
      }
      if {$tagName == "p"} {$w insert end "\n"}
      #if {$tagName == "h1"} {$w insert end "\n"}
      if {$tagName == "menu"} {$w insert end "\]"}
      if {$tagName == "ul"} {
        incr helpWin(Indent) -4
        $w insert end "\n"
      }
      if {[info exists startIndex($tagName)]} {
        switch -- $tagName {
          a {$w tag add $linkTag $startIndex($tagName) [$w index insert]}
          g  {$w tag add $gameTag $startIndex($tagName) [$w index insert]}
          c  {$w tag add $commentTag $startIndex($tagName) [$w index insert]}
          m  {$w tag add $moveTag $startIndex($tagName) [$w index insert]}
          pi {$w tag add $playerTag $startIndex($tagName) [$w index insert]}
          url {$w tag add $urlTag $startIndex($tagName) [$w index insert]}
          run {$w tag add $runTag $startIndex($tagName) [$w index insert]}
          go {$w tag add $goTag $startIndex($tagName) [$w index insert]}
          default {$w tag add $tagName $startIndex($tagName) [$w index insert]}
        }
        unset startIndex($tagName)
      }
    } else {
      switch -- $tagName {
        ul {incr helpWin(Indent) 4}
        li {
          $w insert end "\n"
          for {set space 0} {$space < $helpWin(Indent)} {incr space} {
            $w insert end " "
          }
        }
        p  {$w insert end "\n"}
        br {$w insert end "\n"}
        q  {$w insert end "\""}
        lt {$w insert end "<"}
        gt {$w insert end ">"}
        h2 - h3 - h4 - h5  {$w insert end "\n"}
      }
      #Set the start index for this type of tag:
      set startIndex($tagName) [$w index insert]
      if {$tagName == "menu"} {$w insert end "\["}
    }
    
    # Check if it is an image or button tag:
    if {[strIsPrefix "img " $tagName]} {
      set imgName [string range $tagName 4 end]
      set winName $w.$imgName
      while {[winfo exists $winName]} { append winName a }
      label $winName -image $imgName -relief flat -borderwidth 0 -background white
      $w window create end -window $winName
    }
    if {[strIsPrefix "button " $tagName]} {
      set idx [ string first "-command" $tagName]
      set cmd ""
      if {$idx == -1} {
        set imgName [string range $tagName 7 end]
      } else  {
        set imgName [string trim [string range $tagName 7 [expr $idx -1]]]
        set cmd [ string range $tagName [expr $idx +9] end ]
      }
      set winName $w.$imgName
      while {[winfo exists $winName]} { append winName a }
      button $winName -image $imgName -command $cmd
      $w window create end -window $winName
    }
    if {[strIsPrefix "window " $tagName]} {
      set winName [string range $tagName 7 end]
      $w window create end -window $winName
    }
    
    # Now eliminate the processed text from the string:
    set str [string range $str [expr {$endPos + 1}] end]
    incr count
    if {$count == $::htext::updates($w)} { update idletasks; set count 1 }
    if {$::htext::interrupt} {
      $w configure -state disabled
      return
    }
  }
  
  # Now add any remaining text:
  if {! $::htext::interrupt} { $w insert end $str }
  
  if {$seePoint != ""} { $w yview $seePoint }
  $w configure -state disabled
  # set elapsed [expr {[clock clicks -milli] - $start}]
}


# openURL:
#    Sends a command to the user's web browser to view a webpage given
#    its URL.
#
proc openURL {url} {
  global windowsOS
  busyCursor .
  if {$windowsOS} {
    # On Windows, use the "start" command:
    regsub -all " " $url "%20" url
    if {[string match $::tcl_platform(os) "Windows NT"]} {
      catch {exec $::env(COMSPEC) /c start $url &}
    } else {
      catch {exec start $url &}
    }
  } elseif {$::macOS} {
    # On Mac OS X use the "open" command:
    catch {exec open $url &}
  } else {
    # On Unix systems, there is no standard for invoking favorite
    # web browser, so just try starting Mozilla or Netscape.
    
    # First, check if Mozilla seems to be available:
    if {[file executable [auto_execok firefox]]} {
      # First, try -remote mode:
      if {[catch {exec /bin/sh -c "$::auto_execs(firefox) -remote 'openURL($url)'"}]} {
        # Now try a new Mozilla process:
        catch {exec /bin/sh -c "$::auto_execs(firefox) '$url'" &}
      }
    } elseif {[file executable [auto_execok iceweasel]]} {
      # First, try -remote mode:
      if {[catch {exec /bin/sh -c "$::auto_execs(iceweasel) -remote 'openURL($url)'"}]} {
        # Now try a new Mozilla process:
        catch {exec /bin/sh -c "$::auto_execs(iceweasel) '$url'" &}
      }
    } elseif {[file executable [auto_execok mozilla]]} {
      # First, try -remote mode:
      if {[catch {exec /bin/sh -c "$::auto_execs(mozilla) -remote 'openURL($url)'"}]} {
        # Now try a new Mozilla process:
        catch {exec /bin/sh -c "$::auto_execs(mozilla) '$url'" &}
      }
    } elseif {[file executable [auto_execok www-browser]]} {
      # Now try a new Mozilla process:
      catch {exec /bin/sh -c "$::auto_execs(www-browser) '$url'" &}
    } elseif {[file executable [auto_execok netscape]]} {
      # OK, no Mozilla (poor user) so try Netscape (yuck):
      # First, try -remote mode to avoid starting a new netscape process:
      if {[catch {exec /bin/sh -c "$::auto_execs(netscape) -raise -remote 'openURL($url)'"}]} {
        # Now just try starting a new netscape process:
        catch {exec /bin/sh -c "$::auto_execs(netscape) '$url'" &}
      }
    } else {
      foreach executable {iexplorer opera lynx w3m links epiphan galeon
        konqueror mosaic amaya browsex elinks} {
        set executable [auto_execok $executable]
        if [string length $executable] {
          # Is there any need to give options to these browsers? how?
          set command [list $executable $url &]
          catch {exec /bin/sh -c "$executable '$url'" &}
          break
        }
      }
    }
  }
  unbusyCursor .
}
# adds a checkbox to show hidden files
catch {tk_getOpenFile -with-invalid-argument}
namespace eval ::tk::dialog::file {
  variable showHiddenBtn 1
  variable showHiddenVar 0
}

# ::file::Exit
#
#    Prompt for confirmation then exit.
#
proc ::file::Exit {}  {
  # Check for altered game in all bases except the clipbase:
  set unsavedCount 0
  set savedBase [sc_base current]
  set msg ""
  set nbases [sc_base count total]
  for {set i 1} {$i < [sc_base count total]} {incr i} {
    sc_base switch $i
    if {[sc_base inUse] && [sc_game altered] && ![sc_base isReadOnly]} {
      if {$unsavedCount == 0} {
        append msg $::tr(ExitUnsaved)
        append msg "\n\n"
      }
      incr unsavedCount
      set fname [file tail [sc_base filename]]
      set g [sc_game number]
      append msg "   Base $i: $fname "
      append msg "($::tr(game) $g)"
      append msg "\n"
    }
  }
  # Switch back to original database:
  sc_base switch $savedBase
  
  # Check if a mask is opened and dirty
  ::tree::mask::close
  
  if {$msg != ""} {
    append msg "\n"
  }
  append msg $::tr(ExitDialog)
  
  # Only ask before exiting if there are unsaved changes:
  if {$unsavedCount > 0} {
    set answer [tk_messageBox -title "Scid: [tr FileExit]" \
        -message $msg -type yesno -icon question]
    if {$answer != "yes"} { return }
  }
  if {$::optionsAutoSave} {
    # restore askToReplaceMoves if necessary
    if {[winfo exists .tacticsWin]} {
      ::tactics::restoreAskToReplaceMoves
    }
    # restore options if findBestMove in progress
    ::tactics::findBestMoveExit
    .menu.options invoke [tr OptionsSave]
  }
  ::recentFiles::save
  ::utils::history::Save
  destroy .
}

proc ::file::ExitFast {} {
  if {$::optionsAutoSave} {
    # restore askToReplaceMoves if necessary
    if {[winfo exists .tacticsWin]} {
      ::tactics::restoreAskToReplaceMoves
    }
    .menu.options invoke [tr OptionsSave]
  }
  ::recentFiles::save
  destroy .
}

# ::file::New
#
#   Opens file-save dialog and creates a new database.
#
proc ::file::New {} {
  if {[sc_base count free] == 0} {
    tk_messageBox -title "Scid" -type ok -icon info \
        -message "Too many databases open; close one first"
    return
  }
  set ftype {
    { "Scid databases, EPD files" {".si4" ".epd"} }
    { "Scid databases" {".si4"} }
    { "EPD files" {".epd"} }
  }
  
  if { [ file exists $::initialDir(base) ] } {
    set fName [tk_getSaveFile -initialdir $::initialDir(base) -filetypes $ftype -title "Create a Scid database"]
  } else  {
    set fName [tk_getSaveFile -filetypes $ftype -title "Create a Scid database"]
  }
  
  if {$fName == ""} {
    # do nothing
  } elseif {[file extension $fName] == ".epd"} {
    newEpdWin create $fName
    return
  } else {
    set fName [file rootname $fName]
    if {[catch {sc_base create $fName} result]} {
      tk_messageBox -icon warning -type ok -parent . \
          -title "Scid: Unable to create base" -message $result
    }
  }
  ::windows::gamelist::Refresh
  ::tree::refresh
  ::windows::stats::Refresh
  set ::initialDir(base) [file dirname $fName]
  ::recentFiles::add "$fName.si4"
  updateMenuStates
  updateTitle
  updateStatusBar
}

# ::file::Open
#
#    Opens file-open dialog and opens the selected Scid database.
#
proc ::file::Open {{fName ""}} {
  global glstart
  if {[sc_base count free] == 0} {
    tk_messageBox -type ok -icon info -title "Scid" \
        -message "Too many databases are open; close one first"
    return
  }
  
  if {[sc_info gzip]} {
    set ftype {
      { "All Scid files" {".si4" ".si3" ".pgn" ".pgn.gz" ".epd" ".epd.gz" ".sor"} }
      { "Scid databases, PGN files" {".si4" ".si3" ".pgn" ".PGN" ".pgn.gz"} }
      { "Scid databases" {".si4" ".si3"} }
      { "PGN files" {".pgn" ".PGN" ".pgn.gz"} }
      { "EPD files" {".epd" ".EPD" ".epd.gz"} }
      { "Repertoire files" {".sor"} }
    }
  } else {
    set ftype {
      { "All Scid files" {".si4" ".si3" ".pgn" ".epd" ".sor"} }
      { "Scid databases, PGN files" {".si4" ".si3" ".pgn" ".PGN"} }
      { "Scid databases" {".si4" ".si3"} }
      { "PGN files" {".pgn" ".PGN"} }
      { "EPD files" {".epd" ".EPD"} }
      { "Repertoire files" {".sor"} }
    }
  }
  
  if {$fName == ""} {
    set fName [tk_getOpenFile -initialdir $::initialDir(base) -filetypes $ftype -title "Open a Scid file"]
    if {$fName == ""} { return }
  }
  
  if {[file extension $fName] == ""} {
    set fName "$fName.si4"
  }
  
  if {[file extension $fName] == ".sor"} {
    if {[catch {::rep::OpenWithFile $fName} err]} {
      tk_messageBox -parent . -type ok -icon info -title "Scid" \
          -message "Unable to open \"$fName\": $err"
    }
    return
  }
  
  if {[file extension $fName] == ".si3"} {
    ::file::Upgrade [file rootname $fName]
    return
  }
  
  set err 0
  busyCursor .
  if {[file extension $fName] == ".si4"} {
    set fName [file rootname $fName]
    if {[catch {openBase $fName} result]} {
      set err 1
      tk_messageBox -icon warning -type ok -parent . \
          -title "Scid: Error opening file" -message $result
    } else {
      set ::initialDir(base) [file dirname $fName]
      ::recentFiles::add "$fName.si4"
    }
  } elseif {[string match "*.epd" [string tolower $fName]]} {
    # EPD file:
    newEpdWin open $fName
  } else {
    # PGN file:
    set result "This file is not readable."
    if {(![file readable $fName])  || \
          [catch {sc_base create $fName true} result]} {
      set err 1
      tk_messageBox -icon warning -type ok -parent . \
          -title "Scid: Error opening file" -message $result
    } else {
      doPgnFileImport $fName "Opening [file tail $fName] read-only...\n"
      sc_base type [sc_base current] 3
      ::recentFiles::add $fName
    }
  }
  
  if {$err == 0} {
    catch {sc_game load auto}
    flipBoardForPlayerNames $::myPlayerNames
  }
  unbusyCursor .
  set glstart 1
  ::windows::gamelist::Refresh
  ::tree::refresh
  ::windows::stats::Refresh
  updateMenuStates
  updateBoard -pgn
  updateTitle
  updateStatusBar
  updateGameInfoMenu
}

# ::file::Upgrade
#
#   Upgrades an old (version 3) Scid database to version 4.
#
proc ::file::Upgrade {name} {
  if {[file readable "$name.si4"]} {
    set msg [string trim $::tr(ConfirmOpenNew)]
    set res [tk_messageBox -title "Scid" -type yesno -icon info -message $msg]
    if {$res == "no"} { return }
    ::file::Open "$name.si4"
    return
  }
  
  set msg [string trim $::tr(ConfirmUpgrade)]
  set res [tk_messageBox -title "Scid" -type yesno -icon info -message $msg]
  if {$res == "no"} { return }
  progressWindow "Scid" "$::tr(Upgrading): [file tail $name]..."\
      $::tr(Cancel) "sc_progressBar"
  busyCursor .
  update
  set err [catch {sc_base upgrade $name} res]
  unbusyCursor .
  closeProgressWindow
  if {$err} {
    tk_messageBox -title "Scid" -type ok -icon warning \
        -message "Unable to upgrade the database:\n$res"
    return
  } else  {
    # rename game and name files, delete old .si3
    file rename "$name.sg3"  "$name.sg4"
    file rename "$name.sn3"  "$name.sn4"
    file delete "$name.si3"
  }
  ::file::Open "$name.si4"
}

# openBase:
#    Opens a Scid database, showing a progress bar in a separate window
#    if the database is around 1 Mb or larger in size.
#   ::file::Open should be used if the base is not already in si4 format
proc openBase {name} {
  set bsize 0
  set gfile "[file rootname $name].sg4"
  if {! [catch {file size $gfile} err]} { set bsize $err }
  set showProgress 0
  if {$bsize > 1000000} { set showProgress 1 }
  if {$showProgress} {
    progressWindow "Scid" "$::tr(OpeningTheDatabase): [file tail $name]..."
  }
  set err [catch {sc_base open $name} result]
  if {$showProgress} { closeProgressWindow }
  if {$err} { return -code error $result }
  return $result
}


# ::file::Close:
#   Closes the active base.
#
proc ::file::Close {{base -1}} {
  # Remember the current base:
  set current [sc_base current]
  if {$base < 0} { set base $current }
  # Switch to the base which will be closed, and check for changes:
  sc_base switch $base
  if {[sc_base inUse]} {
    if {![::game::ConfirmDiscard]} {
      sc_base switch $current
      return
    }
    sc_base close
    ::game::HistoryRemoveDB $base
    
    # If base to close was the current one, reset to clipbase
    if { $current == $base } {
      setTrialMode 0
      set current 9
    }
    
    # Close Tree window whenever a base is closed/switched:
    if {[winfo exists .treeWin$base]} { destroy .treeWin$base }
    # Now switch back to the original base
    ::file::SwitchToBase $current
  }
  updateMenuStates
  updateStatusBar
  updateTitle
}


proc ::file::SwitchToBase {b} {
  sc_base switch $b
  ::game::HistoryDatabaseSwitch
  # Close email window when a base is switched:
  if {[winfo exists .emailWin]} { destroy .emailWin }
  updateBoard -pgn
  updateTitle
  updateMenuStates
  updateStatusBar
  ::windows::gamelist::Refresh
}

################################################################################
proc ::file::openBaseAsTree { { fName "" } } {
  set current [sc_base current]
  
  if {[sc_base count free] == 0} {
    tk_messageBox -type ok -icon info -title "Scid" \
        -message "Too many databases are open; close one first"
    return
  }
  
  if {$fName == ""} {
    if {[sc_info gzip]} {
      set ftype {
        { "Scid databases, PGN files" {".si4" ".si3" ".pgn" ".PGN" ".pgn.gz"} }
        { "Scid databases" {".si4" ".si3"} }
        { "PGN files" {".pgn" ".PGN" ".pgn.gz"} }
      }
    } else {
      set ftype {
        { "Scid databases, PGN files" {".si4" ".si3" ".pgn" ".PGN"} }
        { "Scid databases" {".si4" ".si3"} }
        { "PGN files" {".pgn" ".PGN"} }
      }
    }
    set fName [tk_getOpenFile -initialdir $::initialDir(base) -filetypes $ftype -title "Open a Scid file"]
    if {$fName == ""} { return }
  }
  
  if {[file extension $fName] == ""} {
    set fName "$fName.si3"
  }
  
  if {[file extension $fName] == ".sor"} {
    if {[catch {::rep::OpenWithFile $fName} err]} {
      tk_messageBox -parent . -type ok -icon info -title "Scid" \
          -message "Unable to open \"$fName\": $err"
    }
    return
  }
  
  if {[file extension $fName] == ".si3"} {
    ::file::Upgrade [file rootname $fName]
    return
  }
  
  set err 0
  busyCursor .
  if {[file extension $fName] == ".si4"} {
    set fName [file rootname $fName]
    if {[catch {openBase $fName} result]} {
      unbusyCursor .
      set err 1
      tk_messageBox -icon warning -type ok -parent . -title "Scid: Error opening file" -message $result
      return
    } else {
      set ::initialDir(base) [file dirname $fName]
      ::recentFiles::add "$fName.si4"
    }
  } else {
    # PGN file:
    set result "This file is not readable."
    if {(![file readable $fName])  || \
          [catch {sc_base create $fName true} result]} {
      unbusyCursor .
      set err 1
      tk_messageBox -icon warning -type ok -parent . -title "Scid: Error opening file" -message $result
      return
    } else {
      doPgnFileImport $fName "Opening [file tail $fName] read-only...\n"
      sc_base type [sc_base current] 3
      ::recentFiles::add $fName
    }
  }
  
  unbusyCursor .
  set new_base [sc_base current]
  ::file::SwitchToBase $current
  ::tree::make $new_base 1
}


####################
# File finder window

set ::file::finder::data(dir) [pwd]
set ::file::finder::data(sort) name
set ::file::finder::data(recurse) 0
set ::file::finder::data(stop) 0
set ::file::finder::data(Scid) 1
set ::file::finder::data(PGN) 1
set ::file::finder::data(Rep) 1
set ::file::finder::data(EPD) 1
set ::file::finder::data(Old) 1

image create photo ::file::finder::updir -data {
  R0lGODdhGQAUAKEAANnZ2QAAAPD/gAAngSwAAAAAGQAUAAACToSPqcvtEGJ8LIh7A00WY71B
  0kiWnIemHmh06pshrjAM8CpjdX3HR7fboXifnM6WIvpaHmUTuYQ8g1Tcb0gVWpk9FUvaTX1F
  pfIohE4zCgA7
}

#----------------------------------------------------------------------
if {$png_image_support} {
	image create photo ::file::finder::updir -data {
		iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABmJLR0QA/wD/AP+gvaeTAAABfklE
		QVR42s2TsWtTURTGfwkOQjWxi6BDF4da0EGEaoJdG3CIKQ5KrGNWwX9D0k5i1hoQQ7bSsXRwiSRi
		UwgBWzRJ0VQSF4s6pN5zjsN7eeXV8FBcPPBxuZfzfec7594L/1OkADuB1F+RP/U71mo3rNVu2IuX
		pT8Siftr7dv3r7yubzL88pHBoMeZs6d59HgZoDbB2RiFmC9gB58/kEye5/BwGKirKvF4HCfOSzIL
		zvv9HrfStzk1Tp4+d4H33SZgmCrP1yo8eHgXFUEDongwpbnzBuBYYDT6EVQul6usFJ9hGPn8UuTw
		AgFiMUyFanWd4pOnAKwWS4g47t3Peg5MMVVUFVEXFjAznPwkl8uQvbPI/PUMtfoGaor4M1CfrCao
		SFhAVXDOBX0CiLiA5DnwiGaK6AkBw3DuKLAJsJD2+r9x8xozMxdJJKa4PHeJK1dnf5+BOxqFKm69
		qhxX8+1GDrGzv8fb7bpn18xz4l/fpNh91w3tCxGvLQqFf/6BvwBEXv0OVwBBhgAAAABJRU5ErkJg
		gg==
	}
}
#----------------------------------------------------------------------

proc ::file::finder::Open {} {
  set w .finder
  if {[winfo exists $w]} { return }
  
  toplevel $w
  wm title $w "Scid: $::tr(FileFinder)"
  bind $w <F1> {helpWindow Finder}
  setWinLocation $w
  bind $w <Configure> "recordWinSize $w"
  
  menu $w.menu
  $w configure -menu $w.menu
  
  $w.menu add cascade -label FinderFile -menu $w.menu.file
  menu $w.menu.file
  $w.menu.file add checkbutton -label FinderFileSubdirs \
      -variable ::file::finder::data(recurse) -onvalue 1 -offvalue 0 \
      -command ::file::finder::Refresh
  $w.menu.file add separator
  $w.menu.file add command -label FinderFileClose -command "destroy $w"
  
  $w.menu add cascade -label FinderSort -menu $w.menu.sort
  menu $w.menu.sort
  foreach {name value} {Type type Size size Mod mod Filename name Path path} {
    $w.menu.sort add radiobutton -label FinderSort$name \
        -variable ::file::finder::data(sort) -value $value \
        -command {::file::finder::Refresh -fast}
  }
  
  $w.menu add cascade -label FinderTypes -menu $w.menu.types
  menu $w.menu.types
  foreach type {Scid Old PGN Rep EPD} {
    $w.menu.types add checkbutton -label FinderTypes$type \
        -variable ::file::finder::data($type) -onvalue 1 -offvalue 0 \
        -command ::file::finder::Refresh
  }
  
  $w.menu add cascade -label FinderHelp -menu $w.menu.helpmenu
  menu $w.menu.helpmenu
  $w.menu.helpmenu add command -label FinderHelpFinder \
      -accelerator F1 -command {helpWindow Finder}
  $w.menu.helpmenu add command -label FinderHelpIndex -command {helpWindow Index}
  
  pack [frame $w.d] -side top -fill x
  label $w.d.label -text "$::tr(FinderDir):" -font font_Small
  set ::file::finder::data(menu) [tk_optionMenu $w.d.mb ::file::finder::data(dir) ""]
  $w.d.mb configure -font font_Small -width 1 -anchor e
  $::file::finder::data(menu) configure -font font_Small
  button $w.d.up -image ::file::finder::updir -command {::file::finder::Refresh ..}
  pack $w.d.label -side left -padx 5
  pack $w.d.up -side right -padx 5
  pack $w.d.mb -side left -fill x -expand yes
  
  frame $w.t
  frame $w.b
  text $w.t.text -width 65 -height 25 -font font_Small -wrap none \
      -fg black -bg white -yscrollcommand "$w.t.ybar set" -setgrid 1 \
      -cursor top_left_arrow
  scrollbar $w.t.ybar -command "$w.t.text yview" -width 12
  $w.t.text tag configure Dir -foreground brown
  $w.t.text tag configure Vol -foreground gray25
  $w.t.text tag configure PGN -foreground blue
  $w.t.text tag configure Scid -foreground red
  $w.t.text tag configure Old -foreground black
  $w.t.text tag configure Rep -foreground darkGreen
  $w.t.text tag configure EPD -foreground orange
  $w.t.text tag configure bold -font font_SmallBold
  $w.t.text tag configure center -justify center
  set xwidth [font measure [$w.t.text cget -font] "x"]
  set tablist {}
  foreach {tab justify} {15 r 30 r 32 l 50 l} {
    set tabwidth [expr {$xwidth * $tab} ]
    lappend tablist $tabwidth $justify
  }
  $w.t.text configure -tabs $tablist
  bindMouseWheel $w $w.t.text
  
  checkbutton $w.b.sub -text [tr FinderFileSubdirs] \
      -variable ::file::finder::data(recurse) -onvalue 1 -offvalue 0 \
      -command ::file::finder::Refresh
  dialogbutton $w.b.stop -textvar ::tr(Stop) -command {set finder(stop) 1 }
  dialogbutton $w.b.help -textvar ::tr(Help) -command {helpWindow Finder}
  dialogbutton $w.b.close -textvar ::tr(Close) -command "destroy $w"
  bind $w <Escape> {
    if {[winfo exists .finder.t.text.ctxtMenu]} {
      destroy .finder.t.text.ctxtMenu
      focus .finder
    } else {
      .finder.b.stop invoke
    }
  }
  # Bind left button to close ctxt menu:
  bind $w <ButtonPress-1> {
    if {[winfo exists .finder.t.text.ctxtMenu]} {
      destroy .finder.t.text.ctxtMenu
      focus .finder
    }
  }
  pack $w.b -side bottom -fill x
  packbuttons right $w.b.close $w.b.help $w.b.stop
  packbuttons left $w.b.sub
  pack $w.t -side top -fill both -expand yes
  pack $w.t.ybar -side right -fill y
  pack $w.t.text -side left -fill both -expand yes
  ::file::finder::ConfigMenus
  ::file::finder::Refresh
}

proc ::file::finder::Refresh {{newdir ""}} {
  variable data
  set w .finder
  if {! [winfo exists $w]} { return }
  set t $w.t.text
  
  # When parameter is "-fast", just re-sort the existing data:
  set fastmode 0
  if {$newdir == "-fast"} {
    set fastmode 1
    set newdir ""
  }
  if {$newdir == ".."} { set newdir [file dirname $data(dir)] }
  if {$newdir != ""} { set data(dir) $newdir }
  
  busyCursor .
  set data(stop) 0
  $w.b.close configure -state disabled
  $w.b.help configure -state disabled
  $w.b.sub configure -state disabled
  $w.b.stop configure -state normal
  catch {grab $w.b.stop}
  $t configure -state normal
  update
  
  if {$fastmode} {
    set flist $data(flist)
  } else {
    set flist [::file::finder::GetFiles $data(dir)]
    set data(flist) $flist
  }
  
  switch $data(sort) {
    "none" {}
    "type" { set flist [lsort -decreasing -index 1 $flist] }
    "size" { set flist [lsort -integer -decreasing -index 0 $flist] }
    "name" { set flist [lsort -dict -index 2 $flist] }
    "path" { set flist [lsort -dict -index 3 $flist] }
    "mod"  { set flist [lsort -integer -decreasing -index 4 $flist] }
  }
  
  set hc yellow
  $t delete 1.0 end
  set dcount 0
  $t insert end "$::tr(FinderDirs)\n" {center bold}
  set dlist {}
  
  # Insert drive letters, on Windows:
  if {$::windowsOS} {
    foreach drive [lsort -dictionary [file volume]] {
      $t insert end " $drive " [list Vol v$drive]
      $t insert end "    "
      $t tag bind v$drive <1> [list ::file::finder::Refresh $drive]
      $t tag bind v$drive <Any-Enter> \
          "$t tag configure [list v$drive] -background $hc"
      $t tag bind v$drive <Any-Leave> \
          "$t tag configure [list v$drive] -background {}"
    }
    $t insert end "\n"
  }
  
  # Insert parent directory entry:
  lappend dlist ..
  
  # Generate other directory entries:
  set dirlist [lsort -dictionary [glob -nocomplain [file join $data(dir) *]]]
  foreach dir $dirlist {
    if {[file isdir $dir]} {
      lappend dlist $dir
    }
  }
  foreach dir $dlist {
    if {$dcount != 0} {
      set sep "\n"
      if {$dcount % 2 != 0} { set sep "\t\t\t" }
      $t insert end $sep
    }
    incr dcount
    if {$dir == ".."} {
      set d ..
      $t insert end " .. ($::tr(FinderUpDir)) " [list Dir d..]
    } else {
      set d [file tail $dir]
      $t insert end " $d " [list Dir d$d]
    }
    $t tag bind d$d <1> [list ::file::finder::Refresh $dir]
    $t tag bind d$d <Any-Enter> \
        "$t tag configure [list d$d] -background $hc"
    $t tag bind d$d <Any-Leave> \
        "$t tag configure [list d$d] -background {}"
  }
  
  # Add File section headings:
  $t insert end "\n\n"
  if {[llength $flist] != 0} {
    foreach i {Type Size Mod Name Path} v {type size mod name path} {
      $t tag configure s$i -font font_SmallBold
      $t tag bind s$i <1> "set ::file::finder::data(sort) $v; ::file::finder::Refresh -fast"
      $t tag bind s$i <Any-Enter> "$t tag config s$i -foreground red"
      $t tag bind s$i <Any-Leave> "$t tag config s$i -foreground {}"
    }
    $t insert end "$::tr(FinderFiles)\n" {center bold}
    $t insert end " "
    $t insert end "[tr FinderSortType]" sType
    $t insert end "\t"
    $t insert end "[tr FinderSortSize]" sSize
    $t insert end "\t"
    $t insert end "[tr FinderSortMod]" sMod
    $t insert end "\t"
    $t insert end "[tr FinderSortName]" sName
    $t insert end "\t"
    $t insert end "[tr FinderSortPath]" sPath
    $t insert end "\n"
  }
  
  # Add each file:
  foreach i $flist {
    set size [lindex $i 0]
    set type [lindex $i 1]
    set fname [lindex $i 2]
    set path [lindex $i 3]
    set mtime [lindex $i 4]
    set est [lindex $i 5]
    $t insert end "\n "
    $t insert end $type [list $type f$path]
    set esize ""
    if {$est} { set esize "~" }
    append esize [::utils::thousands $size]
    $t insert end "\t$esize" f$path
    $t insert end "\t[clock format $mtime -format {%b %d %Y}]" f$path
    $t insert end "\t$fname\t" f$path
    set dir [file dirname $path]
    set tail [file tail $path]
    if {$dir == "."} {
      set fullpath $data(dir)/$tail
    } else  {
      set fullpath $data(dir)/$dir/$tail
    }
    
    $t tag bind f$path <ButtonPress-1> "::file::Open [list $fullpath]"
    # Bind right button to popup a contextual menu:
    $t tag bind f$path <ButtonPress-$::MB3> "::file::finder::contextMenu .finder.t.text [list $fullpath] %x %y %X %Y"
    
    $t tag bind f$path <Any-Enter> \
        "$t tag configure [list f$path] -background $hc"
    $t tag bind f$path <Any-Leave> \
        "$t tag configure [list f$path] -background {}"
    if {$dir == "."} {
      set fullpath "$data(dir)/$tail"
    } else {
      $t tag configure p$path -foreground darkblue
      $t insert end "$dir/" [list p$path f$path]
    }
    $t tag configure t$path -foreground blue
    $t insert end $tail [list t$path f$path]
  }
  $t configure -state disabled
  
  # Update directory menubutton:
  $data(menu) delete 0 end
  set mlist {}
  set d {}
  foreach subdir [file split $data(dir)] {
    set d [file join $d $subdir]
    lappend mlist $d
  }
  foreach m $mlist {
    $data(menu) add command -label $m -command "::file::finder::Refresh [list $m]"
  }
  
  catch {grab release $w.b.stop}
  $w.b.stop configure -state disabled
  $w.b.help configure -state normal
  $w.b.close configure -state normal
  $w.b.sub configure -state normal
  unbusyCursor .
  
}
################################################################################
#
################################################################################
proc ::file::finder::contextMenu {win fullPath x y xc yc} {
  
  update idletasks
  
  set mctxt $win.ctxtMenu
  
  if { [winfo exists $mctxt] } { destroy $mctxt }
  
  menu $mctxt
  $mctxt add command -label [tr FinderCtxOpen ] -command "::file::Open [list $fullPath]"
  $mctxt add command -label [tr FinderCtxBackup ] -command "::file::finder::backup [list $fullPath]"
  $mctxt add command -label [tr FinderCtxCopy ] -command "::file::finder::copy [list $fullPath]"
  $mctxt add command -label [tr FinderCtxMove ] -command "::file::finder::move [list $fullPath]"
  $mctxt add separator
  $mctxt add command -label [tr FinderCtxDelete ] -command "::file::finder::delete $fullPath"
  
  $mctxt post [winfo pointerx .] [winfo pointery .]
  
}
################################################################################
# will backup a base in the form name-date.ext
################################################################################
proc ::file::finder::backup { f } {
  set r [file rootname $f]
  set d [clock format [clock seconds] -format "-%Y.%m.%d-%H%M" ]
  set ext [string tolower [file extension $f]]
  if { $ext == ".si4" } {
    if { [catch { file copy "$r.sg4" "$r$d.sg4" ; file copy "$r.sn4" "$r$d.sn4" } err ] } {
      tk_messageBox -title Scid -icon error -type ok -message "File copy error $err"
      return
    }
    catch { file copy "$r.stc" "$r$d.stc" }
  }
  
  if { [catch { file copy "$r[file extension $f]" "$r$d[file extension $f]" } err ] } {
    tk_messageBox -title Scid -icon error -type ok -message "File copy error $err"
    return
  }
  
  ::file::finder::Refresh
}
################################################################################
#
################################################################################
proc ::file::finder::copy { f } {
  if {[sc_base slot $f] != 0} {
    tk_messageBox -title Scid -icon error -type ok -message "Close base first"
    return
  }
  set dir [tk_chooseDirectory -initialdir [file dirname $f] ]
  if {$dir != ""} {
    if { [string tolower [file extension $f]] == ".si4" } {
      if { [catch { file copy "[file rootname $f].sg4" "[file rootname $f].sn4" $dir } err ] } {
        tk_messageBox -title Scid -icon error -type ok -message "File copy error $err"
        return
      }
      
      catch { file copy "[file rootname $f].stc" $dir }
    }
    
    if { [catch { file copy $f $dir } err ] } {
      tk_messageBox -title Scid -icon error -type ok -message "File copy error $err"
      return
    }
    
  }
}
################################################################################
#
################################################################################
proc ::file::finder::move { f } {
  if {[sc_base slot $f] != 0} {
    tk_messageBox -title Scid -icon error -type ok -message "Close base first"
    return
  }
  set dir [tk_chooseDirectory -initialdir [file dirname $f] ]
  if {$dir != ""} {
    if { [string tolower [file extension $f]] == ".si4" } {
      
      if { [catch { file rename "[file rootname $f].sg4" "[file rootname $f].sn4" $dir } err ] } {
        tk_messageBox -title Scid -icon error -type ok -message "File rename error $err"
        return
      }
      catch { file rename "[file rootname $f].stc" $dir }
    }
    
    if { [catch { file rename $f $dir } err ] } {
      tk_messageBox -title Scid -icon error -type ok -message "File rename error $err"
      return
    }
  }
  ::file::finder::Refresh
}
################################################################################
#
################################################################################
proc ::file::finder::delete { f } {
  if {[sc_base slot $f] != 0} {
    tk_messageBox -title Scid -icon error -type ok -message "Close base first"
    return
  }
  set answer [tk_messageBox -title Scid -icon warning -type yesno -message "Are you sure you want to permanently delete $f ?"]
  if {$answer == "yes"} {
    if { [string tolower [file extension $f]] == ".si4" } {
      file delete "[file rootname $f].sg4" "[file rootname $f].sn4" "[file rootname $f].stc"
    }
    file delete $f
  }
  ::file::finder::Refresh
}
################################################################################
#
################################################################################
proc ::file::finder::ConfigMenus {{lang ""}} {
  if {! [winfo exists .finder]} { return }
  if {$lang == ""} { set lang $::language }
  set m .finder.menu
  foreach idx {0 1 2 3} tag {File Sort Types Help} {
    configMenuText $m $idx Finder$tag $lang
  }
  foreach idx {0 2} tag {Subdirs Close} {
    configMenuText $m.file $idx FinderFile$tag $lang
  }
  foreach idx {0 1 2 3 4} tag {Type Size Mod Name Path} {
    configMenuText $m.sort $idx FinderSort$tag $lang
  }
  foreach idx {0 1 2 3 4} tag {Scid Old PGN Rep EPD} {
    configMenuText $m.types $idx FinderTypes$tag $lang
  }
  foreach idx {0 1} tag {Finder Index} {
    configMenuText $m.helpmenu $idx FinderHelp$tag $lang
  }
}

proc ::file::finder::GetFiles {dir {len -1}} {
  variable data
  set dlist {}
  set flist {}
  if {$len < 0} {
    set len [expr {[string length $dir] + 1} ]
  }
  
  foreach f [glob -nocomplain [file join $dir *]] {
    if {[file isdir $f]} {
      lappend dlist $f
    } elseif {[file isfile $f]} {
      set ext [string tolower [file extension $f]]
      if {[catch {set mtime [file mtime $f]}]} { set mtime 0 }
      set showFile 0
      set rootname [file rootname $f]
      set type PGN
      if {$ext == ".si4"} {
        set showFile 1
        set type Scid
      } elseif {$ext == ".si3"} {
        set showFile 1
        set type Old
      } elseif {$ext == ".sor"} {
        set showFile 1
        set type Rep
      } elseif {$ext == ".epd"} {
        set type EPD
        set showFile 1
      } elseif {$ext == ".pgn"} {
        set showFile 1
      } elseif {$ext == ".gz"} {
        set rootname [file rootname $rootname]
        if {[regexp {\.epd\.gz} $f]} { set showFile 1; set type EPD }
        if {[regexp {\.pgn\.gz} $f]} { set showFile 1 }
      }
      if {$showFile  &&  [info exists data($type)]  &&  $data($type)} {
        set path [string range $f $len end]
        set est 0
        if {[catch {set size [sc_info fsize $f]}]} {
          # Could not determine file size, probably a PGN or EPD file
          # that the user does not have permission to read.
          set est 1
          set size 0
        }
        if {$size < 0} {
          set est 1
          set size [expr {0 - $size}]
        }
        if {[file dirname $path] == "."} { set path "./$path" }
        lappend flist [list $size $type [file tail $rootname] $path $mtime $est]
      }
    }
    update
    if {$data(stop)} { break }
  }
  if {$data(recurse)} {
    foreach f $dlist {
      foreach i [::file::finder::GetFiles $f $len] {
        lappend flist $i
        update
        if {$data(stop)} { break }
      }
    }
  }
  return $flist
}

# bookmark.tcl:
# Bookmarks list and Recently-used files list in Scid.

set bookmarks(data) {}
set bookmarks(subMenus) 0

# Read the bookmarks file if it exists:
catch {source [scidConfigFile bookmarks]}


namespace eval ::bookmarks {}

# ::bookmarks::PostMenu:
#   Posts the bookmarks toolbar menu.
#
proc ::bookmarks::PostMenu {} {
  .main.tb.bkm.menu post [winfo pointerx .] [winfo pointery .]
  if {[::bookmarks::CanAdd]} {
    .main.tb.bkm.menu activate 0
  } else {
    .main.tb.bkm.menu activate 2
  }
}

# ::bookmarks::Refresh:
#   Updates all bookmarks submenus.
#
proc ::bookmarks::Refresh {} {
  foreach menu {.menu.file.bookmarks .main.tb.bkm.menu} {
    ::bookmarks::RefreshMenu $menu
  }
}

proc ::bookmarks::RefreshMenu {menu} {
  global bookmarks helpMessage

  ::bookmarks::DeleteChildren $menu
  $menu delete 0 end
  # $menu configure -disabledforeground [$menu cget -foreground]
  set numBookmarkEntries [llength $bookmarks(data)]
  $menu add command -label FileBookmarksAdd -command ::bookmarks::AddCurrent
  set helpMessage($menu,0) FileBookmarksAdd
  $menu add cascade -label FileBookmarksFile -menu $menu.file
  menu $menu.file
  set helpMessage($menu,1) FileBookmarksFile
  if {! [::bookmarks::CanAdd]} {
    $menu entryconfigure 0 -state disabled
    $menu entryconfigure 1 -state disabled
  }
  $menu add command -label FileBookmarksEdit -command ::bookmarks::Edit
  set helpMessage($menu,2) FileBookmarksEdit
  if {$bookmarks(subMenus)} {
    set display List
    set newval 0
  } else {
    set display Sub
    set newval 1
  }
  $menu add command -label FileBookmarks$display \
    -command "set bookmarks(subMenus) $newval; ::bookmarks::Refresh"
  set helpMessage($menu,3) FileBookmarks$display
  foreach tag [list Add File Edit $display] {
    configMenuText $menu FileBookmarks$tag FileBookmarks$tag $::language
  }
  if {$numBookmarkEntries == 0} { return }
  $menu add separator

  # Add each bookmark entry:
  set current $menu
  set inSubMenu 0
  set nfolders 0
  foreach entry $bookmarks(data) {
    if {$entry == ""} { continue }
    set isfolder [::bookmarks::isfolder $entry]

    if {$isfolder} {
      incr nfolders
      $menu.file add command -label [::bookmarks::Text $entry] \
        -command "::bookmarks::AddCurrent $nfolders"
    }

    if {! $bookmarks(subMenus)} {
      if {$isfolder} {
        $current add command -label [::bookmarks::IndexText $entry]
      } elseif {!$isfolder} {
        $current add command -label [::bookmarks::IndexText $entry] \
          -command [list ::bookmarks::Go $entry]
      }
      continue
    }

    # Move out of submenu where necessary:
    if {$isfolder  &&  $inSubMenu} {
      set current [winfo parent $current]
    }

    if {$isfolder} {
      # Menu (folder) entry:
      set current [::bookmarks::NewSubMenu $current $entry]
      set inSubMenu 1
    } else {
      # Bookmark entry:
      $current add command -label [::bookmarks::Text $entry] \
        -command [list ::bookmarks::Go $entry]
    }
  }
}

# ::bookmarks::CanAdd:
#   Returns 1 if the current game can be added as a bookmark.
#   It must be in an open database, not a PGN file, and not game number 0.
#
proc ::bookmarks::CanAdd {} {
  if {! [sc_base inUse]} { return 0 }
  if {[sc_game number] == 0} { return 0 }
  if {[sc_base current] == [sc_info clipbase]} { return 0 }
  if {[file pathtype [sc_base filename]] != "absolute"} { return 0 }
  foreach suffix {.pgn .PGN .pgn.gz} {
    if {[string match "*$suffix" [sc_base filename]]} { return 0 }
  }
  return 1
}

# ::bookmarks::AddCurrent:
#   Adds the current game to the bookmarks list.
#
proc ::bookmarks::AddCurrent {{folder 0}} {
  global bookmarks
  if {! [sc_base inUse]} {
    return
  }
  set text [::bookmarks::New game]
  set len [llength $bookmarks(data)]
  set fcount 0
  for {set i 0} {$i < $len} {incr i} {
    if {[::bookmarks::isfolder [lindex $bookmarks(data) $i]]} {
      if {$fcount == $folder} { break }
      incr fcount
    }
  }
  set bookmarks(data) [linsert $bookmarks(data) $i $text]
  ::bookmarks::Save
  ::bookmarks::Refresh
}

# ::bookmarks::New:
#   Returns a bookmarks list entry for the current game or a new folder.
#
proc ::bookmarks::New {type} {
  if {$type == "folder"} { return [list "f" ""] }
  set text "[file tail [sc_base filename]]: [sc_game info result], "
  append text "[::utils::string::Surname [sc_game info white]] - "
  append text "[::utils::string::Surname [sc_game info black]], "
  append text "[::utils::string::CityName [sc_game info site]] "
  set round [sc_game info round]
  if {$round != ""  &&  $round != "?"} { append text "($round) " }
  append text "[sc_game info year]"
  set list [list "g" $text]
  sc_game pgn
  lappend list [sc_base filename] [sc_game number] [sc_pos pgnOffset]
  lappend list [sc_game info white] [sc_game info black]
  lappend list [sc_game info year] [sc_game info site]
  lappend list [sc_game info round] [sc_game info result]
  return $list
}

# ::bookmarks::Go
#
#   Jumps to a selected bookmark.
#
proc ::bookmarks::Go {entry} {
  if {[::bookmarks::isfolder $entry]} { return }
  set fname [lindex $entry 2]
  set gnum [lindex $entry 3]
  set ply [lindex $entry 4]
  set slot [sc_base slot $fname]
  if {$slot != 0} {
    sc_base switch $slot
  } else {
    busyCursor .
    if {[catch { ::file::Open $fname} result]} {
      unbusyCursor .
      tk_messageBox -icon warning -type ok -parent . \
        -title "Scid" -message "Unable to load the database:\n$fname\n\n$result"
      return
    }
    unbusyCursor .
    set ::glist 1
    ::recentFiles::add "[file rootname $fname].si4"
  }
  # Find and load the best database game matching the bookmark:
  set white [lindex $entry 5]
  set black [lindex $entry 6]
  set year  [lindex $entry 7]
  set site  [lindex $entry 8]
  set round [lindex $entry 9]
  set result [lindex $entry 10]

  set best [sc_game find $gnum $white $black $site $round $year $result]
  if {[catch {::game::Load $best}]} {
    tk_messageBox -icon warning -type ok -parent . \
      -title "Scid" -message "Unable to load game number: $best"
  } else {
    sc_move pgn $ply
    flipBoardForPlayerNames $::myPlayerNames
  }
  ::windows::gamelist::Refresh
  ::tree::refresh
  ::windows::stats::Refresh
  updateMenuStates
  updateBoard -pgn
  updateTitle
  updateStatusBar
}

# ::bookmarks::DeleteChildren
#
#   Deletes all submenus of a bookmark menu.
#
proc ::bookmarks::DeleteChildren {w} {
  foreach child [winfo children $w] {
    ::bookmarks::DeleteChildren $child
    destroy $child
  }
}

# ::bookmarks::NewSubMenu
#
#   Creates a new bookmark submenu.
#
proc ::bookmarks::NewSubMenu {w entry} {
  set i 1
  while {[winfo exists $w.m$i]} { incr i }
  $w add cascade -label [::bookmarks::Text $entry] -menu $w.m$i
  menu $w.m$i -tearoff 0
  return $w.m$i
}

# Globals used for bookmark editing:
#
set bookmarks(edit) ""
set bookmarks(ismenu) 0

# Button images for bookmark editing:

image create photo bookmark_up -data {
R0lGODdhGAAYAMIAALu7uwAAAMzM/5mZ/2ZmzP///zMzZgAAACwAAAAAGAAYAAADRgi63P4w
ykmrvTirEPQKwtBpYChmpUmMVVAI5kCsbfGqMy25dpzPLAfvNij+gBCDUokjLJUUQ9OAkRpn
1Mvz6el6v+AwOAEAOw==
}

image create photo bookmark_down -data {
R0lGODdhGAAYAMIAALu7uzMzZv///8zM/5mZ/2ZmzAAAAAAAACwAAAAAGAAYAAADSQi63P4w
ykmrvRiHzbcWw0AQRfCFY0l1ATiSLGQINCiSRZ4b0UyjOB1PMgvddIXhxABEKinM1C5jkD4v
1WSGYbhuv+CweExeJAAAOw==
}

#----------------------------------------------------------------------
if {$png_image_support} {
	image create photo bookmark_up -data {
		iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABHNCSVQICAgIfAhkiAAAABl0RVh0
		U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAAG0SURBVDiNjZHPaxNREMc/s7tpE5ukthET
		2zTkqWujaNSiIOYmnrpnz/4bvXns+x+8eBOPPfQiiCJ6URDiRfESKoKC1CLa5ue+8ZBUjOxqv/AY
		5s3wmS8zqCppr76+WfxXXVXxSJGJ7Brw0UT2VloPkAwwkTWIPLm4Wpv3fG/LRPbGkQEmsiVEnl+9
		dLoYnqnSutbIiyePTWSb/wWYyOZE5Onq2eVypXLSe9vZRYIZrl8J84g8M5ENUwEmsr6IbC0vnQjr
		9Wrm09efxM7xbmeXbC4nzQtmHpGXJrK1ZAci90uLxZvnGyb7+dsBI6egoArvd/YoFPNeI1xZnEDK
		UwAT2XuF/LE7l5vn5hCP3Ix/SAVgoTCL73ksVUq+qZ0qI/LCRHYBQOrrm3eBB4ATQTOBL63Wmvdl
		r8tBt8/+fo+wepx2+8Ow2+97qgD4wCvgdgA8BB7B2O5gGP9wTqeWG8dKbzBwqqwA3/8oDYLO9sbg
		r0sQO51k4ziMHToe3e9sb/RSz3ioUewmG5CpPEmJgN8OJmE4SgcEaYC5bEAgjoyvxM6hmtSZDNA3
		r9tJvbNJn6Jp6CPqF7KJv5pbcXAUAAAAAElFTkSuQmCC
	}

	image create photo bookmark_down -data {
		iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABHNCSVQICAgIfAhkiAAAABl0RVh0
		U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAAHISURBVDiNpZG/bhNBEMa/XZ8tHDkI23JQ
		kiJchWiQgDSJBIiGgkM05AmivAEFV6bjeAieAMpcCWUQBYqlSFGgWeeCSUT+3Dk+39r3Z4fizigx
		d6ZgpdVKszO/b+YbRkT4n6NNBnTDCgGUC/Lrwja9qQAAbO3FI/ASB4cCJwUAeL+1PYpi9e8OACBR
		hD3nFMFgBD8Y4uHdRRRNyvMBmRJLnzzl6YAklSOkb5woFJmdC4jVODltIUqKO9B0w1oH8G4cKGsc
		SqkrM0dxgkqlrMlh6OqGNQ7vAHjCiAj687ebs7WZVw/u3alxrQRfhugHEaQM4Q8kGrPX0KpXwRnD
		YfdX3HGOf4BoWdjmGQcAsfV60/eDD+3d78EojCCHcSaStuH6QwxkhMOfJ0nHOT4B0aqwzbMrHhDR
		Rs/rb3/bF7JW1cDZHwswV5+B1+urzsGRmxUfjevYZXd1w6oyxr60bjZvLy0tVk49iQonjKSkzkG3
		B6IVYZv7l01kk+vRDasJxtrzC3PzrVaz5LkXcJzuBYgeC9tsT27hL0AG0cHY10ajfuP83B2A6Kmw
		zc95a8wFZJD7AD4BeCls82NuEgAQUeG99ezN9Wn/RITfJHoJcxYSI+0AAAAASUVORK5CYII=
	}
}
#----------------------------------------------------------------------

# ::bookmarks::Edit
#
#   Creates the bookmark editing window.
#
proc ::bookmarks::Edit {} {
  global bookmarks
  set w .bmedit
  if {[winfo exists $w]} { return }
  set bookmarks(old) $bookmarks(data)
  toplevel $w
  wm title $w "Scid: [tr FileBookmarksEdit]"
  # wm transient $w .
  bind $w <F1> {helpWindow Bookmarks}
  entry $w.e -width 40 -foreground black -background white \
    -textvariable bookmarks(edit) -font font_Small -exportselection 0
  bind $w.e <FocusIn>  {.bmedit.e configure -background lightYellow}
  bind $w.e <FocusOut> {.bmedit.e configure -background white}

  trace variable bookmarks(edit) w ::bookmarks::EditRefresh
  pack $w.e -side top -fill x
  pack [frame $w.b2] -side bottom -fill x
  pack [frame $w.b1] -side bottom -fill x
  pack [frame $w.f] -side top -fill both -expand 1
  listbox $w.f.list -width 50 -height 10 -yscrollcommand "$w.f.ybar set" \
    -fg black -bg white -exportselection 0 -font font_Small -setgrid 1
  scrollbar $w.f.ybar -takefocus 0 -command "$w.f.list yview"
  bind $w.f.list <<ListboxSelect>>  ::bookmarks::EditSelect
  pack $w.f.ybar -side right -fill y
  pack $w.f.list -side left -fill x -expand 1
  foreach entry $bookmarks(data) {
    $w.f.list insert end [::bookmarks::IndexText $entry]
  }
  dialogbutton $w.b1.newFolder -text $::tr(NewSubmenu) \
    -command {::bookmarks::EditNew folder}
  dialogbutton $w.b1.newGame -text [tr FileBookmarksAdd] \
    -command {::bookmarks::EditNew game}
  if {! [::bookmarks::CanAdd]} { $w.b1.newGame configure -state disabled }
  dialogbutton $w.b1.delete -text $::tr(Delete)  -command ::bookmarks::EditDelete
  button $w.b2.up -image bookmark_up -command {::bookmarks::EditMove up}
  button $w.b2.down -image bookmark_down -command {::bookmarks::EditMove down}
  foreach i [list $w.b2.up $w.b2.down] {
    $i configure -padx 0 -pady 0 -borderwidth 1
  }
  dialogbutton $w.b2.ok -text "OK" -command ::bookmarks::EditDone
  dialogbutton $w.b2.cancel -text $::tr(Cancel) -command {
    set bookmarks(data) $bookmarks(old)
    catch {grab release .bmedit}
    destroy .bmedit
  }
  pack $w.b1.newFolder $w.b1.newGame $w.b1.delete -side left -padx 2 -pady 2
  pack $w.b2.up $w.b2.down -side left -padx 2 -pady 2
  pack $w.b2.cancel $w.b2.ok -side right -padx 2 -pady 2
  set bookmarks(edit) ""

  wm withdraw $w
  update idletasks
  set x [expr {[winfo screenwidth $w]/2 - [winfo reqwidth $w]/2 \
                 - [winfo vrootx .]}]
  set y [expr {[winfo screenheight $w]/2 - [winfo reqheight $w]/2 \
                 - [winfo vrooty .]}]
  wm geom $w +$x+$y
  wm deiconify $w
  update
  catch {grab .bmedit}
}

# ::bookmarks::EditDone
#
#    Updates the bookmarks and closes the bookmark editing window.
#
proc ::bookmarks::EditDone {} {
  catch {grab release .bmedit}
  destroy .bmedit
  ::bookmarks::Save
  ::bookmarks::Refresh
}

# ::bookmarks::EditRefresh
#
#   Updates the bookmarks whenever the contents of the bookmark
#   editing entry box are changed.
#
proc ::bookmarks::EditRefresh {args} {
  global bookmarks
  set list .bmedit.f.list
  set sel [lindex [$list curselection] 0]
  if {$sel == ""} { return }
  set text $bookmarks(edit)
  set e [lindex $bookmarks(data) $sel]
  set e [::bookmarks::SetText $e $text]
  set text [::bookmarks::IndexText $e]
  set bookmarks(data) [lreplace $bookmarks(data) $sel $sel $e]
  $list insert $sel $text
  $list delete [expr {$sel + 1} ]
  $list selection clear 0 end
  $list selection set $sel
}

# ::bookmarks::EditSelect
#
#   Sets the bookmark editing entry box when a bookmark is selected.
#
proc ::bookmarks::EditSelect {{sel ""}} {
  global bookmarks
  set list .bmedit.f.list
  set sel [lindex [$list curselection] 0]
  if {$sel == ""} {
    .bmedit.e delete 0 end
    return
  }
  if {$sel >= [llength $bookmarks(data)]} {
    $list selection clear 0 end
    set bookmarks(edit) ""
    return
  }
  set e [lindex $bookmarks(data) $sel]
  set bookmarks(ismenu) [::bookmarks::isfolder $e]
  set bookmarks(edit) [::bookmarks::Text $e]
}

# ::bookmarks::isfolder:
#   Returns 1 if this bookmark entry is a folder (submenu).
#
proc ::bookmarks::isfolder {entry} {
  if {[lindex $entry 0] == "f"} { return 1 }
  return 0
}

# ::bookmarks::Text:
#   Returns the entry text of a bookmark.
#
proc ::bookmarks::Text {entry} {
  return [lindex $entry 1]
}

proc ::bookmarks::IndexText {entry} {
  set text ""
  if {[lindex $entry 0] == "f"} {
    append text "\[[lindex $entry 1]\]"
  } else {
    append text "    [lindex $entry 1]"
  }
  return $text
}

proc ::bookmarks::SetText {entry text} {
  return [lreplace $entry 1 1 $text]
}

# ::bookmarks::EditMove
#
#   Moves the selected bookmark "up" or "down" one place.
#
proc ::bookmarks::EditMove {{dir "up"}} {
  global bookmarks
  set w .bmedit
  set list $w.f.list
  set sel [lindex [$list curselection] 0]
  if {$sel == ""} { return }
  set e [lindex $bookmarks(data) $sel]
  set text [::bookmarks::IndexText $e]
  set newsel $sel
  if {$dir == "up"} {
    incr newsel -1
    if {$newsel < 0} { return }
  } else {
    incr newsel
    if {$newsel >= [$list index end]} { return }
  }
  set bookmarks(data) [lreplace $bookmarks(data) $sel $sel]
  set bookmarks(data) [linsert $bookmarks(data) $newsel $e]
  $list selection clear 0 end
  $list delete $sel
  $list insert $newsel $text
  $list selection set $newsel
}

# ::bookmarks::EditDelete
#
#   Deletes the selected bookmark.
#
proc ::bookmarks::EditDelete {} {
  global bookmarks
  set w .bmedit
  set list $w.f.list
  set sel [lindex [$list curselection] 0]
  if {$sel == ""} { return }
  set bookmarks(data) [lreplace $bookmarks(data) $sel $sel]
  $list selection clear 0 end
  $list delete $sel
  set bookmarks(edit) ""
}

# ::bookmarks::EditNew
#
#   Inserts a new entry ("folder" for a submenu or "game" for the
#   current game) after the selected bookmark.
#
proc ::bookmarks::EditNew {{type "folder"}} {
  global bookmarks
  set w .bmedit
  set list $w.f.list
  set folder 0
  if {[string index $type 0] == "f"} {
    set folder 1
    set entry [::bookmarks::New folder]
  } else {
    set entry [::bookmarks::New game]
  }
  set sel [lindex [$list curselection] 0]
  if {$sel == ""} {
    lappend bookmarks(data) $entry
    set sel [$list index end]
    $list insert end [::bookmarks::IndexText $entry]
    $list selection clear 0 end
    $list selection set $sel
    $list see $sel
    ::bookmarks::EditSelect
    return
  }
  incr sel
  set bookmarks(data) [linsert $bookmarks(data) $sel $entry]
  $list insert $sel [::bookmarks::IndexText $entry]
  $list selection clear 0 end
  $list selection set $sel
  $list see $sel
  ::bookmarks::EditSelect
}

# ::bookmarks::Save
#
#   Saves the bookmarks file, reporting any error in a message box if
#   reportError is true.
#
proc ::bookmarks::Save {{reportError 0}} {
  global bookmarks
  set f {}
  set filename [scidConfigFile bookmarks]
  if  {[catch {open $filename w} f]} {
    if {$reportError} {
      tk_messageBox -title "Scid" -type ok -icon warning \
        -message "Unable to write bookmarks file: $filename\n$f"
    }
    return
  }
  puts $f "# Scid [sc_info version] bookmarks file\n"
  foreach i {subMenus data} {
    puts $f "set bookmarks($i) [list [set bookmarks($i)]]"
    puts $f ""
  }
  close $f
}


# End of file: bookmark.tcl

####################
# Recent files list:

set recentFiles(limit) 10   ;# Maximum number of recent files to remember.
set recentFiles(menu)   5   ;# Maximum number of files to show in File menu.
set recentFiles(extra)  5   ;# Maximum number of files to show in extra menu.
set recentFiles(data)  {}   ;# List of recently used files.

catch {source [scidConfigFile recentfiles]}

namespace eval ::recentFiles {}

# ::recentFiles::save
#   Saves the recent-file-list file, reporting any error in a message box
#   if reportError is true.
#
proc ::recentFiles::save {{reportError 0}} {
  global recentFiles
  set f {}
  set filename [scidConfigFile recentfiles]
  if  {[catch {open $filename w} f]} {
    if {$reportError} {
      tk_messageBox -title "Scid" -type ok -icon warning \
          -message "Unable to write file: $filename\n$f"
    }
    return
  }
  puts $f "# Scid [sc_info version] recent files list"
  puts $f ""
  foreach i {limit menu extra data} {
    puts $f "set recentFiles($i) [list [set recentFiles($i)]]"
    puts $f ""
  }
  close $f
}

# ::recentFiles::add
#   Adds a file to the recent files list, or moves it to the front
#   if that file is already in the list.
#
proc ::recentFiles::add {fname} {
  global recentFiles
  
  if {$fname == "" } { return }
  
  set rlist $recentFiles(data)
  
  # Remove file ot be added from its current place in the
  # list, if it is there:
  while {1} {
    set idx [lsearch -exact $rlist $fname]
    if {$idx < 0} { break }
    set rlist [lreplace $rlist $idx $idx]
  }
  
  # Insert the current file at the start of the list:
  set rlist [linsert $rlist 0 $fname]
  
  # Trim the list if necessary:
  if {[llength $rlist] < $recentFiles(limit)} {
    set rlist [lrange $rlist 0 [expr {$recentFiles(limit) - 1} ]]
  }
  
  set recentFiles(data) $rlist
  # ::recentFiles::save
}

# ::recentFiles::load
#   Loads the selected recent file, or swtches to its database slot
#   if it is already open.
#
proc ::recentFiles::load {fname} {
  set rname $fname
  if {[file extension $rname] == ".si4"} {
    set rname [file rootname $rname]
  }
  for {set i 1} {$i <= [sc_base count total]} {incr i} {
    if {$rname == [sc_base filename $i]} {
      sc_base switch $i
      ::recentFiles::add $fname
      ::windows::gamelist::Refresh
      ::tree::refresh
      ::windows::stats::Refresh
      updateMenuStates
      updateBoard -pgn
      updateTitle
      updateStatusBar
      return
    }
  }
  ::file::Open $fname
}

#################################################################################
proc ::recentFiles::treeshow {menu} {
  global recentFiles
  set rlist $recentFiles(data)
  $menu delete 0 end
  set nfiles [llength $rlist]
  if {$nfiles > $recentFiles(limit)} { set nfiles $recentFiles(limit) }
  
  for {set i 0} {$i<$nfiles} {incr i} {
    set name [lindex $rlist $i]
    $menu add command -label "$name" -command [list ::file::openBaseAsTree $name]
  }
}

#################################################################################
# ::recentFiles::show
#   Adds the recent files to the end of the specified menu.
#   Returns the number of menu entries added.
#
proc ::recentFiles::show {menu} {
  global recentFiles
  set idx [$menu index end]
  incr idx
  set rlist $recentFiles(data)
  set nfiles [llength $rlist]
  set nExtraFiles [expr {$nfiles - $recentFiles(menu)} ]
  if {$nfiles > $recentFiles(menu)} { set nfiles $recentFiles(menu) }
  if {$nExtraFiles > $recentFiles(extra)} {
    set nExtraFiles $recentFiles(extra)
  }
  if {$nExtraFiles < 0} { set nExtraFiles 0 }
  
  # Add menu commands for the most recent files:
  
  for {set i 0} {$i < $nfiles} {incr i} {
    set fname [lindex $rlist $i]
    set mname [::recentFiles::menuname $fname]
    set text [file tail $fname]
    set num [expr {$i + 1} ]
    set underline -1
    if {$num <= 9} { set underline 0 }
    if {$num == 10} { set underline 1 }
    $menu add command -label "$num: $mname" -underline $underline \
        -command [list ::recentFiles::load $fname]
    set ::helpMessage($menu,$idx) "  [file nativename $fname]"
    incr idx
  }
  
  # If no extra submenu of recent files is needed, return now:
  if {$nExtraFiles <= 0} { return $nfiles }
  
  # Now add the extra submenu of files:
  catch {destroy $menu.recentFiles}
  menu $menu.recentFiles
  $menu add cascade -label "..." -underline 0 -menu $menu.recentFiles
  set i $nfiles
  for {set extra 0} {$extra < $nExtraFiles} {incr extra} {
    set fname [lindex $rlist $i]
    incr i
    set mname [::recentFiles::menuname $fname]
    set text [file tail $fname]
    set num [expr {$extra + 1} ]
    set underline -1
    if {$num <= 9} { set underline 0 }
    if {$num == 10} { set underline 1 }
    $menu.recentFiles add command -label "$num: $mname" -underline $underline \
        -command [list ::recentFiles::load $fname]
    set ::helpMessage($menu.recentFiles,$extra) "  $fname"
  }
  return [expr {$nfiles + 1} ]
}

# ::recentFiles::menuname
#   Given a full-path filename, returns a possibly shortened
#   version suitable for displaying in a menu, such as
#   "..../my/files/abc.pgn" instead of "/long/path/to/my/files/abc.pgn"
#
proc ::recentFiles::menuname {fname} {
  set mname $fname
  set mname [file nativename $mname]
  if {[file extension $mname] == [sc_info suffix index]} {
    set mname [file rootname $mname]
  }
  if {[string length $mname] < 25} { return $mname }
  
  # Generate a menu name " ..../path/filename" for the file:
  set dir [file dirname $fname]
  while {1} {
    set tail [file join [file tail $dir] $mname]
    set dir [file dirname $dir]
    if {[string length $tail] > 20} { break }
    set mname $tail
  }
  set mname [file join .... $mname]
  set mname [file nativename $mname]
  return $mname
}

# ::recentFiles::configure
#   Produces a dialog box for configuring the number of recent files
#   to display in the File menu and in a submenu.
#
proc ::recentFiles::configure {} {
  global recentFiles
  set recentFiles(temp_menu) $recentFiles(menu)
  set recentFiles(temp_extra) $recentFiles(extra)
  set w .recentFilesDlg
  toplevel $w
  wm title $w "Scid: [tr OptionsRecent]"
  label $w.lmenu -text $::tr(RecentFilesMenu)
  scale $w.menu -variable recentFiles(temp_menu) -from 0 -to 10 -length 250 \
      -orient horizontal -showvalue 0 -tickinterval 1 -font font_Small
  frame $w.sep -height 4
  label $w.lextra -text $::tr(RecentFilesExtra)
  scale $w.extra -variable recentFiles(temp_extra) -from 0 -to 10 -length 250 \
      -orient horizontal -showvalue 0 -tickinterval 1 -font font_Small
  pack $w.lmenu $w.menu $w.sep $w.lextra $w.extra -side top -padx 10
  addHorizontalRule $w
  pack [frame $w.b] -side bottom
  button $w.b.ok -text "OK" -command {
    set recentFiles(menu) $recentFiles(temp_menu)
    set recentFiles(extra) $recentFiles(temp_extra)
    catch {grab release .recentFilesDlg}
    destroy .recentFilesDlg
    ::recentFiles::save
    updateMenuStates
  }
  button $w.b.cancel -text $::tr(Cancel) \
      -command "catch {grab release $w}; destroy $w"
  pack $w.b.cancel $w.b.ok -side right -padx 5 -pady 5
  catch {grab $w}
}

# epd.tcl: EPD editing windows for Scid.
# Copyright (C) 2000  Shane Hudson
# Copyright (C) 2007  Pascal Georges

set maxEpd [sc_info limit epd]
set delayEpd 5
array set epdTimer {}

################################################################################
#
################################################################################
proc storeEpdText {id} {
  sc_epd set $id [.epd$id.text get 1.0 "end-1c"]
}
################################################################################
#
################################################################################
proc storeEpdTexts {} {
  global maxEpd
  for {set i 1} {$i <= $maxEpd} {incr i} {
    if {[winfo exists .epd$i]} { storeEpdText $i }
  }
}
################################################################################
#
################################################################################
proc updateEpdWin {id} {
  set w .epd$id
  $w.text delete 1.0 end
  $w.text insert end [sc_epd get $id]
  
  # Update the EPD window status bar:
  set str "  --  "
  if {[sc_epd readonly $id]} {
    set str "  %%  "
  } elseif {[sc_epd altered $id]} {
    set str "  XX  "
  }
  append str "[file tail [sc_epd name $id]]  [sc_epd size $id] positions"
  set moves [lsort -ascii [sc_epd moves $id]]
  set len [llength $moves]
  if {$len} {
    append str "  \[[llength $moves]: [join $moves " "]\]"
  } else {
    append str {  [No moves from this position]}
  }
  $w.status configure -text $str
  unset str
}
################################################################################
#
################################################################################
proc updateEpdWins {} {
  global maxEpd
  for {set i 1} {$i <= $maxEpd} {incr i} {
    if {[winfo exists .epd$i]} { updateEpdWin $i }
  }
}
################################################################################
#
################################################################################
proc closeEpdWin {id} {
  catch {sc_epd close $id}
}
################################################################################
#
################################################################################
proc confirmCloseEpd {id} {
  if {! [winfo exists .epd$id]} { return }
  storeEpdText $id
  if {[sc_epd altered $id]  &&  ! [sc_epd readonly $id]} {
    set result [tk_dialog .dialog "Save changes?" \
        "This file has been altered; do you want to save it?" \
        "" 0 "Save changes" "Close without saving" "Cancel"]
    if {$result == 2} { return }
    if {$result == 0} { sc_epd write $id }
  }
  sc_epd close $id
  focus .
  destroy .epd$id
  return
}
################################################################################
#
################################################################################
proc saveEpdWin {id} {
  set w .epd$id
  busyCursor . 1
  set temp_oldcursor [$w.text cget -cursor]
  $w.text configure -cursor watch
  update idletasks
  storeEpdText $id
  sc_epd write $id
  updateEpdWin $id
  $w.text configure -cursor $temp_oldcursor
  busyCursor . 0
}
################################################################################
#
################################################################################
proc epd_MoveToDeepestMatch {id} {
  if {! [winfo exists .epd$id]} { return }
  sc_move ply [sc_epd deepest $id]
  updateBoard
  return
}
################################################################################
#
################################################################################
proc newEpdWin {cmd {fname ""}} {
  global maxEpd
  set showErrors 1
  if {$cmd == "openSilent"} { set showErrors 0 }
  if {$fname == ""} { set showErrors 1 }
  if {[sc_epd available] < 1} {
    if {$showErrors} {
      tk_messageBox -type ok -icon info -title "Too many EPD files open" \
          -message "You already have $maxEpd EPD files open; close one first."
    }
    return 0
  }
  set new_types { {"EPD files" {".epd"} } }
  set open_types $new_types
  if {[sc_info gzip]} {
    set open_types { {"EPD files" {".epd" ".epd.gz"} } }
  }
  if {$fname == ""} {
    if {$cmd == "create"} {
      set fname [tk_getSaveFile -initialdir $::initialDir(epd) -filetypes $new_types -title "Create an EPD file"]
      if {[string compare [file extension $fname] ".epd"] != 0} {
        append fname ".epd"
      }
    } elseif {$cmd == "open"} {
      set fname [tk_getOpenFile -initialdir $::initialDir(epd) -filetypes $open_types -title "Open an EPD file"]
    } else { return 0 }
  }
  if {$fname == ""} { return 0 }
  
  busyCursor . 1
  if {[catch {sc_epd $cmd $fname} result]} {
    if {$showErrors} {
      busyCursor . 0
      tk_messageBox -type ok -icon error -title "Scid: EPD file error" \
          -message $result
    }
    return 0
  }
  busyCursor . 0
  set id $result
  set w .epd$id
  toplevel $w
  wm title $w "Scid EPD: [file tail $fname]"
  wm minsize $w 40 1
  bind $w <Destroy> "closeEpdWin $id"
  bind $w <F1> { helpWindow EPD }
  
  frame $w.grid
  text $w.text -background white -font font_Regular -width 60 -height 7 \
      -wrap none -setgrid 1 -yscrollcommand "$w.ybar set" \
      -xscrollcommand "$w.xbar set"
  scrollbar $w.ybar -takefocus 0 -command "$w.text yview"
  scrollbar $w.xbar -orient horizontal -takefocus 0 -command "$w.text xview"
  label $w.status -width 1 -anchor w -font font_Small -relief sunken
  listbox $w.lb -background white -font font_Regular -width 60 -height 7 -setgrid 1 -yscrollcommand "$w.ybar2 set" \
      -xscrollcommand "$w.xbar2 set" -selectmode single
  scrollbar $w.ybar2 -takefocus 0 -command "$w.lb yview"
  scrollbar $w.xbar2 -orient horizontal -takefocus 0 -command "$w.lb xview"
  
  frame $w.menu -borderwidth 3 -relief raised
  pack $w.menu  -side top -fill x
  menubutton $w.menu.file -text File -menu $w.menu.file.m -underline 0
  menubutton $w.menu.edit -text Edit -menu $w.menu.edit.m -underline 0
  menubutton $w.menu.tools -text Tools -menu $w.menu.tools.m -underline 0
  menubutton $w.menu.help -text Help -menu $w.menu.help.m -underline 0
  
  foreach i {file edit tools help} {
    menu $w.menu.$i.m -tearoff 0
    pack $w.menu.$i -side left
  }
  
  set m $w.menu.file.m
  $m add command -label "New" -acc "Ctrl+N" -underline 0 \
      -command {newEpdWin create}
  bind $w <Control-n> {newEpdWin create}
  $m add command -label "Open" -acc "Ctrl+O" -underline 0 \
      -command {newEpdWin open}
  bind $w <Control-o> {newEpdWin open}
  $m add command -label "Save" -acc "Ctrl+S" -underline 0 \
      -command "saveEpdWin $id"
  if {[sc_epd readonly $id]} {
    $m entryconfig "Save" -state disabled
  } else {
    bind $w <Control-s> "saveEpdWin $id; break"
  }
  $m add command -label "Close" -acc "Ctrl+Q" -underline 0 \
      -command "confirmCloseEpd $id"
  bind $w <Control-q> "confirmCloseEpd $id"
  
  set m $w.menu.edit.m
  $m add command -label "Cut" -acc "Ctrl+X" -underline 2 -command "tk_textCut $w.text"
  bind $w <Control-x> "tk_textCut $w.text; break"
  $m add command -label "Copy" -acc "Ctrl+C" -underline 0 -command "tk_textCopy $w.text"
  bind $w <Control-c> "tk_textCopy $w.text; break"
  $m add command -label "Paste" -acc "Ctrl+V" -underline 0 -command "tk_textPaste $w.text"
  bind $w <Control-v> "tk_textPaste $w.text; break"
  $m add command -label "Select All" -acc "Ctrl+A" -underline 7 \
      -command "$w.text tag add sel 1.0 end"
  bind $w <Control-a> "$w.text tag add sel 1.0 end; break"
  $m add separator
  $m add command -label "Revert" -acc "Ctrl+R" -underline 0 \
      -command "updateEpdWin $id"
  bind $w <Control-r> "updateEpdWin $id; break"
  $m add command -label "Sort lines" -accel "Ctrl+Shift+S" \
      -underline 0 -command "epd_sortLines $w.text"
  bind $w <Control-S> "epd_sortLines $w.text; break"
  
  set m $w.menu.tools.m
  $m add command -label "Find Deepest game position" \
      -underline 5 -command "epd_MoveToDeepestMatch $id"
  $m add separator
  $m add command -label "Next position in file" \
      -accelerator "Ctrl+DownArrow" -underline 0 \
      -command "sc_epd next $id; updateBoard -pgn"
  bind $w <Control-Down> "sc_epd next $id; updateBoard -pgn; break"
  $m add command -label "Previous position in file" \
      -accelerator "Ctrl+UpArrow" -underline 0 \
      -command "sc_epd prev $id; updateBoard -pgn"
  bind $w <Control-Up> "sc_epd prev $id; updateBoard -pgn; break"
  $m add separator
  $m add command -label "Paste analysis" -accelerator "Ctrl+Shift+A" \
      -underline 6 -command "epd_pasteAnalysis $w.text"
  bind $w <Control-A> "epd_pasteAnalysis $w.text; break"
  $m add command -label "Annotate positions" -command "epd_Analyse $w.text $id"
  $m add separator
  $m add command -label "Strip out EPD field" -underline 0 \
      -command "epd_chooseStripField $id"
  
  $w.menu.help.m add command -label "EPD files help" -underline 0 \
      -acc "F1" -command "helpWindow EPD"
  $w.menu.help.m add command -label "General index" -underline 0 \
      -command "helpWindow Index"
  
  pack $w.status -side bottom -fill x
  pack $w.grid -fill both -expand yes
  grid $w.text -in $w.grid -row 0 -column 0 -sticky news
  grid $w.ybar -in $w.grid -row 0 -column 1 -sticky news
  grid $w.xbar -in $w.grid -row 1 -column 0 -sticky news
  grid $w.lb -in $w.grid -row 2 -column 0 -sticky news
  grid $w.ybar2 -in $w.grid -row 2 -column 1 -sticky news
  grid $w.xbar2 -in $w.grid -row 3 -column 0 -sticky news
  
  grid rowconfig $w.grid 0 -weight 1 -minsize 0
  grid columnconfig $w.grid 0 -weight 1 -minsize 0
  
  # Right-mouse button cut/copy/paste menu:
  menu $w.text.edit -tearoff 0
  $w.text.edit add command -label "Cut"  -command "tk_textCut $w.text"
  $w.text.edit add command -label "Copy" -command "tk_textCopy $w.text"
  $w.text.edit add command -label "Paste" -command "tk_textPaste $w.text"
  bind $w.text <ButtonPress-$::MB3> "tk_popup $w.text.edit %X %Y"
  
  updateEpdWin $id
  
  loadEpdLines $id
  
  bind $w.lb <<ListboxSelect>> "refreshEpd $id"
  
  return 1
}
################################################################################
#
################################################################################
proc refreshEpd { id } {
  set w .epd$id
  set idx [ expr [$w.lb curselection] +1 ]
  sc_epd load $id $::selection($id) $idx
  set ::selection($id) $idx
  updateBoard -pgn
}
################################################################################
#
################################################################################
proc loadEpdLines { id } {
  set w .epd$id
  set size [sc_epd size $id ]
  for { set i 1 } { $i <= $size } { incr i } {
    sc_epd next $id
    set line [sc_epd get $id]
    set line [string map {"\n" "; "} $line]
    set fen [string range [sc_pos fen] 0 end-4]
    $w.lb insert end "$i $fen $line"
  }
  $w.lb selection set 0
  if {! [catch {sc_epd load $id $size 1} ]} {
    set ::selection($id) 1
    updateBoard -pgn
  }
}
################################################################################
#
################################################################################
proc epd_sortLines {textwidget} {
  if {! [winfo exists $textwidget]} { return }
  set text [$textwidget get 1.0 "end-1c"]
  set fieldlist [split $text "\n"]
  set sortedlist [lsort $fieldlist]
  while {[lindex $sortedlist 0] == ""} {
    set sortedlist [lrange $sortedlist 1 end]
  }
  set newtext [join $sortedlist "\n"]
  append newtext "\n"
  if {! [string compare $text $newtext]} { return }
  $textwidget delete 1.0 end
  $textwidget insert end "$newtext"
}
################################################################################
# epd_Analyse:
#    Pastes current chess engine analysis into this EPD file position.
################################################################################
proc epd_Analyse { textwidget id } {
  global analysis
  
  if {! [winfo exists $textwidget]} { return }
  
  # choose analysis time
  set y .epdDelay
  toplevel $y
  wm title $y "Scid EPD"
  label $y.label -text $::tr(AnnotateTime:)
  pack $y.label -side top -pady 5 -padx 5
  spinbox $y.spDelay -background white -width 8 -textvariable ::delayEpd -from 1 -to 300 -increment 1 -validate all -vcmd { regexp {^[0-9]+$} %P }
  pack $y.spDelay -side top -pady 5
  button $y.ok -text "OK" -command "destroy $y ; epd_LaunchAnalysis $id $textwidget"
  pack $y.ok -side right -padx 5 -pady 5
  focus $y.spDelay
  update ; # or grab will fail
  grab $y
  
}
################################################################################
# strips all fields that will be pasted from analysis window
################################################################################
proc epd_clearEpdFields {id} {
  foreach field { "acd" "acn" "ce" "pv" } {
    set result [sc_epd strip $id $field]
    updateEpdWin $id
  }
}
################################################################################
#
################################################################################
proc epd_LaunchAnalysis {id textwidget} {
  if {! [winfo exists .analysisWin1]} {
    makeAnalysisWin
  }
  epd_clearEpdFields $id
  set w .epd$id
  set size [sc_epd size $id ]
  set ::epdTimer($id) 0
  for { set i 1 } { $i <= $size } { incr i } {
    $w.lb selection clear [expr $::selection($id) - 1]
    $w.lb selection set [expr $i -1]
    $w.lb see [expr $i -1]
    refreshEpd $id
    after [expr $::delayEpd * 1000 ] "set ::epdTimer($id) 1"
    vwait ::epdTimer($id)
    epd_pasteAnalysis $textwidget
    saveEpdWin $id
    if {! [winfo exists .analysisWin1]} {
      break
    }
  }
}

################################################################################
# epd_pasteAnalysis:
#    Pastes current chess engine analysis into this EPD file position.
################################################################################
proc epd_pasteAnalysis {textwidget} {
  global analysis
  if {! [winfo exists $textwidget]} { return }
  if {! [winfo exists .analysisWin1]} { return }
  $textwidget insert insert "acd $analysis(depth1)\n"
  $textwidget insert insert "acn $analysis(nodes1)\n"
  $textwidget insert insert "acs $analysis(time1)\n"
  set ce [expr {int($analysis(score1) * 100)} ]
  if {[sc_pos side] == "black"} { set ce [expr {0 - $ce} ] }
  $textwidget insert insert "ce $ce\n"
  if { $analysis(uci1) } {
      $textwidget insert insert "pv "
      set moves [::uci::formatPv $analysis(moves1) $analysis(fen1)]
      $textwidget insert insert [addMoveNumbers [::trans $moves]]
      $textwidget insert insert "\n"
  } else {
      $textwidget insert insert "pv $analysis(moves1)\n"
  }
}

set epd_stripField ""
################################################################################
#
################################################################################
proc epd_chooseStripField {id} {
  global epd_stripField
  if {! [winfo exists .epd$id]} { return }
  set w [toplevel .epdStrip]
  wm title $w "Scid: Strip EPD field"
  wm resizable $w false false
  label $w.label -text "Enter the name of the EPD field you want\n\
      removed from all positions in this file:"
  entry $w.e -width 10 -background white -textvariable epd_stripField
  pack $w.label $w.e -side top -pady 5 -padx 5
  addHorizontalRule $w
  set b [frame $w.buttons]
  pack $b -side bottom -pady 5
  button $b.ok -text "Strip EPD field" \
      -command "epd_stripEpdField $id \$epd_stripField"
  button $b.cancel -text "Cancel" -command "focus .epd$id; destroy $w"
  pack $b.ok $b.cancel -side left -padx 5
  bind $w <Return> "$b.ok invoke"
  bind $w <Escape> "$b.cancel invoke"
  focus .epdStrip.e
  grab .epdStrip
}
################################################################################
#
################################################################################
proc epd_stripEpdField {id field} {
  if {! [winfo exists .epdStrip]} { return }
  if {! [string compare $field ""]} { beep; return }
  set result [sc_epd strip $id $field]
  updateEpdWin $id
  tk_messageBox -type ok -icon info -title "Scid: EPD field stripped" \
      -message "Scid found and stripped an EPD field named \"$field\" from\
      $result positions."
  focus .epd$id
  destroy .epdStrip
}
################################################################################
#
################################################################################
### spellchk.tcl
### Part of Scid.
### Copyright (C) 2000-2003 Shane Hudson.

set spellcheckType Player

# Maximum nr of corrections to be scanned
# Set to zero to find them all
# Set to some positive number to limit
#
set spell_maxCorrections 0

set spellcheckSurnames 0
set spellcheckAmbiguous 1

# Remember what we are doing, being
# - "idle"       - nothing special
# - "scanning"   - finding corrections
# - "correcting" - making corrections
#
set spellstate idle

# readSpellCheckFile:
#    Presents a File Open dialog box for a Scid spellcheck file,
#    then tries to read the file. If the parameter "message" is true
#    (which is the default), a message box indicating the results
#    is displayed.
#
proc readSpellCheckFile {{message 1}} {
  global spellCheckFile
  set ftype { { "Scid Spellcheck files" {".ssp" ".ssp.gz"} } }
  set fullname [tk_getOpenFile -initialdir [pwd] -filetypes $ftype -title "Open Spellcheck file"]
  if {![string compare $fullname ""]} { return 0 }

  if {[catch {sc_name read $fullname} result]} {
      if {$message} {
        tk_messageBox -title "ERROR: Unable to read file" -type ok \
          -icon error -message "Scid could not correctly read the spellcheck file you selected:\n\n$result"
      }
    return 0
  }
  set spellCheckFile $fullname
  if {$message} {
    tk_messageBox -title "Spellcheck file loaded." -type ok -icon info \
      -message "Spellcheck file [file tail $fullname] loaded:\n[lindex $result 0] players, [lindex $result 1] events, [lindex $result 2] sites, [lindex $result 3] rounds.\n\nTo have this file automatically loaded every time you start Scid, select the \"Save Options\" from the Options menu before exiting."
  }
  return 1
}

# Set the environment when the correction scan starts
#
proc startScanning {} {
    global spellstate
    global spellcheckType
    
    # Remember that we are scanning
    #
    set spellstate scanning
    
    # Disable all buttons except the cancel button that we
    # transfer into a stop button
    #
    .spellcheckWin.buttons.ambig  configure -state disabled
    .spellcheckWin.buttons.ok     configure -state disabled
    .spellcheckWin.buttons.cancel configure -text "Stop"
    bind .spellcheckWin <Alt-s> ".spellcheckWin.buttons.cancel invoke; break"
    if {$spellcheckType == "Player"} {
        .spellcheckWin.buttons.surnames configure -state disabled
    }
}

# Set the environment when the correction scan stops
#
proc stopScanning {} {
    global spellstate
    global spellcheckType
    
    # Remember that we are not scanning
    #
    set spellstate idle
    
    # Enable all buttons and set the cancel button back
    #
    .spellcheckWin.buttons.ambig  configure -state enabled
    .spellcheckWin.buttons.ok     configure -state enabled
    .spellcheckWin.buttons.cancel configure -text "Cancel"
    bind .spellcheckWin <Alt-c> ".spellcheckWin.buttons.cancel invoke; break"
    if {$spellcheckType == "Player"} {
        .spellcheckWin.buttons.surnames configure -state enabled
    }
}


# Set the environment when correction starts
#
proc startCorrecting {} {
    global spellstate
    global spellcheckType
    
    # Remember that we are correcting
    #
    set spellstate correcting
    
    # Disable all buttons
    #
    .spellcheckWin.buttons.ambig  configure -state disabled
    .spellcheckWin.buttons.ok     configure -state disabled
    .spellcheckWin.buttons.cancel configure -state disabled

    if {$spellcheckType == "Player"} {
        .spellcheckWin.buttons.surnames configure -state disabled
    }
}


# Start the correction scan and dump the results into the
# text window. After this the user may edit the correction
# 'script' and actually make the corrections.
#
# While the scan is running, all buttons except a stop button
# are disabled.
#
proc updateSpellCheckWin {type} {
    global spellcheckType spell_maxCorrections spellcheckSurnames
    global spellcheckAmbiguous

    busyCursor .
    .spellcheckWin.text.text delete 1.0 end
    .spellcheckWin.text.text insert end "Scid is finding spelling corrections.\nPlease wait..."

    # Enable the progress bar
    #
    sc_progressBar .spellcheckWin.progress bar 451 21 time

    startScanning

    update idletasks
    if {[catch {sc_name spellcheck -max $spell_maxCorrections \
                                   -surnames $spellcheckSurnames \
                                   -ambiguous $spellcheckAmbiguous $type} result]} {
        stopScanning
        unbusyCursor .
        tk_messageBox -type ok -icon info -title "Scid: Spellcheck results" \
                      -parent $parent -message $result
        return
    }
    stopScanning

    .spellcheckWin.text.text delete 1.0 end
    .spellcheckWin.text.text insert end $result
    unbusyCursor .
}


# Create the spell checking window with its event handlers
# and start the initial correction scan
#
proc openSpellCheckWin {type {parent .}} {
    global spellcheckType spellcheckSurnames
    global spellcheckAmbiguous
    global spellstate

    set w .spellcheckWin

    if {[winfo exists $w]} {
        tk_messageBox -type ok -icon info -title "Scid: Spellcheck error" \
                      -parent $parent \
                      -message "The spellcheck window is already open; close it first."
        return
    }

    if {[lindex [sc_name read] 0] == 0} {
        # No spellcheck file loaded, so try to open one:
        if {![readSpellCheckFile]} {
            return
        }
    }
    set spellcheckType $type

    toplevel $w
    wm title $w "Scid: Spellcheck Results"
    wm minsize $w 50 10

    bind $w <F1> { helpWindow Maintenance }
    bind $w <Configure> "recordWinSize $w"

    # Create the button pad at the bottom of the window
    #
    set f [ttk::frame $w.buttons]
    pack $f -side bottom -ipady 1 -fill x
  
    # Draw a canvas ("progress") to hold the progress bar
    # and put it above the buttons at the bottom of the window
    #
    canvas $w.progress -width 450 -height 20 -bg white -relief solid -border 1
    $w.progress create rectangle 0 0 0 0 -fill blue -outline blue -tags bar
    $w.progress create text 445 10 -anchor e -font font_Regular -tags time \
                                   -fill black -text "0:00 / 0:00"
    pack $w.progress -side bottom

    # The ambiguous check mark
    # Hitting it starts a new correction scan
    ttk::checkbutton $f.ambig -variable spellcheckAmbiguous \
                              -text "Ambiguous" -command "updateSpellCheckWin $type"
    pack $f.ambig -side left -padx 2 -ipady 2 -ipadx 3

    # When correcting player names, we add a surnames option
    #
    if {$type == "Player"} {
        # The surnames check mark
        # Hitting it starts a new correction scan
        #
        ttk::checkbutton $f.surnames -variable spellcheckSurnames \
                                     -text "Surnames" -command "updateSpellCheckWin Player"
        pack $f.surnames -side left -padx 2 -ipady 2 -ipadx 3
    }

    # The button to start the correction making...
    #
    ttk::button $f.ok -text "Make Corrections" -underline 0 -command {
        busyCursor .
        set spelltext ""
        catch {set spelltext [.spellcheckWin.text.text get 1.0 end-1c]}
        .spellcheckWin.text.text delete 1.0 end
        .spellcheckWin.text.text insert end \
            "Scid is making the spelling corrections.\nPlease wait..."

        # Enable the progress bar
        #
        sc_progressBar .spellcheckWin.progress bar 451 21 time

        update idletasks
        set spell_result ""
        startCorrecting
        set result [catch {sc_name correct $spellcheckType $spelltext} spell_result]
        set messageIcon info
        if {$result} { set messageIcon error }
        tk_messageBox -type ok -parent .spellcheckWin -icon $messageIcon \
            -title "Scid: Spellcheck results" -message $spell_result
        unbusyCursor .
        focus .
        destroy .spellcheckWin
        sc_game tags reload
        updateBoard -pgn
        ::windows::gamelist::Refresh
    }
    bind $w <Alt-m> "$f.ok invoke; break"

    # The cancel button operates in an either/or context
    # While some process is running, it simply stops it
    # In other cases, spell checking is left
    #
    ttk::button $f.cancel -text "Cancel" -underline 0 -command {
        if {$spellstate == "scanning" || $spellstate == "correcting"} {
            sc_progressBar
        } else {
            focus .
            destroy .spellcheckWin
        }
    }
    bind $w <Alt-c> "$f.cancel invoke; break"
    pack $f.cancel $f.ok -side right -padx 5

    # Prepare the text pad
    #
    set f [ttk::frame $w.text]
    pack $w.text -expand yes -fill both
    ttk::scrollbar $f.ybar -command "$f.text yview"
    ttk::scrollbar $f.xbar -orient horizontal -command "$f.text xview"
    text $f.text -yscrollcommand "$f.ybar set" -xscrollcommand "$f.xbar set" \
                 -setgrid 1 -width $::winWidth($w) -height $::winHeight($w) \
                 -background white -wrap none
    $f.text configure -tabs \
        [font measure font_Regular  "xxxxxxxxxxxxxxxxxxxxxxxxx"]

    grid $f.text -row 0 -column 0 -sticky news
    grid $f.ybar -row 0 -column 1 -sticky news
    grid $f.xbar -row 1 -column 0 -sticky news

    grid rowconfig $w.text 0 -weight 1 -minsize 0
    grid columnconfig $w.text 0 -weight 1 -minsize 0
  
    focus $f.text

    # Start the initial search for spelling corrections
    #
    updateSpellCheckWin $type
}


# maint.tcl:   Maintenance-related functions
# Part of Scid.
# Copyright (C) 2000-2004 Shane Hudson.

namespace eval ::maint {}

### TODO: Move procedures and variables into the maint namespace.
### TODO: Make sub-namespaces (sort, compact, cleaner, etc)

################################################################################
# Equivalent to running scidt -N
################################################################################
proc ::maint::fixCorruptedBase {} {
  set ftype {
    { "Scid databases" {".si4"} }
  }
  set fName [tk_getOpenFile -initialdir $::initialDir(base) -filetypes $ftype -title "Open a Scid file"]
  if {$fName == ""} { return }
  set fName [file rootname $fName]
  
  if {[sc_base slot $fName] != 0} {
    tk_messageBox -type ok -icon info -title "Scid" -message "$fName is already opened.\nClose it first"
    return
  }
  
  progressWindow "Scid" [concat $::tr(CompactNames) "..."]
  busyCursor .
  set err [catch {sc_base fixCorrupted $fName} result]
  unbusyCursor .
  closeProgressWindow
  if {$err} {
    tk_messageBox -type ok -icon warning -title "Scid: Error compacting file" -message $result
  } else {
    tk_messageBox -type ok -icon info -title "Scid" -message "Base $fName was repaired"
  }
  
}

################################################################################
# ::maint::SetGameFlags
#
#   Updates a flag for the current game, all filtered games, or all games.
#   <type> should be "current", "filter" or "all".
#   <flag> should be "delete", "user", "endgame", etc.
#   <value> should be 0 or 1
#
proc ::maint::SetGameFlags {flag type value} {
  if {$flag == "mark"} { set flag $::maintFlag }
  switch -- $type {
    "current" {
      busyCursor .
      catch {sc_game flag $flag [sc_game number] $value}
      unbusyCursor .
    }
    "filter" -
    "all" {
      busyCursor .
      catch {sc_game flag $flag $type $value}
      unbusyCursor .
    }
    default { return }
  }
  updateBoard
  ::windows::gamelist::Refresh
  ::maint::Refresh
  ::windows::stats::Refresh
}

set maintFlag W
set maintFlaglist {W B M E N P T Q K ! ? U 1 2 3 4 5 6}
array set maintFlags {
  W WhiteOpFlag
  B BlackOpFlag
  M MiddlegameFlag
  E EndgameFlag
  N NoveltyFlag
  P PawnFlag
  T TacticsFlag
  Q QsideFlag
  K KsideFlag
  ! BrilliancyFlag
  ? BlunderFlag
  U UserFlag
  1 CustomFlag1
  2 CustomFlag2
  3 CustomFlag3
  4 CustomFlag4
  5 CustomFlag5
  6 CustomFlag6
}


set maintWin 0

# ::maint::OpenClose
#
#   Creates the database maintenance window.
#
proc ::maint::OpenClose {} {
  global maintWin maintFlag maintFlags maintFlaglist
  set w .maintWin
  if {[winfo exists $w]} {
    destroy $w
    set maintWin 0
    return
  }
  set maintWin 1
  set font font_Small
  set bold font_SmallBold
  toplevel $w
  wm title $w "Scid: [tr FileMaint]"
  wm resizable $w 0 0
  bind $w <F1> {helpWindow Maintenance}
  bind $w <Escape> "destroy $w; break"
  bind $w <Destroy> {set maintWin 0}
  foreach f {title delete mark spell db buttons} {
    ttk::frame $w.$f
  }
  foreach f {title delete mark spell db} {
    pack $w.$f -side top -fill x
    addHorizontalRule $w
  }
  pack $w.buttons -side top -fill x
  
  ttk::label $w.title.name -textvar ::tr(DatabaseName) -font font_Bold
  ttk::label $w.title.games -textvar ::tr(NumOfGames) -font font_SmallBold
  ttk::label $w.title.icon -textvar ::tr(TypeIcon)
  ttk::label $w.title.delete -textvar ::tr(NumDeletedGames) -font $font
  ttk::label $w.title.mark -font $font
  ttk::label $w.title.filter -textvar ::tr(NumFilterGames) -font $font
  ttk::label $w.title.dates -textvar ::tr(YearRange) -font $font
  ttk::label $w.title.ratings -textvar ::tr(RatingRange) -font $font
  ttk::button $w.title.vicon -command {changeBaseType [sc_base current]}
  
  ttk::frame $w.title.desc
  ttk::label $w.title.desc.lab -text $::tr(Description:) -font font_SmallBold
  ttk::label $w.title.desc.text -width 1 -font $font -relief sunken -anchor w
  ttk::button $w.title.desc.edit -text "[tr Edit]..." -style Small.TButton -command ::maint::ChangeBaseDescription
  pack $w.title.desc.lab -side left
  pack $w.title.desc.edit -side right -padx 2
  pack $w.title.desc.text -side left -fill x -expand yes
  
  # Custom flags
  ttk::frame $w.title.cust
  ttk::label $w.title.cust.lab -text "[::tr CustomFlags]:" -font font_SmallBold
  for {set i 1} { $i < 7} { incr i} {
    set desc [sc_game flag $i description]
    ttk::label $w.title.cust.text$i -width 8 -font $font -relief sunken -anchor w -text $desc
  }
  
  ttk::button $w.title.cust.edit -text "[tr Edit]..." -style Small.TButton -command ::maint::ChangeCustomDescription
  pack $w.title.cust.lab -side left
  pack $w.title.cust.edit -side right -padx 2
  for {set i 1} { $i < 7} { incr i} {
    pack $w.title.cust.text$i -side left -fill x -expand yes
  }
  foreach name {name games delete mark filter dates ratings} {
    ttk::label $w.title.v$name -text "0" -font $font
  }
  
  set row 0
  set col 0
  foreach name {name icon games filter delete mark dates ratings} {
    grid $w.title.$name -row $row -column $col -sticky w
    incr col
    grid $w.title.v$name -row $row -column $col -sticky e
    incr col
    if {$col == 2} { incr col }
    if {$col >= 5} { set col 0; incr row }
  }
  grid [ttk::label $w.title.space -text "   "] -row 0 -column 2
  $w.title.vname configure -font font_Bold
  $w.title.vgames configure -font font_SmallBold
  grid $w.title.desc -row $row -column 0 -columnspan 5 -sticky we
  incr row
  grid $w.title.cust -row $row -column 0 -columnspan 5 -sticky we
  
  foreach grid {title delete mark spell db} cols {5 3 3 4 3} {
    for {set i 0} {$i < $cols} {incr i} {
      grid columnconfigure $w.$grid $i -weight 1
    }
  }
  
  ttk::label $w.delete.title -textvar ::tr(DeleteFlag) -font $bold
  ttk::menubutton $w.mark.title -menu $w.mark.title.m ;# -indicatoron 1 -relief raised -font $bold
  menu $w.mark.title.m -font $font
  
  set i 0
  foreach flag $maintFlaglist  {
    if {$i < 12} {
      $w.mark.title.m add command -label "$::tr($maintFlags($flag)) ($flag)" -command "set maintFlag $flag; ::maint::Refresh"
    } else  {
      set tmp [sc_game flag $flag description]
      if {$tmp == "" } { set tmp $maintFlags($flag) }
      $w.mark.title.m add command -label "$tmp ($flag)" -command "set maintFlag $flag; ::maint::Refresh"
    }
    incr i
  }
  
  foreach flag {delete mark} on {Delete Mark} off {Undelete Unmark} {
    foreach b {Current Filter All} {
      ttk::button $w.$flag.on$b -textvar "::tr($on$b)" -style Small.TButton -command "::maint::SetGameFlags $flag [string tolower $b] 1"
      ttk::button $w.$flag.off$b -textvar "::tr($off$b)" -style Small.TButton -command "::maint::SetGameFlags $flag [string tolower $b] 0"
    }
    
    grid $w.$flag.title -columnspan 3 -row 0 -column 0 -sticky n
    grid $w.$flag.onCurrent -row 1 -column 0 -sticky we
    grid $w.$flag.offCurrent -row 2 -column 0 -sticky we
    grid $w.$flag.onFilter -row 1 -column 1 -sticky we
    grid $w.$flag.offFilter -row 2 -column 1 -sticky we
    grid $w.$flag.onAll -row 1 -column 2 -sticky we
    grid $w.$flag.offAll -row 2 -column 2 -sticky we
  }
  
  ttk::label $w.spell.title -textvar ::tr(Spellchecking) -font $bold
  grid $w.spell.title -columnspan 4 -row 0 -column 0 -sticky n
  ttk::button $w.spell.player -textvar ::tr(Players...) -style Small.TButton \
      -command "openSpellCheckWin Player $w"
  ttk::button $w.spell.event -textvar ::tr(Events...) -style Small.TButton \
      -command "openSpellCheckWin Event $w"
  ttk::button $w.spell.site -textvar ::tr(Sites...) -style Small.TButton \
      -command "openSpellCheckWin Site $w"
  ttk::button $w.spell.round -textvar ::tr(Rounds...) -style Small.TButton \
      -command "openSpellCheckWin Round $w"
  grid $w.spell.player -row 1 -column 0 -sticky we
  grid $w.spell.event -row 1 -column 1 -sticky we
  grid $w.spell.site -row 1 -column 2 -sticky we
  grid $w.spell.round -row 1 -column 3 -sticky we
  
  bind $w <Alt-p> "$w.spell.player invoke"
  bind $w <Alt-e> "$w.spell.event invoke"
  bind $w <Alt-s> "$w.spell.site invoke"
  bind $w <Alt-r> "$w.spell.round invoke"
  
  ttk::label $w.db.title -textvar ::tr(DatabaseOps) -font $bold
  grid $w.db.title -columnspan 3 -row 0 -column 0 -sticky n
  
  ttk::button $w.db.check -style Small.TButton -textvar ::tr(CheckGames...) -command checkAllGames
  ttk::button $w.db.eco -style Small.TButton -textvar ::tr(ReclassifyGames...) -command classifyAllGames
  ttk::button $w.db.compact -style Small.TButton -textvar ::tr(CompactDatabase...) -command makeCompactWin
  ttk::button $w.db.sort -style Small.TButton -textvar ::tr(SortDatabase...) -command makeSortWin
  ttk::button $w.db.elo -style Small.TButton -textvar ::tr(AddEloRatings...) -command allocateRatings
  ttk::button $w.db.dups -style Small.TButton -textvar ::tr(DeleteTwins...) -command "markTwins $w"
  ttk::button $w.db.cleaner -style Small.TButton -textvar ::tr(Cleaner...) -command cleanerWin
  ttk::button $w.db.autoload -style Small.TButton -textvar ::tr(AutoloadGame...) -command ::maint::SetAutoloadGame
  ttk::button $w.db.strip -style Small.TButton -textvar ::tr(StripTags...) -command stripTags
  
  foreach i {eco compact sort elo dups cleaner autoload strip} {
    $w.db.$i configure -style Small.TButton
  }
  bind $w <Alt-d> "$w.db.dups invoke"
  
  grid $w.db.eco -row 1 -column 0 -sticky we
  grid $w.db.compact -row 1 -column 1 -sticky we
  grid $w.db.sort -row 1 -column 2 -sticky we
  grid $w.db.elo -row 2 -column 0 -sticky we
  grid $w.db.dups -row 2 -column 1 -sticky we
  grid $w.db.cleaner -row 2 -column 2 -sticky we
  grid $w.db.autoload -row 3 -column 0 -sticky we
  grid $w.db.strip -row 3 -column 1 -sticky we
  grid $w.db.check -row 3 -column 2 -sticky we
  
  dialogbutton $w.buttons.help -textvar ::tr(Help) -command {helpWindow Maintenance}
  dialogbutton $w.buttons.close -textvar ::tr(Close) -command "destroy $w"
  packbuttons right $w.buttons.close $w.buttons.help
  
  bind $w <Alt-h> "$w.buttons.help invoke"
  bind $w <Alt-c> "destroy $w; break"
  standardShortcuts $w
  ::maint::Refresh
}

proc ::maint::ChangeBaseDescription {} {
  set w .bdesc
  if {[winfo exists $w]} { return }
  toplevel $w
  wm title $w "Scid: $::tr(Description): [file tail [sc_base filename]]"
  set font font_Small
  ttk::entry $w.entry -width 50 ;# -relief sunken -background white
  $w.entry insert end [sc_base description]
  pack $w.entry -side top -pady 4
  ttk::frame $w.b
  ttk::button $w.b.ok -text OK -command {
    catch {sc_base description [.bdesc.entry get]}
    grab release .bdesc
    destroy .bdesc
    ::maint::Refresh
  }
  ttk::button $w.b.cancel -text $::tr(Cancel) -command "grab release $w; destroy $w"
  pack $w.b -side bottom -fill x
  pack $w.b.cancel $w.b.ok -side right -padx 2 -pady 2
  wm resizable $w 0 0
  catch {grab $w}
}
################################################################################
#  Change custom flags description
################################################################################
proc ::maint::ChangeCustomDescription {} {
  set w .bcustom
  if {[winfo exists $w]} { return }
  toplevel $w
  wm title $w "Scid: $::tr(CustomFlags): [file tail [sc_base filename]]"
  ttk::frame $w.a
  ttk::label $w.a.lb -text [::tr CustomFlags]
  grid $w.a.lb -column 0 -row 0 -columnspan 12
  set col 0
  for {set i 1} {$i <7} {incr i} {
    ttk::label $w.a.lab$i -text "$i:"
    ttk::entry $w.a.e$i -width 8
    set desc [sc_game flag $i description]
    $w.a.e$i insert end $desc
    grid $w.a.lab$i -column $col -row 1
    incr col
    grid $w.a.e$i -column $col -row 1
    incr col
  }
  ttk::frame $w.b
  ttk::button $w.b.ok -text OK -command {
    for {set i 1} {$i <7} {incr i} {
      set desc [.bcustom.a.e$i get]
      sc_game flag $i setdescription $desc
    }
    grab release .bcustom
    destroy .bcustom
    
    # update the drop down menu of maint window and the menu of GameInfo window
    for {set idx 12} {$idx < 18} {incr idx} {
      set flag [ lindex $::maintFlaglist $idx]
      set tmp [sc_game flag $flag description]
      if {$tmp == "" } { set tmp $::maintFlags($flag) }
      .maintWin.mark.title.m entryconfigure $idx -label "$tmp ($flag)"
    }
    
    updateGameInfoMenu
    
    # update the custom flags labels
    for {set i 1} { $i < 7} { incr i} {
      set desc [sc_game flag $i description]
      .maintWin.title.cust.text$i configure -text $desc
    }
    # ::maint::Refresh
  }
  ttk::button $w.b.cancel -text $::tr(Cancel) -command "grab release $w; destroy $w"
  pack $w.a -side top -fill x
  pack $w.b -side bottom -fill x
  pack $w.b.cancel $w.b.ok -side right -padx 2 -pady 2
  wm resizable $w 0 0
  catch {grab $w}
}

proc ::maint::Refresh {} {
  global maintFlag maintFlags
  updateSortWin
  updateClassifyWin
  
  set w .maintWin
  if {![winfo exists $w]} { return }
  set ng [sc_base numGames]
  set deleted [sc_base stats flag:D]
  set marked [sc_base stats "flag:$maintFlag"]
  set flags [sc_base stats flags]
  set dates [sc_base stats date]
  set ratings [sc_base stats ratings]
  $w.title.vgames configure -text [::utils::thousands $ng]
  $w.title.vicon configure -image dbt[sc_base type [sc_base current]]
  $w.title.vname configure -text [file tail [sc_base filename]]
  $w.title.vdelete configure -text [::utils::percentFormat $deleted $ng]
  $w.title.vmark configure -text [::utils::percentFormat $marked $ng]
  $w.title.vfilter configure -text [::utils::percentFormat [sc_filter count] $ng]
  $w.title.vdates configure \
      -text "[lindex $dates 0]-[lindex $dates 1] ([lindex $dates 2])"
  $w.title.vratings configure \
      -text "[lindex $ratings 0]-[lindex $ratings 1] ([lindex $ratings 2])"
  
  if { [lsearch -exact { 1 2 3 4 5 6 } $maintFlag ] != -1 } {
    set tmp [sc_game flag $maintFlag description]
    if {$tmp == "" } { set tmp $maintFlags($maintFlag) }
  } else  {
    set tmp $::tr($maintFlags($maintFlag))
  }
  
  set flagname "$::tr(Flag): $tmp ($maintFlag)"
  
  $w.mark.title configure -text $flagname
  $w.title.mark configure -text $flagname
  $w.title.desc.text configure -text [sc_base description]
  
  # Disable buttons if current base is closed or read-only:
  set state disabled
  if {[sc_base inUse]  &&  ![sc_base isReadOnly]} {
    set state normal
  }
  foreach spell {player event site round} {
    $w.spell.$spell configure -state $state
  }
  foreach button {onCurrent offCurrent onAll offAll onFilter offFilter} {
    $w.delete.$button configure -state $state
    $w.mark.$button configure -state $state
  }
  $w.db.dups configure -state $state
  $w.title.vicon configure -state $state
  $w.title.desc.edit configure -state $state
  $w.db.elo configure -state $state
  $w.db.autoload configure -state $state
  
  set state disabled
  if {[sc_base inUse]} { set state normal }
  $w.db.eco configure -state $state
  $w.db.sort configure -state $state
  $w.db.strip configure -state $state
  
  set state disabled
  if {[baseIsCompactable]} {
    set state normal
  }
  $w.db.compact configure -state $state
  $w.db.cleaner configure -state $state
}


set autoloadGame 0
trace variable autoloadGame w {::utils::validate::Integer 9999999 0}

# ::maint::SetAutoloadGame
#
#   Creates a dialog for setting the autoload game number of the
#   current database.
#
proc ::maint::SetAutoloadGame {} {
  global autoloadGame
  set w .autoload
  if {[winfo exists $w]} { return }
  toplevel $w
  wm title $w "Scid"
  set autoloadGame [sc_base autoload]
  
  pack [ttk::frame $w.f] -side top -fill x -expand 1
  ttk::label $w.f.label -text $::tr(AutoloadGame:)
  ttk::entry $w.f.entry -textvar autoloadGame -justify right -width 10 ;# -foreground black -background white
  pack $w.f.label $w.f.entry -side left
  
  pack [ttk::frame $w.set] -side top -fill x
  ttk::button $w.set.none -text $::tr(None) -command {set autoloadGame 0}
  ttk::button $w.set.first -text $::tr(First) -command {set autoloadGame 1}
  ttk::button $w.set.current -text $::tr(Current) \
      -command {set autoloadGame [sc_game number]}
  ttk::button $w.set.last -text $::tr(Last) -command {set autoloadGame 9999999}
  foreach i {none first current last} {$w.set.$i configure -style Small.TButton}
  pack $w.set.none $w.set.first $w.set.current $w.set.last \
      -side left -padx 1 -pady 2
  
  addHorizontalRule $w
  
  pack [ttk::frame $w.b] -side top -fill x
  ttk::button $w.b.ok -text OK -command \
      "sc_base autoload \$autoloadGame; catch {grab release $w}; destroy $w"
  ttk::button $w.b.cancel -text $::tr(Cancel) -command \
      "catch {grab release $w}; destroy $w"
  pack $w.b.cancel $w.b.ok -side right -padx 2
  
  bind $w.f.entry <Return> "$w.b.ok invoke"
  bind $w.f.entry <Escape> "$w.b.cancel invoke"
  wm resizable $w 0 0
  ::utils::win::Centre $w
  focus $w.f.entry
  grab $w
}

# markTwins:
#   Finds twin games and marks them for deletion.
#   Takes parent window as parameter since it can be the main window,
#   or the maintenance window.
#
proc markTwins {{parent .}} {
  global twinSettings
  if {! [sc_base inUse]} { return }
  if {[sc_base numGames] == 0} {
    tk_messageBox -type ok -icon info -title [concat "Scid: " $::tr(noGames)] \
        -message $::tr(TwinCheckNoDelete)
    return
  }
  
  set w .twinSettings
  if {! [winfo exists $w]} {
    toplevel $w
    wm resizable $w 0 0
    wm title $w "Scid: $::tr(DeleteTwins)"
    pack [ttk::frame $w.f]
    set small font_Small
    
    ttk::label $w.f.note -text $::tr(TwinsNote) -justify left -wraplength 500 -font $small
    pack $w.f.note -side top -anchor w -ipady 0 -pady 0
    addHorizontalRule $w.f
    ttk::label $w.f.tc -text $::tr(TwinsCriteria) -font font_Bold
    pack $w.f.tc -side top
    
    ttk::frame $w.f.g
    pack $w.f.g -side top
    set row 0
    set col 0
    foreach name {Colors Event Site Round Year Month Day Result ECO Moves} {
      set n [string tolower $name]
      ttk::checkbutton $w.f.g.b$n -text $::tr(Twins$name) \
          -variable twinSettings($n) -onvalue Yes -offvalue No
      grid $w.f.g.b$n -row $row -column $col -sticky w
      incr col
      if {$col >= 4} {
        incr row; set col 0
      } else {
        grid [ttk::label $w.f.g.space$n -text "   "] -row $row -column $col
        incr col
      }
    }
    ttk::frame $w.f.players
    ttk::label $w.f.players.label -text $::tr(TwinsPlayers) -font $small
    ttk::radiobutton $w.f.players.yes -variable twinSettings(players) -value Yes \
        -text $::tr(TwinsPlayersExact) -style Small.TRadiobutton
    ttk::radiobutton $w.f.players.no -variable twinSettings(players) -value No \
        -text $::tr(TwinsPlayersPrefix) -style Small.TRadiobutton
    
    pack $w.f.players -side top
    pack $w.f.players.label $w.f.players.yes $w.f.players.no -side left
  }
  
  
  addHorizontalRule $w.f
  ttk::label $w.f.twhich -text $::tr(TwinsWhich:) -font font_Bold
  pack $w.f.twhich -side top
  pack [ttk::frame $w.f.g2] -side top -fill x
  ttk::radiobutton $w.f.g2.exall -text $::tr(SelectAllGames) -style Small.TRadiobutton \
      -variable twinSettings(usefilter) -value No
  ttk::label $w.f.g2.space -text "    " -font $small
  ttk::radiobutton $w.f.g2.exfil -text $::tr(SelectFilterGames) -style Small.TRadiobutton \
      -variable twinSettings(usefilter) -value Yes
  grid $w.f.g2.exall -row 0 -column 0 -sticky e
  grid $w.f.g2.space -row 0 -column 1
  grid $w.f.g2.exfil -row 0 -column 2 -sticky w
  grid columnconfigure $w.f.g2 0 -weight 1
  grid columnconfigure $w.f.g2 2 -weight 1
  
  addHorizontalRule $w.f
  ttk::label $w.f.twhen -text $::tr(TwinsWhen:) -font font_Bold
  pack $w.f.twhen -side top
  pack [ttk::frame $w.f.g3] -side top
  set row 0
  set col 0
  foreach n {skipshort undelete setfilter comments variations} \
      name {SkipShort Undelete SetFilter Comments Vars} {
        ttk::checkbutton $w.f.g3.b$n -text $::tr(Twins$name) -variable twinSettings($n) -onvalue Yes -offvalue No
        grid $w.f.g3.b$n -row $row -column $col -sticky w
        incr col
        if {$col >= 2} {
          incr row; set col 0
        } else {
          grid [ttk::label $w.f.g3.space$n -text "   "] -row $row -column $col
          incr col
        }
      }
  incr row
  #$w.f.g3.lskipshort configure -text $::tr(TwinsSkipShort)
  #$w.f.g3.lundelete configure -text $::tr(TwinsUndelete)
  #$w.f.g3.lsetfilter configure -text $::tr(TwinsSetFilter)
  #$w.f.g3.lcomments configure -text $::tr(TwinsComments)
  #$w.f.g3.lvariations configure -text $::tr(TwinsVars)
  ttk::label $w.f.g3.ldelete -text $::tr(TwinsDeleteWhich) -font font_Bold
  grid $w.f.g3.ldelete -row $row -column 0 -sticky we -columnspan 3
  incr row
  ttk::frame $w.f.g3.vdelete
  foreach v {Shorter Older Newer} {
    ttk::radiobutton $w.f.g3.vdelete.v$v -text $::tr(TwinsDelete$v) \
        -variable twinSettings(delete) -value $v -style Small.TRadiobutton
    pack $w.f.g3.vdelete.v$v -side left -padx 5
  }
  grid $w.f.g3.vdelete -row $row -column 0 -columnspan 3
  
  #foreach g {g2 g3} {
  #  grid columnconfigure $w.f.$g 0 -weight 1
  #}
  
  addHorizontalRule $w.f
  ttk::frame $w.f.b
  dialogbutton $w.f.b.defaults -textvar ::tr(Defaults) -command {
    array set twinSettings [array get twinSettingsDefaults]
  }
  dialogbuttonsmall $w.f.b.help [ list -text $::tr(Help) -command "helpWindow Maintenance Twins; focus $w" ]
  dialogbuttonsmall $w.f.b.go [ list -text $::tr(TwinsDelete) -command {
    if {[twinCriteriaOK .twinSettings]} {
      grab release .twinSettings
      sc_progressBar .twinSettings.progress bar 301 21 time
      set result [doMarkDups .twinSettings]
      focus .
      destroy .twinSettings
      if {$result > 0} {
        set gn [sc_filter first]
        ::game::Load $gn
        updateTwinChecker
      }
    }
  } ]
  
  dialogbuttonsmall $w.f.b.cancel [ list -text $::tr(Cancel) -command "grab release $w; focus .; destroy $w" ]
  
  canvas $w.f.progress -width 300 -height 20 -bg white -relief solid -border 1
  $w.f.progress create rectangle 0 0 0 0 -fill blue -outline blue -tags bar
  $w.f.progress create text 295 10 -anchor e -font font_Regular -tags time \
      -fill black -text "0:00 / 0:00"
  
  pack $w.f.progress -side bottom -padx 2 -pady 2
  pack $w.f.b -side bottom -fill x
  packbuttons right  $w.f.b.cancel $w.f.b.go
  packbuttons left $w.f.b.defaults $w.f.b.help
  bind $w <F1> "$w.f.b.help invoke"
  bind $w <Escape> "$w.f.b.cancel invoke"
  bind $w <Return> "$w.f.b.go invoke"
  grab $w
  update idletasks
  $w.f.note configure -wraplength [winfo width $w]
  return
}

# twinCriteriaOK:
#   Check that the user specified at least three of the the same site,
#   same round, and same year settings, since otherwise it is quite
#   likely that actual games with simlar moves will be marked as twins:
#
proc twinCriteriaOK {{parent .}} {
  global twinSettings
  
  set msg $::tr(TwinCriteria1)
  
  # First, check that if same moves is off, then the same colors, event,
  # site, round, year and month flags should all be set:
  if {$twinSettings(moves) == "No"} {
    if {$twinSettings(colors) == "No"  ||  $twinSettings(event) == "No"  || \
          $twinSettings(site) == "No"  ||  $twinSettings(year) == "No"  || \
          $twinSettings(month) == "No"} {
      append msg $::tr(TwinCriteria2)
      set result [tk_messageBox -type yesno -parent $parent -icon warning \
          -title $::tr(TwinCriteriaConfirm) \
          -message $msg]
      if {$result == "no"} { return 0 } else { return 1 }
    }
  }
  
  # Now check that at least two of site, round, and year are set:
  set count 0
  if {$twinSettings(site) == "Yes"} { incr count }
  if {$twinSettings(round) == "Yes"} { incr count }
  if {$twinSettings(year) == "Yes"} { incr count }
  if {$count < 2} {
    append msg $::tr(TwinCriteria3)
    set result [tk_messageBox -type yesno -parent $parent -icon warning \
        -title $::tr(TwinCriteriaConfirm) \
        -message $msg]
    if {$result == "no"} { return 0 } else { return 1 }
  }
  return 1
}


proc doMarkDups {{parent .}} {
  global twinSettings
  
  busyCursor .
  if {$twinSettings(undelete) == "Yes"} {
    catch {sc_game flag delete all 0}
  }
  
  if {[catch {sc_base duplicates -colors $twinSettings(colors) \
          -event $twinSettings(event) -site $twinSettings(site) \
          -round $twinSettings(round) -year $twinSettings(year) \
          -month $twinSettings(month) -day $twinSettings(day) \
          -result $twinSettings(result) -eco $twinSettings(eco) \
          -moves $twinSettings(moves) -players $twinSettings(players) \
          -skipshort $twinSettings(skipshort) \
          -setfilter $twinSettings(setfilter) \
          -usefilter $twinSettings(usefilter) \
          -comments $twinSettings(comments) \
          -variations $twinSettings(variations) \
          -delete $twinSettings(delete)} result]} {
    unbusyCursor .
    tk_messageBox -type ok -parent $parent -icon info \
        -title "Scid" -message $result
    set result 0
  } else {
    unbusyCursor .
    set message [subst $::tr(TwinCheckFound1)]
    if {$result > 0} {append message $::tr(TwinCheckFound2)}
    append message "."
    tk_messageBox -type ok -parent $parent -icon info -title [concat "Scid: " $::tr(Result)] \
        -message $message
  }
  ::maint::Refresh
  return $result
}


set checkOption(AllGames) all

# CheckAllGames
#  Decodes all games and tries to find errors
proc checkAllGames {} {
  set w .checkGames
  if {[winfo exists $w]} {
    raiseWin $w
    return
  }
  toplevel $w
  wm title $w "Scid: [tr FileMaintClass]"
  
  pack [ttk::frame $w.f] -expand 1
  
  ttk::label $w.f.label -font font_Bold -textvar ::tr(CheckGamesWhich)
  ttk::frame $w.f.g
  ttk::radiobutton $w.f.g.all -textvar ::tr(CheckAll) -variable checkOption(AllGames) -value all
  ttk::radiobutton $w.f.g.filter -textvar ::tr(CheckSelectFilterGames) -variable checkOption(AllGames) -value filter
  set row 0
  foreach f {all filter} {
    grid $w.f.g.$f -row $row -column 0 -sticky w
    incr row
  }
  
  ttk::frame $w.f.b
  ttk::button $w.f.b.go -textvar ::tr(CheckGames) -command {
    busyCursor .
    .checkGames.f.b.cancel configure -command "sc_progressBar"
    .checkGames.f.b.cancel configure -textvar ::tr(Stop)
    sc_progressBar .checkGames.f.progress bar 301 21 time
    grab .checkGames.f.b.cancel
    if {[catch  {sc_base check $checkOption(AllGames)} result]} {
      grab release .checkGames.f.b.cancel
      unbusyCursor .
      tk_messageBox -parent .checkGames -type ok -icon info -title "Scid" -message $result
    } else {
      grab release .checkGames.f.b.cancel
      unbusyCursor .
    }
    .checkGames.f.b.cancel configure -command {focus .; destroy .checkGames}
    .checkGames.f.b.cancel configure -textvar ::tr(Close)
    ::windows::gamelist::Refresh
  }
  ttk::button $w.f.b.cancel -textvar ::tr(Close) -command "focus .; destroy $w"
  canvas $w.f.progress -width 300 -height 20 -bg white -relief solid -border 1
  $w.f.progress create rectangle 0 0 0 0 -fill blue -outline blue -tags bar
  $w.f.progress create text 295 10 -anchor e -font font_Regular -tags time \
      -fill black -text "0:00 / 0:00"
  
  pack $w.f.label $w.f.g -side top -pady 5
  addHorizontalRule $w.f
  pack $w.f.b -side top -pady 5 -fill x
  pack $w.f.progress -side bottom -padx 2 -pady 2
  pack $w.f.b.cancel $w.f.b.go -side right -pady 10 -padx 10
  wm resizable $w 0 0
  bind $w <F1> {helpWindow ECO}
  bind $w <Escape> "$w.b.cancel invoke"
  updateClassifyWin
}


set classifyOption(AllGames) all
set classifyOption(ExtendedCodes) 1

# ClassifyAllGames:
#   Reclassifies all games (recomputes the ECO code of each game).
#   User can choose to reclassify all games, or only those games that
#   currently have no ECO code assigned.
#
proc classifyAllGames {} {
  makeClassifyWin
}

proc makeClassifyWin {} {
  global classifyOption
  set w .classify
  if {[winfo exists $w]} {
    raiseWin $w
    return
  }
  toplevel $w
  wm title $w "Scid: [tr FileMaintClass]"
  
  pack [ttk::frame $w.f] -expand 1
  
  ttk::label $w.f.label -font font_Bold -textvar ::tr(ClassifyWhich)
  ttk::frame $w.f.g
  ttk::radiobutton $w.f.g.all -textvar ::tr(ClassifyAll) -variable classifyOption(AllGames) -value all
  ttk::radiobutton $w.f.g.filter -textvar ::tr(SelectFilterGames) -variable classifyOption(AllGames) -value filter
  set year [::utils::date::today year]
  set month [::utils::date::today month]
  set day [::utils::date::today day]
  ttk::radiobutton $w.f.g.year -textvar ::tr(ClassifyYear) -variable classifyOption(AllGames) \
      -value "date:[expr $year - 1].$month.$day"
  if {$month == "01"} {
    incr year -1
    set month 12
  } else {
    scan $month "%02u" month
    incr month -1
    set month [format "%02u" $month]
  }
  ttk::radiobutton $w.f.g.month -textvar ::tr(ClassifyMonth) -variable classifyOption(AllGames) \
      -value "date:$year.$month.$day"
  ttk::radiobutton $w.f.g.new -textvar ::tr(ClassifyNew) -variable classifyOption(AllGames) -value nocode
  set row 0
  foreach f {all filter year month new} {
    grid $w.f.g.$f -row $row -column 0 -sticky w
    incr row
  }
  ttk::label $w.f.codes -font font_Bold -textvar ::tr(ClassifyCodes:)
  ttk::radiobutton $w.f.extended -textvar ::tr(ClassifyBasic) -variable classifyOption(ExtendedCodes) -value 0
  ttk::radiobutton $w.f.basic -textvar ::tr(ClassifyExtended) -variable classifyOption(ExtendedCodes) -value 1
  
  ttk::frame $w.f.b
  ttk::button $w.f.b.go -textvar ::tr(Classify) -command {
    busyCursor .
    .classify.f.b.cancel configure -command "sc_progressBar"
    .classify.f.b.cancel configure -textvar ::tr(Stop)
    sc_progressBar .classify.f.progress bar 301 21 time
    grab .classify.f.b.cancel
    if {[catch  {sc_eco base $classifyOption(AllGames) $classifyOption(ExtendedCodes)} result]} {
      grab release .classify.f.b.cancel
      unbusyCursor .
      tk_messageBox -parent .classify -type ok -icon info -title "Scid" -message $result
    } else {
      grab release .classify.f.b.cancel
      unbusyCursor .
    }
    .classify.f.b.cancel configure -command {focus .; destroy .classify}
    .classify.f.b.cancel configure -textvar ::tr(Close)
    ::windows::gamelist::Refresh
  }
  ttk::button $w.f.b.cancel -textvar ::tr(Close) -command "focus .; destroy $w"
  canvas $w.f.progress -width 300 -height 20 -bg white -relief solid -border 1
  $w.f.progress create rectangle 0 0 0 0 -fill blue -outline blue -tags bar
  $w.f.progress create text 295 10 -anchor e -font font_Regular -tags time \
      -fill black -text "0:00 / 0:00"
  
  pack $w.f.label $w.f.g -side top -pady 5
  addHorizontalRule $w.f
  pack $w.f.codes $w.f.extended $w.f.basic -side top -pady 5
  addHorizontalRule $w.f
  pack $w.f.b -side top -pady 5 -fill x
  pack $w.f.progress -side bottom -padx 2 -pady 2
  pack $w.f.b.cancel $w.f.b.go -side right -pady 10 -padx 10
  wm resizable $w 0 0
  bind $w <F1> {helpWindow ECO}
  bind $w <Escape> "$w.b.cancel invoke"
  updateClassifyWin
}

proc updateClassifyWin {} {
  set w .classify
  if {! [winfo exists $w]} { return }
  set state disabled
  if {[sc_base inUse]} { set state normal }
  $w.f.b.go configure -state $state
}

# Twin checker window:
# Shows PGN of current game, and its twin.

set twincheck(left) 0
set twincheck(right) 0

proc updateTwinChecker {} {
  global twincheck
  set w .twinchecker
  if {![winfo exists $w]} {
    toplevel $w
    pack [ttk::frame $w.b] -side bottom -fill x
    pack [ttk::frame $w.f] -side top -fill both -expand yes
    ttk::frame $w.f.left
    pack $w.f.left -side left -fill y -expand yes
    ttk::frame $w.f.split -width 2 -borderwidth 2 -relief sunken
    pack $w.f.split -side left -fill y -padx 5
    ttk::frame $w.f.right
    pack $w.f.right -side left -fill y -expand yes
    foreach i {left right} {
      set f $w.f.$i
      pack [ttk::frame $f.title] -side top -fill x
      ttk::label $f.title.label -font font_Bold -text [concat $::tr(game) " 0: "]
      ttk::checkbutton $f.title.d -text $::tr(Deleted) -variable twincheck($i) -style Small.TCheckbutton
      ttk::label $f.title.note -font font_Small
      pack $f.title.label $f.title.d $f.title.note -side left
      ttk::label $f.tmt -font font_Small -text "" -anchor w -width 1 -relief sunken
      pack $f.tmt -side bottom -fill x
      autoscrollframe $f.t text $f.t.text \
          -height 16 -width 40 -background white \
          -takefocus 0 -wrap word
      $f.t.text tag configure h -background lightSteelBlue
      pack $f.t -side top -fill both -expand yes
    }
    $w.f.left.title.note configure -text [concat "(\"1\"" $::tr(TwinCheckUndelete)]
    $w.f.right.title.note configure -text  [concat "(\"2\"" $::tr(TwinCheckUndelete)]
    ttk::button $w.b.prev -text $::tr(TwinCheckprevPair) \
        -command {::game::LoadNextPrev previous}
    ttk::button $w.b.next -text $::tr(TwinChecknextPair) -underline 0 \
        -command {::game::LoadNextPrev next}
    ttk::button $w.b.share -text $::tr(TwinCheckTag) -underline 0
    ttk::button $w.b.delete -text $::tr(DeleteTwins) -underline 0 \
        -command "markTwins $w"
    ttk::button $w.b.help -text $::tr(Help) -command {helpWindow Maintenance Twins}
    ttk::button $w.b.close -text $::tr(Close) -command "focus .; destroy $w"
    pack $w.b.close $w.b.help $w.b.delete -side right -padx 5 -pady 2
    pack $w.b.prev $w.b.next $w.b.share -side left -padx 5 -pady 2
    bind $w <F1> "$w.b.help invoke"
    bind $w <Escape> "focus .; destroy $w"
    bind $w <Alt-p> {::game::LoadNextPrev previous}
    bind $w <KeyPress-p> {::game::LoadNextPrev previous}
    bind $w <Alt-n> {::game::LoadNextPrev next}
    bind $w <KeyPress-n> {::game::LoadNextPrev next}
    bind $w <Alt-d> "markTwins $w"
    bind $w <KeyPress-d> "markTwins $w"
    bind $w <KeyPress-1> "$w.f.left.title.d invoke"
    bind $w <KeyPress-$::MB2> "$w.f.right.title.d invoke"
    bind $w <KeyPress-s> "$w.b.share invoke"
    bind $w <KeyPress-u> {
      if {$twincheck(left)} {.twinchecker.f.left.title.d invoke}
      if {$twincheck(right)} {.twinchecker.f.right.title.d invoke}
    }
    bind $w <Alt-u> {
      if {$twincheck(left)} {.twinchecker.f.left.title.d invoke}
      if {$twincheck(right)} {.twinchecker.f.right.title.d invoke}
    }
    wm resizable $w 0 1
    wm title $w $::tr(TwinChecker)
  }
  
  set gn [sc_game number]
  set dup 0
  if {$gn > 0} {
    set dup [sc_game info duplicate]
  }
  set twincheck(left) 0
  set twincheck(right) 0
  
  $w.f.left.title.label configure -text [concat $::tr(game) " $gn:  "]
  
  if {$gn > 0} {
    set twincheck(left) [sc_game flag delete $gn]
    $w.f.left.title.d configure -command "sc_game flag delete $gn invert; updateBoard"
    $w.f.left.title.d configure -state normal
    set tmt [sc_game crosstable count +deleted]
    $w.f.left.tmt configure -text [concat $::tr(TwinCheckTournament) $tmt]
  } else {
    $w.f.left.title.d configure -state disabled
    $w.f.left.tmt configure -text ""
  }
  if {$dup > 0} {
    set twincheck(right) [sc_game flag delete $dup]
    $w.f.right.title.label configure -text [concat $::tr(game) " $dup:  "]
    $w.f.right.title.d configure -command "sc_game flag delete $dup invert; updateBoard"
    $w.f.right.title.d configure -state normal
    set tmt [sc_game crosstable count -game $dup +deleted]
    $w.f.right.tmt configure -text [concat $::tr(TwinCheckTournament) $tmt]
  } else {
    $w.f.right.title.label configure -text $::tr(TwinCheckNoTwin)
    $w.f.right.title.d configure -state disabled
    $w.f.right.tmt configure -text ""
  }
  
  $w.b.share configure -state disabled -command {}
  if {$gn > 0  &&  $dup > 0} {
    if {[llength [sc_game tags share check $gn $dup]] > 0} {
      $w.b.share configure -state normal -command "shareTwinTags $gn $dup $w"
    }
  }
  set t $w.f.left.t.text
  $t configure -state normal
  $t delete 1.0 end
  $t insert end [sc_game pgn]
  
  set t $w.f.right.t.text
  $t configure -state normal
  $t delete 1.0 end
  if {$dup > 0} {
    $t insert end [sc_game pgn -gameNumber $dup]
  } else {
    $t insert end $::tr(TwinCheckNoTwinfound)
  }
  
  # Now color the differences if appropriate:
  if {$dup > 0} {
    set rlen [$w.f.right.t.text index end-1c]
    set llen [$w.f.left.t.text index end-1c]
    
    for {set i 0} {$i < $rlen} {incr i} {
      set line [$w.f.right.t.text get $i.0 "$i.0 lineend"]
      set length [string length $line]
      set max 0
      for {set j 0} {$j < $llen} {incr j} {
        set otherLine [$w.f.left.t.text get $j.0 "$j.0 lineend"]
        set plen [strPrefixLen $line $otherLine]
        if {$plen > $max} { set max $plen }
      }
      if {$max < $length} {
        if {![string compare [string index $line 0] "\["]} { set max 0 }
        $w.f.right.t.text tag add h $i.$max "$i.0 lineend"
      }
    }
    
    for {set i 0} {$i < $llen} {incr i} {
      set line [$w.f.left.t.text get $i.0 "$i.0 lineend"]
      set length [string length $line]
      set max 0
      for {set j 0} {$j < $rlen} {incr j} {
        set otherLine [$w.f.right.t.text get $j.0 "$j.0 lineend"]
        set plen [strPrefixLen $line $otherLine]
        if {$plen > $max} { set max $plen }
      }
      if {$max < $length} {
        if {![string compare [string index $line 0] "\["]} { set max 0 }
        $w.f.left.t.text tag add h $i.$max "$i.0 lineend"
      }
    }
  }
  
  if {[sc_base inUse]} {
    $w.b.delete configure -state normal
  } else {
    $w.b.delete configure -state disabled
  }
  
  foreach side {left right} {
    $w.f.$side.t.text configure -state disabled
  }
  
}

# shareTwinTags:
#   Updates the tags of two twin games by sharing information,
#   filling in the date, round or ratings of each game based on
#   the other where possible.
#
proc shareTwinTags {g1 g2 {parent .}} {
  set sharelist [sc_game tags share check $g1 $g2]
  if {[llength $sharelist] == 0} { return }
  
  set msg $::tr(TwinChangeTag)
  foreach {gn tag old new} $sharelist {
    append msg [concat $::tr(game) " $gn: $tag: \"$old\" -> \"$new\""]
    append msg "\n"
  }
  set answer [tk_messageBox -parent $parent -title "Scid" \
      -type okcancel -default ok -icon question -message $msg]
  if {$answer != "ok"} { return }
  sc_game tags share update $g1 $g2
  sc_game tags reload
  updateBoard -pgn
  ::windows::gamelist::Refresh
}

# baseIsCompactable:
#   Returns true only if the current base is compactable.
#
proc baseIsCompactable {} {
  # Only a database that is in use, not read-only, and not the
  # clipbase, can be compacted:
  if {! [sc_base inUse]} { return 0 }
  if {[sc_base isReadOnly]} { return 0 }
  if {[sc_base current] == [sc_info clipbase]} { return 0 }
  return 1
}

# makeCompactWin:
# Opens the database compaction dialog box.
#
proc makeCompactWin {} {
  if {! [baseIsCompactable]} { return }
  set w .compactWin
  toplevel $w
  wm title $w "Scid: $::tr(CompactDatabase)"
  wm resizable $w 0 0
  foreach f {top names games buttons} { ttk::frame $w.$f }
  pack $w.top -side top -expand 1 -fill both
  pack $w.names -in $w.top -side left -fill x -anchor n
  addVerticalRule $w.top 12
  pack $w.games -in $w.top -side left -fill x -anchor n
  addHorizontalRule $w
  pack $w.buttons -side top -fill x
  
  for {set i 0} {$i < 3} {incr i} {
    grid columnconfigure $w.names $i -weight 1
    grid columnconfigure $w.games $i -weight 1
  }
  ttk::label $w.names.title -text $::tr(NameFile) -font font_Bold
  grid $w.names.title -columnspan 3 -row 0 -column 0 -sticky n
  ttk::label $w.names.nt -text "  $::tr(Names)"
  grid $w.names.nt -row 1 -column 1 -sticky e
  ttk::label $w.names.ut -text "  $::tr(Unused)"
  grid $w.names.ut -row 1 -column 2 -sticky e
  ttk::frame $w.names.h -height 1 -relief solid ;# -bg black
  grid $w.names.h -columnspan 3 -row 2 -column 0 -sticky we
  set row 3
  set ndata [sc_compact stats names]
  set idx 0
  foreach n {p e s r} name {Players Events Sites Rounds} {
    ttk::label $w.names.t$n -text "$::tr($name)  "
    ttk::label $w.names.n$n -text "  [::utils::thousands [lindex $ndata $idx]]"
    incr idx
    ttk::label $w.names.u$n -text "  [::utils::thousands [lindex $ndata $idx]]"
    incr idx
    grid $w.names.t$n -row $row -column 0 -sticky w
    grid $w.names.n$n -row $row -column 1 -sticky e
    grid $w.names.u$n -row $row -column 2 -sticky e
    incr row
  }
  
  ttk::label $w.games.title -text $::tr(GameFile) -font font_Bold
  grid $w.games.title -columnspan 3 -row 0 -column 0 -sticky n
  ttk::label $w.games.gt -text "  [::utils::string::Capital $::tr(games)]"
  grid $w.games.gt -row 1 -column 1 -sticky e
  ttk::label $w.games.st -text "  $::tr(SizeKb)"
  grid $w.games.st -row 1 -column 2 -sticky e
  ttk::frame $w.games.h -height 1 -relief solid ;# -bg black
  grid $w.games.h -columnspan 3 -row 2 -column 0 -sticky we
  set row 3
  set ndata [sc_compact stats games]
  set idx 0
  foreach g {current compact} name {CurrentState AfterCompaction} {
    ttk::label $w.games.t$g -text "$::tr($name)  "
    ttk::label $w.games.g$g -text "  [::utils::thousands [lindex $ndata $idx]]"
    incr idx
    set kbytes [expr {int(([lindex $ndata $idx] + 512) / 1024)} ]
    ttk::label $w.games.s$g -text "  [::utils::thousands $kbytes]"
    incr idx
    grid $w.games.t$g -row $row -column 0 -sticky w
    grid $w.games.g$g -row $row -column 1 -sticky e
    grid $w.games.s$g -row $row -column 2 -sticky e
    incr row
  }
  
  ttk::button $w.buttons.n -text $::tr(CompactNames) -command compactNames
  ttk::button $w.buttons.g -text $::tr(CompactGames) -command compactGames
  ttk::button $w.buttons.help -text $::tr(Help) -command {helpWindow Compact}
  ttk::button $w.buttons.cancel -text $::tr(Cancel) -command "focus .; grab release $w; destroy $w"
  pack $w.buttons.cancel $w.buttons.help -side right -padx 5 -pady 2
  pack $w.buttons.n $w.buttons.g -side left -padx 5 -pady 2
  grab $w
}

proc compactNames {} {
  set w .compactWin
  set stats [sc_compact stats names]
  if {[lindex $stats 1] == 0  &&  [lindex $stats 3] == 0  && \
        [lindex $stats 5] == 0  &&  [lindex $stats 7] == 0} {
    tk_messageBox -type ok -icon info -parent $w -title [concat "Scid: " $::tr(CompactNames)] -message $::tr(NoUnusedNames)
    return
  }
  progressWindow "Scid" [concat $::tr(CompactNames) "..."]
  busyCursor .
  set err [catch {sc_compact names} result]
  unbusyCursor .
  closeProgressWindow
  set w .compactWin
  if {$err} {
    tk_messageBox -type ok -icon warning -parent $w -title "Scid: Error compacting file" -message $result
  } else {
    tk_messageBox -type ok -icon info -parent $w -title [concat "Scid: " $::tr(CompactNames)] -message [subst $::tr(NameFileCompacted)]
  }
  grab release $w
  destroy $w
  updateBoard
  ::windows::gamelist::Refresh
  ::maint::Refresh
}

proc compactGames {} {
  set w .compactWin
  set stats [sc_compact stats games]
  if {[lindex $stats 1] == [lindex $stats 3]  && \
        [lindex $stats 0] == [lindex $stats 2]} {
    tk_messageBox -type ok -icon info -parent $w -title [concat "Scid: " $::tr(CompactGames)] -message $::tr(NoUnusedGames)
    return
  }
  progressWindow "Scid" [concat $::tr(CompactGames) "..."] \
      $::tr(Cancel) "sc_progressBar"
  busyCursor .
  set err [catch {sc_compact games} result]
  unbusyCursor .
  closeProgressWindow
  if {$err} {
    tk_messageBox -type ok -icon warning -parent $w \
        -title "Scid: Error compacting file" -message $result
  } else {
    tk_messageBox -type ok -icon info -parent $w \
        -title [concat "Scid: " $::tr(CompactGames)] \
        -message [subst $::tr(GameFileCompacted)]
  }
  grab release $w
  destroy $w
  updateBoard -pgn
  ::windows::gamelist::Refresh
  updateTitle
  ::maint::Refresh
}

set sortCriteria(real) ""
set sortCriteria(translated) ""

proc clearSortCriteria {} {
  set ::sortCriteria(real) ""
  set ::sortCriteria(translated) ""
  updateSortWin
}

proc addSortCriteria {args} {
  global sortCriteria
  foreach x $args {
    if {$sortCriteria(real) == ""} {
      set sortCriteria(real) $x
      set sortCriteria(translated) $::tr($x)
    } else {
      append sortCriteria(real) ", $x"
      append sortCriteria(translated) ", $::tr($x)"
    }
  }
  updateSortWin
}

proc makeSortWin {} {
  global sortCriteria
  set w .sortWin
  if {[winfo exists $w]} {
    raiseWin $w
    return
  }
  toplevel $w
  wm title $w "Scid: [tr FileMaintSort]"
  wm resizable $w 0 0
  pack [ttk::frame $w.f]
  
  ttk::label $w.f.torder -textvar ::tr(SortCriteria:) -font font_Bold
  pack $w.f.torder -side top
  ttk::label $w.f.order -textvar sortCriteria(translated) -width 40 -background white \
      -relief solid -anchor w
  pack $w.f.order -side top -fill x -pady 2 -padx 2
  addHorizontalRule $w.f
  ttk::label $w.f.tadd -textvar ::tr(AddCriteria:) -font font_Bold
  pack $w.f.tadd -side top
  pack [ttk::frame $w.f.add] -side top -fill x
  foreach b {Date Year Month Event Site Country Round Result Length
    White Black Rating ECO Deleted EventDate} {
    set n [string tolower $b]
    ttk::button $w.f.add.$n -textvar ::tr($b) -command "addSortCriteria $b"
  }
  grid $w.f.add.date -row 0 -column 0 -sticky we
  grid $w.f.add.year -row 0 -column 1 -sticky we
  grid $w.f.add.month -row 0 -column 2 -sticky we
  grid $w.f.add.event -row 1 -column 0 -sticky we
  grid $w.f.add.site -row 1 -column 1 -sticky we
  grid $w.f.add.country -row 1 -column 2 -sticky we
  grid $w.f.add.round -row 2 -column 0 -sticky we
  grid $w.f.add.result -row 2 -column 1 -sticky we
  grid $w.f.add.length -row 2 -column 2 -sticky we
  grid $w.f.add.white -row 3 -column 0 -sticky we
  grid $w.f.add.black -row 3 -column 1 -sticky we
  grid $w.f.add.rating -row 3 -column 2 -sticky we
  grid $w.f.add.eco -row 4 -column 0 -sticky we
  grid $w.f.add.deleted -row 4 -column 1 -sticky we
  grid $w.f.add.eventdate -row 4 -column 2 -sticky we
  
  for {set i 0} {$i < 3} {incr i} {
    grid columnconfigure $w.f.add $i -weight 1
  }
  
  addHorizontalRule $w.f
  
  ttk::label $w.f.tcommon -textvar ::tr(CommonSorts:) -font font_Bold
  pack $w.f.tcommon -side top
  pack [ttk::frame $w.f.tc] -side top -fill x
  ttk::button $w.f.tc.ymsedr -text "$::tr(Year), $::tr(Month), $::tr(Site), $::tr(Event), $::tr(Date), $::tr(Round)" -command {
    clearSortCriteria
    addSortCriteria Year Month Site Event Date Round
  }
  ttk::button $w.f.tc.yedr -text "$::tr(Year), $::tr(Event), $::tr(Date), $::tr(Round)" -command {
    clearSortCriteria
    addSortCriteria Year Event Date Round
  }
  ttk::button $w.f.tc.er -text "$::tr(ECO), $::tr(Rating)" -command {
    clearSortCriteria
    addSortCriteria ECO Rating
  }
  grid $w.f.tc.ymsedr -row 0 -column 0 -sticky we
  grid $w.f.tc.yedr -row 1 -column 0 -sticky we
  grid $w.f.tc.er -row 2 -column 0 -sticky we
  grid columnconfigure $w.f.tc 0 -weight 1
  addHorizontalRule $w.f
  pack [ttk::frame $w.f.b] -side bottom -fill x
  ttk::button $w.f.b.clear -textvar ::tr(Clear) -command clearSortCriteria
  ttk::button $w.f.b.help -textvar ::tr(Help) -command {helpWindow Sorting}
  ttk::button $w.f.b.sort -textvar ::tr(Sort) -command sortDatabase
  ttk::button $w.f.b.close -textvar ::tr(Close) \
      -command "focus .; destroy $w"
  pack $w.f.b.close $w.f.b.sort -side right -padx 5 -pady 2
  pack $w.f.b.clear $w.f.b.help -side left -padx 5 -pady 2
  bind $w <F1> {helpWindow Sorting}
  bind $w <Escape> "$w.f.b.close invoke"
  standardShortcuts $w
  updateSortWin
}

proc updateSortWin {} {
  global sortCriteria
  set w .sortWin
  if {! [winfo exists $w]} { return }
  set state disabled
  if {[sc_base inUse]  &&  $sortCriteria(real) != ""} { set state normal }
  $w.f.b.sort configure -state $state
}

proc sortDatabase {} {
  global sortCriteria
  set w .sortWin
  if {! [sc_base inUse]} {
    tk_messageBox -type ok -icon info -parent $w -title "Scid: Sort results" \
        -message "This is not an open database; there are no games to sort."
    return
  }
  progressWindow "Scid" "Sorting the database..."
  busyCursor .
  set err [catch {sc_base sort $sortCriteria(real) \
        {changeProgressWindow "Storing results..."} \
      } result]
  unbusyCursor .
  closeProgressWindow
  if {$err} {
    tk_messageBox -type ok -icon warning -parent $w \
        -title "Scid: Sort results" -message $result
  } else {
    tk_messageBox -type ok -icon info -parent $w \
        -title "Scid: Sort results" \
        -message "The database was successfully sorted."
  }
  updateBoard
  ::windows::gamelist::Refresh
  ::maint::Refresh
}

proc makeBaseReadOnly {} {
  if {! [sc_base inUse]} { return }
  if {[sc_base isReadOnly]} { return }
  set result [tk_dialog .roDialog "Scid: [tr FileReadOnly]" \
      $::tr(ReadOnlyDialog) "" 1 $::tr(Yes) $::tr(No)]
  if {$result == 0} {
    sc_base isReadOnly set
    updateMenuStates
  }
}


# allocateRatings:
#   Allocate player ratings to games based on the spellcheck file.
#
set addRatings(overwrite) 0
set addRatings(filter) 0

proc allocateRatings {} {
  if {[catch {sc_name ratings -test 1} result]} {
    tk_messageBox -type ok -icon info -parent . -title "Scid" -message $result
    return
  }
  set w .ardialog
  toplevel $w
  wm title $w "Scid"
  ttk::label $w.lab -wraplength 3i -justify center -text $::tr(AllocRatingDescription)
  pack $w.lab -side top -expand 1 -fill x -anchor center
  addHorizontalRule $w
  pack [ttk::frame $w.r] -side top
  ttk::label $w.r.lab -text $::tr(RatingOverride)
  ttk::radiobutton $w.r.yes -variable addRatings(overwrite) \
      -value 1 -text $::tr(Yes)
  ttk::radiobutton $w.r.no -variable addRatings(overwrite) \
      -value 0 -text $::tr(No)
  pack $w.r.lab $w.r.yes $w.r.no -side left
  addHorizontalRule $w
  pack [ttk::frame $w.g] -side top -expand 1 -fill x
  ttk::label $w.g.lab -text $::tr(AddRatings)
  ttk::radiobutton $w.g.all -variable addRatings(filter) \
      -value 0 -text $::tr(SelectAllGames)
  ttk::radiobutton $w.g.filter -variable addRatings(filter) \
      -value 1 -text $::tr(SelectFilterGames)
  pack $w.g.lab $w.g.all $w.g.filter -side top
  addHorizontalRule $w
  pack [ttk::frame $w.b] -side top -fill x
  ttk::button $w.b.ok -text "OK" \
      -command "catch {grab release $w}; destroy $w; doAllocateRatings"
  ttk::button $w.b.cancel -text $::tr(Cancel) \
      -command "catch {grab release $w}; destroy $w"
  pack $w.b.cancel $w.b.ok -side right -padx 3 -pady 3
  catch {grab $w}
  focus $w.b.ok
}

proc doAllocateRatings {} {
  global addRatings
  if {[catch {sc_name ratings -test 1} result]} {
    tk_messageBox -type ok -icon info -parent . -title "Scid" -message $result
    return
  }
  progressWindow "Scid" "Adding Elo ratings..."
  busyCursor .
  if {[catch {sc_name ratings -change $addRatings(overwrite) -filter $addRatings(filter)} result]} {
    closeProgressWindow
    tk_messageBox -type ok -icon warning -parent . \
        -title "Scid" -message $result
  } else {
    closeProgressWindow
    set r [::utils::thousands [lindex $result 0]]
    set g [::utils::thousands [lindex $result 1]]
    tk_messageBox -type ok -icon info -parent . \
        -title "Scid" -message [subst $::tr(AddedRatings)]
  }
  unbusyCursor .
}


# stripTags:
#   Strip unwanted PGN tags from the current database.

array set stripTagCount {}

proc stripTags {} {
  global stripTagChoice stripTagCount
  set w .striptags
  if {[winfo exists $w]} {
    raise $w
    return
  }
  set stripTagList {}
  
  # Find extra PGN tags:
  set ::interrupt 0
  progressWindow "Scid" "Searching for extra PGN tags..." \
      $::tr(Cancel) "set ::interrupt 1; sc_progressBar"
  busyCursor .
  set err [catch {sc_base tag list} result]
  unbusyCursor .
  closeProgressWindow
  if {$::interrupt} { return }
  if {$err} {
    tk_messageBox -title "Scid" -icon warning -type ok -message $result
    return
  }
  
  # Make list of extra tags and their frequency:
  array unset stripTagCount
  set nTags 0
  foreach {tag count} $result {
    set stripTagCount($tag) $count
    incr nTags
  }
  
  if {$nTags == 0} {
    tk_messageBox -title "Scid" -icon info -type ok \
        -message "No extra tags were found."
    return
  }
  
  toplevel $w
  wm title $w "Scid: $::tr(StripTags)"
  ttk::label $w.title -text "Extra PGN tags:" -font font_Bold -anchor center
  pack $w.title -side top -fill x -anchor center
  pack [ttk::frame $w.f] -side top -fill x
  addHorizontalRule $w
  pack [ttk::frame $w.b] -side bottom -fill x
  
  set row 0
  foreach tag [lsort [array names stripTagCount]] {
    set count $stripTagCount($tag)
    ttk::radiobutton $w.f.t$tag -text "$tag  " -variable stripTagChoice -value $tag
    ttk::label $w.f.c$tag -text [::utils::thousands $count]
    if {$row == 0} { set stripTagChoice $tag }
    grid $w.f.t$tag -row $row -column 0 -sticky w
    grid $w.f.c$tag -row $row -column 1 -sticky e
    incr row
  }
  ttk::button $w.b.find -text $::tr(SetFilter) -command findStripTags
  ttk::button $w.b.strip -text $::tr(StripTag...) -command {
    set removed [doStripTags .striptags]
    set stripTagCount($stripTagChoice) \
        [expr {$stripTagCount($stripTagChoice) - $removed} ]
    .striptags.f.c$stripTagChoice configure -text \
        [::utils::thousands $stripTagCount($stripTagChoice)]
  }
  ttk::button $w.b.cancel -text $::tr(Cancel) \
      -command "catch {grab release $w}; destroy $w"
  pack $w.b.cancel $w.b.strip $w.b.find -side right -padx 2 -pady 2
  wm resizable $w 0 0
  update
  catch {grab $w}
}

proc doStripTags {{parent .}} {
  global stripTagChoice
  set msg "Do you really want to remove all occurences of the PGN tag"
  append msg " \"$stripTagChoice\" from this database?"
  set result [tk_messageBox -title "Scid" -parent $parent \
      -icon question -type yesno -message $msg]
  if {$result == "no"} { return 0 }
  progressWindow "Scid" "Removing the PGN tag $stripTagChoice..." \
      $::tr(Cancel) "sc_progressBar"
  busyCursor .
  set err [catch {sc_base tag strip $stripTagChoice} result]
  unbusyCursor .
  closeProgressWindow
  set count 0
  if {! $err} {
    set count $result
    set result "Removed $result instances of \"$stripTagChoice\"."
    append result "\n\n"
    append result "To save space and maintain database efficiency, it is a "
    append result "good idea to compact the game file after removing tags."
  }
  tk_messageBox -title "Scid" -parent $parent -type ok -icon info \
      -message $result
  return $count
}

proc findStripTags {} {
  global stripTagChoice
  progressWindow "Scid" "Finding games with the PGN tag $stripTagChoice..." \
      $::tr(Cancel) "sc_progressBar"
  busyCursor .
  set err [catch {sc_base tag find $stripTagChoice} result]
  unbusyCursor .
  closeProgressWindow
  ::windows::stats::Refresh
}


# cleanerWin:
#   Open a dialog so the user can choose several maintenance tasks
#   in one action.

set cleaner(players) 1
set cleaner(events) 1
set cleaner(sites) 1
set cleaner(rounds) 1
set cleaner(eco) 1
set cleaner(elo) 1
set cleaner(twins) 1
set cleaner(cnames) 0
set cleaner(cgames) 0
set cleaner(tree) 0

proc cleanerWin {} {
  set w .mtoolWin
  if {[winfo exists $w]} { return }
  
  toplevel $w
  wm title $w "Scid: $::tr(Cleaner)"
  bind $w <F1> {helpWindow Maintenance Cleaner}
  pack [ttk::frame $w.f]
  
  pack [ttk::frame $w.f.help] -side top -fill x
  text $w.f.help.text -width 1 -height 8 -wrap word \
      -relief ridge -cursor top_left_arrow -yscrollcommand "$w.f.help.ybar set"
  ttk::scrollbar $w.f.help.ybar -orient vertical -command "$w.f.help.text yview" \
      -takefocus 0
  pack $w.f.help.ybar -side right -fill y
  pack $w.f.help.text -side left -fill x -expand yes
  $w.f.help.text insert end [string trim $::tr(CleanerHelp)]
  $w.f.help.text configure -state disabled
  
  pack [ttk::frame $w.f.f] -side top -padx 20
  foreach i {players events sites rounds} j {Players Events Sites Rounds} {
    ttk::label $w.f.f.$i -text "$::tr(Spellchecking): $::tr($j)"
  }
  ttk::label $w.f.f.eco -text $::tr(ReclassifyGames)
  ttk::label $w.f.f.elo -text $::tr(AddEloRatings)
  ttk::label $w.f.f.twins -text $::tr(DeleteTwins)
  ttk::label $w.f.f.cnames -text $::tr(CompactNames)
  ttk::label $w.f.f.cgames -text $::tr(CompactGames)
  ttk::label $w.f.f.tree -text [tr TreeFileFill]
  
  foreach i {players events sites rounds eco elo twins cnames cgames tree} {
    ttk::radiobutton $w.f.f.y$i -variable cleaner($i) -value 1 -text $::tr(Yes)
    ttk::radiobutton $w.f.f.n$i -variable cleaner($i) -value 0 -text $::tr(No)
  }
  set row 0
  foreach i {players events sites rounds eco elo twins cnames cgames tree} {
    grid $w.f.f.$i -row $row -column 0 -sticky w
    grid $w.f.f.y$i -row $row -column 1 -sticky w
    grid $w.f.f.n$i -row $row -column 2 -sticky w
    incr row
  }
  
  addHorizontalRule $w.f
  pack [ttk::frame $w.f.b] -side bottom -fill x
  ttk::button $w.f.b.ok -text "OK" -command "catch {grab release $w}; destroy $w; doCleaner"
  ttk::button $w.f.b.cancel -text $::tr(Cancel) -command "catch {grab release $w}; destroy $w"
  pack $w.f.b.cancel $w.f.b.ok -side right -padx 2 -pady 2
  wm resizable $w 0 0
  # Remove the scrollbar if it is not needed:
  update
  set yview [$w.f.help.text yview]
  if {[lindex $yview 0] <= 0.01  &&  [lindex $yview 1] >= 0.99} {
    pack forget $w.f.help.ybar
  }
  catch {grab $w}
}

# Maximum nr of corrections to be scanned
# Set to zero to find them all
# Set to some positive number to limit
#
set cleaner_maxSpellCorrections 0


proc doCleaner {} {
  global cleaner twinSettings
  global cleaner_maxSpellCorrections
  
  set answer [tk_dialog .mtoolDialog "Scid" \
      [string trim $::tr(CleanerConfirm)] "" \
      0 $::tr(Yes) $::tr(No)]
  if {$answer != 0} { return }
  
  set w .mtoolStatus
  if {! [winfo exists $w]} {
    toplevel $w
    wm title $w "Scid: $::tr(Cleaner)"
    pack [ttk::frame $w.f]
    pack [ttk::frame $w.f.b] -side bottom -fill x -expand yes
    pack [ttk::frame $w.f.t] -side top -fill both -expand yes
    text $w.f.t.text -width 60 -height 10 -wrap none -setgrid 1 \
        -cursor top_left_arrow -yscrollcommand "$w.f.t.ybar set"
    ttk::scrollbar $w.f.t.ybar -orient vertical -command "$w.f.t.text yview" -takefocus 0
    pack $w.f.t.ybar -side right -fill y
    pack $w.f.t.text -side left -fill both -expand yes
    ttk::button $w.f.b.close -text $::tr(Close) -command "catch {grab release $w}; destroy $w"
    pack $w.f.b.close -side right -padx 2 -pady 2
    wm minsize $w 20 5
  }
  
  busyCursor .
  catch {grab $w}
  set t $w.f.t.text
  $t delete 1.0 end
  $t insert end "$::tr(Cleaner)."
  $t insert end "  $::tr(Database): [file tail [sc_base filename]]\n"
  
  $w.f.b.close configure -state disabled
  
  set count 1
  
  foreach nameType {Player Event Site Round} {
    set names $nameType
    append names "s"
    set tag [string tolower $names]
    if {$cleaner($tag)} {
      mtoolAdd $t "$count: $::tr(Spellchecking): $::tr($names)..."
      incr count
      set result "0 $nameType names were corrected."
      if {! [catch {sc_name spellcheck -max $cleaner_maxSpellCorrections $nameType} corrections]} {
        update
        catch {sc_name correct $nameType $corrections} result
      }
      $t insert end "   $result\n"
      $t see end
    }
  }
  
  if {$cleaner(eco)} {
    mtoolAdd $t "$count: $::tr(ReclassifyGames)..."
    incr count
    catch {sc_eco base $::classifyOption(AllGames) \
          $::classifyOption(ExtendedCodes)} result
    $t insert end "   $result\n"
    $t see end
  }
  
  if {$cleaner(elo)} {
    mtoolAdd $t "$count: $::tr(AddEloRatings)..."
    incr count
    if {[catch {sc_name ratings} result]} {
      $t insert end "   $result\n"
    } else {
      set r [::utils::thousands [lindex $result 0]]
      set g [::utils::thousands [lindex $result 1]]
      $t insert end "   Scid added $r Elo ratings in $g games.\n"
    }
  }
  
  if {$cleaner(twins)} {
    mtoolAdd $t "$count: $::tr(DeleteTwins)..."
    incr count
    if {$twinSettings(undelete) == "Yes"} {
      catch {sc_game flag delete all 0}
      update
    }
    if {[catch {sc_base duplicates -colors $twinSettings(colors) \
            -event $twinSettings(event) -site $twinSettings(site) \
            -round $twinSettings(round) -year $twinSettings(year) \
            -month $twinSettings(month) -day $twinSettings(day) \
            -result $twinSettings(result) -eco $twinSettings(eco) \
            -moves $twinSettings(moves) -players $twinSettings(players) \
            -setfilter $twinSettings(setfilter) \
            -usefilter $twinSettings(usefilter) \
            -comments $twinSettings(comments) \
            -variations $twinSettings(variations) \
            -delete $twinSettings(delete)} result]} {
      set message $result
    } else {
      set message "Scid found $result twin games"
      if {$result > 0} {append message " and set their delete flags"}
    }
    $t insert end "   $message.\n"
  }
  
  if {$cleaner(cnames)} {
    mtoolAdd $t "$count: $::tr(CompactNames)..."
    incr count
    set stats [sc_compact stats names]
    if {[lindex $stats 1] == 0  &&  [lindex $stats 3] == 0  && \
          [lindex $stats 5] == 0  &&  [lindex $stats 7] == 0} {
      $t insert end "   Name file already compacted.\n"
    } else {
      set err [catch {sc_compact names} result]
      if {$err} {
        $t insert end "   $result\n"
      } else {
        $t insert end "   Done.\n"
      }
    }
    $t see end
  }
  
  if {$cleaner(cgames)} {
    mtoolAdd $t "$count: $::tr(CompactGames)..."
    incr count
    set stats [sc_compact stats games]
    if {[lindex $stats 1] == [lindex $stats 3]  && \
          [lindex $stats 0] == [lindex $stats 2]} {
      $t insert end "   Game file already compacted.\n"
    } else {
      set err [catch {sc_compact games} result]
      if {$err} {
        $t insert end "   $result\n"
      } else {
        $t insert end "   Done.\n"
      }
    }
    $t see end
  }
  
  if {$cleaner(tree)} {
    mtoolAdd $t "$count: [tr TreeFileFill]..."
    incr count
    sc_game push
    set base [sc_base current]
    set len [llength $::tree(standardLines)]
    foreach line $::tree(standardLines) {
      sc_game new
      if {[llength $line] > 0}  {
        foreach move $line {sc_move addSan $move}
      }
      sc_tree search -base $base
      update
    }
    catch {sc_tree write $base} result
    sc_game pop
    $t insert end "   Done.\n"
  }
  
  mtoolAdd $t "Done."
  updateBoard
  ::windows::gamelist::Refresh
  ::maint::Refresh
  $w.f.b.close configure -state normal
  catch {grab release $w}
  unbusyCursor .
}

proc mtoolAdd {tw title} {
  set time [clock format [clock seconds] -format "%H:%M:%S"]
  $tw insert end "\n\[$time\]\n"
  if {$title != ""} { $tw insert end "$title\n" }
  $tw see end
  update
}

proc fenErrorDialog {{msg {}}} {
  
  if {[winfo exists .setup]} {
    tk_messageBox -icon info -type ok -title "Scid: Invalid FEN" -message $msg -parent .setup
  } else {
    tk_messageBox -icon info -type ok -title "Scid: Invalid FEN" -message $msg
  }
  
}

# copyFEN
#
#   Copies the FEN of the current position to the text clipboard.
#
proc copyFEN {} {
  set fen [sc_pos fen]
  # Create a text widget to hold the fen so it can be the owner
  # of the current text selection:
  set w .tempFEN
  if {! [winfo exists $w]} { text $w }
  $w delete 1.0 end
  $w insert end $fen sel
  clipboard clear
  clipboard append $fen
  selection own $w
  selection get
}

# pasteFEN
#
#   Bypasses the board setup window and tries to paste the current
#   text selection as the setup position, producing a message box
#   if the selection does not appear to be a valid FEN string.
#
proc pasteFEN {} {
  set fenStr ""
  if {[catch {set fenStr [selection get -selection CLIPBOARD]} ]} {
    catch {set fenStr [selection get -selection PRIMARY]}
  }
  set fenStr [string trim $fenStr]
  
  set fenExplanation {FEN is the standard text representation of a chess position. As an example, the FEN representation of the standard starting position is:
    "rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1"}
  
  if {$fenStr == ""} {
    set msg "The current text selection is empty. To paste the start board, select some text that contains a position in FEN notation.\n\n$fenExplanation"
    fenErrorDialog $msg
    return
  }
  if {[catch {sc_game startBoard $fenStr}]} {
    if {[string length $fenStr] > 80} {
      set fenStr [string range $fenStr 0 80]
      append fenStr "..."
    }
    set msg "\"$fenStr\" is not a valid chess position in FEN notation.\n\n $fenExplanation"
    
    fenErrorDialog $msg
    return
  }
  updateBoard -pgn
}

proc setSetupBoardToFen {w setupFen} {
  
  # Called from ".setup.status" FEN combo S.A
  
  # Once the FEN combo box in the Setup board widget is accessed, the original
  # game poisiotn can still be had, but game history is lost
  
  global setupboardSize setupBd
  
  
  if {[catch {sc_game startBoard $setupFen} err]} {
    fenErrorDialog $err
  } else {
    # ::utils::history::AddEntry setupFen $setupFen
    set setupBd [sc_pos board]
    setBoard .setup.l.bd $setupBd $setupboardSize
  }
}

############################################################
### Board setup window:

set setupBd {}
set setupFen {}

# makeSetupFen:
#    Reconstructs the FEN string from the current settings in the
#    setupBoard dialog. Check to see if the position is
#    acceptable (a position can be unacceptable by not having exactly
#    one King per side, or by having more than 16 pieces per side).
#

proc makeSetupFen {} {
  global setupFen setupBd moveNum toMove castling epFile
  set fenStr ""
  set errorStr [validateSetup]
  if {$errorStr != ""} {
    set fenStr "Invalid board: "
    append fenStr $errorStr
    return $fenStr
  }
  for {set bRow 56} {$bRow >= 0} {incr bRow -8} {
    if {$bRow < 56} { append fenStr "/" }
    set emptyRun 0
    for {set bCol 0} {$bCol < 8} {incr bCol} {
      set sq [expr {$bRow + $bCol} ]
      set piece [string index $setupBd $sq]
      if {$piece == "."} {
        incr emptyRun
      } else {
        if {$emptyRun > 0} {
          append fenStr $emptyRun
          set emptyRun 0
        }
        append fenStr $piece
      }
    }
    if {$emptyRun > 0} { append fenStr $emptyRun }
  }
  append fenStr " " [string tolower [string index $toMove 0]] " "
  if {$castling == ""} {
    append fenStr "- "
  } else {
    append fenStr $castling " "
  }
  if {$epFile == ""  ||  $epFile == "-"} {
    append fenStr "-"
  } else {
    append fenStr $epFile
    if {$toMove == "White"} {
      append fenStr "6"
    } else {
      append fenStr "3"
    }
  }
  # We assume a halfmove clock of zero:
  append fenStr " 0 " $moveNum
  set setupFen $fenStr
  return $fenStr
}

# validateSetup:
#   Called by makeSetupFen to check that the board is sensible: that is,
#   that there is one king per side and there are at most 16 pieces per
#   side.
#
proc validateSetup {} {
  global setupBd
  set wkCount 0; set bkCount 0; set wCount 0; set bCount 0
  set wpCount 0; set bpCount 0
  for {set i 0} {$i < 64} {incr i} {
    set p [string index $setupBd $i]
    if {$p == "."} {
    } elseif {$p == "P"} { incr wCount; incr wpCount
    } elseif {$p == "p"} { incr bCount; incr bpCount
    } elseif {$p == "N" || $p == "B" || $p == "R" || $p == "Q"} {
      incr wCount
    } elseif {$p == "n" || $p == "b" || $p == "r" || $p == "q"} {
      incr bCount
    } elseif {$p == "K"} { incr wCount; incr wkCount
    } elseif {$p == "k"} { incr bCount; incr bkCount
    } else { return "Invalid piece: $p" }
  }
  if {$wkCount != 1} { return "There must be one white king"
  } elseif {$bkCount != 1} { return "There must be one black king"
  } elseif {$wCount > 16} { return "Too many white pieces"
  } elseif {$bCount > 16} { return "Too many black pieces"
  } elseif {$wpCount > 8} { return "Too many white pawns"
  } elseif {$bpCount > 8} { return "Too many black pawns" }
  return ""
}

# setupBoardPiece:
#    Called by setupBoard to set or clear a square when it is clicked on.
#    Sets that square to containing the active piece (stored in pastePiece)
#    unless it already contains that piece, in which case the square is
#    cleared to be empty.
#
proc setupBoardPiece { square } {
  global setupBd pastePiece setupboardSize setupFen
  set oldState $setupBd
  set setupBd {}
  set piece $pastePiece
  if {[string index $oldState $square] == $pastePiece} {
    set piece "."
  }
  if {$piece == "P"  ||  $piece == "p"} {
    if {$square < 8  ||  $square >= 56} {
      set setupBd $oldState
      unset oldState
      return
    }
  }
  append setupBd \
      [string range $oldState 0 [expr {$square - 1} ]] \
      $piece \
      [string range $oldState [expr {$square + 1} ] 63]
  unset oldState
  setBoard .setup.l.bd $setupBd $setupboardSize
  set setupFen [makeSetupFen]
}

# switchPastePiece:
#   Changes the active piece selection in the board setup dialog to the
#   next or previous piece in order.
#
proc switchPastePiece { switchType } {
  global pastePiece
  array set nextPiece { K Q Q R R B B N N P P k k q q r r b b n n p p K}
  array set prevPiece { K p Q K R Q B R N B P N k P q k r q b r n b p n}
  if {$switchType == "next"} {
    set pastePiece $nextPiece($pastePiece)
  } else {
    set pastePiece $prevPiece($pastePiece)
  }
}

proc exitSetupBoard {} {
  
  # called when "OK" button hit
  
  global setupFen
  
  # unbind cancel binding
  bind .setup <Destroy> {}
  
  if {[catch {sc_game startBoard $setupFen} err]} {
    fenErrorDialog $err
    bind .setup <Destroy> cancelSetupBoard
    
    # Ideally, "$err" should be more specific than "Invalid FEN", but
    # procedural flow is a little complicated S.A.
  } else {
    ::utils::history::AddEntry setupFen $setupFen
    destroy .setup
    updateBoard -pgn
  }
}

proc cancelSetupBoard {} {
  
  # When FEN strings are previewed, the gameboard state is changed, but *not*
  # drawn in the main window. This means that while the game state can be
  # restored in the event of user hitting "cancel", game history has been lost
  # This behaviour is necessary to enable FEN previewing.
  
  global origFen
  
  bind .setup <Destroy> {}
  
  # restore old gamestate if unchanged
  
  if {$origFen != "[sc_pos fen]"} {
    catch {sc_game startBoard $origFen}
    updateBoard -pgn
  }
  destroy .setup
}

# Global variables for entry of the start position:
set epFile {}          ;# legal values are empty, or "a"-"h".
set moveNum 1          ;# legal values are 1-999.
set setupStatus {}     ;# stores the FEN string.
set castling KQkq      ;# will be empty or some combination of KQkq letters.
set toMove White       ;# side to move, "White" or "Black".
set pastePiece K       ;# Piece being pasted, "K", "k", "Q", "q", etc.

# Traces to keep entry values sensible:

trace variable moveNum w {::utils::validate::Integer 999 0}
trace variable epFile w {::utils::validate::Regexp {^(-|[a-h])?$}}
trace variable castling w {::utils::validate::Regexp {^(-|[KQkq]*)$}}


# setupBoard:
#   The main procedure for creating the dialog for setting the start board.
#   Calls switchPastePiece and makeSetupFen.
#   On "Setup" button press, calls sc_pos startBoard to try to set the
#   starting board.

#   todo: perhaps ensure all engines have stopped before doing this S.A.

proc setupBoard {} {
  global boardSizes boardSize setupboardSize lite dark setupBd pastePiece toMove epFile moveNum
  global origFen
  global setupStatus castling setupFen highcolor
  if {[winfo exists .setup]} { return }
  set setupBd [sc_pos board]
  set origFen [sc_pos fen]
  toplevel .setup
  wm title .setup "Scid: Setup Board"
  
  ### Status entrybox contains the current FEN string.
  
  ttk::frame .setup.statusbar
  pack .setup.statusbar -side bottom -expand yes -fill x
  
  ### The actual board is created here. Bindings: left mouse sets/clears
  ### a square, middle mouse selects previous piece, right mouse selects
  ### next piece.  I should also set shortcut keys, e.g. "Q" for Queen.
  
  # todo: drag and drop of pieces would be nice :>
  
  ttk::frame .setup.l
  ttk::frame .setup.r
  ttk::frame .setup.l.bd
  
  set sl .setup.l
  set sr .setup.r
  set sbd .setup.l.bd
  
  pack $sl -side left -expand yes -fill y
  pack $sr -side right -expand yes -fill y
  
  # make the setup board a couple of sizes smaller
  set index [lsearch -exact $boardSizes $boardSize]
  # incr index 0
  # incr index -2
  incr index -3
  if {$index < 0} {
    set index 0
  }
  set setupboardSize [lindex $boardSizes $index]
  
  for {set i 0} {$i < 64} {incr i} {
    ttk::label $sbd.$i -image e$setupboardSize
    set rank [expr {7 - int ($i / 8)} ]
    set fyle [expr {$i % 8} ]
    grid $sbd.$i -row $rank -column $fyle -sticky nesw
    if {[expr {($fyle % 2) == ($rank % 2)} ]} {
      $sbd.$i configure -background $lite
    } else {
      $sbd.$i configure -background $dark
    }
    bind $sbd.$i <ButtonPress-1> "setupBoardPiece $i"
    bind $sbd.$i <ButtonPress-$::MB2> "switchPastePiece prev"
    bind $sbd.$i <ButtonPress-$::MB3> "switchPastePiece next"
  }
  
  pack $sbd -padx 10 -pady 10 -expand 1
  pack [ttk::frame $sl.b] -side top -padx 8 -pady 8 ;# -expand yes -fill x
  # rearrange above two lines for different setup
  pack [ttk::frame $sl.w] -side bottom -padx 8 -pady 8 ;# -expand yes -fill x
  
  setBoard $sbd $setupBd $setupboardSize
  
  ### Piece Buttons
  
  # set pastePiece P
  # set toMove White
  
  foreach i {p n b r q k} {
    foreach color {w b} value "[string toupper $i] $i" {
      radiobutton $sl.$color.$i -image $color$i$setupboardSize -indicatoron 0 -variable pastePiece -value $value -activebackground $highcolor    
      # ttk::radiobutton $sl.$color.$i -image $color$i$setupboardSize -variable pastePiece -value $value
      pack $sl.$color.$i -side left ;# -expand yes -fill x -padx 5
    }
  }
  
  ### Side to move frame.
  
  ttk::frame $sr.tomove
  ttk::label $sr.tomove.label -textvar ::tr(SideToMove:)
  ttk::frame $sr.tomove.buttons
  ttk::radiobutton $sr.tomove.buttons.w -text $::tr(White) -variable toMove -value White \
      -command {set setupFen [makeSetupFen]}
  ttk::radiobutton $sr.tomove.buttons.b -text $::tr(Black) -variable toMove -value Black \
      -command {set setupFen [makeSetupFen]}
  
  pack $sr.tomove -pady 7
  pack $sr.tomove.label -side top -pady 2
  pack $sr.tomove.buttons -side top
  pack $sr.tomove.buttons.w $sr.tomove.buttons.b -side left
  
  ### Entry boxes: Move number, Castling and En Passant file.
  
  pack [ttk::frame $sr.mid] -padx 5 -pady 5
  
  ttk::frame $sr.mid.movenum
  ttk::label $sr.mid.movenum.label -textvar ::tr(MoveNumber:)
  ttk::entry $sr.mid.movenum.e -width 3 -background white -textvariable moveNum
  
  pack $sr.mid.movenum -pady 10 -expand yes -fill x
  pack $sr.mid.movenum.label $sr.mid.movenum.e -side left -anchor w -expand yes -fill x
  
  ttk::frame $sr.mid.castle
  ttk::label $sr.mid.castle.label -textvar ::tr(Castling:)
  ttk::combobox $sr.mid.castle.e -width 5 -textvariable castling -values {KQkq K Q k q - KQ kq Kk Kq Kkq Qk Qq Qkq KQk KQq}

  pack $sr.mid.castle -pady 10 -expand yes -fill x
  pack $sr.mid.castle.label $sr.mid.castle.e -side left -anchor w -expand yes -fill x
  
  ttk::frame $sr.mid.ep
  ttk::label $sr.mid.ep.label -textvar ::tr(EnPassantFile:)
  ttk::combobox $sr.mid.ep.e -width 2 -textvariable epFile -values {- a b c d e f g h}
  set epFile {}
  
  pack $sr.mid.ep -pady 10 -expand yes -fill x
  pack $sr.mid.ep.label $sr.mid.ep.e -side left -anchor w -expand yes -fill x
  
  # Set bindings so the Fen string is updated at any change. The "after idle"
  # is needed to ensure any keypress which causes a text edit is processed
  # before we regenerate the FEN text.
  
  foreach i "$sr.mid.ep.e $sr.mid.castle.e $sr.mid.movenum.e" {
    bind $i <Any-KeyPress> {after idle {set setupFen [makeSetupFen]}}
    bind $i <FocusOut> {
      after idle {set setupFen [makeSetupFen]}}
  }
  
  ### Buttons: Clear Board and Initial Board.
  
  ttk::frame $sr.b
  ttk::button $sr.b.clear -textvar ::tr(EmptyBoard) -command {
    set setupBd \
        "................................................................"
    setBoard .setup.l.bd $setupBd $setupboardSize
    set castling {}
    set setupFen [makeSetupFen]
  }
  ttk::button $sr.b.initial -textvar ::tr(InitialBoard) -command {
    set setupBd \
        "RNBQKBNRPPPPPPPP................................pppppppprnbqkbnr"
    setBoard .setup.l.bd $setupBd $setupboardSize
    set castling KQkq
    set setupFen [makeSetupFen]
  }
  pack $sr.b -side top -pady 15
  pack $sr.b.clear -side top -padx 5 -pady 10 -fill x
  pack $sr.b.initial -side bottom -padx 5 -pady 10 -fill x
  
  ### Buttons: Setup and Cancel.
  
  ttk::frame $sr.b2
  ttk::button $sr.b2.ok -text "OK" -width 7 -command exitSetupBoard
  ttk::button $sr.b2.cancel -textvar ::tr(Cancel) -width 7 -command cancelSetupBoard
  
  pack $sr.b2 -side bottom -pady 20 -anchor s
  pack $sr.b2.ok -side left -padx 5
  pack $sr.b2.cancel -side right -padx 5
  
  ttk::button .setup.paste -textvar ::tr(PasteFen) -command {
    if {[catch {set setupFen [selection get -selection CLIPBOARD]} ]} {
      catch {set setupFen [selection get -selection PRIMARY]}
      # PRIMARY is the X selection, unsure about CLIPBOARD
    }
  }
  ttk::button .setup.clear -textvar ::tr(ClearFen) -command {set setupFen ""}
  
  ttk::combobox .setup.status -textvariable setupFen -height 10
  bind .setup.status <<ComboboxSelected>> setSetupBoardToFen
  ::utils::history::SetCombobox setupFen .setup.status
  ::utils::history::SetLimit setupFen 20
  
  update ; # necessary in case of quick-draw user interactions
  
  pack .setup.paste .setup.clear -in .setup.statusbar -side left
  pack .setup.status -in .setup.statusbar -side right -expand yes -fill x -anchor w
  #bind .setup.status <FocusIn>  { %W configure -background lightYellow }
  #bind .setup.status <FocusOut> { %W configure -background white }
  bind .setup <Escape> cancelSetupBoard
  bind .setup <Destroy> cancelSetupBoard
  
  set setupFen [makeSetupFen]
}


# ::game::ConfirmDiscard
#
#   Prompts the user if they want to discard the changes to the
#   current game. Returns 1 if they selected yes, 0 otherwise.
#
proc ::game::ConfirmDiscard {} {
  if {$::trialMode} { return 1 }
  if {[sc_base isReadOnly]} { return 1 }
  if {! [sc_game altered]} { return 1 }
  set answer [ tk_dialog .cgDialog "Scid: [tr GameNew]" \
      $::tr(ClearGameDialog) "" 0 $::tr(Yes) $::tr(No) ]
  if {$answer == 1} { return  0 }
  return 1
}

# ::game::ConfirmDiscard2
# Clearer buttons than ConfirmDiscard
#   Prompts the user if they want to discard the changes to the
#   current game. Returns :
# 0 -> saves then continue
# 1 -> discard changes and continue
# 2 -> cancel action
#
proc ::game::ConfirmDiscard2 {} {
  if {$::trialMode} { return 1 }
  if {[sc_base isReadOnly]} { return 1 }
  if {! [sc_game altered]} { return 1 }
  # set answer [ tk_dialog .cgDialog "Scid: [tr GameNew]" $::tr(ClearGameDialog) "" 2 \
  # $::tr(SaveAndContinue) $::tr(DiscardChangesAndContinue) $::tr(GoBack) ]
  
  set w .confirmDiscard
  toplevel $w
  wm title $w "Scid: [tr GameNew]"
  set ::game::answer 2
  frame $w.top
  frame $w.bottom
  label $w.top.txt -text $::tr(ClearGameDialog)
  pack $w.top.txt -expand 1 -fill both
  
  button $w.bottom.b1 -text $::tr(SaveAndContinue) -command {destroy .confirmDiscard ; set ::game::answer 0}
  button $w.bottom.b2 -text $::tr(DiscardChangesAndContinue) -command {destroy .confirmDiscard ; set ::game::answer 1}
  button $w.bottom.b3 -text $::tr(GoBack) -command {destroy .confirmDiscard ; set ::game::answer 2}
  pack $w.bottom.b1 $w.bottom.b2 $w.bottom.b3 -side left -expand 1 -fill both
  
  pack $w.top $w.bottom -expand 1 -fill both
  
  bind $w <Destroy> {set ::game::answer 2}
  
  # ceinture et bretelle pour le grab !
  update
  catch { grab $w }
  
  focus $w.bottom.b3
  vwait ::game::answer
  return $::game::answer
}

# ::game::Clear
#
#   Clears the active game, checking first if it is altered.
#   Updates any affected windows.
#
proc ::game::Clear {} {
  set confirm [::game::ConfirmDiscard2]
  if {$confirm == 2} { return }
  if {$confirm == 0} {
    sc_game save [sc_game number]
    # ::gameReplace
  }
  
  setTrialMode 0
  sc_game new
  updateBoard -pgn
  updateTitle
  updateMenuStates
}

# ::game::Strip
#
#   Strips all comments or variations from a game
#
proc ::game::Strip {type} {
  sc_game undoPoint
  if {[catch {sc_game strip $type} result]} {
    tk_messageBox -parent . -type ok -icon info -title "Scid" -message $result
    return
  }
  updateBoard -pgn
  updateTitle
}

# ::game::TruncateBegin
#
proc ::game::TruncateBegin {} {
  sc_game undoPoint
  if {[catch {sc_game truncate -start} result]} {
    tk_messageBox -parent . -type ok -icon info -title "Scid" -message $result
    return
  }
  updateBoard -pgn
  updateTitle
}

# ::game::Truncate
#
proc ::game::Truncate {} {
  sc_game undoPoint
  if {[catch {sc_game truncate} result]} {
    tk_messageBox -parent . -type ok -icon info -title "Scid" -message $result
    return
  }
  updateBoard -pgn
  updateTitle
}

# game::LoadNextPrev
#
#   Loads the next or previous filtered game in the database.
#   The parameter <action> should be "previous" or "next".
#
proc ::game::LoadNextPrev {action} {
  global pgnWin statusBar
  if {![sc_base inUse]} {
    set statusBar "  There is no $action game: this is an empty database."
    return
  }
  set number [sc_filter $action]
  if {$number == 0} {
    set statusBar "  There is no $action game in the current filter."
    return
  }
  ::game::Load $number
}

# ::game::Reload
#
#   Reloads the current game.
#
proc ::game::Reload {} {
  if {![sc_base inUse]} { return }
  if {[sc_game number] < 1} { return }
  ::game::Load [sc_game number]
}

# ::game::LoadRandom
#
#   Loads a random game from the database.
#
proc ::game::LoadRandom {} {
  set ngames [sc_filter size]
  if {$ngames == 0} { return }
  set r [expr {(int (rand() * $ngames)) + 1} ]
  set gnumber [sc_filter index $r]
  ::game::Load $gnumber
}


# ::game::LoadNumber
#
#    Prompts for the number of the game to load.
#
set ::game::entryLoadNumber ""
trace variable ::game::entryLoadNumber w {::utils::validate::Regexp {^[0-9]*$}}

proc ::game::LoadNumber {} {
  set ::game::entryLoadNumber ""
  if {![sc_base inUse]} { return }
  
  set confirm [::game::ConfirmDiscard2]
  if {$confirm == 2} { return }
  if {$confirm == 0} {
    # ::gameReplace
    sc_game save [sc_game number]
  }
  
  if {[sc_base numGames] < 1} { return }
  set w [toplevel .glnumDialog]
  wm title $w "Scid: [tr GameNumber]"
  grab $w
  
  label $w.label -text $::tr(LoadGameNumber)
  pack $w.label -side top -pady 5 -padx 5
  
  entry $w.entry -background white -width 10 -textvariable ::game::entryLoadNumber
  bind $w.entry <Escape> { .glnumDialog.buttons.cancel invoke }
  bind $w.entry <Return> { .glnumDialog.buttons.load invoke }
  pack $w.entry -side top -pady 5
  
  set b [frame $w.buttons]
  pack $b -side top -fill x
  dialogbutton $b.load -text "OK" -command {
    grab release .glnumDialog
    if {[catch {sc_game load $::game::entryLoadNumber} result]} {
      tk_messageBox -type ok -icon info -title "Scid" -message $result
    }
    focus .
    destroy .glnumDialog
    flipBoardForPlayerNames $::myPlayerNames
    updateBoard -pgn
    ::windows::gamelist::Refresh
    updateTitle
  }
  dialogbutton $b.cancel -text $::tr(Cancel) -command {
    focus .
    grab release .glnumDialog
    destroy .glnumDialog
    focus .
  }
  packbuttons right $b.cancel $b.load
  
  set x [ expr {[winfo width .] / 4 + [winfo rootx .] }]
  set y [ expr {[winfo height .] / 4 + [winfo rooty .] }]
  wm geometry $w "+$x+$y"
  
  focus $w.entry
}


# History of viewed games
set hgame_i 0

proc ::game::HistoryRemoveDB {db} {
  set i 0
  while {[info exist ::hgame_game($i)]} {
    if {$::hgame_db($i) == $db} {
      set a $i; set b [expr $i +1]
      while {[info exist ::hgame_game($b)]} {
        set ::hgame_db($a) $::hgame_db($b)
        set ::hgame_game($a) $::hgame_game($b)
        set ::hgame_ply($a) $::hgame_ply($b)
        incr a; incr b
      }
      unset ::hgame_game($a)
      if {$i < $::hgame_i} { incr ::hgame_i -1 }
    } else {
      incr i
    }
  }
}

proc ::game::HistoryDatabaseSwitch {} {
  ::game::HistorySavePos_
  ::game::HistoryAdd_
}

proc ::game::Hprev_btnstate {} {
  if {$::hgame_i > 0} { return "normal" }
  return "disabled"
}

proc ::game::Hnext_btnstate {} {
  set i [expr "$::hgame_i + 1"]
  if {[info exist ::hgame_game($i)]} {return "normal"}
  return "disabled"
}

proc ::game::HistorySavePos_ {} {
  if {[info exist ::hgame_game($::hgame_i)]} {
    set cur_db [sc_base current]
    if {$cur_db != $::hgame_db($::hgame_i)} {
      sc_base switch $::hgame_db($::hgame_i)
      set ::hgame_ply($::hgame_i) [sc_pos location]
      sc_base switch $cur_db
    } else {
      set ::hgame_ply($::hgame_i) [sc_pos location]
    }
  }
}

proc ::game::HistoryAdd_ {} {
  if {[info exist ::hgame_game($::hgame_i)]} {
    if {$::hgame_db($::hgame_i) == [sc_base current] && \
        $::hgame_game($::hgame_i) == [sc_game number]} {
      return
    } else {
      incr ::hgame_i
    }
  }
  set i $::hgame_i
  while {[info exist ::hgame_game($i)]} {
    unset ::hgame_game($i)
    incr i
  }
  set ::hgame_db($::hgame_i) [sc_base current]
  set ::hgame_game($::hgame_i) [sc_game number]
  set ::hgame_ply($::hgame_i) [sc_pos location]
}

# ::game::Load
#
#   Loads a specified game from the active database.
#
proc ::game::Load { selection {ply ""} } {
  ::game::HistorySavePos_
  if {[::game::Load_ $selection $ply]} {
    ::game::HistoryAdd_
    ::notify::GameChanged
  }
}

proc ::game::LoadHistory {dir} {
  set check [expr $::hgame_i + $dir]
  if {$check < 0 || ![info exist ::hgame_game($check)]} {return}

  ::game::HistorySavePos_
  incr ::hgame_i $dir
  sc_base switch $::hgame_db($::hgame_i)
  #If the game is still in memory avoid the ::game::ConfirmDiscard2 call
  if {$::hgame_game($::hgame_i) != [sc_game number]} {
    ::game::Load_ $::hgame_game($::hgame_i) $::hgame_ply($::hgame_i)
  }
  ::notify::GameChanged
}

proc ::game::Load_ { selection {ply ""} } {
  # If an invalid game number, just return:
  if {$selection < 1} { return 0}
  if {$selection > [sc_base numGames]} { return 0}
  set confirm [::game::ConfirmDiscard2]
  if {$confirm == 2} { return 0}
  if {$confirm == 0} {
    sc_game save [sc_game number]
    # ::gameReplace
  }
  setTrialMode 0
  sc_game load $selection
  if {$ply != ""} { sc_move ply $ply }
  return 1
}

# ::game::LoadMenu
#
#   Produces a popup dialog for loading a game or other actions
#   such as merging it into the current game.
#
proc ::game::LoadMenu {w base gnum x y} {
  set m $w.gLoadMenu
  if {! [winfo exists $m]} {
    menu $m
    $m add command -label $::tr(BrowseGame)
    $m add command -label $::tr(LoadGame)
    $m add command -label $::tr(MergeGame)
  }
  $m entryconfigure 0 -command "::gbrowser::new $base $gnum"
  $m entryconfigure 1 -command "sc_base switch $base; ::game::Load $gnum"
  $m entryconfigure 2 -command "mergeGame $base $gnum"
  event generate $w <ButtonRelease-1>
  $m post $x $y
  event generate $m <ButtonPress-1>
}


# ::game::moveEntryNumber
#
#   Entry variable for GotoMoveNumber dialog.
#
set ::game::moveEntryNumber ""
trace variable ::game::moveEntryNumber w {::utils::validate::Regexp {^[0-9]*$}}

# ::game::GotoMoveNumber
#
#    Prompts for the move number to go to in the current game.
#
proc ::game::GotoMoveNumber {} {
  set ::game::moveEntryNumber ""
  set w [toplevel .mnumDialog]
  wm title $w "Scid: [tr GameGotoMove]"
  grab $w
  
  label $w.label -text $::tr(GotoMoveNumber)
  pack $w.label -side top -pady 5 -padx 5
  
  entry $w.entry -background white -width 10 -textvariable ::game::moveEntryNumber
  bind $w.entry <Escape> { .mnumDialog.buttons.cancel invoke }
  bind $w.entry <Return> { .mnumDialog.buttons.load invoke }
  pack $w.entry -side top -pady 5
  
  set b [frame $w.buttons]
  pack $b -side top -fill x
  dialogbutton $b.load -text "OK" -command {
    grab release .mnumDialog
    if {$::game::moveEntryNumber > 0} {
      catch {sc_move ply [expr {($::game::moveEntryNumber - 1) * 2}]}
    }
    focus .
    destroy .mnumDialog
    updateBoard -pgn
  }
  dialogbutton $b.cancel -text $::tr(Cancel) -command {
    focus .
    grab release .mnumDialog
    destroy .mnumDialog
    focus .
  }
  packbuttons right $b.cancel $b.load
  
  set x [ expr {[winfo width .] / 4 + [winfo rootx .] } ]
  set y [ expr {[winfo height .] / 4 + [winfo rooty .] } ]
  wm geometry $w "+$x+$y"
  
  focus $w.entry
}

################################################################################
# merge game gnum in base srcBase in current game in base destBase
# then switch to destbase
# If game number is not provided, take current glNumber
################################################################################
proc ::game::mergeInBase { srcBase destBase { gnum -1 }} {
  if {$gnum == -1} {
    set gnum $::glNumber
  }
  ::file::SwitchToBase $destBase
  mergeGame $srcBase $gnum
}


# FBF: 2012/03/08
# Grouping intercommunication between windows
# When complete this should be moved to a new notify.tcl file
namespace eval ::notify {
  proc GameChanged {} {
    flipBoardForPlayerNames $::myPlayerNames
    updateBoard -pgn
    ::windows::gamelist::Refresh
    updateTitle
  }

  proc PosChanged {} {
    if {![sc_base inUse]  ||  $::trialMode  ||  [sc_base isReadOnly]} {
        .main.tb.save configure -state disabled
    } else {
        .main.tb.save configure -state normal
    }

    if {$::showGameInfo} { updateGameInfo }
    updateAnalysis 1
    updateAnalysis 2
    updateEpdWins
    ::commenteditor::Refresh
    ::tb::results
    updateMenuStates
    moveEntry_Clear
    updateStatusBar
    if {[winfo exists .twinchecker]} { updateTwinChecker }
    ::pgn::Refresh
    if {[winfo exists .bookWin]} { ::book::refresh }
    if {[winfo exists .bookTuningWin]} { ::book::refreshTuning }
    updateNoveltyWin
    ::tree::refresh
  }

}

####################
# Game Browser window

namespace eval ::gbrowser {}

proc ::gbrowser::new {base gnum {ply -1}} {
  if {! [info exists ::gbrowser::size] } { set ::gbrowser::size 65 }
  options.save ::gbrowser::size

  set n 0
  while {[winfo exists .gb$n]} { incr n }
  set w .gb$n
  toplevel $w
  if {$base < 1} { set base [sc_base current] }
  if {$gnum < 1} { set game [sc_game number] }
  set filename [file tail [sc_base filename $base]]
  wm title $w "Scid: $::tr(BrowseGame) ($filename: $gnum)"
  set header [sc_game summary -base $base -game $gnum header]
  set ::gbrowser::boards($n) [sc_game summary -base $base -game $gnum boards]
  set moves [sc_game summary -base $base -game $gnum moves]
  
  pack [frame $w.b] -side bottom -fill x
  ::board::new $w.bd $::gbrowser::size
  $w.bd configure -relief solid -borderwidth 1
  pack $w.bd -side left -padx 4 -pady 4
  
  #pack [frame $w.t] -side right -fill both -expand yes
  #text $w.t.text -foreground black -background white -wrap word \
  #  -width 45 -height 12 -font font_Small -yscrollcommand "$w.t.ybar set" \
  #  -setgrid 1
  #scrollbar $w.t.ybar -command "$w.t.text yview" -takefocus 0
  #pack $w.t.ybar -side right -fill y
  #pack $w.t.text -side left -fill both -expand yes
  autoscrollframe $w.t text $w.t.text \
      -foreground black -background white -wrap word \
      -width 45 -height 12 -font font_Small -setgrid 1
  pack $w.t -side right -fill both -expand yes
  
  set t $w.t.text
  event generate $t <ButtonRelease-1>
  $t tag configure header -foreground darkBlue
  $t tag configure next -foreground yellow -background darkBlue
  $t insert end "$header" header
  $t insert end "\n\n"
  set m 0
  
  foreach i $moves {
    set moveTag m$m
    $t insert end [::trans $i] $moveTag
    $t insert end " "
    $t tag bind $moveTag <ButtonRelease-1> "::gbrowser::update $n $m"
    $t tag bind $moveTag <Any-Enter> \
        "$t tag configure $moveTag -foreground red
    $t configure -cursor hand2"
    $t tag bind $moveTag <Any-Leave> \
        "$t tag configure $moveTag -foreground {}
    $t configure -cursor {}"
    incr m
  }
  bind $w <F1> {helpWindow GameList Browsing}
  bind $w <Escape> "destroy $w"
  bind $w <Home> "::gbrowser::update $n start"
  bind $w <End> "::gbrowser::update $n end"
  bind $w <Left> "::gbrowser::update $n -1"
  bind $w <Right> "::gbrowser::update $n +1"
  bind $w <Up> "::gbrowser::update $n -10"
  bind $w <Down> "::gbrowser::update $n +10"
  bind $w <minus> {set ::gbrowser::size [::board::resize2 %W.bd -1]}
  bind $w <Control-Shift-Left> {set ::gbrowser::size [::board::resize2 %W.bd -1]}
  bind $w <Control-Button-4> {set ::gbrowser::size [::board::resize2 %W.bd -1]}
  bind $w <plus> {set ::gbrowser::size [::board::resize2 %W.bd +1]}
  bind $w <Control-Shift-Right> {set ::gbrowser::size [::board::resize2 %W.bd +1]}
  bind $w <Control-Button-5> {set ::gbrowser::size [::board::resize2 %W.bd +1]}
  bind $w <Button-4> "::gbrowser::update $n -1"
  bind $w <Button-5> "::gbrowser::update $n +1"
  
  button $w.b.start -image tb_start -command "::gbrowser::update $n start"
  button $w.b.back -image tb_prev -command "::gbrowser::update $n -1"
  button $w.b.forward -image tb_next -command "::gbrowser::update $n +1"
  button $w.b.end -image tb_end -command "::gbrowser::update $n end"
  frame $w.b.gap -width 3
  button $w.b.autoplay -image autoplay_off -command "::gbrowser::autoplay $n"
  frame $w.b.gap2 -width 3
  button $w.b.flip -image tb_flip -command "::gbrowser::flip $n"
  
  pack $w.b.start $w.b.back $w.b.forward $w.b.end $w.b.gap \
      $w.b.autoplay $w.b.gap2 $w.b.flip -side left -padx 3 -pady 1
  
  set ::gbrowser::autoplay($n) 0
  
  if {$gnum > 0} {
    button $w.b.load -textvar ::tr(LoadGame) -command "sc_base switch $base; ::game::Load $gnum"
    button $w.b.merge -textvar ::tr(MergeGame) -command "mergeGame $base $gnum"
  }
  button $w.b.close -textvar ::tr(Close) -command "destroy $w"
  pack $w.b.close -side right -padx 1 -pady 1
  if {$gnum > 0} {
    pack $w.b.merge $w.b.load -side right -padx 1 -pady 1
  }
  
  wm resizable $w 1 0
  if {$ply < 0} {
    set ply 0
    if {$gnum > 0} {
      set ply [sc_filter value $base $gnum]
      if {$ply > 0} { incr ply -1 }
    }
  }
  ::gbrowser::update $n $ply
  
  if { [::board::isFlipped .main.board] } {
    ::gbrowser::flip $n
  }
}

proc ::gbrowser::flip {n} {
  ::board::flip .gb$n.bd
}

proc ::gbrowser::update {n ply} {
  set w .gb$n
  if {! [winfo exists $w]} { return }
  set oldply 0
  if {[info exists ::gbrowser::ply($n)]} { set oldply $::gbrowser::ply($n) }
  if {$ply == "forward"} { set ply [expr {$oldply + 1} ] }
  if {$ply == "back"} { set ply [expr {$oldply - 1} ] }
  if {$ply == "start"} { set ply 0 }
  if {$ply == "end"} { set ply 9999 }
  if {[string index $ply 0] == "-"  ||  [string index $ply 0] == "+"} {
    set ply [expr {$oldply + $ply} ]
  }
  if {$ply < 0} { set ply 0 }
  set max [expr {[llength $::gbrowser::boards($n)] - 1} ]
  if {$ply > $max} { set ply $max }
  set ::gbrowser::ply($n) $ply
  ::board::update $w.bd [lindex $::gbrowser::boards($n) $ply] 1
  
  set t $w.t.text
  $t configure -state normal
  set moveRange [$t tag nextrange m$ply 1.0]
  $t tag remove next 1.0 end
  set moveRange [$t tag nextrange m$ply 1.0]
  if {[llength $moveRange] == 2} {
    $t tag add next [lindex $moveRange 0] [lindex $moveRange 1]
    $t see [lindex $moveRange 0]
  }
  $t configure -state disabled
  
  if {$::gbrowser::autoplay($n)} {
    if {$ply >= $max} {
      ::gbrowser::autoplay $n
    } else {
      after cancel "::gbrowser::update $n +1"
      after $::autoplayDelay "::gbrowser::update $n +1"
    }
  }
}

proc ::gbrowser::autoplay {n} {
  if {$::gbrowser::autoplay($n)} {
    set ::gbrowser::autoplay($n) 0
    .gb$n.b.autoplay configure -image autoplay_off
    return
  } else {
    set ::gbrowser::autoplay($n) 1
    .gb$n.b.autoplay configure -image autoplay_on
    ::gbrowser::update $n +1
  }
}
###
### windows.tcl: part of Scid.
### Copyright (C) 1999-2003  Shane Hudson.
###


namespace eval ::windows {
  
  # TODO
}

########################################################################
###  Optional windows: all off initially.

set treeWin 0
set pgnWin 0
set commentWin 0
set filterGraph 0

# recordWinSize:
#   Records window width and height, for saving in options file.
#
proc recordWinSize {win} {
  global winWidth winHeight winX winY winX_docked winY_docked winWidth_docked winHeight_docked
  if {![winfo exists $win]} { return }
  set temp [wm geometry $win]
  
  if { $::docking::USE_DOCKING } {
    set suffix "_docked"
  } else  {
    set suffix ""
  }
  
  set n [scan $temp "%dx%d+%d+%d" width height x y]
  if {$n == 4} {
    set winWidth${suffix}($win) $width
    set winHeight${suffix}($win) $height
    set winX${suffix}($win) $x
    set winY${suffix}($win) $y
  }
}

proc setWinLocation {win} {
  global winX winY winX_docked winY_docked

if { $::docking::USE_DOCKING } {
    set suffix "_docked"
  } else  {
    set suffix ""
  }
  
  if {[info exists winX${suffix}($win)]  &&  [info exists winY${suffix}($win)]  && \
        [set winX${suffix}($win)] >= 0  &&  [set winY${suffix}($win)] >= 0} {
    catch [list wm geometry $win "+[set winX${suffix}($win)]+[set winY${suffix}($win)]"]
  }
}

proc setWinSize {win} {
  global winWidth winHeight winWidth_docked winHeight_docked
  
  if { $::docking::USE_DOCKING } {
    set suffix "_docked"
  } else  {
    set suffix ""
  }
  
  if {[info exists winWidth${suffix}($win)]  &&  [info exists winHeight${suffix}($win)]  &&  \
        [set winWidth${suffix}($win) ] > 0  &&  [set winHeight${suffix}($win) ] > 0 } {
    catch [list wm geometry $win "[set winWidth${suffix}($win) ]x[set winHeight${suffix}($win) ]"]
  }
}


###
### End of file: windows.tcl
###

########################################################################
### Games list window

set ::windows::gamelist::isOpen 0
set glstart 1
set glSelection 0
set glNumber 0

array set ::windows::gamelist::names {
  g Number
  f Filtered
  w White
  W WElo
  b Black
  B BElo
  e Event
  s Site
  n Round
  d Date
  y Year
  E EDate
  r Result
  m Length
  c Country
  o ECO
  O Opening
  F EndMaterial
  D Deleted
  U Flags
  V Vars
  C Comments
  A Annos
  S Start
}

set sortCriteria(real) ""
set sortCriteria(translated) ""

set critList { "GsortDate" "GsortYear" "GsortEvent" "GsortSite" 
               "GsortRound" "GsortWhiteName" "GsortBlackName" "GsortECO" 
			   "GsortResult" "GsortMoveCount" "GsortAverageElo" "GsortCountry" 
			   "GsortDeleted" "GsortEventDate" "GsortWhiteElo" "GsortBlackElo" 
               "GsortComments" "GsortVariations" "GsortNAGs" }
set critShortcuts { "d" "y" "e" "s" 
                    "n" "w" "b" "o" 
                    "r" "m" "R" "c" 
                    "D" "E" "W" "B" 
                    "C" "V" "A" }
array set sortingHandles {
0 -1
1 -1 
2 -1 
3 -1
4 -1
5 -1
6 -1
7 -1
8 -1
9 -1
}


# glistExtra is the window that displays the starting moves of a
# game when the middle mouse button is pressed in the game list window.

toplevel .glistExtra
wm overrideredirect .glistExtra 1
wm withdraw .glistExtra
text .glistExtra.text -font font_Small -background lightYellow \
    -width 40 -height 8 -wrap word -relief solid -borderwidth 1
pack .glistExtra.text -side top

set glistMaxWidth 30

set ::windows::gamelist::findtext ""
set ::windows::gamelist::goto ""
trace variable ::windows::gamelist::goto w {::utils::validate::Regexp {^[0-9]*$}}


proc ::windows::gamelist::FindText {} {
  global glstart sortingHandles
  variable findtext
  busyCursor .glistWin 1
  ::utils::history::AddEntry ::windows::gamelist::findtext $findtext
  set dbNum [sc_base current]
  set temp [sc_filter textfind $glstart $findtext $sortingHandles($dbNum)]
  busyCursor .glistWin 0
  if {$temp < 1} { set temp 1 }
  set glstart $temp
  ::windows::gamelist::Refresh
}

proc ::windows::gamelist::ReOpen {} {
  global glstart glistSize highcolor glSelection helpMessage
  global glistFields glNumber buttoncolor
  set w .glistWin
  
  bind $w <Configure> {}
  bind $w <Destroy> {}
  
  # erase the window
  foreach c [winfo children $w] {
    destroy $c
  }
  
  # Pack buttons frame first:
  pack [ttk::frame $w.b] -side bottom -fill x -expand 1 -ipady 5 ;# -padx 10
  scale $w.scale -from 1 -length 250 -orient horiz -variable glstart -showvalue 0 -command ::windows::gamelist::SetStart \
      -bigincrement $glistSize -takefocus 0 -width 10 -troughcolor $buttoncolor
  pack $w.scale -side bottom -fill x
  frame $w.columns -takefocus 1 -highlightcolor black ;# -highlightthickness 2
  pack $w.columns -side top -expand yes -fill both
  
  # Make each column in the listing:
  foreach i $glistFields {
    set code [lindex $i 0]
    set width [lindex $i 1]
    set justify [lindex $i 2]
    set fgcolor [lindex $i 3]
    set sep [lindex $i 4]
    frame $w.columns.c$code
    
    if {[info exists ::windows::gamelist::names($code)]} {
      set name $::windows::gamelist::names($code)
    }
    if {[info exists ::tr(Glist$name)]} { set name $::tr(Glist$name) }
    
    # Each heading is a label:
    ttk::label $w.columns.c$code.header -foreground darkBlue -width $width -font font_Small -relief flat -background gray90 \
        -text $name -anchor w
    ::utils::tooltip::Set $w.columns.c$code.header $name
    set helpMessage(E,$w.columns.c$code.header) {Press the left or right mouse button here for a configuration menu}
    
    bind $w.columns.c$code.header <Control-ButtonPress-$::MB3> "incrGLwidth $code; break"
    bind $w.columns.c$code.header <Control-ButtonPress-1> "decrGLwidth $code; break"
    bind $w.columns.c$code.header <Shift-ButtonPress-$::MB3> "incrGLwidth $code; break"
    bind $w.columns.c$code.header <Shift-ButtonPress-1> "decrGLwidth $code; break"
    bind $w.columns.c$code.header <ButtonPress-1> "popupGLconfig $code %x %y %X %Y"
    bind $w.columns.c$code.header <ButtonPress-$::MB3> "popupGLconfig $code %x %y %X %Y"
    
    pack $w.columns.c$code -side left -expand yes -fill both -padx 0
    
    pack $w.columns.c$code.header -side top -fill x -padx 2
    addHorizontalRule $w.columns.c$code 1 flat
    # -height $glistSize
    text $w.columns.c$code.text -background white -width $width -height 50 -font font_Small -relief flat -foreground $fgcolor -wrap none -setgrid 1 -cursor top_left_arrow
    $w.columns.c$code.text tag configure align -justify $justify -foreground $fgcolor
    $w.columns.c$code.text tag configure highlight -background lightBlue
    $w.columns.c$code.text tag configure current -background lightYellow2
    $w.columns.c$code.text tag configure underline -underline true
    
    bind $w.columns.c$code.text <Button1-Motion> "break"
    bind $w.columns.c$code.text <Button2-Motion> "break"
    bind $w.columns.c$code.text <Double-Button-1> "::windows::gamelist::SetSelection $code %x %y; ::game::Load \$glNumber; break"
    bind $w.columns.c$code.text <Button-1> "::windows::gamelist::SetSelection $code %x %y; ::windows::gamelist::Highlight \$glSelection; break"
    bind $w.columns.c$code.text <ButtonRelease-1> "::windows::gamelist::SetSelection $code %x %y; ::windows::gamelist::Dehighlight; break"
    
    bind $w.columns.c$code.text <ButtonPress-$::MB3> "popupGLmenu $code %x %y %X %Y"
    
    bind $w.columns.c$code.text <ButtonPress-$::MB2> "::windows::gamelist::SetSelection $code %x %y; ::windows::gamelist::ShowMoves %X %Y; break"
    bind $w.columns.c$code.text <ButtonRelease-$::MB2> "wm withdraw .glistExtra; ::windows::gamelist::Dehighlight; break"
    
    pack $w.columns.c$code.text -side top -expand true -fill both
    if {$sep} { addVerticalRule $w.columns 1 flat }
  }
  
  menu $w.config -tearoff 0
  $w.config add cascade -label $::tr(GlistMoveField) -menu $w.config.move
  menu $w.config.move -tearoff 0
  $w.config add command -label $::tr(GlistEditField...)
  $w.config add cascade -label $::tr(GlistAddField) -menu $w.config.insert
  menu $w.config.insert -tearoff 0
  $w.config add command -label $::tr(GlistDeleteField)
  
  menu $w.popup -tearoff 0
  $w.popup add command -label $::tr(BrowseGame) -command {::gbrowser::new 0 $glNumber}
  $w.popup add command -label $::tr(LoadGame) -command {::game::Load $glNumber}
  $w.popup add command -label $::tr(MergeGame) -command mergeGame
  menu $w.popup.merge
  for {set i 1} {$i <= [sc_base count total]} {incr i} {
    if { $i == [sc_base current] || [sc_base isReadOnly] } { continue }
    if {[sc_base inUse $i]} {
      set fname [file tail [sc_base filename $i]]
      $w.popup.merge add command -label "$i $fname" -command "::game::mergeInBase [sc_base current] $i"
    }
  }
  $w.popup add cascade -label $::tr(GlistMergeGameInBase) -menu $w.popup.merge
  $w.popup add separator
  $w.popup add command -label $::tr(GlistRemoveThisGameFromFilter) -command removeFromFilter
  $w.popup add command -label $::tr(GlistRemoveGameAndAboveFromFilter) -command {removeFromFilter up}
  $w.popup add command -label $::tr(GlistRemoveGameAndBelowFromFilter) -command {removeFromFilter down}
  #when changing here the menu entry then change index numbers in proc popupGLmenu also
  $w.popup add separator
  $w.popup add command -label $::tr(GlistDeleteGame) -command {::windows::gamelist::ToggleFlag delete}
  $w.popup add command -label $::tr(GlistDeleteAllGames) -command {catch {sc_game flag delete filter 1}; ::windows::gamelist::Refresh}
  $w.popup add command -label $::tr(GlistUndeleteAllGames) -command {catch {sc_game flag delete filter 0}; ::windows::gamelist::Refresh}
  
  ttk::button $w.b.start -image tb_start -style Pad0.Small.TButton -command {set glstart 1; ::windows::gamelist::Refresh}
  set helpMessage(E,$w.b.start) {Go to the first page of games}
  
  ttk::button $w.b.pgup -image tb_prev -style Pad0.Small.TButton -command {
    set glstart [expr {$glstart - $glistSize}];
    if {$glstart < 1} { set glstart 1 };
    ::windows::gamelist::Refresh
  }
  set helpMessage(E,$w.b.pgup) {Previous page of games}
  
  ttk::button $w.b.pgdn -image tb_next  -style Pad0.Small.TButton -command {
    set glstart [expr {$glstart + $glistSize}];
    if {$glstart > [sc_filter count] } {
      set glstart [sc_filter count]
    }
    if {$glstart < 1} { set glstart 1 }
    ::windows::gamelist::Refresh
  }
  set helpMessage(E,$w.b.pgdn) {Next page of games}
  
  ttk::button $w.b.end -image tb_end  -style Pad0.Small.TButton -command {
    set glstart [expr {[sc_filter count] - $glistSize + 1}]
    if {$glstart < 1} { set glstart 1}
    ::windows::gamelist::Refresh
  }
  set helpMessage(E,$w.b.end) {Go to the last page of games}
  
  ttk::button $w.b.current -textvar ::tr(Current) -style Pad0.Small.TButton -command {
    set dbNum [sc_base current]
    set glstart [sc_filter locate [sc_game number] $sortingHandles($dbNum)]
    if {$glstart < 1} { set glstart 1}
    ::windows::gamelist::Refresh
  }
  
  bind $w <Up> {
    set glstart [expr {$glstart - 1}]
    if {$glstart < 1} { set glstart 1 }
    ::windows::gamelist::Refresh
  }
  bind $w <Down> {
    set glstart [expr {$glstart + 1}]
    if {$glstart > [sc_filter count] } {
      set glstart [sc_filter count]
    }
    ::windows::gamelist::Refresh
  }
  
  bind $w <Home>  "$w.b.start invoke"
  bind $w <End>   "$w.b.end invoke"
  bind $w <Prior> "$w.b.pgup invoke"
  bind $w <Next>  "$w.b.pgdn invoke"
  
  ttk::label $w.b.gotolabel -textvar ::tr(GlistGameNumber:)
  ttk::entry $w.b.goto -width 8 -textvariable ::windows::gamelist::goto ;# -bg white
  bind $w.b.goto <Home> "$w.b.start invoke; break"
  bind $w.b.goto <End> "$w.b.end invoke; break"
  bind $w.b.goto <Return> {
    set dbNum [sc_base current]
    set glstart [sc_filter locate $::windows::gamelist::goto $sortingHandles($dbNum)]
    if {$glstart < 1} { set glstart 1}
    set ::windows::gamelist::goto ""
    ::windows::gamelist::Refresh
  }
  
  ttk::label $w.b.findlabel -textvar ::tr(GlistFindText:)
  ttk::combobox $w.b.find -width 15 -textvariable ::windows::gamelist::findtext
  ::utils::history::SetCombobox ::windows::gamelist::findtext $w.b.find
  bind $w.b.find <Return> ::windows::gamelist::FindText
  bind $w.b.find <Home> "$w.b.find icursor 0; break"
  bind $w.b.find <End> "$w.b.find icursor end; break"
  
  ttk::frame $w.b.space -width 0.25c
  ttk::frame $w.b.space2 -width 0.25c
  
  ttk::button $w.b.sortbutton -textvar ::tr(GsortSort) -style Pad0.Small.TButton -command { makeSortWin }
  ttk::button $w.b.export -textvar ::tr(Save...) -style Pad0.Small.TButton -command openExportGList
  ttk::button $w.b.help -textvar ::tr(Help) -style Pad0.Small.TButton -command { helpWindow GameList }
  ttk::button $w.b.close -textvar ::tr(Close) -style Pad0.Small.TButton -command { focus .; destroy .glistWin }
  
  pack $w.b.start $w.b.pgup $w.b.pgdn $w.b.end $w.b.current -side left -padx 1
  pack $w.b.space $w.b.gotolabel $w.b.goto -side left
  pack $w.b.space2 $w.b.findlabel $w.b.find -side left
  pack $w.b.close $w.b.help $w.b.export $w.b.sortbutton -side right -padx 5
  
  set ::windows::gamelist::isOpen 1
  bind $w <F1> { helpWindow GameList }
  bind $w <Destroy> { set ::windows::gamelist::isOpen 0 }
  bind $w <Escape> "$w.b.close invoke"
  standardShortcuts $w
  ::createToplevelFinalize $w
  
  # MouseWheel bindings:
  if { $::macOS } {
    bind $w <MouseWheel> {::windows::gamelist::Scroll [expr {- (%D)}]}
  } else {
    bind $w <MouseWheel> {::windows::gamelist::Scroll [expr {- (%D / 120)}]}
  }
  if {! $::windowsOS} {
    bind $w <Button-4> {::windows::gamelist::Scroll -1}
    bind $w <Button-5> {::windows::gamelist::Scroll 1}
  }
  
  update idletasks
  bind $w <Configure> { ::docking::handleConfigureEvent ::windows::gamelist::Resize }
  wm iconname $w "Scid: [tr WindowsGList]"
  ::windows::gamelist::Refresh
  focus $w.b.goto
  setWinLocation $w
  setWinSize $w
}

# Binding to reset glistSize when the window is resized:
# The way this is done is very ugly, but the only way I could
# find that actually works.
# Set temp to window geometry (e.g. 80x20+...) and then
# extract the part between the "x" and the first "+" or "-":
proc ::windows::gamelist::Resize {} {
  global glistSize glistFields
  set w .glistWin
  bind $w <Configure> {}
  
  recordWinSize .glistWin
  set temp [wm geometry .glistWin]
  set temp [string range $temp [expr {[string first "x" $temp] + 1}] end]
  set idx [string first "+" $temp]
  if {$idx != -1} {
    set temp [string range $temp 0 [expr {$idx - 1}]]
  }
  set idx [string first "-" $temp]
  if {$idx != -1} {
    set temp [string range $temp 0 [expr {$idx - 1}]]
  }
  
  # setgrid option does not work in docked mode, so the last line may be partially visible
  if { $::docking::USE_DOCKING } {
    catch { incr temp -1 }
  }
  
  if {$temp != $glistSize && $temp > 0} {
    set glistSize $temp
    set t $w.columns.cg.text
    if { $::docking::USE_DOCKING } {
      # foreach i $glistFields {
      # set code [lindex $i 0]
      # .glistWin.columns.c$code.text configure -height $glistSize
      # }
    }
    ::windows::gamelist::Refresh
  }
  update idletasks
  bind $w <Configure> { ::docking::handleConfigureEvent ::windows::gamelist::Resize }
}

proc ::windows::gamelist::Open {} {
  global glstart glistSize highcolor glSelection helpMessage
  global glistFields glNumber buttoncolor
  if {[winfo exists .glistWin]} {
    focus .
    destroy .glistWin
    set ::windows::gamelist::isOpen 0
    return
  }
  set w .glistWin
  
  ::createToplevel $w
  
  # Window is only directly resizable vertically:
  wm resizable $w false true
  
  ::windows::gamelist::ReOpen
}

proc ::windows::gamelist::Scroll {nlines} {
  global glstart
  set glstart [expr {$glstart + $nlines}]
  if {$glstart > [sc_filter count] } {
    set glstart [sc_filter count]
  }
  if {$glstart < 1} { set glstart 1 }
  ::windows::gamelist::Refresh
}

proc ::windows::gamelist::SetSelection {code xcoord ycoord} {
  global glSelection glNumber
  set glSelection [expr {int([.glistWin.columns.c$code.text index @$xcoord,$ycoord])}]
  set glNumber [.glistWin.columns.cg.text get $glSelection.0 $glSelection.end]
}

proc incrGLwidth {code} {
  global glistSize glistMaxWidth
  set w .glistWin.columns.c$code
  set width [$w.header cget -width]
  if {$width >= $glistMaxWidth} { return }
  incr width
  $w.header configure -width $width
  $w.text configure -width $width
  updateGLwidths $code $width
}

proc decrGLwidth {code} {
  global glistSize
  set w .glistWin.columns.c$code
  set width [$w.header cget -width]
  if {$width <= 1} { return }
  incr width -1
  $w.header configure -width $width
  $w.text configure -width $width
  updateGLwidths $code $width
}

proc updateGLwidths {code width} {
  global glistFields
  set len [llength $glistFields]
  for {set i 0} {$i < $len} {incr i} {
    set column [lindex $glistFields $i]
    set tcode [lindex $column 0]
    if {$tcode != $code} { continue }
    set oldwidth [lindex $column 1]
    if {$oldwidth != $width} {
      set column [lreplace $column 1 1 $width]
      set glistFields [lreplace $glistFields $i $i $column]
    }
  }
}

proc ::windows::gamelist::Dehighlight {} {
  global glistFields glistSize
  foreach column $glistFields {
    set code [lindex $column 0]
    .glistWin.columns.c$code.text tag remove highlight 1.0 end
  }
}

proc ::windows::gamelist::Highlight {linenum} {
  global glistFields glistSize
  foreach column $glistFields {
    set code [lindex $column 0]
    .glistWin.columns.c$code.text tag remove highlight 1.0 end
    .glistWin.columns.c$code.text tag add highlight $linenum.0 [expr {$linenum+1}].0
  }
}

proc popupGLconfig {code xcoord ycoord xscreen yscreen} {
  global glistFields glistAllFields
  set menu .glistWin.config
  
  # Move-field submenu:
  $menu.move delete 0 end
  $menu.move add command -label "|<<" -command "moveGLfield $code -99"
  $menu.move add command -label "<" -command "moveGLfield $code -1"
  $menu.move add command -label ">" -command "moveGLfield $code 1"
  $menu.move add command -label ">>|" -command "moveGLfield $code 99"
  
  # Configure-field command:
  $menu entryconfig 1 -command "configGLdialog $code"
  
  # Insert-field submenu:
  array set displayed {}
  foreach column $glistAllFields {
    set field [lindex $column 0]
    set displayed($field) 0
  }
  foreach column $glistFields {
    set tcode [lindex $column 0]
    set displayed($tcode) 1
  }
  $menu.insert delete 0 end
  foreach column $glistAllFields {
    set tcode [lindex $column 0]
    if {! $displayed($tcode)} {
      set name $::windows::gamelist::names($tcode)
      $menu.insert add command -label $::tr(Glist$name) \
          -command "insertGLfield $code $tcode"
    }
  }
  
  # Delete-field command:
  if {$code == "g"} {
    $menu entryconfig 3 -state disabled
  } else {
    $menu entryconfig 3 -state normal -command "deleteGLfield $code"
  }
  # event generate .glistWin <ButtonRelease-$::MB3>
  $menu post $xscreen [expr {$yscreen + 2}]
  event generate $menu <ButtonPress-1>
}

array set glconfig {}

proc configGLdialog {code} {
  global glistFields glconfig
  foreach column $glistFields {
    if {$code == [lindex $column 0]} {
      set glconfig(width) [lindex $column 1]
      set glconfig(align) [lindex $column 2]
      set glconfig(color) [lindex $column 3]
      set glconfig(sep) [lindex $column 4]
    }
  }
  set w .glconfig
  if {[winfo exists $w]} { return }
  toplevel $w
  wm title $w "Scid"
  label $w.title -text "$::windows::gamelist::names($code)" -font font_Bold
  pack $w.title -side top
  pack [frame $w.g] -side top -fill x
  label $w.g.width -text $::tr(GlistWidth)
  set m [tk_optionMenu $w.g.vwidth glconfig(width) 1 2 3 4 5 6 7 8 9 10 \
      11 12 13 14 15 16 17 18 19 20]
  $w.g.vwidth configure -width 3
  $m entryconfigure 10 -columnbreak 1
  label $w.g.align -text $::tr(GlistAlign)
  frame $w.g.valign
  radiobutton $w.g.valign.left -text "<<" -indicatoron 0 \
      -variable glconfig(align) -value left
  radiobutton $w.g.valign.right -text ">>" -indicatoron 0 \
      -variable glconfig(align) -value right
  pack $w.g.valign.left $w.g.valign.right -side left -padx 1
  label $w.g.color -text $::tr(GlistColor)
  frame $w.g.vcolor
  foreach color {black darkBlue blue darkGreen darkRed red2 gray50} {
    image create photo color_$color -width 14 -height 16
    color_$color put $color -to 1 1 12 14
    radiobutton $w.g.vcolor.$color -image color_$color -indicatoron 0 \
        -variable glconfig(color) -value $color
    pack $w.g.vcolor.$color -side left -padx 1
  }
  label $w.g.sep -text $::tr(GlistSep)
  frame $w.g.vsep
  radiobutton $w.g.vsep.yes -text $::tr(Yes) -indicatoron 0 \
      -variable glconfig(sep) -value 1
  radiobutton $w.g.vsep.no -text $::tr(No) -indicatoron 0 \
      -variable glconfig(sep) -value 0
  pack $w.g.vsep.yes $w.g.vsep.no -side left -padx 1
  
  set row 0
  foreach t {width align color sep} {
    grid $w.g.$t -row $row -column 0 -sticky w
    grid $w.g.v$t -row $row -column 1 -sticky e
    incr row
  }
  
  addHorizontalRule $w
  pack [frame $w.b] -side top -fill x
  button $w.b.ok -text "OK" \
      -command "catch {grab release $w}; destroy $w; configGLfield $code"
  button $w.b.cancel -text $::tr(Cancel) \
      -command "catch {grab release $w}; destroy $w"
  pack $w.b.cancel $w.b.ok -side right -padx 2 -pady 2
  wm resizable $w 0 0
  ::utils::win::Centre $w
  catch {grab $w}
}

proc configGLfield {code} {
  global glistFields glconfig
  set newcolumn [list $code $glconfig(width) $glconfig(align) \
      $glconfig(color) $glconfig(sep)]
  set len [llength $glistFields]
  for {set i 0} {$i < $len} {incr i} {
    set column [lindex $glistFields $i]
    set tcode [lindex $column 0]
    if {$tcode == $code} {
      set glistFields [lreplace $glistFields $i $i $newcolumn]
      break
    }
  }
  # destroy .glistWin
  ::windows::gamelist::ReOpen
}

proc moveGLfield {code delta} {
  global glistFields
  set len [llength $glistFields]
  for {set i 0} {$i < $len} {incr i} {
    set column [lindex $glistFields $i]
    set tcode [lindex $column 0]
    if {$tcode == $code} {
      set glistFields [lreplace $glistFields $i $i]
      set insert [expr {$i + $delta}]
      set glistFields [linsert $glistFields $insert $column]
      break
    }
  }
  # destroy .glistWin
  ::windows::gamelist::ReOpen
}

proc insertGLfield {code newcode} {
  global glistFields glistAllFields
  set len [llength $glistFields]
  set newcolumn ""
  foreach column $glistAllFields {
    set tcode [lindex $column 0]
    if {$tcode == $newcode} { set newcolumn $column }
  }
  if {$newcolumn == ""} { return }
  
  for {set i 0} {$i < $len} {incr i} {
    set column [lindex $glistFields $i]
    set tcode [lindex $column 0]
    if {$tcode == $code} {
      incr i
      set glistFields [linsert $glistFields $i $newcolumn]
      break
    }
  }
  # destroy .glistWin
  ::windows::gamelist::ReOpen
}

proc deleteGLfield {code} {
  global glistFields
  set len [llength $glistFields]
  for {set i 0} {$i < $len} {incr i} {
    set column [lindex $glistFields $i]
    set tcode [lindex $column 0]
    if {$tcode != $code} { continue }
    set glistFields [lreplace $glistFields $i $i]
  }
  # destroy .glistWin
  ::windows::gamelist::ReOpen
}

proc popupGLmenu {code xcoord ycoord xscreen yscreen} {
  global glSelection glNumber
  ::windows::gamelist::SetSelection $code $xcoord $ycoord
  if {$glNumber < 1} {return}
  ::windows::gamelist::Highlight $glSelection
  #Enable/disable last 3 Popupmenupoint: Delete/Undelete (all) Games
  if {[sc_base isReadOnly]} {
    .glistWin.popup entryconfig 9 -state disabled
    .glistWin.popup entryconfig 10 -state disabled
    .glistWin.popup entryconfig 11 -state disabled
  } else {
    .glistWin.popup entryconfig 9 -state normal
    .glistWin.popup entryconfig 10 -state normal
    .glistWin.popup entryconfig 11 -state normal
  }
  # update the list of opened base for game merging
  set m .glistWin.popup.merge
  $m delete 0 end
  for {set i 1} {$i <= [sc_base count total]} {incr i} {
    if { $i == [sc_base current] } { continue }
    if {[sc_base inUse $i]} {
      set fname [file tail [sc_base filename $i]]
      $m add command -label "$i $fname" -command "::game::mergeInBase [sc_base current] $i"
    }
  }
  
  .glistWin.popup post $xscreen [expr {$yscreen + 2}]
  event generate .glistWin.popup <ButtonPress-1>
}

proc ::windows::gamelist::SetStart { start } {
  global glstart
  set glstart $start
  ::windows::gamelist::Refresh
}

proc ::windows::gamelist::ToggleFlag {flag} {
  global glNumber
  # If an invalid game number, just return:
  if {$glNumber < 1} { return }
  if {$glNumber > [sc_base numGames]} { return }
  catch {sc_game flag $flag $glNumber invert}
  ::windows::gamelist::Refresh
}

proc removeFromFilter {{dir none}} {
  global glNumber glstart sortingHandles
  if {$glNumber < 1} { return }
  if {$glNumber > [sc_base numGames]} { return }
  set db [ sc_base current]
  if {$dir == "none"} {
    sc_filter remove 0 $glNumber 
  } elseif {$dir == "up"} {
    sc_filter remove 1 $glNumber $sortingHandles($db)
    set glstart 1
  } else {
    sc_filter remove 2 $glNumber $sortingHandles($db)
  }
  ::windows::stats::Refresh
  ::windows::gamelist::Refresh
}

proc ::windows::gamelist::ShowMoves {xcoord ycoord} {
  global glistSelectPly glNumber glSelection
  # If an invalid game number, just return:
  if {$glNumber < 1} { return }
  if {$glNumber > [sc_base numGames]} { return }
  
  ::windows::gamelist::Highlight $glSelection
  .glistExtra.text delete 1.0 end
  .glistExtra.text insert end [sc_game firstMoves $glNumber $glistSelectPly]
  wm geometry .glistExtra +$xcoord+$ycoord
  wm deiconify .glistExtra
  raiseWin .glistExtra
}

proc ::windows::gamelist::Refresh {} {
  global glistSize glstart
  global glistFields sortingHandles
  updateStatusBar
  if {![winfo exists .glistWin]} { return }
  set totalSize [sc_filter count]
  set dbNum [sc_base current]
  set linenum [sc_sort list $dbNum $glstart $glistSize -current $sortingHandles($dbNum)]
  foreach column $glistFields {
    set code [lindex $column 0]
    set cformat $code
    append cformat "*\n"
    .glistWin.columns.c$code.text config -state normal
    .glistWin.columns.c$code.text delete 1.0 end
    .glistWin.columns.c$code.text insert end [sc_sort list $dbNum $glstart $glistSize $cformat $sortingHandles($dbNum)] align
    if {$linenum > 0} {
      .glistWin.columns.c$code.text tag add current $linenum.0 [expr {$linenum+1}].0
    }
    .glistWin.columns.c$code.text config -state disabled
  }

  
  # Now update the window title:
  set str "Scid [tr WindowsGList]: "
  if {$totalSize > 0} {
    set right [expr {$totalSize + 1 - $glistSize}]
    if {$right < 1} { set right 1 }
    .glistWin.scale configure -to $right
    set glend [expr {$glstart + $glistSize - 1}]
    if {$glend > $totalSize} { set glend $totalSize}
    append str [::utils::thousands $glstart] " .. " \
        [::utils::thousands $glend] " / " [::utils::thousands $totalSize] " " $::tr(games)
  } else {
    append str $::tr(noGames)
    .glistWin.scale configure -to 1
  }
  ::setTitle .glistWin $str
  configureSortWin
}

trace variable glexport w updateExportGList

proc openExportGList {} {
  global glexport
  set w .glexport
  
  if {[sc_filter count] < 1} {
    tk_messageBox -type ok -icon info -title "Scid" \
        -message "This are no games in the current filter."
    return
  }
  
  if {[winfo exists $w]} {
    raiseWin $w
    updateExportGList
    return
  }
  toplevel $w
  wm title $w "Scid: Save Game List"
  
  label $w.lfmt -text "Format:" -font font_Bold
  pack $w.lfmt -side top
  entry $w.fmt -textvar glexport -bg white -fg black -font font_Fixed
  pack $w.fmt -side top -fill x
  text $w.tfmt -width 1 -height 5 -font font_Fixed -fg black -wrap none -relief flat
  pack $w.tfmt -side top -fill x
  $w.tfmt insert end "w: White            b: Black            "
  $w.tfmt insert end "W: White Elo        B: Black Elo        \n"
  $w.tfmt insert end "m: Moves count      r: Result           "
  $w.tfmt insert end "y: Year             d: Date             \n"
  $w.tfmt insert end "e: Event            s: Site             "
  $w.tfmt insert end "n: Round            o: ECO code         \n"
  $w.tfmt insert end "g: Game number      f: Filtered number  "
  $w.tfmt insert end "F: Final material   S: Non-std start pos\n"
  $w.tfmt insert end "D: Deleted flag     U: User flags       "
  $w.tfmt insert end "C: Comments flag    V: Variations flag  \n"
  $w.tfmt configure -cursor top_left_arrow -state disabled
  addHorizontalRule $w
  label $w.lpreview -text $::tr(Preview:) -font font_Bold
  pack $w.lpreview -side top
  text $w.preview -width 80 -height 5 -font font_Fixed -bg gray95 -fg black \
      -wrap none -setgrid 1 -xscrollcommand "$w.xbar set"
  scrollbar $w.xbar -orient horizontal -command "$w.preview xview"
  pack $w.preview -side top -fill x
  pack $w.xbar -side top -fill x
  addHorizontalRule $w
  pack [frame $w.b] -side bottom -fill x
  button $w.b.default -text "Default" -command {set glexport $glexportDefault}
  button $w.b.ok -text "OK" -command saveExportGList
  button $w.b.close -textvar ::tr(Cancel) -command "focus .; grab release $w; destroy $w"
  pack $w.b.close $w.b.ok -side right -padx 2 -pady 2
  pack $w.b.default -side left -padx 2 -pady 2
  wm resizable $w 1 0
  focus $w.fmt
  updateExportGList
  grab $w
}

proc updateExportGList {args} {
  global glexport sortingHandles
  set w .glexport
  if {! [winfo exists $w]} { return }
  set dbNum [sc_base current]
  set text [sc_sort list $dbNum 1 5 "$glexport\n" $sortingHandles($dbNum)]
  $w.preview configure -state normal
  $w.preview delete 1.0 end
  $w.preview insert end $text
  $w.preview configure -state disabled
}

proc saveExportGList {} {
  global glexport sortingHandles
  set ftypes {{"Text files" {.txt}} {"All files" *}}
  set fname [tk_getSaveFile -filetypes $ftypes -parent .glexport -title "Scid: Save Game List"]
  if {$fname == ""} { return }
  set showProgress 0
  if {[sc_filter count] >= 20000} { set showProgress 1 }
  if {$showProgress} {
    progressWindow "Scid" "Saving game list..." $::tr(Cancel) sc_progressBar
  }
  busyCursor .
  set dbNum [sc_base current]
  set res [catch {sc_sort list $dbNum 1 9999999 "$glexport\n" $sortingHandles($dbNum) $fname} err]
  unbusyCursor .
  if {$showProgress} { closeProgressWindow }
  if {$res} {
    tk_messageBox -type ok -icon warning -title "Scid" -message $err
    return
  }
  focus .
  grab release .glexport
  destroy .glexport
  return
}

proc makeSortWin {} {
  global sortCriteria critList
  set w .glSortWin
  if {[winfo exists $w]} {
    raiseWin $w
    return
  }
  toplevel $w
  wm title $w "Scid: Game List Sort"
  wm resizable $w 0 0
  pack [ttk::frame $w.f]
  
  ttk::label $w.f.torder -textvar ::tr(SortCriteria:) -font font_Bold
  pack $w.f.torder -side top
  ttk::label $w.f.order -textvar sortCriteria(translated) -width 40 -background white -relief solid -anchor w
  pack $w.f.order -side top -fill x -pady 2 -padx 2
  addHorizontalRule $w.f
  ttk::label $w.f.tadd -textvar ::tr(AddCriteria:) -font font_Bold
  pack $w.f.tadd -side top

  addHorizontalRule $w.f

  pack [ttk::frame $w.f.cr] -fill x
  
  set locCritList {}
  foreach cr $critList { lappend locCritList $::tr($cr) } 
  ttk::combobox $w.f.cr.critcombo -width 20 -values $locCritList
  $w.f.cr.critcombo set [lindex $locCritList 0]
  pack $w.f.cr.critcombo -side left

  set locOrderList [::list $::tr(GsortAscending) $::tr(GsortDescending) ]
  ttk::combobox $w.f.cr.ordercombo -width 12 -values $locOrderList
  $w.f.cr.ordercombo set $::tr(GsortAscending)
  pack $w.f.cr.ordercombo -side left

  ttk::button $w.f.cr.add -textvar ::tr(GsortAdd) -command addSortCriteria
  pack $w.f.cr.add -side right
  
  addHorizontalRule $w.f

  pack [ttk::frame $w.f.b1] -fill x
  ttk::button $w.f.b1.clear -textvar ::tr(Clear) -command clearSortCriteria
  ttk::button $w.f.b1.sort -textvar ::tr(Sort) -command sortGameList
  pack $w.f.b1.clear -side left
  pack $w.f.b1.sort -side right

  pack [ttk::frame $w.f.b2] -side bottom -fill x
  ttk::button $w.f.b2.store -textvar ::tr(GsortStore) -command storeSortingCache
  ttk::button $w.f.b2.load -textvar ::tr(GsortLoad) -command loadSortingCache
  ttk::button $w.f.b2.close -textvar ::tr(Close) -command "focus .; destroy $w"
  pack $w.f.b2.store $w.f.b2.load -side left -padx 5 -pady 2
  pack $w.f.b2.close -side right

  bind $w <Escape> "$w.f.b.close invoke"
  configureSortWin
}

proc configureSortWin {} {
  global sortCriteria sortingHandles
  set w .glSortWin
  if {[winfo exists $w]} {
    set db [ sc_base current]
    if {[sc_base inUse $db]} {
      set handle $sortingHandles($db)
      if { $handle == -1 || $db == 9 } { $w.f.b2.store configure -state disabled } else { $w.f.b2.store configure -state normal }
      if { $db == 9 } { $w.f.b2.load configure -state disabled } else {
  	    set canLoad [ sc_sort testload $db ]
	    if { $canLoad } { $w.f.b2.load configure -state normal } else { $w.f.b2.load configure -state disabled }
      }
      if {$sortCriteria(real) == ""} {$w.f.b1.clear configure -state disabled } else { $w.f.b1.clear configure -state normal }
	}
  }
}

proc clearSortCriteria {} {
  set ::sortCriteria(real) ""
  set ::sortCriteria(translated) ""
  configureSortWin
}

proc addSortCriteria {args} {
  global sortCriteria critShortcuts

  set critSelected [.glSortWin.f.cr.critcombo get]
  set orderSelected [.glSortWin.f.cr.ordercombo current]
  set shortCrit [lindex $critShortcuts [.glSortWin.f.cr.critcombo current]]
  set shortOrder "+" 
  if { $orderSelected == 1 } { set shortOrder "-" }

  if {$sortCriteria(real) == ""} {
    set sortCriteria(real) "$shortCrit$shortOrder"
    set sortCriteria(translated) "$critSelected$shortOrder"
  } else {
    append sortCriteria(real) "$shortCrit$shortOrder"
    append sortCriteria(translated) ", $critSelected$shortOrder"
  }
  configureSortWin
}

proc sortGameList {} {
  global sortCriteria sortingHandles
  set db [ sc_base current]
  progressWindow "Scid" [concat "Sorting" "..."]
  busyCursor .
  set handle [ sc_sort sort $db $sortCriteria(real) $sortingHandles($db)]
  unbusyCursor .
  closeProgressWindow
  set sortingHandles($db) $handle 
  ::windows::gamelist::Refresh
  configureSortWin
}

proc storeSortingCache {} {
  global sortingHandles
  set db [ sc_base current]
  sc_sort store $db $sortingHandles($db)
  getSortingCrit
}

proc loadSortingCache {} {
  global sortCriteria sortingHandles
  set db [ sc_base current]
  set sortingHandles($db) [sc_sort load $db $sortingHandles($db)] 
  getSortingCrit
  ::windows::gamelist::Refresh
  configureSortWin
}

proc getSortingCrit {} {
  global sortCriteria sortingHandles critShortcuts critList
    
  set db [ sc_base current]
  set critString [ sc_sort crit $db $sortingHandles($db)]
  set critStringList [split $critString {} ]
  set sortCriteria(real) $critString
  set sortCriteria(translated) ""

  set sep ""
  foreach c $critStringList {
	set found 0
	set p 0
	foreach l $critShortcuts {
	if { $l == $c } {
      set idx [lindex $critList $p]
      append sortCriteria(translated) $sep $::tr($idx) 
      set sep ","
      set found 1
    }
    incr p 
    }
    if { $found == 0 } {
      append sortCriteria(translated) $c
    }
  }
}



##########################################################################
# June 2011: A new reusable and simplified gamelist widget
#

# glist.create
#   Create a gamelist widget
#   w: parent window of the gamelist widget
#   layout: a string name that will be assigned to columns layout.
#           layout will be saved and restored in successive glist.create calls.
proc glist.create {{w} {layout}} {
  # Default values
  if {! [info exists ::glist_ColOrder($layout)] } {
    set ::glist_ColOrder($layout) {{7} {1} {2} {3} {4} {5} {6} {23} {22} {8} {9} {10} {11} {12} {13} {14} {15} {16} {0}}
  }
  if {! [info exists ::glist_ColWidth($layout)] } {
    set ::glist_ColWidth($layout) {{50} {50} {50} {120} {40} {120} {40} {80} {200} {30} \
        {200} {30} {20} {20} {20} {20} {35} {50} {30} {100} {40} {40} {50} {140}}
  }
  if {! [info exists ::glist_ColAnchor($layout)] } {
    set ::glist_ColAnchor($layout) {{e} {c} {c} {w} {c} {w} {c} {w} {w} {e} \
        {w} {c} {c} {c} {c} {c} {c} {c} {c} {c} {c} {c} {c} {w}}
  }
  if {! [info exists ::glist_Sort($layout)] } {
    set ::glist_Sort($layout) { {22} {-} {7} {-} }
  }
  if {! [info exists ::glist_FindBar($layout)] } {
    set ::glist_FindBar($layout) 1
  }

  ttk::treeview $w.glist -columns $::glist_Headers -show headings -selectmode browse
  $w.glist tag configure current -background lightBlue
  $w.glist tag configure fsmall -font font_Small
  menu $w.glist.header_menu
  menu $w.glist.header_menu.addcol
  menu $w.glist.game_menu
  bind $w.glist <Configure> "set ::glistResized($w.glist) 1"
  bind $w.glist <2> "glist.popupmenu_ %W %x %y %X %Y $layout"
  bind $w.glist <3> "glist.popupmenu_ %W %x %y %X %Y $layout"
  bind $w.glist <ButtonRelease-1> "glist.release_ %W %x %y $layout"
  bind $w.glist <Double-ButtonRelease-1> "glist.doubleclick_ %W %x %y $layout"
  bind $w.glist <Destroy> "glist.destroy_ $w.glist"

  set i 0
  foreach col $::glist_Headers {
    $w.glist heading $col -text $::tr($col)
    $w.glist column $col -stretch 0 \
             -width [lindex $::glist_ColWidth($layout) $i]\
             -anchor [lindex $::glist_ColAnchor($layout) $i]
    incr i
  }
  $w.glist configure -displaycolumns $::glist_ColOrder($layout)

  autoscrollframe -bars both $w "" $w.glist
  set ::glistYScroll($w.glist) [$w.glist cget -yscrollcommand]
  $w.glist configure -yscrollcommand "glist.yscroll_ $w.glist"
  $w.ybar configure -command "glist.ybar_ $w.glist"
  bind $w.ybar <ButtonRelease-1> "+glist.ybar_ $w.glist buttonrelease"
  ttk_bindMouseWheel $w.glist "glist.ybar_ $w.glist"

  # Find widget
  ttk::frame $w.find
  ttk::button $w.find.hide -image tb_close
  bind $w.find.hide <ButtonPress-1> "set ::glist_FindBar($layout) 0; grid forget $w.find"
  ttk::frame $w.find.n
  ttk::label $w.find.t_gnum -text $::tr(GlistGameNumber:)
  entry $w.find.gnum -width 8 -bg white
  ttk::button $w.find.b_gnum -image tb_next -command "glist.findgame_ $w"
  bind $w.find.gnum <Return> "$w.find.b_gnum invoke"
  grid $w.find.t_gnum $w.find.gnum $w.find.b_gnum -in $w.find.n -padx 2
  ttk::frame $w.find.t
  ttk::label $w.find.t_text -text $::tr(GlistFindText:)
  entry $w.find.text -width 20 -bg white
  ttk::button $w.find.b1_text -image tb_next -command "glist.findgame_ $w 1"
  bind $w.find.text <Return> "$w.find.b1_text invoke"
  ttk::button $w.find.b2_text -image tb_prev -command "glist.findgame_ $w 0"
  grid $w.find.t_text $w.find.text $w.find.b2_text $w.find.b1_text -in $w.find.t -padx 2
  grid $w.find.hide
  grid $w.find.n -row 0 -column 1 -padx 10
  grid $w.find.t -row 0 -column 2
  set ::glistFindBar($w.glist) $w.find
  glist.showfindbar_ $w.glist $layout

  # On exit save layout in options.dat
  options.save ::glist_ColOrder($layout)
  options.save ::glist_ColWidth($layout)
  options.save ::glist_ColAnchor($layout)
  options.save ::glist_Sort($layout)
  options.save ::glist_FindBar($layout)

  set ::glistYDrag($w.glist) 0
  set ::glistLoaded($w.glist) 0.0
  set ::glistTotal($w.glist) 0.0
  set ::glistVisibleLn($w.glist) 0
  set ::glistResized($w) 0
  glist.sortInit_ $w.glist $layout
}

# glist.update
#   Retrieve values from database and update the widget
#   w: the parent windows of the widget that was passed to glist.create
#   base: the database from which retrieve values
#   filter: returns only values in the specified filter
#         - "all": all the values in the database *** NOT YET IMPLEMENTED ***
#         - "dbfilter": only values that matches the user defined filters
#         - "tree": only games from which are calculated the stats in the tree window
proc glist.update {{w} {base} {filter}} {
  set w $w.glist
  if {! [winfo exists $w]} { return }

  set ::glistFilter($w) $filter
  set ::glistTotal($w) [sc_filter count $base $filter]
  if {$::glistVisibleLn($w) == 0 && $::glistTotal($w) > 0} {
    # Guess glistVisibleLn
    set ::glistVisibleLn($w) 50
    if {$::glistVisibleLn($w) >= $::glistTotal($w)} {
      set ::glistVisibleLn($w) [expr $::glistTotal($w) -1]
    }
  }
  glist.update_ $w $base
}


#private:
set glist_Headers {"GlistNumber" "GlistResult" "GlistLength" "GlistWhite" "GlistWElo"
                   "GlistBlack" "GlistBElo"  "GlistDate" "GlistEvent" "GlistRound"
                   "GlistSite" "GlistAnnos" "GlistComments" "GlistVars" "GlistDeleted"
                   "GlistFlags" "GlistECO" "GlistEndMaterial" "GlistStart" "GlistEDate"
                   "GlistYear" "GlistAverageElo" "GlistRating" "GlistMoveField" }

set glist_SortShortcuts { "N" "r" "m" "w" "W"
                    "b" "B" "d" "e" "n"
                    "s" "A" "C" "V" "D"
                    "???" "o" "???" "???" "E"
                    "y" "R" "i" "???" }

proc glist.destroy_ {{w}} {
  if {[info exists ::glistSortCache($w)]} {
    sc_base sortcache $::glistBase($w) release $::glistSortCache($w)
    unset ::glistSortCache($w)
  }
  unset ::glistSortStr($w)
  if {[info exists ::glistBase($w)]} { unset ::glistBase($w) }
  if {[info exists ::glistFilter($w)]} { unset ::glistFilter($w) }
  if {[info exists ::glistFirst($w)]} { unset ::glistFirst($w) }
  unset ::glistVisibleLn($w)
  unset ::glistLoaded($w)
  unset ::glistTotal($w)
  unset ::glistYDrag($w)
  unset ::glistYScroll($w)
  unset ::glistResized($w)
  unset ::glistFindBar($w)
}

proc glist.update_ {{w} {base}} {
  if {! [info exists ::glistBase($w)] } {
    #Create a sortcache to speed up sorting
    sc_base sortcache $base create $::glistSortStr($w)
  } elseif {$::glistBase($w) != $base || $::glistSortCache($w) != $::glistSortStr($w)} {
    #Create a new sortcache
    sc_base sortcache $::glistBase($w) release $::glistSortCache($w)
    sc_base sortcache $base create $::glistSortStr($w)
  }
  set ::glistSortCache($w) $::glistSortStr($w)
  set ::glistBase($w) $base
  set ::glistFirst($w) 0.0
  glist.loadvalues_ $w
  glist.ybarupdate_ $w
}

proc glist.loadvalues_ {w} {
  $w delete [$w children {}]
  set base $::glistBase($w)
  if {$base == [sc_base current]} {
    set current_game [sc_game number]
  } else {
    set current_game -1
  }
  set i 0
  foreach {idx line} [sc_base gameslist $base $::glistFirst($w) [expr 1 + $::glistVisibleLn($w)]\
                                        $::glistFilter($w) $::glistSortStr($w)] {
    $w insert {} end -id $idx -values $line -tag fsmall
    foreach {n ply} [split $idx "_"] {
      if {$n == $current_game} { $w item $idx -tag {fsmall current} }
    }
    incr i
  }
  set ::glistLoaded($w) $i
}

proc glist.showfindbar_ {{w} {layout}} {
  if {$::glist_FindBar($layout) == 0} {
    grid forget $::glistFindBar($w)
  } else {
    grid $::glistFindBar($w) -row 2 -columnspan 2 -sticky news
  }
}

proc glist.findcurrentgame_ {{w} {gnum}} {
  set r [sc_base gamelocation $::glistBase($w) $::glistFilter($w) $::glistSortStr($w) $gnum]
  if {$r != ""} {
    set ::glistFirst($w) [expr $r -1]
    glist.ybar_ $w scroll
  }
}

proc glist.findgame_ {{w_parent} {dir ""}} {
  set w $w_parent.glist
  set w_entryN $w_parent.find.gnum
  set gnum [$w_entryN get]
  set w_entryT $w_parent.find.text
  set txt [$w_entryT get]
  $w_entryN configure -bg white
  $w_entryT configure -bg white
  busyCursor .
  update idletasks

  if {$dir == ""} {
    set r [sc_base gamelocation $::glistBase($w) $::glistFilter($w) $::glistSortStr($w) $gnum]
  } else {
	set gstart [expr int($::glistFirst($w))]
	if {$dir == "1"} { incr gstart }
    set r [sc_base gamelocation $::glistBase($w) $::glistFilter($w) $::glistSortStr($w) 0\
            $txt $gstart $dir]
  }
  if {$r == ""} {
    if {$dir == ""} {
      $w_entryN configure -bg red
    } else {
      $w_entryT configure -bg red
    }
  } else {
    set ::glistFirst($w) [expr $r -1]
    #glist.ybar can change ::glistFirst($w)
    set f [expr $r -1]
    glist.ybar_ $w scroll
    #Select the founded game
	#TODO: If there are more than one result in the last page only the first will be selected
    set f [expr int($f - $::glistFirst($w))]
    set items [$w children {}]
    $w selection set [lindex $items $f]
  }
  unbusyCursor .
}

proc glist.doubleclick_ {{w} {x} {y} {layout}} {
  lassign [$w identify $x $y] what
  if {$what == "heading"} {
    foreach {c dir} $::glist_Sort($layout) { $w heading $c -image "" }
    set ::glist_Sort($layout) {}
    glist.sortClickHandle_ $w $x $y $layout
  } else {
    foreach {idx ply} [split [$w selection] "_"] {}
    if {[info exist idx]} {
      sc_base switch $::glistBase($w)
      ::game::Load $idx $ply
    }
  }
}

proc glist.popupmenu_ {{w} {x} {y} {abs_x} {abs_y} {layout}} {
# identify region requires at least tk 8.5.9
# identify row have scrollbar problems
  if { 0 != [catch {set region [$w identify region $x $y] }] } {
    if {[$w identify row $x $y] == "" } {
      set region "heading"
    } else {
      set region ""
    }
  }
  if { $region != "heading" } {
# if {[$w identify region $x $y] != "heading" }
    event generate $w <ButtonPress-1> -x $x -y $y
    foreach {idx ply} [split [$w selection] "_"] {}
    if {[info exist idx]} {
      $w.game_menu delete 0 end
      #LOAD/BROWSE/MERGE GAME
      $w.game_menu add command -label $::tr(LoadGame) \
         -command "sc_base switch $::glistBase($w); ::game::Load $idx $ply"
      $w.game_menu add command -label $::tr(BrowseGame) \
         -command "::gbrowser::new $::glistBase($w) $idx $ply"
      $w.game_menu add command -label $::tr(MergeGame) \
         -command "mergeGame $::glistBase($w) $idx"

      #GOTO GAME
      $w.game_menu add separator
      #TODO: translate label
      $w.game_menu add checkbutton -variable ::glist_FindBar($layout) \
                   -label "Find Bar" -command "glist.showfindbar_ $w $layout"
      if {$::glistBase($w) == [sc_base current] && [sc_game number] != 0} {
        #TODO: translate label
        $w.game_menu add command -label "Find current game" -command "glist.findcurrentgame_ $w [sc_game number]"
      } else {
        #TODO: translate label
        $w.game_menu add command -label "Find current game" -state disabled
      }
      if {$::glistBase($w) == [sc_base current]} {
        #DELETE
        #TODO: Delete games even for "not current" databases
        #TODO: translate labels
        #TODO: refresh the other windows after delete/undelete
        $w.game_menu add separator
        set deleted [sc_game flag delete $idx]
        if {$deleted} {
          $w.game_menu add command -label "Undelete game" -command "sc_game flag delete $idx 0"
        } else {
          $w.game_menu add command -label "Delete game" -command "sc_game flag delete $idx 1"
        }
      }
      tk_popup $w.game_menu $abs_x $abs_y
    }
  } else {
    set col [$w identify column $x $y]
    set col_idx [lsearch -exact $::glist_Headers [$w column $col -id] ]
    $w.header_menu delete 0 end

    #CHANGE ALIGNMENT
    set cur_a [lindex $::glist_ColAnchor($layout) $col_idx]
    if {$cur_a != "w"} {
      $w.header_menu add command -label $::tr(GlistAlignL) \
                     -command "$w column $col -anchor w; lset ::glist_ColAnchor($layout) $col_idx w"
    }
    if {$cur_a != "e"} {
      $w.header_menu add command -label $::tr(GlistAlignR) \
                     -command "$w column $col -anchor e; lset ::glist_ColAnchor($layout) $col_idx e"
    }
    if {$cur_a != "c"} {
      $w.header_menu add command -label $::tr(GlistAlignC) \
                     -command "$w column $col -anchor c; lset ::glist_ColAnchor($layout) $col_idx c"
    }

    #ADD/REMOVE COLUMN
    $w.header_menu add separator
    $w.header_menu.addcol delete 0 end
    set empty disabled
    set i 0
    foreach h $::glist_Headers {
      if {[lsearch -exact $::glist_ColOrder($layout) $i] == -1} {
        set empty normal
        $w.header_menu.addcol add command -label $::tr($h) -command "glist.insertcol_ $w $layout $i $col"
      }
      incr i
    }
    $w.header_menu add cascade -label $::tr(GlistAddField) -menu $w.header_menu.addcol -state $empty
    $w.header_menu add command -label $::tr(GlistDeleteField) -command "glist.removecol_ $w $layout $col"

    #BARS
    $w.header_menu add separator
    #TODO: translate label
    $w.header_menu add checkbutton -variable ::glist_FindBar($layout) \
                   -label "Find Bar" -command "glist.showfindbar_ $w $layout"

    tk_popup $w.header_menu $abs_x $abs_y
  }
}

# Sorting
proc glist.sortInit_ {w {layout}} {
  set ::glistSortStr($w) ""
  set i 0
  foreach {c dir} $::glist_Sort($layout) {
    set arrow_idx [expr $i *2]
    if {$dir == "-"} { incr arrow_idx }
    $w heading $c -image ::glist_Arrows($arrow_idx)
    append ::glistSortStr($w) [lindex $::glist_SortShortcuts $c] $dir
    incr i
  }
}

proc glist.sortClickHandle_ {{w} {x} {y} {layout}} {
  set col [$w identify column $x $y]
  set col_idx [lsearch -exact $::glist_Headers [$w column $col -id] ]
  if {"???" == [lindex $::glist_SortShortcuts $col_idx]} {
    # TODO: notify the user that the column cannot be used for sorting
    return
  }

  set exists [lsearch -exact $::glist_Sort($layout) $col_idx ]
  if {$exists == -1} {
    lappend ::glist_Sort($layout) $col_idx -
  } else {
    incr exists
    if {[lindex $::glist_Sort($layout) $exists ] == "+"} {
      lset ::glist_Sort($layout) $exists {-}
    } else {
      lset ::glist_Sort($layout) $exists {+}
    }
  }

  glist.sortInit_ $w $layout
  if {[info exist ::glistBase($w)]} { glist.update_ $w $::glistBase($w) }
}

# Scrollbar
proc glist.ybar_ {w cmd {n 0} {units ""}} {
  if { $cmd == "-1" || $cmd == "+1" } {
#TODO: Profile to verify if this speedup is significative
# if { $cmd == "-1" } {
#   if {$::glistFirst($w) == 0} { return }
#   set items [$w children {}]
#   $w delete [lindex $items 0]
#   if {$::glistBase($w) == [sc_base current]} {
#     set current_game [sc_game number]
#   } else {
#     set current_game -1
#   }
#   set ::glistFirst($w) [expr $::glistFirst($w) -1]
#   foreach {idx line} [sc_base gameslist $::glistBase($w) $::glistFirst($w) 1\
#                                        $::glistFilter($w) $::glistSortStr($w)] {
#     $w insert {} 0 -id $idx -values $line -tag fsmall
#     foreach {n ply} [split $idx "_"] {
#       if {$n == $current_game} { $w item $idx -tag {fsmall current} }
#     }
#   }
# }
    #MouseWheel
    set n [expr $cmd * $::glistVisibleLn($w) * 0.25]
    set units "units"
    set cmd scroll
  }
  if { $cmd == "scroll" || $cmd == "moveto"} {
    if {$cmd == "moveto"} {
      set ::glistFirst($w) [expr ceil($n * $::glistTotal($w))]
    } else {
      if {$units == "pages"} {
        set ::glistFirst($w) [expr $::glistFirst($w) + $n * ($::glistVisibleLn($w) -1)]
      } else {
        set ::glistFirst($w) [expr $::glistFirst($w) + $n]
      }
    }

    set d [expr $::glistTotal($w) - $::glistVisibleLn($w) +1]
    if {$::glistFirst($w) > $d } { set ::glistFirst($w) $d }
    if { $::glistFirst($w) < 0.0 } { set ::glistFirst($w) 0.0 }

    if { $cmd == "scroll"} {
      glist.loadvalues_ $w
    } else {
      set ::glistYDrag($w) 1
      set t $w.balloon
      if {! [winfo exists $t] } {
        toplevel $t -bd 1 -bg black
        wm overrideredirect $t 1
        pack [message $t.txt -aspect 10000 -bg lightyellow -font fixed]
      }
      $t.txt configure -text [format "%0.0f (%0.0f%%)" [expr 1 + $::glistFirst($w)]\
          [expr ($::glistFirst($w) + $::glistVisibleLn($w))*100.0/$::glistTotal($w) ]]
      set wmx [expr [winfo pointerx .] - [winfo reqwidth $t.txt] - 10]
      set wmy [winfo pointery .]
      wm geometry $t \
        [winfo reqwidth $t.txt]x[winfo reqheight $t.txt]+$wmx+$wmy
      raise $t
    }
    glist.ybarupdate_ $w
  } elseif { $cmd == "buttonrelease" && $::glistYDrag($w) != 0 } {
      set ::glistYDrag($w) 0
      destroy $w.balloon
      glist.loadvalues_ $w
      glist.ybarupdate_ $w
  }
}

proc glist.ybarupdate_ {w} {
  if { $::glistLoaded($w) != $::glistTotal($w) } {
    set first [expr double($::glistFirst($w)) / $::glistTotal($w)]
    set last [expr double($::glistFirst($w) + $::glistLoaded($w)) / $::glistTotal($w)]
    eval $::glistYScroll($w) $first $last
  }
}

proc glist.yscroll_ {w first last} {
  if { $first != 0 } {
#TODO: MouseWheel problem
    $w yview moveto 0
    return
  }

  if { $::glistLoaded($w) != $::glistTotal($w) } {
    if { $first != 0 || $last != 1} {
      set ::glistResized($w) 0
      if { $last < 1 } { set ::glistVisibleLn($w) [expr floor($last * $::glistLoaded($w) +1)] }
      glist.ybarupdate_ $w
    } elseif {$::glistResized($w)} {
      # Increase glistVisibleLn (recursion)
      set ::glistVisibleLn($w) [expr $::glistVisibleLn($w) + 1]
      glist.ybar_ $w scroll
    }
  } else { eval $::glistYScroll($w) $first $last }
}

#Drag and drop and changes in column's layout
proc glist.insertcol_ {{w} {layout} {col} {after}} {
  set b [expr [string trimleft $after {#}]]
  set ::glist_ColOrder($layout) [linsert $::glist_ColOrder($layout) $b $col]
  $w configure -displaycolumns $::glist_ColOrder($layout)
}

proc glist.removecol_ {{w} {layout} {col}} {
  set d [expr [string trimleft $col {#}] -1]
  set ::glist_ColOrder($layout) [lreplace $::glist_ColOrder($layout) $d $d]
  $w configure -displaycolumns $::glist_ColOrder($layout)
}

proc glist.release_ {{w} {x} {y} {layout}} {
  switch $::ttk::treeview::State(pressMode) {
    resize {
      set col_id [$w column $::ttk::treeview::State(resizeColumn) -id]
      set i [lsearch -exact $::glist_Headers $col_id]
      if {$i != -1} {
        lset ::glist_ColWidth($layout) $i [$w column $::ttk::treeview::State(resizeColumn) -width]
      }
    }
    heading {
      lassign [$w identify $x $y] what
      if {$what == "heading"} {
        set new_col [$w identify column $x $y]
        set from [expr [string trimleft $::ttk::treeview::State(heading) {#}] -1]
        set to [expr [string trimleft $new_col {#}] -1]
        set val [lindex $::glist_ColOrder($layout) $from]
        if {$from != $to} {
          set ::glist_ColOrder($layout) [lreplace $::glist_ColOrder($layout) $from $from]
          set ::glist_ColOrder($layout) [linsert $::glist_ColOrder($layout) $to $val]
          $w configure -displaycolumns $::glist_ColOrder($layout)
        } else {
          glist.sortClickHandle_ $w $x $y $layout
        }
      }
    }
  }
  ttk::treeview::Release $w $x $y
}

image create bitmap ::glist_Arrows(0) -foreground blue -data {
    #define arrows_width 12
    #define arrows_height 10
    static unsigned char arrows_bits[] = {
       0x00, 0x00, 0x00, 0x03, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x10, 0x02,
       0x38, 0x07, 0x7c, 0x00, 0xfe, 0x00, 0x00, 0x00 };
}
image create bitmap ::glist_Arrows(1) -foreground blue -data {
    #define arrows_width 12
    #define arrows_height 10
    static unsigned char arrows_bits[] = {
       0x00, 0x00, 0x00, 0x03, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0xfe, 0x02,
       0x7c, 0x07, 0x38, 0x00, 0x10, 0x00, 0x00, 0x00 };
}
image create bitmap ::glist_Arrows(2) -foreground blue -data {
    #define arrows_width 12
    #define arrows_height 10
    static unsigned char arrows_bits[] = {
       0x00, 0x00, 0x80, 0x03, 0x00, 0x04, 0x00, 0x04, 0x00, 0x02, 0x08, 0x01,
       0x9c, 0x07, 0x3e, 0x00, 0x7f, 0x00, 0x00, 0x00 };
}
image create bitmap ::glist_Arrows(3) -foreground blue -data {
    #define arrows_width 12
    #define arrows_height 10
    static unsigned char arrows_bits[] = {
       0x00, 0x00, 0x80, 0x03, 0x00, 0x04, 0x00, 0x04, 0x00, 0x02, 0x7f, 0x01,
       0xbe, 0x07, 0x1c, 0x00, 0x08, 0x00, 0x00, 0x00 };
}
image create bitmap ::glist_Arrows(4) -foreground blue -data {
    #define arrows_width 12
    #define arrows_height 10
    static unsigned char arrows_bits[] = {
       0x00, 0x00, 0x80, 0x03, 0x00, 0x04, 0x00, 0x04, 0x00, 0x03, 0x08, 0x04,
       0x9c, 0x07, 0x3e, 0x00, 0x7f, 0x00, 0x00, 0x00 };
}
image create bitmap ::glist_Arrows(5) -foreground blue -data {
    #define arrows_width 12
    #define arrows_height 10
    static unsigned char arrows_bits[] = {
       0x00, 0x00, 0x80, 0x03, 0x00, 0x04, 0x00, 0x04, 0x00, 0x03, 0x7f, 0x04,
       0xbe, 0x03, 0x1c, 0x00, 0x08, 0x00, 0x00, 0x00 };
}
image create bitmap ::glist_Arrows(6) -foreground blue -data {
    #define arrows_width 12
    #define arrows_height 10
    static unsigned char arrows_bits[] = {
       0x00, 0x00, 0x00, 0x02, 0x00, 0x03, 0x00, 0x03, 0x80, 0x02, 0x88, 0x07,
       0x1c, 0x02, 0x3e, 0x00, 0x7f, 0x00, 0x00, 0x00 };
}
image create bitmap ::glist_Arrows(7) -foreground blue -data {
    #define arrows_width 12
    #define arrows_height 10
    static unsigned char arrows_bits[] = {
       0x00, 0x00, 0x00, 0x02, 0x00, 0x03, 0x00, 0x03, 0x80, 0x02, 0xff, 0x07,
       0x3e, 0x02, 0x1c, 0x00, 0x08, 0x00, 0x00, 0x00 };
}
image create bitmap ::glist_Arrows(8) -foreground blue -data {
    #define arrows_width 12
    #define arrows_height 10
    static unsigned char arrows_bits[] = {
       0x00, 0x00, 0x80, 0x07, 0x80, 0x00, 0x80, 0x03, 0x00, 0x04, 0x08, 0x04,
       0x9c, 0x03, 0x3e, 0x00, 0x7f, 0x00, 0x00, 0x00 };
}
image create bitmap ::glist_Arrows(9) -foreground blue -data {
    #define arrows_width 12
    #define arrows_height 10
    static unsigned char arrows_bits[] = {
       0x00, 0x00, 0x80, 0x07, 0x80, 0x00, 0x80, 0x03, 0x00, 0x04, 0x7f, 0x04,
       0xbe, 0x03, 0x1c, 0x00, 0x08, 0x00, 0x00, 0x00 };
}
image create bitmap ::glist_Arrows(10) -foreground blue -data {
    #define arrows_width 12
    #define arrows_height 10
    static unsigned char arrows_bits[] = {
       0x00, 0x00, 0x00, 0x07, 0x80, 0x00, 0x80, 0x00, 0x80, 0x03, 0x88, 0x04,
       0x1c, 0x07, 0x3e, 0x00, 0x7f, 0x00, 0x00, 0x00 };
}
image create bitmap ::glist_Arrows(11) -foreground blue -data {
    #define arrows_width 12
    #define arrows_height 10
    static unsigned char arrows_bits[] = {
       0x00, 0x00, 0x00, 0x07, 0x80, 0x01, 0x80, 0x00, 0x80, 0x07, 0xff, 0x04,
       0x3e, 0x03, 0x1c, 0x00, 0x08, 0x00, 0x00, 0x00 };
}
image create bitmap ::glist_Arrows(12) -foreground blue -data {
    #define arrows_width 12
    #define arrows_height 10
    static unsigned char arrows_bits[] = {
       0x00, 0x00, 0x80, 0x07, 0x00, 0x04, 0x00, 0x02, 0x00, 0x02, 0x08, 0x02,
       0x1c, 0x01, 0x3e, 0x00, 0x7f, 0x00, 0x00, 0x00 };
}
image create bitmap ::glist_Arrows(13) -foreground blue -data {
    #define arrows_width 12
    #define arrows_height 10
    static unsigned char arrows_bits[] = {
       0x00, 0x00, 0x80, 0x07, 0x00, 0x04, 0x00, 0x02, 0x00, 0x02, 0x7f, 0x02,
       0x3e, 0x01, 0x1c, 0x00, 0x08, 0x00, 0x00, 0x00 };
}
image create bitmap ::glist_Arrows(14) -foreground blue -data {
    #define arrows_width 12
    #define arrows_height 10
    static unsigned char arrows_bits[] = {
       0x00, 0x00, 0x00, 0x03, 0x80, 0x04, 0x80, 0x04, 0x00, 0x03, 0x88, 0x04,
       0x9c, 0x07, 0x3e, 0x00, 0x7f, 0x00, 0x00, 0x00 };
}
image create bitmap ::glist_Arrows(15) -foreground blue -data {
    #define arrows_width 12
    #define arrows_height 10
    static unsigned char arrows_bits[] = {
       0x00, 0x00, 0x00, 0x03, 0x80, 0x04, 0x80, 0x04, 0x00, 0x03, 0xff, 0x04,
       0xbe, 0x07, 0x1c, 0x00, 0x08, 0x00, 0x00, 0x00 };
}
image create bitmap ::glist_Arrows(16) -foreground blue -data {
    #define arrows_width 12
    #define arrows_height 10
    static unsigned char arrows_bits[] = {
       0x00, 0x00, 0x00, 0x03, 0x80, 0x04, 0x80, 0x07, 0x00, 0x04, 0x08, 0x06,
       0x9c, 0x03, 0x3e, 0x00, 0x7f, 0x00, 0x00, 0x00 };
}
image create bitmap ::glist_Arrows(17) -foreground blue -data {
    #define arrows_width 12
    #define arrows_height 10
    static unsigned char arrows_bits[] = {
       0x00, 0x00, 0x00, 0x03, 0x80, 0x04, 0x80, 0x07, 0x00, 0x04, 0x7f, 0x06,
       0xbe, 0x03, 0x1c, 0x00, 0x08, 0x00, 0x00, 0x00 };
}

##########################################################################
############################################################
### PGN window

namespace eval pgn {
  ################################################################################
  #
  ################################################################################
  proc ChooseColor {type name} {
    global pgnColor
    set x [tk_chooseColor -initialcolor $pgnColor($type) -title "PGN $name color"]
    if {$x != ""} { set pgnColor($type) $x; ::pgn::ResetColors }
  }
  ################################################################################
  #
  ################################################################################
  proc ConfigMenus {{lang ""}} {
    if {! [winfo exists .pgnWin]} { return }
    if {$lang == ""} { set lang $::language }
    set m .pgnWin.menu
    foreach idx {0 1 2 3} tag {File Opt Color Help} {
      configMenuText $m $idx Pgn$tag $lang
    }
    foreach idx {0 1 3} tag {Copy Print Close} {
      configMenuText $m.file $idx PgnFile$tag $lang
    }
    foreach idx {0 1 2 3 4 5 6 7 8} tag {
      Color Short Symbols IndentC IndentV Space Column StripMarks BoldMainLine
    } {
      configMenuText $m.opt $idx PgnOpt$tag $lang
    }
    foreach idx {0 1 2 3 4 5 6} tag {Header Anno Comments Vars Background Current NextMove } {
      configMenuText $m.color $idx PgnColor$tag $lang
    }
    foreach idx {0 1} tag {Pgn Index} {
      configMenuText $m.helpmenu $idx PgnHelp$tag $lang
    }
  }

  proc PgnClipboardCopy {} {
      setLanguageTemp E
      set pgnStr [sc_game pgn -width 75 -indentComments $::pgn::indentComments \
          -indentVariations $::pgn::indentVars -space $::pgn::moveNumberSpaces]
      setLanguageTemp $::language
      
      set wt .tempFEN
      
      if {! [winfo exists $wt]} { text $wt }
      $wt delete 1.0 end
      $wt insert end $pgnStr sel
      clipboard clear
      clipboard append $pgnStr
      selection own $wt
      selection get
  }

  ################################################################################
  #
  ################################################################################
  proc OpenClose {} {
    global pgnWin pgnHeight pgnWidth pgnColor
    if {[winfo exists .pgnWin]} {
      focus .
      destroy .pgnWin
      set pgnWin 0
      return
    }
    
    set w .pgnWin
    
    ::createToplevel $w
    
    setWinLocation $w
    setWinSize $w
    bind $w <Configure> "recordWinSize $w"
    
    menu $w.menu
    ::setMenu $w $w.menu
    
    $w.menu add cascade -label PgnFile -menu $w.menu.file -underline 0
    $w.menu add cascade -label PgnOpt -menu $w.menu.opt -underline 0
    $w.menu add cascade -label PgnColor -menu $w.menu.color -underline 0
    $w.menu add cascade -label PgnHelp -menu $w.menu.helpmenu -underline 0
    foreach i {file opt color helpmenu} {
      menu $w.menu.$i -tearoff 0
    }
    
    $w.menu.file add command -label PgnFileCopy -accelerator "Ctrl+C" -command {::pgn::PgnClipboardCopy }
    bind $w <Control-c> {::pgn::PgnClipboardCopy}
    bind $w <Control-Insert> {::pgn::PgnClipboardCopy}
    
    $w.menu.file add command -label PgnFilePrint -command {
      set ftype {
        { "PGN files"  {".pgn"} }
        { "Text files" {".txt"} }
        { "All files"  {"*"}    }
      }
      set fname [tk_getSaveFile -initialdir [pwd] -filetypes $ftype -title "Save PGN file"]
      if {$fname != ""} {
        if {[file extension $fname] != ".txt" && [file extension $fname] != ".pgn" } {
          append fname ".pgn"
        }
        if {[catch {set tempfile [open $fname w]}]} {
          tk_messageBox -title "Scid: Error saving file" -type ok -icon warning \
              -message "Unable to save the file: $fname\n\n"
        } else {
          puts $tempfile \
              [sc_game pgn -width 75 -symbols $::pgn::symbolicNags \
              -indentVar $::pgn::indentVars -indentCom $::pgn::indentComments \
              -space $::pgn::moveNumberSpaces -format plain -column $::pgn::columnFormat \
              -markCodes $::pgn::stripMarks]
          close $tempfile
        }
      }
    }
    $w.menu.file add separator
    $w.menu.file add command -label PgnFileClose -accelerator Esc \
        -command "focus .; destroy $w"
    
    $w.menu.opt add checkbutton -label PgnOptColor \
        -variable ::pgn::showColor -command {updateBoard -pgn}
    $w.menu.opt add checkbutton -label PgnOptShort \
        -variable ::pgn::shortHeader -command {updateBoard -pgn}
    $w.menu.opt add checkbutton -label PgnOptSymbols \
        -variable ::pgn::symbolicNags -command {updateBoard -pgn}
    $w.menu.opt add checkbutton -label PgnOptIndentC \
        -variable ::pgn::indentComments -command {updateBoard -pgn}
    $w.menu.opt add checkbutton -label PgnOptIndentV \
        -variable ::pgn::indentVars -command {updateBoard -pgn}
    $w.menu.opt add checkbutton -label PgnOptSpace \
        -variable ::pgn::moveNumberSpaces -command {updateBoard -pgn}
    $w.menu.opt add checkbutton -label PgnOptColumn \
        -variable ::pgn::columnFormat -command {updateBoard -pgn}
    $w.menu.opt add checkbutton -label PgnOptStripMarks \
        -variable ::pgn::stripMarks -command {updateBoard -pgn}
    $w.menu.opt add checkbutton -label PgnOptBoldMainLine \
        -variable ::pgn::boldMainLine -command {updateBoard -pgn}
    
    $w.menu.color add command -label PgnColorHeader \
        -command {::pgn::ChooseColor Header "header text"}
    $w.menu.color add command -label PgnColorAnno \
        -command {::pgn::ChooseColor Nag annotation}
    $w.menu.color add command -label PgnColorComments \
        -command {::pgn::ChooseColor Comment comment}
    $w.menu.color add command -label PgnColorVars \
        -command {::pgn::ChooseColor Var variation}
    $w.menu.color add command -label PgnColorBackground \
        -command {::pgn::ChooseColor Background background}
    $w.menu.color add command -label PgnColorCurrent -command {::pgn::ChooseColor Current current}
    $w.menu.color add command -label PgnColorNextmove -command {::pgn::ChooseColor NextMove nextmove}
    
    $w.menu.helpmenu add command -label PgnHelpPgn \
        -accelerator F1 -command {helpWindow PGN}
    $w.menu.helpmenu add command -label PgnHelpIndex -command {helpWindow Index}
    
    ::pgn::ConfigMenus
    
    text $w.text -width $::winWidth($w) -height $::winHeight($w) -wrap word \
        -background $pgnColor(Background) -cursor crosshair \
        -yscrollcommand "$w.scroll set" -setgrid 1 -tabs {1c right 2c 4c}
    if { $::pgn::boldMainLine } {
      $w.text configure -font font_Bold
    }
    
    ttk::scrollbar $w.scroll -command "$w.text yview" -takefocus 0
    pack [ttk::frame $w.buttons] -side bottom -fill x
    pack $w.scroll -side right -fill y
    pack $w.text -fill both -expand yes
    ttk::button $w.buttons.help -textvar ::tr(Help) -command { helpWindow PGN }
    ttk::button $w.buttons.close -textvar ::tr(Close) -command { focus .; destroy .pgnWin }
    #pack $w.buttons.close $w.buttons.help -side right -padx 5 -pady 2
    set pgnWin 1
    bind $w <Destroy> { set pgnWin 0 }
    
    # Bind left button to close ctxt menu:
    bind $w <ButtonPress-1> {
      if {[winfo exists .pgnWin.text.ctxtMenu]} { destroy .pgnWin.text.ctxtMenu; focus .pgnWin }
    }
    
    # Bind middle button to popup a PGN board:
    bind $w <ButtonPress-$::MB2> "::pgn::ShowBoard .pgnWin.text 5 %x %y %X %Y"
    bind $w <ButtonRelease-$::MB2> ::pgn::HideBoard
    
    # Bind right button to popup a contextual menu:
    bind $w <ButtonPress-$::MB3> "::pgn::contextMenu .pgnWin.text 5 %x %y %X %Y"
    
    # set the same arrow key, etc bindings that the main window has:
    bind $w <F1> { helpWindow PGN }
    bind $w <Home>  ::move::Start
    bind $w <Up>    {::move::Back 10}
    bind $w <Left>  ::move::Back
    bind $w <Down>  {::move::Forward 10}
    bind $w <Right> ::move::Forward
    bind $w <End>   ::move::End
    bind $w <Escape> {
      if {[winfo exists .pgnWin.text.ctxtMenu]} {
        destroy .pgnWin.text.ctxtMenu
        focus .pgnWin
      } else {
        focus .
        destroy .pgnWin
      }
    }
    standardShortcuts $w
    bindMouseWheel $w $w.text
    
    # Add variation navigation bindings:
    bind $w <KeyPress-v> [bind $::dot_w <KeyPress-v>]
    bind $w <KeyPress-z> [bind $::dot_w <KeyPress-z>]
    
    $w.text tag add Current 0.0 0.0
    ::pgn::ResetColors
    
    ::createToplevelFinalize $w
  }
  
  ################################################################################
  #
  ################################################################################
  proc contextMenu {win startLine x y xc yc} {
    
    update idletasks
    
    set mctxt $win.ctxtMenu
    if { [winfo exists $mctxt] } { destroy $mctxt }
    if {[sc_var level] == 0} {
      set state disabled
    } else  {
      set state normal
    }
	
    menu $mctxt

    menu $mctxt.evals1
    $mctxt.evals1 add command -label "Clear" -command {sc_pos addNag X; ::pgn::Refresh 1}
    $mctxt.evals1 add command -label "!" -command {sc_pos addNag ! ; ::pgn::Refresh 1}
    $mctxt.evals1 add command -label "?" -command {sc_pos addNag ? ; ::pgn::Refresh 1}
    $mctxt.evals1 add command -label "!?" -command {sc_pos addNag !? ; ::pgn::Refresh 1}
    $mctxt.evals1 add command -label "?!" -command {sc_pos addNag ?! ; ::pgn::Refresh 1}
    $mctxt.evals1 add command -label "!!" -command {sc_pos addNag !! ; ::pgn::Refresh 1}
    $mctxt.evals1 add command -label "??" -command {sc_pos addNag ?? ; ::pgn::Refresh 1}

    menu $mctxt.evals2
    $mctxt.evals2 add command -label "Clear" -command {sc_pos addNag Y ; ::pgn::Refresh 1}
    $mctxt.evals2 add command -label "=" -command {sc_pos addNag = ; ::pgn::Refresh 1}
    $mctxt.evals2 add command -label "~" -command {sc_pos addNag ~ ; ::pgn::Refresh 1}
    $mctxt.evals2 add command -label "+=" -command {sc_pos addNag += ; ::pgn::Refresh 1}
    $mctxt.evals2 add command -label "=+" -command {sc_pos addNag =+ ; ::pgn::Refresh 1}
    $mctxt.evals2 add command -label "+/-" -command {sc_pos addNag +/- ; ::pgn::Refresh 1}
    $mctxt.evals2 add command -label "-/+" -command {sc_pos addNag -/+ ; ::pgn::Refresh 1}
    $mctxt.evals2 add command -label "+-" -command {sc_pos addNag +- ; ::pgn::Refresh 1}
    $mctxt.evals2 add command -label "-+" -command {sc_pos addNag -+ ; ::pgn::Refresh 1}
    $mctxt.evals2 add command -label "+--" -command {sc_pos addNag +-- ; ::pgn::Refresh 1}
    $mctxt.evals2 add command -label "--+" -command {sc_pos addNag --+ ; ::pgn::Refresh 1}
    $mctxt.evals2 add command -label "N" -command {sc_pos addNag N ; ::pgn::Refresh 1}
    $mctxt.evals2 add command -label "D" -command {sc_pos addNag D ; ::pgn::Refresh 1}
	
    $mctxt add command -label [tr EditDelete] -state $state -command "::pgn::deleteVar [sc_var number]"
    $mctxt add command -label [tr EditFirst] -state $state -command "::pgn::firstVar [sc_var number]"
    $mctxt add command -label [tr EditMain] -state $state -command "::pgn::mainVar [sc_var number]"
    $mctxt add separator
    $mctxt add command -label "[tr EditStrip]:[tr EditStripBegin]" -command {::game::TruncateBegin}
    $mctxt add command -label "[tr EditStrip]:[tr EditStripEnd]" -command {::game::Truncate}
    $mctxt add separator
    $mctxt add command -label "[tr EditStrip]:[tr EditStripComments]" -command {::game::Strip comments}
    $mctxt add command -label "[tr EditStrip]:[tr EditStripVars]" -command {::game::Strip variations}
    $mctxt add separator
    $mctxt add cascade -label "!  ?  ..." -menu $mctxt.evals1
    $mctxt add cascade -label "+-  +/-  ..." -menu $mctxt.evals2
    $mctxt add command -label "[tr WindowsComment]" -command {makeCommentWin}
    
    $mctxt post [winfo pointerx .] [winfo pointery .]
    
  }

  proc deleteVar { var } {
    sc_var exit
    sc_var delete $var
    updateBoard -pgn
  }
  
  proc firstVar { var } {
    sc_var exit
    sc_var first $var
    updateBoard -pgn
  }
  
  proc mainVar { var } {
    sc_var exit
    sc_var promote $var
    updateBoard -pgn
  }
  ################################################################################
  # removes the comments in text widget (or parsing in sc_pos pgnBoard will fail
  # and return a wrong position
  ################################################################################
  proc removeCommentTag { win startline lastpos } {
    set ret ""
    if {[scan $lastpos "%d.%d" lastline lastcol] != 2} {
      return $ret
    }
    for {set line $startline} {$line < $lastline} {incr line} {
      if { [ scan [$win index $line.end ] "%d.%d" dummy colend ] != 2 } {
        return $ret
      }
      for {set col 0} {$col <= $colend} {incr col} {
        set t [$win tag names $line.$col]
        if {[lsearch -glob $t "c_*"] == -1} {
          append ret [$win get $line.$col]
        }
      }
    }
    
    for {set col 0} {$col <= $lastcol} {incr col} {
      set t [$win tag names $lastline.$col]
      if {[lsearch -glob $t "c_*"] == -1} {
        append ret [$win get $lastline.$col]
      }
    }
    
    return $ret
  }
  ################################################################################
  # ::pgn::ShowBoard:
  #    Produces a popup window showing the board position in the
  #    game at the current mouse location in the PGN window.
  #
  ################################################################################
  proc ShowBoard {win startLine x y xc yc} {
    global lite dark
    
    set txt [removeCommentTag $win $startLine [ $win index @$x,$y]]
    # set bd [sc_pos pgnBoard [::untrans [$win get $startLine.0 @$x,$y]] ]
    set bd [ sc_pos pgnBoard [::untrans $txt ] ]
    set w .pgnPopup
    set psize 30
    if {$psize > $::boardSize} { set psize $::boardSize }
    
    if {! [winfo exists $w]} {
      toplevel $w -relief solid -borderwidth 2
      wm withdraw $w
      wm overrideredirect $w 1
      ::board::new $w.bd $psize
      pack $w.bd -side top -padx 2 -pady 2
      wm withdraw $w
    }
    
    ::board::update $w.bd $bd
    
    # Make sure the popup window can fit on the screen:
    incr xc 5
    incr yc 5
    update idletasks
    set dx [winfo width $w]
    set dy [winfo height $w]
    if {($xc+$dx) > [winfo screenwidth $w]} {
      set xc [expr {[winfo screenwidth $w] - $dx}]
    }
    if {($yc+$dy) > [winfo screenheight $w]} {
      set yc [expr {[winfo screenheight $w] - $dy}]
    }
    wm geometry $w "+$xc+$yc"
    wm deiconify $w
    raiseWin $w
  }
  
  ################################################################################
  # ::pgn::HideBoard
  #
  #    Hides the window produced by ::pgn::ShowBoard.
  #
  ################################################################################
  proc HideBoard {} {
    wm withdraw .pgnPopup
  }
  
  ################################################################################
  # # ::pgn::ResetColors
  #
  #    Reconfigures the pgn Colors, after a color is changed by the user
  #
  ################################################################################
  proc ResetColors {} {
    global pgnColor
    if {![winfo exists .pgnWin]} { return }
    .pgnWin.text configure -background $pgnColor(Background)
    .pgnWin.text tag configure Current -background $pgnColor(Current)
    .pgnWin.text tag configure NextMove -background $pgnColor(NextMove)
    ::htext::init .pgnWin.text
    ::htext::updateRate .pgnWin.text 0
    ::pgn::Refresh 1
  }
  ################################################################################
  # ::pgn::Refresh
  #
  #    Updates the PGN window. If $pgnNeedsUpdate == 0, then the
  #    window text is not regenerated; only the current and next move
  #    tags will be updated.
  ################################################################################
  proc Refresh { {pgnNeedsUpdate 0} } {
    if {![winfo exists .pgnWin]} { return }

    if {$pgnNeedsUpdate} {
      busyCursor .
      set format plain
      if {$::pgn::showColor} {set format color}
      set pgnStr [sc_game pgn -symbols $::pgn::symbolicNags \
          -indentVar $::pgn::indentVars -indentCom $::pgn::indentComments \
          -space $::pgn::moveNumberSpaces -format $format -column $::pgn::columnFormat \
          -short $::pgn::shortHeader -markCodes $::pgn::stripMarks]

      set windowTitle [format $::tr(PgnWindowTitle) [sc_game number]]
      ::setTitle .pgnWin "$windowTitle"
      .pgnWin.text configure -state normal
      .pgnWin.text delete 1.0 end
      
      # Hide all information after the first **** encountered in order to hide tactics to user
      # This has the drawback to also hide the first moves when there is several markers ****
      if { $::tactics::findBestMoveRunning } {
        set idx [ string first "****"  $pgnStr ]
        if { $idx != -1 } {
          set pgnStr "[ string range $pgnStr 0 [expr $idx + 3] ]</c>\n"
        }
      }

      if {$::pgn::showColor} {
        ::htext::display .pgnWin.text $pgnStr
      } else {
        .pgnWin.text insert 1.0 $pgnStr
        .pgnWin.text configure -state disabled
      }
      unbusyCursor .
    }
    
    if {$::pgn::showColor} {
      #TODO: This code is slow.
      #      Write a faster function to update PgnNextMovePos & PgnLastMovePos
      sc_game pgn -symbols $::pgn::symbolicNags \
        -indentVar $::pgn::indentVars -indentCom $::pgn::indentComments \
        -space $::pgn::moveNumberSpaces -format color -column $::pgn::columnFormat \
        -short $::pgn::shortHeader -markCodes $::pgn::stripMarks
      #########################################

      if { $::pgn::boldMainLine } {
        .pgnWin.text configure -font font_Bold
      } else {
        .pgnWin.text configure -font font_Regular
      }
      # Now update Current and NextMove tags:
      # the calls to "text see" are intended to make the most interesting part of the PGN window visible
      set offset [sc_pos pgnOffset]
      .pgnWin.text tag remove NextMove 1.0 end
      set noffset [sc_pos pgnOffset next]
      if {$noffset == $offset} {set noffset 0}
      set moveRange [.pgnWin.text tag nextrange "m_$noffset" 1.0]
      if {[llength $moveRange] == 2} {
        .pgnWin.text tag add NextMove [lindex $moveRange 0] [lindex $moveRange 1]
        scan [lindex $moveRange 0] "%d.%d" l c
        set c2 [expr $c + [.pgnWin.text cget -width ] ]
        .pgnWin.text see "[expr $l +3].1"
        .pgnWin.text see "[expr $l +3].1"
        .pgnWin.text see "$l.$c2"
        .pgnWin.text see "$l.$c"
      }
      
      .pgnWin.text tag remove Current 1.0 end
      set moveRange [.pgnWin.text tag nextrange "m_$offset" 1.0]
      if {[llength $moveRange] == 2} {
        .pgnWin.text tag add Current [lindex $moveRange 0] [lindex $moveRange 1]
        scan [lindex $moveRange 0] "%d.%d" l c
        set c2 [expr $c + 2 * [.pgnWin.text cget -width ] ]
        .pgnWin.text see "[expr $l +3].1"
        .pgnWin.text see "[expr $l +3].1"
        .pgnWin.text see "$l.$c2"
        .pgnWin.text see "$l.$c"
      }
      
      .pgnWin.text configure -state disabled
    }
  }
  ################################################################################
  #
  ################################################################################
  
}
###
### book.tcl: part of Scid.
### Copyright (C) 2007  Pascal Georges
###
######################################################################
### Book window

namespace eval book {
  set isOpen 0
  set isReadonly 0
  set bookList ""
  set bookPath ""
  set currentBook "" ; # book in form abc.bin
  set currentTuningBook ""
  set bookMoves ""
  set cancelBookExport 0
  set exportCount 0
  set exportMax 3000
  set hashList ""
  set bookSlot 0
  set bookTuningSlot 2
  set oppMovesVisible 0
  
  
  ################################################################################
  # open a book, closing any previously opened one (called by annotation analysis)
  # arg name : gm2600.bin for example
  ################################################################################
  proc scBookOpen { name slot } {
    if {$slot == $::book::bookSlot} {
      if {$::book::currentBook != ""} {
        sc_book close $::book::bookSlot
      }
      set ::book::currentBook $name
    }
    if {$slot == $::book::bookTuningSlot} {
      if {$::book::currentTuningBook != ""} {
        sc_book close $::book::bookTuningSlot
      }
      set ::book::currentTuningBook $name
    }
    
    set bn [ file join $::scidBooksDir $name ]
    set ::book::isReadonly [sc_book load $bn $slot]
  }
  
  ################################################################################
  # Return a move in book for position fen. If there is no move in book, returns ""
  # Is used by engines, not book windows
  ################################################################################
  proc getMove { book fen slot} {
    set tprob 0
    ::book::scBookOpen $book $slot
    set bookmoves [sc_book moves $slot]
    if {[llength $bookmoves] == 0} {
      return ""
    }
    set r [expr {(int (rand() * 100))} ]
    for {set i 0} {$i<[llength $bookmoves]} {incr i 2} {
      set m [lindex $bookmoves $i]
      set prob [string range [lindex $bookmoves [expr $i + 1] ] 0 end-1 ]
      incr tprob $prob
      if { $tprob >= $r } {
        break
      }
    }
    sc_book close $slot
    return $m
  }
  
  ################################################################################
  #  Show moves leading to book positions
  ################################################################################
  proc togglePositionsDisplay {} {
    global ::book::oppMovesVisible
    if { $::book::oppMovesVisible == 0} {
      set ::book::oppMovesVisible 1
      pack .bookWin.f.text1 -expand yes -fill both
    } else {
      set ::book::oppMovesVisible 0
      pack forget .bookWin.f.text1
    }
  }
  
  ################################################################################
  #  Open a window to select book and display book moves
  # arg name : gm2600.bin for example
  ################################################################################
  proc open { {name ""} } {
    global ::book::bookList ::book::bookPath ::book::currentBook ::book::isOpen ::book::lastBook
    
    set w .bookWin
    
    if {[winfo exists $w]} { return }
    
    set ::book::isOpen 1
    
    ::createToplevel $w
    ::setTitle $w $::tr(Book)
    wm resizable $w 0 1
    
    setWinLocation $w
    bind $w <Configure> "recordWinSize $w"
    bind $w <F1> { helpWindow Book }
    
    ttk::frame $w.f
    
    # load book names
    if { $name == "" && $lastBook != "" } {
      set name $lastBook
    }
    set bookPath $::scidBooksDir
    set bookList [  lsort -dictionary [ glob -nocomplain -directory $bookPath *.bin ] ]
    
    # No book found
    if { [llength $bookList] == 0 } {
      tk_messageBox -title "Scid" -type ok -icon error -message "No books found. Check books directory"
      set ::book::isOpen 0
      set ::book::currentBook ""
      destroy $w
      ::docking::cleanup $w
      return
    }
    
    set i 0
    set idx 0
    set tmp {}
    foreach file  $bookList {
      set f [ file tail $file ]
      lappend tmp $f
      if {$name == $f} {
        set idx $i
      }
      incr i
    }
    ttk::combobox $w.f.combo -width 12 -values $tmp
    
    catch { $w.f.combo current $idx }
    pack $w.f.combo
    
    # text displaying book moves
    frame $w.f.fscroll
    autoscrollframe -bars y $w.f.fscroll text $w.f.text -wrap word -state disabled -width 12
    
    ttk::button $w.f.b -text $::tr(OtherBookMoves)  -command { ::book::togglePositionsDisplay }
    ::utils::tooltip::Set $w.f.b $::tr(OtherBookMovesTooltip)
    
    text $w.f.text1 -wrap word -state disabled -width 12
    
    pack $w.f.fscroll -expand yes -fill both
    pack $w.f.b
    pack $w.f.text1 -expand yes -fill both
    
    pack $w.f -expand 1 -fill both
    
    bind $w.f.combo <<ComboboxSelected>> ::book::bookSelect
    bind $w <Destroy> "::book::closeMainBook ; ::docking::cleanup $w"
    bind $w <Escape> { destroy  .bookWin }
    # we make a redundant check here, another one is done a few line above
    if { [catch {bookSelect} ] } {
      tk_messageBox -title "Scid" -type ok -icon error -message "No books found. Check books directory"
      set ::book::isOpen 0
      set ::book::currentBook ""
      destroy  .bookWin
    }
  }
  ################################################################################
  #
  ################################################################################
  proc closeMainBook {} {
    if { $::book::currentBook == "" } { return }
    focus .
    sc_book close $::book::bookSlot
    set ::book::isOpen 0
    set ::book::currentBook ""
  }
  ################################################################################
  #   updates book display when board changes
  ################################################################################
  proc refresh {} {
    global ::book::bookMoves
    
    foreach t [.bookWin.f.text tag names] {
      if { [string match "bookMove*" $t] } {
        .bookWin.f.text tag delete $t
      }
    }
    foreach t [.bookWin.f.text1 tag names] {
      if { [string match "bookMove*" $t] } {
        .bookWin.f.text1 tag delete $t
      }
    }
    set bookMoves [sc_book moves $::book::bookSlot]
    .bookWin.f.text configure -state normal
    .bookWin.f.text delete 1.0 end
    for {set i 0} {$i<[llength $bookMoves]} {incr i 2} {
      set line [expr $i /2 +1]
      set m ""
      append m [::trans [lindex $bookMoves $i]] "\t" [lindex $bookMoves [expr $i + 1] ] "\n"
      .bookWin.f.text insert end $m
      .bookWin.f.text tag add bookMove$line $line.0 $line.end
      .bookWin.f.text tag bind bookMove$line <ButtonPress-1> "::book::makeBookMove [lindex $bookMoves $i]"
    }
    .bookWin.f.text configure -state disabled -height [expr [llength $bookMoves] / 2 ]
    
    
    set oppBookMoves [sc_book positions $::book::bookSlot]
    .bookWin.f.text1 configure -state normal
    .bookWin.f.text1 delete 1.0 end
    for {set i 0} {$i<[llength $oppBookMoves]} {incr i 1} {
      set line [expr $i +1]
      set m ""
      append m [::trans [lindex $oppBookMoves $i]]  "\n"
      .bookWin.f.text1 insert end $m
      .bookWin.f.text1 tag add bookMove$line $line.0 $line.end
      .bookWin.f.text1 tag bind bookMove$line <ButtonPress-1> "::book::makeBookMove [lindex $oppBookMoves $i]"
    }
    .bookWin.f.text1 configure -state disabled -height [llength $oppBookMoves]
    if { $::book::oppMovesVisible == 0 } {
      pack forget .bookWin.f.text1
    }
  }
  ################################################################################
  #
  ################################################################################
  proc makeBookMove { move } {
    set action "replace"
    if {![sc_pos isAt vend]} { set action [confirmReplaceMove] }
    if {$action == "replace"} {
      sc_move addSan $move
    } elseif {$action == "var"} {
      sc_var create
      sc_move addSan $move
    } elseif {$action == "mainline"} {
      sc_var create
      sc_move addSan $move
      sc_var exit
      sc_var promote [expr {[sc_var count] - 1}]
      sc_move forward 1
    }
    updateBoard -pgn -animate
    ::utils::sound::AnnounceNewMove $move
    if {$action == "replace"} { ::tree::doTraining }
  }
  ################################################################################
  #
  ################################################################################
  proc bookSelect { { n "" }  { v  0} } {
    set ::book::lastBook [.bookWin.f.combo get]
    scBookOpen [.bookWin.f.combo get] $::book::bookSlot
    refresh
  }
  ################################################################################
  #
  ################################################################################
  proc tuning { {name ""} } {
    global ::book::bookList ::book::bookPath ::book::currentBook ::book::isOpen
    
    set w .bookTuningWin
    
    if {[winfo exists $w]} {
      return
    }
    
    ::createToplevel $w
    ::setTitle $w $::tr(Book)
    # wm resizable $w 0 0
    
    bind $w <F1> { helpWindow BookTuningWindow }
    setWinLocation $w
    
    ttk::frame $w.fcombo
    ttk::frame $w.f
    # load book names
    set bookPath $::scidBooksDir
    set bookList [  lsort -dictionary [ glob -nocomplain -directory $bookPath *.bin ] ]
    
    # No book found
    if { [llength $bookList] == 0 } {
      tk_messageBox -title "Scid" -type ok -icon error -message "No books found. Check books directory"
      set ::book::isOpen 0
      set ::book::currentBook ""
      destroy $w
      ::docking::cleanup $w
      return
    }
    
    set i 0
    set idx 0
    set tmp {}
    foreach file  $bookList {
      set f [ file tail $file ]
      lappend tmp $f
      if {$name == $f} {
        set idx $i
      }
      incr i
    }
    
    ttk::combobox $w.fcombo.combo -width 12 -values $tmp
    catch { $w.fcombo.combo current $idx }
    pack $w.fcombo.combo -expand yes -fill x
    
    ttk::frame $w.fbutton
    
    
    menubutton $w.fbutton.mbAdd -text $::tr(AddMove) -menu $w.fbutton.mbAdd.otherMoves
    menu $w.fbutton.mbAdd.otherMoves
    
    
    ttk::button $w.fbutton.bExport -text $::tr(Export) -command ::book::export
    ttk::button $w.fbutton.bSave -text $::tr(Save) -command ::book::save
    
    pack $w.fbutton.mbAdd $w.fbutton.bExport $w.fbutton.bSave -side top -fill x -expand yes
    
    
    pack $w.fcombo $w.f $w.fbutton -side top
    
    bind $w.fcombo.combo <<ComboboxSelected>> ::book::bookTuningSelect
    
    bind $w <Destroy> "::book::closeTuningBook  ; ::docking::cleanup $w"
    bind $w <Escape> { destroy  .bookTuningWin }
    bind $w <F1> { helpWindow BookTuning }
    
    bookTuningSelect
    
  }
  ################################################################################
  #
  ################################################################################
  proc closeTuningBook {} {
    if { $::book::currentTuningBook == "" } { return }
    focus .
    sc_book close $::book::bookTuningSlot
    set ::book::currentTuningBook ""
  }
  ################################################################################
  #
  ################################################################################
  proc bookTuningSelect { { n "" }  { v  0} } {
    set w .bookTuningWin
    scBookOpen [.bookTuningWin.fcombo.combo get] $::book::bookTuningSlot
    if { $::book::isReadonly > 0 } {
      $w.fbutton.bSave configure -state disabled
    } else {
      $w.fbutton.bSave configure -state normal
    }
    refreshTuning
  }
  ################################################################################
  #   add a move to displayed bookmoves
  ################################################################################
  proc addBookMove { move } {
    global ::book::bookTuningMoves
    
    if { $::book::isReadonly > 0 } { return }
    
    set w .bookTuningWin
    set children [winfo children $w.f]
    set count [expr [llength $children] / 2]
    ttk::label $w.f.m$count -text [::trans $move]
    bind $w.f.m$count <ButtonPress-1> " ::book::makeBookMove $move"
    spinbox $w.f.sp$count -from 0 -to 100 -width 3
    $w.f.sp$count set 0
    grid $w.f.m$count -row $count -column 0 -sticky w
    grid $w.f.sp$count -row $count -column 1 -sticky w
    $w.fbutton.mbAdd.otherMoves delete [::trans $move]
    lappend ::book::bookTuningMoves $move
  }
  ################################################################################
  #   updates book display when board changes
  ################################################################################
  proc refreshTuning {} {
    
    if { $::book::isReadonly > 0 } { return }
    
    #unfortunately we need this as the moves on the widgets are translated
    #and widgets have no clientdata in tcl/tk
    global ::book::bookTuningMoves
    set ::book::bookTuningMoves {}
    set moves [sc_book moves $::book::bookTuningSlot]
    
    set w .bookTuningWin
    bind $w <Destroy> "" ;# avoid the closing of the book
    # erase previous children
    set children [winfo children $w.f]
    foreach c $children {
      destroy $c
    }
    
    set row 0
    for {set i 0} {$i<[llength $moves]} {incr i 2} {
      lappend ::book::bookTuningMoves [lindex $moves $i]
      label $w.f.m$row -text [::trans [lindex $moves $i]]
      bind $w.f.m$row <ButtonPress-1> " ::book::makeBookMove [lindex $moves $i] "
      spinbox $w.f.sp$row -from 0 -to 100 -width 3
      set pct [lindex $moves [expr $i+1] ]
      set value [string replace $pct end end ""]
      $w.f.sp$row set $value
      grid $w.f.m$row -row $row -column 0 -sticky w
      grid $w.f.sp$row -row $row -column 1 -sticky w
      incr row
    }
    # load legal moves
    $w.fbutton.mbAdd.otherMoves delete 0 end
    $w.fbutton.mbAdd.otherMoves add command -label $::tr(None)
    set moveList [ sc_pos moves ]
    foreach move $moveList {
      if { [ lsearch  $moves $move ] == -1 } {
        $w.fbutton.mbAdd.otherMoves add command -label [::trans $move] -command "::book::addBookMove $move"
      }
    }
    bind $w <Destroy> "::book::closeTuningBook  ; ::docking::cleanup $w"
  }
  ################################################################################
  # sends to book the list of moves and probabilities.
  ################################################################################
  proc save {} {
    global ::book::bookTuningMoves
    if { $::book::isReadonly > 0 } { return }
    
    set prob {}
    set w .bookTuningWin
    set children [winfo children $w.f]
    set count [expr [llength $children] / 2]
    for {set row 0} {$row < $count} {incr row} {
      lappend prob [$w.f.sp$row get]
    }
    set tempfile [file join $::scidUserDir tempfile.[pid]]
    sc_book movesupdate $::book::bookTuningMoves $prob $::book::bookTuningSlot $tempfile
    file delete $tempfile
    if {  [ winfo exists .bookWin ] } {
      ::book::refresh
    }
  }
  ################################################################################
  #
  ################################################################################
  proc export {} {
    ::windows::gamelist::Refresh
    updateTitle
    progressWindow "Scid" "ExportingBook..." $::tr(Cancel) "::book::sc_progressBar"
    set ::book::cancelBookExport 0
    set ::book::exportCount 0
    ::book::book2pgn
    set ::book::hashList ""
    closeProgressWindow
    if { $::book::exportCount >= $::book::exportMax } {
      tk_messageBox -title "Scid" -type ok -icon info \
          -message "$::tr(Movesloaded)  $::book::exportCount\n$::tr(BookPartiallyLoaded)"
    } else  {
      tk_messageBox -title "Scid" -type ok -icon info -message "$::tr(Movesloaded)  $::book::exportCount"
    }
    updateBoard -pgn
  }
  
  ################################################################################
  #
  ################################################################################
  proc book2pgn { } {
    global ::book::hashList
    
    if {$::book::cancelBookExport} { return  }
    if { $::book::exportCount >= $::book::exportMax } {
      return
    }
    set hash [sc_pos hash]
    if {[lsearch -sorted -integer -exact $hashList $hash] != -1} {
      return
    } else  {
      lappend hashList $hash
      set hashList [lsort -integer -unique $hashList]
    }
    
    updateBoard -pgn
    
    set bookMoves [sc_book moves $::book::bookTuningSlot]
    incr ::book::exportCount
    if {[expr $::book::exportCount % 50] == 0} {
      updateProgressWindow $::book::exportCount $::book::exportMax
      update
    }
    if {[llength $bookMoves] == 0} { return }
    
    for {set i 0} {$i<[llength $bookMoves]} {incr i 2} {
      set move [lindex $bookMoves $i]
      if {$i == 0} {
        sc_move addSan $move
        book2pgn
        sc_move back
      } else  {
        sc_var create
        sc_move addSan $move
        book2pgn
        sc_var exit
      }
    }
    
  }
  ################################################################################
  # cancel book export
  ################################################################################
  proc sc_progressBar {} {
    set ::book::cancelBookExport 1
  }
}
###
### End of file: book.tcl
###
############################################################
### Comment Editor window

namespace eval ::commenteditor {
  
  namespace export open close update storeComment addNag
  
  # List of colors and types used to mark a square
  
  variable  colorList {}  markTypeList {}
  lappend   colorList red orange yellow   \
      green blue darkBlue \
      purple white black
  # Each list is a set of buttons in the dialog menu:
  lappend   markTypeList [list full circle disk x + - = ? !]
  lappend   markTypeList [list 1 2 3 4 5 6 7 8 9]
  
  # IO state of the comment editor
  variable  State
  array set State [list isOpen 0 \
      markColor red  markType full  text "" \
      pending ""]
  
  proc addMark {args} {eval ::board::mark::add $args}
  proc delMark {args} {eval ::board::mark::remove $args}
}

proc ::commenteditor::addNag {nag} {
  if {![winfo exists .commentWin]} { return }
  .commentWin.nf.tf.text insert end "$nag  "
  ::commenteditor::storeComment
  ::pgn::Refresh 1
}

proc makeCommentWin {} {
  if {[winfo exists .commentWin]} {
    # ::commenteditor::close
    focus .
    destroy .commentWin
  } else {
    ::commenteditor::Open
  }
}

proc ::commenteditor::toggleboard { } {
  if {$::commenteditor::showboard == 1} {
     pack forget .commentWin.markFrame 
	  set ::commenteditor::showboard 0
  } else { 
	  pack .commentWin.markFrame -fill both -expand 1 -padx 1 -anchor n -before .commentWin.nf -side left
	  set ::commenteditor::showboard 1
  }
}

# ::commenteditor::Open --
#
proc ::commenteditor::Open {} {
  global commentWin highcolor helpMessage
  variable colorList
  variable markTypeList
  variable State
  
  set commentWin 1
  set State(isOpen) 1
  if {[winfo exists .commentWin]} {
    focus .commentWin.cf.text
    return
  }
  set w .commentWin
  ::createToplevel $w
  setWinLocation $w
  
  set mark [ttk::frame $w.markFrame]
  if {$::commenteditor::showboard == 1} { pack $mark -side left -fill both -expand 1 -padx 1 -anchor n }
  
  # Comment frame:
  ttk::frame $w.cf
  text $w.cf.text -width $::winWidth($w) -height $::winHeight($w) -background white -wrap word -font font_Regular \
      -yscrollcommand ".commentWin.cf.scroll set" -setgrid 1
  ttk::scrollbar $w.cf.scroll -command ".commentWin.cf.text yview"
  ttk::label $w.cf.label -font font_Bold -textvar ::tr(Comment)
  bindFocusColors $w.cf.text
  bind $w.cf.text <Alt-KeyRelease-c> { .commentWin.b.close invoke }
  bind $w.cf.text <Alt-KeyRelease-s> { .commentWin.b.store invoke }

  bind $w.cf.text <FocusOut> { ::commenteditor::storeComment }
  bind $w <Control-a> {::commenteditor::storeComment; sc_var create; updateBoard -pgn}
  bind $w.cf.text <Alt-Left>  {::commenteditor::storeComment; ::move::Back}
  bind $w.cf.text <Alt-Right> {::commenteditor::storeComment; ::move::Forward}
  # switch to the NAG entry
  bind $w.cf.text <Alt-n> { focus .commentWin.nf.tf.text }

  bind $w.cf.text <Alt-b> { ::commenteditor::toggleboard }
  
  # NAG frame:
  ttk::frame $w.nf -width 100
  ttk::frame $w.nf.tf
  ttk::entry $w.nf.tf.text -width 20 -background white
  bindFocusColors $w.nf.tf.text
  bind $w.nf.tf.text <Alt-KeyRelease-c> { .commentWin.b.close invoke }
  # switch to the edit frame
  bind $w.nf.tf.text <Alt-n> { focus .commentWin.cf.text }
  
  set nagbox $w.nf.tf.text
  set nagbuttons $w.nf.b
  ttk::frame $w.nf.b
  set i 0
  set row 0
  set column 0
  foreach {nag description} {
    ! GoodMove
    ? PoorMove
    !! ExcellentMove
    ?? Blunder
    !? InterestingMove
    ?! DubiousMove
    +-- WhiteCrushing
    --+ BlackCrushing
    +- WhiteDecisiveAdvantage
    -+ BlackDecisiveAdvantage
    +/- WhiteClearAdvantage
    -/+ BlackClearAdvantage
    += WhiteSlightAdvantage
    =+ BlackSlightAdvantage
    = Equality
    ~ Unclear
    N Novelty
    D Diagram
  } {
    ttk::button $nagbuttons.b$i -takefocus 0 -text "$nag" -width 2 -command [namespace code [list addNag "$nag"]]
    # set helpMessage(E,$nagbuttons.b$i) $description
    ::utils::tooltip::Set $nagbuttons.b$i $description
    grid $nagbuttons.b$i -row [expr {$i % 2}] -column [expr {int($i / 2)}] -padx 2 -pady 2
    incr i
  }
  
  ttk::label $w.nf.label -font font_Bold -textvar ::tr(AnnotationSymbols)
  pack $w.nf -side top -pady 1 -expand 0 
  #addHorizontalRule $w
  
  ttk::button $w.nf.tf.clear -textvar ::tr(Clear) -command {
    .commentWin.nf.tf.text delete 0 end
    ::commenteditor::storeComment
    ::pgn::Refresh 1
    updateBoard
  }
  set helpMessage(E,$w.nf.tf.clear) {Clear all symbols for this move}
  pack $w.nf.label -side top -expand 0
  pack $w.nf.tf -side top
  pack $w.nf.tf.text -side left
  pack $w.nf.tf.clear -side right -padx 20 -pady 5
  pack $w.nf.b -side top
  
  ttk::frame $w.b
  pack $w.b -side bottom -ipady 4 -expand 0 -padx 1
  
  pack $w.cf -side top -expand 1 -fill both 
  pack $w.cf.label -side top -pady 2
  pack $w.cf.scroll -side right -fill y
  pack $w.cf.text -side right -expand 1 -fill both
  
  # Main buttons:

  ttk::button $w.b.showboard -image tb_coords -command { ::commenteditor::toggleboard }
  
  dialogbutton $w.b.clear -textvar ::tr(Clear) -command [namespace code [list ClearComments .commentWin]]
  set helpMessage(E,$w.b.clear) {Clear this comment}
  dialogbutton $w.b.revert -textvar ::tr(Revert) -command ::commenteditor::Refresh
  set helpMessage(E,$w.b.revert) {Revert to the stored comment}
  dialogbutton $w.b.store -textvar ::tr(Store) -command [namespace code {storeComment; ::pgn::Refresh 1; updateBoard}]
  set helpMessage(E,$w.b.store) {Store this comment in the game}
  ttk::frame $w.b.space -width 10
  dialogbutton $w.b.close -textvar ::tr(Close) -command { focus .; destroy .commentWin}
  set helpMessage(E,$w.b.close) {Close the comment editor window}
  
  pack $w.b.close $w.b.space $w.b.store $w.b.revert $w.b.clear $w.b.showboard -side right -padx 1
  
  ### Insert-mark frame
  
  ttk::label $mark.header -font font_Bold -text $::tr(InsertMark:)
  pack $mark.header -side top -ipady 1 -fill x -padx 1
  
  # pack [ttk::frame $mark.usage] -side bottom -pady 1 -expand true
  # pack [ttk::label $mark.usage.text -text [string trim $::tr(InsertMarkHelp)] -justify left]
  ::utils::tooltip::Set $mark.header [string trim $::tr(InsertMarkHelp)]
  
  # Subframes for insert board and two button rows:

  pack [ttk::frame [set colorButtons $mark.colorButtons]] -side top -pady 1 -anchor n
  pack [ttk::frame [set insertBoard $mark.insertBoard]] -side top -pady 1
  pack [ttk::frame [set typeButtons $mark.typeButtons]] -side top -pady 1 -anchor s

  # Left subframe: color (radio)buttons
  foreach color $colorList {
    image create photo markColor_$color -width 18 -height 18
    markColor_$color put $color -to 1 1 16 16
    radiobutton $colorButtons.c$color -image markColor_$color -variable [namespace current]::State(markColor) \
        -value $color -takefocus 0 -command [namespace code [list SetMarkColor $color]] -indicatoron 0
    pack $colorButtons.c$color -side left -padx 0 -pady 3
  }
  
  # Central subframe: a small board
  set board [::board::new $insertBoard.board 25]
  ::board::showMarks $board 1
  set ::board::_mark($board) $::board::_mark(.main.board)
  ::board::update $board
  pack $board -side top
  for {set square 0} {$square < 64} {incr square} {
    ::board::bind $board $square <ButtonPress-1> [namespace code [list InsertMark $board $square]]
    ::board::bind $board $square <ButtonRelease-1> [namespace code [list ButtonReleased $board %b %X %Y]]
    ::board::bind $board $square <ButtonPress-$::MB3> [namespace code [list InsertMark $board [expr {$square + 64}]]]
  }
  
  # Right subframe: type/shape (pseudo-radio)buttons
  set size 20	;# button/rectangle size
  pack [set types [ttk::frame $typeButtons.all]] -side left -padx 10
  set row 0
  foreach buttons $markTypeList {
    set column 0
    foreach shape $buttons {
      set color [::board::defaultColor [expr {($column + $row) % 2}]]
      # Create and draw a button:
      set button [ttk::frame $types.button_${shape} -class PseudoButton]
      grid $button -row $row -column $column -padx 1 -pady 1
      # The "board" is a 1x1 board, containing one single square.
      set board1x1 [canvas $button.bd -height $size -width $size -highlightthickness 0 -borderwidth 1 -relief raised]
      $board1x1 create rectangle 0 0 $size $size -fill $color -outline "" -tag [list sq0 button${shape}]
      ::board::mark::add $types.button_${shape} $shape 0 $State(markColor) "false"
      pack $board1x1
      bind $board1x1 <Button-1> [namespace code [list SetMarkType $board $shape]]
      incr column
    } ;# foreach shape
    incr row
  } ;# foreach button_line
  # "Press" button:
  SetMarkType $board $State(markType)

  # Add bindings at the end, especially <Configure>
  bind $w <F1> {helpWindow Comment}
  bind $w <Control-n> {helpWindow NAGs}
  bind $w <Destroy> [namespace code {set commentWin 0; set State(isOpen) 0}]
  bind $w <Configure> "recordWinSize $w"

  ### Start editing
  ::setTitle $w "Scid: [tr {Comment editor}]"
  wm iconname $w "Scid: [tr {Comment editor}]"
  ::commenteditor::Refresh
  focus $w.cf.text
  ::createToplevelFinalize $w
}

# ::commenteditor::SetMarkColor --
#
#	Called when a color is selected.
#
# Arguments:
#	color	The selected color.
# Results:
#	TODO
#
proc ::commenteditor::SetMarkColor {color} {
  variable   markTypeList
  variable   State
  set path   .commentWin.markFrame.typeButtons.all
  set square 0	;# square number of a 1x1-board
  foreach buttons $markTypeList {
    foreach shape $buttons {
      set button $path.button_${shape}
      if {$shape == "square"} {
        $button.bd itemconfigure sq$square \
            -fill $color -outline $color
      } else {
        $button.bd delete mark
        addMark $button $shape $square $color "false"
      }
    }
  }
  set State(markColor) $color
}

# ::commenteditor::SetMarkType --
#
# Arguments:
#	board	The frame variable of the board.
#	type	The selected type/shape, e.g. "circle", "1", etc.
# Results:
#	TODO
#
proc ::commenteditor::SetMarkType {board type} {
  variable State
  set cur_type $State(markType)
  set path .commentWin.markFrame.typeButtons.all
  $path.button_${cur_type}.bd configure -relief raised
  $path.button_${type}.bd configure -relief sunken
  set State(markType) $type
}

# ::commenteditor::InsertMark --
#
#	Called when a square is selected on the insert board.
#
# Arguments:
#	board	The frame variable of the board.
#	from	Number (0-63) of the selected square
#		(+64 if right mouse button used).
#	to	Number of destination square (0-63) if an
#		arrow is to be drawn (+64 if right mouse button).
# Results:
#	TODO
#
proc ::commenteditor::InsertMark {board square} {
  variable State
  set textwin .commentWin.cf.text
  if {![string length $State(pending)]} {
    set State(pending) $square
    return
  }
  # Right mouse click results in square-no + 64:
  set from [expr {$State(pending) % 64}]
  set to   [expr {$square         % 64}]
  
  set key $::board::mark::Command
  array set tag [list remove 0 value {}]
  if {$square == $State(pending)} {
    if {$square >= 64} { return }
    if {[lsearch [$textwin tag names] $square] >= 0} {
      array set tag [list remove 1 value $square]
      delMark $board $square
    } else {
      set tag(value) $square
      addMark $board $State(markType) $square $State(markColor)
      set to [::board::san $square]
      set State(text) "\[%$key $State(markType),$to,$State(markColor)\]"
    }
  } else {
    if {($square & 64) != ($State(pending) & 64)} {
      if {$square < 64} { set State(pending) $square }
      return
    }
    if {[lsearch [$textwin tag names] ${from}:${to}] >= 0} {
      set tag(remove) 1
      set tag(value)  [list ${from}:${to} ${to}:${from}]
      delMark $board $from $to
    } else {
      set tag(value) [list ${from}:${to} ${to}:${from}]
      addMark $board arrow $from $to $State(markColor)
      set from [::board::san $from]
      set to   [::board::san $to]
      set State(text) "\[%$key arrow,$from,$to,$State(markColor)\]"
    }
  }
  set State(pending) ""
  
  if {$tag(remove)} {
    set remove [lindex $tag(value) 0]
    if [llength [$textwin tag range $remove]] {
      $textwin delete $remove.first $remove.last
    }
    eval $textwin tag delete $tag(value)
  } else {
    $textwin insert insert $State(text) $tag(value)
  }
}

# ::commenteditor::ClearComments --
#
#	Called when the 'Clear' button is pressed.
#
# Arguments:
#	win	The window variable.
# Results:
#	Clears text area and chess board of the comment editor.
#
proc ::commenteditor::ClearComments {win} {
  ${win}.cf.text delete 0.0 end
  set board ${win}.markFrame.insertBoard.board
  ::board::setmarks $board ""
  ::board::update $board
}

# ::commenteditor::ButtonReleased --
#
#	Auxiliary routine:
#	Called when a button is released over a square.
#
# Arguments:
#	board	The frame variable of the board.
#	button	The number (%b) of the button that was released.
#	x_root	The x-coodinate (%X) from the event.
#	y_root	The y-coodinate (%Y) from the event.
# Results:
#
proc ::commenteditor::ButtonReleased {board button x_root y_root} {
  set square [::board::getSquare $board $x_root $y_root]
  if {$square < 0}  {
    set $State(pending) ""
    return
  }
  if {$button != 1} {set square [expr {$square + 64}]}
  InsertMark $board $square
}

# ::commenteditor::storeComment --
#
#	Set the comment of the current position to
#	the text of the commenteditor.
#
proc ::commenteditor::storeComment {} {
  if {![winfo exists .commentWin]} { return }
  set nag [sc_pos getNags]
  if {$nag == "0"} { set nag "" }
  if { $nag != [.commentWin.nf.tf.text get] } {
    sc_pos clearNags
    foreach i [split [.commentWin.nf.tf.text get] " "] {
      sc_pos addNag $i
    }
  }
  
  # The "end-1c" below is because Tk adds a newline to text contents:
  set newComment [.commentWin.cf.text get 1.0 end-1c]
  set oldComment [sc_pos getComment]
  if {[string compare $oldComment $newComment]} {
    sc_pos setComment $newComment
    updateStatusBar
    ::pgn::Refresh 1
    updateBoard
  }
}

# ::commenteditor::Refresh --
#
#	(Re)builds textwindow and board of the comment editor.
#
proc ::commenteditor::Refresh {} {
  if {![winfo exists .commentWin]} { return }
  
  set nag [sc_pos getNags]
  .commentWin.nf.tf.text configure -state normal
  .commentWin.nf.tf.text delete 0 end
  if {$nag != "0"} {
    .commentWin.nf.tf.text insert end $nag
  }
  
  # if at vstart, disable NAG codes
  if {[sc_pos isAt vstart]} {
    set state "disabled"
  } else  {
    set state "normal"
  }
  foreach c [winfo children .commentWin.nf.tf] {
    $c configure -state $state 
  }
  foreach c [winfo children .commentWin.nf.b] {
    $c configure -state $state
  }
  
  # Rewrite text window, tag embedded commands,
  # and draw marks according to text window commands.
  set text  .commentWin.cf.text
  set board .commentWin.markFrame.insertBoard.board
  set comment [sc_pos getComment]
  set offset  0
  ::board::setmarks $board $comment
  $text delete 1.0 end
  foreach {mark pos} [::board::mark::getEmbeddedCmds $comment] {
    foreach {type square arg color} $mark {begin end} $pos {break}  ;# set
    set square [::board::sq $square]
    regsub -all -- {[^[:alnum:]]} $color {_} _color
    switch -- $type {
      arrow   { set arg  [::board::sq $arg]
        set tags [list ${square}:${arg} ${arg}:${square} \
            ${square}:${arg}:$_color]
      }
      default { set tags [list $square ${square}:$type:$_color] }
    }
    $text insert insert [string range $comment $offset [expr {$begin-1}]]
    $text insert insert [string range $comment $begin $end] $tags
    set offset [expr {$end + 1}]
  }
  $text insert insert [string range $comment $offset end]
  ::board::update $board [sc_pos board]
}

### End of namespace ::commenteditor

####################
# ECO Browser window

set ::windows::eco::code ""
set ::windows::eco::count 0
set ::windows::eco::isOpen 0

proc ::windows::eco::OpenClose {} {
  if {[winfo exists .ecograph]} {
    destroy .ecograph
  } else {
    ::windows::eco::Refresh
  }
}

# ::windows::eco::Refresh
#
#    Updates the ECO Browser window, opening it if necessary.
#    If the ECO code "code" is "x", then the value of the
#    variable ::windows::eco::code is used instead.
#
proc ::windows::eco::Refresh {{code "x"}} {
  set w .ecograph
  set graph $w.pane.graph
  set text $w.pane.text
  if {$code != "x"} { set ::windows::eco::code $code }
  if {! [winfo exists $w]} {
    set ::windows::eco::isOpen 1
    ::createToplevel $w
    wm minsize $w 200 100
    setWinLocation $w
    bind $w <Escape> "destroy $w"
    bind $w <F1> {helpWindow ECO}
    bind $w <Destroy> {set ::windows::eco::isOpen 0}
    text $w.title -relief flat -height 1 -width 1 -wrap word -font font_Bold
    $w.title tag configure center -justify center
    $w.title configure -cursor top_left_arrow
    pack $w.title -side top -fill x
    ttk::frame $w.b
    pack $w.b -side bottom -fill x
    ttk::button $w.b.classify -textvar ::tr(ReclassifyGames) -command classifyAllGames
    dialogbutton $w.b.help -textvar ::tr(Help) -command {helpWindow ECO}
    dialogbutton $w.b.close -textvar ::tr(Close) -command "destroy $w"
    pack $w.b.classify -side left -padx 5 -pady 5
    packbuttons right $w.b.close $w.b.help
    set pane [::utils::pane::Create $w.pane graph text 500 400 0.5]
    ::utils::pane::SetRange $w.pane 0.3 0.7
    ::utils::pane::SetDrag $w.pane 0
    pack $pane -side top -expand true -fill both

    canvas $graph.c -width 500 -height 250
    pack $graph.c -side top -fill both -expand yes
    text $text.text -height 12 -width 75 -wrap word -font font_Regular \
      -background white -selectbackground lightBlue \
      -yscroll "$text.ybar set" -xscroll "$text.xbar set"
    $text.text tag configure bold -font font_Bold
    $text.text tag configure indent -lmargin2 20
    $text.text configure -cursor top_left_arrow
    ::htext::init $text.text
    ttk::scrollbar $text.ybar -command "$text.text yview"
    ttk::scrollbar $text.xbar -orient horizontal -command "$text.text xview"
    grid $text.text -row 0 -column 0 -sticky nesw
    grid $text.ybar -row 0 -column 1 -sticky nesw
    #grid $text.xbar -row 1 -column 0 -sticky nesw
    grid rowconfig $text 0 -weight 1 -minsize 0
    grid columnconfig $text 0 -weight 1 -minsize 0

    foreach i {0 1 2 3 4 5 6 7 8 9 A B C D E a b c d e f g h i j k l m n o p
               q r s t u v w x y z} {
      bind $w <KeyPress-$i> "::windows::eco::KeyPress $i"
    }

    foreach i {Left Delete less BackSpace} {
      bind $w <KeyPress-$i> {::windows::eco::KeyPress "<"}
    }

    bind $w <Home>  {.ecograph.pane.text.text yview moveto 0}
    bind $w <End>   {.ecograph.pane.text.text yview moveto 1.0}
    bind $w <Up>    {.ecograph.pane.text.text yview scroll -1 units}
    bind $w <Down>  {.ecograph.pane.text.text yview scroll 1 units}
    bind $w <Prior> {.ecograph.pane.text.text yview scroll -1 pages}
    bind $w <Next>  {.ecograph.pane.text.text yview scroll 1 pages}
    standardShortcuts $w
    bindMouseWheel $w $w.pane.text.text

    bind $graph.c <1> { ::windows::eco::Select %x }
    bind $graph.c <$::MB3> { ::windows::eco::KeyPress "<" }

    bind $graph <Configure> {
      ::utils::graph::configure eco -height [expr {[winfo height .ecograph.pane.graph.c] - 50} ]
      ::utils::graph::configure eco -width [expr {[winfo width .ecograph.pane.graph.c] - 60} ]
      ::utils::graph::redraw eco
    }
    bind $w <Configure> {
      ::utils::graph::configure eco -height [expr {[winfo height .ecograph.pane.graph.c] - 50} ]
      ::utils::graph::configure eco -width [expr {[winfo width .ecograph.pane.graph.c] - 60} ]
      ::utils::graph::redraw eco
    }
    ::setTitle $w "Scid: [tr WindowsECO]"
    ::utils::graph::create eco -width 1 -height 1 -xtop 50 -ytop 20 \
      -xmin 0.5 -xtick 1 -ytick 5 -font font_Small -canvas $graph.c
    update
    ::createToplevelFinalize $w
  }

  set height [expr {[winfo height $graph.c] - 50} ]
  set width [expr {[winfo width $graph.c] - 60} ]

  set code $::windows::eco::code
  # Collect data:
  set len [string length $code]
  set subcodes {}
  if {$len == 0} {
    set subcodes {A B C D E}
  } elseif {$len == 1  ||  $len == 2} {
    set subcodes {0 1 2 3 4 5 6 7 8 9}
  } elseif {$len == 3} {
    set subcodes {a b c d e f g h i j k l m n o p q r s t u v w x y z}
  }

  set xlabels {}
  set count 0
  set data {}
  set maxfreq 1
  set wins {}
  set draws {}

  foreach i $subcodes {
    set subcode "$code$i"
    set stats [sc_base ecoStats $subcode]
    set freq [lindex $stats 0]
    incr count
    lappend data $count
    lappend data $freq
    lappend wins $count
    lappend wins [lindex $stats 1]
    lappend draws $count
    lappend draws [expr {[lindex $stats 1] + [lindex $stats 2] + [lindex $stats 4]} ]
    if {$freq > $maxfreq} {set maxfreq $freq}
    if {$len == 3} {
      set subcode $i
    }
    lappend xlabels [list $count $subcode]
  }
  set hline 5
  if {$maxfreq >    20} { set hline    10 }
  if {$maxfreq >    50} { set hline    25 }
  if {$maxfreq >   100} { set hline    50 }
  if {$maxfreq >   200} { set hline   100 }
  if {$maxfreq >   500} { set hline   250 }
  if {$maxfreq >  1000} { set hline   500 }
  if {$maxfreq >  2000} { set hline  1000 }
  if {$maxfreq >  5000} { set hline  2500 }
  if {$maxfreq > 10000} { set hline  5000 }
  if {$maxfreq > 20000} { set hline 10000 }
  if {$maxfreq > 50000} { set hline 25000 }
  if {$maxfreq > 100000} { set hline 50000 }

  ::utils::graph::create eco -width $width -height $height -xtop 50 -ytop 20 \
    -xmin 0.5 -xtick 1 -ytick $hline -font font_Small -canvas $graph.c
  ::utils::graph::data eco data -color SteelBlue4 -points 0 -lines 0 -bars 1 \
    -barwidth 0.8 -outline black -coords $data
  ::utils::graph::data eco draws -color SteelBlue3 -points 0 -lines 0 -bars 1 \
    -barwidth 0.8 -outline black -coords $draws
  ::utils::graph::data eco wins -color SteelBlue1 -points 0 -lines 0 -bars 1 \
    -barwidth 0.8 -outline black -coords $wins
  ::utils::graph::data eco bounds -points 0 -lines 0 -bars 0 -coords {1 0 1 1}
  ::utils::graph::configure eco -ymin 0 -xmin 0.4 -xmax [expr {$count + 0.6} ] \
    -xlabels $xlabels -hline [list [list gray80 1 each $hline]]
  ::utils::graph::redraw eco
  $text.text configure -state normal
  $text.text delete 1.0 end
  set stats [sc_base eco $code]
  if {$len == 0} {
    set section $::tr(ECOAllSections)
  } elseif {$len < 3} {
    set section "$::tr(ECOSection) \"$code\""
  } else {
    set section "$::tr(ECOCode) \"$code\""
  }
  set header "<center><b>$::tr(ECOSummary) $section</b><br>"
  append header "[lindex $stats 0] $::tr(games): +[lindex $stats 1] =[lindex $stats 2] -[lindex $stats 3]  ([lindex $stats 5]%)</center>\n\n"
  ::htext::display $text.text "$header[sc_eco summary $code 1]"
  $text.text configure -state disabled
  $w.title configure -state normal
  $w.title delete 1.0 end
  $w.title insert end "$::tr(ECOFrequency) $section" center
  $w.title configure -state disabled
  set ::windows::eco::count $count
}

proc ::windows::eco::Select {xc} {
  variable count
  variable code

  set x [::utils::graph::xunmap eco $xc]
  set selection 0
  for {set i 1} {$i <= $count} {incr i} {
    if {$x >= [expr {$i - 0.4} ]  &&  $x <= [expr {$i + 0.4} ]} {
      set selection $i
    }
  }
  if {$selection == 0} { return }
  incr selection -1
  set len [string length $code]
  if {$len == 0} {
    set code [lindex {A B C D E} $selection]
  } elseif {$len == 1  ||  $len == 2} {
    append code $selection
  } elseif {$len == 3} {
    append code [lindex {a b c d e f g h i j k l m n o p q r s t u v w x y z} $selection]
  } else {
    return
  }
  ::windows::eco::Refresh
}

# ::windows::eco::KeyPress
#
#    Handles keyboard events in ECO browser window
#
proc ::windows::eco::KeyPress {key} {
  set code $::windows::eco::code
  set len [string length $code]
  if {$key == "<"} {
    set ::windows::eco::code [string range $code 0 [expr {$len - 2} ]]
    ::windows::eco::Refresh
    return
  }
  if {$key == "top"} {
    set ::windows::eco::code ""
    ::windows::eco::Refresh
    return
  }

  if {$len == 0} {
    set key [string toupper $key]
    switch $key {
      A - B - C - D - E {
        # nothing
      }
      default { set key "" }
    }
  } elseif {$len == 1 || $len == 2} {
    switch $key {
      0 - 1 - 2 - 3 - 4 - 5 - 6 - 7 - 8 - 9 {
        # nothing
      }
      default { set key "" }
    }
  } elseif {$len == 3} {
    set key [string tolower $key]
    switch $key {
      a - b - c - d - e - f - g - h - i - j - k - l - m - n - o - p - q - r -
      s - t - u - v - w - x - y - z {
        # nothing
      }
      default { set key "" }
    }
  }

  if {$key != ""} {
    set ::windows::eco::code "$code$key"
    ::windows::eco::Refresh
  }
}

###
### windows/stats.tcl: Filter Statistics window for Scid
###

set ::windows::stats::isOpen 0

proc ::windows::stats::Open {} {
  set w .statsWin
  if {[winfo exists $w]} {
    focus .
    destroy $w
    set ::windows::stats::isOpen 0
    return
  }
  toplevel $w
  wm title $w "Scid: Filter Statistics"
  setWinLocation $w
  bind $w <Configure> "recordWinSize $w"

  menu $w.menu
  $w configure -menu $w.menu
  $w.menu add cascade -label StatsFile -menu $w.menu.file
  $w.menu add cascade -label StatsOpt -menu $w.menu.opt
  menu $w.menu.file
  $w.menu.file add command -label StatsFilePrint -command {
    set ftype {
      { "Text files" {".txt"} }
      { "All files"  {"*"}    }
    }
    set fname [tk_getSaveFile -initialdir [pwd] -filetypes $ftype -title "Save text file"]
    if {$fname != ""} {
      if {[catch {set tempfile [open $fname w]}]} {
        tk_messageBox -title "Scid: Error saving file" -type ok -icon warning \
          -message "Unable to save the file: $fname\n\n"
      } else {
        puts $tempfile [.statsWin.stats get 1.0 end-1c]
        close $tempfile
      }
    }
  }
  $w.menu.file add separator
  $w.menu.file add command -label StatsFileClose -accelerator Esc \
      -command "destroy $w"

  menu $w.menu.opt
  $w.menu.opt add cascade -label $::tr(OprepStatBoth) -menu $w.menu.opt.elo
  menu $w.menu.opt.elo
  foreach i [lsort -decreasing [array names ::windows::stats::display r*]] {
    set elo [string range $i 1 end]
    $w.menu.opt.elo add checkbutton -label "$::tr(OprepStatBoth) $elo+" \
      -variable ::windows::stats::display($i) -command ::windows::stats::Refresh
  }
  $w.menu.opt add separator
  $w.menu.opt add cascade -label $::tr(OprepStatSince) \
    -menu $w.menu.opt.year
  menu $w.menu.opt.year
  foreach i [lsort [array names ::windows::stats::display y*]] {
    set year [string range $i 1 end]
    $w.menu.opt.year add checkbutton \
      -label "$::tr(OprepStatSince) $year.01.01" \
      -variable ::windows::stats::display($i) -command ::windows::stats::Refresh
  }

#  text $w.stats -borderwidth 0 \
    -width $::winWidth($w) -height $::winHeight($w) -font font_Fixed \
    -foreground black -background white -cursor top_left_arrow -wrap none \
      -setgrid 1 -yscrollcommand {.statsWin.sb set } 
  autoscrollframe $w.statsasb text $w.stats -width 80 -height 40\
      -foreground black -background white -font font_Fixed\
       -wrap none 

  pack $w.statsasb -side top -fill both -expand yes
  set ::windows::stats::isOpen 1
  bind $w <Control-q> "destroy $w"
  bind $w <Escape> "destroy $w"
  bind $w <F1> { helpWindow Index }
  bind $w <Destroy> {
    set ::windows::stats::isOpen 0
  }
  standardShortcuts $w
#Klimmek: enable Resize vertical
  wm resizable $w 0 1
  ::windows::stats::ConfigMenus
  ::windows::stats::Refresh
}

proc ::windows::stats::Refresh {} {
  variable display
  if {[winfo exists .playerInfoWin]} { ::pinfo::playerInfo }
  ::windows::gamelist::Refresh
  ::maint::Refresh
  updateStatusBar
  ::tools::graphs::filter::Refresh
  #Klimmek. Update Absfilter window
  ::tools::graphs::absfilter::Refresh
  if {! [winfo exists .statsWin]} { return }

  # Set up variables for translated phrases:
  set all [::utils::string::Capital $::tr(allGames)]
  set both $::tr(OprepStatBoth)
  set since $::tr(OprepStatSince)
  set games [::utils::string::Capital $::tr(games)]
  set score [::utils::string::Capital $::tr(score)]

  # Find length of longest left-hand column:
  set alen [expr {[string length $all] + 1}]
  set blen [expr {[string length $both] + 7}]
  set slen [expr {[string length $since] + 12}]
  set len $alen
  if {$len < $blen} { set len $blen }
  if {$len < $slen} { set len $slen }

  set height 4
  set ratings 0
  set years 0
  set rlist [lsort -decreasing [array names display r*]]
  set ylist [lsort [array names display y*]]

  foreach i $rlist {
    if {$display($i)} { set ratings 1 }
  }
  foreach i $ylist {
    if {$display($i)} { set years 1 }
  }

  if {$ratings} { incr height }
  if {$years} { incr height }

  set s ""
  set sm "\n"  
  set stat ""
  append s " [::utils::string::Pad $stat [expr $len - 4]] [::utils::string::PadRight $games 10]"
  append s "     1-0     =-=     0-1 [::utils::string::PadRight $score 8]\n"
  append s "------------------------------------------------------------------------"
  append s "\n [::utils::string::Pad $all $len]" [sc_filter stats all]
#Klimmek: New Statistic: Count the games in intervalls "start elo  - end elo"
#         if elo is deselected in option menu, then enlarge the intervall to next selectet elo.
#Klimmek: New Statistic: Count the games in intervalls
  if {$ratings} {
    append s "\n"
    set j 0
    set k [lindex $rlist $j]
    while { $k!= "" && ! $display($k) } {
	incr j
	set k [lindex $ylist $j]
	if { $k == "" } { break }
    }
    set nelo [string range [lindex $rlist $j] 1 end]
    incr height
#first line searches all games greater 2600 Elo
    set stat "min. Elo $nelo-3500"
    append s "\n [::utils::string::Pad $stat $len]"   [sc_filter stats elo $nelo 9999]
    set stat "max. Elo $nelo-3500"
    append sm "\n [::utils::string::Pad $stat $len]"   [sc_filter stats elo $nelo -9999]
    set j 0
    foreach i $rlist {
      incr j  
      if {$display($i)} {
        incr height
        set elo [string range $i 1 end]
	set l $j
	set k [lindex $rlist $l]
        while { $k!= "" && ! $display($k) } {
	    incr l
	    set k [lindex $rlist $l]
	    if { $k == "" } { break }
	}
	set nelo [string range [lindex $rlist $l] 1 end]
	if { $nelo == "" } { set nelo 0 }  
#count all games where player whith lowest Elo is in the specific range      
        set stat "min. Elo $nelo-$elo"
        append s "\n [::utils::string::Pad $stat $len]"   [sc_filter stats elo $nelo $elo]
        set stat "max. Elo $nelo-$elo"
#count all games where player whith highest Elo is in the specific range      
# +10000 workaround to trigger max elo in filter function
	append sm "\n [::utils::string::Pad $stat $len]"   [sc_filter stats elo $nelo [expr {$elo + 10000}]]
      }
    }
  }
  append s $sm
#Klimmek: New Statistic: Count the games in intervalls "from year - to year"
#         if year is deselected in option menu, then enlarge the intervall to next selectet year.
  if {$years} {
    append s "\n"
    set j 0  
    foreach i $ylist {
      incr j  
      if {$display($i)} {
        incr height
        set year [string range $i 1 end]
	set l $j
	set k [lindex $ylist $l]
        while { $k!= "" && ! $display($k) } {
	    incr l
	    set k [lindex $ylist $l]
	    if { $k == "" } { break }
	}
	set nyear [string range $k 1 end]
	if { $nyear == "" } { set nyear 2099 }  
        set stat "$year - $nyear"
        append s "\n [::utils::string::Pad $stat $len]"   [sc_filter stats year $year $nyear]
      } 
    }
  }
#Old statistic: count the games from specific value to maximum value 
  set stat ""
  append s "\n\n"
  append s " [::utils::string::Pad $stat [expr $len - 4]] [::utils::string::PadRight $games 10]"
  append s "     1-0     =-=     0-1 [::utils::string::PadRight $score 8]\n"
  append s "------------------------------------------------------------------------"
  append s "\n [::utils::string::Pad $all $len]" [sc_filter stats all]

  if {$ratings} {
    append s "\n"
    foreach i $rlist {
      if {$display($i)} {
        incr height
        set elo [string range $i 1 end]
        set stat "$both $elo+"
        append s "\n [::utils::string::Pad $stat $len]"   [sc_filter stats elo $elo 0]
      }
    }
  }

  if {$years} {
    append s "\n"
    foreach i $ylist {
      if {$display($i)} {
        incr height
        set year [string range $i 1 end]
        set stat "$since $year.01.01"
        append s "\n [::utils::string::Pad $stat $len]"   [sc_filter stats year $year 0]
      }
    }
  }
  append s "\n"

  set w .statsWin.stats
  if { $height > 50  } { set height 50 }  
  $w configure -state normal
  $w delete 1.0 end
  $w insert end $s
  $w tag configure blue -foreground darkBlue
  $w tag configure red -foreground red
  $w tag add blue 1.0 2.0
  $w tag add red 2.0 3.0
  $w configure -height $height
  $w configure -state disabled
}

proc ::windows::stats::ConfigMenus {{lang ""}} {
  if {! [winfo exists .statsWin]} { return }
  if {$lang == ""} { set lang $::language }
  set m .statsWin.menu
  foreach idx {0 1} tag {File Opt} {
    configMenuText $m $idx Stats$tag $lang
  }
  foreach idx {0 2} tag {Print Close} {
    configMenuText $m.file $idx StatsFile$tag $lang
  }
}

############################################################
### TREE window
### (C) 2007 Pascal Georges : multiple Tree windows support

namespace eval ::tree {
  set trainingBase 0
  array set cachesize {}
  set scoreHighlight_MinGames 15
  set scoreHighlight_WhiteExpectedScoreBonus 3.8 ; # on average white achieves a score of 53.8
  set scoreHighlight_Margin 3.0 ; # if +/- this value, something special happened
}
# ################################################################################
proc ::tree::doConfigMenus { baseNumber  { lang "" } } {
  if {! [winfo exists .treeWin$baseNumber]} { return }
  if {$lang == ""} { set lang $::language }
  set m .treeWin$baseNumber.menu
  foreach idx {0 1 2 3 4} tag {File Mask Sort Opt Help} {
    configMenuText $m $idx Tree$tag $lang
  }
  foreach idx {0 1 2 3 4 5 7 8 10 12} tag {Save Fill FillWithBase FillWithGame SetCacheSize CacheInfo Best Graph Copy Close} {
    configMenuText $m.file $idx TreeFile$tag $lang
  }
  foreach idx {0 1 2 3 4 5 6 7 8 9} tag {New Open OpenRecent Save Close FillWithGame FillWithBase Search Info Display} {
    configMenuText $m.mask $idx TreeMask$tag $lang
  }
  foreach idx {0 1 2 3} tag {Alpha ECO Freq Score } {
    configMenuText $m.sort $idx TreeSort$tag $lang
  }
  foreach idx {0 1 3 5 6 7} tag {Lock Training Autosave Slowmode Fastmode FastAndSlowmode} {
    configMenuText $m.opt $idx TreeOpt$tag $lang
  }
  foreach idx {0 1} tag {Tree Index} {
    configMenuText $m.helpmenu $idx TreeHelp$tag $lang
  }
}

# ################################################################################
proc ::tree::ConfigMenus { { lang "" } } {
  for {set i 1 } {$i <= [sc_base count total]} {incr i} {
    ::tree::doConfigMenus $i $lang
  }
}
################################################################################
proc ::tree::menuCopyToSelection { baseNumber } {
  clipboard clear
  clipboard append [ .treeWin$baseNumber.f.tl get 1.0 end ]
}
################################################################################
proc ::tree::treeFileSave {base} {
  busyCursor .
  update
  if {[catch {sc_tree write $base} result]} {
    tk_messageBox -type ok -icon warning -title "Scid: Error writing file" -message $result
  }
  unbusyCursor .
}
################################################################################
proc ::tree::make { { baseNumber -1 } {locked 0} } {
  global tree treeWin highcolor geometry helpMessage
  
  if {$baseNumber == -1} {set baseNumber [sc_base current]}
  
  if {[winfo exists .treeWin$baseNumber]} {
	 ::tree::closeTree $baseNumber
    return
  }
  
  set w .treeWin$baseNumber
  
  ::createToplevel .treeWin$baseNumber
  setWinLocation $w
  setWinSize $w
  
  # Set the tree window title now:
  ::setTitle $w "Scid: [tr WindowsTree] $baseNumber [file tail [sc_base filename $baseNumber] ]"
  set ::treeWin$baseNumber 1
  set tree(training$baseNumber) 0
  set tree(autorefresh$baseNumber) 1
  set tree(locked$baseNumber) $locked
  set tree(base$baseNumber) $baseNumber
  set tree(status$baseNumber) ""
  set tree(bestMax$baseNumber) 50
  set tree(order$baseNumber) "frequency"
  trace variable tree(bestMax$baseNumber) w "::tree::doTrace bestMax"
  set tree(bestRes$baseNumber) "1-0 0-1 1/2 *"
  trace variable tree(bestRes$baseNumber) w "::tree::doTrace bestRes"
  set tree(allgames$baseNumber) 1
  
  bind $w <Destroy> "::tree::closeTree $baseNumber"
  bind $w <F1> { helpWindow Tree } 
  bind $w <Escape> "::tree::hideCtxtMenu $baseNumber ; .treeWin$baseNumber.buttons.stop invoke "
  
  # Bind left button to close ctxt menu:
  bind $w <ButtonPress-1> "::tree::hideCtxtMenu $baseNumber"
  
  standardShortcuts $w
  
  menu $w.menu
  ::setMenu $w $w.menu
  $w.menu add cascade -label TreeFile -menu $w.menu.file
  $w.menu add cascade -label TreeMask -menu $w.menu.mask
  $w.menu add cascade -label TreeSort -menu $w.menu.sort
  $w.menu add cascade -label TreeOpt  -menu $w.menu.opt
  $w.menu add cascade -label TreeHelp -menu $w.menu.helpmenu
  foreach i {file mask sort opt helpmenu} {
    menu $w.menu.$i -tearoff 0
  }
  
  $w.menu.file add command -label TreeFileSave -command "::tree::treeFileSave $baseNumber"
  set helpMessage($w.menu.file,0) TreeFileSave
  $w.menu.file add command -label TreeFileFill -command "::tree::prime $baseNumber"
  set helpMessage($w.menu.file,1) TreeFileFill
  $w.menu.file add command -label TreeFileFillWithBase -command "::tree::primeWithBase"
  set helpMessage($w.menu.file,2) TreeFileFillWithBase
  $w.menu.file add command -label TreeFileFillWithGame -command "::tree::primeWithGame"
  set helpMessage($w.menu.file,3) TreeFileFillWithGame
  
  menu $w.menu.file.size
  foreach i { 250 500 1000 2000 5000 10000 } {
    $w.menu.file.size add radiobutton -label "$i" -value $i -variable ::tree::cachesize($baseNumber) -command "::tree::setCacheSize $baseNumber $i"
  }
  
  $w.menu.file add cascade -menu $w.menu.file.size -label TreeFileSetCacheSize
  set helpMessage($w.menu.file,4) TreeFileSetCacheSize
  
  $w.menu.file add command -label TreeFileCacheInfo -command "::tree::getCacheInfo $baseNumber"
  set helpMessage($w.menu.file,5) TreeFileCacheInfo
  
  $w.menu.file add separator
  $w.menu.file add command -label TreeFileBest -command "::tree::best $baseNumber 1"
  set helpMessage($w.menu.file,7) TreeFileBest
  
  $w.menu.file add command -label TreeFileGraph -command "::tree::graph $baseNumber 1"
  set helpMessage($w.menu.file,8) TreeFileGraph
  $w.menu.file add separator
  $w.menu.file add command -label TreeFileCopy -command "::tree::menuCopyToSelection $baseNumber"
  set helpMessage($w.menu.file,10) TreeFileCopy
  $w.menu.file add separator
  $w.menu.file add command -label TreeFileClose -command ".treeWin$baseNumber.buttons.close invoke"
  set helpMessage($w.menu.file,12) TreeFileClose
  
  $w.menu.mask add command -label TreeMaskNew -command "::tree::mask::new"
  set helpMessage($w.menu.mask,0) TreeMaskNew
  $w.menu.mask add command -label TreeMaskOpen -command "::tree::mask::open"
  set helpMessage($w.menu.mask,1) TreeMaskOpen
  
  menu $w.menu.mask.recent
  foreach f $::tree::mask::recentMask {
    $w.menu.mask.recent add command -label $f -command "::tree::mask::open $f"
  }
  $w.menu.mask add cascade -label TreeMaskOpenRecent -menu $w.menu.mask.recent
  set helpMessage($w.menu.mask,2) TreeMaskOpenRecent
  
  $w.menu.mask add command -label TreeMaskSave -command "::tree::mask::save"
  set helpMessage($w.menu.mask,3) TreeMaskSave
  $w.menu.mask add command -label TreeMaskClose -command "::tree::mask::close"
  set helpMessage($w.menu.mask,4) TreeMaskClose
  $w.menu.mask add command -label TreeMaskFillWithGame -command "::tree::mask::fillWithGame"
  set helpMessage($w.menu.mask,5) TreeMaskFillWithGame
  $w.menu.mask add command -label TreeMaskFillWithBase -command "::tree::mask::fillWithBase"
  set helpMessage($w.menu.mask,6) TreeMaskFillWithBase
  $w.menu.mask add command -label TreeMaskSearch -command "::tree::mask::searchMask $baseNumber"
  set helpMessage($w.menu.mask,7) TreeMaskSearch
  $w.menu.mask add command -label TreeMaskInfo -command "::tree::mask::infoMask"
  set helpMessage($w.menu.mask,8) TreeMaskInfo
  $w.menu.mask add command -label TreeMaskDisplay -command "::tree::mask::displayMask"
  set helpMessage($w.menu.mask,9) TreeMaskDisplay
  
  foreach label {Alpha ECO Freq Score} value {alpha eco frequency score} {
    $w.menu.sort add radiobutton -label TreeSort$label \
        -variable tree(order$baseNumber) -value $value -command " ::tree::refresh $baseNumber "
  }
  
  $w.menu.opt add checkbutton -label TreeOptLock -variable tree(locked$baseNumber) -command "::tree::toggleLock $baseNumber"
  set helpMessage($w.menu.opt,0) TreeOptLock
  
  $w.menu.opt add checkbutton -label TreeOptTraining -variable tree(training$baseNumber) -command "::tree::toggleTraining $baseNumber"
  set helpMessage($w.menu.opt,1) TreeOptTraining
  
  $w.menu.opt add separator
  $w.menu.opt add checkbutton -label TreeOptAutosave -variable tree(autoSave$baseNumber)
  set helpMessage($w.menu.opt,3) TreeOptAutosave
  
  $w.menu.opt add separator
  $w.menu.opt add radiobutton -label TreeOptSlowmode -value 0 -variable tree(fastmode$baseNumber) -command "::tree::refresh $baseNumber"
  set helpMessage($w.menu.opt,5) TreeOptSlowmode
  
  $w.menu.opt add radiobutton -label TreeOptFastmode -value 1 -variable tree(fastmode$baseNumber) -command "::tree::refresh $baseNumber"
  set helpMessage($w.menu.opt,6) TreeOptFastmode
  
  $w.menu.opt add radiobutton -label TreeOptFastAndSlowmode -value 2 -variable tree(fastmode$baseNumber) -command "::tree::refresh $baseNumber"
  set helpMessage($w.menu.opt,7) TreeOptFastAndSlowmode
  set tree(fastmode$baseNumber) 0
  
  $w.menu.helpmenu add command -label TreeHelpTree -accelerator F1 -command {helpWindow Tree}
  $w.menu.helpmenu add command -label TreeHelpIndex -command {helpWindow Index}
  
  ::tree::doConfigMenus $baseNumber
  
  autoscrollframe $w.f text $w.f.tl \
      -width $::winWidth(.treeWin) -height $::winHeight(.treeWin) -wrap none -selectbackground lightgrey -selectforeground black \
      -font font_Fixed -foreground black -background white -setgrid 1 -exportselection 1
  #define default tags
  $w.f.tl tag configure greybg -background #fa1cfa1cfa1c
  $w.f.tl tag configure whitebg -background white
  $w.f.tl tag configure bluefg -foreground blue
  $w.f.tl tag configure greenfg -foreground SeaGreen
  $w.f.tl tag configure redfg -foreground red
  
  selection handle $w.f.tl "::tree::copyToSelection $baseNumber"
  bindMouseWheel $w $w.f.tl

  bind $w <Configure> "recordWinSize $w"

  ttk::frame $w.statusframe
  pack $w.statusframe -side bottom -fill x
  grid rowconfigure $w.statusframe 0 -weight 1
  grid columnconfigure $w.statusframe 0 -weight 1
  ttk::label $w.status -anchor w -font font_Small \
      -relief sunken -textvar tree(status$baseNumber)
  grid $w.status -in $w.statusframe -column 0 -row 0 -sticky nsew
  canvas $w.progress -height 0 -bg white -relief solid -border 1
  $w.progress create rectangle 0 0 0 0 -fill blue -outline blue -tags bar

  pack [ttk::frame $w.buttons -relief sunken] -side bottom -fill x
  pack $w.f -side top -expand 1 -fill both
  
  ttk::button $w.buttons.best -image b_list -style Pad0.Small.TButton -command "::tree::best $baseNumber 1"
  ttk::button $w.buttons.graph -image b_bargraph -style Pad0.Small.TButton -command "::tree::graph $baseNumber 1"
  # add a button to start/stop tree refresh
  ttk::button $w.buttons.bStartStop -image engine_on -style Pad0.Small.TButton -command "::tree::toggleRefresh $baseNumber" ;# -relief flat
  
  ttk::checkbutton $w.buttons.allgames -textvar ::tr(allGames) -variable tree(allgames$baseNumber) -command "::tree::refresh $baseNumber"
  ttk::checkbutton $w.buttons.training -textvar ::tr(Training) -variable tree(training$baseNumber) -command "::tree::toggleTraining $baseNumber"
  
  foreach {b t} { best TreeFileBest graph TreeFileGraph allgames TreeOptLock  training TreeOptTraining bStartStop TreeOptStartStop } {
    set helpMessage($w.buttons.$b) $t
  }
  
  dialogbutton $w.buttons.stop -textvar ::tr(Stop) -command { sc_progressBar }
  dialogbutton $w.buttons.close -textvar ::tr(Close) -command "::tree::closeTree $baseNumber"
  
  pack $w.buttons.best $w.buttons.graph $w.buttons.bStartStop $w.buttons.allgames $w.buttons.training \
      -side left -padx 3 -pady 2
  packbuttons right $w.buttons.close $w.buttons.stop
  $w.buttons.stop configure -state disabled
  
  wm minsize $w 40 5
  
  wm protocol $w WM_DELETE_WINDOW " .treeWin$baseNumber.buttons.close invoke "
  ::tree::refresh $baseNumber
  set ::tree::cachesize($baseNumber) [lindex [sc_tree cacheinfo $baseNumber] 1]
}
################################################################################
proc ::tree::hideCtxtMenu { baseNumber } {
  set w .treeWin$baseNumber.f.tl.ctxtMenu
  if {[winfo exists $w]} {
    destroy $w
    focus .treeWin$baseNumber
  }
}
################################################################################
proc ::tree::selectCallback { baseNumber move } {
  
  if { $::tree(refresh) } {
    return
  }
  
  if {$::tree(autorefresh$baseNumber)} {
    tree::select $move $baseNumber
  }
}

################################################################################
# close the corresponding base if it is flagged as locked
proc ::tree::closeTree {baseNumber} {
  global tree
  ::tree::mask::close
  
  ::tree::hideCtxtMenu $baseNumber
    #  .treeWin$baseNumber.buttons.stop invoke
  
  trace remove variable tree(bestMax$baseNumber) write "::tree::doTrace bestMax"
  trace remove variable tree(bestRes$baseNumber) write "::tree::doTrace bestRes"
  
  set ::geometry(treeWin$baseNumber) [wm geometry .treeWin$baseNumber]
  focus .
  
  if {$tree(autoSave$baseNumber)} {
    busyCursor .
    sc_tree write $tree(base$baseNumber)
    unbusyCursor .
  }
  
  if {[winfo exists .treeGraph$baseNumber]} { destroy .treeGraph$baseNumber }
  ::docking::cleanup .treeBest$baseNumber
  destroy .treeBest$baseNumber
  ::docking::cleanup .treeWin$baseNumber
  destroy .treeWin$baseNumber
  sc_tree clean $baseNumber
  if {$::tree(locked$baseNumber)} { ::file::Close $baseNumber }
  ::windows::gamelist::Refresh
  ::windows::stats::Refresh; 
}
################################################################################
proc ::tree::doTrace { prefix name1 name2 op} {
  if {[scan $name2 "$prefix%d" baseNumber] !=1 } {
    tk_messageBox -parent . -icon error -type ok -title "Fatal Error" \
        -message "Scan failed in trace code\ndoTrace $prefix $name1 $name2 $op"
    return
  }
  ::tree::best $baseNumber
}
################################################################################
proc ::tree::toggleTraining { baseNumber } {
  global tree
  
  for {set i 1 } {$i <= [sc_base count total]} {incr i} {
    if {! [winfo exists .treeWin$baseNumber] || $i == $baseNumber } { continue }
    set tree(training$i) 0
  }
  
  if {$tree(training$baseNumber)} {
    set ::tree::trainingBase $baseNumber
    ::tree::doTraining
  } else {
    set ::tree::trainingBase 0
    ::tree::refresh $baseNumber
  }
}

################################################################################
proc ::tree::doTraining { { n 0 } } {
  global tree
  if {$n != 1  &&  [winfo exists .analysisWin1]  &&  $::analysis(automove1)} {
    automove 1
    return
  }
  if {$n != 2  &&  [winfo exists .analysisWin2]  &&  $::analysis(automove2)} {
    automove 2
    return
  }
  if {[::tb::isopen]  &&  $::tbTraining} {
    ::tb::move
    return
  }
  if {! [winfo exists .treeWin$::tree::trainingBase]} { return }
  if { $::tree::trainingBase == 0 } { return }
  
  # Before issuing a training move, annotate player's move
  if { $::tree::mask::maskFile != ""  } {
    set move_done [sc_game info previousMoveNT]
    if {$move_done != ""} {
      sc_move back
      set fen [ ::tree::mask::toShortFen [sc_pos fen] ]
      sc_move forward
      if { [info exists ::tree::mask::mask($fen)] } {
        set moves [ lindex $::tree::mask::mask($fen) 0 ]
        
        # if move out of Mask, and there exists moves in Mask, set a warning
        if { ! [ ::tree::mask::moveExists $move_done $fen ] } {
          if {[llength $moves] != 0} {
            set txt ""
            foreach elt $moves {
              append txt "[::trans [lindex $elt 0]][lindex $elt 1] "
            }
            sc_pos setComment "[sc_pos getComment] Mask : $txt"
          }
        }
        
        # if move was bad, set a warning
        set nag_played [::tree::mask::getNag $move_done $fen]
        set nag_order { "??" " ?" "?!" $::tree::mask::emptyNag "!?" " !" "!!"}
        set txt ""
        foreach elt $moves {
          set n [lindex $elt 1]
          if { [lsearch $nag_order $nag_played] < [lsearch $nag_order $n]} {
            append txt "[::trans [lindex $elt 0]][lindex $elt 1] "
          }
        }
        if {$txt != ""} {
          sc_pos addNag [string trim $nag_played]
          sc_pos setComment "[sc_pos getComment] Mask : $txt"
        }
        
        # if move was on an exclude line, set a warning (img = ::rep::_tb_exclude)
        if { [::tree::mask::getImage $move_done 0] ==  "::rep::_tb_exclude" || \
              [::tree::mask::getImage $move_done 1] == "::rep::_tb_exclude"} {
          sc_pos setComment "[sc_pos getComment] Mask : excluded line"
        }
      }
    }
  }
  
  set move [sc_tree move $::tree::trainingBase random]
  addSanMove $move -animate -notraining
  updateBoard -pgn
}

################################################################################
proc ::tree::toggleLock { baseNumber } {
  ::tree::refresh $baseNumber
}

################################################################################
proc ::tree::select { move baseNumber } {
  global tree
  
  if {! [winfo exists .treeWin$baseNumber]} { return }
  
  catch { addSanMove $move -animate }
}

set tree(refresh) 0

################################################################################
proc ::tree::refresh { { baseNumber "" }} {
  set tree(refresh) 1
  if {$baseNumber == "" } {
    sc_tree search -cancel all
    for {set i [sc_base count total] } {$i > 0} {incr i -1} {
      if { [::tree::dorefresh $i] == "canceled" } { break }
    }
  } else {
    ::tree::dorefresh $baseNumber
  }
  set tree(refresh) 0
}

################################################################################
proc ::tree::dorefresh { baseNumber } {
  global tree treeWin glstart
  set w .treeWin$baseNumber
  
  if {![winfo exists $w]} { return }
  if { ! $tree(autorefresh$baseNumber) } { return }

  grid $w.progress -in $w.statusframe -column 0 -row 0 -sticky nsew
  
  sc_progressBar $w.progress bar [$w.progress cget -width] 100
  foreach button {best graph training allgames close} {
    $w.buttons.$button configure -state disabled
  }
  $w.buttons.stop configure -state normal
  
  set base $baseNumber
  
  if { $tree(fastmode$baseNumber) == 0 } {
    set fastmode 0
  } else {
    set fastmode 1
  }

  set filtered 0
  if { $tree(allgames$baseNumber) == 0 } {
    set filtered 1
  }
  
  set moves [sc_tree search -hide $tree(training$baseNumber) -sort $tree(order$baseNumber) -base $base -fastmode $fastmode -filtered $filtered]
  catch {$w.f.tl itemconfigure 0 -foreground darkBlue}

  foreach button {best graph training allgames close} {
    $w.buttons.$button configure -state normal
  }
  $w.buttons.stop configure -state disabled

  ::tree::status "" $baseNumber
  set glstart 1
  ::windows::stats::Refresh
  if {[winfo exists .treeGraph$baseNumber]} { ::tree::graph $baseNumber }
  ::windows::gamelist::Refresh
  updateTitle
  
  if { $moves == "canceled" } { return "canceled"}
  displayLines $baseNumber $moves  
  if {[winfo exists .treeBest$baseNumber]} { ::tree::best $baseNumber}
  
  # ========================================
  if { $tree(fastmode$baseNumber) == 2 } {
    ::tree::status "" $baseNumber
    sc_progressBar $w.progress bar [$w.progress cget -width] 100
    set moves [sc_tree search -hide $tree(training$baseNumber) -sort $tree(order$baseNumber) -base $base -fastmode $fastmode -filtered $filtered]
    displayLines $baseNumber $moves
  }
  # ========================================

  grid forget $w.progress
}

################################################################################
#
################################################################################
proc ::tree::displayLines { baseNumber moves } {
  global ::tree::mask::maskFile
  
  ::tree::mask::setCacheFenIndex
  
  set lMoves {}
  set w .treeWin$baseNumber
  
  $w.f.tl configure -state normal
  
  set moves [split $moves "\n"]
  
  # for the graph display
  set ::tree::treeData$baseNumber $moves
  
  set len [llength $moves]
  $w.f.tl delete 1.0 end
  
  foreach t [$w.f.tl tag names] {
    if { [ string match "tagclick*" $t ] || [ string match "tagtooltip*" $t ] } {
      $w.f.tl tag delete $t
    }
  }
  
  # Position comment
  set hasPositionComment 0
  if { $maskFile != "" } {
    set posComment [::tree::mask::getPositionComment]
    if {$posComment != ""} {
      set hasPositionComment 1
      set firstLine [ lindex [split $posComment "\n"] 0 ]
      $w.f.tl insert end "$firstLine\n" [ list bluefg tagtooltip_poscomment ]
      ::utils::tooltip::SetTag $w.f.tl $posComment tagtooltip_poscomment
      $w.f.tl tag bind tagtooltip_poscomment <Double-Button-1> "::tree::mask::addComment"
    }
  }
  
  # Display the first line
  if { $maskFile != "" } {
    $w.f.tl image create end -image ::tree::mask::emptyImage -align center
    $w.f.tl image create end -image ::tree::mask::emptyImage -align center
    $w.f.tl insert end "    "
    $w.f.tl tag bind tagclick0 <ButtonPress-$::MB3> "::tree::mask::contextMenu $w.f.tl dummy %x %y %X %Y ; break"
  }
  $w.f.tl insert end "[lindex $moves 0]\n" tagclick0
  
  for { set i 1 } { $i < [expr $len - 3 ] } { incr i } {
    set line [lindex $moves $i]
    if {$line == ""} { continue }
    set move [lindex $line 1]
    set move [::untrans $move]
    lappend lMoves $move
    set colorScore [::tree::getColorScore $line]
    if { $move == "\[end\]" } { set colorScore "" }
    
    set tagfg ""
    
    if { $maskFile != "" && $i > 0 && $i < [expr $len - 3] } {
      if { [::tree::mask::moveExists $move] } {
        set tagfg "bluefg"
      }
    }
    if { $maskFile != "" } {
      if { $i > 0 && $i < [expr $len - 3] && $move != "\[end\]" } {
        # images
        foreach j { 0 1 } {
          set img [::tree::mask::getImage $move $j]
          $w.f.tl image create end -image $img -align center
        }
        # color tag
        $w.f.tl tag configure color$i -background [::tree::mask::getColor $move]
        $w.f.tl insert end "  " color$i
        # NAG tag
        $w.f.tl insert end [::tree::mask::getNag $move]
      } else  {
        $w.f.tl image create end -image ::tree::mask::emptyImage -align center
        $w.f.tl image create end -image ::tree::mask::emptyImage -align center
        $w.f.tl insert end "    "
      }
    }
    
    # Move and stats
    if {[expr $i % 2] && $i < [expr $len -3] } {
      $w.f.tl insert end "$line" [list greybg $tagfg tagtooltip$i]
    } else  {
      $w.f.tl insert end "$line" [list whitebg $tagfg tagtooltip$i]
    }
    if {$colorScore != ""} {
      $w.f.tl tag add $colorScore end-30c end-26c
    }
    if {$move != "" && $move != "---" && $move != "\[end\]" && $i != [expr $len -2] && $i != 0} {
      $w.f.tl tag bind tagclick$i <Button-1> "[list ::tree::selectCallback $baseNumber $move ] ; break"
    }
    
    if { $maskFile != "" } {
      # Move comment
      set comment [::tree::mask::getComment $move]
      if {$comment != ""} {
        set firstLine [ lindex [split $comment "\n"] 0 ]
        $w.f.tl insert end " $firstLine" tagtooltip$i
        ::utils::tooltip::SetTag $w.f.tl $comment tagtooltip$i
        $w.f.tl tag bind tagtooltip$i <Double-Button-1> "::tree::mask::addComment $move"
      }
    }
    
    if { $maskFile != "" } {
      # Bind right button to popup a contextual menu:
      $w.f.tl tag bind tagclick$i <ButtonPress-$::MB3> "::tree::mask::contextMenu $w.f.tl $move %x %y %X %Y ; break"
    }
    $w.f.tl tag add tagclick$i [expr $i +1 + $hasPositionComment].0 [expr $i + 1 + $hasPositionComment].end
    
    $w.f.tl insert end "\n"
    
  } ;# end for loop
  
  # Display the last lines (total)
  for { set i [expr $len - 3 ] } { $i < [expr $len - 1 ] } { incr i } {
    if { $maskFile != "" } {
      $w.f.tl image create end -image ::tree::mask::emptyImage -align center
      $w.f.tl image create end -image ::tree::mask::emptyImage -align center
      $w.f.tl insert end "    "
    }
    $w.f.tl insert end "[lindex $moves $i]\n"
  }
  
  # Add moves present in Mask and not in Tree
  set idx $len
  if { $maskFile != "" } {
    set movesMask [::tree::mask::getAllMoves]
    foreach m $movesMask {
      if {  [ scan [$w.f.tl index end] "%d.%d" currentLine dummy] != 2 } {
        puts "ERROR scan index end [$w.f.tl index end]"
      }
      # move nag color move_anno
      if {[lsearch $lMoves [lindex $m 0]] != -1 || [lindex $m 0] == "null"} {
        continue
      }
      
      $w.f.tl tag bind tagclick$idx <Button-1> "[list ::tree::selectCallback $baseNumber [lindex $m 0] ] ; break"
      # images
      foreach j {4 5} {
        if {[lindex $m $j] == ""} {
          $w.f.tl image create end -image ::tree::mask::emptyImage -align center
        } else  {
          $w.f.tl image create end -image [lindex $m $j] -align center
        }
      }
      
      # color tag
      $w.f.tl tag configure color$idx -background [lindex $m 2]
      $w.f.tl insert end "  " color$idx
      # NAG tag
      $w.f.tl insert end [::tree::mask::getNag [lindex $m 0]]
      # move
      $w.f.tl insert end "[::trans [lindex $m 0] ]" bluefg
      # comment
      set comment [lindex $m 3]
      set firstLine [ lindex [split $comment "\n"] 0 ]
      $w.f.tl insert end " $firstLine\n" tagtooltip$idx
      ::utils::tooltip::SetTag $w.f.tl $comment tagtooltip$idx
      
      # Bind right button to popup a contextual menu:
      $w.f.tl tag bind tagclick$idx <ButtonPress-$::MB3> "::tree::mask::contextMenu $w.f.tl  [lindex $m 0] %x %y %X %Y ; break"
      $w.f.tl tag add tagclick$idx [ expr $currentLine -1].0 [ expr $currentLine -1].end
      incr idx
    }
  }
  
  $w.f.tl configure -state disabled
}
################################################################################
# returns a list with (ngames freq success eloavg perf) or
# {} if there was a problem during parsing
# 1: e4     B00     37752: 47.1%   54.7%  2474  2513  2002   37%
################################################################################
proc ::tree::getLineValues { l } {
  set ret {}
  if {[scan [string range $l 14 24] "%d:" ngames] != 1} {
    return {}
  } else  {
    lappend ret $ngames
  }
  
  if {[scan [string range $l 25 29] "%f%%" freq] != 1} {
    return {}
  } else  {
    lappend ret $freq
  }
  
  if {[scan [string range $l 33 37] "%f%%" success] != 1} {
    return {}
  } else  {
    lappend ret $success
  }
  
  if {[scan [string range $l 40 44] "%d" eloavg] != 1} {
    return {}
  } else  {
    lappend ret $eloavg
  }
  
  if {[scan [string range $l 46 50] "%d" perf] != 1} {
    return {}
  } else  {
    lappend ret $perf
  }
  
  return $ret
}
################################################################################
# returns the color to use for score (red, green) or ""
################################################################################
proc ::tree::getColorScore { line } {
  set data [::tree::getLineValues $line]
  if { $data == {} } { return "" }
  set ngames [lindex $data 0]
  set freq [lindex $data 1]
  set success [lindex $data 2]
  set eloavg [lindex $data 3]
  set perf [lindex $data 4]
  if { $ngames < $::tree::scoreHighlight_MinGames } {
    return ""
  }
  set wavg [ expr 50 + $::tree::scoreHighlight_WhiteExpectedScoreBonus ]
  set bavg [ expr 50 - $::tree::scoreHighlight_WhiteExpectedScoreBonus ]
  if { [sc_pos side] == "white" && $success > [ expr $wavg + $::tree::scoreHighlight_Margin ] || \
        [sc_pos side] == "black" && $success < [ expr $wavg - $::tree::scoreHighlight_Margin ] } {
    return greenfg
  }
  if { [sc_pos side] == "white" && $success < [ expr $wavg - $::tree::scoreHighlight_Margin ] || \
        [sc_pos side] == "black" && $success > [ expr $wavg + $::tree::scoreHighlight_Margin ] } {
    return redfg
  }
  return ""
}
################################################################################
proc ::tree::status { msg baseNumber } {
  
  global tree
  if {$msg != ""} {
    set tree(status$baseNumber) $msg
    return
  }
  set s "  $::tr(Database)"
  # set base [sc_base current]
  # if {$tree(locked$baseNumber)} { set base $tree(base$baseNumber) }
  set base $baseNumber
  set status "  $::tr(Database) $base: [file tail [sc_base filename $base]]"
  if {$tree(locked$baseNumber)} { append status " ($::tr(TreeLocked))" }
  if {! $tree(allgames$baseNumber)} {
    append status "   $::tr(Filter)"
    append status ": [filterText $base]"
  }
  set tree(status$baseNumber) $status
}

################################################################################
set tree(standardLines) {
  {}
  {1.c4}
  {1.c4 c5}
  {1.c4 c5 2.Nf3}
  {1.c4 e5}
  {1.c4 Nf6}
  {1.c4 Nf6 2.Nc3}
  {1.d4}
  {1.d4 d5}
  {1.d4 d5 2.c4}
  {1.d4 d5 2.c4 c6}
  {1.d4 d5 2.c4 c6 3.Nf3}
  {1.d4 d5 2.c4 c6 3.Nf3 Nf6}
  {1.d4 d5 2.c4 c6 3.Nf3 Nf6 4.Nc3}
  {1.d4 d5 2.c4 c6 3.Nf3 Nf6 4.Nc3 dxc4}
  {1.d4 d5 2.c4 c6 3.Nf3 Nf6 4.Nc3 e6}
  {1.d4 d5 2.c4 c6 3.Nf3 Nf6 4.Nc3 e6 5.e3}
  {1.d4 d5 2.c4 e6}
  {1.d4 d5 2.c4 e6 3.Nc3}
  {1.d4 d5 2.c4 e6 3.Nc3 Nf6}
  {1.d4 d5 2.c4 e6 3.Nf3}
  {1.d4 d5 2.c4 dxc4}
  {1.d4 d5 2.c4 dxc4 3.Nf3}
  {1.d4 d5 2.c4 dxc4 3.Nf3 Nf6}
  {1.d4 d5 2.Nf3}
  {1.d4 d5 2.Nf3 Nf6}
  {1.d4 d5 2.Nf3 Nf6 3.c4}
  {1.d4 d6}
  {1.d4 d6 2.c4}
  {1.d4 Nf6}
  {1.d4 Nf6 2.c4}
  {1.d4 Nf6 2.c4 c5}
  {1.d4 Nf6 2.c4 d6}
  {1.d4 Nf6 2.c4 e6}
  {1.d4 Nf6 2.c4 e6 3.Nc3}
  {1.d4 Nf6 2.c4 e6 3.Nc3 Bb4}
  {1.d4 Nf6 2.c4 e6 3.Nf3}
  {1.d4 Nf6 2.c4 g6}
  {1.d4 Nf6 2.c4 g6 3.Nc3}
  {1.d4 Nf6 2.c4 g6 3.Nc3 Bg7}
  {1.d4 Nf6 2.c4 g6 3.Nc3 Bg7 4.e4}
  {1.d4 Nf6 2.c4 g6 3.Nc3 Bg7 4.e4 d6}
  {1.d4 Nf6 2.c4 g6 3.Nc3 Bg7 4.e4 d6 5.Nf3}
  {1.d4 Nf6 2.c4 g6 3.Nc3 Bg7 4.e4 d6 5.Nf3 O-O}
  {1.d4 Nf6 2.c4 g6 3.Nc3 Bg7 4.e4 d6 5.Nf3 O-O 6.Be2}
  {1.d4 Nf6 2.c4 g6 3.Nf3}
  {1.d4 Nf6 2.Bg5}
  {1.d4 Nf6 2.Bg5 Ne4}
  {1.d4 Nf6 2.Nf3}
  {1.d4 Nf6 2.Nf3 e6}
  {1.d4 Nf6 2.Nf3 g6}
  {1.e4}
  {1.e4 c5}
  {1.e4 c5 2.c3}
  {1.e4 c5 2.c3 d5}
  {1.e4 c5 2.c3 Nf6}
  {1.e4 c5 2.Nc3}
  {1.e4 c5 2.Nc3 Nc6}
  {1.e4 c5 2.Nf3}
  {1.e4 c5 2.Nf3 d6}
  {1.e4 c5 2.Nf3 d6 3.d4}
  {1.e4 c5 2.Nf3 d6 3.d4 cxd4}
  {1.e4 c5 2.Nf3 d6 3.d4 cxd4 4.Nxd4}
  {1.e4 c5 2.Nf3 d6 3.d4 cxd4 4.Nxd4 Nf6}
  {1.e4 c5 2.Nf3 d6 3.d4 cxd4 4.Nxd4 Nf6 5.Nc3}
  {1.e4 c5 2.Nf3 d6 3.d4 cxd4 4.Nxd4 Nf6 5.Nc3 a6}
  {1.e4 c5 2.Nf3 d6 3.d4 cxd4 4.Nxd4 Nf6 5.Nc3 e6}
  {1.e4 c5 2.Nf3 d6 3.d4 cxd4 4.Nxd4 Nf6 5.Nc3 g6}
  {1.e4 c5 2.Nf3 d6 3.d4 cxd4 4.Nxd4 Nf6 5.Nc3 Nc6}
  {1.e4 c5 2.Nf3 d6 3.Bb5+}
  {1.e4 c5 2.Nf3 e6}
  {1.e4 c5 2.Nf3 Nc6}
  {1.e4 c5 2.Nf3 Nc6 3.d4}
  {1.e4 c5 2.Nf3 Nc6 3.Bb5}
  {1.e4 c6}
  {1.e4 c6 2.d4}
  {1.e4 c6 2.d4 d5}
  {1.e4 c6 2.d4 d5 3.e5}
  {1.e4 c6 2.d4 d5 3.Nc3}
  {1.e4 c6 2.d4 d5 3.Nd2}
  {1.e4 d5}
  {1.e4 d6}
  {1.e4 d6 2.d4}
  {1.e4 d6 2.d4 Nf6}
  {1.e4 d6 2.d4 Nf6 3.Nc3}
  {1.e4 e5}
  {1.e4 e5 2.Nf3}
  {1.e4 e5 2.Nf3 Nc6}
  {1.e4 e5 2.Nf3 Nc6 3.d4}
  {1.e4 e5 2.Nf3 Nc6 3.Bb5}
  {1.e4 e5 2.Nf3 Nc6 3.Bb5 a6}
  {1.e4 e5 2.Nf3 Nc6 3.Bb5 a6 4.Ba4}
  {1.e4 e5 2.Nf3 Nc6 3.Bb5 a6 4.Ba4 Nf6}
  {1.e4 e5 2.Nf3 Nc6 3.Bb5 a6 4.Ba4 Nf6 5.O-O}
  {1.e4 e5 2.Nf3 Nc6 3.Bc4}
  {1.e4 e5 2.Nf3 Nf6}
  {1.e4 e6}
  {1.e4 e6 2.d4}
  {1.e4 e6 2.d4 d5}
  {1.e4 e6 2.d4 d5 3.Nc3}
  {1.e4 e6 2.d4 d5 3.Nc3 Bb4}
  {1.e4 e6 2.d4 d5 3.Nc3 Nf6}
  {1.e4 e6 2.d4 d5 3.Nd2}
  {1.e4 e6 2.d4 d5 3.Nd2 c5}
  {1.e4 e6 2.d4 d5 3.Nd2 Nf6}
  {1.e4 Nf6}
  {1.e4 Nf6 2.e5}
  {1.e4 Nf6 2.e5 Nd5}
  {1.Nf3}
  {1.Nf3 Nf6}
}
# if there is a treecache file source it, otherwise use hard coded
# values above
set scidConfigFiles(treecache) "treecache.dat"
catch {source [scidConfigFile treecache]}

################################################################################
# ::tree::prime
#   Primes the tree for this database, filling it with a number of
#   common opening positions.
#
proc ::tree::prime { baseNumber } {
  global tree
  if {! [winfo exists .treeWin$baseNumber]} { return }
  
  set base $baseNumber
  if {$tree(locked$baseNumber)} { set base $tree(base$baseNumber) }
  if {! [sc_base inUse]} { return }
  set fname [sc_base filename $base]
  if {[string index $fname 0] == "\["  ||  [file extension $fname] == ".pgn"} {
    tk_messageBox -parent .treeWin$baseNumber -icon info -type ok -title "Scid" \
        -message "Sorry, only Scid-format database files can have a tree cache file."
    return
  }
  
  set ::interrupt 0
  progressWindow "Scid: [tr TreeFileFill]" "" $::tr(Cancel) {set ::interrupt 1}
  resetProgressWindow
  leftJustifyProgressWindow
  busyCursor .
  sc_game push
  set i 1
  set len [llength $tree(standardLines)]
  foreach line $tree(standardLines) {
    sc_game new
    set text [format "%3d/\%3d" $i $len]
    if {[llength $line] > 0}  {
      sc_move addSan $line
      changeProgressWindow "$text: $line"
    } else {
      changeProgressWindow "$text: start position"
    }
    sc_tree search -base $base -fastmode 0
    updateProgressWindow $i $len
    incr i
    if {$::interrupt} {
      closeProgressWindow
      set ::interrupt 0
      sc_game pop
      unbusyCursor .
      ::tree::refresh $baseNumber
      return
    }
  }
  closeProgressWindow
  if {[catch {sc_tree write $base} result]} {
    #tk_messageBox -type ok -icon warning -title "Scid: Error writing file" -message $result
  } else {
    #set a "$fname.stc: [sc_tree positions] positions, "
    #append a "$result bytes: "
    #set pergame [expr double($result) / double([sc_base numGames])]
    #append a [format "%.2f" $pergame]
    #append a " bytes per game"
    #tk_messageBox -type ok -parent .treeWin -title "Scid" -message $a
  }
  sc_game pop
  unbusyCursor .
  ::tree::refresh $baseNumber
}

################################################################################
# ::tree::best
#   Updates the window of best (highest-rated) tree games.
#   bpress: the button/menu was selected => bring window to front
#
proc ::tree::best { baseNumber {bpress 0}} {
  if {! [winfo exists .treeWin$baseNumber]} { return }

  set w .treeBest$baseNumber
  if {$bpress && [::createToplevel $w] != "already_exists"} {
    ::setTitle $w "Scid: $::tr(TreeBestGames) $baseNumber: [file tail [sc_base filename $baseNumber]]"
    bind $w <Configure> "recordWinSize $w"
    glist.create $w "best"
    createToplevelFinalize $w
  }

  glist.update $w $::tree(base$baseNumber) tree
}


################################################################################
# ::tree::graph
#   Updates the tree graph window, creating it if necessary.
#   bpress: the button/menu was selected => bring window to front
#
proc ::tree::graph { baseNumber {bpress 0}} {
  set w .treeGraph$baseNumber
  if {! [winfo exists .treeWin$baseNumber]} { return }
  if {! [winfo exists $w]} {
    toplevel $w
    setWinLocation $w
    bind $w <Escape> "destroy $w"
    bind $w <F1> {helpWindow Tree Graph}
    
    menu $w.menu
    $w configure -menu $w.menu
    $w.menu add cascade -label GraphFile -menu $w.menu.file
    menu $w.menu.file
    $w.menu.file add command -label GraphFileColor -command "saveGraph color $w.c"
    $w.menu.file add command -label GraphFileGrey -command "saveGraph gray $w.c"
    $w.menu.file add separator
    $w.menu.file add command -label GraphFileClose -command "destroy $w"
    
    canvas $w.c -width 500 -height 300
    pack $w.c -side top -fill both -expand yes
    $w.c create text 25 10 -tag text -justify center -width 1 -font font_Regular -anchor n
    update
    bind $w <Configure> " \
        .treeGraph$baseNumber.c itemconfigure text -width [expr {[winfo width .treeGraph$baseNumber.c] - 50}] ;\
        .treeGraph$baseNumber.c coords text [expr {[winfo width .treeGraph$baseNumber.c] / 2}] 10 ;\
        ::utils::graph::configure tree$baseNumber -height [expr {[winfo height .treeGraph$baseNumber.c] - 100}] ;\
        ::utils::graph::configure tree$baseNumber -width [expr {[winfo width .treeGraph$baseNumber.c] - 50}] ;\
        ::utils::graph::redraw tree$baseNumber "
    bind $w.c <Button-1> "::tree::graph $baseNumber"
    ::setTitle $w "Scid: Tree Graph $baseNumber: [file tail [sc_base filename $baseNumber]]"
    # wm minsize $w 300 200
    standardShortcuts $w
    ::tree::configGraphMenus "" $baseNumber
  } elseif {$bpress == 1} {
    focus $w
    raise $w
  }

  $w.c itemconfigure text -width [expr {[winfo width $w.c] - 50}]
  $w.c coords text [expr {[winfo width $w.c] / 2}] 10
  set height [expr {[winfo height $w.c] - 100}]
  set width [expr {[winfo width $w.c] - 50}]
  ::utils::graph::create tree$baseNumber -width $width -height $height -xtop 25 -ytop 60 \
      -xmin 0.5 -xtick 1 -ytick 5 -font font_Small -canvas $w.c
  
  set data {}
  set xlabels {}
  set othersCount 0
  set numOthers 0
  set othersName "..."
  set count 0
  set othersScore 0.0
  set mean 50.0
  set totalGames 0
  set treeData [subst $[subst {::tree::treeData$baseNumber} ] ]
  # [.treeWin$baseNumber.f.tl get 0 end]
  
  set numTreeLines [llength $treeData]
  set totalLineIndex [expr $numTreeLines - 2]
  
  for {set i 0} {$i < [llength $treeData]} {incr i} {
    # Extract info from each line of the tree window:
    # Note we convert "," decimal char back to "." where necessary.
    set line [lindex $treeData $i]
    set mNum [string trim [string range $line  0  1]]
    set freq [string trim [string range $line 17 23]]
    set fpct [string trim [string range $line 25 29]]
    regsub -all {,} $fpct . fpct
    set move [string trim [string range $line  4 9]]
    set score [string trim [string range $line 33 37]]
    regsub -all {,} $score . score
    if {$score > 99.9} { set score 99.9 }
    # Check if this line is "TOTAL:" line:
    if {$i == $totalLineIndex} {
      set mean $score
      set totalGames $freq
    }
    # Add info for this move to the graph if necessary:
    if {[string index $line 2] == ":"  &&  [string compare "<end>" $move]} {
      if {$fpct < 1.0  ||  $freq < 5  ||  $i > 5} {
        incr othersCount $freq
        incr numOthers
        set othersScore [expr {$othersScore + (double($freq) * $score)}]
        set m $move
        if {$numOthers > 1} { set m "..." }
      } else {
        incr count
        lappend data $count
        lappend data $score
        lappend xlabels [list $count "$move ([expr round($score)]%)\n$freq: [expr round($fpct)]%"]
      }
    }
  }
  
  # Add extra bar for other moves if necessary:
  if {$numOthers > 0  &&  $totalGames > 0} {
    incr count
    set fpct [expr {double($othersCount) * 100.0 / double($totalGames)}]
    set sc [expr {round($othersScore / double($othersCount))}]
    set othersName "$m ($sc%)\n$othersCount: [expr round($fpct)]%"
    lappend data $count
    lappend data [expr {$othersScore / double($othersCount)}]
    lappend xlabels [list $count $othersName]
  }
  
  # Plot fake bounds data so graph at least shows range 40-65:
  ::utils::graph::data tree$baseNumber bounds -points 0 -lines 0 -bars 0 -coords {1 41 1 64}
  
  # Replot the graph:
  ::utils::graph::data tree$baseNumber data -color red -points 0 -lines 0 -bars 1 \
      -barwidth 0.75 -outline black -coords $data
  ::utils::graph::configure tree$baseNumber -xlabels $xlabels -xmax [expr {$count + 0.5}] \
      -hline [list {gray80 1 each 5} {gray50 1 each 10} {black 2 at 50} \
      {black 1 at 55} [list red 2 at $mean]] \
      -brect [list [list 0.5 55 [expr {$count + 0.5}] 50 LightSkyBlue1]]
  
  ::utils::graph::redraw tree$baseNumber
  set moves ""
  catch {set moves [sc_game firstMoves 0 -1]}
  if {[string length $moves] == 0} { set moves $::tr(StartPos) }
  set title "$moves ([::utils::thousands $totalGames] $::tr(games))"
  $w.c itemconfigure text -text $title
}

################################################################################
proc ::tree::configGraphMenus { lang baseNumber } {
  if {! [winfo exists .treeGraph$baseNumber]} { return }
  if {$lang == ""} { set lang $::language }
  set m .treeGraph$baseNumber.menu
  foreach idx {0} tag {File} {
    configMenuText $m $idx Graph$tag $lang
  }
  foreach idx {0 1 3} tag {Color Grey Close} {
    configMenuText $m.file $idx GraphFile$tag $lang
  }
}

# ################################################################################
proc ::tree::toggleRefresh { baseNumber } {
  global tree
  set b .treeWin$baseNumber.buttons.bStartStop
  
  if {$tree(autorefresh$baseNumber)} {
    $b configure -image engine_off
    set tree(autorefresh$baseNumber) 0
  } else  {
    $b configure -image engine_on
    set tree(autorefresh$baseNumber) 1
    ::tree::refresh $baseNumber
  }
}
################################################################################
#
################################################################################
proc ::tree::setCacheSize { base size } {
  sc_tree cachesize $base $size
}
################################################################################
#
################################################################################
proc ::tree::getCacheInfo { base } {
  set ci [sc_tree cacheinfo $base]
  tk_messageBox -title "Scid" -type ok -icon info \
      -message "Cache used : [lindex $ci 0] / [lindex $ci 1]"
  
}
################################################################################
# will go through all moves of all games of current base
################################################################################
set ::tree::cancelPrime 0

proc ::tree::primeWithBase {{ fillMask 0 }} {
  set ::tree::cancelPrime 0
  for {set g 1} { $g <= [sc_base numGames]} { incr g} {
    sc_game load $g
    ::tree::primeWithGame $fillMask
    if {$::tree::cancelPrime } { return }
  }
}
################################################################################
#
################################################################################
proc ::tree::primeWithGame { { fillMask 0 } } {
  set ::tree::totalMoves [countBaseMoves "singleGame" ]
  sc_move start
  if {$fillMask} { ::tree::mask::feedMask [ sc_pos fen ] }
  
  set ::tree::parsedMoves 0
  set ::tree::cancelPrime 0
  progressWindow "Scid: [tr TreeFileFill]" "$::tree::totalMoves moves" $::tr(Cancel) {
    set ::tree::cancelPrime 1
    for {set i 1 } {$i <= [sc_base count total]} {incr i} {
      catch { .treeWin$i.buttons.stop invoke }
    }
  }
  resetProgressWindow
  leftJustifyProgressWindow
  ::tree::parseGame $fillMask
  closeProgressWindow
  updateBoard -pgn
}

################################################################################
# parse one game and fill the list
################################################################################
proc ::tree::parseGame {{ fillMask 0 }} {
  if {$::tree::cancelPrime } { return  }
  ::tree::refresh
  if {$::tree::cancelPrime } { return }
  while {![sc_pos isAt vend]} {
    updateProgressWindow $::tree::parsedMoves $::tree::totalMoves
    
    # Go through all variants
    for {set v 0} {$v<[sc_var count]} {incr v} {
      # enter each var (beware the first move is played)
      set fen [ sc_pos fen ]
      sc_var enter $v
      if {$fillMask} { ::tree::mask::feedMask $fen }
      if {$::tree::cancelPrime } { return }
      if {$::tree::cancelPrime } { return }
      ::tree::parseVar $fillMask
      if {$::tree::cancelPrime } { return }
    }
    # now treat the main line
    set fen [ sc_pos fen ]
    sc_move forward
    if {$fillMask} { ::tree::mask::feedMask $fen }
    incr ::tree::parsedMoves
    if {$::tree::cancelPrime } { return }
    if {$::tree::cancelPrime } { return }
  }
}
################################################################################
# parse recursively variants.
################################################################################
proc ::tree::parseVar {{ fillMask 0 }} {
  while {![sc_pos isAt vend]} {
    # Go through all variants
    for {set v 0} {$v<[sc_var count]} {incr v} {
      set fen [ sc_pos fen ]
      sc_var enter $v
      if {$fillMask} { ::tree::mask::feedMask $fen }
      if {$::tree::cancelPrime } { return }
      if {$::tree::cancelPrime } { return }
      # we are at the start of a var, before the first move : start recursive calls
      parseVar $fillMask
      if {$::tree::cancelPrime } { return }
    }
    
    set fen [ sc_pos fen ]
    sc_move forward
    if {$fillMask} { ::tree::mask::feedMask $fen }
    incr ::tree::parsedMoves
    updateProgressWindow $::tree::parsedMoves $::tree::totalMoves
    if {$::tree::cancelPrime } { return }
    if {$::tree::cancelPrime } { return }
  }
  
  sc_var exit
}
################################################################################
# count moves that will fill the cache
################################################################################
proc ::tree::countBaseMoves { {args ""} } {
  set ::tree::total 0
  
  ################################################################################
  proc countParseGame {} {
    sc_move start
    
    while {![sc_pos isAt vend]} {
      for {set v 0} {$v<[sc_var count]} {incr v} {
        sc_var enter $v
        countParseVar
      }
      sc_move forward
      incr ::tree::total
    }
  }
  ################################################################################
  proc countParseVar {} {
    while {![sc_pos isAt vend]} {
      for {set v 0} {$v<[sc_var count]} {incr v} {
        sc_var enter $v
        countParseVar
        incr ::tree::total
      }
      sc_move forward
      incr ::tree::total
    }
    sc_var exit
  }
  
  if {$args == "singleGame"} {
    countParseGame
  } else {
    for {set g 1} { $g <= [sc_base numGames]} { incr g} {
      sc_game load $g
      countParseGame
    }
  }
  return $::tree::total
}

################################################################################
#
#                                 Mask namespace
#
#  All function calls with move in english
#  Images are 17x17
################################################################################
namespace eval ::tree::mask {
  
  # mask(fen) contains data for a position <fen> : ( moves, comment )
  # where moves is ( move nag color move_anno img1 img2 )
  array set mask {}
  set maskSerialized {}
  set maskFile ""
  set defaultColor white
  set emptyNag "  "
  set textComment ""
  set cacheFenIndex -1
  set dirty 0 ; # if Mask data has changed
  # Mask Search
  set searchMask_usenag 0
  set searchMask_usemarker0 0
  set searchMask_usemarker1 0
  set searchMask_usecolor 0
  set searchMask_usemovecomment 0
  set searchMask_useposcomment 0
  set displayMask_showNag 1
  set displayMask_showComment 1
  
  array set marker2image { Include ::rep::_tb_include Exclude ::rep::_tb_exclude MainLine ::tree::mask::imageMainLine Bookmark tb_bkm \
        White ::tree::mask::imageWhite Black ::tree::mask::imageBlack \
        NewLine tb_new ToBeVerified tb_rfilter ToTrain tb_msearch Dubious tb_help ToRemove tb_cut }
  set maxRecent 10
}
################################################################################
#
################################################################################
proc ::tree::mask::open { {filename ""} } {
  global ::tree::mask::maskSerialized ::tree::mask::mask ::tree::mask::recentMask
  
  if {$filename == ""} {
    set types {
      {{Tree Mask Files}       {.stm}        }
    }
    set filename [tk_getOpenFile -initialdir $::initialDir(stm) -filetypes $types -defaultextension ".stm"]
	 set ::initialDir(stm) [file dirname $filename]
  }
  
  if {$filename != ""} {
    ::tree::mask::askForSave
    array unset ::tree::mask::mask
    array set ::tree::mask::mask {}
    source $filename
    array set mask $maskSerialized
    set maskSerialized {}
    set ::tree::mask::maskFile $filename
    set ::tree::mask::dirty 0
    ::tree::refresh
    
    if { [lsearch $recentMask $filename ] == -1 } {
      set recentMask [ linsert $recentMask 0 $filename]
      if {[llength $recentMask] > $::tree::mask::maxRecent } {
        set recentMask [ lreplace $recentMask  [ expr $::tree::mask::maxRecent -1 ] end ]
      }
      
      # update recent masks menu entry
      for {set i 1} {$i <= [sc_base count total]} {incr i} {
        set w .treeWin$i
        if { [winfo exists $w] } {
          $w.menu.mask.recent delete 0 end
          foreach f $::tree::mask::recentMask {
            $w.menu.mask.recent add command -label $f -command "::tree::mask::open $f"
          }
        }
      }
      
    }
  }
  
}
################################################################################
#
################################################################################
proc ::tree::mask::askForSave {} {
  if {$::tree::mask::dirty} {
    set answer [tk_messageBox -title Scid -icon warning -type yesno \
        -message "[ tr DoYouWantToSaveFirst ]\n$::tree::mask::maskFile ?"]
    if {$answer == "yes"} {
      ::tree::mask::save
    }
  }
}
################################################################################
#
################################################################################
proc ::tree::mask::new {} {
  
  set types {
    {{Tree Mask Files}       {.stm}        }
  }
  set filename [tk_getSaveFile -filetypes $types -defaultextension ".stm"]
  
  if {$filename != ""} {
    if {[file extension $filename] != ".stm" } {
      append filename ".stm"
    }
    ::tree::mask::askForSave
    set ::tree::mask::dirty 0
    set ::tree::mask::maskFile $filename
    array unset ::tree::mask::mask
    array set ::tree::mask::mask {}
    ::tree::refresh
  }
}
################################################################################
#
################################################################################
proc ::tree::mask::close {} {
  if { $::tree::mask::maskFile == "" } {
    return
  }
  ::tree::mask::askForSave
  set ::tree::mask::dirty 0
  array unset ::tree::mask::mask
  array set ::tree::mask::mask {}
  set ::tree::mask::maskFile ""
  ::tree::refresh
}
################################################################################
#
################################################################################
proc ::tree::mask::save {} {
  set f [ ::open $::tree::mask::maskFile w ]
  puts $f "set ::tree::mask::maskSerialized [list [array get ::tree::mask::mask]]"
  ::close $f
  set ::tree::mask::dirty 0
}
################################################################################
#
################################################################################
proc ::tree::mask::contextMenu {win move x y xc yc} {
  update idletasks
  
  set mctxt $win.ctxtMenu
  if { [winfo exists $mctxt] } {
    destroy $mctxt
  }
  
  if {$move == "dummy"} {
    set state "disabled"
  } else  {
    set state "normal"
  }
  menu $mctxt
  $mctxt add command -label [tr AddToMask] -command "::tree::mask::addToMask $move" -state $state
  $mctxt add command -label [tr RemoveFromMask] -command "::tree::mask::removeFromMask $move" -state $state
  $mctxt add separator
  
  menu $mctxt.nag
  $mctxt add cascade -label [tr Nag] -menu $mctxt.nag -state $state
  
  foreach nag [ list "!!" " !" "!?" "?!" " ?" "??" " ~" [::tr "None"]  ] {
    $mctxt.nag add command -label $nag -command "::tree::mask::setNag [list $move $nag]" -state $state
  }
  
  foreach j { 0 1 } {
    menu $mctxt.image$j
    $mctxt add cascade -label "[tr Marker] [expr $j +1]" -menu $mctxt.image$j -state $state
    foreach e { Include Exclude MainLine Bookmark White Black NewLine ToBeVerified ToTrain Dubious ToRemove } {
      set i  $::tree::mask::marker2image($e)
      $mctxt.image$j add command -label [ tr $e ] -image $i -compound left -command "::tree::mask::setImage $move $i $j"
    }
    $mctxt.image$j add command -label [tr NoMarker] -command "::tree::mask::setImage $move {} $j"
  }
  menu $mctxt.color
  $mctxt add cascade -label [tr ColorMarker] -menu $mctxt.color  -state $state
  foreach c { "White" "Green" "Yellow" "Blue" "Red"} {
    $mctxt.color add command -label [ tr "${c}Mark" ] -background $c -command "::tree::mask::setColor $move $c"
  }
  
  $mctxt add separator
  $mctxt add command -label [ tr CommentMove] -command "::tree::mask::addComment $move" -state $state
  $mctxt add command -label [ tr CommentPosition] -command "::tree::mask::addComment"
  
  $mctxt add separator
  set lMatchMoves [sc_pos matchMoves ""]
  if {[llength $lMatchMoves ] > 16} {
    # split the moves in several menus
    for {set idxMenu 0} { $idxMenu <= [expr int([llength $lMatchMoves ] / 16) ]} {incr idxMenu} {
      menu $mctxt.matchmoves$idxMenu
      $mctxt add cascade -label "[ tr AddThisMoveToMask ] ([expr $idxMenu + 1 ])" -menu $mctxt.matchmoves$idxMenu
      for {set i 0} {$i < 16} {incr i} {
        if {[expr $i + $idxMenu * 16 +1] > [llength $lMatchMoves ] } {
          break
        }
        set m [lindex $lMatchMoves [expr $i + $idxMenu * 16]]
        if {$m == "OK"} { set m "O-O" }
        if {$m == "OQ"} { set m "O-O-O" }
        $mctxt.matchmoves$idxMenu add command -label [::trans $m] -command "::tree::mask::addToMask $m"
      }
    }
  } else  {
    menu $mctxt.matchmoves
    $mctxt add cascade -label [ tr AddThisMoveToMask ] -menu $mctxt.matchmoves
    foreach m [sc_pos matchMoves ""] {
      if {$m == "OK"} { set m "O-O" }
      if {$m == "OQ"} { set m "O-O-O" }
      $mctxt.matchmoves add command -label [::trans $m] -command "::tree::mask::addToMask $m"
    }
  }
  
  $mctxt post [winfo pointerx .] [winfo pointery .]
}
################################################################################
#
################################################################################
proc ::tree::mask::addToMask { move {fen ""} } {
  global ::tree::mask::mask
  
  if {$fen == ""} { set fen $::tree::mask::cacheFenIndex }
  
  if {![info exists mask($fen)]} {
    set mask($fen) { {} {} }
  }
  set ::tree::mask::dirty 1
  set moves [ lindex $mask($fen) 0 ]
  if {[lsearch $moves $move] == -1} {
    lappend moves [list $move {} $::tree::mask::defaultColor {} {} {}]
    set newpos [lreplace $mask($fen) 0 0 $moves]
    set mask($fen) $newpos
    ::tree::refresh
  }
}
################################################################################
#
################################################################################
proc ::tree::mask::removeFromMask { move {fen ""} } {
  global ::tree::mask::mask
  
  if {$fen == ""} { set fen $::tree::mask::cacheFenIndex }
  
  if {![info exists mask($fen)]} {
    return
  }
  set ::tree::mask::dirty 1
  
  set moves [ lindex $mask($fen) 0 ]
  set idxm [lsearch -regexp $moves "^$move *"]
  if { $idxm != -1} {
    set moves [lreplace $moves $idxm $idxm]
    lset mask($fen) 0 $moves
    ::tree::refresh
  }
  
  # if the position has no move left and no comment, unset it
  if { [llength [lindex $mask($fen) 0] ] == 0 && [lindex $mask($fen) 1] == "" } {
    array unset mask $fen
  }
}
################################################################################
# returns 1 if the move is already in mask
################################################################################
proc ::tree::mask::moveExists { move {fen ""} } {
  global ::tree::mask::mask
  
  if {$fen == ""} { set fen $::tree::mask::cacheFenIndex }
  
  if {![info exists mask($fen)] || $move == "\[end\]" } {
    return 0
  }
  set moves [ lindex $mask($fen) 0 ]
  if {[lsearch -regexp $moves "^$move *"] == -1} {
    return 0
  }
  return 1
}
################################################################################
# return the list of moves with their data
################################################################################
proc ::tree::mask::getAllMoves {} {
  global ::tree::mask::mask
  if {![info exists mask($::tree::mask::cacheFenIndex)]} {
    return ""
  }
  set moves [ lindex $mask($::tree::mask::cacheFenIndex) 0 ]
  return $moves
}
################################################################################
#
################################################################################
proc ::tree::mask::getColor { move {fen ""}} {
  global ::tree::mask::mask
  
  if {$fen == ""} { set fen $::tree::mask::cacheFenIndex }
  
  if {![info exists mask($fen)]} {
    return $::tree::mask::defaultColor
  }
  
  set moves [ lindex $mask($fen) 0 ]
  set idxm [lsearch -regexp $moves "^$move *"]
  if { $idxm == -1} {
    return $::tree::mask::defaultColor
  }
  set col [ lindex $moves $idxm 2 ]
  
  return $col
}
################################################################################
#
################################################################################
proc ::tree::mask::setColor { move color {fen ""}} {
  global ::tree::mask::mask
  
  if {$fen == ""} { set fen $::tree::mask::cacheFenIndex }
  
  if {![info exists mask($fen)]} {
    tk_messageBox -title "Scid" -type ok -icon warning -message [ tr AddMoveToMaskFirst ]
    return
  }
  set ::tree::mask::dirty 1
  set moves [ lindex $mask($fen) 0 ]
  set idxm [lsearch -regexp $moves "^$move *"]
  if { $idxm == -1} {
    tk_messageBox -title "Scid" -type ok -icon warning -message [ tr AddMoveToMaskFirst ]
    return
  }
  set newmove [lreplace [lindex $moves $idxm] 2 2 $color ]
  set moves [lreplace $moves $idxm $idxm $newmove ]
  set mask($fen) [ lreplace $mask($fen) 0 0 $moves ]
  ::tree::refresh
}
################################################################################
# defaults to "  " (2 spaces)
################################################################################
proc ::tree::mask::getNag { move { fen "" }} {
  global ::tree::mask::mask ::tree::mask::emptyNag
  
  if {$fen == ""} { set fen $::tree::mask::cacheFenIndex }
  
  if {![info exists mask($fen)]} {
    return $emptyNag
  }
  set moves [ lindex $mask($fen) 0 ]
  set idxm [lsearch -regexp $moves "^$move *"]
  if { $idxm == -1} {
    return $emptyNag
  }
  set nag [ lindex $moves $idxm 1 ]
  if {$nag == ""} {
    set nag $emptyNag
  }
  if { [string length $nag] == 1} { set nag " $nag" }
  return $nag
}
################################################################################
#
################################################################################
proc ::tree::mask::setNag { move nag {fen ""} } {
  global ::tree::mask::mask
  
  if { $nag == [::tr "None"] } {
    set nag ""
  }
  
  if {$fen == ""} { set fen $::tree::mask::cacheFenIndex }
  
  if {![info exists mask($fen)]} {
    tk_messageBox -title "Scid" -type ok -icon warning -message [ tr AddMoveToMaskFirst ]
    return
  }
  set ::tree::mask::dirty 1
  set moves [ lindex $mask($fen) 0 ]
  set idxm [lsearch -regexp $moves "^$move *"]
  if { $idxm == -1} {
    tk_messageBox -title "Scid" -type ok -icon warning -message [ tr AddMoveToMaskFirst ]
    return
  }
  set newmove [lreplace [lindex $moves $idxm] 1 1 $nag ]
  set moves [lreplace $moves $idxm $idxm $newmove ]
  set mask($fen) [ lreplace $mask($fen) 0 0 $moves ]
  ::tree::refresh
}
################################################################################
#
################################################################################
proc ::tree::mask::getComment { move { fen "" } } {
  global ::tree::mask::mask
  
  if {$fen == ""} { set fen $::tree::mask::cacheFenIndex }
  
  if {![info exists mask($fen)] || $move == "" || $move == "\[end\]" } {
    return ""
  }
  
  set moves [ lindex $mask($fen) 0 ]
  set idxm [lsearch -regexp $moves "^$move *"]
  if { $idxm == -1} {
    return ""
  }
  set comment [ lindex $moves $idxm 3 ]
  if {$comment == ""} {
    set comment "  "
  }
  return $comment
}
################################################################################
#
################################################################################
proc ::tree::mask::setComment { move comment { fen "" } } {
  global ::tree::mask::mask
  
  if {$fen == ""} { set fen $::tree::mask::cacheFenIndex }
  
  set comment [string trim $comment]
  
  if {![info exists mask($fen)]} {
    tk_messageBox -title "Scid" -type ok -icon warning -message [ tr AddMoveToMaskFirst ]
    return
  }
  set ::tree::mask::dirty 1
  set moves [ lindex $mask($fen) 0 ]
  set idxm [lsearch -regexp $moves "^$move *"]
  if { $idxm == -1} {
    tk_messageBox -title "Scid" -type ok -icon warning -message [ tr AddMoveToMaskFirst ]
    return
  }
  set newmove [lreplace [lindex $moves $idxm] 3 3 $comment ]
  set moves [lreplace $moves $idxm $idxm $newmove ]
  set mask($fen) [ lreplace $mask($fen) 0 0 $moves ]
  ::tree::refresh
}
################################################################################
#
################################################################################
proc ::tree::mask::getPositionComment {{fen ""}} {
  global ::tree::mask::mask
  
  if {$fen == ""} { set fen $::tree::mask::cacheFenIndex }
  
  if { ! [ info exists mask($fen) ] } {
    return ""
  }
  
  set comment [ lindex $mask($fen) 1 ]
  set comment [ string trim $comment ]
  
  return $comment
}
################################################################################
#
################################################################################
proc ::tree::mask::setPositionComment { comment {fen ""} } {
  global ::tree::mask::mask
  
  if {$fen == ""} { set fen $::tree::mask::cacheFenIndex }
  set comment [ string trim $comment ]
  set ::tree::mask::dirty 1
  # add position automatically
  if {![info exists mask($fen)]} {
    set mask($fen) { {} {} }
  }
  
  set newpos [ lreplace $mask($fen) 1 1 $comment ]
  set mask($fen) $newpos
  ::tree::refresh
}
################################################################################
#
################################################################################
proc ::tree::mask::setImage { move img nmr } {
  global ::tree::mask::mask
  set fen $::tree::mask::cacheFenIndex
  if {![info exists mask($fen)]} {
    tk_messageBox -title "Scid" -type ok -icon warning -message [ tr AddMoveToMaskFirst ]
    return
  }
  set ::tree::mask::dirty 1
  set moves [ lindex $mask($fen) 0 ]
  set idxm [lsearch -regexp $moves "^$move *"]
  if { $idxm == -1} {
    tk_messageBox -title "Scid" -type ok -icon warning -message [ tr AddMoveToMaskFirst ]
    return
  }
  set loc [expr 4 + $nmr]
  set newmove [lreplace [lindex $moves $idxm] $loc $loc $img ]
  set moves [lreplace $moves $idxm $idxm $newmove ]
  set mask($fen) [ lreplace $mask($fen) 0 0 $moves ]
  
  ::tree::refresh
}
################################################################################
# nmr = 0 or 1 (two images per line)
################################################################################
proc ::tree::mask::getImage { move nmr } {
  global ::tree::mask::mask
  
  set fen $::tree::mask::cacheFenIndex
  if {![info exists mask($fen)]} {
    return ::tree::mask::emptyImage
  }
  set moves [ lindex $mask($fen) 0 ]
  set idxm [lsearch -regexp $moves "^$move *"]
  if { $idxm == -1} {
    return ::tree::mask::emptyImage
  }
  set loc [expr 4 + $nmr]
  set img [lindex $moves $idxm $loc]
  if {$img == ""} { set img ::tree::mask::emptyImage }
  return $img
}

################################################################################
# if move is null, this is a position comment
################################################################################
proc ::tree::mask::addComment { { move "" } } {
  
  # first check the move is present in Mask
  if { $move != "" } {
    if { ![::tree::mask::moveExists $move] } {
      tk_messageBox -title "Scid" -type ok -icon warning -message [ tr AddMoveToMaskFirst ]
      return
    }
  }
  set w .treeMaskAddComment
  toplevel .treeMaskAddComment
  if {$move == ""} {
    set oldComment [::tree::mask::getPositionComment]
    ::setTitle $w [::tr CommentPosition]
  } else  {
    set oldComment [::tree::mask::getComment $move ]
    ::setTitle $w [::tr CommentMove]
  }
  set oldComment [ string trim $oldComment ]
  autoscrollframe $w.f text $w.f.e -width 40 -height 5 -wrap word -setgrid 1
  $w.f.e insert end $oldComment
  ttk::button $w.ok -text OK -command "::tree::mask::updateComment $move ; destroy $w ; ::tree::refresh"
  pack  $w.f  -side top -expand 1 -fill both
  pack  $w.ok -side bottom
  focus $w.f.e
}
################################################################################
#
################################################################################
proc ::tree::mask::updateComment { { move "" } } {
  set e .treeMaskAddComment.f.e
  set newComment [$e get 1.0 end]
  set newComment [ string trim $newComment ]
  set ::tree::mask::dirty 1
  if {$move == ""} {
    ::tree::mask::setPositionComment $newComment
  } else  {
    ::tree::mask::setComment $move $newComment
  }
}

################################################################################
#
################################################################################
proc ::tree::mask::fillWithGame {} {
  if {$::tree::mask::maskFile == ""} {
    tk_messageBox -title "Scid" -type ok -icon warning -message [ tr OpenAMaskFileFirst]
    return
  }
  ::tree::primeWithGame 1
  set ::tree::mask::dirty 1
}
################################################################################
#
################################################################################
proc ::tree::mask::fillWithBase {} {
  if {$::tree::mask::maskFile == ""} {
    tk_messageBox -title "Scid" -type ok -icon warning -message [ tr OpenAMaskFileFirst]
    return
  }
  ::tree::primeWithBase 1
  set ::tree::mask::dirty 1
}
################################################################################
# Take current position information and fill the mask (move, nag, comments, etc)
################################################################################
proc ::tree::mask::feedMask { fen } {
  set stdNags { "!!" "!" "!?" "?!" "??" "~"}
  set fen [toShortFen $fen]
  set move [sc_game info previousMoveNT]
  set comment [sc_pos getComment $fen ]
  
  if {$move == ""} {
    set move "null"
  }
  
  # add move if not in mask
  if { ![moveExists $move $fen]} {
    addToMask $move $fen
  }
  
  if {$move == "null"} {
    set comment "$comment [getPositionComment]"
    setPositionComment $comment $fen
    return
  }
  
  # NAG
  set nag [string trim [sc_pos getNags]]
  if {$nag == 0} { set nag "" }
  if {$nag != ""} {
    # append the NAGs to comment if not standard
    if {[lsearch $stdNags $nag ] == -1 } {
      set comment "$nag $comment"
      set nag ""
    } else  {
      set oldNag [getNag $move]
      if {$oldNag != $::tree::mask::emptyNag && $oldNag != $nag} {
        set comment "<$oldNag>(?!?) $comment"
      }
      setNag $move $nag $fen
    }
  }
  
  # append comment
  set oldComment [getComment $move $fen]
  if { $oldComment != "" && $oldComment != $comment } {
    set comment "$oldComment\n$comment"
  }
  setComment $move $comment $fen
  
}
################################################################################
#  trim the fen to keep position data only
################################################################################
proc ::tree::mask::toShortFen {fen} {
  set ret [lreplace $fen end-1 end]
  return $ret
}
################################################################################
#
################################################################################
proc ::tree::mask::setCacheFenIndex {} {
  set ::tree::mask::cacheFenIndex [ toShortFen [sc_pos fen] ]
}
################################################################################
#
################################################################################
proc ::tree::mask::infoMask {} {
  global ::tree::mask::mask
  
  set npos [array size mask]
  # set nmoves 0
  set nmoves [lindex [ split [array statistics mask] "\n" ] end ]
  # foreach pos $mask {
  # incr nmoves [llength [lindex $pos 1]]
  # }
  tk_messageBox -title "Mask info" -type ok -icon info -message "Mask : $::tree::mask::maskFile\n[tr Positions] : $npos\n[tr Moves] : $nmoves"
}
################################################################################
# Dumps mask content in a tree view widget
# The current position is the reference base
################################################################################
proc ::tree::mask::displayMask {} {
  global ::tree::mask::mask
  
  set w .displaymask
  if { [winfo exists $w] } {
    focus $w
    return
  }
  toplevel $w
  wm title $w [::tr DisplayMask]
  setWinLocation $w
  setWinSize $w
  
  ttk::button $w.bupdate -text [::tr "Update"] -command ::tree::mask::updateDisplayMask
  ttk::frame $w.f
  
  
  ttk::frame $w.fcb
  pack $w.fcb -fill x
  ttk::checkbutton $w.fcb.nag -text [::tr "Nag"] -variable ::tree::mask::displayMask_showNag -command ::tree::mask::updateDisplayMask
  ttk::checkbutton $w.fcb.comment -text [::tr "Comments"] -variable ::tree::mask::displayMask_showComment -command ::tree::mask::updateDisplayMask
  pack $w.fcb.nag $w.fcb.comment -side left
  
  pack $w.bupdate -fill x
  pack $w.f -fill both -expand 1
  
  ttk::treeview $w.f.tree -yscrollcommand "$w.f.ybar set" -xscrollcommand "$w.f.xbar set" -show tree -selectmode browse
  # workaround for a bug in treeview (xscrollbar does not get view size)
  $w.f.tree column #0 -minwidth 1200
  ttk::scrollbar $w.f.xbar -command "$w.f.tree xview" -orient horizontal
  ttk::scrollbar $w.f.ybar -command "$w.f.tree yview"
  
  pack $w.f.xbar -side bottom -fill x
  pack $w.f.ybar -side right -fill y
  pack $w.f.tree -side left -expand 1 -fill both
  
  updateDisplayMask
  
  bind $w <Escape> { destroy  .displaymask }
  bind $w <Configure>  {
    recordWinSize .displaymask
  }
  
  $w.f.tree tag bind dblClickTree <Double-Button-1> {::tree::mask::maskTreeUnfold }
}
################################################################################
#
################################################################################
proc ::tree::mask::updateDisplayMask {} {
  global ::tree::mask::mask
  
  set tree  .displaymask.f.tree
  $tree delete [ $tree children {} ]
  set fen [toShortFen [sc_pos fen] ]
  # use clipbase to enter a dummy game
  set currentbase [sc_base current]
  sc_base switch clipbase
  sc_info preMoveCmd {}
  sc_game push copyfast
  
  if {[catch {sc_game startBoard $fen} err]} {
    puts "sc_game startBoard $fen => $err"
  }
  if { [info exists mask($fen) ] } {
    set moves [lindex $mask($fen) 0]
    ::tree::mask::populateDisplayMask $moves {} $fen {} [lindex $mask($fen) 1]
  }
  sc_game pop
  sc_info preMoveCmd preMoveCommand
  
  sc_base switch $currentbase
}
################################################################################
# creates a new image whose name is name1_name2, and concatenates two images.
# parameters are the markers, not the images names
################################################################################
proc ::tree::mask::createImage {marker1 marker2} {
  
  if {[lsearch [image names] "$marker1$marker2" ] != -1} {
    return
  }
  set img1 $::tree::mask::marker2image($marker1)
  set img2 $::tree::mask::marker2image($marker2)
  set w1 [image width $img1]
  set w2 [image width $img2]
  set h1 [image height $img1]
  set h2 [image height $img2]
  set margin 2
  image create photo $marker1$marker2 -height $h1 -width [expr $w1 + $w2 + $margin]
  $marker1$marker2 copy $img1 -from 0 0 -to 0 0
  $marker1$marker2 copy $img2 -from 0 0 -to [expr $w1 +$margin] 0
}
################################################################################
#
################################################################################
proc  ::tree::mask::maskTreeUnfold {} {
  set t .displaymask.f.tree
  
  proc unfold {id} {
    set t .displaymask.f.tree
    foreach c [$t children $id] {
      $t item $c -open true
      unfold $c
    }
  }
  
  set id [$t selection]
  unfold $id
}
################################################################################
# returns the first line of multi-line string (separated with \n)
################################################################################
proc ::tree::mask::trimToFirstLine {s} {
  set s [ lindex [ split $s "\n" ] 0 ]
  return $s
}
################################################################################
#
################################################################################
proc ::tree::mask::populateDisplayMask { moves parent fen fenSeen posComment} {
  global ::tree::mask::mask
  
  set posComment [ trimToFirstLine $posComment ]
  
  if { $posComment != ""} {
    set posComment "\[$posComment\] "
  }
  
  set tree .displaymask.f.tree
  
  foreach m $moves {
    set move [lindex $m 0]
    if {$move == "null"} { continue }
    set img ""
    if {[lindex $m 4] != "" && [lindex $m 5] == ""} {
      set img [lindex $m 4]
    }
    if {[lindex $m 4] == "" && [lindex $m 5] != ""} {
      set img [lindex $m 5]
    }
    if {[lindex $m 4] != "" && [lindex $m 5] != ""} {
      set l [array get ::tree::mask::marker2image]
      set idx [ lsearch $l [lindex $m 4] ]
      set mark1 [lindex $l [expr $idx -1 ] ]
      set idx [ lsearch $l [lindex $m 5] ]
      set mark2 [lindex $l [expr $idx -1 ] ]
      createImage $mark1 $mark2
      set img $mark1$mark2
    }
    
    set nag ""
    if { $::tree::mask::displayMask_showNag } {
      set nag [lindex $m 1]
    }
    
    if {[lindex $m 3] != "" && $::tree::mask::displayMask_showComment} {
      set move_comment " [lindex $m 3]"
      set move_comment [ trimToFirstLine $move_comment ]
    } else  {
      set move_comment ""
    }
    if { ! $::tree::mask::displayMask_showComment} {
      set posComment ""
    }
    set id [ $tree insert $parent end -text "$posComment[::trans $move][set nag]$move_comment" -image $img -tags dblClickTree ]
    if {[catch {sc_game startBoard $fen} err]} {
      puts "ERROR sc_game startBoard $fen => $err"
    }
    sc_move addSan $move
    
    set newfen [toShortFen [sc_pos fen] ]
    if {[lsearch $fenSeen $newfen] != -1} { return }
    if { [info exists mask($newfen) ] } {
      set newmoves [lindex $mask($newfen) 0]
      
      while { [llength $newmoves] == 1 } {
        lappend fenSeen $newfen
        sc_move addSan [ lindex $newmoves { 0 0 } ]
        set newfen [toShortFen [sc_pos fen] ]
        if {[lsearch $fenSeen $newfen] != -1} { return }
        lappend fenSeen $newfen
        if {[lindex $newmoves 0 3] != "" && $::tree::mask::displayMask_showComment } {
          set move_comment " [lindex $newmoves 0 3]"
          set move_comment [ trimToFirstLine $move_comment ]
        } else  {
          set move_comment ""
        }
        
        if {[lindex $newmoves 1] != "" && $::tree::mask::displayMask_showComment } {
          set pos_comment " \[[lindex $newmoves 1]\]"
          set pos_comment [ trimToFirstLine $pos_comment ]
        } else  {
          set pos_comment ""
        }
        set nag ""
        if { $::tree::mask::displayMask_showNag } {
          set nag [ lindex $newmoves { 0 1 }  ]
        }
        $tree item $id -text "[ $tree item $id -text ] $pos_comment[::trans [ lindex $newmoves { 0 0 }  ] ][ set nag  ]$move_comment"
        if { ! [info exists mask($newfen) ] } {
          break
        }
        set newmoves [lindex $mask($newfen) 0]
      }
      
      if { [info exists mask($newfen) ] } {
        set newmoves [lindex $mask($newfen) 0]
        ::tree::mask::populateDisplayMask $newmoves $id $newfen $fenSeen [lindex $mask($newfen) 1]
      }
    }
  }
  
}
################################################################################
#
################################################################################
proc ::tree::mask::searchMask { baseNumber } {
  
  set w .searchmask
  if { [winfo exists $w] } {
    focus $w
    return
  }
  toplevel $w
  wm title $w [::tr SearchMask]
  ttk::frame $w.f1
  ttk::frame $w.f2
  pack $w.f1 -side top -fill both -expand 1
  pack $w.f2 -side top -fill both -expand 1
  
  # NAG selection
  ttk::checkbutton $w.f1.nagl -text [tr Nag] -variable ::tree::mask::searchMask_usenag
  menu $w.f1.nagmenu
  ttk::menubutton $w.f1.nag -textvariable ::tree::mask::searchMask_nag -menu $w.f1.nagmenu -style pad0.TMenubutton
  set ::tree::mask::searchMask_nag  [::tr "None"]
  foreach nag [ list "!!" " !" "!?" "?!" " ?" "??" " ~" [::tr "None"]  ] {
    $w.f1.nagmenu add command -label $nag -command "set ::tree::mask::searchMask_nag $nag"
  }
  grid $w.f1.nagl -column 0 -row 0
  grid $w.f1.nag -column 0 -row 1
  
  # Markers 1 & 2
  foreach j { 0 1 } {
    ttk::checkbutton $w.f1.ml$j -text "[tr Marker] [expr $j +1]" -variable ::tree::mask::searchMask_usemarker$j
    menu $w.f1.menum$j
    ttk::menubutton $w.f1.m$j -textvariable ::tree::mask::searchMask_trm$j -menu $w.f1.menum$j -style pad0.TMenubutton
    set ::tree::mask::searchMask_trm$j [tr "Include"]
    set ::tree::mask::searchMask_m$j $::tree::mask::marker2image(Include)
    foreach e { Include Exclude MainLine Bookmark White Black NewLine ToBeVerified ToTrain Dubious ToRemove } {
      set i $::tree::mask::marker2image($e)
      $w.f1.menum$j add command -label [ tr $e ] -image $i -compound left \
          -command "set ::tree::mask::searchMask_trm$j \"[tr $e ]\" ; set ::tree::mask::searchMask_m$j $i"
    }
    grid $w.f1.ml$j -column [expr 1 + $j] -row 0
    grid $w.f1.m$j -column [expr 1 + $j] -row 1
  }
  
  # Color
  ttk::checkbutton $w.f1.colorl -text [tr ColorMarker] -variable ::tree::mask::searchMask_usecolor
  menu $w.f1.colormenu
  ttk::menubutton $w.f1.color -textvariable ::tree::mask::searchMask_trcolor -menu $w.f1.colormenu  -style pad0.TMenubutton
  set ::tree::mask::searchMask_trcolor  [::tr "White"]
  set ::tree::mask::searchMask_color "White"
  foreach c { "White" "Green" "Yellow" "Blue" "Red"} {
    $w.f1.colormenu add command -label [ tr "${c}Mark" ] \
        -command "set ::tree::mask::searchMask_trcolor [ tr ${c}Mark ] ; set ::tree::mask::searchMask_color $c"
  }
  grid $w.f1.colorl -column 3 -row 0
  grid $w.f1.color -column 3 -row 1
  
  # Move annotation
  ttk::checkbutton $w.f1.movecommentl -text "Move comment" -variable ::tree::mask::searchMask_usemovecomment
  ttk::entry $w.f1.movecomment -textvariable ::tree::mask::searchMask_movecomment -width 12
  grid $w.f1.movecommentl -column 4 -row 0
  grid $w.f1.movecomment -column 4 -row 1
  
  # Position annotation
  ttk::checkbutton $w.f1.poscommentl -text "Position comment" -variable ::tree::mask::searchMask_useposcomment
  ttk::entry $w.f1.poscomment -textvariable ::tree::mask::searchMask_poscomment -width 12
  grid $w.f1.poscommentl -column 5 -row 0
  grid $w.f1.poscomment -column 5 -row 1
  
  ttk::button $w.f1.search -text [tr "Search"] -command " ::tree::mask::perfomSearch $baseNumber "
  grid $w.f1.search -column 6 -row 0 -rowspan 2
  
  # display search result
  text $w.f2.text -yscrollcommand "$w.f2.ybar set" -height 50
  ttk::scrollbar $w.f2.ybar -command "$w.f2.text yview"
  pack $w.f2.ybar -side left -fill y
  pack $w.f2.text -side left -fill both -expand yes
  
  setWinLocation $w
  setWinSize $w
  
  bind $w.f2.text <ButtonPress-1> " ::tree::mask::searchClick %x %y %W $baseNumber "
  bind $w <Escape> { destroy  .searchmask }
  bind $w <Configure> "recordWinSize $w"
  
}
################################################################################
#
################################################################################
proc  ::tree::mask::perfomSearch  { baseNumber } {
  global ::tree::mask::mask
  set t .searchmask.f2.text
  # contains the search result (FEN)
  set res {}
  
  set pos_count 0
  set move_count 0
  set pos_total 0
  set move_total 0
  
  $t delete 1.0 end
  
  # Display FEN + moves and comments. Clicking on a line starts filtering current base
  foreach fen [array names mask] {
    incr pos_total
    
    # Position comment
    set poscomment [ lindex $mask($fen) 1 ]
    if { $::tree::mask::searchMask_useposcomment  } {
      if { [string match -nocase "*$::tree::mask::searchMask_poscomment*"  $poscomment] } {
        lappend res "$fen $poscomment"
        incr pos_count
      } else  {
        continue
      }
    }
    
    set moves [ lindex $mask($fen) 0 ]
    foreach m $moves {
      incr move_total
      
      # NAG
      if { $::tree::mask::searchMask_usenag } {
        set nag $::tree::mask::searchMask_nag
        if { $nag == [::tr "None"] } {  set nag ""  }
        if { [ string trim [lindex $m 1] ] != $nag } {
          continue
        }
      }
      
      # Markers 1 & 2
      if { $::tree::mask::searchMask_usemarker0 } {
        if { $::tree::mask::searchMask_m0 != [lindex $m 4] } {
          continue
        }
      }
      if { $::tree::mask::searchMask_usemarker1 } {
        if { $::tree::mask::searchMask_m1 != [lindex $m 5] } {
          continue
        }
      }
      
      # Color
      if { $::tree::mask::searchMask_usecolor } {
        if { [ string compare -nocase $::tree::mask::searchMask_color [lindex $m 2] ] != 0 } {
          continue
        }
      }
      
      # Move annotation
      set movecomment [lindex $m 3]
      if { $::tree::mask::searchMask_usemovecomment } {
        if {  ! [string match -nocase "*$::tree::mask::searchMask_movecomment*"  $movecomment]  } {
          continue
        }
      }
      
      lappend res "$fen [::trans [lindex $m 0]] $movecomment"
      incr move_count
    }
  }
  
  # output the result
  foreach l $res {
    $t insert end "$l\n"
  }
  wm title .searchmask "[::tr SearchMask] [::tr Positions] $pos_count / $pos_total - [::tr moves] $move_count / $move_total"
}
################################################################################
#
################################################################################
proc  ::tree::mask::searchClick {x y win baseNumber} {
  set idx [ $win index @$x,$y ]
  if { [ scan $idx "%d.%d" l c ] != 2 } {
    # should never happen
    return
  }
  set elt [$win get $l.0 $l.end]
  
  if {[llength $elt] < 4} {
    return
  }
  
  set fen [ lrange $elt 0 3 ]
  
  # load the position in a temporary game (in clipbase), update the Trees then switch to Tree's base
  sc_base switch clipbase
  sc_info preMoveCmd {}
  sc_game push copyfast
  
  if {[catch {sc_game startBoard $fen} err]} {
    puts "sc_game startBoard $fen => $err"
  } else  {
    # TODO : call sc_search board maybe wiser ?
    ::tree::refresh
    # updateBoard -pgn
  }
  
  sc_game pop
  sc_info preMoveCmd preMoveCommand
  
  sc_base switch $baseNumber
  # ::file::SwitchToBase $baseNumber
  if {[sc_filter first != 0]} {
    ::game::Load [sc_filter first]
  } else  {
    updateBoard -pgn
  }
  
  # updateBoard -pgn
  
}
################################################################################
#
################################################################################
image create photo ::tree::mask::emptyImage -data {
  R0lGODdhEQARAIAAAP///////ywAAAAAEQARAAACD4SPqcvtD6OctNqLs96xAAA7
}
image create photo ::tree::mask::imageWhite -data {
  R0lGODlhEQARAMIEAAAAAD8/P39/f7+/v////////////////yH5BAEKAAcALAAAAAARABEA
  AANBeLrcrkOI8RwYA9QGCNHbAkhgGAieEISq551b60rhmJaV0BHwFgQu3uohC6oeu6AHB0Ep
  U4KG5AmVAq7YbDS0SQAAOw==
}
image create photo ::tree::mask::imageBlack -data {
  R0lGODlhEQARAMIEAAAAAD8/P39/f7+/v////////////////yH5BAEKAAQALAAAAAARABEA
  AAM0SLrcrkOI8Ry4oDac9eKeEnCBJ3CXoJ2oqqHdyrnViJYPC+MbjDkDH4bC0PloCiMMGWok
  AAA7
}
image create photo ::tree::mask::imageMainLine -data {
  R0lGODlhEQARAOfzAAAAAAIAAAMAAAYAAAUFBRIMCw4ODisLBBQUFCUSDiIXFR8fHygoKDg4
  OE9BFVpQLlxQK2FWL2JWN2FXOGVZMGZaMrs3GWxfNGFhYWdjWcBGK8FGKm9rY8NMMd9CHsRU
  O3R0cnV0cs9SNcdXPtxQMN9PLnx4b3p6d9xWOHx7echhSslkS4CAf4GAf4KBfuNdP4OCgN9f
  QYODgYSDgYaFgt9jRsxtWIiIhZCKgeVpTuJrUN9yWNB4ZZOTkJSUkd94X916Y5qVipuVit96
  YpuWipiXlJeXl5iXl52Xi5mYkeh5YJ2XjJmYl56Yjed7Y5uZl5+ZjZ+Zjpqal5qamZual5+a
  jqCajpubmaGbj6GbkJycnKGckOeBa6OdkaOdkp6enp+enKOekueDbaSek5+fnqGfnKGgnaGh
  oKGhodeQfaWjoKSko+qMd+KPfamppqqppquqp6urqqyrqKurq6yrqa2rqa2sqe2kPq+vrrCv
  rbCvrrGwrrOyr+eejbOysfCpP7Ozs7SzsbSzsrS0steudLW0srW0s7W1s7W1tLW1tba1tLe2
  tbi3tPOvQrm3tri4trm4uLm5ubq5t/SyRO+0Tbu7ufe1RPK2Tfe1Rb29vO6rm8C/vMDAwMPC
  vsXEwcnJx8rKyM3LyPbSNs3My83Nzc/OytDOyvjYN9DQz9LRzdHR0dPSzvncONTTz9PT0tPT
  09XTztbU0PnfOdfV0dfW0dbW1tjW0djW0tnX09nX1PrkOtrZ1dvZ1fvnO9za1tza2Nzb2Nzb
  2fzpO9zc2t3c2N3c2t7d2fzrPd/e2uDe2t/f3eDf2+Hf2+Hf3OHg3ODg3+Hg3eLh3ePi4OTj
  4OXj4OXk4eTk5Obl4ufm4+jn5Ofn5+np6evq6Ozr6e3s6u3t6+3t7e/v7vDw7vDw8PHw7vLy
  8vPy8fTz8vT09Pb19Pb29vj39vj49/n5+Pn5+fr6+fv7+/z8+/7+/v//////////////////
  /////////////////////////////////yH5BAEKAP8ALAAAAAARABEAAAj7AP8J/JdAwIAD
  AxMOBPBKnaY+QFbUctdOm7UFCQGomyfmx44Rtea1w7MNUIOF8+ZxqVGjAxpOmdaMQzeHgEAA
  KZV48GCBTKZMZxzNAADg5jx5OnmiWtfu2S8AvS4ZfccmRw4Vo86dMwcA04Wi/3CyY8ODh40p
  jxAB0DWBqNFzAFgwAXBkEABKFZ6YAIvznLJP5IoFA3CKAgA7OPjOE4fokCBBAETdAQDCUxDF
  3PboyUPHAVEXPXZlUYzt2jVqwAAUodJpFS4ofMFBc7bMWCo+m0LxwjULCV9VzJAZI5bLVCxe
  vm7BEsI3SRgvXbZgsWIlC5QlRDKAVchdYUAAOw==
}

#----------------------------------------------------------------------
if {$png_image_support} {
	image create photo ::tree::mask::imageMainLine -data {
		iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABmJLR0QA/wD/AP+gvaeTAAAACXBI
		WXMAAAsSAAALEgHS3X78AAAAB3RJTUUH0wkWEisFOaTQ6wAAAB10RVh0Q29tbWVudABDcmVhdGVk
		IHdpdGggVGhlIEdJTVDvZCVuAAABqklEQVR42oWTz0sbQRTHP6alPy49BBfM0VuuvQiN6G5zlFIP
		8Q/w0EPBsxbZP6B/gaciVbQklIoNHpdslkAOkUJLdSEHQeKyjI2HQjY1ypodD3a32bWuDx7z3sx7
		n5n5MgP/TD4AmQH5CCR3+6uRHsZGAaeri1Ey8X6DIAhuFqTEcRw6nQ6qqgIsADsAGRI2aJkMWiYA
		nufheR79fh/HcSgUClQqFYAv4UkekmKmaUZxEATouo4QAk3TsCxrDxhLBRSLxegKvV6PdruNbR9g
		WVZY8joVUKvVYnk+n0fXdXwxzeB7lmdze9VUgKZpsTybzXJ1NoO//5ilD8fcq0G9Xo/iUqnE1a9p
		/P0nLH/+zdbXQ4DnqQBVVZFSoigKl8cvuGg95d3ukLXNb2HJj8x9GiiKwvnPKc7tcd6uC9Y+mhiG
		EdXcAkyaJxz98WMadI5mWfnksF21EULcuaEEZKPRiD3d+ZdKFJfLZem6rjQMI5yLizgcDul2uwgh
		yOVyAFTrZ7iuG70HKWVs11sihkXJpmTjfwHNZhPf92Ow0TG0v3A7CVsi/Rsn/Q3ANdGG5Icao+xt
		AAAAAElFTkSuQmCC
	}
}
#----------------------------------------------------------------------


######################################################################
### Crosstable window

namespace eval ::crosstab {}

set crosstab(sort) score
set crosstab(type) auto
set crosstab(ages) "+ages"
set crosstab(colors) "+colors"
set crosstab(ratings) "+ratings"
set crosstab(countries) "+countries"
set crosstab(titles) "+titles"
set crosstab(groups) "-groups"
set crosstab(breaks) "-breaks"
set crosstab(deleted) "-deleted"
set crosstab(cnumbers) "-numcolumns"
set crosstab(text) hypertext

proc ::crosstab::ConfigMenus {{lang ""}} {
  if {! [winfo exists .crosstabWin]} { return }
  if {$lang == ""} { set lang $::language }
  set m .crosstabWin.menu
  foreach idx {0 1 2 3 4 5} tag {File Edit Opt Sort Color Help} {
    configMenuText $m $idx Crosstab$tag $lang
  }
  foreach idx {0 1 2 4} tag {Text Html LaTeX Close} {
    configMenuText $m.file $idx CrosstabFile$tag $lang
  }
  foreach idx {0 1 2} tag {Event Site Date} {
    configMenuText $m.edit $idx CrosstabEdit$tag $lang
  }
  foreach idx {0 1 2 3 5 6 7 8 9 10 12 13 15} tag {All Swiss Knockout Auto Ages Nats Ratings Titles Breaks Deleted Colors ColumnNumbers Group} {
    configMenuText $m.opt $idx CrosstabOpt$tag $lang
  }
  foreach idx {0 1 2} tag {Name Rating Score} {
    configMenuText $m.sort $idx CrosstabSort$tag $lang
  }
  foreach idx {0 1} tag {Plain Hyper} {
    configMenuText $m.color $idx CrosstabColor$tag $lang
  }
  foreach idx {0 1} tag {Cross Index} {
    configMenuText $m.helpmenu $idx CrosstabHelp$tag $lang
  }
}

proc toggleCrosstabWin {} {
  set w .crosstabWin
  if {[winfo exists $w]} {
    destroy $w
  } else {
    crosstabWin
  }
}

proc ::crosstab::RefreshIfOpen {} {
  set w .crosstabWin
  if {[winfo exists $w]} { crosstabWin }
}

proc ::crosstab::Open {} {
  global crosstab
  set w .crosstabWin
  if {[winfo exists $w]} {
    ::crosstab::Refresh
    return
  }
  
  toplevel $w
  wm title $w "Scid: [tr ToolsCross]"
  wm minsize $w 50 5
  setWinLocation $w
  
  menu $w.menu
  $w configure -menu $w.menu
  $w.menu add cascade -label CrosstabFile -menu $w.menu.file
  $w.menu add cascade -label CrosstabEdit -menu $w.menu.edit
  $w.menu add cascade -label CrosstabOpt -menu $w.menu.opt
  $w.menu add cascade -label CrosstabSort -menu $w.menu.sort
  $w.menu add cascade -label CrosstabText -menu $w.menu.color
  $w.menu add cascade -label CrosstabHelp -menu $w.menu.helpmenu
  foreach i {file edit opt sort color helpmenu} {
    menu $w.menu.$i -tearoff 0
  }
  
  $w.menu.file add command -label CrosstabFileText -command {
    set ftype {
      { "Text files" {".txt"} }
      { "All files"  {"*"}    }
    }
    set fname [tk_getSaveFile -initialdir [pwd] -filetypes $ftype  -title "Save Crosstable"]
    if {$fname != ""} {
      if {[catch {set tempfile [open $fname w]}]} {
        tk_messageBox -title "Scid: Error saving file" -type ok -icon warning -message "Unable to save the file: $fname\n\n"
      } else {
        puts -nonewline $tempfile [.crosstabWin.f.text get 1.0 end]
        close $tempfile
      }
    }
  }
  $w.menu.file add command -label CrosstabFileHtml -command {
    set ftype {
      { "HTML files" {".html" ".htm"} }
      { "All files"  {"*"}    }
    }
    set fname [tk_getSaveFile -initialdir $::initialDir(html) -filetypes $ftype  -title "Save Crosstable as HTML"]
    if {$fname != ""} {
      if {[file extension $fname] != ".html" && [file extension $fname] != ".htm" } {
        append fname ".html"
      }
      if {[catch {set tempfile [open $fname w]}]} {
        tk_messageBox -title "Scid: Error saving file" -type ok -icon warning -message "Unable to save the file: $fname\n\n"
      } else {
        catch {sc_game crosstable html $crosstab(sort) $crosstab(type) \
              $crosstab(ratings) $crosstab(countries) $crosstab(titles) \
              $crosstab(colors) $crosstab(groups) $crosstab(ages) \
              $crosstab(breaks) $crosstab(cnumbers) $crosstab(deleted)} \
            result
        puts $tempfile $result
        close $tempfile
      }
    }
  }
  $w.menu.file add command -label CrosstabFileLaTeX -command {
    set ftype {
      { "LaTeX files" {".tex" ".ltx"} }
      { "All files"  {"*"}    }
    }
    set fname [tk_getSaveFile -initialdir $::initialDir(tex) -filetypes $ftype  -title "Save Crosstable as LaTeX"]
    if {$fname != ""} {
      if {[file extension $fname] != ".tex" && [file extension $fname] != ".ltx" } {
        append fname ".tex"
      }
      if {[catch {set tempfile [open $fname w]}]} {
        tk_messageBox -title "Scid: Error saving file" \
            -type ok -icon warning \
            -message "Unable to save the file: $fname\n\n"
      } else {
        catch {sc_game crosstable latex $crosstab(sort) $crosstab(type) \
              $crosstab(ratings) $crosstab(countries) $crosstab(titles) \
              $crosstab(colors) $crosstab(groups) $crosstab(ages) \
              $crosstab(breaks) $crosstab(cnumbers) $crosstab(deleted)} \
            result
        puts $tempfile $result
        close $tempfile
      }
    }
  }
  $w.menu.file add separator
  $w.menu.file add command -label CrosstabFileClose \
      -command { .crosstabWin.b.cancel invoke } -accelerator Esc
  
  $w.menu.edit add command -label CrosstabEditEvent -command {
    makeNameEditor
    setNameEditorType event
    set editName [sc_game info event]
    set editNameNew ""
    set editNameSelect crosstable
  }
  $w.menu.edit add command -label CrosstabEditSite -command {
    makeNameEditor
    setNameEditorType site
    set editName [sc_game info site]
    set editNameNew ""
    set editNameSelect crosstable
  }
  $w.menu.edit add command -label CrosstabEditDate -command {
    makeNameEditor
    setNameEditorType date
    set editNameNew " "
    set editDate [sc_game info date]
    set editDateNew [sc_game info date]
    set editNameSelect crosstable
  }
  
  $w.menu.opt add radiobutton -label CrosstabOptAll \
      -variable crosstab(type) -value allplay -command crosstabWin
  $w.menu.opt add radiobutton -label CrosstabOptSwiss \
      -variable crosstab(type) -value swiss -command crosstabWin
  $w.menu.opt add radiobutton -label CrosstabOptKnockout \
      -variable crosstab(type) -value knockout -command crosstabWin
  $w.menu.opt add radiobutton -label CrosstabOptAuto \
      -variable crosstab(type) -value auto -command crosstabWin
  $w.menu.opt add separator
  $w.menu.opt add checkbutton -label CrosstabOptAges \
      -variable crosstab(ages) -onvalue "+ages" \
      -offvalue "-ages" -command crosstabWin
  $w.menu.opt add checkbutton -label CrosstabOptNats \
      -variable crosstab(countries) -onvalue "+countries" \
      -offvalue "-countries" -command crosstabWin
  $w.menu.opt add checkbutton -label CrosstabOptRatings \
      -variable crosstab(ratings) -onvalue "+ratings" -offvalue "-ratings" \
      -command crosstabWin
  $w.menu.opt add checkbutton -label CrosstabOptTitles \
      -variable crosstab(titles) -onvalue "+titles" -offvalue "-titles" \
      -command crosstabWin
  $w.menu.opt add checkbutton -label CrosstabOptBreaks \
      -variable crosstab(breaks) -onvalue "+breaks" \
      -offvalue "-breaks" -command crosstabWin
  $w.menu.opt add checkbutton -label CrosstabOptDeleted \
      -variable crosstab(deleted) -onvalue "+deleted" \
      -offvalue "-deleted" -command crosstabWin
  $w.menu.opt add separator
  $w.menu.opt add checkbutton -label CrosstabOptColors \
      -underline 0 -variable crosstab(colors) \
      -onvalue "+colors" -offvalue "-colors" -command crosstabWin
  $w.menu.opt add checkbutton -label CrosstabOptColumnNumbers \
      -underline 0 -variable crosstab(cnumbers) \
      -onvalue "+numcolumns" -offvalue "-numcolumns" -command crosstabWin
  $w.menu.opt add separator
  $w.menu.opt add checkbutton -label CrosstabOptGroup \
      -underline 0 -variable crosstab(groups) \
      -onvalue "+groups" -offvalue "-groups" -command crosstabWin
  
  $w.menu.sort add radiobutton -label CrosstabSortName \
      -variable crosstab(sort) -value name -command crosstabWin
  $w.menu.sort add radiobutton -label CrosstabSortRating \
      -variable crosstab(sort) -value rating -command crosstabWin
  $w.menu.sort add radiobutton -label CrosstabSortScore \
      -variable crosstab(sort) -value score -command crosstabWin
  
  $w.menu.color add radiobutton -label CrosstabColorPlain \
      -variable crosstab(text) -value plain -command crosstabWin
  $w.menu.color add radiobutton -label CrosstabColorHyper \
      -variable crosstab(text) -value hypertext -command crosstabWin
  
  $w.menu.helpmenu add command -label CrosstabHelpCross \
      -accelerator F1 -command {helpWindow Crosstable}
  $w.menu.helpmenu add command -label CrosstabHelpIndex \
      -command {helpWindow Index}
  
  ::crosstab::ConfigMenus
  
  frame $w.b
  pack $w.b -side bottom -fill x
  frame $w.f
  pack $w.f -side top -fill both -expand true
  text $w.f.text -width $::winWidth($w) -height $::winHeight($w) \
      -wrap none -font font_Fixed \
      -background white -yscroll "$w.f.ybar set" \
      -xscroll "$w.f.xbar set" -setgrid 1 -cursor top_left_arrow
  ::htext::init $w.f.text
  $w.f.text tag configure bgGray -background gray95
  scrollbar $w.f.ybar -command "$w.f.text yview"
  scrollbar $w.f.xbar -orient horizontal -command "$w.f.text xview"
  grid $w.f.text -row 0 -column 0 -sticky nesw
  grid $w.f.ybar -row 0 -column 1 -sticky nesw
  grid $w.f.xbar -row 1 -column 0 -sticky nesw
  grid rowconfig $w.f 0 -weight 1 -minsize 0
  grid columnconfig $w.f 0 -weight 1 -minsize 0
  button $w.b.stop -textvar ::tr(Stop) -state disabled \
      -command { set ::htext::interrupt 1 }
  menubutton $w.b.type -text "" -menu $w.b.type.menu \
      -relief raised -bd 2 -indicatoron 1
  menu $w.b.type.menu
  $w.b.type.menu add radiobutton -label [tr CrosstabOptAll] \
      -variable crosstab(type) -value allplay -command crosstabWin
  $w.b.type.menu add radiobutton -label [tr CrosstabOptSwiss] \
      -variable crosstab(type) -value swiss -command crosstabWin
  $w.b.type.menu add radiobutton -label [tr CrosstabOptKnockout] \
      -variable crosstab(type) -value knockout -command crosstabWin
  $w.b.type.menu add radiobutton -label [tr CrosstabOptAuto] \
      -variable crosstab(type) -value auto -command crosstabWin
  button $w.b.update -textvar ::tr(Update) -command crosstabWin
  button $w.b.cancel -textvar ::tr(Close) -command {
    focus .
    destroy .crosstabWin
  }
  button $w.b.setfilter -textvar ::tr(SetFilter) -command {
    ::search::filter::reset
    ::search::filter::negate
    sc_game crosstable filter
    ::windows::gamelist::Refresh
  }
  button $w.b.addfilter -textvar ::tr(AddToFilter) -command {
    sc_game crosstable filter
    ::windows::gamelist::Refresh
  }
  pack $w.b.cancel $w.b.update $w.b.type \
      -side right -pady 3 -padx 5
  pack $w.b.setfilter $w.b.addfilter -side left -pady 3 -padx 5
  
  bind $w <Configure> "recordWinSize $w"
  bind $w <F1> { helpWindow Crosstable }
  bind $w <Return> { .crosstabWin.b.update invoke }
  bind $w <Escape> { .crosstabWin.b.cancel invoke }
  bind $w <Up> { .crosstabWin.f.text yview scroll -1 units }
  bind $w <Down> { .crosstabWin.f.text yview scroll 1 units }
  bind $w <Prior> { .crosstabWin.f.text yview scroll -1 pages }
  bind $w <Next> { .crosstabWin.f.text yview scroll 1 pages }
  bind $w <Left> { .crosstabWin.f.text xview scroll -1 units }
  bind $w <Right> { .crosstabWin.f.text xview scroll 1 units }
  bind $w <Key-Home> {
    .crosstabWin.f.text xview moveto 0
  }
  bind $w <Key-End> {
    .crosstabWin.f.text xview moveto 0.99
  }
  standardShortcuts $w
  
  # MouseWheel Bindings:
  bind $w <MouseWheel> { .crosstabWin.f.text yview scroll [expr {- (%D / 120)}] units}
  if {! $::windowsOS} {
    bind $w <Button-4> { .crosstabWin.f.text yview scroll -1 units }
    bind $w <Button-5> { .crosstabWin.f.text yview scroll  1 units }
  }
  
  ::crosstab::Refresh
}

proc crosstabWin {} {
  ::crosstab::Open
}

proc ::crosstab::Refresh {} {
  global crosstab
  set w .crosstabWin
  if {! [winfo exists $w]} { return }
  
  switch $crosstab(type) {
    allplay  { $w.b.type configure -text [tr CrosstabOptAll] }
    swiss    { $w.b.type configure -text [tr CrosstabOptSwiss] }
    knockout { $w.b.type configure -text [tr CrosstabOptKnockout] }
    auto     { $w.b.type configure -text [tr CrosstabOptAuto] }
  }
  $w.f.text configure -state normal
  $w.f.text delete 1.0 end
  busyCursor .
  $w.f.text configure -state disabled
  update idle
  $w.b.stop configure -state normal
  foreach button {update cancel setfilter addfilter type} {
    $w.b.$button configure -state disabled
  }
  pack $w.b.stop -side right -padx 5 -pady 3
  catch {grab $w.b.stop}
  update
  catch {sc_game crosstable $crosstab(text) $crosstab(sort) $crosstab(type) \
        $crosstab(ratings) $crosstab(countries) $crosstab(titles) \
        $crosstab(colors) $crosstab(groups) $crosstab(ages) \
        $crosstab(breaks) $crosstab(cnumbers) $crosstab(deleted)} result
  $w.f.text configure -state normal
  if {$crosstab(text) == "plain"} {
    $w.f.text insert end $result
  } else {
    ::htext::display $w.f.text $result
  }
  # Shade every second line to help readability:
  set lastLineNum [expr {int([$w.f.text index end])}]
  for {set i 2} {$i <= $lastLineNum} {incr i 2} {
    $w.f.text tag add bgGray $i.0 "$i.0 lineend +1c"
  }
  unbusyCursor .
  catch {grab release $w.b.stop}
  $w.b.stop configure -state disabled
  pack forget $w.b.stop
  foreach button {update cancel setfilter addfilter type} {
    $w.b.$button configure -state normal
  }
  $w.f.text configure -state disabled
  raiseWin $w
}

### file pfinder.tcl: part of Scid.

####################
# Player List window

namespace eval ::plist {}

set plistWin 0

set ::plist::sort Name

proc ::plist::defaults {} {
  set ::plist::name ""
  set ::plist::minGames 0
  set ::plist::maxGames 9999
  set ::plist::minElo 0
  set ::plist::maxElo [sc_info limit elo]
  set ::plist::size 50
}

::plist::defaults

trace variable ::plist::minElo w [list ::utils::validate::Integer [sc_info limit elo] 0]
trace variable ::plist::maxElo w [list ::utils::validate::Integer [sc_info limit elo] 0]
trace variable ::plist::minGames w [list ::utils::validate::Integer 9999 0]
trace variable ::plist::maxGames w [list ::utils::validate::Integer 9999 0]

proc ::plist::toggle {} {
  set w .plist
  if {[winfo exists $w]} {
    destroy $w
  } else {
    ::plist::Open
  }
}

proc ::plist::Open {} {
  global plistWin
  set w .plist
  if {[winfo exists .plist]} { return }
  set plistWin 1

  toplevel $w
  wm title $w "Scid: [tr WindowsPList]"
  setWinLocation $w
  bind $w <Configure> "recordWinSize $w"

  bind $w <F1> {helpWindow PList}
  bind $w <Escape> "$w.b.close invoke"
  bind $w <Return> ::plist::refresh
  bind $w <Destroy> { set plistWin 0 }
  standardShortcuts $w
  bind $w <Up> "$w.t.text yview scroll -1 units"
  bind $w <Down> "$w.t.text yview scroll 1 units"
  bind $w <Prior> "$w.t.text yview scroll -1 pages"
  bind $w <Next> "$w.t.text yview scroll 1 pages"
  bind $w <Key-Home> "$w.t.text yview moveto 0"
  bind $w <Key-End> "$w.t.text yview moveto 0.99"
  #bindMouseWheel $w $w.t.text

  menu $w.menu
  $w configure -menu $w.menu
  $w.menu add cascade -label PListFile -menu $w.menu.file
  menu $w.menu.file
  $w.menu.file add command -label Update -command ::plist::refresh
  $w.menu.file add command -label Close -command "destroy $w"
  $w.menu add cascade -label PListSort -menu $w.menu.sort
  menu $w.menu.sort
  foreach name {Name Elo Games Oldest Newest} {
    $w.menu.sort add radiobutton -label $name -variable ::plist::sort \
      -value $name -command ::plist::refresh
  }

  foreach i {t o1 o2 o3 b} {frame $w.$i}
  $w.t configure -relief sunken -borderwidth 1
  text $w.t.text -width 55 -height 25 -font font_Small -wrap none \
    -fg black -bg white -yscrollcommand "$w.t.ybar set" -setgrid 1 \
    -cursor top_left_arrow -xscrollcommand "$w.t.xbar set" -borderwidth 0
  scrollbar $w.t.ybar -command "$w.t.text yview" -takefocus 0
  scrollbar $w.t.xbar -orient horiz -command "$w.t.text xview" -takefocus 0
  set xwidth [font measure [$w.t.text cget -font] "0"]
  set tablist {}
  foreach {tab justify} {4 r 10 r 18 r 24 r 32 r 35 l} {
    set tabwidth [expr {$xwidth * $tab} ]
    lappend tablist $tabwidth $justify
  }
  $w.t.text configure -tabs $tablist
  $w.t.text tag configure ng -foreground darkBlue
  $w.t.text tag configure date -foreground darkRed
  $w.t.text tag configure elo -foreground darkGreen
  $w.t.text tag configure name -foreground black
  $w.t.text tag configure title -background lightSteelBlue; #-font font_SmallBold

  set font font_Small
  set fbold font_SmallBold

  set f $w.o1
  label $f.nlabel -text $::tr(Player:) -font $fbold
  ttk::combobox $f.name -textvariable ::plist::name -width 20
  ::utils::history::SetCombobox ::plist::name $f.name
  bindFocusColors $f.name
  focus $f.name
  label $f.size -text $::tr(TmtLimit:) -font $fbold
  ttk::combobox $f.esize -width 4 -justify right -textvar ::plist::size -values {50 100 200 500 1000}
  trace variable ::plist::size w {::utils::validate::Integer 1000 0}
  bindFocusColors $f.esize
  # foreach n {50 100 200 500 1000} {
    # $f.esize list insert end $n
  # }
  pack $f.esize $f.size -side right
  pack $f.nlabel $f.name -side left

  set f $w.o2
  label $f.elo -text "[tr PListSortElo]:" -font $fbold
  entry $f.emin -textvariable ::plist::minElo
  label $f.eto -text "-"
  entry $f.emax -textvariable ::plist::maxElo
  label $f.games -text "[tr PListSortGames]:" -font $fbold
  entry $f.gmin -textvariable ::plist::minGames
  label $f.gto -text "-"
  entry $f.gmax -textvariable ::plist::maxGames

  foreach entry {emin emax} {
    $f.$entry configure -width 4 -justify right -font $font
    bindFocusColors $f.$entry
    bind $f.$entry <FocusOut> +::plist::check
  }

  foreach entry {gmin gmax} {
    $f.$entry configure -width 6 -justify right -font $font
    bindFocusColors $f.$entry
    bind $f.$entry <FocusOut> +::plist::check
  }
  
  pack $f.elo $f.emin $f.eto $f.emax -side left
  pack $f.gmax $f.gto $f.gmin $f.games -side right

  dialogbutton $w.b.defaults -text $::tr(Defaults) -command ::plist::defaults
  dialogbutton $w.b.update -text $::tr(Update) -command ::plist::refresh
  dialogbutton $w.b.close -text $::tr(Close) -command "destroy $w"
  packbuttons left $w.b.defaults
  packbuttons right $w.b.close $w.b.update

  pack $w.b -side bottom -fill x
  pack $w.o3 -side bottom -fill x -padx 2 -pady 2
  pack $w.o2 -side bottom -fill x -padx 2 -pady 2
  pack $w.o1 -side bottom -fill x -padx 2 -pady 2

  pack $w.t -side top -fill both -expand yes
  grid $w.t.text -row 0 -column 0 -sticky news
  grid $w.t.ybar -row 0 -column 1 -sticky news
  grid $w.t.xbar -row 1 -column 0 -sticky news
  grid rowconfig $w.t 0 -weight 1 -minsize 0
  grid columnconfig $w.t 0 -weight 1 -minsize 0

  ::plist::ConfigMenus
  ::plist::refresh
}

proc ::plist::ConfigMenus {{lang ""}} {
  set w .plist
  if {! [winfo exists $w]} { return }
  if {$lang == ""} { set lang $::language }
  set m $w.menu
  foreach idx {0 1} tag {File Sort} {
    configMenuText $m $idx PList$tag $lang
  }
  foreach idx {0 2} tag {Update Close} {
    configMenuText $m.file $idx PListFile$tag $lang
  }
  foreach idx {0 1 2 3 4} tag {Name Elo Games Oldest Newest } {
    configMenuText $m.sort $idx PListSort$tag $lang
  }
}

proc ::plist::refresh {} {
  set w .plist
  if {! [winfo exists $w]} { return }

  busyCursor .
  ::utils::history::AddEntry ::plist::name $::plist::name
  set t $w.t.text
  $t configure -state normal
  $t delete 1.0 end

  $t insert end "\t" title
  foreach i {Games Oldest Newest Elo Name} {
    $t tag configure s$i -font font_SmallBold
    $t tag bind s$i <1> "set ::plist::sort $i; ::plist::refresh"
    $t tag bind s$i <Any-Enter> "$t tag config s$i -foreground red"
    $t tag bind s$i <Any-Leave> "$t tag config s$i -foreground {}"
    $t insert end "\t" title
    $t insert end [tr PListSort$i] [list title s$i]
  }
  $t insert end "\n" title

  update
  set err [catch {sc_name plist -name $::plist::name -size $::plist::size \
            -minGames $::plist::minGames -maxGames $::plist::maxGames \
            -minElo $::plist::minElo -maxElo $::plist::maxElo \
                -sort [string tolower $::plist::sort]} pdata]
  if {$err} {
    $t insert end "\n$pdata\n"
    unbusyCursor .
    return
  }

  set hc yellow
  set count 0
  foreach player $pdata {
    incr count
    set ng [lindex $player 0]
    set oldest [lindex $player 1]
    set newest [lindex $player 2]
    set elo [lindex $player 3]
    set name [lindex $player 4]

    $t tag bind p$count <ButtonPress-1> [list ::pinfo::playerInfo $name]
    #$t tag bind p$count <ButtonPress-$::MB3> [list playerInfo $name]
    $t tag bind p$count <Any-Enter> \
      "$t tag configure p$count -background $hc"
    $t tag bind p$count <Any-Leave> \
      "$t tag configure p$count -background {}"
    $t insert end "\n"
    $t insert end "\t$count\t" p$count
    $t insert end $ng [list ng p$count]
    $t insert end "\t" p$count
    $t insert end $oldest [list date p$count]
    $t insert end "\t" p$count
    $t insert end "- $newest" [list date p$count]
    $t insert end "\t" p$count
    $t insert end $elo [list elo p$count]
    $t insert end "\t" p$count
    $t insert end $name [list name p$count]
  }
  $t insert end "\n"
  $t configure -state disabled
  unbusyCursor .
}

proc ::plist::check {} {
  if {$::plist::minGames > $::plist::maxGames} {
    set ::plist::maxGames $::plist::minGames
  }
  if {$::plist::minElo > $::plist::maxElo} {
    set ::plist::maxElo $::plist::minElo
  }
}
### End of file pfinder.tcl: part of Scid.

####################
# Tournament window

namespace eval ::tourney {}

foreach {n v} {start 0000.00.00 end 2047.12.31 minPlayers 2 maxPlayers 999 \
                 minGames 1 maxGames 9999 minElo 0 maxElo 4000 sort Date \
                 country "" site "" event "" player "" size 50} {
  set ::tourney::$n $v
}

trace variable ::tourney::start w ::utils::validate::Date
trace variable ::tourney::end w ::utils::validate::Date
foreach {n v} {minPlayers 999 maxPlayers 999 minGames 9999 maxGames 9999 \
                 minElo [sc_info limit elo] maxElo [sc_info limit elo]} {
  trace variable ::tourney::$n w [list ::utils::validate::Integer $v 0]
}

set tourneyWin 0

proc ::tourney::toggle {} {
  set w .tourney
  if {[winfo exists $w]} {
    destroy $w
  } else {
    ::tourney::Open
  }
}

proc ::tourney::Open {} {
  global tourneyWin
  set w .tourney
  if {[winfo exists $w]} { return }
  set tourneyWin 1

  if {! [info exists ::tourney::_defaults]} { ::tourney::defaults }

  toplevel $w
  wm title $w "Scid: [tr WindowsTmt]"
  setWinLocation $w
  bind $w <Configure> "recordWinSize $w"

  bind $w <F1> {helpWindow Tmt}
  bind $w <Escape> "$w.b.close invoke"
  bind $w <Return> ::tourney::refresh
  bind $w <Destroy> { set tourneyWin 0 }
  standardShortcuts $w
  bind $w <Up> "$w.t.text yview scroll -1 units"
  bind $w <Down> "$w.t.text yview scroll 1 units"
  bind $w <Prior> "$w.t.text yview scroll -1 pages"
  bind $w <Next> "$w.t.text yview scroll 1 pages"
  bind $w <Key-Home> "$w.t.text yview moveto 0"
  bind $w <Key-End> "$w.t.text yview moveto 0.99"
  bindMouseWheel $w $w.t.text

  menu $w.menu
  $w configure -menu $w.menu
  $w.menu add cascade -label TmtFile -menu $w.menu.file
  menu $w.menu.file
  $w.menu.file add command -label TmtFileUpdate -command ::tourney::refresh
  $w.menu.file add command -label TmtFileClose -command "destroy $w"
  $w.menu add cascade -label TmtSort -menu $w.menu.sort
  menu $w.menu.sort
  foreach name {Date Players Games Elo Site Event Winner} {
    $w.menu.sort add radiobutton -label TmtSor$name \
      -variable ::tourney::sort -value $name -command {::tourney::refresh -fast}
  }

  foreach i {t o1 o2 o3 b} {frame $w.$i}
  text $w.t.text -width 75 -height 22 -font font_Small -wrap none \
    -fg black -bg white -yscrollcommand "$w.t.ybar set" -setgrid 1 \
    -cursor top_left_arrow -xscrollcommand "$w.t.xbar set"
  scrollbar $w.t.ybar -command "$w.t.text yview" -width 12 -takefocus 0
  scrollbar $w.t.xbar -orient horiz -command "$w.t.text xview" -width 12 \
    -takefocus 0
  set xwidth [font measure [$w.t.text cget -font] "0"]
  set tablist {}
  foreach {tab justify} {3 r 4 l 18 r 23 r 30 r 32 l 55 l} {
    set tabwidth [expr {$xwidth * $tab} ]
    lappend tablist $tabwidth $justify
  }
  $w.t.text configure -tabs $tablist
  $w.t.text tag configure date -foreground darkRed
  $w.t.text tag configure np -foreground darkBlue
  $w.t.text tag configure elo -foreground darkGreen
  $w.t.text tag configure best -foreground steelBlue
  $w.t.text tag configure event -foreground darkRed
  $w.t.text tag configure title -font font_SmallBold

  set font font_Small
  set fbold font_SmallBold
  set f $w.o1
  label $f.from -text "[tr TmtSortDate]:" -font $fbold
  entry $f.efrom -textvariable ::tourney::start -width 10 -font $font
  bindFocusColors $f.efrom
  bind $f.efrom <FocusOut> +::tourney::check
  label $f.to -text "-" -font $font
  entry $f.eto -textvariable ::tourney::end -width 10 -font $font
  bindFocusColors $f.eto
  bind $f.eto <FocusOut> +::tourney::check
  pack $f.from $f.efrom $f.to $f.eto -side left

  label $f.cn -text "  $::tr(Country):" -font $fbold
  ttk::combobox $f.ecn -width 4 -textvar ::tourney::country -values {{} AUT CZE DEN ENG ESP FRA GER GRE HUN ITA NED POL RUS \
        SCG SUI SWE USA YUG}
  
  bindFocusColors $f.ecn
  bind $f.ecn <FocusOut> +::tourney::check
  pack $f.cn $f.ecn -side left

  label $f.size -text $::tr(TmtLimit:) -font $fbold
  ttk::combobox $f.esize -width 4 -justify right -textvar ::tourney::size -values {10 20 50 100 200 500 1000}
  trace variable ::tourney::size w {::utils::validate::Integer 1000 0}
  bindFocusColors $f.esize

  pack $f.esize $f.size -side right

  set f $w.o2
  label $f.players -text "[tr TmtSortPlayers]:" -font $fbold
  entry $f.pmin -textvariable ::tourney::minPlayers \
    -width 3 -justify right -font $font
  bindFocusColors $f.pmin
  bind $f.pmin <FocusOut> +::tourney::check
  label $f.pto -text "-"
  entry $f.pmax -textvariable ::tourney::maxPlayers \
    -width 3 -justify right -font $font
  bindFocusColors $f.pmax
  bind $f.pmax <FocusOut> +::tourney::check
  pack $f.players $f.pmin $f.pto $f.pmax -side left

  label $f.games -text "   [tr TmtSortGames]:" -font $fbold
  entry $f.gmin -textvariable ::tourney::minGames \
    -width 4 -justify right -font $font
  bindFocusColors $f.gmin
  bind $f.gmin <FocusOut> +::tourney::check
  label $f.gto -text "-" -font $font
  entry $f.gmax -textvariable ::tourney::maxGames \
    -width 4 -justify right -font $font
  bindFocusColors $f.gmax
  bind $f.gmax <FocusOut> +::tourney::check
  pack $f.games $f.gmin $f.gto $f.gmax -side left
  label $f.elolab -text "$::tr(TmtMeanElo):" -font $fbold
  entry $f.elomin -textvariable ::tourney::minElo \
    -width 5 -justify right -font $font
  bindFocusColors $f.elomin
  label $f.eto -text "-" -font $font
  entry $f.elomax -textvariable ::tourney::maxElo \
    -width 5 -justify right -font $font
  bindFocusColors $f.elomax
  pack $f.elomax $f.eto $f.elomin $f.elolab -side right

  set f $w.o3
  label $f.sitelab -text "$::tr(Site):" -font $fbold
  ttk::combobox $f.site -textvariable ::tourney::site -width 12
  ::utils::history::SetCombobox ::tourney::site $f.site
  bindFocusColors $f.site
  pack $f.sitelab $f.site -side left

  label $f.eventlab -text "   $::tr(Event):" -font $fbold
  ttk::combobox $f.event -textvariable ::tourney::event -width 12
  ::utils::history::SetCombobox ::tourney::event $f.event
  bindFocusColors $f.event
  pack $f.eventlab $f.event -side left

  label $f.playerlab -text "$::tr(Player):" -font $fbold
  ttk::combobox $f.player -textvariable ::tourney::player -width 12
  ::utils::history::SetCombobox ::tourney::player $f.player
  bindFocusColors $f.player
  pack $f.player $f.playerlab -side right
  focus $f.site

  dialogbutton $w.b.defaults -textvar ::tr(Defaults) -command ::tourney::defaults
  dialogbutton $w.b.help -textvar ::tr(Help) -command {helpWindow Tmt}
  dialogbutton $w.b.update -textvar ::tr(Update) -command ::tourney::refresh
  dialogbutton $w.b.close -textvar ::tr(Close) -command "destroy $w"
  pack $w.b -side bottom -fill x
  packbuttons right $w.b.close $w.b.update $w.b.help
  packbuttons left $w.b.defaults
  pack $w.o3 -side bottom -fill x -padx 2 -pady 2
  pack $w.o2 -side bottom -fill x -padx 2 -pady 2
  pack $w.o1 -side bottom -fill x -padx 2 -pady 2
  pack $w.t -side top -fill both -expand yes
  grid $w.t.text -row 0 -column 0 -sticky news
  grid $w.t.ybar -row 0 -column 1 -sticky news
  grid $w.t.xbar -row 1 -column 0 -sticky news
  grid rowconfig $w.t 0 -weight 1 -minsize 0
  grid columnconfig $w.t 0 -weight 1 -minsize 0

  ::tourney::ConfigMenus
  ::tourney::refresh
}

proc ::tourney::ConfigMenus {{lang ""}} {
  set w .tourney
  if {! [winfo exists $w]} { return }
  if {$lang == ""} { set lang $::language }
  set m $w.menu
  foreach idx {0 1} tag {File Sort} {
    configMenuText $m $idx Tmt$tag $lang
  }
  foreach idx {0 2} tag {Update Close} {
    configMenuText $m.file $idx TmtFile$tag $lang
  }
  foreach idx {0 1 2 3 4 5 6} tag {Date Players Games Elo Site Event Winner} {
    configMenuText $m.sort $idx TmtSort$tag $lang
  }
}

proc ::tourney::defaults {} {
  set ::tourney::_defaults 1
  set year [::utils::date::today year]
  #set ::tourney::start "$year.??.??"
  set ::tourney::start "1800.??.??"
  set ::tourney::end "$year.12.31"
  set ::tourney::size 50
  set ::tourney::minPlayers 2
  set ::tourney::maxPlayers 999
  set ::tourney::minGames 1
  set ::tourney::maxGames 9999
  set ::tourney::minElo 0
  set ::tourney::maxElo 4000
  set ::tourney::country ""
  set ::tourney::site ""
  set ::tourney::event ""
  set ::tourney::player ""
}

proc ::tourney::refresh {{option ""}} {
  set w .tourney
  if {! [winfo exists $w]} { return }

  busyCursor $w
  ::utils::history::AddEntry ::tourney::site $::tourney::site
  ::utils::history::AddEntry ::tourney::event $::tourney::event
  ::utils::history::AddEntry ::tourney::player $::tourney::player

  set t $w.t.text
  $t configure -state normal
  $t delete 1.0 end
  update
  set fastmode 0
  if {$option == "-fast"} { set fastmode 1 }

  if {$fastmode  &&  $::tourney::list != ""} {
    set tlist $::tourney::list
  } else {
    if {[catch {sc_base tournaments \
                  -start $::tourney::start \
                  -end $::tourney::end \
                  -size 2500 \
                  -minPlayers $::tourney::minPlayers \
                  -maxPlayers $::tourney::maxPlayers \
                  -minGames $::tourney::minGames \
                  -maxGames $::tourney::maxGames \
                  -minElo $::tourney::minElo \
                  -maxElo $::tourney::maxElo \
                  -country [string toupper $::tourney::country] \
                  -site $::tourney::site \
                  -event $::tourney::event \
                  -player $::tourney::player \
                } tlist]} {
      $t insert end $tlist
      $t configure -state disabled
      unbusyCursor .
      return
    }
    set ::tourney::list $tlist
  }
  switch $::tourney::sort {
    "None" {}
    "Date" { set tlist [lsort -decreasing -index 0 $tlist] }
    "Players" { set tlist [lsort -integer -decreasing -index 3 $tlist] }
    "Games" { set tlist [lsort -integer -decreasing -index 4 $tlist] }
    "Elo" { set tlist [lsort -integer -decreasing -index 5 $tlist] }
    "Site" { set tlist [lsort -dict -index 1 $tlist] }
    "Event" { set tlist [lsort -dict -index 2 $tlist] }
    "Winner" { set tlist [lsort -dict -index 7 $tlist] }
  }

  if {[llength $tlist] > 0} {
    foreach i {Date Players Games Elo Site Event Winner} {
      $t tag configure s$i -font font_SmallBold
      $t tag bind s$i <1> "set ::tourney::sort $i; ::tourney::refresh -fast"
      $t tag bind s$i <Any-Enter> "$t tag config s$i -foreground red"
      $t tag bind s$i <Any-Leave> "$t tag config s$i -foreground {}"
    }
    $t insert end "\t\t"
    $t insert end [tr TmtSortDate] sDate
    $t insert end "\t"
    $t insert end [tr TmtSortPlayers] sPlayers
    $t insert end "\t"
    $t insert end [tr TmtSortGames] sGames
    $t insert end "\t"
    $t insert end [tr TmtSortElo] sElo
    $t insert end "\t"
    $t insert end [tr TmtSortSite] sSite
    $t insert end ": "
    $t insert end [tr TmtSortEvent] sEvent
    $t insert end "\t"
    $t insert end [tr TmtSortWinner] sWinner
    $t insert end "\n"
  } else {
    $t insert end $::tr(TmtNone)
  }

  set hc yellow
  set count 0
  foreach tmt $tlist {
    incr count
    if {$count > $::tourney::size} { break }
    set date [lindex $tmt 0]
    set site [lindex $tmt 1]
    set event [lindex $tmt 2]
    set np [lindex $tmt 3]
    set ng [lindex $tmt 4]
    set elo [lindex $tmt 5]
    set g [lindex $tmt 6]
    set white [::utils::string::Surname [lindex $tmt 7]]
    set welo [lindex $tmt 8]
    set wscore [lindex $tmt 9]
    set black [::utils::string::Surname [lindex $tmt 10]]
    set belo [lindex $tmt 11]
    set bscore [lindex $tmt 12]
    if {$welo > 0} { append white "($welo)" }
    if {$belo > 0} { append black "($belo)" }
    append white " $wscore"
    append black " $bscore"
    set one "1."
    set two "2."
    if {$wscore == $bscore} {
      set one "1="; set two "1="
    }
    set best "$one $white, $two $black, ..."
    if {$np == 2} { set best "$one $white, $two $black" }

    $t tag bind g$count <ButtonPress-1> [list ::tourney::select $g]
    $t tag bind g$count <ButtonPress-$::MB3> [list ::tourney::select $g 1]
    $t tag bind g$count <Any-Enter> \
      "$t tag configure g$count -background $hc"
    $t tag bind g$count <Any-Leave> \
      "$t tag configure g$count -background {}"
    $t insert end "\n"
    $t insert end "\t$count\t" g$count
    $t insert end $date [list date g$count]
    $t insert end "\t" g$count
    $t insert end $np [list np g$count]
    $t insert end "\t" g$count
    $t insert end $ng [list ng g$count]
    $t insert end "\t" g$count
    $t insert end $elo [list elo g$count]
    $t insert end "\t" g$count
    $t insert end "$site: " [list site g$count]
    $t insert end "$event" [list event g$count]
    $t insert end "\t$best" [list best g$count]
  }
  $t insert end "\n"
  $t configure -state disabled
  unbusyCursor .
}

proc ::tourney::check {} {
  set start $::tourney::start
  set end $::tourney::end
  if {[string length $start] == 0} { set start "0000" }
  if {[string length $end] == 0} { set end [sc_info limit year]}
  if {[string length $start] == 4} { append start ".??.??" }
  if {[string length $end] == 4} { append end ".12.31" }
  if {[string length $start] == 7} { append start ".??" }
  if {[string length $end] == 7} { append end ".31" }
  set ::tourney::start $start
  set ::tourney::end $end
  if {$::tourney::minPlayers < 2} {set ::tourney::minPlayers 2}
  if {$::tourney::minPlayers > $::tourney::maxPlayers} {
    set ::tourney::maxPlayers $::tourney::minPlayers
  }
  set s $::tourney::country
  set s [string toupper [string trim $s]]
  if {[string length $s] > 3} { set s [string range $s 0 2] }
  set ::tourney::country $s
  if {$::tourney::country == "---"} {
    set ::tourney::country ""
  }
}

proc ::tourney::select {gnum {openCrosstable 0}} {
  if {[catch {::game::Load $gnum} result]} {
    tk_messageBox -type ok -icon info -title "Scid" -message $result
    return
  }
  flipBoardForPlayerNames $::myPlayerNames
  updateBoard -pgn
  updateTitle
  if {$openCrosstable} {
    crosstabWin
  } else {
    ::crosstab::RefreshIfOpen
  }
}

###
### windows/switcher.tcl: part of Scid
### Copyright (C) 2000-2004  Shane Hudson.

set icons {
  {Unknown}
  {
  R0lGODdhIAAgAIAAAAAAAP///ywAAAAAIAAgAAACHoyPqcvtD6OctNqLs968+w+G4kiW5omm
  6sq27gubBQA7
  }
  {Temporary database}
  {
  R0lGODlhIAAgAMYaACEhISQkJC0tLTExMTU1NTk5OTo6Oj09PT4+PkJCQkND
  Q0REREZGRklJSUtLS0xMTE1NTU5OTlFRUVJSUlNTU1RUVFVVVVdXV1hYWFlZ
  WVpaWltbW1xcXF5eXl9fX2BgYGFhYWJiYmNjY2RkZGVlZWhoaGlpaWpqamtr
  a2xsbG1tbW5ubm9vb3BwcHJycnNzc3R0dHV1dXZ2dnd3d3h4eHl5eXp6ent7
  e3x8fH19fX5+fn9/f4GBgYKCgoODg4SEhIWFhYaGhoeHh4iIiImJiYqKiouL
  i4yMjI2NjY6OjpGRkZKSkpOTk5SUlJaWlpeXl5iYmJmZmZqamp2dnaKioqam
  pqmpqaqqqre3t7m5ubq6uru7u729vVpaWlpaWlpaWlpaWlpaWlpaWlpaWlpa
  WlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpa
  WlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWiH5BAEKAH8A
  LAAAAAAgACAAAAf+gH+Cg4SFhoeIiYqLhVtZVlhYjJOCV1VTUlmJT4JJg02K
  XFpUjok2Nzc1pzZHilFQSlFUiky1tVGIPSq7vLsuiENLQkdHUog5GMnKySeI
  KEMnNTVBiRIP19gPrYcjIUQhITyJMgnl5hOJKjU7Ly9DihAE8gQGSIkULxbg
  MYo0HP8cSiSK0sCBiwYNVihqkaFhBg+JiGjIwKKhQkQ4HCjYuHHEoSYaOSpg
  cNFQAgQoUyKAYoiESpWUYsqcSbOmTZtJfkzioUMnoxsuXOhgFBQGIx8lSvBj
  JMTEu0UdNnQQ5EEcrUkVJFTg4UGCjURAVIhYYTXRhwVoFzgANS5FDkZDRgzI
  NQBi0QEDESY5YMB3iaImAgQMKMKoBovDi4JcWFz2UBQLBSIXWAAE0QzJkV8k
  EgCgs2cATgw5+dw5wLabqFEHAgA7
  }
  {Clipbase}
  {
  R0lGODdhIAAgAMIAAP///wAAqgAAAP//AOrq6gAAAAAAAAAAACwAAAAAIAAgAAADwAi63P4Q
  hKkCs9NKWvVd2KeFUmmCjVeOG3tWqIpxrHvR2Xp7XOT/wKBwISgaj8ik8SEYOJ/QqPTpaE6v
  2IZ1oOx2tU7BEGgVj39lUGbNbvcA6QphbpwT6vTinBGX2PF3enkCe0RhIH+CgYSDhQp9AYCS
  ikV8hxWTjIuJllwgmYmalYaeco2nmwSdZn6ooKqkrAGhtKern5S5oqxwlxKvqYG3mLq1wrGI
  rsWwj76zyruMw63Br9ORy9W8TbzY0cZFCQA7	  
  }
  {PGN format file}
  {
  R0lGODdhIAAgAKEAAP////8AAAAA/wAAACwAAAAAIAAgAAACZISPqcvtD6MMlKIajAXbiP9p
  WMaNpfhsVoWyHQCG5/mKWGqqq3nEgq2z0WqKGmtYInliqMQoE3QQk7vmEiTJaiW+rvcr227B
  ZLBYXE77zmO1m611v+FceZpet5PxEX2ZDxiIVwAAOw==
  }
  {My games}
  {
  R0lGODlhIAAgAOeOACAgICUlJSoqKi4uLjMzMzY2Njg4ODo6Ojw8PD09PT49
  PT8+Pj8/P0BAQEJCQkREREVFRUZGRklISEpKSk1LS05OTk9PT1FRUVVSUlNT
  U1RUVFZWVllVVVhYWFtYWFxaWltbW1xcXF5cXF9cXF1dXWJfX2BgYGFhYWVi
  YmVjY2RkZGhlZWZmZmllZWhoaGtnZ2xoaGxpaWpqam9sbG9vb3Jvb3FxcXVy
  cnR0dHZ2dnl2dnd3d3h4eH13d3p6en55eXt7e4B6enx8fIB8fIN9fX9/f4CA
  gIR/f4GBgYKCgomDg4WFhYaGhoqFhYyGhoqKiouLi5CQkJWOjpaOjpGRkZKS
  kpeQkJSUlJWVlZuUlJ6Wlp6Xl5qampycnKKamp2dnaKbm56enqScnKCgoKef
  n6KioqmgoKqhoaWlpa2kpKioqLCmpqurq6ysrLGxsbKysrOzs7S0tLyysra2
  tr6zs7+1tbq6usO4uLy8vMO5ub29vcW7u8e8vMDAwMi9vcfHx8nJyczMzM7O
  zs/Pz9LS0tTU1NbW1tra2t3d3eLi4uTk5Ojo6Orq6uzs7P//////////////
  ////////////////////////////////////////////////////////////
  ////////////////////////////////////////////////////////////
  ////////////////////////////////////////////////////////////
  ////////////////////////////////////////////////////////////
  ////////////////////////////////////////////////////////////
  ////////////////////////////////////////////////////////////
  ////////////////////////////////////////////////////////////
  /////////////////////yH5BAEKAP8ALAAAAAAgACAAAAj+AP8JHEiwoMGD
  CBMqXMiwocOHECMqtEOxokU7Ev+p+cKxo8eObSLC0YMHz5iTbkrGOVlGop1G
  MHnI7ANzkEweSSLOYcQTh089PAP5xHElitGjSJFyEfhmkVMaUO04BQSVxpMu
  WLNq1YpGIBMfYA2J7QKWilhDPGSoXcuWrRGBQljIVUQXi9wldBXlkMu3r18c
  AnmcGJyoMJXBSAonsjG4sePHNARCCUO5suXKKkJo3syZswyBYxCJ7kCajZ/T
  TUh3SHHaj44OrWOfFtjlkO0MuNW0JoM7w5DWNzKcFiOlePEsAqv8WW6i+ZjT
  e/JcqFBhS53TNSpgp86dhEATE8L9ny1yGoyfGOHpiDk9YwL78PA7CAQBoX6h
  +0BOE/HjBIIIP0ecBgMEAtZnoAYCbdDAgoQ0uMNpLcixRgM/+PHBaSs0cJoW
  TnTYoQUCAdHGiM2BdxoKU/ghgRd0JHAiArK1NoFXgtRowI0GnFbCC368cIcV
  OfpRQpBD4mhABAIlEciSBDRJwGkjLMCHGX7A8KQfI1yZpZMEOCCQC0cNIOYA
  p3kwwBmnKUCmH2aWOaaYCQjEgAB01inAaRwI0IMfadCJ551+WEHEoIMqIdAB
  ASSqaACnYRAABX4EkWijjMY42z8TAKDpppx26umnBQz0gIGklmrqqfVlpOqq
  rEIUEAA7
  }
  {Large database}
  {
  R0lGODdhIAAgAKEAAP8AAP///wAA/wAAACwAAAAAIAAgAAACiYSPqcvtH6KctFpks544iA9+
  WRhGHQmOqGAeUblR8AnH3uzeNxunYkB7/VS8X1DIq6SELQNTspxEdcCcZTqldIjIzZaYrXzB
  tvE1LLaChxmz9IeWuLtQtjbHDmN5xx33eRRHZ4THIlhnyFd4+LZEY9fjuEiyJum0Q3mG0gRg
  4ymn9un1QFpqeloAADs=
  }
  {Correspondence chess}
  {
  R0lGODdhIAAgANMAAAAAAAAAqgCqAACqqqoAAKoAqqpVAKqqqlVVVVVV/1X/VVX///9VVf9V
  ////Vf///ywAAAAAIAAgAAAEuPDJ+YC1NOs97fkfxo0UcDxgKpIcgL5p6LLZPJ24atM7leu8
  1waHAo5MMM4PtKoliRniwTPdmFLJ4ZWpuVI/2U6sWgsxvk/UltrzMs5f6TpEFk/fF/RpLivf
  zzJUaipqbTKATBd0XFNta1uJi5E9EnFjTJd1XZCXnFwkliqZlJueU52kNQYGlpxNoKusX480
  JbEeuI21qqsmvhe7Xbe/wS23p6nBAMO6xcK9yM7Pss3SGdAuydKvNBEAOw==
  }
  {Computer chess}
  {
  R0lGODlhIAAgAOezABVBgRtFhRFKiSBHiBNLihVMjCVMhzpmokNpmj9qpzhuqkFsqUxrl0FupE1s
  mEpspDpwrERurE5tmTtxrUNwpj1yrkRxp0VyqD90sEt3rkV5tUx4r055sVB7s1F8tFJ9tVN+tlV/
  t0yCuHx6flt/slaAuX17f1yAs1eBuk+Eu12BtFiCu1CFvFaEtVyDsF6CtVmDvFGGvV2EsV+DtlqE
  vVKHvoF/g2CEt1uFvlOIv1mHuGaEsmGFuFSJwIOBhVqIuVuJulaKwWOHulyKvF2LvViMw1mNxF+M
  vmWLuGCNv2GOwGeNulyQyGKPwWOQwmmPvGSRw2qQvWWSxGaTxWyTwGeUxm2UwWiVx26VwmmWyZKQ
  lG+Ww2qXyo6SlZORlXWWvnCXxGyYy5SSlnaXv3GYxW2ZzHeYwHKZxpaUmHOax3mZwpeVmWeez3Sb
  yJKXmXqaw3Ccz5iWmnubxJmXm3edynydxX6fx56coIChyZ+doaGeoqKfo6Wip6ekqamnq7K0sbO1
  srS2s7a4tby+u72/vL7BvcDCvsHDv8XHxLvK3rzL38jKx73M4MnLyMrMycvOys3Py87QzM/RztLU
  0dPV0tTW09XX1MzY5tLY2tbY1c7a6NXa3Nja1s/b6tbb3dnb19rc2dvd2tne4d3f3N7g3eDi39rj
  6+Hk4OPl4eTm4+Xn5Obo5efp5ujq5+nr6PL08fn7+Pr8+f7//P//////////////////////////
  ////////////////////////////////////////////////////////////////////////////
  ////////////////////////////////////////////////////////////////////////////
  ////////////////////////////////////////////////////////////////////////////
  /////////////////////////////////////////////////////yH+EUNyZWF0ZWQgd2l0aCBH
  SU1QACH5BAEKAP8ALAAAAAAgACAAAAj+AP8JHEiwoMGDCBMqXDjQi5iHECNKlNhFYSNZGDNq3LgR
  kkJHlwAMECCAAIECBQyoXLkyAKNIHzVZeHFDCJIlUaiAGTMGzJctQLfISAQzoSNND0io4AEEp5Ut
  ZM6oIQMGKBYXRGM2IFEzyRMqW8CkkUP2jZozZHZkNaqJQosfQJREwSL2jRw7dtpsiQJkw1qERynM
  AJIEihUwZ9rQwQNmRYcNGCocUFQUsKYIN4A0kYKFjOI0OT6I7qAhQwLKMS/8OOLkcJo2TXrkqMEC
  xQcPHBagZquadZUsUo4YUZKkSBAcLEp4gLDbMoQUNXoQbgJlyhQpTZIEyZEiBPPKB4/+KhABo8eR
  JlOyhFlfxYmRHskvNA+vSUEJFkGUMKkShg2cMldAoUQQNKBQwV/hmYKABA40yMCDED7YYIMIdAKe
  QY7IEsuGHHboIYeyeJTQIY2UaKIjKKaoYoqPIKKQKJHEGCMkNNL4yI2OmLjIIo14kpAenPwByJCA
  BGLkkUgi+QcndxxkgiiDJCnllEYOwskIBsUByypcouLlKad88gknZHJCyplokjLKK2sYtIkrrHC5
  ipeonFKIIHgKQgiYfPKJCiYFudEKnX2eMoohhxiC6CGkFMonK2gQFMcnMlYa4ySUZErJJJZW+kkc
  BM0xSiWklkoqJXpooaoWe1hiqqkio8xBkA98+GHrrbj2oWsfuPbqBx82MCTssMQWa+yxyBoUEAA7
  }
  {Sorted Index of games}
  {
  R0lGODdhIAAgANMAAAAAAAAAqgCqAACqqqoAAKoAqqpVAKqqqlVVVVVV/1X/VVX///9VVf9V
  ////Vf///ywAAAAAIAAgAAAEovDJSau9OOvNu/9gKALkE5wPqa5A10pJHGtvxrImqkrAcWC1
  i2zGS/kut1wglUwZf5UgbIh09qCT0ml5w1mflNcwsWmZwbyuuvQ1H52hs/z9WkvbVvoIfy0y
  11F8enFtCQGDgBZyKYeDIHKGPo4fco1vW5iZmDVmkZI8Y6FjAEtWllh2ajqebxSir2OnGJq0
  mpJYF7e6u7scvL+3IsLDxMUUEQA7
  }
  {Player collection}
  {
  R0lGODlhIAAgAOfIAABO/gBQ/AJU8QBU/gNV8QBW/QBb/gFb/gBc/QBg/gBh
  /Qxe7wFh/gBl/gFm/gBn/QBr/gBs/RRk9gNt/hJo9wBy/gBz/gB3/gB4/gB9
  /gt4/gB+/gJ+/gCC/gt9/gCD/gCJ/gCK/gGK/hKD+wCP/g6J/gGQ/hKI/CV/
  /gWR/gCU/jV97wGV/jZ8/hCQ/gCZ/hyL/h2L/gGa/i6F/g+V/huP/hCV/i+G
  /hyQ/gCg/iSP/gGh/gud/gai/iSV/B2b/gCr/gGr/iea/hCm/gCw/ham/gGx
  /kiQ+A+v/hCv/hCw/jad/iml/i+i/huu/hSy/RC1/RC1/kiZ/liR/gq6/lmS
  /gu7/kid/iO0/hW9/Ra+/jqs/l2d9Ce3/k6k/lyf9Su3+iy4+T6u/jmx/i65
  +Se8/j2x/lyj9ju1/lym9yXC/lyp+Hmh3GWl/ki1/lys+XCk/lyw+mWs+km6
  /nCn/lW2/lyz+zbH/TfH/TjI/V22/DDN/l25/Wq1/kbI/E/E/kjI/F69/V/A
  /lvE/lzE/my8/lvF/lzF/mDD/nC7/kvQ/WHG/oG3+XK+/UvS/W/A/oG5+VfQ
  /WPK/oe4/lvP/FnQ/oC9/om5/lrS/XfE/lzS/X3G/n7G/nvI/nDP/pC//nDR
  /m3T/pDC/oPK/n7S7m/b/pXJ/nvY/JrK/pvK/pDR/o3T/pvM/p3M/oTc/p/S
  /oze/rbO/qfW/qnW/qLa/rbQ/rjP/q3W/rjR/qfa/rbU/rjU/rbW/rjW/rba
  /rjb/rDg/q3i/rLg/rbf/q3k/rjg/rjm/rjn/q6urq6urq6urq6urq6urq6u
  rq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6u
  rq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6u
  rq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6u
  rq6urq6urq6urq6urq6uriH5BAEKAP8ALAAAAAAgACAAAAj+AP8JHEiwoMGD
  CBMqXMiwocOHECMmJIUpksWLGDVJ/KcIz52PIEPmcSSxVLFilaxQUeMKFiwt
  VKzskXjnJCgjRMoQO3YsChEiWfwAGkq06FBKBGsW8xQESJdgxowpAQIECpgw
  WLNqxUrm1MA/gwgNOkSWkFlDZLEgScK2rVu2T0INdNKjxxxgwlYNqUtLmDA0
  OQILHix4h6SBRV68cDOsmCoeinOdNKO4smXLMhYNHLNlS51NnB6J6ZyJEycm
  KlKrXq2aBaKBnWTNKmSDRpNXs2b9oEEjBYnfwIMDNyFo4ChfvxKJACHk1q9f
  LkBIn069OogQgQY2YtWqD44aS0zPtWpVooP58+jTd/jAZ6APGDG8oEplSUeM
  GBwy6N/Pv3+GDXoMdMIFF1zBSy+ieEDgggw22CAGdgw0QgUVSKHLLp9oQOGG
  HHbYoQVxDCTHJJe0ccMMKEwAwYostuhiixG8MRAkteBChwMN5Kjjjjz22MAD
  awzESCy2wMFAAkgmqeSSTCagQBoDHTFFFS0cYMCVWGap5ZYGIHDGQBQMIOaY
  ZJZpZpkFfDGQBAC06eabcMYJZwBcDLQCAQLkqeeefPa55wJsbCTooIQWauih
  BwUEADs=
  }
  {Tournament: All-play-all}
  {
  R0lGODdhIAAgAKEAAP///wAAAAAA//8AACwAAAAAIAAgAAACZoSPqcvtH6KMYM6HM7RVdq+F
  4kg2gnEC6YqW7usIsmwExnDnAL7rmA1rAF0zWq+i4yl9mmFQ4QwVU0vkscojRZ+HbayY1AGx
  QS/XnJiGr7X1E13+ztZka5ZrxSO8ara/CqcnOJhQAAA7
  }
  {Tournament: Swiss}
  {
  R0lGODdhIAAgAIAAAP8AAP///ywAAAAAIAAgAAACRYSPqcvtD6OctFoQss437d0hnxYeI1di
  Z6qO7BlU8Pw59B03OG3vcO9z6YJCBrG4ONYov1Sz9AxFO9NL1XJlabfcrldRAAA7
  }
  {Grandmaster games}
  {
  R0lGODlhIAAgAOevACAgICUlJSoqKi4uLjEwMDMzMzY2Njg4ODo6Ojw8PD09
  PT49PT8+Pj8/P0BAQEREREZEREVFRUlHR0lISEpKSk1KSk1LS0xMTE5OTlFR
  UVVSUlNTU1ZWVllVVVhYWFtYWFxaWltbW1xcXF1cXF5cXF9cXF5dXWJfX2Bg
  YGFhYWViYmVjY2RkZGZmZmllZWplZWhoaGtnZ2xoaGxpaWpqam1qam9ra3Ft
  bW9vb3FxcXR0dHhzc3Z2dnd3d3p2dnh4eH13d3x4eHp6en15eX55eXt7e4B6
  enx8fIB8fIN9fX9/f4CAgIR/f4GBgYZ/f4KCgomCgomDg4WFhYaGhoqFhYyG
  ho6Hh4qKio+IiIuLi5CJiZCLi5KMjJCQkJaOjpGRkZKSkpeQkJeRkZSUlJWV
  lZqTk5uUlJ6Xl5qampycnKGamqKamp2dnaKbm6Sbm56enqScnKWdnaCgoKef
  n6KioqmgoKqhoaWlpayjo62kpKioqK+lpbCmpqurq6ysrLOpqbOqqrasrLet
  rbeurrGxsbKysrmvr7Ozs7S0tLyysra2tr2zs76zs7+1tbq6usK4uMO4uLy8
  vMO5ucS5ub68vL29vcS6usW6usW7u8a7u8e8vMDAwMe9vci9vcfExMfHx8nJ
  yczMzM7OztLNzc/Pz9LS0tTU1NbW1tra2t3d3eLi4uTk5Ojo6Orq6uzs7P//
  ////////////////////////////////////////////////////////////
  ////////////////////////////////////////////////////////////
  ////////////////////////////////////////////////////////////
  ////////////////////////////////////////////////////////////
  ////////////////////////////////////////////////////////////
  /////////////////////yH5BAEKAP8ALAAAAAAgACAAAAj+AP8JHEiwoMGD
  CBMqXMiwocOHECMqdESxokVHEv/pYcOxo8eOfiIeqhQpkpyThEoiOklHoiNX
  MH/I3ASTlMwfTyIqasVTh89KPEP51DGmi9GjSJGiEViIlVMcUB05BQUVx5U0
  WLNq1XpH4BQhYE+JTQP2i9hTP2ioXcuW7RKBR1rIXUWXjFwpdFfxkMu3r18d
  An+kGKyq8JfBTQqryjG4sePHOARmeUO5suXKLERo3syZMw2BclKJ9kC6j2hK
  ahJhkgRoiwnSnWJTIe1hRexO/9Kg2r2htx5UozR1wiMmTqZOg0ZsuD2n9wYk
  t/+B+UQdhXU5njh18oGhe43jXDD+xF4kKUP3M41i/0NBof1ZJWU6wWlPf8iN
  CxRit+k0oz0jOOqFEMGAphRYhCCdBDHgggzGlkQnVURAQidMqMeBAxiWomEP
  k3QSA4YghhibC4nw4QARnYCgXhF+tGgde5B04kICNN4WWwKxqeBFJxOswYgC
  6k0hypAHFHnAH53sYGQUUZgR2wGxnRCDh5CEASVuT4SiZQFcFmBFJ250yWUJ
  sRUQWwkMaFJHJzKYiRsMRw0g5wASXNKJDXMS8GAnA8T2wQB2xLZAn7g1IMCh
  iB76gnBwOKGFIbF5IUBsHQgARCd5HKoeAgF06qmnEGARiCWP7AFFBZ3GpkEA
  FnRiRKoduFEAwKy01mrrrbgaMNADDPbq66+9ZiTssMRCFBAAOw==
  }
  {International Master games}
  {
  R0lGODlhIAAgAOeNACAgICUlJSoqKi4uLjMzMzQ0NDY2Njg4ODo6Ojw8PD09
  PT49PT8+Pj8/P0BAQEJCQkREREVFRUZGRklISEpKSk1LS05OTk9PT1FRUVVS
  UlNTU1RUVFZWVllVVVhYWFtYWFxaWltbW1xcXF5cXF9cXF1dXWJfX2BgYGFh
  YWViYmVjY2RkZGhlZWZmZmllZWhoaGtnZ2xoaGxpaWpqam9sbG9vb3Jvb3Fx
  cXVycnR0dHZ2dnl2dnd3d3h4eH13d3p6en55eXt7e4B6enx8fIB8fIN9fX9/
  f4CAgIR/f4GBgYKCgoWFhYaGhoqFhYyGhoqKiouLi5CQkJaOjpGRkZKSkpeQ
  kJSUlJWVlZ6Xl5qampycnKKamp2dnaKbm56enqScnKCgoKefn6KioqmgoKqh
  oaWlpa2kpKioqKmpqbCmpqurq6ysrLGxsbKysrOzs7S0tLyysra2tr2zs76z
  s7i4uL+1tbq6usO4uLy8vMO5ub29vce8vMDAwMi9vcfHx8nJyczMzM7Ozs/P
  z9LS0tTU1NbW1tra2t3d3eLi4uTk5Ojo6Orq6uzs7P//////////////////
  ////////////////////////////////////////////////////////////
  ////////////////////////////////////////////////////////////
  ////////////////////////////////////////////////////////////
  ////////////////////////////////////////////////////////////
  ////////////////////////////////////////////////////////////
  ////////////////////////////////////////////////////////////
  ////////////////////////////////////////////////////////////
  /////////////////////yH5BAEKAP8ALAAAAAAgACAAAAj+AP8JHEiwoMGD
  CBMqXMiwocOHECMqtEOxokU7Ev+d4cKxo8eOayK60YMHD5iTbEq+OSlGoh1G
  MHvI5ANTkMweSiLGWcQzh089PAH5zGElitGjSJFmEdhGkdMaUO04/QO1xhMt
  WLNq1VpGIJMfYAuJ1QJ2ithCPWaoXcuW7RGBQ1rITUT3itwldBPpkMu3r98c
  AnugGIyo8JTBSQojujG4sePHNQRC8UK5suXKK0Ro3syZ8wyBYA6J9kBajWg8
  Hvr02ZFadRPSHlSoXu2hhUAthnJr2H0mNx0NqnEAVx1mtwYis4WjEEjFj/MT
  0ME4R2NBtY3qfeTkwWDBApY61i3+lBB4goL5s0bMm1dNg4LqLn1kmJ/zhT0F
  DwJDRNhPqH+Q/fupFkMEqhXRhxMRjNAHEgJGsIFAHDgg4SAU8iChhKqx4IBq
  LsCRhgNA9AFChg5cIFAQa6QIXXkJtJiAaim82EcKUvQxwRZzKABjAhR4FciP
  BwQpZJCqmXBAkTD0AcMdVRzZh5ESCKQEIFQSYOWVVqpGAgFaMrDHGH3EwGUf
  Wz4g0AtHDaDmmmqq9sEAbg5AhmoLwNnHmwoI1IAAfPbppwCqdQBoH4L60IcZ
  fAYqwAECIRDAo5BGGoBqGUzaR6UV9CHEo5QGUIBAFAAg6qiklmrqqQYMBAGA
  rLbq6qsJ+2Uk66y0QhQQADs=
  }
  {Blitz (fast) games}
  {
  R0lGODlhIAAgAOfxACEhISUlJSoqKisqKS4uLjQyLDMzMzQ0NDY2Njg4ODk5OTs7O0I8Hjw8Ozw8
  PD8+Oj4+Pj8/P0FBQUdCLEJCQk5FG0REREhGPUZGRkdHR0pKSk1LQktLS09PT1BQUFpSK1RUVFtV
  O2FXKFdXV1pYT1hYV1hYWFlZWVxcXGNdQl1dXWBgYGNhWHNjFmFhYWJiYmljRXBmM2VlZWZmZmlp
  aX1sGmtra3ptL3NuWW9vb3BwcIRzHnJycnR0dIB2R3x2WHZ2dnh4eHl5eXp6epJ+HIp9P3x8fH19
  fX9/f5uDDoKBfIKCgpaFMIODg4aGhoeHh6CLJoqKiqmOCqeOE4yMjJCQkJGRkZKSkpOTk7CXGreZ
  B5WVlbqdEb+fAr6gCcOhBZ2dnb+hFL6hF56enp+fn8OkDKCgoMWlA8elAaGhoaKiosunAMioBMup
  AsypAsupBsypBsuqBc2qAs6qAMyrAqampsysBM6rC9CsANGsANGtANKtAM6uCKmpqaqqqtCvCtSx
  BKysrNOyBdSxD9GzBdW0DtW0G7Kyste6A9m4E7S0tNm5Gtm5Idq8AbW1tdq6Jre3t7i4uNq8Lbm5
  udu9Lt7BCrq6utzAG7u7u9vBJtrAOLy8vL29vb6+vsDAwMHBwcPDw+PLKODIU+nPEsjIyOzTCMrK
  ys3NzezVLe/YDe3VNO/YFM/Pz/DZEPDYHNDQ0PLbFvLbF9PT0/PdG/PdHPTdHdbW1vLeP9fX1/Xg
  KPXgLNjY2OvcgvThP/biMffiNfXiPffkOPXjSfbjSPbjSdzc3PPjV97e3vjnTPXmZ/noTPnoTvfn
  XuLi4vrpXPrqYOTk5Pjqc/vrYfTolPvrYvvraPrscPnsfPrtdPntfvvucejo6PzucvfsmvzvdPnu
  kf7wfuvr6/3xhPrwnP3yi+3t7f3ymPjyxPv0sP32tv33wP351P/60f364P/84v797v/+8///////
  /////////////////////////////////////////////////////yH+EUNyZWF0ZWQgd2l0aCBH
  SU1QACH5BAEKAP8ALAAAAAAgACAAAAj+AP8JHEiwoMGDCBMqXMiwocOHCj95mkixoidQEAUeGsOx
  o8eOkTJO6sSJk5mTh0o6OqkGU0ZM5WIKmfkp5quZQtJkhBSuZ4+fnXqe+tlji5WjSJMmrSNQ0ban
  OaJiemoqao4oYLJq3bqV6b8nQ8LiGgsmrJWxuILYWGvjxyBKkh4xWpQIUBglAo/M2Aut75a9TvpC
  A7J3r5hz8NyxS/fN2B8cPQQGeUG5meUrlJdYbsaD8osiot6REwfOWrJCPl7oEEiFjGuPrzvKUKGC
  xZ125rxx0xbtEhPaNgSmOUbchPFAxDcZX24CCi91z6hJwxYqSwnjMwSCKcYdhPc+3C3+eR8Pw9A6
  Z8qWVVNVhsT4FwKxkJq/on6a+X466NfPZVq2X8Egc0scKezXgQoCraDBgrs0iMSCEC54gybo6JKL
  L70IMoccbrTxRQwnCIQCBiTaYqIRJKaIwQZvdDPONcwAk8swxAiTiRchYACCQCNI4KMsQAbh45AS
  ELGHHnnggcostNTiCh9TXOCjBwIZEciVLmSpgQNcdtnlA3CsAksso7CxQwNdciCQE6y0mcCbcMYJ
  5wd2pNJKJWeIIGcGAjVxyp8GBCrooILWgEgphGgxAaEGUCAQDVVESsCklFZKqRSN0JFEAZZOCoFA
  EQgg6qikljoAGmu0UCqpCgi0QAAtsMYq66wMdFHBrLMeIJAFAPTq66/ABissAgOhQNuxyCar7LIZ
  Nevss9BG21BAADs=
  }
  {Tactics}
  {
  R0lGODlhIAAgAOeKACAgICUlJSoqKi4uLjMzMzQ0NDY2Njg4ODo6Ojw8PD09
  PT8/P0A/P0BAQEJCQkREREZEREVFRUZGRkpKSkxLS05OTk9PT1VSUlNTU1RU
  VFZWVllVVVhYWF1aWltbW1xcXF1dXV9eXmBfX2JfX2BgYGFhYWNhYWRiYmVi
  YmVjY2RkZGhlZWZmZmllZWhnZ2hoaGtnZ2toaGxoaGpqam1qam9ra29sbHJt
  bW9vb3Jvb3Rvb3FxcXZxcXVycnR0dHdzc3Z2dnl2dnd3d3h4eH14eHp6ent7
  e3x8fH9/f4CAgIGBgYKCgoWFhYaGhoqKiouLi5KMjJCQkJGRkZKSkpiSkpSU
  lJmTk5WVlZqampycnJ2dnaObm56enqCgoKKioqWlpayjo6ykpKioqK+mpqmp
  qaurq7KpqaysrLGxsbKysrOzs7S0tLuxsbyzs7a2tri4uL+1tcG2trq6ury8
  vMO5ub29vcS6usa7u8e8vMDAwMi9vcfHx8nJyczMzM7Ozs/Pz9LS0tTU1NbW
  1tra2t3d3eLi4uTk5Ojo6Orq6uzs7P//////////////////////////////
  ////////////////////////////////////////////////////////////
  ////////////////////////////////////////////////////////////
  ////////////////////////////////////////////////////////////
  ////////////////////////////////////////////////////////////
  ////////////////////////////////////////////////////////////
  ////////////////////////////////////////////////////////////
  ////////////////////////////////////////////////////////////
  /////////////////////yH5BAEKAP8ALAAAAAAgACAAAAj+AP8JHEiwoMGD
  CBMqXMiwocOHECMqlEOxokU5Ev+J0cKxo8eOZyKqqTNnTpeTaEquOelFopxE
  MIfIzAPzj8whSyK6QcTTh886PPv49FElitGjSJFiEZjmkFMcUOU45QMVh5Ms
  WLNq1fpFYJMiYAWJzQJWilhBQ2aoXcuWbRKBR1jINUT3ilwmdA0Bkcu3r18f
  AoeUGFyosJTBSgoX2jG4sePHOAQ+4UK5suXKKj5o3syZ8wyBXQiJ5kC6jOg5
  pFPr0ROEg4stcO6woRKCNAuBWQbpxsBbjO43vIOv7iECjp4xVtroCcO7hMAp
  e6KTmN4lOpkK2LGvzgFFDxjsJ1bYp6gAQiCJCejPIkHPnv1qGzWImEBfYXWM
  CRwEeojAP5B/I/wFGOBqMggYwQ96xEFBBBkIpEEDEAIioRAQVljhaitYSAMd
  dsAAoQUCGXHGiNOdl8CJKJ64GgootoBHHB2gOIFXftR4wI045njjaiPgaIYe
  POQogUBL9GEkAUgmqSSSOugAQZI36MCAkg4I9MJRA2Sp5ZZcdrmlAgItIMCY
  ZJZp5mobkIlmmQcIhEAAcMYp55yrXRBnnXIWINAEAPTp55+ABiqoAQM9YOCh
  iCYaQUaMNuooRAEBADs=
  }
  {Endgames}
  {
  R0lGODdhIAAgAKEAAP///wAAAP/73wAAACwAAAAAIAAgAAAChYSPqcsZDWOYsa5ns5lYXwoE
  AsZ54TQ+orqCFToK6RynVsulONpBO6/L9Ro/Hkd4Kx6FQ2JLBpUZPbBltfmyWjeg0ql3jAY3
  wTJYuySLxec1tIs+OuJD0RpLRZsUdvbe4Yan0RclmEH49oeAKKV4wDjiyKUlCcNm6EPnMghZ
  iMmn6SXJUAAAOw==
  }
  {Openings for White}
  {
  R0lGODdhIAAgANMAAAAAAAAAqgCqAACqqqoAAKoAqqpVAKqqqlVVVVVV/1X/VVX///9VVf9V
  ////Vf///ywAAAAAIAAgAAAErvDJSau9F+jNu9cYMBxDaZ4oCoRj6rqgJZJvXQLHWs22jec6
  Ca/3+gWCjyExZUQqURLf4XCkPE2UWtPaSmWL0+rkWvrCws6u9yGlpmnQiRbNhWMrYHd9bVbR
  x2plF2d6gHYDGIRiQoGIg0x/jIdLN5FJjZQDW4aZfoWSnSeboKGVn5eTlKOopaaLSRqtmpY/
  H7YetD9Tu7y9vpawv8LCr0IbAcjJysvMSFa30BwSEQA7
  }
  {Openings for Black}
  {
  R0lGODdhIAAgANMAAAAAAAAAqgCqAACqqqoAAKoAqqpVAKqqqlVVVVVV/1X/VVX///9VVf9V
  ////Vf///ywAAAAAIAAgAAAErvDJSau9F+jNu9cYMBxDaZ4oCoRj6rqgJZJvXQLHWs22jec6
  Ca/3+gWCjyExZUQqVaJak/I0caSHw5HaYm6wWmcXqgFvJ1VrtJg9C8enKzvMpcU7c3cSfsPD
  2mJ2fR5/dGh8H2txgHVkfiqMh4JLVpFvk5QDU5KZkIaXnYufe5iUm6ChN5akqaqjX62nSVmJ
  tRyrGlm6u7y9u3pJP77DvcDBGgHJysvMzUhUttExEQA7
  }
  {Openings for either color}
  {
  R0lGODdhIAAgANMAAAAAAAAAqgCqAACqqqoAAKoAqqpVAKqqqlVVVVVV/1X/VVX///9VVf9V
  ////Vf///ywAAAAAIAAgAAAEuvDJSau9F+jNu9cYMBxDaZ4oCoRj6rqgJZKq+JrAsVZzrd2l
  nG4n6Z04wIEwQHwYcZvksvmEJpWHA5NSVUaBU24LiryFJ1UPOLtFj73q17n4/tgkKja1/hlQ
  jnpiNEB/OIFugzeFQYd0iYoPeVp7jy6LWJOCSRaGmYibFZ1tjoQXjJ6kkJyYo05vlqaslFdy
  ja6VtLJcP7mSrUJ2wRy2GlnGx8jJx61OQsrPyczNGgHV1tfY2U27wt07EQA7
  }
  {Theory: 1.c4}
  {
  R0lGODdhIAAgAKEAAP/739jGpgAAAP///ywAAAAAIAAgAAACfYRvoauIzNyBSyYaLMDZcv15
  GDiKFHmaELqqkVvBXCN3UniXebq3/fuLBWlDmwN31CV5S18T+BRqokSqTSCYKB8lwWCQ3Wy1
  PCzZyU15wRdmerX+ZpHvCPY+H7fRZ2h9VvUX2CclaGTI4kc4uKfYWLh4GJkI+cgo5jZZo1EA
  ADs=  
  }
  {Theory: 1.d4}
  {
  R0lGODdhIAAgAKEAAP/739jGpgAAAP///ywAAAAAIAAgAAACf4RvoauIzNyBSyYaLMDZcv15
  GDiKFHmaELqqkVvBXCN3UniXebq3/fuLBWlDmwN31CV5S18T+BRqokSq8aEQCKRYJlYwGGyv
  E2VXyy17y2Bxtet8tMNbFlSuzZMva35cPXMHKOhHuGE2mFaoeNjX+Lf4ligZufdoiASHiVip
  UQAAOw==
  }
  {Theory: 1.d4 d5}
  {
  R0lGODdhIAAgAKEAAP/739jGpgAAAP///ywAAAAAIAAgAAACh4RvoauIzNyBSyYaLMDZcv15
  GDiKFHmaELqqkVvBXCN3UggIwlTepa67pHzDoLBFbAF3m57jswzinqPobvpwZocaKneL9Opi
  yZdPMBgIaGWyeM32hrNodRxsftbTa1b+YWUj98fzVThDeJTYZKjohvd4uIglGel4V4l5KQip
  yTiXyRnqZwlQAAA7
  }
  {Theory: QGD: 1.d4 d5 2.c4 e6}
  {
  R0lGODdhIAAgAKEAAP/739jGpgAAAP///ywAAAAAIAAgAAACmYRvoauIzNyB6wgxaZBJm3t1
  FAdo24eJEGmiYelxLQjCo+zRYYvfksn7xYS+l23VQ9JUkWQTYAw6eMvjc5rTWSvOig4jfQyx
  PhIZSURHFRduuikYDFJsuaDRxUNTtrb+DGfXETf3JzZCKBiQWMiStbSoc/LmBlh5CHSFqZlR
  tnnZiWZpGMrJBHpKmjo5yvqpugUbVooa63pQAAA7
  }
  {Theory: Slav: 1.d4 d5 2.c4 c6}
  {
  R0lGODdhIAAgAKEAAP/739jGpgAAAP///ywAAAAAIAAgAAACmIRvoauIzI4QBy5XbTBzJo19
  lkSJUAhoG9CVKvq23hvGcgrWOUbz6u7oBXceU0Q3YnWMF+SJU8IlfckWs+GMyCjCB2grfVLF
  wymqTPZOi9JJc3wUDAaugJyOhb/ZC3ceHTdXdyfwp3ZyJ5iSiAfzdWMns6JnmGF2+PMGqInJ
  aZn2eUQ5uVl5RdppGiZaihrqeep4+aradVAAADs=	  
  }
  {Theory: 1.d4 Nf6}
  {
  R0lGODdhIAAgAKEAAP/739jGpgAAAP///ywAAAAAIAAgAAACioRvoauIKqJoLrFVrYwhg4tl
  wcZ5IFWNZCeeJiexqdtCZX29q0lXZNxznGTC4MN4GPJAyxyO0YQ+QzPmFFW0Vp1baZfqyXLF
  3iwHe9QWBYPBhJgep8/wJFLTfkfBD3bbXWeh1rdzFfhxhzg0aMcoKNcI+VgWRxlpOcl3qZmJ
  tunZeahkuAeqKAlQAAA7	  
  }
  {Theory: 1.e4}
  {
  R0lGODdhIAAgAKEAAP/739jGpgAAAP///ywAAAAAIAAgAAACfYRvoauIzNyBSyYaLMDZcv15
  GDiKFHmaELqqkVvBXCN3UniXebq3/fuLBWlDmwN31CV5S18T+BRqokSq8aETCCZKbEowGGw3
  XS5Pa3Z6W2DxhbmOtMNbZLyizdfLb3V6JnVXJXj1F2g4iFjYB0XI0qj4eMg4SQYXWSOZaFAA
  ADs=
  }
  {Theory: Sicilian: 1.e4 c5}
  {
  R0lGODdhIAAgAKEAAP/739jGpgAAAP///ywAAAAAIAAgAAAChYRvoauIzNyBSyYaLMDZcv15
  GDiKFHmaELqqkVvBXCN30iII8V3yeU7jpYTAoCPk+xkfveNPyXrdnsDo7thkDjXYrbYlBOcm
  WXJKMBgILl6zeM0Gd1todVw6j9TTa2S+QtVXdnf1NVPohmeISLiUyLgxGNnWaPPnWGmFOSm3
  uOnnaRmqUQAAOw==
  }
  {Theory: Sicilian: 1.e4 c5 2.Nf3 d6 3.d4}
  {
  R0lGODdhIAAgAKEAAP/739jGpgAAAP///ywAAAAAIAAgAAACo4RvoauIzNxZQiyZYMOq1i1p
  oENZ4yNiQOedU8p5rSoGtPzRcLiTdY/S6AIfV0bIIbZsSSRPeWlCdDLjCjjBWYbTGI757IYj
  UrJqHEVbS+nKy+kTDAYmg5x+FPugIHfeHDdXB3An8JdGcidoo4hXc/NFiHMFF6Rn+YOIGSVz
  uJbSaPhYRjFnKorlSURXSHn5BuFB6JjqatY6qsaoiFoJy6BVUQAAOw==
  }
  {Theory: Caro-Kann: 1.e4 c6}
  {
  R0lGODdhIAAgAKEAAP/739jGpgAAAP///ywAAAAAIAAgAAACh4RvoauIzI4QBy5XbTBzJo19
  lkSJUAhoG9CVKvq23hvGcgrWOUbz6u7oBYEPYmakQ/qUQ2bReTwlpUtq0/rERiNTLqrqvYaz
  Xo9pvL2wBgOX8axmlXBQeGPdtq/AFwGbTSFE1ncjmHbH97MnFseI6Lg4+CgZeVipB/NGp4XZ
  1UiZWbeJ1olRAAA7
  }
  {Theory: French: 1.e4 e6}
  {
  R0lGODdhIAAgAKEAAP/739jGpgAAAP///ywAAAAAIAAgAAACiIRvoauIzNyB6wgxaZBJm3t1
  FAdo24eJEGmiYelxLQjCo+zRYYvfksn7xYQ+R9A4RBYfSeYy81RFeivqlFjFXpVZ7pbk7Ia/
  0OzLJi5PBYNB6jiuoNRyrZztlta9FXwbA0fXoAPYJHhiB4TI12C1F9eYuAg5echiqBfJWJnJ
  iUbWeRn1+WjJUQAAOw==
  }
  {Theory: Open Games: 1.e4 e5}
  {
  R0lGODdhIAAgAKEAAP/739jGpgAAAP///ywAAAAAIAAgAAACh4RvoauIzNyBSyYaLMDZcv15
  GDiKFHmaELqqkVvBXCN3UngrghDnab7b0Xwtn3DowCUDQZ5t+Us2hazXbcqr9qBFDdf63T5K
  gN2EHKYJBgPBJTr+md/deGvdpoPtETzbrcRXgbWBJoh0OKOFeAbXWPe4Fyk2yahHeWlZ6Jj5
  lLjoWRnaCapRAAA7
  }
}

variable ::windows::switcher::base_types {}

# Initialise icons nicely

set i 0
foreach {icon data} $icons {
  lappend ::windows::switcher::base_types $icon
  image create photo dbt$i -format gif -data $data
  incr i
}




set numBaseTypeIcons [llength $::windows::switcher::base_types]

set temp_dbtype 0

proc selectBaseType {type} {
  global temp_dbtype
  set w .btypeWin
  if {![winfo exists $w]} { return }
  $w.t configure -state normal
  set temp_dbtype $type
  set linenum [expr $type + 1]
  $w.t tag remove sel 1.0 end
  $w.t tag remove selected 1.0 end
  $w.t tag add selected "${linenum}.2 linestart" "$linenum.2 lineend"
  $w.t see $linenum.2
  $w.t configure -state disabled
}

proc clickBaseType {x y} {
  set type [.btypeWin.t index "@$x,$y linestart"]
  set type [expr int($type) - 1]
  selectBaseType $type
}

proc changeBaseType {baseNum} {
  global temp_dbtype ::windows::switcher::base_types numBaseTypeIcons
  if {$baseNum > [sc_base count total]} { return }
  set temp_dbtype [sc_base type $baseNum]
  if {$temp_dbtype >= $numBaseTypeIcons} { set temp_dbtype 0 }
  toplevel .btypeWin
  set w .btypeWin
  wm title $w "Scid: Choose database icon"

  text $w.t -yscrollcommand "$w.yscroll set" -font font_Regular \
    -height 25 -width 40 -background white -wrap none \
    -cursor top_left_arrow
  $w.t tag configure selected -background {#ffff80}

  scrollbar $w.yscroll -command "$w.t yview" -takefocus 0
  pack [frame $w.b] -side bottom -pady 5
  pack $w.yscroll -side right -fill y
  pack $w.t -side left -fill both -expand yes

  dialogbutton $w.b.set -text "OK" -command \
    "catch {sc_base type $baseNum \$temp_dbtype}; ::windows::switcher::Refresh; ::maint::Refresh;
     focus .; destroy $w"

  dialogbutton $w.b.cancel -text $::tr(Cancel) -command "focus .; destroy $w"
  pack $w.b.set $w.b.cancel -side left -padx 5

  set numtypes [llength $base_types]
  for {set i  0} {$i < $numtypes} {incr i} {
    if {$i > 0} { $w.t insert end "\n" }
    $w.t image create end -image dbt$i -pady 3 -padx 3
    $w.t insert end "   [lindex $base_types $i]  "
  } 

  bind $w.t <Double-ButtonRelease-1> "clickBaseType %x %y; $w.b.set invoke"
  bind $w.t <ButtonRelease-1> "clickBaseType %x %y"
  bind $w.t <Button1-Motion> "clickBaseType %x %y; break"

  bind $w <Up> {
    if {$temp_dbtype != 0} { selectBaseType [expr $temp_dbtype - 1] }
    break
  }

  bind $w <Down> {
    if {$temp_dbtype < [expr [llength $base_types] - 1]} {
      selectBaseType [expr $temp_dbtype + 1]
    }
    break
  }

  bind $w <Home> { selectBaseType 0 }
  bind $w <End> { selectBaseType [expr [llength $base_types] - 1] }
  bind $w <Escape> "$w.b.cancel invoke"
  bind $w <Return> "$w.b.set invoke"

  focus $w.t
  grab $w
  update
  selectBaseType $temp_dbtype
}



proc ::windows::switcher::pressMouseEvent {i} {
  if {! [winfo exists .baseWin]} {return}
  foreach win {"" .img .name .ngames} {
    .baseWin.c.f$i$win configure -cursor exchange
  }
}

proc ::windows::switcher::releaseMouseEvent {fromBase x y} {
  if {! [winfo exists .baseWin]} {return}
  foreach win {"" .img .name .ngames} {
    .baseWin.c.f$fromBase$win configure -cursor {}
  }
  set dropPoint [winfo containing $x $y]
  if {! [string match ".baseWin.c.f*" $dropPoint]} {return}
  set toBase [string range $dropPoint 12 12]
  if {$toBase == $fromBase} {::file::SwitchToBase $toBase} else {
    copyFilter $fromBase $toBase
  }
}

set baseWin 0

proc ::windows::switcher::Open {} {
  global baseWin
  if {[winfo exists .baseWin]} {
    focus .
    destroy .baseWin
    set baseWin 0
    return
  }
  set baseWin 1
  set w .baseWin
  ::createToplevel .baseWin
  
  setWinLocation $w

  ::setTitle $w "Scid: [tr WindowsSwitcher]"

  bind $w <Escape> ::windows::switcher::Open
  bind $w <Destroy> { set baseWin 0 }
  bind $w <F1> { helpWindow Switcher }
  standardShortcuts $w

  canvas $w.c -width 300 -height 100 -yscrollcommand [list $w.ybar set]
  scrollbar $w.ybar -takefocus 0 -command [list $w.c yview]
  label $w.status -width 1 -anchor w -relief sunken -borderwidth 1

  grid $w.c -row 0 -column 0 -sticky news
  grid $w.ybar -row 0 -column 1 -sticky ns
  grid $w.status -row 1 -column 0 -sticky we
  grid rowconfigure $w 0 -weight 1
  grid columnconfigure $w 0 -weight 1

  #set side left
  #if {$::windows::switcher::vertical} { set side top }
  set numBases [sc_base count total]

  for {set i 1} {$i <= $numBases} {incr i} {
    set f [frame $w.c.f$i -background white -borderwidth 2 -relief ridge]
    $w.c create window 0 0 -window $w.c.f$i -anchor nw -tag tag$i

    set f $w.c.f$i
    label $f.img -image dbt0 -relief solid -borderwidth 1
    label $f.name -width 11 -anchor w -font font_Small
    label $f.ngames -text "0" -width 11 -anchor e -font font_Tiny
    grid $f.img -row 0 -column 0 -rowspan 2 -padx 2 -pady 2
    grid $f.name -row 0 -column 1 -padx 2 -pady 0 -sticky we
    grid $f.ngames -row 1 -column 1 -padx 2 -pady 0 -sticky we

    foreach win {"" .img .name .ngames} {
      bind $f$win <ButtonPress-1> [list ::windows::switcher::pressMouseEvent $i]
      bind $f$win <ButtonRelease-1> [list ::windows::switcher::releaseMouseEvent $i %X %Y]
    }

    menu $f.menu -tearoff 0
    $f.menu add command -label [tr SearchReset] \
      -command "sc_filter reset $i; ::windows::stats::Refresh"
    $f.menu add command -label [tr ChangeIcon] -command "changeBaseType $i"
    $f.menu add separator
    $f.menu add command -label [tr FileOpen] -command ::file::Open
    set closeLabel [tr FileClose]
    if {$i == [sc_info clipbase]} { set closeLabel [tr EditReset] }
    $f.menu add command -label $closeLabel \
      -command [list ::file::Close $i]
    foreach win {"" .img .name .ngames} {
      bind $f$win <ButtonPress-$::MB3> "tk_popup $f.menu %X %Y"
    }
    $f.menu add separator
    $f.menu add checkbutton -label "Icons" -variable ::windows::switcher::icons \
      -command ::windows::switcher::Refresh
    #$f.menu add separator
    #$f.menu add command -label $::tr(ChangeOrient) -command ::windows::switcher::Orientate
  }
  bind $w <Configure> "+recordWinSize $w"
  bind $w <Configure> "+::windows::switcher::Refresh"
  setWinSize $w
  ::windows::switcher::Refresh
  ::createToplevelFinalize $w
}

proc ::windows::switcher::Orientate {} {
  #variable vertical
  #if {$vertical} {
  #  set vertical 0
  #  set side left
  #} else {
  #  set vertical 1
  #  set side top
  #}

  #set w .baseWin
  #set numBases [sc_base count total]

  #for {set i 1} {$i <= $numBases} {incr i} {
  #  pack forget $w.f$i
  #}
  #for {set i 1} {$i <= $numBases} {incr i} {
  #  pack $w.f$i -side $side
  #}
}

proc ::windows::switcher::Refresh {} {
  global numBaseTypeIcons
  variable icons
  set w .baseWin

  if {! [winfo exists $w]} { return }
  set numBases [sc_base count total]
  set current [sc_base current]
  set clipbase [sc_info clipbase]

  # Get the canvas width and icon dimensions, to compute the correct
  # scroll region.

  for {set i 1} {$i <= $numBases} {incr i} {
    if {$icons} {
      grid $w.c.f$i.img -row 0 -column 0 -rowspan 2 -padx 2 -pady 2
    } else {
      grid forget $w.c.f$i.img
    }
  }

  set canvasWidth [winfo width $w.c]
  set iconWidth [winfo width $w.c.f$clipbase]
  incr iconWidth 5
  set iconHeight [winfo height $w.c.f$clipbase]
  incr iconHeight 5

  # Compute the number of columns that can fit in the canvas
  set numColumns [expr {int($canvasWidth / $iconWidth)}]
  if {$numColumns < 1} { set numColumns 1 }
  set numDisplayed 0

  set row 0
  set column 0
  set x 0
  set y 0
  set status ""

  for {set i 1} {$i <= $numBases} {incr i} {
    if {[sc_base inUse $i]} {
      set color white
      set filename [file nativename [sc_base filename $i]]
      set n $i
      # Do we want to call the clipbase base number "C"?
      # Only if we do it everywhere else for consistency.
      # if {$i == $clipbase} { set n "C" }

      # Set a different color for the current database.
      if {$i == $current} {
        set color lightSteelBlue
        set status $filename
        if {[sc_base isReadOnly]} { append status " ($::tr(readonly))" }
      }

      $w.c.f$i configure -background $color
      set dbtype [sc_base type $i]
      if {$dbtype >= $numBaseTypeIcons} { set dbtype 0 }
      if {$icons} {
        $w.c.f$i.img configure -image dbt$dbtype -background $color
      } else {
        $w.c.f$i.img configure -image ""
      }
      if {$i == $clipbase} {
        set name [sc_base filename $i]
        $w.c.f$i.name configure -background $color \
      } else {
        set name "$n: [file tail [sc_base filename $i]]"
      }
      $w.c.f$i.name configure -background $color -text $name
      $w.c.f$i.ngames configure -background $color \
        -text "[filterText $i 100000]"
      $w.c itemconfigure tag$i -state normal
      $w.c coords tag$i [expr $x + 2] [expr $y + 2]
      incr column
      if {$column == $numColumns} {
        set column 0
        set x 0
        incr y $iconHeight
        incr row
      } else {
        incr x $iconWidth
      }
      incr numDisplayed
    } else {
      $w.c itemconfigure tag$i -state hidden
    }
  }

  set numRows [expr {int( ($numDisplayed + $numColumns - 1) / $numColumns)}]
  if {$numRows < 1} { set numRows 1 }
  set top 0
  set left 0
  set right [expr {$numColumns * $iconWidth}]
  set bottom [expr {$numRows * $iconHeight}]
  $w.c configure -scrollregion [list $left $top $right $bottom]
  if {[winfo height $w.c] >= $bottom} {
    grid forget $w.ybar
  } else {
    grid $w.ybar -row 0 -column 1 -sticky ns
  }
  $w.status configure -text $status
}
###
### search.tcl: Search routines for Scid.
###

namespace eval ::search {}

# searchType: set to Header or Material in a SearchOptions file
set searchType 0

set ::search::filter::operation 2


# TODO: Rename to ::search::filter::text
# filterText: returns text describing state of filter for specified
#   database, e.g. "no games" or "all / 400" or "1,043 / 2,057"
#
proc filterText {{base 0} {kilo 0}} {
  # Default to current base if no base specified:
  if {$base == 0} { set base [sc_base current] }
  set filterCount [sc_filter count $base]
  set gameCount [sc_base numGames $base]
  if {$gameCount == 0} { return $::tr(noGames) }
  if {$gameCount == $filterCount} {
    return "$::tr(all) / [::utils::thousands $gameCount $kilo]"
  }
  return "[::utils::thousands $filterCount $kilo] / [::utils::thousands $gameCount $kilo]"
}


# search::filter::reset
#   Resets the filter to contain all games. Calls sc_filter reset and
#   updates relevant windows.
#
proc ::search::filter::reset {} {
  global glstart
  sc_filter reset
  set glstart 1
  ::windows::gamelist::Refresh
  ::tree::refresh
  ::windows::stats::Refresh
  updateMenuStates
}

# ::search::filter::negate
#
#   Negates the filter, to include only excluded games.
#
proc ::search::filter::negate {} {
  global glstart
  sc_filter negate
  set glstart 1
  ::windows::gamelist::Refresh
  ::tree::refresh
  ::windows::stats::Refresh
  updateMenuStates
}



# ::search::addFilterOpFrame
#
#   Adds a search filter operation selection frame to the window.
#   Adds a frame of radiobuttons allowing the filter operation
#   (AND with current filter, OR with current filter, or RESET filter)
#   to be chosen.
#   The default value for the first search is RESET:
proc ::search::addFilterOpFrame {w {small 0}} {
  ttk::frame $w.filterop
  set f $w.filterop
  pack $f -side top -fill x
  
  set regular Regular.TRadiobutton
  set bold Bold.TRadiobutton
  if {$small} {
    set regular Small.TRadiobutton
    set bold SmallBold.TRadiobutton
  }
  
  ttk::label $f.title -font $bold -textvar ::tr(FilterOperation) -anchor center
  ttk::frame $f.b
  ttk::radiobutton $f.b.and -textvar ::tr(FilterAnd) -variable ::search::filter::operation -value 0 -style $regular 
  ttk::radiobutton $f.b.or -textvar ::tr(FilterOr) -variable ::search::filter::operation -value 1 -style $regular
  ttk::radiobutton $f.b.ignore -textvar ::tr(FilterIgnore) -variable ::search::filter::operation -value 2 -style $regular
  ## ttk::radiobutton $f.b.search -textvar ::tr(FilterIgnore) -variable ::search::filter::operation -value 3 -style $regular
  pack $f.title -side top
  pack $f.b -anchor center -side top
  pack $f.b.and $f.b.or $f.b.ignore -side left -pady 5 -padx 5
  ### pack $f.b.and $f.b.or $f.b.ignore $f.b.search -side left -pady 5 -padx 5
}


# ::search::Config
#
#   Sets state of Search button in Header, Board and Material windows
#
proc ::search::Config {{state ""}} {
  if {$state == ""} {
    set state disabled
    if {[sc_base inUse]} { set state normal }
  }
  catch {.sh.b.search configure -state $state }
  catch {.sb.b.search configure -state $state }
  catch {.sm.b3.search configure -state $state }
  catch {.spprep.b.search configure -state $state }
}


proc ::search::usefile {} {
  set ftype { { "Scid SearchOption files" {".sso"} } }
  set ::fName [tk_getOpenFile -initialdir $::initialDir(base) \
      -filetypes $ftype -title "Select a SearchOptions file"]
  if {$::fName == ""} { return }
  
  if {[catch {uplevel "#0" {source $::fName} } ]} {
    tk_messageBox -title "Scid: Error reading file" -type ok -icon warning \
        -message "Unable to open or read SearchOptions file: $fName"
  } else {
    switch -- $::searchType {
      "Material" { ::search::material }
      "Header"   { ::search::header }
      default    { return }
    }
  }
}

# will go to the first game found, except if the Tree of current base is opened (of there will be filter collision)
proc ::search::loadFirstGame {} {
  set w ".treeWin[sc_base current]"
  if {[winfo exists $w]} { return }
  ::game::Load [sc_filter first]
}
###
### search/board.tcl: Board Search routines for Scid.
###

set searchInVars 0
set sBoardIgnoreCols 0
set sBoardSearchType Exact
set sBoardSearchRefBase 0

# ::search::board
#   Opens the search window for the current board position.
#
proc ::search::board {} {
  global glstart searchInVars sBoardType sBoardIgnoreCols
  
  set w .sb
  if {[winfo exists $w]} {
    wm deiconify $w
    raiseWin $w
    return
  }
  
  toplevel $w
  wm title $w "Scid: $::tr(BoardSearch)"
  
  bind $w <Escape> "$w.b.cancel invoke"
  bind $w <Return> "$w.b.search invoke"
  bind $w <F1> { helpWindow Searches Board }
  
  ttk::label $w.type -textvar ::tr(SearchType) -font font_Bold -anchor center
  pack $w.type -side top -expand 1 -fill x
  pack [ttk::frame $w.g] -side top -fill x
  ttk::radiobutton $w.g.exact -textvar ::tr(SearchBoardExact) -variable sBoardSearchType -value Exact
  ttk::radiobutton $w.g.pawns -textvar ::tr(SearchBoardPawns) -variable sBoardSearchType -value Pawns
  ttk::radiobutton $w.g.files -textvar ::tr(SearchBoardFiles) -variable sBoardSearchType -value Fyles
  ttk::radiobutton $w.g.material -textvar ::tr(SearchBoardAny) -variable sBoardSearchType -value Material
  set row 0
  foreach i {exact pawns files material} {
    grid $w.g.$i -row $row -column 0 -sticky w
    incr row
  }
  addHorizontalRule $w
  
  pack [ttk::frame $w.refdb] -side top -fill x
  ttk::checkbutton $w.refdb.cb -textvar ::tr(SearchInRefDatabase) -variable sBoardSearchRefBase
  set listbases {}
  # populate the combobox
  for {set i 1} {$i <= [sc_base count total]} {incr i} {
    if {[sc_base inUse $i]} {
      set fname [file tail [sc_base filename $i]]
      lappend listbases "$i $fname"
    }
  }
  ttk::combobox $w.refdb.lb -textvariable refDatabase -values $listbases
  $w.refdb.lb current 0
  
  pack $w.refdb.cb $w.refdb.lb -side left
  addHorizontalRule $w
  
  ::search::addFilterOpFrame $w
  addHorizontalRule $w
  
  ### Progress bar:
  
  ttk::frame $w.fprogress
  canvas $w.fprogress.progress -height 20 -width 300 -bg white -relief solid -border 1
  $w.fprogress.progress create rectangle 0 0 0 0 -fill blue -outline blue -tags bar
  $w.fprogress.progress create text 295 10 -anchor e -font font_Regular -tags time -fill black -text "0:00 / 0:00"
  pack $w.fprogress.progress -side top -anchor center -expand 1 -pady 2
  
  ttk::frame $w.b2
  pack $w.b2 -side top -fill x
  ttk::frame $w.b
  pack $w.b -side top -fill x
  ttk::checkbutton $w.b2.vars -textvar ::tr(LookInVars) -onvalue 1 -offvalue 0 -variable searchInVars
  ttk::checkbutton $w.b2.flip -textvar ::tr(IgnoreColors) -onvalue 1 -offvalue 0 -variable sBoardIgnoreCols
  
  dialogbutton $w.b.stop -textvar ::tr(Stop) -command sc_progressBar
  $w.b.stop configure -state disabled
  
  dialogbutton $w.b.search -textvar ::tr(Search) -command {
    busyCursor .
    .sb.b.stop configure -state normal
    grab .sb.b.stop
    sc_progressBar .sb.fprogress.progress bar 301 21 time
    
    set base ""
    if { $sBoardSearchRefBase } {
      set base [lindex $refDatabase 0]
      set str [sc_search board $::search::filter::operation $sBoardSearchType $searchInVars $sBoardIgnoreCols $base]
    } else  {
      set str [sc_search board $::search::filter::operation $sBoardSearchType $searchInVars $sBoardIgnoreCols ]
    }
    unbusyCursor .
    grab release .sb.b.stop
    .sb.b.stop configure -state disabled
    #tk_messageBox -type ok -title $::tr(SearchResults) -message $str
    .sb.status configure -text $str
    set glstart 1
	 ::tree::refresh
    ::windows::gamelist::Refresh
    set gamesFound [lindex $str 0]
    if { $sBoardSearchRefBase && $gamesFound != 0} {
      ::file::SwitchToBase $base
      ::search::loadFirstGame
    }
    
    ::windows::stats::Refresh
  }
  dialogbutton $w.b.cancel -textvar ::tr(Close) -command "focus .; destroy $w"
  pack $w.b2.vars $w.b2.flip -side left -pady 2 -padx 5
  packbuttons right $w.b.cancel .sb.b.search .sb.b.stop
  pack $w.fprogress -side top -fill x
  ttk::label $w.status -text "" -width 1 -font font_Small -relief sunken -anchor w
  pack $w.status -side bottom -fill x
  wm resizable $w 0 0
  # standardShortcuts $w
  ::search::Config
  focus $w.b.search
}
###
### search/header.tcl: Header Search routines for Scid.
###

namespace eval ::search::header {}

set sWhite "";  set sBlack "";  set sEvent ""; set sSite "";  set sRound ""; set sAnnotator ""; set sAnnotated 0;
set sWhiteEloMin 0; set sWhiteEloMax [sc_info limit elo]
set sBlackEloMin 0; set sBlackEloMax [sc_info limit elo]
set sEloDiffMin "-[sc_info limit elo]"; set sEloDiffMax "+[sc_info limit elo]"
set sTitleList [list gm im fm none wgm wim wfm w]
foreach i $sTitleList {
  set sTitles(w:$i) 1
  set sTitles(b:$i) 1
}
set sGlMin 0; set sGlMax 999
set sEcoMin "A00";  set sEcoMax "E99"; set sEco Yes
set sDateMin "0000.00.00"; set sDateMax "[sc_info limit year].12.31"
set sResWin 1; set sResLoss 1; set sResDraw 1; set sResOther 1
set sGnumMin 1; set sGnumMax -1
set sIgnoreCol No
set sSideToMove wb
set sHeaderFlagList {StdStart Promotions Comments Variations Annotations \
      DeleteFlag WhiteOpFlag BlackOpFlag MiddlegameFlag EndgameFlag \
      NoveltyFlag PawnFlag TacticsFlag KsideFlag QsideFlag \
      BrilliancyFlag BlunderFlag UserFlag }

set sHeaderCustomFlagList {  CustomFlag1 CustomFlag2 CustomFlag3 CustomFlag4 CustomFlag5 CustomFlag6 }

foreach i [ concat $sHeaderFlagList $sHeaderCustomFlagList ] {
  set sHeaderFlags($i) both
}
set sPgntext(1) ""
set sPgntext(2) ""
set sPgntext(3) ""

trace variable sDateMin w ::utils::validate::Date
trace variable sDateMax w ::utils::validate::Date

foreach i {sWhiteEloMin sWhiteEloMax sBlackEloMin sBlackEloMax} {
  trace variable $i w [list ::utils::validate::Integer [sc_info limit elo] 0]
}
trace variable sEloDiffMin w [list ::utils::validate::Integer "-[sc_info limit elo]" 0]
trace variable sEloDiffMax w [list ::utils::validate::Integer "-[sc_info limit elo]" 0]

trace variable sGlMin w {::utils::validate::Integer 9999 0}
trace variable sGlMax w {::utils::validate::Integer 9999 0}

trace variable sGnumMin w {::utils::validate::Integer -9999999 0}
trace variable sGnumMax w {::utils::validate::Integer -9999999 0}

# Forcing ECO entry to be valid ECO codes:
foreach i {sEcoMin sEcoMax} {
  trace variable $i w {::utils::validate::Regexp {^$|^[A-Ea-e]$|^[A-Ea-e][0-9]$|^[A-Ea-e][0-9][0-9]$|^[A-Ea-e][0-9][0-9][a-z]$|^[A-Ea-e][0-9][0-9][a-z][1-4]$}}
}

# checkDates:
#    Checks minimum/maximum search dates in header search window and
#    extends them if necessary.
proc checkDates {} {
  global sDateMin sDateMax
  if {[string length $sDateMin] == 0} { set sDateMin "0000" }
  if {[string length $sDateMax] == 0} { set sDateMax [sc_info limit year]}
  if {[string length $sDateMin] == 4} { append sDateMin ".??.??" }
  if {[string length $sDateMax] == 4} { append sDateMax ".12.31" }
  if {[string length $sDateMin] == 7} { append sDateMin ".??" }
  if {[string length $sDateMax] == 7} { append sDateMax ".31" }
}

proc ::search::header::defaults {} {
  global sWhite sBlack sEvent sSite sRound sAnnotator sAnnotated sDateMin sDateMax sIgnoreCol sSideToMove
  global sWhiteEloMin sWhiteEloMax sBlackEloMin sBlackEloMax
  global sEloDiffMin sEloDiffMax
  global sEco sEcoMin sEcoMax sHeaderFlags sGlMin sGlMax
  global sGnumMin sGnumMax
  global sResWin sResLoss sResDraw sResOther glstart
  global sPgntext sTitles
  
  set sWhite "";  set sBlack ""
  set sEvent ""; set sSite "";  set sRound ""; set sAnnotator ""; set sAnnotated 0
  set sWhiteEloMin 0; set sWhiteEloMax [sc_info limit elo]
  set sBlackEloMin 0; set sBlackEloMax [sc_info limit elo]
  set sEloDiffMin "-[sc_info limit elo]"
  set sEloDiffMax "+[sc_info limit elo]"
  set sGlMin 0; set sGlMax 999
  set sEcoMin "A00";  set sEcoMax "E99"; set sEco Yes
  set sGnumMin 1; set sGnumMax -1
  set sDateMin "0000.00.00"; set sDateMax "[sc_info limit year].12.31"
  set sResWin 1; set sResLoss 1; set sResDraw 1; set sResOther 1
  set sIgnoreCol No
  set sSideToMove wb
  foreach flag  [ concat $::sHeaderFlagList $::sHeaderCustomFlagList ] { set sHeaderFlags($flag) both }
  foreach i [array names sPgntext] { set sPgntext($i) "" }
  foreach i $::sTitleList {
    set sTitles(w:$i) 1
    set sTitles(b:$i) 1
  }
}

::search::header::defaults

set sHeaderFlagFrame 0

# ::search::header
#
#   Opens the window for searching by header information.
#
proc search::header {} {
  global sWhite sBlack sEvent sSite sRound sAnnotator sAnnotated sDateMin sDateMax sIgnoreCol
  global sWhiteEloMin sWhiteEloMax sBlackEloMin sBlackEloMax
  global sEloDiffMin sEloDiffMax sSideToMove
  global sEco sEcoMin sEcoMax sHeaderFlags sGlMin sGlMax sTitleList sTitles
  global sResWin sResLoss sResDraw sResOther glstart sPgntext
    
  set w .sh
  if {[winfo exists $w]} {
    wm deiconify $w
    raiseWin $w
    return
  }
  
  toplevel $w
  wm title $w "Scid: $::tr(HeaderSearch)"
  foreach frame {cWhite cBlack ignore tw tb eventsite dateround res ano gl ends eco} {
    ttk::frame $w.$frame
  }
  
  raise $w
  
  bind $w <F1> { helpWindow Searches Header }
  bind $w <Escape> "$w.b.cancel invoke"
  bind $w <Return> "$w.b.search invoke"
  
  set regular font_Small
  set bold font_SmallBold
  
  foreach color {White Black} {
    pack $w.c$color -side top -fill x
    ttk::label $w.c$color.lab -textvar ::tr($color:) -font $bold -width 9 -anchor w
    ttk::combobox $w.c$color.e -textvariable "s$color" -width 40
    ::utils::history::SetCombobox HeaderSearch$color $w.c$color.e
    bind $w.c$color.e <Return> { .sh.b.search invoke; break }
    
    ttk::label $w.c$color.space
    ttk::label $w.c$color.elo1 -textvar ::tr(Rating:) -font $bold
    ttk::entry $w.c$color.elomin -textvar s${color}EloMin -width 6 -justify right \
        -font $regular
    ttk::label $w.c$color.elo2 -text "-" -font $regular
    ttk::entry $w.c$color.elomax -textvar s${color}EloMax -width 6 -justify right \
        -font $regular
    bindFocusColors $w.c$color.e
    bindFocusColors $w.c$color.elomin
    bindFocusColors $w.c$color.elomax
    pack $w.c$color.lab $w.c$color.e $w.c$color.space -side left
    pack $w.c$color.elomax $w.c$color.elo2 $w.c$color.elomin $w.c$color.elo1 \
        -side right
  }
  
  pack $w.ignore -side top -fill x
  ttk::label $w.ignore.l -textvar ::tr(IgnoreColors:) -font $bold
  ttk::radiobutton $w.ignore.yes -variable sIgnoreCol -value Yes -textvar ::tr(Yes) -style Small.TRadiobutton
  ttk::radiobutton $w.ignore.no  -variable sIgnoreCol -value No -textvar ::tr(No) -style Small.TRadiobutton
  pack $w.ignore.l $w.ignore.yes $w.ignore.no -side left
  ttk::label $w.ignore.rdiff -textvar ::tr(RatingDiff:) -font $bold
  ttk::entry $w.ignore.rdmin -width 6 -textvar sEloDiffMin -justify right -font $regular
  ttk::label $w.ignore.rdto -text "-" -font $regular
  ttk::entry $w.ignore.rdmax -width 6 -textvar sEloDiffMax -justify right -font $regular
  bindFocusColors $w.ignore.rdmin
  bindFocusColors $w.ignore.rdmax
  pack $w.ignore.rdmax $w.ignore.rdto $w.ignore.rdmin $w.ignore.rdiff \
      -side right
  
  set spellstate normal
  if {[lindex [sc_name read] 0] == 0} { set spellstate disabled }
  foreach c {w b} name {White Black} {
    pack $w.t$c -side top -fill x
    ttk::label $w.t$c.label -text "$::tr($name) FIDE:" -font $bold -width 14 -anchor w
    pack $w.t$c.label -side left
    foreach i $sTitleList {
      set name [string toupper $i]
      if {$i == "none"} { set name "-" }
      ttk::checkbutton $w.t$c.b$i -text $name -width 5 -variable sTitles($c:$i) -offvalue 0 -onvalue 1 -state $spellstate
      pack $w.t$c.b$i -side left -padx 1
    }
  }
  
  addHorizontalRule $w
  
  set f $w.eventsite
  pack $f -side top -fill x
  foreach i {Event Site} {
    ttk::label $f.l$i -textvar ::tr(${i}:) -font $bold
    ttk::combobox $f.e$i -textvariable s$i -width 30
    bind $f.e$i <Return> { .sh.b.search invoke ; break }
    ::utils::history::SetCombobox HeaderSearch$i $f.e$i
    bindFocusColors $f.e$i
  }
  pack $f.lEvent $f.eEvent -side left
  pack $f.eSite $f.lSite -side right
  
  set f $w.dateround
  pack $f -side top -fill x
  ttk::label $f.l1 -textvar ::tr(Date:) -font $bold
  ttk::label $f.l2 -text "-" -font $regular
  ttk::label $f.l3 -text " " -font $regular
  ttk::entry $f.emin -textvariable sDateMin -width 10 -font $regular
  button $f.eminCal -image ::utils::date::calendar -padx 0 -pady 0 -command {
    regsub -all {[.]} $sDateMin "-" newdate
    set ndate [::utils::date::chooser $newdate]
    if {[llength $ndate] == 3} {
      set sDateMin "[lindex $ndate 0].[lindex $ndate 1].[lindex $ndate 2]"
    }
  }
  ttk::entry $f.emax -textvariable sDateMax -width 10 -font $regular
  button $f.emaxCal -image ::utils::date::calendar -padx 0 -pady 0 -command {
    regsub -all {[.]} $sDateMax "-" newdate
    set ndate [::utils::date::chooser $newdate]
    if {[llength $ndate] == 3} {
      set sDateMax "[lindex $ndate 0].[lindex $ndate 1].[lindex $ndate 2]"
    }
  }
  bindFocusColors $f.emin
  bindFocusColors $f.emax
  bind $f.emin <FocusOut> +checkDates
  bind $f.emax <FocusOut> +checkDates
  ttk::button $f.lyear -textvar ::tr(YearToToday) -style Pad0.Small.TButton -command {
    set sDateMin "[expr [::utils::date::today year]-1].[::utils::date::today month].[::utils::date::today day]"
    set sDateMax [::utils::date::today]
  }
  
  pack $f.l1 $f.emin $f.eminCal $f.l2 $f.emax $f.emaxCal $f.l3 $f.lyear -side left
  
  ttk::label $f.lRound -textvar ::tr(Round:) -font $bold
  ttk::entry $f.eRound -textvariable sRound -width 10 -font $regular
  bindFocusColors $f.eRound
  pack $f.eRound $f.lRound -side right
  
  addHorizontalRule $w
  
  pack .sh.res -side top -fill x
  ttk::label $w.res.l1 -textvar ::tr(Result:) -font $bold
  pack $w.res.l1 -side left
  foreach i {win draw loss other} \
      v {sResWin sResDraw sResLoss sResOther} \
      text {"1-0 "  "1/2-1/2 "  "0-1 "  "* "} {
        ttk::checkbutton $w.res.e$i -text $text -variable $v -offvalue 0 -onvalue 1
        pack $w.res.e$i -side left
      }
  
  ttk::label $w.gl.l1 -textvar ::tr(GameLength:) -font $bold
  ttk::label $w.gl.l2 -text "-" -font $regular
  ttk::label $w.gl.l3 -textvar ::tr(HalfMoves) -font $regular
  ttk::entry $w.gl.emin -textvariable sGlMin -justify right -width 4 -font $regular
  ttk::entry $w.gl.emax -textvariable sGlMax -justify right -width 4 -font $regular
  bindFocusColors $w.gl.emin
  bindFocusColors $w.gl.emax
  pack $w.gl -in $w.res -side right -fill x
  pack $w.gl.l1 $w.gl.emin $w.gl.l2 $w.gl.emax $w.gl.l3 -side left
  
  ttk::label $w.ends.label -textvar ::tr(EndSideToMove:) -font $bold
  ttk::frame $w.ends.sep1 -width 5
  ttk::frame $w.ends.sep2 -width 5
  ttk::radiobutton $w.ends.white -textvar ::tr(White) -variable sSideToMove -value w
  ttk::radiobutton $w.ends.black -textvar ::tr(Black) -variable sSideToMove -value b
  ttk::radiobutton $w.ends.both -textvar ::tr(Both) -variable sSideToMove -value wb
  pack $w.ends.label $w.ends.white $w.ends.sep1 $w.ends.black $w.ends.sep2 $w.ends.both -side left
  pack $w.ends -side top -fill x
  
  addHorizontalRule $w
  
  pack .sh.ano -side top -fill x
  ttk::label $w.ano.a1 -textvar ::tr(Annotations:) -font $bold
  ttk::label $w.ano.a2 -textvar ::tr(Annotator:) -font $bold
  ttk::checkbutton $w.ano.an -textvar ::tr(Cmnts:) -variable sAnnotated -offvalue 0 -onvalue 1
  ttk::entry $w.ano.aname -textvariable sAnnotator -width 20 -font $regular
  pack $w.ano.a1 $w.ano.an -side left
  pack $w.ano.aname $w.ano.a2 -side right

  addHorizontalRule $w
  
  ttk::label $w.eco.l1 -textvar ::tr(ECOCode:) -font $bold
  ttk::label $w.eco.l2 -text "-" -font $regular
  ttk::label $w.eco.l3 -text " " -font $regular
  ttk::label $w.eco.l4 -textvar ::tr(GamesWithNoECO:) -font $bold
  ttk::entry $w.eco.emin -textvariable sEcoMin -width 5 -font $regular
  ttk::entry $w.eco.emax -textvariable sEcoMax -width 5 -font $regular
  bindFocusColors $w.eco.emin
  bindFocusColors $w.eco.emax
  ttk::button $w.eco.range -text "..." -style  Pad0.Small.TButton -width 0 -command {
    set tempResult [chooseEcoRange]
    if {[scan $tempResult "%\[A-E0-9a-z\]-%\[A-E0-9a-z\]" sEcoMin_tmp sEcoMax_tmp] == 2} {
      set sEcoMin $sEcoMin_tmp
      set sEcoMax $sEcoMax_tmp
    }
    unset tempResult
  }
  ttk::radiobutton $w.eco.yes -variable sEco -value Yes -textvar ::tr(Yes) -style Small.TRadiobutton
  ttk::radiobutton $w.eco.no -variable sEco -value No -textvar ::tr(No) -style Small.TRadiobutton
  pack $w.eco -side top -fill x
  pack $w.eco.l1 $w.eco.emin $w.eco.l2 $w.eco.emax $w.eco.range $w.eco.l3 $w.eco.l4 $w.eco.yes $w.eco.no -side left
  
  set f [ttk::frame $w.gnum]
  pack $f -side top -fill x
  ttk::label $f.l1 -textvar ::tr(GlistGameNumber:) -font $bold
  ttk::entry $f.emin -textvariable sGnumMin -width 8 -justify right -font $regular
  ttk::label $f.l2 -text "-" -font $regular
  ttk::entry $f.emax -textvariable sGnumMax -width 8 -justify right -font $regular
  pack $f.l1 $f.emin $f.l2 $f.emax -side left
  bindFocusColors $f.emin
  bindFocusColors $f.emax
  ttk::label $f.l3 -text " " -font $regular
  ttk::button $f.all -text [::utils::string::Capital $::tr(all)] -style Pad0.Small.TButton -command {set sGnumMin 1; set sGnumMax -1}
  ttk::menubutton $f.first -style pad0.TMenubutton -textvar ::tr(First...) -menu $f.first.m
  ttk::menubutton $f.last -style pad0.TMenubutton -textvar ::tr(Last...) -menu $f.last.m
  menu $f.first.m -font $regular
  menu $f.last.m -font $regular
  foreach x {10 50 100 500 1000 5000 10000} {
    $f.first.m add command -label $x \
        -command "set sGnumMin 1; set sGnumMax $x"
    $f.last.m add command -label $x \
        -command "set sGnumMin -$x; set sGnumMax -1"
  }
  pack $f.l3 $f.all $f.first $f.last -side left -padx 2
  
  set f [ttk::frame $w.pgntext]
  pack $f -side top -fill x
  ttk::label $f.l1 -textvar ::tr(PgnContains:) -font $bold
  ttk::entry $f.e1 -textvariable sPgntext(1) -width 15 -font $regular
  ttk::label $f.l2 -text "+" -font $regular
  ttk::entry $f.e2 -textvariable sPgntext(2) -width 15 -font $regular
  ttk::label $f.l3 -text "+" -font $regular
  ttk::entry $f.e3 -textvariable sPgntext(3) -width 15 -font $regular
  bindFocusColors $f.e1
  bindFocusColors $f.e2
  bindFocusColors $f.e3
  pack $f.l1 $f.e1 $f.l2 $f.e2 $f.l3 $f.e3 -side left
  
  addHorizontalRule $w
  
  ttk::button $w.flagslabel -textvar ::tr(FindGamesWith:) -style Pad0.Small.TButton -image bluetriangle -compound left -command {
    if {$sHeaderFlagFrame} {
      set sHeaderFlagFrame 0
      pack forget .sh.flags
    } else {
      set sHeaderFlagFrame 1
      pack .sh.flags -side top -after .sh.flagslabel
    }
  }
  pack $w.flagslabel -side top -fill x
  
  ttk::frame $w.flags
  if {$::sHeaderFlagFrame} {
    pack $w.flags -side top
  }
  
  set count 0
  set row 0
  set col 0
  foreach var $::sHeaderFlagList {   
    set lab [ttk::label $w.flags.l$var -text  [ ::tr $var ] -font font_Small]
    grid $lab -row $row -column $col -sticky e
    incr col
    grid [ttk::radiobutton $w.flags.yes$var -variable sHeaderFlags($var) -value yes -text $::tr(Yes)] -row $row -column $col
    incr col
    grid [ttk::radiobutton $w.flags.no$var -variable sHeaderFlags($var) -value no -text $::tr(No)] -row $row -column $col
    incr col
    grid [ttk::radiobutton $w.flags.both$var -variable sHeaderFlags($var) -value both -text $::tr(Both)] -row $row -column $col
    incr count
    incr col -3
    incr row
    if {$count == 6} { set col 5; set row 0 }
    if {$count == 12} { set col 10; set row 0 }
  }
  
  set count 1
  set col 0
  set row 7
  foreach var $::sHeaderCustomFlagList {
    
    set lb [sc_game flag $count description]
    if { $lb == ""  } {  set lb $var  }
    
    set lab [ttk::label $w.flags.l$var -text $lb -font font_Small]
    grid $lab -row $row -column $col -sticky e
    incr col
    grid [ttk::radiobutton $w.flags.yes$var -variable sHeaderFlags($var) -value yes -text $::tr(Yes)] -row $row -column $col
    incr col
    grid [ttk::radiobutton $w.flags.no$var -variable sHeaderFlags($var) -value no -text $::tr(No)] -row $row -column $col
    incr col
    grid [ttk::radiobutton $w.flags.both$var -variable sHeaderFlags($var) -value both -text $::tr(Both)] -row $row -column $col
    incr col 2
    incr count
    if {$count == 4} { set col 0; set row 8 }
  }
  
  grid [ttk::label $w.flags.space -text "" -font $regular] -row 0 -column 4
  grid [ttk::label $w.flags.space2 -text "" -font $regular] -row 0 -column 9
  
  addHorizontalRule $w
  ::search::addFilterOpFrame $w 1
  addHorizontalRule $w
  
  ### Header search: search/cancel buttons
  
  ttk::frame $w.b
  pack $w.b -side top -fill both
  ttk::button $w.b.defaults -textvar ::tr(Defaults) -command ::search::header::defaults ;# -padx 20
  ttk::button $w.b.save -textvar ::tr(Save...) -command ::search::header::save ;# -padx 20
  ttk::button $w.b.stop -textvar ::tr(Stop) -command sc_progressBar
  ttk::button $w.b.search -textvar ::tr(Search) -command {
    ::utils::history::AddEntry HeaderSearchWhite $sWhite
    ::utils::history::AddEntry HeaderSearchBlack $sBlack
    ::utils::history::AddEntry HeaderSearchEvent $sEvent
    ::utils::history::AddEntry HeaderSearchSite $sSite
    
    set sPgnlist {}
    foreach i {1 2 3} {
      set temp [string trim $sPgntext($i)]
      if {$temp != ""} { lappend sPgnlist $temp }
    }
    busyCursor .
    pack .sh.b.stop -side right -padx 5
    grab .sh.b.stop
    sc_progressBar .sh.fprogress.progress bar 301 21 time
    set wtitles {}
    set btitles {}
    foreach i $sTitleList {
      if $sTitles(w:$i) { lappend wtitles $i }
      if $sTitles(b:$i) { lappend btitles $i }
    }
    
    if {($sWhite == "!me") || ($sBlack == "!me")} {
      set i 0
      foreach name $::myPlayerNames {
        
        set filter 0
        
        if {$i == 0} {
          set filter 2
        } else {
          set filter 1
        }
        set i [expr {$i+1}]
        set wname $sWhite
        set bname $sBlack
        
        if {$sWhite == "!me"} {
          set wname $name
        }
        if {$sBlack == "!me"} {
          set bname $name
        }
        set str [sc_search header  \
            -white $wname           \
            -black $bname           \
            -toMove $sSideToMove \
            -results [list $sResWin $sResDraw $sResLoss $sResOther] \
            -event $sEvent -site $sSite -round $sRound \
            -date [list $sDateMin $sDateMax] \
            -welo [list $sWhiteEloMin $sWhiteEloMax] \
            -belo [list $sBlackEloMin $sBlackEloMax] \
            -delo [list $sEloDiffMin $sEloDiffMax] \
            -eco [list $sEcoMin $sEcoMax $sEco] \
            -length [list $sGlMin $sGlMax] \
            -gameNumber [list $sGnumMin $sGnumMax] \
            -flip $sIgnoreCol -filter $filter \
            -annotated $sAnnotated \
            -annotator $sAnnotator \
            -fStdStart $sHeaderFlags(StdStart) \
            -fPromotions $sHeaderFlags(Promotions) \
            -fComments $sHeaderFlags(Comments) \
            -fVariations $sHeaderFlags(Variations) \
            -fAnnotations $sHeaderFlags(Annotations) \
            -fDelete $sHeaderFlags(DeleteFlag) \
            -fWhiteOp $sHeaderFlags(WhiteOpFlag) \
            -fBlackOp $sHeaderFlags(BlackOpFlag) \
            -fMiddlegame $sHeaderFlags(MiddlegameFlag) \
            -fEndgame $sHeaderFlags(EndgameFlag) \
            -fNovelty $sHeaderFlags(NoveltyFlag) \
            -fPawnStruct $sHeaderFlags(PawnFlag) \
            -fTactics $sHeaderFlags(TacticsFlag) \
            -fKingside $sHeaderFlags(KsideFlag) \
            -fQueenside $sHeaderFlags(QsideFlag) \
            -fBrilliancy $sHeaderFlags(BrilliancyFlag) \
            -fBlunder $sHeaderFlags(BlunderFlag) \
            -fUser $sHeaderFlags(UserFlag) \
            -fCustom1 $sHeaderFlags(CustomFlag1) \
            -fCustom2 $sHeaderFlags(CustomFlag2) \
            -fCustom3 $sHeaderFlags(CustomFlag3) \
            -fCustom4 $sHeaderFlags(CustomFlag4) \
            -fCustom5 $sHeaderFlags(CustomFlag5) \
            -fCustom6 $sHeaderFlags(CustomFlag6) \
            -pgn $sPgnlist -wtitles $wtitles -btitles $btitles \
            ]
      }
    } elseif {($sWhite == "!mymove") || ($sBlack == "!mymove")} {
      set i 0
      foreach name $::myPlayerNames {
        
        set filter 0
        
        if {$i == 0} {
          set filter 2
        } else {
          set filter 1
        }
        
        set str [sc_search header  \
            -white $name            \
            -toMove w               \
            -results [list 0 0 0 1] \
            -event $sEvent -site $sSite -round $sRound \
            -date [list $sDateMin $sDateMax] \
            -welo [list $sWhiteEloMin $sWhiteEloMax] \
            -belo [list $sBlackEloMin $sBlackEloMax] \
            -delo [list $sEloDiffMin $sEloDiffMax] \
            -eco [list $sEcoMin $sEcoMax $sEco] \
            -length [list $sGlMin $sGlMax] \
            -gameNumber [list $sGnumMin $sGnumMax] \
            -flip $sIgnoreCol -filter $filter \
            -annotated $sAnnotated \
            -annotator $sAnnotator \
            -fStdStart $sHeaderFlags(StdStart) \
            -fPromotions $sHeaderFlags(Promotions) \
            -fComments $sHeaderFlags(Comments) \
            -fVariations $sHeaderFlags(Variations) \
            -fAnnotations $sHeaderFlags(Annotations) \
            -fDelete $sHeaderFlags(DeleteFlag) \
            -fWhiteOp $sHeaderFlags(WhiteOpFlag) \
            -fBlackOp $sHeaderFlags(BlackOpFlag) \
            -fMiddlegame $sHeaderFlags(MiddlegameFlag) \
            -fEndgame $sHeaderFlags(EndgameFlag) \
            -fNovelty $sHeaderFlags(NoveltyFlag) \
            -fPawnStruct $sHeaderFlags(PawnFlag) \
            -fTactics $sHeaderFlags(TacticsFlag) \
            -fKingside $sHeaderFlags(KsideFlag) \
            -fQueenside $sHeaderFlags(QsideFlag) \
            -fBrilliancy $sHeaderFlags(BrilliancyFlag) \
            -fBlunder $sHeaderFlags(BlunderFlag) \
            -fUser $sHeaderFlags(UserFlag) \
            -fCustom1 $sHeaderFlags(CustomFlag1) \
            -fCustom2 $sHeaderFlags(CustomFlag2) \
            -fCustom3 $sHeaderFlags(CustomFlag3) \
            -fCustom4 $sHeaderFlags(CustomFlag4) \
            -fCustom5 $sHeaderFlags(CustomFlag5) \
            -fCustom6 $sHeaderFlags(CustomFlag6) \
            -pgn $sPgnlist -wtitles $wtitles -btitles $btitles \
            ]
        
        set str [sc_search header  \
            -black $name            \
            -toMove b               \
            -results [list 0 0 0 1] \
            -event $sEvent -site $sSite -round $sRound \
            -date [list $sDateMin $sDateMax] \
            -welo [list $sWhiteEloMin $sWhiteEloMax] \
            -belo [list $sBlackEloMin $sBlackEloMax] \
            -delo [list $sEloDiffMin $sEloDiffMax] \
            -eco [list $sEcoMin $sEcoMax $sEco] \
            -length [list $sGlMin $sGlMax] \
            -gameNumber [list $sGnumMin $sGnumMax] \
            -flip $sIgnoreCol -filter $filter \
            -annotated $sAnnotated \
            -annotator $sAnnotator \
            -fStdStart $sHeaderFlags(StdStart) \
            -fPromotions $sHeaderFlags(Promotions) \
            -fComments $sHeaderFlags(Comments) \
            -fVariations $sHeaderFlags(Variations) \
            -fAnnotations $sHeaderFlags(Annotations) \
            -fDelete $sHeaderFlags(DeleteFlag) \
            -fWhiteOp $sHeaderFlags(WhiteOpFlag) \
            -fBlackOp $sHeaderFlags(BlackOpFlag) \
            -fMiddlegame $sHeaderFlags(MiddlegameFlag) \
            -fEndgame $sHeaderFlags(EndgameFlag) \
            -fNovelty $sHeaderFlags(NoveltyFlag) \
            -fPawnStruct $sHeaderFlags(PawnFlag) \
            -fTactics $sHeaderFlags(TacticsFlag) \
            -fKingside $sHeaderFlags(KsideFlag) \
            -fQueenside $sHeaderFlags(QsideFlag) \
            -fBrilliancy $sHeaderFlags(BrilliancyFlag) \
            -fBlunder $sHeaderFlags(BlunderFlag) \
            -fUser $sHeaderFlags(UserFlag) \
            -fCustom1 $sHeaderFlags(CustomFlag1) \
            -fCustom2 $sHeaderFlags(CustomFlag2) \
            -fCustom3 $sHeaderFlags(CustomFlag3) \
            -fCustom4 $sHeaderFlags(CustomFlag4) \
            -fCustom5 $sHeaderFlags(CustomFlag5) \
            -fCustom6 $sHeaderFlags(CustomFlag6) \
            -pgn $sPgnlist -wtitles $wtitles -btitles $btitles \
            ]
        
        set i [expr {$i+1}]
      }
    } else {
      set str [sc_search header -white $sWhite -black $sBlack \
          -event $sEvent -site $sSite -round $sRound \
          -date [list $sDateMin $sDateMax] \
          -results [list $sResWin $sResDraw $sResLoss $sResOther] \
          -welo [list $sWhiteEloMin $sWhiteEloMax] \
          -belo [list $sBlackEloMin $sBlackEloMax] \
          -delo [list $sEloDiffMin $sEloDiffMax] \
          -eco [list $sEcoMin $sEcoMax $sEco] \
          -length [list $sGlMin $sGlMax] \
          -toMove $sSideToMove \
          -gameNumber [list $sGnumMin $sGnumMax] \
          -flip $sIgnoreCol -filter $::search::filter::operation \
          -annotated $sAnnotated \
          -annotator $sAnnotator \
          -fStdStart $sHeaderFlags(StdStart) \
          -fPromotions $sHeaderFlags(Promotions) \
          -fComments $sHeaderFlags(Comments) \
          -fVariations $sHeaderFlags(Variations) \
          -fAnnotations $sHeaderFlags(Annotations) \
          -fDelete $sHeaderFlags(DeleteFlag) \
          -fWhiteOp $sHeaderFlags(WhiteOpFlag) \
          -fBlackOp $sHeaderFlags(BlackOpFlag) \
          -fMiddlegame $sHeaderFlags(MiddlegameFlag) \
          -fEndgame $sHeaderFlags(EndgameFlag) \
          -fNovelty $sHeaderFlags(NoveltyFlag) \
          -fPawnStruct $sHeaderFlags(PawnFlag) \
          -fTactics $sHeaderFlags(TacticsFlag) \
          -fKingside $sHeaderFlags(KsideFlag) \
          -fQueenside $sHeaderFlags(QsideFlag) \
          -fBrilliancy $sHeaderFlags(BrilliancyFlag) \
          -fBlunder $sHeaderFlags(BlunderFlag) \
          -fUser $sHeaderFlags(UserFlag) \
          -fCustom1 $sHeaderFlags(CustomFlag1) \
          -fCustom2 $sHeaderFlags(CustomFlag2) \
          -fCustom3 $sHeaderFlags(CustomFlag3) \
          -fCustom4 $sHeaderFlags(CustomFlag4) \
          -fCustom5 $sHeaderFlags(CustomFlag5) \
          -fCustom6 $sHeaderFlags(CustomFlag6) \
          -pgn $sPgnlist -wtitles $wtitles -btitles $btitles \
          ]
    }
    
    grab release .sh.b.stop
    pack forget .sh.b.stop
    unbusyCursor .
    
    .sh.status configure -text $str
    set glstart 1
    ::windows::gamelist::Refresh
    ::search::loadFirstGame
    
	 # refresh the tree window, this includes Best Games
	 ::tree::refresh
    ::windows::stats::Refresh
  }
  
  ttk::button $w.b.cancel -textvar ::tr(Close) -command {focus .; destroy .sh} ;# -padx 20
  
  foreach i {defaults save cancel search stop} {
    $w.b.$i configure -style Small.TButton
    
    pack $w.b.defaults $w.b.save -side left -padx 5
    pack $w.b.cancel $w.b.search -side right -padx 5
  }
  
  pack [ ttk::frame $w.fprogress ] -fill both
  canvas $w.fprogress.progress -height 20 -width 300 -bg white -relief solid -border 1
  $w.fprogress.progress create rectangle 0 0 0 0 -fill blue -outline blue -tags bar
  $w.fprogress.progress create text 295 10 -anchor e -font font_Regular -tags time \
      -fill black -text "0:00 / 0:00"
  pack $w.fprogress.progress -side top -pady 2
  ttk::label $w.status -text "" -width 1 -font font_Small -relief sunken -anchor w
  pack $w.status -side bottom -fill x
  # update
  wm resizable $w 0 0
  # standardShortcuts $w
  ::search::Config
  focus $w.cWhite.e
}

proc ::search::header::save {} {
  global sWhite sBlack sEvent sSite sRound sAnnotator sAnnotated sDateMin sDateMax sIgnoreCol
  global sWhiteEloMin sWhiteEloMax sBlackEloMin sBlackEloMax
  global sEloDiffMin sEloDiffMax sGlMin sGlMax
  global sEco sEcoMin sEcoMax sHeaderFlags sSideToMove
  global sResWin sResLoss sResDraw sResOther glstart sPgntext
  
  set ftype { { "Scid SearchOptions files" {".sso"} } }
  set fName [tk_getSaveFile -initialdir [pwd] -filetypes $ftype -title "Create a SearchOptions file"]
  if {$fName == ""} { return }
  
  if {[string compare [file extension $fName] ".sso"] != 0} {
    append fName ".sso"
  }
  
  if {[catch {set searchF [open [file nativename $fName] w]} ]} {
    tk_messageBox -title "Error: Unable to open file" -type ok -icon error \
        -message "Unable to create SearchOptions file: $fName"
    return
  }
  puts $searchF "\# SearchOptions File created by Scid [sc_info version]"
  puts $searchF "set searchType Header"
  
  # First write the regular variables:
  foreach i {sWhite sBlack sEvent sSite sRound sAnnotator sAnnotated sDateMin sDateMax sResWin
    sResLoss sResDraw sResOther sWhiteEloMin sWhiteEloMax sBlackEloMin
    sBlackEloMax sEcoMin sEcoMax sEloDiffMin sEloDiffMax
    sIgnoreCol sSideToMove sGlMin sGlMax ::search::filter::operation} {
    puts $searchF "set $i [list [set $i]]"
  }
  # Now write the array values:
  foreach i [array names sHeaderFlags] {
    puts $searchF "set sHeaderFlags($i) [list $sHeaderFlags($i)]"
  }
  foreach i [array names sPgntext] {
    puts $searchF "set sPgntext($i) [list $sPgntext($i)]"
  }
  
  tk_messageBox -type ok -icon info -title "Search Options saved" \
      -message "Header search options saved to: $fName"
  close $searchF
}

##############################
### Selecting common ECO ranges

set scid_ecoRangeChosen ""
set ecoCommonRanges {}
proc chooseEcoRange {} {
  global ecoCommonRanges scid_ecoRangeChosen
  set ecoCommonRanges [ list \
      "A04-A09  [tr Reti]: [trans 1.Nf3]" \
      "A10-A39  [tr English]: 1.c4" \
      "A40-A49  1.d4, [tr d4Nf6Miscellaneous]" \
      "A45l-A45z  [tr Trompowsky]: [trans [list 1.d4 Nf6 2.Bg5]]" \
      "A51-A52  [tr Budapest]: [trans [list 1.d4 Nf6 2.c4 e5]]" \
      "A53-A55  [tr OldIndian]: [trans [list 1.d4 Nf6 2.c4 d6]]" \
      "A57-A59  [tr BenkoGambit]: [trans [list 1.d4 Nf6 2.c4 c5 3.d5 b5]]" \
      "A60-A79  [tr ModernBenoni]: [trans [list 1.d4 Nf6 2.c4 c5 3.d5 e6]]" \
      "A80-A99  [tr DutchDefence]: 1.d4 f5" \
      "____________________________________________________________" \
      "B00-C99  1.e4" \
      "B01-B01     [tr Scandinavian]: 1.e4 d5" \
      "B02-B05     [tr AlekhineDefence]: [trans [list 1.e4 Nf6]]" \
      "B07-B09     [tr Pirc]: 1.e4 d6" \
      "B10-B19     [tr CaroKann]: 1.e4 c6" \
      "B12i-B12z      [tr CaroKannAdvance]: 1.e4 c6 2.d4 d5 3.e5" \
      "B20-B99  [tr Sicilian]: 1.e4 c5" \
      "B22-B22     [tr SicilianAlapin]: 1.e4 c5 2.c3" \
      "B23-B26     [tr SicilianClosed]: [trans [list 1.e4 c5 2.Nc3]]" \
      "B30-B39     [tr Sicilian]: [trans [list 1.e4 c5 2.Nf3 Nc6]]" \
      "B40-B49     [tr Sicilian]: [trans [list 1.e4 c5 2.Nf3 e6]]" \
      "B50-B59     [tr SicilianRauzer]: [trans [list 1.e4 c5 2.Nf3 d6 ... 5.Nc3 Nc6]]" \
      "B70-B79     [tr SicilianDragon]: [trans [list 1.e4 c5 2.Nf3 d6 ... 5.Nc3 g6]]" \
      "B80-B89     [tr SicilianScheveningen]: [trans [list 1.e4 c5 2.Nf3 d6 ... 5.Nc3 e6]]" \
      "B90-B99     [tr SicilianNajdorf]: [trans [list 1.e4 c5 2.Nf3 d6 ... 5.Nc3 a6]]" \
      "____________________________________________________________" \
      "C00-C19  [tr FrenchDefence]: 1.e4 e6" \
      "C02-C02     [tr FrenchAdvance]: 1.e4 e6 2.d4 d5 3.e5" \
      "C03-C09     [tr FrenchTarrasch]: [trans [list 1.e4 e6 2.d4 d5 3.Nd2]]" \
      "C15-C19     [tr FrenchWinawer]: [trans [list 1.e4 e6 2.d4 d5 3.Nc3 Bb4]]" \
      "C20-C99  [tr OpenGame]: 1.e4 e5" \
      "C25-C29     [tr Vienna]: [trans [list 1.e4 e5 2.Nc3]]" \
      "C30-C39     [tr KingsGambit]: 1.e4 e5 2.f4" \
      "C42-C43     [tr RussianGame]: [trans [list 1.e4 e5 2.Nf3 Nf6]]" \
      "C44-C49     [tr OpenGame]: [trans [list 1.e4 e5 2.Nf3 Nc6]]" \
      "C50-C59     [tr ItalianTwoKnights]: 1.e4 e5 2.Nf3 Nc6 3.Bc4]]" \
      "C60-C99  [tr Spanish]: [trans [list 1.e4 e5 2.Nf3 Nc6 3.Bb5]]" \
      "C68-C69      [tr SpanishExchange]: [trans [list 3.Bb5 a6 4.Bxc6]]" \
      "C80-C83      [tr SpanishOpen]: [trans [list 3.Bb5 a6 4.Ba4 Nf6 5.O-O Nxe4]]" \
      "C84-C99      [tr SpanishClosed]: [trans [list 3.Bb5 a6 4.Ba4 Nf6 5.O-O Be7]]" \
      "____________________________________________________________" \
      "D00-D99  [tr Queen's Pawn]: 1.d4 d5" \
      "D10-D19  [tr Slav]: 1.d4 d5 2.c4 c6" \
      "D20-D29  [tr QGA]: 1.d4 d5 2.c4 dxc4" \
      "D30-D69  [tr QGD]: 1.d4 d5 2.c4 e6" \
      "D35-D36     [tr QGDExchange]: 1.d4 d5 2.c4 e6 3.cxd5 exd5" \
      "D43-D49     [tr SemiSlav]: [trans [list 3.Nc3 Nf6 4.Nf3 c6]]" \
      "D50-D69     [tr QGDwithBg5]: [trans [list 1.d4 d5 2.c4 e6 3.Nc3 Nf6 4.Bg5]]" \
      "D60-D69     [tr QGDOrthodox]: [trans [list 4.Bg5 Be7 5.e3 O-O 6.Nf3 Nbd7]]" \
      "D70-D99  [tr Grunfeld]: [trans [list 1.d4 Nf6 2.c4 g6 with 3...d5]]" \
      "D85-D89     [tr GrunfeldExchange]: [trans [list 3.Nc3 d5 4.e4 Nxc3 5.bxc3]]" \
      "D96-D99     [tr GrunfeldRussian]: [trans [list 3.Nc3 d5 4.Nf3 Bg7 5.Qb3]]" \
      "____________________________________________________________" \
      "E00-E09  [tr Catalan]: [trans [list 1.d4 Nf6 2.c4 e6 3.g3/...]]" \
      "E02-E05     [tr CatalanOpen]: [trans [list 3.g3 d5 4.Bg2 dxc4]]" \
      "E06-E09     [tr CatalanClosed]: [trans [list 3.g3 d5 4.Bg2 Be7]]" \
      "E12-E19  [tr QueensIndian]: [trans [list 1.d4 Nf6 2.c4 e6 3.Nf3 b6]]" \
      "E20-E59  [tr NimzoIndian]: [trans [list 1.d4 Nf6 2.c4 e6 3.Nc3 Bb4]]" \
      "E32-E39     [tr NimzoIndianClassical]: [trans [list 4.Qc2]]" \
      "E40-E59     [tr NimzoIndianRubinstein]: 4.e3" \
      "E60-E99  [tr KingsIndian]: [trans [list 1.d4 Nf6 2.c4 g6]]" \
      "E80-E89     [tr KingsIndianSamisch]: 4.e4 d6 5.f3" \
      "E90-E99     [tr KingsIndianMainLine]: [trans [list 4.e4 d6 5.Nf3]]" \
      ]
  
  if {[winfo exists .ecoRangeWin]} { return }
  set w .ecoRangeWin
  toplevel $w
  wm title $w "Scid: Choose ECO Range"
  wm minsize $w 30 5
  
  listbox $w.list -yscrollcommand "$w.ybar set" -height 20 -width 60 -background white -setgrid 1
  foreach i $ecoCommonRanges { $w.list insert end $i }
  ttk::scrollbar $w.ybar -command "$w.list yview" -takefocus 0
  pack [ttk::frame $w.b] -side bottom -fill x
  pack $w.ybar -side right -fill y
  pack $w.list -side left -fill both -expand yes
  
  ttk::button $w.b.ok -text "OK" -command {
    set sel [.ecoRangeWin.list curselection]
    if {[llength $sel] > 0} {
      set scid_ecoRangeChosen [lindex $ecoCommonRanges [lindex $sel 0]]
      set ::sEco No
    }
    focus .sh
    destroy .ecoRangeWin
  }
  ttk::button $w.b.cancel -text $::tr(Cancel) -command "focus .sh; destroy $w"
  pack $w.b.cancel $w.b.ok -side right -padx 5 -pady 2
  bind $w <Escape> "
  set scid_ecoRangeChosen {}
  grab release $w
  focus .
  destroy $w
  break"
  bind $w <Return> "$w.b.ok invoke; break"
  bind $w.list <Double-ButtonRelease-1> "$w.b.ok invoke; break"
  focus $w.list
  grab $w
  tkwait window $w
  return $scid_ecoRangeChosen
}


###
### End of file: search.tcl

###
### search/material.tcl: Material Search routine for Scid.
###

namespace eval ::search::material {}

image create photo button_oneplus -data {
  R0lGODlhFAAUAIAAAAAAAP///yH5BAEKAAEALAAAAAAUABQAAAIpjI+py+0P
  FwCSzVnlzZaaC3oJNooadyqmun4OGR1wHMxQ2HYgzfd+UgAAOw==
}

set ignoreColors 0
set minMoveNum 1
set maxMoveNum 999
set minHalfMoves 1
set oppBishops "Either"
set minMatDiff -40
set maxMatDiff +40

trace variable minMoveNum w {::utils::validate::Integer 999 0}
trace variable maxMoveNum w {::utils::validate::Integer 999 0}
trace variable minHalfMoves w {::utils::validate::Integer 99 0}
trace variable minMatDiff w {::utils::validate::Integer -99 0}
trace variable maxMatDiff w {::utils::validate::Integer -99 0}

set nPatterns 10

array set pMin [list wq 0 bq 0 wr 0 br 0 wb 0 bb 0 wn 0 bn 0 wm 0 bm 0 wp 0 bp 0]
array set pMax [list wq 2 bq 2 wr 2 br 2 wb 2 bb 2 wn 2 bn 2 wm 4 bm 4 wp 8 bp 8]
for { set i 1 } { $i <= $nPatterns } { incr i } {
  set pattPiece($i) "?";  set pattFyle($i) "?";  set pattRank($i) "?"
}

proc checkPieceCounts {name el op} {
  global pMin pMax
  ::utils::validate::Integer 9 0 $name $el $op
  # Now make sure minor piece counts fit with bishop/knight counts:
  set wmMin [expr {$pMin(wn) + $pMin(wb)} ]
  set wmMax [expr {$pMax(wn) + $pMax(wb)} ]
  set bmMin [expr {$pMin(bn) + $pMin(bb)} ]
  set bmMax [expr {$pMax(bn) + $pMax(bb)} ]
  if {$pMin(wm) < $wmMin} { set pMin(wm) $wmMin }
  if {$pMax(wm) > $wmMax} { set pMax(wm) $wmMax }
  if {$pMin(bm) < $bmMin} { set pMin(bm) $bmMin }
  if {$pMax(bm) > $bmMax} { set pMax(bm) $bmMax }
  foreach p {wq wr wb wn wm wp bq br bb bn bm bp} {
    if {$pMax($p) != ""  &&  $pMax($p) < $pMin($p)} { set pMax($p) $pMin($p) }
  }
}

trace variable pMin w checkPieceCounts
trace variable pMax w checkPieceCounts


proc makeBoolMenu {w varName} {
  upvar #0 $varName var
  if {![info exists var]} { set var "Yes" }
  # ttk::menubutton $w -textvariable $varName -menu $w.menu -image "" -style pad0.TMenubutton ;# -relief raised -bd 2 -highlightthickness 2 -indicatoron 0 -anchor w
  menubutton $w -textvariable $varName -indicatoron 0 -menu $w.menu \
      -relief raised -bd 2 -highlightthickness 0 -anchor w -image ""
  
  menu $w.menu -tearoff 0
  $w.menu add radiobutton -label Yes -image ::rep::_tick -variable $varName -value Yes \
      -command "$w configure -image ::rep::_tick"  ;# -hidemargin 1
  $w.menu add radiobutton -label No -image ::rep::_cross -variable $varName -value No \
      -command "$w configure -image ::rep::_cross" ;# -hidemargin 1
  return $w.menu
}

proc makePieceMenu {w varName} {
  global dark
  upvar #0 $varName var
  if {![info exists var]} { set var "?" }
  # ttk::menubutton $w -textvariable $varName -menu $w.menu -image "" -style pad0.TMenubutton ;# -indicatoron 0 -relief raised -bd 2 -highlightthickness 2 -anchor w
  menubutton $w -textvariable $varName -indicatoron 0 -menu $w.menu \
      -relief raised -bd 2 -highlightthickness 0 -anchor w -image ""
  menu $w.menu -tearoff 0
  $w.menu add radiobutton -label " ? " -variable $varName -value "?" \
      -command "$w configure -image e20"  -hidemargin 1
  foreach i {wk wq wr wb wn wp bk bq br bb bn bp} {
    $w.menu add radiobutton -label $i -image ${i}20 -value $i \
        -variable $varName \
        -command "$w configure -image ${i}20"  -hidemargin 1
  }
  foreach i {" ? " wk bk} {
    $w.menu entryconfigure $i -columnbreak 1
  }
  return $w.menu
}

proc updatePatternImages {} {
  global pattPiece nPatterns pattBool
  if {! [winfo exists .sm]} { return }
  for {set i 1} {$i <= $nPatterns} {incr i} {
    if {$pattBool($i) == "Yes"} {
      .sm.mp.patt.grid.b$i configure -image ::rep::_tick
    } else {
      .sm.mp.patt.grid.b$i configure -image ::rep::_cross
    }
    if {$pattPiece($i) == "?"} {
      .sm.mp.patt.grid.p$i configure -image e20
    } else {
      .sm.mp.patt.grid.p$i configure -image "$pattPiece($i)20"
    }
  }
}

# ::search::material::zero
#
#   Called to clear all material minumum/maximum values to zero.
#
proc ::search::material::zero {} {
  global pMin pMax
  array set pMin {wq 0 bq 0 wr 0 br 0 wb 0 bb 0 wn 0 bn 0 wm 0 bm 0 wp 0 bp 0}
  array set pMax {wq 0 bq 0 wr 0 br 0 wb 0 bb 0 wn 0 bn 0 wm 0 bm 0 wp 0 bp 0}
}

proc ::search::material::any {} {
  global pMin pMax
  array set pMin {wq 0 bq 0 wr 0 br 0 wb 0 bb 0 wn 0 bn 0 wm 0 bm 0 wp 0 bp 0}
  array set pMax {wq 2 bq 2 wr 2 br 2 wb 2 bb 2 wn 2 bn 2 wm 4 bm 4 wp 8 bp 8}
  set ::minMatDiff -40
  set maxMatDiff +40
}

proc clearPatterns {} {
  global pattPiece pattFyle pattRank pattBool nPatterns
  
  for { set i 1 } { $i <= $nPatterns } { incr i } {
    set pattPiece($i) "?";  set pattFyle($i) "?";  set pattRank($i) "?"
    set pattBool($i) "Yes"
  }
  updatePatternImages
}

proc setPatterns {pattlist} {
  global pattPiece pattFyle pattRank pattBool nPatterns
  
  clearPatterns
  set count 1
  foreach patt $pattlist {
    if {$count <= $nPatterns  &&  [llength $patt] == 4} {
      set pattPiece($count) [lindex $patt 0]
      set pattFyle($count) [lindex $patt 1]
      set pattRank($count) [lindex $patt 2]
      set pattBool($count) [lindex $patt 3]
      incr count
    }
  }
  updatePatternImages
}

set smDisplayed(Material) 1
set smDisplayed(Patterns) 0


# ::search::material
#
#   Opens the window for searching by material or patterns.
#
proc ::search::material {} {
  global glstart dark pMin pMax ignoreColors minMoveNum maxMoveNum
  global pattPiece pattFyle pattRank pattBool oppBishops nPatterns
  global minHalfMoves smDisplayed
  
  set w .sm
  if {[winfo exists $w]} {
    wm deiconify $w
    raiseWin $w
    return
  }
  set small font_Small
  
  toplevel $w
  wm title $w "Scid: $::tr(MaterialSearch)"
  #  button $w.piecelabel -font font_Bold -textvar ::tr(Material:) -command {
  #    if {$smDisplayed(Material)} {
  #      set smDisplayed(Material) 0
  #      pack forget .sm.q .sm.r .sm.b .sm.n .sm.m .sm.p .sm.b1 .sm.mdiff
  #    } else {
  #      set smDisplayed(Material) 1
  #      pack .sm.q .sm.r .sm.b .sm.n .sm.m .sm.p .sm.b1 .sm.mdiff \
  #        -after .sm.piecelabel
  #    }
  #  }
  
  bind $w <F1> { helpWindow Searches Material }
  bind $w <Escape> "$w.b3.cancel invoke"
  bind $w <Return> "$w.b3.search invoke"
  
  pack [ttk::frame $w.mp] -side top
  pack [ttk::frame $w.mp.material] -side left
  
  ttk::label $w.mp.material.title -font font_Bold -textvar ::tr(Material:)
  pack $w.mp.material.title -side top -pady 3
  
  foreach piece {q r b n m p} {
    ttk::frame $w.mp.material.$piece
    pack $w.mp.material.$piece -side top
  }
  
  foreach i {q r b n m p} {
    set f $w.mp.material.$i
    ttk::button $f.w0 -text "0" -command "set pMin(w$i) 0; set pMax(w$i) 0"
    ttk::button $f.w1 -text "1" -command "set pMin(w$i) 1; set pMax(w$i) 1"
    ttk::button $f.w2 -text "2" -command "set pMin(w$i) 2; set pMax(w$i) 2"
    ttk::button $f.wa -text "0+" -command "set pMin(w$i) 0; set pMax(w$i) 2"
    ttk::button $f.w1p -text "1+" -command "set pMin(w$i) 1; set pMax(w$i) 2"
    ttk::label $f.wi -image w${i}20 -font font_Small
    ttk::label $f.wto -text "-" -font font_Small -padding 0
    ttk::entry $f.wmin -width 2 -textvar pMin(w$i) -font font_Small -justify right ;#-relief sunken
    ttk::entry $f.wmax -width 2 -textvar pMax(w$i) -font font_Small -justify right ;#-relief sunken
    pack $f.w0 $f.w1 $f.w2 $f.wa $f.w1p $f.wi $f.wmin $f.wto $f.wmax -side left -pady 1
    
    pack [ttk::frame $f.space -width 20] -side left
    ttk::button $f.b0 -text "0" -command "set pMin(b$i) 0; set pMax(b$i) 0"
    ttk::button $f.b1 -text "1" -command "set pMin(b$i) 1; set pMax(b$i) 1"
    ttk::button $f.b2 -text "2" -command "set pMin(b$i) 2; set pMax(b$i) 2"
    ttk::button $f.ba -text "0+" -command "set pMin(b$i) 0; set pMax(b$i) 2"
    ttk::button $f.b1p -text "1+" -command "set pMin(b$i) 1; set pMax(b$i) 2"
    ttk::label $f.bi -image b${i}20 -font font_Small
    ttk::label $f.bto -text "-" -font font_Small
    ttk::entry $f.bmin -width 2 -textvar pMin(b$i) -font font_Small -justify right ;#-relief sunken
    ttk::entry $f.bmax -width 2 -textvar pMax(b$i) -font font_Small -justify right ;#-relief sunken
    pack $f.b0 $f.b1 $f.b2 $f.ba $f.b1p $f.bi $f.bmin $f.bto $f.bmax -side left -pady 1
    
    foreach b {0 1 2 a 1p} {
      $f.w$b configure -width 2 -takefocus 0 -style Pad0.Small.TButton ;# -font $small -pady 0 -padx 1
      $f.b$b configure -width 2 -takefocus 0 -style Pad0.Small.TButton ;# -font $small -pady 0 -padx 1
    }
    foreach widget {wmin wmax bmin bmax} {
      bindFocusColors $f.$widget
    }
    if {$i == "p"} {
      $f.w1p configure -command "set pMin(wp) 1; set pMax(wp) 8"
      $f.wa configure -command "set pMin(wp) 0; set pMax(wp) 8"
      $f.b1p configure -command "set pMin(bp) 1; set pMax(bp) 8"
      $f.ba configure -command "set pMin(bp) 0; set pMax(bp) 8"
    }
    if {$i == "m"} {
      $f.w1p configure -command "set pMin(wm) 1; set pMax(wm) 4"
      $f.wa configure -command "set pMin(wm) 0; set pMax(wm) 4"
      $f.b1p configure -command "set pMin(bm) 1; set pMax(bm) 4"
      $f.ba configure -command "set pMin(bm) 0; set pMax(bm) 4"
    }
  }
  
  # Buttons that manipulate material settings:
  set f $w.mp.material.b1
  pack [ttk::frame $f] -side top -ipady 2
  
  dialogbuttonsmall $f.zero [ list -textvar ::tr(Zero) -command ::search::material::zero] Pad0.Small.TButton
  dialogbuttonsmall $f.reset [ list -textvar ::tr(Any) -command ::search::material::any ] Pad0.Small.TButton
  dialogbuttonsmall $f.current [ list -textvar ::tr(CurrentBoard) -command {
    ::search::material::zero
    set bd [sc_pos board]
    for {set i 0} {$i < 64} {incr i} {
      set piece $::board::letterToPiece([ string index $bd $i ])
      if {$piece != "e"  &&  $piece != "wk"  &&  $piece != "bk"} {
        incr pMin($piece); set pMax($piece) $pMin($piece)
      }
    }
  } ] Pad0.Small.TButton
  
  ttk::menubutton $f.common -textvar ::tr(CommonEndings...) -menu $f.common.m -style pad0.TMenubutton ;# -font $small -relief raised
  menu $f.common.m -font $small
  set m $f.common.m
  $m add command -label [tr EndingPawns] -command {
    ::search::material::zero
    array set pMin {wp 1 bp 1}
    array set pMax {wp 8 bp 8}
  }
  $m add command -label [tr EndingRookVsPawns] -command {
    ::search::material::zero
    array set pMin {wr 1 bp 1}
    array set pMax {wr 1 bp 8}
  }
  $m add command -label [tr EndingRookPawnVsRook] -command {
    ::search::material::zero
    array set pMin {wr 1 br 1 wp 1}
    array set pMax {wr 1 br 1 wp 1}
  }
  $m add command -label [tr EndingRookPawnsVsRook] -command {
    ::search::material::zero
    array set pMin {wr 1 br 1 wp 1}
    array set pMax {wr 1 br 1 wp 8}
  }
  $m add command -label [tr EndingRooks] -command {
    ::search::material::zero
    array set pMin {wr 1 br 1}
    array set pMax {wr 1 br 1 wp 8 bp 8}
    set pMin(wr) 1; set pMax(wr) 1; set pMin(wp) 0; set mPax(wp) 8
    set pMin(br) 1; set pMax(br) 1; set pMin(bp) 0; set mPax(bp) 8
  }
  $m add command -label [tr EndingRooksPassedA] -command {
    ::search::material::zero
    array set pMin {wr 1 br 1 wp 1}
    array set pMax {wr 1 br 1 wp 8 bp 8}
    setPatterns {{wp a ? Yes} {bp a ? No} {bp b ? No}}
    set ignoreColors 1
  }
  $m add command -label [tr EndingRooksDouble] -command {
    ::search::material::zero
    array set pMin {wr 2 br 2}
    array set pMax {wr 2 br 2 wp 8 bp 8}
  }
  $m add command -label [tr EndingBishops] -command {
    ::search::material::zero
    array set pMin {wb 1 bb 1 wm 1 bm 1}
    array set pMax {wb 1 bb 1 wm 1 bm 1 wp 8 bp 8}
  }
  $m add command -label [tr EndingBishopVsKnight] -command {
    ::search::material::zero
    array set pMin {wb 1 bn 1 wm 1 bm 1}
    array set pMax {wb 1 bn 1 wm 1 bm 1 wp 8 bp 8}
  }
  $m add command -label [tr EndingKnights] -command {
    ::search::material::zero
    array set pMin {wn 1 bn 1 wm 1 bm 1}
    array set pMax {wn 1 bn 1 wm 1 bm 1 wp 8 bp 8}
  }
  $m add command -label [tr EndingQueens] -command {
    ::search::material::zero
    array set pMin {wq 1 bq 1}
    array set pMax {wq 1 bq 1 wp 8 bp 8}
  }
  $m add command -label [tr EndingQueenPawnVsQueen] -command {
    ::search::material::zero
    array set pMin {wq 1 bq 1 wp 1}
    array set pMax {wq 1 bq 1 wp 1}
  }
  $m add command -label [tr BishopPairVsKnightPair] -command {
    ::search::material::zero
    array set pMin {wb 2 bn 2 wm 2 bm 2}
    array set pMax {wq 1 bq 1 wr 2 br 2 wb 2 bn 2 wm 2 bm 2 wp 8 bp 8}
  }
  
  pack $f.zero $f.reset $f.current $f.common -side left -pady 5 -padx 10
  #if {! $smDisplayed(Material)} {
  #  pack forget .sm.q .sm.r .sm.b .sm.n .sm.m .sm.p .sm.b1 .sm.mdiff
  #}
  
  set f $w.mp.material.mdiff
  pack [ttk::frame $f] -side top
  ttk::label $f.label -font font_SmallBold -textvar ::tr(MaterialDiff:)
  ttk::entry $f.min -width 3 -textvar minMatDiff -font $small -justify right ;#-relief sunken
  bindFocusColors $f.min
  ttk::label $f.sep -text "-" -font $small
  ttk::entry $f.max -width 3 -textvar maxMatDiff -font $small -justify right ;#-relief sunken
  bindFocusColors $f.max
  ttk::label $f.sep2 -text " " -font $small
  ttk::button $f.any -textvar ::tr(Any) -style Pad0.Small.TButton -command {set minMatDiff -40; set maxMatDiff +40} -width 0
  ttk::button $f.w1 -text " + " -style Pad0.Small.TButton -command {set minMatDiff +1; set maxMatDiff +40}  -width 0
  ttk::button $f.equal -text " = " -style Pad0.Small.TButton -command {set minMatDiff 0; set maxMatDiff 0}  -width 0
  ttk::button $f.b1 -text " - " -style Pad0.Small.TButton -command {set minMatDiff -40; set maxMatDiff -1}  -width 0
  pack $f.label $f.min $f.sep $f.max -side left
  pack $f.sep2 $f.any $f.w1 $f.equal $f.b1 -side left -padx 1 -pady 1
  set f [ttk::frame $w.mp.material.mdiff2]
  pack $f -side top
  ttk::label $f.explan -font $small -text "($::tr(MaterialDiff) = $::tr(White) - $::tr(Black); Q=9 R=5 B=3 N=3 P=1)"
  pack $f.explan -side top
  
  addVerticalRule $w.mp
  
  set f [ttk::frame $w.mp.patt]
  pack $f -side top
  
  #dialogbutton $w.pattl -font font_Bold -textvar ::tr(Patterns:) -command {
  #  if {$smDisplayed(Patterns)} {
  #    set smDisplayed(Patterns) 0
  #    pack forget .sm.patt .sm.b2
  #  } else {
  #    set smDisplayed(Patterns) 1
  #    pack .sm.patt .sm.b2 -after .sm.pattl
  #  }
  #}
  ttk::label $w.mp.patt.title -textvar ::tr(Patterns:) -font font_Bold
  pack $w.mp.patt.title -side top -pady 3
  
  pack [ttk::frame $f.grid] -side top -fill both -expand 1
  for { set i 1 } { $i <= $nPatterns } { incr i } {
    makeBoolMenu $f.grid.b$i pattBool($i)
    set menuPiece1 [ makePieceMenu $f.grid.p$i pattPiece($i) ]
    tk_optionMenu $f.grid.f$i pattFyle($i) "?" a b c d e f g h
    tk_optionMenu $f.grid.r$i pattRank($i) "?" 1 2 3 4 5 6 7 8
    # $f.grid.b$i configure -style pad0.TMenubutton
    $f.grid.b$i configure -indicatoron 0 ;# -width 4
    
    $f.grid.f$i configure -width 1 -indicatoron 0 -pady 0
    $f.grid.r$i configure -width 1 -indicatoron 0 -pady 0
    set column [expr {5 * (($i - 1) / 5)} ]
    set row [expr {($i - 1) % 5} ]
    grid $f.grid.b$i -row $row -column $column -padx 0 -pady 0 ; incr column
    grid $f.grid.p$i -row $row -column $column -padx 0 -pady 0 ; incr column
    grid $f.grid.f$i -row $row -column $column -padx 0 -pady 0 ; incr column
    grid $f.grid.r$i -row $row -column $column -padx 0 -pady 0; incr column
    if {$column == 4  ||  $column == 9} {
      ttk::label $f.grid.sp_$i -text "  "
      grid $f.grid.sp_$i -row $row -column $column
    }
  }
  
  updatePatternImages
  
  ### Buttons that manipulate patterns:
  set f .sm.mp.patt.b2
  ttk::frame $f
  dialogbutton $f.clearPat -textvar ::tr(Clear) -command clearPatterns
  ttk::menubutton $f.common -textvar ::tr(CommonPatterns...) -menu $f.common.m
  menu $f.common.m -font $small
  $f.common.m add command -label [tr PatternWhiteIQP] -command {
    if {$pMin(wp) < 1} { set pMin(wp) 1 }
    setPatterns {{wp d ? Yes} {wp c ? No} {wp e ? No}}
  }
  $f.common.m add command -label [tr PatternWhiteIQPBreakE6] -command {
    if {$pMin(wp) < 1} { set pMin(wp) 1 }
    if {$pMin(bp) < 1} { set pMin(bp) 1 }
    setPatterns {{wp d 5 Yes} {wp c ? No} {wp e ? No} {wp d 4 No} \
          {bp e 6 Yes} {bp c ? No} {bp d ? No}}
  }
  $f.common.m add command -label [tr PatternWhiteIQPBreakC6] -command {
    if {$pMin(wp) < 1} { set pMin(wp) 1 }
    if {$pMin(bp) < 1} { set pMin(bp) 1 }
    setPatterns {{wp d 5 Yes} {wp c ? No} {wp e ? No} {wp d 4 No} \
          {bp c 6 Yes} {bp e ? No} {bp d ? No}}
  }
  $f.common.m add command -label [tr PatternBlackIQP] -command {
    if {$pMin(bp) < 1} { set pMin(bp) 1 }
    setPatterns {{bp d ? Yes} {bp c ? No} {bp e ? No}}
  }
  $f.common.m add command -label [tr PatternWhiteBlackIQP] -command {
    if {$pMin(wp) < 1} { set pMin(wp) 1 }
    if {$pMin(bp) < 1} { set pMin(bp) 1 }
    setPatterns {{wp d ? Yes} {wp c ? No} {wp e ? No} \
          {bp d ? Yes} {bp c ? No} {bp e ? No}}
  }
  $f.common.m add command -label [tr PatternCoupleC3D4] -command {
    set pMin(wp) 4; set pMax(wp) 6
    set pMin(bp) 4; set pMax(bp) 6
    setPatterns {{wp c 3 Yes} {wp d 4 Yes} {wp b ? No} {wp e ? No}
      {bp c ? No} {bp d ? No}}
  }
  $f.common.m add command -label [tr PatternHangingC5D5] -command {
    set pMin(bp) 4; set pMax(bp) 6
    set pMin(wp) 4; set pMax(wp) 6
    setPatterns {{bp c 5 Yes} {bp d 5 Yes} {bp b ? No} {bp e ? No}
      {wp c ? No} {wp d ? No}}
  }
  $f.common.m add command -label [tr PatternMaroczy] -command {
    if {$pMin(bp) < 1} { set pMin(bp) 1 }
    if {$pMax(bp) > 7} { set pMax(bp) 7 }
    if {$pMin(wp) < 2} { set pMin(wp) 2 }
    if {$pMax(wp) > 7} { set pMax(wp) 7 }
    setPatterns {{wp c 4 Yes} {wp e 4 Yes} {bp d ? Yes} {wp d ? No}
      {bp c ? No} {bp d 5 No}}
  }
  $f.common.m add command -label [tr PatternRookSacC3] -command {
    set pMin(br) 2; set pMax(br) 2
    set pMin(wr) 2; set pMax(wr) 2
    setPatterns { {br c 3 Yes} {wp b 2 Yes} }
  }
  $f.common.m add command -label [tr PatternKc1Kg8] -command {
    setPatterns { {wk c 1 Yes} {bk g 8 Yes} }
  }
  $f.common.m add command -label [tr PatternKg1Kc8] -command {
    setPatterns { {wk g 1 Yes} {bk c 8 Yes} }
  }
  $f.common.m add command -label [tr PatternLightFian] -command {
    set pMin(wb) 1; set pMin(bb) 1
    setPatterns { {wb g 2 Yes} {bb b 7 Yes} }
  }
  $f.common.m add command -label [tr PatternDarkFian] -command {
    set pMin(wb) 1; set pMin(bb) 1
    setPatterns { {wb b 2 Yes} {bb g 7 Yes} }
  }
  $f.common.m add command -label [tr PatternFourFian] -command {
    set pMin(wb) 2; set pMin(bb) 2
    setPatterns { {wb b 2 Yes} {wb g 2 Yes} {bb b 7 Yes} {bb g 7 Yes} }
  }
  
  pack $f -side top
  pack $f.clearPat $f.common -side left -pady 5 -padx 10
  #if {! $smDisplayed(Patterns)} {
  #  pack forget $w.patt $w.b2
  #}
  updatePatternImages
  
  addHorizontalRule $w
  
  ### Now the move counter:
  pack [ ttk::frame $w.fmc ] -side top -expand 1 -fill both
  
  set f $w.fmc.bishops
  pack [ttk::frame $f] -side top ;#-expand 1 -fill both
  ttk::label $f.t1 -text "1" -font font_Small
  ttk::label $f.t2 -image wb20
  ttk::label $f.t3 -text "- 1" -font font_Small -font font_Small
  ttk::label $f.t4 -image bb20
  ttk::label $f.t5 -textvar ::tr(squares:) -font font_Small
  ttk::radiobutton $f.same -textvar ::tr(SameColor) -variable oppBishops -value "Same" -style Small.TRadiobutton ;# -padx 5 -pady 4
  ttk::radiobutton $f.opp -textvar ::tr(OppColor) -variable oppBishops -value "Opposite" -style Small.TRadiobutton ;# -padx 5 -pady 4
  ttk::radiobutton $f.either -textvar ::tr(Either) -variable oppBishops -value "Either" -style Small.TRadiobutton ;# -padx 5 -pady 4
  foreach i {t1 t2 t3 t4 t5 same opp either} { pack $f.$i -side left }
  
  set f $w.fmc.move
  pack [ttk::frame $f] -side top -ipady 5 ;# -expand 1 -fill both
  ttk::label $f.fromlab -textvar ::tr(MoveNumberRange:) -font font_Small
  ttk::entry $f.from -width 4 -textvar minMoveNum -justify right -font font_Small
  ttk::label $f.tolab -text "-" -font font_Small
  ttk::entry $f.to -width 4 -textvar maxMoveNum -justify right -font font_Small
  ttk::label $f.space -text "  "
  ttk::label $f.label1 -textvar ::tr(MatchForAtLeast) -font font_Small
  ttk::entry $f.hmoves -width 3 -textvar minHalfMoves -justify right -font font_Small
  ttk::label $f.label2 -textvar ::tr(HalfMoves) -font font_Small
  bindFocusColors $f.from
  bindFocusColors $f.to
  bindFocusColors $f.hmoves
  pack $f.fromlab $f.from $f.tolab $f.to $f.space $f.label1 $f.hmoves $f.label2 -side left
  
  addHorizontalRule $w
  ::search::addFilterOpFrame $w 1
  addHorizontalRule $w
  
  ### Progress bar:
  ttk::frame $w.fprogress
  canvas $w.fprogress.progress -height 20 -width 300 -bg white -relief solid -border 1
  $w.fprogress.progress create rectangle 0 0 0 0 -outline blue -fill blue -tags bar
  $w.fprogress.progress create text 295 10 -anchor e -font font_Regular -tags time -fill black -text "0:00 / 0:00"
  
  ### Last of all, the buttons frame:
  
  set f $w.b3
  pack [ttk::frame $f] -side top -ipady 5 -fill x
  ttk::checkbutton $f.ignorecol -textvar ::tr(IgnoreColors) -variable ignoreColors ;# -padx 4
  
  dialogbutton $f.save -textvar ::tr(Save...) -command ::search::material::save
  
  dialogbutton $f.stop -textvar ::tr(Stop) -command sc_progressBar
  $f.stop configure -state disabled
  
  dialogbutton $f.search -textvar ::tr(Search) -command {
    busyCursor .
    .sm.b3.stop configure -state normal
    grab .sm.b3.stop
    sc_progressBar .sm.fprogress.progress bar 301 21 time
    set str [sc_search material \
        -wq [list $pMin(wq) $pMax(wq)] -bq [list $pMin(bq) $pMax(bq)] \
        -wr [list $pMin(wr) $pMax(wr)] -br [list $pMin(br) $pMax(br)] \
        -wb [list $pMin(wb) $pMax(wb)] -bb [list $pMin(bb) $pMax(bb)] \
        -wn [list $pMin(wn) $pMax(wn)] -bn [list $pMin(bn) $pMax(bn)] \
        -wm [list $pMin(wm) $pMax(wm)] -bm [list $pMin(bm) $pMax(bm)] \
        -wp [list $pMin(wp) $pMax(wp)] -bp [list $pMin(bp) $pMax(bp)] \
        -flip $ignoreColors -filter $::search::filter::operation \
        -range [list $minMoveNum $maxMoveNum] \
        -length $minHalfMoves -bishops $oppBishops \
        -diff [list $minMatDiff $maxMatDiff] \
        -patt "$pattBool(1) $pattPiece(1) $pattFyle(1) $pattRank(1)" \
        -patt "$pattBool(2) $pattPiece(2) $pattFyle(2) $pattRank(2)" \
        -patt "$pattBool(3) $pattPiece(3) $pattFyle(3) $pattRank(3)" \
        -patt "$pattBool(4) $pattPiece(4) $pattFyle(4) $pattRank(4)" \
        -patt "$pattBool(5) $pattPiece(5) $pattFyle(5) $pattRank(5)" \
        -patt "$pattBool(6) $pattPiece(6) $pattFyle(6) $pattRank(6)" \
        -patt "$pattBool(7) $pattPiece(7) $pattFyle(7) $pattRank(7)" \
        -patt "$pattBool(8) $pattPiece(8) $pattFyle(8) $pattRank(8)" \
        -patt "$pattBool(9) $pattPiece(9) $pattFyle(9) $pattRank(9)" \
        -patt "$pattBool(10) $pattPiece(10) $pattFyle(10) $pattRank(10)" ]
    grab release .sm.b3.stop
    .sm.b3.stop configure -state disabled
    unbusyCursor .
    #tk_messageBox -type ok -title $::tr(SearchResults) -message $str
    .sm.status configure -text $str
    set glstart 1
	 ::tree::refresh
    ::windows::gamelist::Refresh
    
    ::search::loadFirstGame
    
    ::windows::stats::Refresh
  }
  
  dialogbutton $f.cancel -textvar ::tr(Close) \
      -command { focus .; destroy .sm }
  
  pack $f.ignorecol $w.b3.save -side left -pady 5 -padx 5
  pack $w.b3.cancel $w.b3.search $w.b3.stop -side right -pady 5 -padx 5
  pack $w.fprogress.progress -side top -pady 2
  pack $w.fprogress -expand 1 -fill both
  
  label $w.status -text "" -width 1 -font font_Small -relief sunken -anchor w
  pack $w.status -side bottom -fill x
  
  # update
  wm resizable $w 0 0
  # standardShortcuts $w
  ::search::Config
  focus $f.search
}

proc ::search::material::save {} {
  global pMin pMax ignoreColors minMoveNum maxMoveNum minHalfMoves
  global pattPiece pattFyle pattRank pattBool oppBishops nPatterns
  
  set ftype { { "Scid SearchOptions files" {".sso"} } }
  set fName [tk_getSaveFile -initialdir [pwd] -filetypes $ftype -title "Create a SearchOptions file"]
  if {$fName == ""} { return }
  
  if {[string compare [file extension $fName] ".sso"] != 0} {
    append fName ".sso"
  }
  
  if {[catch {set searchF [open $fName w]}]} {
    tk_messageBox -title "Error: Unable to open file" -type ok -icon error \
        -message "Unable to create SearchOptions file: $fName"
    return
  }
  puts $searchF "\# SearchOptions File created by Scid [sc_info version]"
  puts $searchF "set searchType Material"
  # First write the material counts:
  foreach i {wq bq wr br wb bb wn bn wp bp} {
    puts $searchF "set pMin($i) $pMin($i)"
    puts $searchF "set pMax($i) $pMax($i)"
  }
  # Now write other numeric values:
  foreach i {
    ignoreColors minMoveNum maxMoveNum minHalfMoves oppBishops
    ::search::filter::operation
  } {
    puts $searchF "set $i [set $i]"
  }
  # Last, write the patterns:
  for {set i 1} {$i <= $nPatterns} {incr i} {
    puts $searchF "set pattPiece($i) $pattPiece($i)"
    puts $searchF "set pattFyle($i) $pattFyle($i)"
    puts $searchF "set pattRank($i) $pattRank($i)"
    puts $searchF "set pattBool($i) $pattBool($i)"
  }
  tk_messageBox -type ok -icon info -title "Search Options saved" \
      -message "Material/pattern search options saved to: $fName"
  close $searchF
}

# ezsmtp.tcl --
#
#	"Easy" SMTP-base mail sending library.  See the ezsmtp.html
#	file for documentation on using this package.
#
# Copyright (c) 1999-2000 by D. J. Hagberg and other parties
#
# See the file "license.txt" for information on usage and redistribution
# of this file, and for a DISCLAIMER OF ALL WARRANTIES.

package provide ezsmtp 1.0.0

namespace eval ::ezsmtp {
    global env tcl_platform
    variable mail

    # Make CVS version ID accessible.
    set mail(cvsid) \
            {$Id: ezsmtp.tcl,v 4.3 2011/02/13 18:12:01 arwagner Exp $}

    # Global variables that may be altered through ezsmtp::config.
    set mail(vars) [list verbose mailhost port from batchsize \
                         logproc strictaddr]
    set mail(verbose) 0                 ;# No logging output
    set mail(mailhost) localhost        ;# Host with smtp daemon
    set mail(port) 25                   ;# port for smtp daemon
    set mail(batchsize) 0               ;# no batching of RCPT TO's.
    set mail(logproc) {}		;# empty means log to stdout.
    set mail(strictaddr) 0		;# should we enforce RFC821 addresses?

    # Try to figure out a reasonable default FROM.
    # Tcl8.1 already has figured out the username for us.
    # Older versions are not so nice-- need to look in the environment
    if {[info exists tcl_platform(user)]} {set mail(from) $tcl_platform(user)}\
    elseif {[info exists env(LOGNAME)]}   {set mail(from) $env(LOGNAME)} \
    elseif {[info exists env(USERNAME)]}  {set mail(from) $env(USERNAME)} \
    elseif {[info exists env(USER)]}      {set mail(from) $env(USER)} \
    else   {set mail(from) {}}
    
    # Trim any leading/trailing spaces and add @ current host name
    set mail(from) [string trim $mail(from)]
    if {[string length $mail(from)] > 0} {
        append mail(from) @ [info hostname]
    }

    # Regular-expression for validating email addresses.
    set mail(hostre) {[A-Za-z]([A-Za-z0-9-]*[A-Za-z0-9])*|\#[0-9]+|}
    append mail(hostre) {\[[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+\]}
    set mail(hostre) "($mail(hostre))(\\.($mail(hostre)))*"
    set mail(strictre) "^\[^\x01-\x20\x7F-\xFF<>@\]+@"
    append mail(strictre) $mail(hostre) {$}
    set mail(!strictre) {^[^@]+|[^@]+@[^@]+$}

    # Default character set/encoding settings
    set mail(tclcharset) ascii
    set mail(mimecharset) us-ascii

    # Package-wide header settings to be sent in the DATA section of the email.
    # Note each header variable is a list -- one element per line.
    set mail(x-mailer) "Tcl ezsmtp Mailer Package"
    if {[llength $mail(cvsid)] > 2} {
        append mail(x-mailer) " (build " [lindex $mail(cvsid) 3] ")"
    }
    set mail(x-mailer:)     [list $mail(x-mailer)]
    set mail(mime-version:) [list "1.0"]
}


#############################################################################
##
## PUBLICALLY-DOCUMENTED PROCS
##
#############################################################################


# ezsmtp::config --
#
#	See documentation for details.
#
# Arguments:
#	args		Options parsed by the procedure.
# Results:
#	See documentation
#
proc ::ezsmtp::config {args} {
    variable mail

    if {[llength $args] == 0} {
        set resl {}
        foreach v $mail(vars) {lappend resl "-$v" [set mail($v)]}
        return $resl
    }

    # Build up a list of valid switches.
    set swl {}
    foreach sw $mail(vars) {lappend swl "-$sw"}

    # If we got a single arg, return its associated variable value
    if {[llength $args] == 1} {
        set v [lindex $args 0]
        if {[lsearch $swl $v] == -1} {
            error "invalid config option, must be one of: $swl"
	}
        return $mail([string trimleft $v -])
    }

    # If we got multiple args, make sure we got an even number.
    set argc [llength $args]
    if {$argc % 2} {
        error "must have an even number of config -option value's."
    }

    # Try each -option/value
    foreach {sw v} $args {
        if {[lsearch $swl $sw] == -1} {
            error "invalid config option, must be one of $swl"
	}

        # Verify numeric & other config values.
        switch -regexp -- $sw {
            {^-(verbose|batchsize)} { 
                set v [expr {int($v)}]
                if {$v < 0} {
                    error "config value for $sw must be a number >= 0"
		}
	    }
            {^-strictaddr$} {
                set v [expr {$v ? 1 : 0}]
	    }
            {^-from$} {
                set v [private_valid_address $v -from]
	    }
            default { }
        }
        set mail([string trimleft $sw -]) $v
    }

    return 1
}


# ezsmtp::send --
#
#	See documentation for details.
#
# Arguments:
#	args		Options parsed by the procedure.
# Results:
#	Throws an error if anything goes wrong.
#
proc ::ezsmtp::send {args} {
    global errorInfo errorCode
    variable mail

    # Set defaults for the current send based on global variables
    foreach v [list mailhost port from batchsize tclcharset mimecharset] {
        set cur($v) [set mail($v)]
    }

    # Start with an empty recipient list and return-receipt disabled
    set cur(rcpt) {}
    set cur(receipt) 0

    # process arguments to smtp::send.
    set validopts [list -subject -from -mailhost -port -channel -body \
            -batchsize]
    set argc [llength $args]
    for {set i 0} {$i < $argc} {incr i} {
        set arg [lindex $args $i]
        switch -regexp -- $arg {
            {^-headers$} {
                incr i; set arg [lindex $args $i]
                if {[llength $arg] % 2} {
                    error "Invalid -headers.  Must be a well-formatted list\
                            of even length with alternating keys/values."
                }
                foreach {k v} $arg { private_add_header cur $k $v }
            }
            {^-(to|cc|bcc|tolist|cclist|bcclist|replyto|replytolist)$} {
                incr i
                set recip [lindex $args $i]
                private_add_recip cur [string trimleft $arg -] $recip
            }
            {^-receipt$} {
                incr i
                private_return_receipt cur [lindex $args $i]
            }
            {^-charset$} {
                incr i
                private_set_charset cur [lindex $args $i]
            }
	    {^-} {
                if {[lsearch $validopts $arg] == -1} {
                    error "Unknown option: $arg.  Must be one of: -headers\
                            -to -cc -bcc -tolist -cclist -bcclist -replyto\
                            -replytolist $validopts"
		}
                incr i
                set cur([string trimleft $arg -]) [lindex $args $i]
            }
            default {
                break
            }
        }
    }

    # Throw an error on any remaining arguments.  Older versions (< 1.0)
    # allowed addresses to be specified after the last arg...
    if {$i < [llength $args]} {
        error "Unknown argument(s): [lrange $args $i [expr\
                {[llength $args]-1}]].  Please read the docs about\
                ezsmtp::send -to/-cc/-bcc/-tolist/-cclist/-bcclist."
    }

    # Make sure we have at least one recipient.
    if {[llength $cur(rcpt)] < 1} {
        error "Missing RECIPIENTs.  Must be: ...send ?options?\
                ?RECIPIENT? ?RECIPIENT...?"
    }

    # Make sure we have a from address and header configured
    set cur(from) [string trim $cur(from)]
    if {![string length $cur(from)]} {
        error "no from address has been specified (length=0)"
    }
    if {![info exists cur(from:)]} {private_add_header cur from $cur(from)}
    set cur(from) [private_valid_address $cur(from) -from]

    # Make sure we have either -channel or -body specified.
    if {[info exists cur(channel)] && [info exists cur(body)]} {
        error "Cannot specify both -channel and -body options."
    } elseif {!([info exists cur(channel)] || [info exists cur(body)])} {
        error "Must specify either -channel or -body option."
    }

    # Open a socket to the SMTP server and send the message, catching any
    # errors to ensure the socket gets closed.  Rethrow error after close.
    set s [socket $cur(mailhost) $cur(port)]
    if {[catch [list private_smtp_begin $s cur] msg]} {
        set tmp_EI $::errorInfo; set tmp_EC $::errorCode
        private_log 9 "errorCode=$tmp_EC errorInfo=$tmp_EI"
        catch [list close $s]
        error $msg $tmp_EI $tmp_EC
    }
    catch [list close $s]
    return $msg
}



#############################################################################
##
## PRIVATE PROCS - SUBJECT TO RADICAL CHANGE ON THE SLIGHTEST WHIM.
##
#############################################################################


# ezsmtp::private_add_header --
#
#	Validate and add a single header to the list of email headers to be 
#	sent before the message.
#
# Arguments:
#	var		Variable name for associative array in the calling 
#			proc containing the specification for this send.
#	key		An RFC822-compliant header name without the trailing
#			colon.  Example: Reply-To
#	value		Value to be sent for the above header name.  Multi-line
#			headers may be specified using newline (\n) separators.
# Results:
#	Throws an error if anything goes wrong.
#
proc ::ezsmtp::private_add_header {var key value} {
    upvar 1 $var cur
    variable mail

    # Force the header name to lower case and ensure RFC compliance.
    set key [string tolower $key]
    if {[regexp "\[\x01-\x20\x7F-\xFF:\]" $key]} {
        error "Invalid header name ($key).  RFC 822 stipulates ASCII\
                Characters excluding CTRL characters, space, and `:'"
    }

    # split value into lines, trimming leading and trailing space.
    set vall {}
    foreach ln [split $value \n] {
        set ln [string trim $ln]
        if {[string length $ln] > 65} {
            private_log 2 "Header $key contains line longer than 65\
                    chars:\n$ln"
        }
        lappend vall $ln
    }
    
    # set in the current send session's array by appending colon to key.
    private_log 6 "Header $key=[join $vall "\n\t"]"
    set cur([set key]:) $vall
}


# ezsmtp::private_set_charset --
#
#	Validate and set the Tcl socket encoding and default MIME charset 
#	for this send.
#
# Arguments:
#	var		Variable name for associative array in the calling 
#			proc containing the specification for this send.
#	value		A Tcl list with either 1 or 2 elements, per the
#			docs for ezsmtp::send -charset
# Results:
#	Throws an error if anything goes wrong.
#
proc ::ezsmtp::private_set_charset {var value} {
    upvar 1 $var cur
    global tcl_version

    if {$tcl_version < 8.1} {
        error "Cannot specify -charset running in Tcl versions < 8.1"
    }

    if {[llength $value] == 1} {
        set cstcl [string tolower [lindex $value 0]]
        if {[string compare $cstcl ascii] == 0} {
            set csmime us-ascii
	} else {
            set csmime $cstcl
	}
    } elseif {[llength $value] == 2} {
        set cstcl [string tolower [lindex $value 0]]
        set csmime [string tolower [lindex $value 1]]
    } else {
        error "-charset value must be a Tcl list with either one or two\
                elements"
    }
    if {[lsearch -exact [encoding names] $cstcl] == -1} {
        error "charset $cstcl is not a valid Tcl encoding"
    }
    set cur(mimecharset) $csmime
    set cur(tclcharset) $cstcl
}


# ezsmtp::private_add_recip --
#
#	Add a single or list of recipients/respondants as either `To:', 
#	`Cc:', Bcc, or `Reply-To:' addresses.
#
# Arguments:
#	var		Variable name for associative array in the calling 
#			proc containing the specification for this send.
#	type		One of to, cc, bcc, replyto, tolist, cclist, bcclist,
#			or replytolist.
#	value		If the `type' specified is one of tolist, cclist, 
#			bcclist, or replytolist this must be a well-formed Tcl
#			list of addresses.  If the `type' specified is one of
#			to, cc, bcc, or replyto this must be a single email 
#			address to add.
# Results:
#	Throws an error if anything goes wrong.
#
proc ::ezsmtp::private_add_recip {var type value} {
    upvar 1 $var cur
    variable mail
    set rcpt_added 0
    set is_replyto 0
    set is_bcc 0

    # decide whether "value" is a list or a single-element address 
    # based on whether the type ends in "list".  If it ends in "list", 
    # strip that off the end.  If no recipients, return immediately.
    if {[string match *list $type]} {
        set reciplist $value
        regsub {list$} $type {} type
    } else {
        set reciplist [list $value]
    }
    if {[llength $reciplist] < 1} {
        return $rcpt_added
    }

    # At this point $type will be "bcc", "to", "cc", or "replyto".
    # Determine which header variable we will be affecting and make
    # sure it exists, skipping bcc.  "replyto" should be "reply-to" in
    # the headers, so we switch it here.
    if {[string compare $type bcc] == 0} {
        set is_bcc 1
    } elseif {[string compare $type replyto] == 0} {
        set is_replyto 1
        set type reply-to
    }
    if {!$is_bcc} {
        set headvar "cur([set type]:)"
        if {[info exists $headvar]} {
            set curlist [set $headvar]
        } else {
            set curlist {}
        }

        # If current stuff in header and we need to add more to the header,
        # make sure the last element ends with a comma (,).
        if {([llength $curlist] > 0) && ([llength $reciplist] > 0)} {
            set idxend [expr {[llength $curlist]-1}]
            set lastelem [lindex $curlist $idxend]
            append lastelem ","
            set curlist [lreplace $curlist $idxend $idxend $lastelem]
        }
    }

    # Loop through all the addresses passed to this proc
    foreach addr $reciplist {
        set addr [string trim $addr]
        if {![string length $addr]} {
            private_log 1 "WARNING: empty address ignored"
            continue
        }

        # Add the address to `To:', `Cc:', and `Reply-To:' headers verbatim.
        if {!$is_bcc} { lappend curlist "$addr," }

        # Do fussy-validation on the recipient address before adding to rcpt's
        set addr [private_valid_address $addr -$type]

        # Add all but Reply-To addresses to the recipient list
        if {!$is_replyto} {
            lappend cur(rcpt) $addr
	}

        incr rcpt_added
    }

    # Nuke any trailing comma in To:/Cc:/Reply-To: header var's, 
    # then and set header var.
    if {!$is_bcc} {
        if {[llength $curlist] > 0} {
            set idxend [expr {[llength $curlist]-1}]
            set lastelem [string trimright [lindex $curlist $idxend] ,]
            set curlist [lreplace $curlist $idxend $idxend $lastelem]
        }
        set $headvar $curlist
    }

    # Return number of addresses added
    set rcpt_added
}


# ezsmtp::private_return_receipt --
#
#	Sets the return-receipt behavior of this send.  See the docs
#	for ezsmtp::send -receipt to describe the arglist argument.
#
# Arguments:
#	var		Variable name for associative array in the calling 
#			proc containing the specification for this send.
#	arglist		May be either a single boolean element or a key/value
#			list of return-receipt settings, per the docs.
# Results:
#	Throws an error if anything goes wrong.
#
proc ::ezsmtp::private_return_receipt {var arglist} {
    upvar 1 $var cur

    # List of valid keys for -receipt list options
    set validopts [list delivery delay nsmail returnfull envelopeid]

    # Set receipt off and array values to default settings.
    array set cur [list receipt 0 receipt,delivery 1 receipt,delay 1 \
            receipt,nsmail 0 receipt,returnfull 0 receipt,envelopeid {}]

    # Single-argument to -receipt should be a boolean on/off for defaults.
    if {[llength $arglist] == 1} {
        set cur(receipt) [expr {[lindex $arglist 0] ? 1 : 0}]
        return
    }

    # Otherwise, we have a list of arguments that must be validated & set.
    # First, make sure the argument list has a valid length...
    if {([llength $arglist] < 2) || ([llength $arglist] % 2)} {
        error "ERROR: keyvaluelist passed to ezsmtp::send -receipt must have\
                an even number of elements and a length of at least 2 elements"
    }

    # And validate each setting, setting appropriate current-send variable.
    foreach {k v} $arglist {
        switch -exact -- $k {
            envelopeid {
                if {[string length [set v [private_xtext $v]]] > 38} {
                    error "ERROR: encoded envelope ID ($v) is too long.  Must\
                            be < 38 chars encoded."
		}
                set cur(receipt,$k) $v
	    }
            default {
                if {[lsearch -exact $validopts $k] == -1} {
                    error "ERROR: bad setting for -receipt key.  Must be 1 of:\
                             [join $validopts { }]"
		}
                set cur(receipt,$k) [expr {$v ? 1 : 0}]
	    }
	}
    }
    set cur(receipt) 1
}


# ezsmtp::private_smtp_begin --
#
#	Start the send by trying EHLO/HELO greeting followed by one or more
#	SMTP conversations, optionally batching some number of recipients.
#
# Arguments:
#	s		Open socket to SMTP server.
#	var		Variable name for associative array in the calling 
#			proc containing the specification for this send.
# Results:
#	Throws an error if anything goes wrong.
#
proc ::ezsmtp::private_smtp_begin {s var} {
    upvar 1 $var cur
    global tcl_version
    variable mail

    # Set up the socket for line-buffering/translation.  Only set encoding
    # if we're running in Tcl 8.1 or newer that supports encodings.
    if {$tcl_version < 8.1} {
        fconfigure $s -buffering line -blocking 1 -eofchar {} \
                -translation {auto crlf}
    } else {
        fconfigure $s -buffering line -blocking 1 -eofchar {} \
                -translation {auto crlf} -encoding $cur(tclcharset)
    }
    private_log 2 "Opened connection to SMTP server $cur(mailhost)"
    private_read_all $s 3 220

    # Try to set up for ESMTP conversation
    set cur(esmtp) 0
    private_send_line $s 3 "EHLO [info hostname]"
    set buf [private_read_all $s 3 {[0-9][0-9][0-9]}]
    if {[string match "250*" $buf]} {
        set cur(esmtp) 1
        set buf [split $buf \n]
        foreach ln [lrange $buf 1 [expr {[llength $buf]-1}]] {
            if {[regexp -nocase \
		    "^250\[ -\](\[A-Z0-9\]\[A-Z0-9-\]*) (\[^\x01-\x20\x7F\])"\
                    $ln nil ehlo_keyword ehlo_param]} {
                set ehlo_keyword [string tolower $ehlo_keyword]
                set ehlo_param [string tolower $ehlo_param]
                set cur(esmtp,$ehlo_keyword) $ehlo_param
	    } elseif {[regexp -nocase "^250\[ -\](\[A-Z0-9\]\[A-Z0-9-\]*)" \
                    $ln nil ehlo_keyword]} {
                set ehlo_keyword [string tolower $ehlo_keyword]
                set cur(esmtp,$ehlo_keyword) 1
	    }
	}
    } else {
        # Otherwise, set up for normal RFC-821 SMTP conversation.
        private_send_line $s 3 "HELO [info hostname]"
        private_read_all $s 3 250
    }

    # If user requested return-receipt but not supported by server, bail.
    if {$cur(receipt) && ![info exists cur(esmtp,dsn)]} {
        error "ERROR: Server does not support DSN for return receipt"
    }

    # If user requested 8bit charset but not supported by server, bail.
    if {([string compare $cur(tclcharset) ascii] != 0) && \
            ![info exists cur(esmtp,8bitmime)]} {
        error "Server does not support 8-bit characters"
    }

    # If we are not doing any batching, do a straightforward send
    set sentcnt 0
    set rcptlen [llength $cur(rcpt)]
    if {($cur(batchsize) <= 0) || ($rcptlen <= $cur(batchsize))} {
        private_log 1 "Starting mail send to [join $cur(rcpt) {, }]"
        private_smtp_batch $s cur 0 [expr {$rcptlen-1}]
        incr sentcnt $rcptlen
        private_log 1 "Mail sent OK"
        return $sentcnt
    }

    # If we are batching sends and reading message body from a channel,
    # find out what position we are in the channel if we are sending to
    # more addr's than our batch size, to allow multiple send batches.
    if {[info exists cur(channel)] && [info exists cur(batchsize)]} {
        set cur(channelpos) [tell $cur(channel)]
        if {($cur(channelpos) == -1) && ($cur(batchsize) > 0)} {
            error "Channel must be seek-able when a batch size has been\
                    specified."
	}
    }

    # Loop through the batches of recipients
    set i 0
    while {$i < $rcptlen} {
        set e [expr {$i+$cur(batchsize)-1}]
        if {$e >= $rcptlen} {
            set e [expr {$rcptlen-1}] 
        }
        private_log 1 "Starting mail send for recipients $i to $e:\n \
                [join [lrange $cur(rcpt) $i $e] "\n  "]"
        private_smtp_batch $s cur $i $e
        incr sentcnt [expr {$e-$i+1}]
        private_log 1 "Mail sent OK"

        # If we need to, send server a reset and rewind the channel position.
        if {($e < ($rcptlen-1)) && [info exists cur(channelpos)]} {
            seek $cur(channelpos)
        }

        set i [expr {$e + 1}]
    }

    # Return the count of unique recipients
    set sentcnt
}


# ezsmtp::private_smtp_batch --
#
#	Implement the SMTP conversation necessary to send the message
#	to a batch of recipients.  This proc works off a subset of the
#	cur(rcpt) array of recipient email addresses specified by the
#	rcptstart and rcptend arguments.
#
# Arguments:
#	s		Open socket to SMTP server.
#	var		Variable name for associative array in the calling 
#			proc containing the specification for this send.
#	rcptstart	index in the cur(rcpt) array to start
#	rcptend		index in the cur(rcpt) array to end
# Results:
#	Throws an error if anything goes wrong.
#
proc ::ezsmtp::private_smtp_batch {s var rcptstart rcptend} {
    upvar 1 $var cur
    variable mail

    # Reset the SMTP server's state to begin a new conversation
    private_send_line $s 3 "RSET"
    private_read_all $s 3

    # Try to build a valid "MAIL FROM:" command, including return-receipt info
    set cmd "MAIL FROM:<$cur(from)>"
    if {$cur(receipt)} {
        if {$cur(receipt,returnfull)} {append cmd " RET=FULL"} \
        else {append cmd " RET=HDRS"}
        if {[string length $cur(receipt,envelopeid)]} {
            append cmd " ENVID=" $cur(receipt,envelopeid)
	}
    }
    private_send_line $s 3 $cmd
    private_read_all $s 3

    # Build up our `NOTIFY=' extension if necessary
    set notifystr {}
    if {$cur(receipt)} {
        set notifyl [list FAILURE]
        if {$cur(receipt,delivery)} { lappend notifyl SUCCESS }
        if {$cur(receipt,delay)}    { lappend notifyl DELAY }
        append notifystr " NOTIFY=" [join $notifyl ,]
    }

    # Each recipent may be specified as "emailaddr" or "Full Name <emailaddr>"
    set rcptlist [lrange $cur(rcpt) $rcptstart $rcptend]
    foreach r $rcptlist {
        if {$cur(receipt)} {
            set orcptstr " ORCPT=rfc822;[private_xtext $r]"
            private_send_line $s 3 "RCPT TO:<$r>${notifystr}${orcptstr}"
	} else {
            private_send_line $s 3 "RCPT TO:<$r>"
	}
        private_read_all $s 3 {25[01]}
    }

    private_send_line $s 3 "DATA"
    private_read_all $s 3 354

    # Send all the mail headers followed by a blank line
    private_send_mail_headers $s cur

    private_log 4 ">>\[message body\]"
    # If we were given a -body in the send command, split into lines and send,
    # ensuring that we strip any stray CR's.
    if {[info exists cur(body)]} {
        set linenum 0
        regsub -all "\r" $cur(body) {} cur(body)
        foreach line [split $cur(body) \n] {
            incr linenum

            # Force breaks at 998 chars to comply with RFC 821 limit.
            while {[string length $line] > 998} {
                private_log 1 "WARNING: >998 chars split at line $linenum"
                set first998 [string range $line 0 997]
                set line [string range 998 [expr \
                        {[string length $line]-1}]]
                if {[string match ".*" $first998]} {
                    set first998 ".$first998"
                }
                private_send_line $s 5 $first998
	    }

            # Send remainder <= 998 chars.
            if {[string match ".*" $line]} {          ;# Double up leading '.'
                set line ".$line"
            }
            private_send_line $s 5 $line
	}
    }

    # If we were given a -channel in the send command, read from the channel
    # one line at a time and send.  Assuming channel configured to strip CRs.
    if {[info exists cur(channel)]} {
        set linenum 0
        while {[gets $cur(channel) line] != -1} {
            incr linenum

            # Force breaks at 998 chars to comply with RFC 821 limit.
            while {[string length $line] > 998} {
                private_log 1 "WARNING: >998 chars split at line $linenum"
                set first998 [string range $line 0 997]
                set line [string range 998 [expr \
                        {[string length $line]-1}]]
                if {[string match ".*" $first998]} {
                    set first998 ".$first998"
                }
                private_send_line $s 5 $first998
	    }

            # Send remainder <= 998 chars.
            if {[string match ".*" $line]} {          ;# Double up leading '.'
                set line ".$line"
            }
            private_send_line $s 5 $line
        }
    }

    # Finally, send the message terminator and read any result.
    private_send_line $s 4 "."
    private_read_all $s 3
}


# ezsmtp::private_send_mail_headers --
#
#	Output all the available email headers at the beginning of the 
#	message, followed by a single empty line.
#
# Arguments:
#	s		Open socket to SMTP server.
#	var		Variable name for associative array in the calling 
#			proc containing the specification for this send.
# Results:
#	Throws an error if anything goes wrong.
#
proc ::ezsmtp::private_send_mail_headers {s var} {
    upvar 1 $var cur
    variable mail

    set doNotSend [list date: subject: from: bcc: content-type: \
            content-transfer-encoding:]

    # If user didn't force a custom date, use the current time in GMT.
    set frm "%a, %d %b %Y %H:%M:%S +0000"
    if {[info exists cur(date:)]} {
        private_send_header $s date: $cur(date:)
    } else {
        private_send_line $s 4 "Date: [clock format [clock seconds] -gmt 1 \
                -format $frm]"
    }

    # If user didn't specify a custom "From:" header, use the one specified
    # by -from parameter or system default.
    if {[info exists cur(from:)]} {
        private_send_header $s from: $cur(from:)
    } else {
        private_send_line $s 4 "From: $cur(from)"
    }

    # Send -subject parameter if specified, or from Subject: custom header.
    if {[info exists cur(subject)]} {
        private_send_line $s 4 "Subject: $cur(subject)"
    } elseif {[info exists cur(subject:)]} {
        private_send_header $s subject: $cur(subject:)
    }

    # Send the required MIME content-type and content-transfer-encoding.
    if {[info exists cur(content-type:)]} {
        private_send_header $s content-type: $cur(content-type:)
    } else {
        private_send_line $s 4 "Content-Type: text/plain;\
                charset=$cur(mimecharset)"
    }
    if {[info exists cur(content-transfer-encoding:)]} {
        private_send_header $s content-transfer-encoding: \
                $cur(content-transfer-encoding:)
    } elseif {[string compare $cur(tclcharset) ascii] == 0} {
        private_send_line $s 4 "Content-Transfer-Encoding: 7bit"
    } else {
        private_send_line $s 4 "Content-Transfer-Encoding: 8bit"
    }

    # Send the custom headers for this current session.
    foreach h [array names cur *:] {
        if {[lsearch $doNotSend $h] != -1} continue
        private_send_header $s $h $cur($h)
    }

    # Send our global headers IFF they are not excluded or custom to 
    # the current sending session.
    foreach h [array names mail *:] {
        if {[lsearch $doNotSend $h] != -1} continue
        if {[info exists cur($h)]} continue
        private_send_header $s $h $mail($h)
    }

    # Check to see if the user requested netscape-style return-receipt on open
    if {$cur(receipt)} {
        if {$cur(receipt,nsmail) && \
                ![info exists cur(disposition-notification-to:)]} {
            private_send_line $s 4 "Disposition-Notification-To: $cur(from)"
	}
    }

    private_send_line $s 4 ""
}


# ezsmtp::private_send_header --
#
#	Sends a header (possibly multi-line) to the SMTP server socket, 
#	formatting the header in proper-text and indenting subsequent
#	lines with a single tab.
#
# Arguments:
#	s		Open socket to SMTP server.
#	name		Name of the header being sent w/trailing colon,
#			like reply-to:
#	valuel		value of header as a list -- one line per list
#			element.
# Results:
#	Header is formatted and output.  Returns number of lines output.
#
proc ::ezsmtp::private_send_header {s name valuel} {
    set lines 0
    set first [lindex $valuel 0]
    set remain [lrange $valuel 1 [expr {[llength $valuel]-1}]]
    private_send_line $s 4 "[private_proper_header $name] $first"
    incr lines
    foreach ln $remain {
        private_send_line $s 4 "\t$ln"
        incr lines
    }
    set lines
}
       

# ezsmtp::private_send_line --
#
#	Sends a line of text to the SMTP server socket, logging at the
#	specified level.
#
# Arguments:
#	s		Open socket to SMTP server.
#	level		Log level between 0 and 9, where 0 is always,
#			1 is whenever -verbose is on, and 9 is the highest
#			debug level available.  Suggested: 4
#	line		Line of text to be sent to the SMTP server, minus
#			any trailing newline or carriage-return characters.
# Results:
#	Closes socket $s and un-sets buffer and status variables.
#
proc ::ezsmtp::private_send_line {s level line} {
    private_log $level "S: $line"
    puts $s $line
    flush $s
}


# ezsmtp::private_read_all --
#
#	Read all available data from the SMTP server socket, handling
#	multi-line responses if necessary, and checking  for a response 
#	code.
#
# Arguments:
#	s		Open socket to SMTP server.
#	level		log level for data read from the socket.
#	resp		glob-style expression to match against the start of
#			data received from the SMTP server.  If left un-
#			specified, the standard 250 (OK) is expected.
# Results:
#	Throws an error if anything goes wrong or an unexpected response 
#	is seen.  Otherwise, returns the data read from the server, with
#	multi-line responses separated by newline (\n) characters.
#
proc ::ezsmtp::private_read_all {s level {resp 250}} {
    variable mail

    # Read response from SMTP server.  Single line or last line of multi-line
    # response will have three digits followed by a space.  Other multi-line
    # responses will have three digits followed by a dash (RFC 821 appendix E).
    # Anything else, including eof, is an error.
    set buf {}
    while {1} {
        if {[eof $s]} {
            error "ERROR: unexpected EOF waiting for output from SMTP server"
        }
        set ln [gets $s]
        append buf $ln \n
        private_log $level "R: $ln"
        if {[string match {[0-9][0-9][0-9] *} $ln]} {
            break
	}
        if {![string match {[0-9][0-9][0-9]-*} $ln]} {
            error "ERROR: unexpected response from SMTP server.  Expected\
                    three digits followed by either a space or a dash (-)"
	}
    }

    # Validate the start of the response
    if {![string match "$resp*" $buf]} {
        error "ERROR: bad response `$buf', wanted: `$resp'"
    }

    # and return the contents of all lines read, separated by newlines.
    set buf
}


# ezsmtp::private_proper_header --
#
#	Proper-cases an RFC 822-style email header name.
#
# Arguments:
#	h		header name like reply-to
# Results:
#	Returns the header name capitalized as most email users 
#	expect: the first letter of each dash-separated word is 
#	capitalized and the remainder is lower-cased, thus the
#	result from above would be Reply-To
#
proc ::ezsmtp::private_proper_header {h} {
    set h [string tolower $h]
    set resl {}

    # RFC 1521 clearly specifies the exact case, verbatim, for mime-version.
    if {[regexp -nocase mime-version: $h]} {
        return "MIME-Version:"
    }

    # For other headers, we capitalize the leading letter of each dash-
    # separated word.
    foreach elem [split $h -] {
        set str [string toupper [string index $elem 0]]
        append str [string range $elem 1 [expr {[string length $elem]-1}]]
        lappend resl $str
    }
    join $resl -
}


# ezsmtp::private_xtext --
#
#	Encode a string as an RFC 1891-compliant xtext value.  Characters 
#	outside the range ! (33) to ~ (126) or the plus (+ (43)) or 
#	equals (= (61)) characters are coded as the plus sign (+) followed
#	by two upper-case hexadecimal digits representing the character code.
#
# Arguments:
#	str		string to be encoded
# Results:
#	xtext-encoded value of str, per the above spec.
#
proc ::ezsmtp::private_xtext {str} {
    set result {}
    foreach c [split $str {}] {
        scan $c %c x
        if {($x < 33) || ($x > 126) || ($x == 43) || ($x == 61)} {
            append result + [format %02X $x]
        } else {
            append result $c
	}
    }
    set result
}


# ezsmtp::private_valid_address --
#
#	Validate and return the essential part of an email address,
#	using the contents of <addr> inside a `Full Name <addr>' spec.
#
# Arguments:
#	addrspec	address spec like `user@a.com' or
#			`Full Name <user@b.com>'
#	setting		setting to be output in an error message, like
#			-from, -to, ...
# Results:
#	stripped-down email address, if valid.  If invalid, an error is 
#	thrown.
#
proc ::ezsmtp::private_valid_address {addrspec setting} {
    variable mail

    set addrspec [string trim $addrspec]
    if {[regexp {<([^>]*)>$} $addrspec nil inneraddr]} {
        set addrspec [string trim $inneraddr]
    }
    if {$mail(strictaddr)} {set re $mail(strictre)} \
    else {set re $mail(!strictre)}
    if {![regexp $re $addrspec]} {
        error "ERROR: $setting address specified ($addrspec) is not compliant.\
                Must be in a form like `user@a.domain' or `Full Name\
                <user@b.domain>'"
    }
    set addrspec
}


# ezsmtp::private_log --
#
#	Log a progress/debug message to stdout or to a user-customized 
#	procedure.
#
# Arguments:
#	level		numeric level at which to log, usu. between 0 (always)
#			and 9 (low-level full debug).
#	msg		message text to log
# Results:
#	xtext-encoded value of str, per the above spec.
#
proc ::ezsmtp::private_log {level msg} {
    variable mail

    if {$mail(verbose) >= $level} {
        if {[string length $mail(logproc)]} {
            uplevel #0 $mail(logproc) $msg
	} else {
            puts stdout "$msg"
            flush stdout
	}
    }
}
###
### tools/email.tcl: part of Scid.
### Copyright (C) 1999-2003  Shane Hudson.
###

# Email manager window: closed by default
set emailWin 0


# ::tools::email
#
#   Opens the email chess manager window, for sending moves to opponents.
#
proc ::tools::email {} {
  global emailWin emailData
  set w .emailWin
  if {[winfo exists $w]} {
    destroy .emailWin
    set emailWin 0
    return
  }
  set emailWin 1
  toplevel $w
  wm title $w "Scid: Email Manager"
  wm minsize $w 25 10

  bind $w <Destroy> { set .emailWin 0 }
  bind $w <F1> { helpWindow Email }

  frame $w.f
  frame $w.b
  pack $w.f -side left -fill y
  addVerticalRule $w
  pack $w.b -side right -fill y

  set f $w.f
  label $f.title -text "Opponent list" -font font_Bold
  listbox $f.list -height 16 -width 40 -exportselection false \
    -selectmode browse -selectbackground lightBlue -font font_Fixed \
    -yscrollcommand "$f.scroll set" -background white -setgrid 1
  scrollbar $f.scroll -command "$w.list yview" -takefocus 0
  pack $f -side left -expand true -fill both
  pack $f.title -side top
  pack $f.scroll -side right -fill y
  pack $f.list -side right -expand true -fill both

  bind $f.list <ButtonRelease-1> ::tools::email::refreshButtons
  bind $f.list <Enter> ::tools::email::refreshButtons
  bind $f.list <Key-Up> ::tools::email::refreshButtons
  bind $f.list <Key-Down> ::tools::email::refreshButtons

  bind $f.list <Key-a> {.emailWin.b.add invoke}
  bind $f.list <Key-e> {.emailWin.b.edit invoke}
  bind $f.list <Key-d> {.emailWin.b.delete invoke}
  bind $f.list <Key-l> {.emailWin.b.load invoke}
  bind $f.list <Key-s> {.emailWin.b.send invoke}
  bind $f.list <Key-t> {.emailWin.b.time.m post [winfo pointerx .] [winfo pointery .]}

  set b .emailWin.b

  button $b.add -text "Add..." -underline 0 -command {
    set idx [llength $emailData]
    lappend emailData [list "" "" "" "" ""]
    modifyEmailDetails $idx
    ::tools::email::refresh
  }

  button $b.edit -text "Edit..." -underline 0 -command ::tools::email::EditButton
  button $b.delete -text "Delete..." -underline 0 -command ::tools::email::DeleteButton
  button $b.load -text "Load game" -underline 0 -command ::tools::email::LoadButton
  button $b.send -text "Send email..." -underline 0 -command ::tools::email::SendButton
  menubutton $b.time -text "Time" -underline 0 -indicatoron 1 \
    -menu $b.time.m -relief raised
  menu $b.time.m
  $b.time.m add command -label "Received today" -underline 0 \
    -command {::tools::email::TimesButton r}
  $b.time.m add command -label "Sent today" -underline 0 \
    -command {::tools::email::TimesButton s}
  $b.time.m add command -label "Edit..." -underline 0 \
    -command {::tools::email::TimesButton e}

  button $b.config -text "Settings..." -command ::tools::email::config
  button $b.help -text $::tr(Help) -command { helpWindow Email }
  button $b.close -text $::tr(Close) -command { destroy .emailWin }

  foreach i {add edit delete load send time config help close} {
    $b.$i configure -font font_Small
  }
  pack $b.add $b.edit $b.delete $b.load $b.send $b.time \
    -side top -pady 1 -padx 5 -fill x
  pack $b.close $b.help $b.config -side bottom -pady 1 -padx 5  -fill x

  bind $w <Destroy> { set emailWin 0 }
  set emailData [::tools::email::readOpponentFile]
  focus $w.f.list
  ::tools::email::refresh
}

proc ::tools::email::config {} {
  global email
  set w .emailConfig
  toplevel $w
  wm title $w "Scid"
  label $w.use -text "Send email using:" -font font_Bold
  frame $w.smtp
  radiobutton $w.smtp.b -text "SMTP server:" -variable email(smtp) -value 1
  entry $w.smtp.s -width 30 -textvar email(server) -bg white
  frame $w.sm
  radiobutton $w.sm.b -text "sendmail process:" -variable email(smtp) -value 0
  entry $w.sm.s -width 30 -textvar email(smproc) -bg white
  pack $w.use -side top
  pack $w.smtp $w.sm -side top -fill x
  pack $w.smtp.s $w.smtp.b -side right
  pack $w.sm.s $w.sm.b -side right
  addHorizontalRule $w
  label $w.addr -text "Email address fields:" -font font_Bold
  frame $w.from
  label $w.from.lab -text "From:"
  entry $w.from.e -textvar email(from) -width 30 -bg white
  frame $w.bcc
  label $w.bcc.lab -text "Bcc:"
  entry $w.bcc.e -textvar email(bcc) -width 30 -bg white
  pack $w.addr $w.from $w.bcc -side top -fill x
  pack $w.from.e $w.from.lab -side right
  pack $w.bcc.e $w.bcc.lab -side right
  addHorizontalRule $w
  pack [frame $w.b] -side top -fill x
  button $w.b.ok -text [tr OptionsSave] -command {
    .menu.options invoke [tr OptionsSave]
    catch {grab release .emailConfig}
    destroy .emailConfig
  }
  button $w.b.cancel -text $::tr(Cancel) \
    -command "catch {grab release $w}; destroy $w"
  pack $w.b.cancel $w.b.ok -side right -padx 2 -pady 2
  wm resizable $w 1 0
  catch {grab $w}
}

proc ::tools::email::EditButton {} {
  global emailData
  set sel [.emailWin.f.list curselection]
  if {[llength $sel] == 1} {
    set idx [lindex $sel 0]
    if {[llength $emailData] > $idx} {
      modifyEmailDetails $idx
    }
  }
  ::tools::email::refresh
}

proc ::tools::email::DeleteButton {} {
  global emailData
  set sel [.emailWin.f.list curselection]
  if {[llength $sel] != 1} { return }
  set idx [lindex $sel 0]
  if {[llength $emailData] <= $idx} { return }
  set confirm [tk_messageBox -icon question -type yesno -default yes \
                 -parent .emailWin -title "Really delete opponent?" \
                 -message "Do you really want to delete this opponent?"]
  if {$confirm == "yes"} {
      set emailData [lreplace $emailData $idx $idx]
    ::tools::email::writeOpponentFile $emailData
    ::tools::email::refresh
  }
}

proc ::tools::email::LoadButton {} {
  global emailData
  set sel [.emailWin.f.list curselection]
  if {[llength $sel] != 1} { return }
  set idx [lindex $sel 0]
  if {[llength $emailData] <= $idx} { return }
  set details [lindex $emailData $idx]
  if {[llength [lindex $details 3]] > 0} {
    if {[catch {::game::Load [lindex [lindex $details 3] 0]} result]} {
      tk_messageBox -type ok -icon warning -title "Scid" -message $result
    } else {
      sc_move end
    }
  }
}

proc ::tools::email::SendButton {} {
  global emailData
  set sel [.emailWin.f.list curselection]
  if {[llength $sel] != 1} { return }
  set idx [lindex $sel 0]
  if {[llength $emailData] <= $idx} { return }
  set details [lindex $emailData $idx]
  emailMessageEditor $idx [lindex $details 0] [lindex $details 1] \
    [lindex $details 2] [lindex $details 3] [lindex $details 4]
}

set emailTimesIdx 0

proc ::tools::email::TimesButton {type} {
  global emailData emailTimesIdx
  set sel [.emailWin.f.list curselection]
  if {[llength $sel] != 1} { return }
  set idx [lindex $sel 0]
  if {[llength $emailData] <= $idx} { return }
  set details [lindex $emailData $idx]
  while {[llength $details] < 6} { lappend details {} }
  set timeList [lindex $details 5]
  set last [lindex $timeList end]

  if {$type == "r"  || $type == "s"} {
    ::tools::email::addSentReceived $idx $type
    return
  }

  set emailTimesIdx $idx
  set w .emailTimesWin
  if {[winfo exists $w]} { return }
  toplevel $w
  wm title $w "Scid: Email Times"
  label $w.title -text "Email Times for [lindex $details 0]"
  frame $w.t
  text $w.t.text -height 15 -width 30 -font font_Fixed -setgrid 1 \
    -yscrollcommand "$w.t.ybar set" -bg white -fg black
  scrollbar $w.t.ybar -command "$w.t.text yview"
  frame $w.b
  button $w.b.ok -text "OK" -command {
    set details [lindex $emailData $emailTimesIdx]
    set timeList [split [string trim [.emailTimesWin.t.text get 1.0 end]] "\n"]
    set details [lreplace $details 5 5 $timeList]
    set emailData [lreplace $emailData $emailTimesIdx $emailTimesIdx $details]
    ::tools::email::writeOpponentFile $emailData
    grab release .emailTimesWin
    ::tools::email::refresh 0
    catch {focus .emailWin}
    destroy .emailTimesWin
  }
  button $w.b.cancel -text $::tr(Cancel) \
    -command "grab release $w; catch {focus .emailWin}; destroy $w"
  pack $w.title -side top -fill x
  pack $w.t -side top -fill both
  pack $w.t.ybar -side right -fill y
  pack $w.t.text -side left -fill both -expand yes
  pack $w.b -side bottom -fill x
  pack $w.b.cancel $w.b.ok -side right -padx 2 -pady 2
  foreach i $timeList {
    $w.t.text insert end "$i\n"
  }
  grab $w
}

proc ::tools::email::addSentReceived {idx type} {
  global emailData
  if {[llength $emailData] <= $idx} { return }
  set details [lindex $emailData $idx]
  while {[llength $details] < 6} { lappend details {} }
  set timeList [lindex $details 5]
  set last [lindex $timeList end]

  set new ""
  if {$type == "r"} { append new "Received " } else { append new "Sent     " }

  set oppGList [lindex $details 3]
  if {[llength $oppGList] > 0} {
    set oppGNum [lindex $oppGList 0]
    sc_game push
    set mnum "     "
    if {[catch {::game::Load $oppGNum}]} {
    } else {
      sc_move end
      set m [llength [split [sc_game moves coord list]]]
      if {$m > 0} {
        set m [expr int(($m+1)/2)]
        set mnum [format "%3d  " $m]
      }
    }
    sc_game pop
    append new $mnum
  }
  append new [::utils::date::today]
  if {! [string compare $last $new]} { return }
  lappend timeList $new
  set details [lreplace $details 5 5 $timeList]
  set emailData [lreplace $emailData $idx $idx $details]
  ::tools::email::writeOpponentFile $emailData
  ::tools::email::refresh 0
}

proc ::tools::email::refreshButtons {} {
  set sel [.emailWin.f.list curselection]
  if {[llength $sel] > 0} {
    .emailWin.b.edit configure -state normal
    .emailWin.b.delete configure -state normal
    .emailWin.b.load configure -state normal
    .emailWin.b.send configure -state normal
  } else {
    .emailWin.b.edit configure -state disabled
    .emailWin.b.delete configure -state disabled
    .emailWin.b.load configure -state disabled
    .emailWin.b.send configure -state disabled
  }
}

proc ::tools::email::refresh {{clearSelection 1}} {
  global emailWin emailData
  if {! [winfo exists .emailWin]} { return }
  if {$clearSelection} {
    set sel ""
    .emailWin.f.list selection clear 0 end
  } else {
    set sel [lindex [.emailWin.f.list curselection] 0]
  }
  .emailWin.f.list delete 0 end
  # set emailData [lsort -dictionary -index 0 $emailData]
  foreach i $emailData {
    set name [lindex $i 0]
    set time ""
    if {[llength $i] == 6} {
      set timeList [lindex $i 5]
      set time [lindex $timeList end]
    }
    .emailWin.f.list insert end [format "%-14s %s" $name $time]
  }
  if {$sel != ""} {
    .emailWin.f.list selection set $sel
  }
  ::tools::email::refreshButtons
}

#Initial values for globals:
set emailData {}
set emailData_index 0
set emailData_name ""
set emailData_addr ""
set emailData_subj ""
set emailData_glist ""
set emailData_dates ""
set emailData_helpBar {}
array set ::tools::email::helpBar ""

# Force the game numbers list to be digits and spaces only:
trace variable emailData_glist w {::utils::validate::Regexp {^[0-9\ ]*$}}


# emailCount: counter to give each email window a unique name.
set emailCount 0

# emailMessageEditor:
#    Contsructs the email message to the opponent and
#    creates the editor window for editing and sending the message.
#
proc emailMessageEditor {idx name addr subj gamelist sig} {
  global emailCount emailData email
  incr emailCount
  if {$emailCount >= 10000} { set emailCount 1 }

  set w ".emailMessageWin$emailCount"
  toplevel $w
  wm title $w "Send email to $name"
  set f [frame $w.fields]

  label $f.fromlab -text "From: "
  entry $f.from -background white
  $f.from insert end $email(from)

  label $f.tolab -text "To: "
  entry $f.to -background white
  $f.to insert end $addr

  label $f.subjlab -text "Subject: "
  entry $f.subj -background white
  $f.subj insert end $subj

  label $f.bcclab -text "Bcc: "
  entry $f.bcc -background white
  $f.bcc insert end $email(bcc)

  button $f.send -text "Send" -command "::tools::email::processMessage $w $idx"
  button $f.cancel -text "Cancel" -command "destroy $w"

  grid $f.send -row 0 -column 3 -rowspan 2 -sticky nesw
  grid $f.cancel -row 2 -column 3 -rowspan 2 -sticky nesw
  grid $f.fromlab -row 0 -column 0 -sticky e
  grid $f.from -row 0 -column 1 -sticky ew
  grid $f.tolab -row 1 -column 0 -sticky e
  grid $f.to -row 1 -column 1 -sticky ew
  grid $f.subjlab -row 2 -column 0 -sticky e
  grid $f.subj -row 2 -column 1 -sticky ew
  grid $f.bcclab -row 3 -column 0 -sticky e
  grid $f.bcc -row 3 -column 1 -sticky ew
  grid columnconfigure $f 1 -weight 1

  set f [frame $w.message]
  pack $w.fields -fill x -padx 4 -pady 4
  pack $w.message -expand yes -fill both -padx 4 -pady 4

  scrollbar $f.ybar -command "$f.text yview"
  scrollbar $f.xbar -orient horizontal -command "$f.text xview"
  text $f.text -yscrollcommand "$f.ybar set" -xscrollcommand "$f.xbar set" \
    -setgrid 1 -width 72 -height 20 -background white -wrap none

  grid $f.text -row 0 -column 0 -sticky news
  grid $f.ybar -row 0 -column 1 -sticky news
  grid $f.xbar -row 1 -column 0 -sticky news

  grid rowconfig $w.message 0 -weight 1 -minsize 0
  grid columnconfig $w.message 0 -weight 1 -minsize 0

  # Right-mouse button cut/copy/paste menu:
  menu $f.text.edit -tearoff 0
  $f.text.edit add command -label "Cut" -command "tk_textCut $f.text"
  $f.text.edit add command -label "Copy" -command "tk_textCopy $f.text"
  $f.text.edit add command -label "Paste" -command "tk_textPaste $f.text"
  bind $f.text <ButtonPress-$::MB3> "tk_popup $f.text.edit %X %Y"

  set text $w.message.text
  # $text insert end "Hi $name,\n\n"
  $text insert end "\n"
  foreach i $gamelist {
    catch {set gamePgn [sc_game pgn -gameNumber $i -width 70 -tags 0 \
                          -variations 0 -comments 0]}
    $text insert end "$gamePgn\n"
  }
  $text insert end $sig
  return
}

proc ::tools::email::processMessage {w idx} {
  global emailData
  set from [$w.fields.from get]
  set to [$w.fields.to get]
  set subj [$w.fields.subj get]
  set bcc [$w.fields.bcc get]
  set message [$w.message.text get 1.0 end]
  if {[string trim $to] == ""} {
    tk_messageBox -icon error -type ok -title "Empty email address" \
      -message "You must specify an email address."
    return
  }
  set cmd {::tools::email::sendMessage $from $to $subj $bcc $message}
  if {[catch $cmd result] != 0} {
    tk_messageBox -icon error -type ok -title "Error sending email" \
      -message "Error sending email: $result"
  } else {
    ::tools::email::addSentReceived $idx s
    tk_messageBox -icon info -type ok -title "Scid" -message $result
    destroy $w
  }
}

proc ::tools::email::sendMessage {from to subject bcc message} {
  global email

  ### Uncomment following line for testing, to avoid sending email:
  # return "Testing, no email was actually sent"

  set copy_id ""
  catch {set copy_id [open [file nativename $email(logfile)] "a+"]}
  if {$copy_id == ""} {
    return -code error "Unable to open $email(logfile)"
  }
  if {$email(smtp)} {
    set cmdargs "-to {$to} -subject {$subject} "
    if {$email(server) != ""} { ::ezsmtp::config -mailhost $email(server) }
    if {$email(from) != ""} {
      if {[catch {::ezsmtp::config -from $from} result]} {
        close $copy_id
        return -code error "Error configuring SMTP: $result"
      }
      append cmdargs "-from {$from} "
    }
    if {$email(bcc) != ""} {
      append cmdargs "-bcc {$bcc} "
    }
    if {[catch {eval "::ezsmtp::send $cmdargs -body {$message}"} result]} {
      close $copy_id
      return -code error "Error sending mail with SMTP: $result"
    }
  } else {
    if {[catch {open "| $email(smproc) -oi -t" "w"} ::tools::email::id]} {
      close $copy_id
      return -code error "Scid could not find the sendmail program: $email(smproc)"
    }
    if {[string trim $from] != ""} {
      puts $::tools::email::id "From: $from"
    }
    puts $::tools::email::id "To: $to"
    puts $::tools::email::id "Subject: $subject"
    if {[string trim $bcc] != ""} {
      puts $::tools::email::id "Bcc: $bcc"
    }
    puts $::tools::email::id ""
    puts $::tools::email::id $message
    close $::tools::email::id
  }
  puts $copy_id  "To: $to"
  puts $copy_id  "Subject: $subject"
  puts $copy_id  ""
  puts $copy_id $message
  close $copy_id
  return "The email message was sent; a copy was appended to $email(logfile)"
}

proc modifyEmailDetails {i} {
  global emailData emailData_name emailData_addr emailData_glist emailData_subj
  global emailData_sig emailData_index emailData_helpBar ::tools::email::helpBar

  toplevel .emailEditor
  set w .emailEditor
  bind $w <F1> { helpWindow Email }
  set emailData_index $i
  if {[lindex [lindex $emailData $i] 0] == ""} {
    wm title $w "Add opponent details"
  } else {
    wm title $w "Edit opponent details"
  }
  set f [frame $w.name]
  label $f.label -text "Name: "
  entry $f.entry -width 30 -background white -textvariable emailData_name
  set ::tools::email::helpBar(name) "Enter the opponent's name"

  set f [frame $w.addr]
  label $f.label -text "Email address: "
  entry $f.entry -width 30 -background white -textvariable emailData_addr
  set ::tools::email::helpBar(addr) "Enter the opponent's email address"

  set f [frame $w.subj]
  label $f.label -text "Subject: "
  entry $f.entry -width 30 -background white -textvariable emailData_subj
  set ::tools::email::helpBar(subj) "Enter the subject for each message"

  set f [frame $w.glist]
  label $f.label -text "Game Numbers: "
  entry $f.entry -width 30 -background white -textvariable emailData_glist
  set ::tools::email::helpBar(glist) \
    "Enter opponent's game numbers, separated by spaces"

  foreach f {name addr subj glist} {
    pack $w.$f -side top -fill x
    pack $w.$f.entry $w.$f.label -side right -anchor e
    set e $w.$f.entry
    bind $e <FocusIn> "$e configure -background lightYellow;
      set emailData_helpBar \$::tools::email::helpBar($f)"
    bind $e <FocusOut> "$e configure -background white"
  }

  addHorizontalRule $w

  set f [frame $w.sig]
  label $f.label -text "Signature: " -anchor n
  text $f.entry -width 30 -height 5 -background white
  bind $f.entry <FocusIn> "$f.entry configure -background lightYellow
    set emailData_helpBar {Enter the closing text for each message}"
  bind $f.entry <FocusOut> "$f.entry configure -background white"

  pack $f -side top -fill x
  pack $f.entry $f.label -side right -anchor n

  addHorizontalRule $w

  set f [frame $w.buttons]
  button $w.buttons.save -text "Save" -command {
    set gNumberErr [::tools::email::validGameNumbers $emailData_glist]
    if {$gNumberErr != -1} {
      tk_messageBox -icon error -type ok -title "Invalid data" \
        -message "The games list contains an invalid game number: $gNumberErr; there are only [sc_base numGames] games in this database."
    } else {
      set emailData [lreplace $emailData $emailData_index \
                       $emailData_index \
                       [list $emailData_name $emailData_addr $emailData_subj \
                          $emailData_glist \
                          [.emailEditor.sig.entry get 1.0 end-1c]]]
      ::tools::email::writeOpponentFile $emailData
      destroy .emailEditor
      ::tools::email::refresh
    }
  }
  button $f.cancel -text "Cancel" -command {
    set emailData [::tools::email::readOpponentFile]
    destroy .emailEditor
    ::tools::email::refresh
  }
  pack $f -side top
  pack $f.save $f.cancel -side left -padx 20 -pady 10

  label $w.helpBar -width 1 -textvariable emailData_helpBar -relief sunken \
    -font font_Small -anchor w
  pack $w.helpBar -side bottom -fill x

  # Set up the initial values in the entry boxes:
  set details [lindex $emailData $emailData_index]
  set emailData_name [lindex $details 0]
  set emailData_addr [lindex $details 1]
  set emailData_subj [lindex $details 2]
  set emailData_glist [lindex $details 3]
  $w.sig.entry insert 1.0 [lindex $details 4]
  grab .emailEditor
}

proc ::tools::email::validGameNumbers {numberList} {
  foreach i $numberList {
    if {$i < 1  ||  $i > [sc_base numGames]} { return $i }
  }
  return -1
}

proc ::tools::email::opponentFilename {} {
  set filename [sc_base filename]
  append filename ".sem"
  return $filename
}

proc ::tools::email::readOpponentFile {} {
  set filename [::tools::email::opponentFilename]
  if {[catch {set f [open $filename "r"]} ]} {
    # puts "Unable to open opponent file"
    return {}
  }
  set data [read -nonewline $f]
  close $f
  return $data
}

proc ::tools::email::writeOpponentFile {data} {
  set filename [::tools::email::opponentFilename]
  if {[catch {set f [open $filename "w"]} ]} {
    # puts "Unable to write opponent file"
    return {}
  }
  puts $f $data
  close $f
}

###
### import.tcl: part of Scid.
### Copyright (C) 2000  Shane Hudson.
###

### Import game window

proc importPgnGame {} {
  if {[winfo exists .importWin]} { return }
  set w [toplevel .importWin]
  wm title $w "Scid: Import PGN game"
  wm minsize $w 50 5
  frame $w.b
  pack $w.b -side bottom
  set pane [::utils::pane::Create $w.pane edit err 650 300 0.8]
  pack $pane -side top -expand true -fill both
  set edit $w.pane.edit
  text $edit.text -height 12 -width 80 -wrap none -background white \
      -yscroll "$edit.ybar set" -xscroll "$edit.xbar set"  -setgrid 1
  # Override tab-binding for this widget:
  bind $edit.text <Key-Tab> "[bind all <Key-Tab>]; break"
  scrollbar $edit.ybar -command "$edit.text yview" -takefocus 0
  scrollbar $edit.xbar -orient horizontal -command "$edit.text xview" -takefocus 0
  grid $edit.text -row 0 -column 0 -sticky nesw
  grid $edit.ybar -row 0 -column 1 -sticky nesw
  grid $edit.xbar -row 1 -column 0 -sticky nesw
  grid rowconfig $edit 0 -weight 1 -minsize 0
  grid columnconfig $edit 0 -weight 1 -minsize 0
  
  # Right-mouse button cut/copy/paste menu:
  menu $edit.text.rmenu -tearoff 0
  $edit.text.rmenu add command -label "Cut" -command "tk_textCut $edit.text"
  $edit.text.rmenu add command -label "Copy" -command "tk_textCopy $edit.text"
  $edit.text.rmenu add command -label "Paste" -command "tk_textPaste $edit.text"
  $edit.text.rmenu add command -label "Select all" -command "$edit.text tag add sel 1.0 end"
  bind $edit.text <ButtonPress-$::MB3> "tk_popup $edit.text.rmenu %X %Y"
  
  text $pane.err.text -height 4 -width 75 -wrap word -yscroll "$pane.err.scroll set"
  $pane.err.text insert end $::tr(ImportHelp1)
  $pane.err.text insert end "\n"
  $pane.err.text insert end $::tr(ImportHelp2)
  $pane.err.text configure -state disabled
  scrollbar $pane.err.scroll -command "$pane.err.text yview" -takefocus 0
  pack $pane.err.scroll -side right -fill y
  pack $pane.err.text -side left -expand true -fill both
  
  button $w.b.paste -text "$::tr(PasteCurrentGame) (Alt-P)" -command {
    .importWin.pane.edit.text delete 1.0 end
    .importWin.pane.edit.text insert end [sc_game pgn -width 70]
    .importWin.pane.err.text configure -state normal
    .importWin.pane.err.text delete 1.0 end
    .importWin.pane.err.text configure -state disabled
  }
  button $w.b.clear -text "$::tr(Clear) (Alt-C)" -command {
    .importWin.pane.edit.text delete 1.0 end
    .importWin.pane.err.text configure -state normal
    .importWin.pane.err.text delete 1.0 end
    .importWin.pane.err.text configure -state disabled
  }
  button $w.b.ok -text "$::tr(Import) (Alt-I)" -command {
    set err [catch {sc_game import \
          [.importWin.pane.edit.text get 1.0 end]} result]
    .importWin.pane.err.text configure -state normal
    .importWin.pane.err.text delete 1.0 end
    .importWin.pane.err.text insert end $result
    .importWin.pane.err.text configure -state disabled
    if {! $err} {
      updateBoard -pgn
      updateTitle
      ::windows::gamelist::Refresh
    }
  }
  button $w.b.cancel -textvar ::tr(Close) -command {
    destroy .importWin; focus .
  }
  frame $w.b.space -width 20
  pack $w.b.paste $w.b.clear $w.b.space -side left -padx 2 -pady 2
  pack $w.b.cancel $w.b.ok -side right -padx 10 -pady 5
  # Paste the current selected text automatically:
  # if {[catch {$w.pane.edit.text insert end [selection get]}]} {
  # ?
  # }
  # Select all of the pasted text:
  $w.pane.edit.text tag add sel 1.0 end
  
  bind $w <F1> { helpWindow Import }
  bind $w <Alt-i> { .importWin.b.ok invoke }
  bind $w <Alt-p> { .importWin.b.paste invoke }
  bind $w <Alt-c> { .importWin.b.clear invoke }
  bind $w <Escape> { .importWin.b.cancel invoke }
  # bind $w.pane.edit.text <Any-KeyRelease> { .importWin.b.ok invoke }
  focus $w.pane.edit.text
}


proc importClipboardGame {} {
  importPgnGame
  catch {event generate .importWin.pane.edit.text <<Paste>>}
  # Paste the current selected text automatically if no data was pasted from clipboard:
  if { [ .importWin.pane.edit.text get 1.0 end ] == "\n" } {
    catch { .importWin.pane.edit.text insert end [selection get] }
  }
}

proc importPgnLine {line} {
  importPgnGame
  set w .importWin.pane.edit.text
  $w delete 1.0 end
  $w insert end $line
  $w tag add sel 1.0 end
  focus $w
}

################################################################################
#
################################################################################
proc importMoveList {line} {
  sc_move start
  sc_move addSan $line
  updateBoard -pgn
}
################################################################################
#
################################################################################
proc importMoveListTrans {line} {
  
  set doImport 0
  
  if { $::askToReplaceMoves } {
    if {[llength [sc_game firstMoves 0 1]] == 0} {
      set doImport 1
    } elseif {[tk_messageBox -message [::tr "OverwriteExistingMoves"] -type yesno -icon question ] == yes} {
      set doImport 1
    }
  } else  {
    set doImport 1
  }
  if {$doImport} {
    set line [untrans $line]
    sc_move start
    sc_move addSan $line
    updateBoard -pgn
  }
  
}

set importPgnErrors ""

### Import file of Pgn games:

proc importPgnFile {} {
  global importPgnErrors
  
  set err ""
  if {[sc_base isReadOnly]} { set err "This database is read-only." }
  if {![sc_base inUse]} { set err "This is not an open database." }
  if {$err != ""} {
    tk_messageBox -type ok -icon error -title "Scid: Error" -message $err
    return
  }
  if {[sc_info gzip]} {
    set ftypes {
      { "Portable Game Notation files" {".pgn" ".PGN" ".pgn.gz"} }
      { "Text files" {".txt" ".TXT"} }
      { "All files" {"*"} }
    }
  } else {
    set ftypes {
      { "Portable Game Notation files" {".pgn" ".PGN"} }
      { "Text files" {".txt" ".TXT"} }
      { "All files" {"*"} }
    }
  }
  set fnames [tk_getOpenFile -multiple 1 -initialdir $::initialDir(pgn) -filetypes $ftypes -title "Import from PGN files" ]
  if {$fnames == ""} { return }
  
  set ::initialDir(pgn) [file dirname [lindex $fnames 0]]
  foreach fname $fnames {
    doPgnFileImport $fname "" 1
  }
  ::windows::gamelist::Refresh
}

proc doPgnFileImport {fname text {multiple 0} } {
  set w .ipgnWin
  if {[winfo exists $w] && ! $multiple } { destroy $w }
  if {! [winfo exists $w]} {
    toplevel $w
    wm title $w "Scid: Importing PGN file"
    canvas $w.progress -width 400 -height 20 -bg white -relief solid -border 1
    $w.progress create rectangle 0 0 0 0 -fill blue -outline blue -tags bar
    $w.progress create text 395 10 -anchor e -font font_Regular -tags time \
        -fill black -text "0:00 / 0:00"
    
    pack $w.progress -side bottom
    
    frame $w.buttons
    pack $w.buttons -side bottom -fill x
    button $w.buttons.stop -textvar ::tr(Stop) -command {sc_progressBar}
    button $w.buttons.close -textvar ::tr(Close) -command "focus .; destroy $w"
    pack $w.buttons.close $w.buttons.stop -side right -ipadx 5 -padx 5 -pady 2
    
    pack [frame $w.tf] -side top -expand yes -fill both
    text $w.text -height 8 -width 60 -background gray90 \
        -wrap none -cursor watch -setgrid 1 -yscrollcommand "$w.ybar set"
    scrollbar $w.ybar -command "$w.text yview"
    pack $w.ybar -in $w.tf -side right -fill y
    pack $w.text -in $w.tf -side left -fill both -expand yes
  }
  
  sc_progressBar $w.progress bar 401 21 time
  update
  busyCursor .
  catch {grab $w.buttons.stop}
  bind $w <Escape> "$w.buttons.stop invoke"
  $w.buttons.close configure -state disabled
  $w.text insert end $text
  $w.text insert end "Importing PGN games from [file tail $fname]...\n\n"
  $w.text configure -state disabled
  
  set importPgnErrors ""
  set err [catch {sc_base import file $fname} result]
  unbusyCursor .
  
  set warnings ""
  $w.text configure -state normal
  $w.text configure -cursor top_left_arrow
  if {$err} {
    $w.text insert end $result
  } else {
    set nImported [lindex $result 0]
    set warnings [lindex $result 1]
    set str "Imported $nImported "
    if {$nImported == 1} { append str "game" } else { append str "games" }
    if {$warnings == ""} {
      append str " with no PGN errors or warnings."
    } else {
      append str ".\nPGN errors/warnings:\n$warnings"
    }
    $w.text insert end "$str\n"
  }
  
  $w.text configure -state disabled
  $w.buttons.close configure -state normal
  $w.buttons.stop configure -state disabled
  catch {grab release $w.buttons.stop}
  bind $w <Escape> "$w.buttons.close invoke; break"
  
  # Auto-close import progress window if there were no errors/warnings?
  if {!$err  &&  $warnings == "" && ! $multiple} { destroy $w }
  updateTitle
  updateMenuStates
  ::windows::switcher::Refresh
  ::maint::Refresh
  update
}

###
### End of file: import.tcl
###

### optable.tcl: Opening report and theory table generation.
### Part of Scid. Copyright 2001-2003 Shane Hudson.

namespace eval ::optable {}
array set ::optable::_data {}

set ::optable::_data(exclude) "---"
set ::optable::_docStart(text) {}
set ::optable::_docEnd(text) {}
set ::optable::_docStart(ctext) {}
set ::optable::_docEnd(ctext) {}
set ::optable::_flip 0

set ::optable::_docStart(html) {<html>
  <head>
  <title>[OprepTitle]</title>
  <style type="text/css">
  <!--
  h1 { color:#990000 }
  h2 { color:#990000 }
  h3 { color:#990000 }
  .player {
    color:darkblue
  }
  .elo {
    color:green
    font-style:italic
  }
  sup {
    color:red
  }
  -->
  </style>
  </head>
  <body bgcolor="#ffffff">
}
set ::optable::_docEnd(html) {</body>
  </html>
}

set ::optable::_docStart(latex) {\documentclass[10pt,a4paper]{article}
  % This is a LaTeX file generated by Scid.
  % You must have the "chess12" package installed to typeset this file.
  
  \usepackage{times}
  \usepackage{a4wide}
  \usepackage{chess}
  \usepackage[T1]{fontenc}
  
  \setlength{\columnsep}{1cm}
  \setlength{\parindent}{0pt}
  \setlength{\parskip}{3pt}
  
  \font\F=chessf10
  \newcommand{\B}{{\F B}}
  \newcommand{\N}{{\F N}}
  \newcommand{\R}{{\F R}}
  \newcommand{\Q}{{\F Q}}
  \newcommand{\K}{{\F K}}
  \newcommand{\tspace}{{\vspace{0.08cm}}}
  \newcommand{\draw}{{\small$\frac{1}{2}$:$\frac{1}{2}$}}
  \newcommand{\loss}{\mbox{0:1}}
  \newcommand{\win}{\mbox{1:0}}
  \newcommand{\notenum}[1]{\hspace{-0.7cm}\makebox[0.55cm][r]{$^{ #1 }$ }\makebox[0.05cm]{}}
  
  %\font\Chess=chess10
  \begin{document}
  \raggedright
  \nochess
}
set ::optable::_docEnd(latex) {
  \end{document}
}

proc ::optable::ConfigMenus {{lang ""}} {
  if {! [winfo exists .oprepWin]} { return }
  if {$lang == ""} { set lang $::language }
  set m .oprepWin.menu
  foreach idx {0 1 2} tag {File Favorites Help} {
    configMenuText $m $idx Oprep$tag $lang
  }
  foreach idx {0 1 2 4 6} tag {Text Html LaTeX Options Close} {
    configMenuText $m.file $idx OprepFile$tag $lang
  }
  foreach idx {0 1 2} tag {Add Edit Generate} {
    configMenuText $m.favorites $idx OprepFavorites$tag $lang
  }
  foreach idx {0 1} tag {Report Index} {
    configMenuText $m.helpmenu $idx OprepHelp$tag $lang
  }
}

proc ::optable::makeReportWin {args} {
  if {! [sc_base inUse]} { return }
  set ::optable::opReportBase [sc_base current]
  set showProgress 1
  set args [linsert $args 0 "args"]
  if {[lsearch -exact $args "-noprogress"] >= 0} { set showProgress 0 }
  if {$showProgress} {
    set w .progress
    toplevel $w
    wm withdraw $w
    wm title $w "Scid: Generating Report"
    bind $w <Visibility> "raiseWin $w"
    
    pack [frame $w.b] -side bottom -fill x
    set ::optable::_interrupt 0
    button $w.b.cancel -text $::tr(Cancel) -command {
      set ::optable::_interrupt 1
      sc_progressBar
    }
    pack $w.b.cancel -side right -pady 5 -padx 2
    
    foreach i {1 2} name { "Searching database for report games" "Generating report information" } {
      label $w.text$i -text "$i. $name"
      pack $w.text$i -side top
      canvas $w.c$i -width 400 -height 20 -bg white -relief solid -border 1
      $w.c$i create rectangle 0 0 0 0 -fill blue -outline blue -tags bar
      $w.c$i create text 395 10 -anchor e -font font_Regular -tags time \
          -fill black -text "0:00 / 0:00"
      pack $w.c$i -side top -pady 10
    }
    wm resizable $w 0 0
    # Set up geometry for middle of screen:
    set x [winfo screenwidth $w]; set x [expr $x - 400]; set x [expr $x / 2]
    set y [winfo screenheight $w]; set y [expr $y - 20]; set y [expr $y / 2]
    wm geometry $w +$x+$y
    wm deiconify $w
    grab $w.b.cancel
    sc_progressBar $w.c1 bar 401 21 time
    busyCursor .
  }
  set newTreeData [sc_tree search -time 0 -epd 0]
  if {$showProgress} {
    if {$::optable::_interrupt} {
      unbusyCursor .
      grab release $w.b.cancel
      destroy $w
      return
    }
    sc_progressBar $w.c2 bar 401 21 time
  }
  sc_report opening create $::optable(ExtraMoves) $::optable(MaxGames) $::optable::_data(exclude)
  if {$showProgress} {
    unbusyCursor .
    grab release $w.b.cancel
    destroy $w
    if {$::optable::_interrupt} { return }
  }
  
  set ::optable::_data(tree) $newTreeData
  ::optable::latexifyTree
  set ::optable::_data(bdLaTeX) [sc_pos tex]
  set ::optable::_data(bdHTML) [sc_pos html]
  set ::optable::_data(bdLaTeX_flip) [sc_pos tex flip]
  set ::optable::_data(bdHTML_flip) [sc_pos html -flip 1]
  
  ::optable::setupRatios
  
  set report [::optable::report ctext 1]
  
  if {[lsearch -exact $args "-nodisplay"] >= 0} { return }
  
  set w .oprepWin
  if {![winfo exists $w]} {
    ::createToplevel $w
    ::setTitle $w "[tr ToolsOpReport]"
    menu $w.menu
    ::setMenu $w $w.menu
    
    $w.menu add cascade -label OprepFile -menu $w.menu.file
    $w.menu add cascade -label OprepFavorites -menu $w.menu.favorites
    $w.menu add cascade -label OprepHelp -menu $w.menu.helpmenu
    foreach i {file favorites helpmenu} {
      menu $w.menu.$i -tearoff 0
    }
    
    $w.menu.file add command -label OprepFileText \
        -command {::optable::saveReport text}
    $w.menu.file add command -label OprepFileHtml \
        -command {::optable::saveReport html}
    $w.menu.file add command -label OprepFileLaTeX \
        -command {::optable::saveReport latex}
    $w.menu.file add separator
    $w.menu.file add command -label OprepFileOptions \
        -command ::optable::setOptions
    $w.menu.file add separator
    $w.menu.file add command -label OprepFileClose \
        -command "$w.b.close invoke"
    $w.menu.favorites add command -label OprepFavoritesAdd \
        -command ::optable::addFavoriteDlg
    $w.menu.favorites add command -label OprepFavoritesEdit \
        -command ::optable::editFavoritesDlg
    $w.menu.favorites add command -label OprepFavoritesGenerate \
        -command ::optable::generateFavoriteReports
    $w.menu.favorites add separator
    $w.menu.helpmenu add command -label OprepHelpReport \
        -accelerator F1 -command {helpWindow Reports Opening}
    $w.menu.helpmenu add command -label OprepHelpIndex \
        -command {helpWindow Index}
    
    ::optable::updateFavoritesMenu
    
    bind $w <F1> {helpWindow Reports Opening}
    bind $w <Escape> "$w.b.close invoke"
    bind $w <Up> "$w.text yview scroll -1 units"
    bind $w <Down> "$w.text yview scroll 1 units"
    bind $w <Prior> "$w.text yview scroll -1 pages"
    bind $w <Next> "$w.text yview scroll 1 pages"
    bind $w <Key-Home> "$w.text yview moveto 0"
    bind $w <Key-End> "$w.text yview moveto 0.99"
    bindMouseWheel $w $w.text
    
    text $w.text -height 30 -width 85 -font font_Small -setgrid 1 \
        -wrap word -bg white -foreground black -yscrollcommand "$w.ybar set" \
        -cursor top_left_arrow
    ::htext::init $w.text
    scrollbar $w.ybar -command "$w.text yview"
    frame $w.b
    button $w.b.previewLaTeX -textvar ::tr(OprepViewLaTeX) \
        -command ::optable::previewLaTeX
    button $w.b.previewHTML -textvar ::tr(OprepViewHTML) \
        -command ::optable::previewHTML
    button $w.b.opts -text [tr OprepFileOptions] -command ::optable::setOptions
    label $w.b.lexclude -text "Exclude:"
    menubutton $w.b.exclude -textvar ::optable::_data(exclude) \
        -indicatoron 1 -relief raised -bd 2 -menu $w.b.exclude.m -padx 1
    menu $w.b.exclude.m -tearoff 0
    button $w.b.update -textvar ::tr(Update) -command {
      set ::optable::_data(yview) [lindex [.oprepWin.text yview] 0]
      ::optable::makeReportWin
      .oprepWin.text yview moveto $::optable::_data(yview)
    }
    
    button $w.b.mergeGames -textvar ::tr(MergeGames) -command ::optable::mergeGames
    button $w.b.help -textvar ::tr(Help) -command {helpWindow Reports Opening}
    button $w.b.close -textvar ::tr(Close) -command "focus .; destroy $w"
    pack $w.b -side bottom -fill x
    pack $w.ybar -side right -fill y
    pack $w.text -side left -fill both -expand yes
    pack $w.b.close $w.b.update -side right -padx 1 -pady 2
    if {! $::windowsOS} {
      pack $w.b.previewLaTeX -side left -padx 1 -pady 2
    } else {
      pack $w.b.previewHTML -side left -padx 1 -pady 2
    }
    pack $w.b.opts $w.b.lexclude $w.b.exclude $w.b.mergeGames -side left -padx 1 -pady 2
    ::optable::ConfigMenus
    ::utils::win::Centre $w
    ::createToplevelFinalize $w
  }
  
  catch {destroy $w.text.bd}
  
  set old_showMaterial $::gameInfo(showMaterial)
  set ::gameInfo(showMaterial) 0
  ::board::new $w.text.bd 30
  
  if {$::optable::_flip} { ::board::flip $w.text.bd }
  $w.text.bd configure -relief solid -borderwidth 1
  for {set i 0} {$i < 63} {incr i} {
    ::board::bind $w.text.bd $i <ButtonPress-1> ::optable::flipBoard
    #::board::bind $w.text.bd $i <ButtonPress-$::MB3> ::optable::resizeBoard
  }
  ::board::update $w.text.bd [sc_pos board]
  $w.b.exclude.m delete 0 end
  $w.b.exclude.m add radiobutton -label "---" -variable ::optable::_data(exclude) -command "$w.b.update invoke"
  foreach move $::optable::_data(moves) {
    $w.b.exclude.m add radiobutton -label $move -variable ::optable::_data(exclude) -command "$w.b.update invoke"
  }
  if {[lsearch $::optable::_data(moves) $::optable::_data(exclude)] < 0} {
    set ::optable::_data(exclude) "---"
  }
  busyCursor .
  $w.text configure -state normal
  $w.text delete 1.0 end
  regsub -all "\n" $report "<br>" report
  ::htext::display $w.text $report
  $w.text configure -state disabled
  unbusyCursor .
  ::windows::gamelist::Refresh
  ::windows::stats::Refresh
  set ::gameInfo(showMaterial) $old_showMaterial
  
}
################################################################################
# merges the N best games up to P plies to current game
################################################################################
proc ::optable::mergeGames { {game_count 50} {ply 999} } {
  set base  $::optable::opReportBase
  set games [split [sc_report opening best a $game_count] "\n"]
  foreach g $games {
    if {$g == "" } { continue }
    set res [scan $g "%d:  <g_%d>" d1 game_number]
    if {$res != 2} {
      if {[info exists game_number]} {
        tk_messageBox -title "Scid: Error writing report" -type ok -icon warning -message "Error merging game $game_number"
      } else  {
        tk_messageBox -title "Scid: Error writing report" -type ok -icon warning -message "Error merging game"
      }
      break
    }
    set err [ catch { sc_game merge $base $game_number $ply } result ]
    if {$err} {
      tk_messageBox -title "Scid" -type ok -icon info -message "Unable to merge the selected game:\n$result"
      break
    }
  }
  updateBoard -pgn
}
################################################################################
#
################################################################################

proc ::optable::flipBoard {} {
  set old_showMaterial $::gameInfo(showMaterial)
  set ::gameInfo(showMaterial) 0
  ::board::flip .oprepWin.text.bd
  set ::optable::_flip [::board::isFlipped .oprepWin.text.bd]
  set ::gameInfo(showMaterial) $old_showMaterial
}

proc ::optable::resizeBoard {} {
  set bd .oprepWin.text.bd
  set size [::board::size $bd]
  if {$size >= 40} { set size 25 } else { incr size 5 }
  ::board::resize $bd $size
}

proc ::optable::setOptions {} {
  set w .oprepOptions
  if {[winfo exists $w]} { return }
  toplevel $w
  pack [frame $w.f] -side top -fill x -padx 5 -pady 5
  set row 0
  foreach i {Stats Popular AvgPerf Results MovesFrom Themes Endgames} {
    set yesno($i) 1
  }
  set left 0
  set right 1
  foreach i {Stats Oldest Newest Popular MostFrequent sep \
        AvgPerf HighRating sep \
        Results Shortest col \
        MoveOrders MovesFrom Themes Endgames gap sep \
        MaxGames ExtraMoves sep} {
    set from 0; set to 10; set tick 1; set res 1
    
    if {$i == "col"} {
      incr left 4
      frame $w.f.colsep$left -width 8
      grid $w.f.colsep$left -row 0 -column $left
      incr left
      set right [expr {$left + 1}]
      set row 0
    } elseif {$i == "gap"} {
      # nothing
    } elseif {$i == "sep"} {
      frame $w.f.fsep$row$left -height 2 -borderwidth 2 -relief sunken -bg white
      frame $w.f.tsep$row$left -height 2 -borderwidth 2 -relief sunken -bg white
      grid $w.f.fsep$row$left -row $row -column $left -sticky we -columnspan 4
    } elseif {[info exists yesno($i)]} {
      checkbutton $w.f.f$i -variable ::optable($i) -onvalue 1 -offvalue 0
      label $w.f.t$i -textvar ::tr(Oprep$i) -font font_Small
      grid $w.f.f$i -row $row -column $left -sticky n
      grid $w.f.t$i -row $row -column $right -sticky w -columnspan 3
    } else {
      
      # Pascal Georges : changed combobox to spinbox to widen choices
      if {$i == "MaxGames"} {
        spinbox $w.f.s$i -textvariable ::optable($i) -from 0 -to 5000 -increment 50 \
            -state readonly -width 5 -justify right -font font_Small
      } else  {
        set tmpcombo {}
        for {set x $from} {$x <= $to} {incr x $res} {
          lappend tmpcombo $x
        }
        ttk::combobox $w.f.s$i -textvariable ::optable($i) -width 2 -height 11 -values $tmpcombo
      }
      
      label $w.f.t$i -textvar ::tr(Oprep$i) -font font_Small
      grid $w.f.s$i -row $row -column $left ;# -sticky e
      if {$i == "MostFrequent"  ||  $i == "Shortest"} {
        checkbutton $w.f.w$i -text $::tr(White) -font font_Small \
            -variable ::optable(${i}White)
        checkbutton $w.f.b$i -text $::tr(Black) -font font_Small \
            -variable ::optable(${i}Black)
        grid $w.f.t$i -row $row -column $right -sticky w
        grid $w.f.w$i -row $row -column 2
        grid $w.f.b$i -row $row -column 3
      } else {
        grid $w.f.t$i -row $row -column $right -sticky w -columnspan 3
      }
    }
    grid rowconfigure $w.f $row -pad 2
    if {$i != "col"} { incr row }
  }
  addHorizontalRule $w
  pack [frame $w.b] -side bottom -fill x
  dialogbutton $w.b.defaults -textvar ::tr(Defaults) -command {
    array set ::optable [array get ::optableDefaults]
  }
  dialogbutton $w.b.ok -text "OK" -command {
    destroy .oprepOptions
    catch {set ::optable::_data(yview) [lindex [.oprepWin.text yview] 0]}
    ::optable::makeReportWin
    catch {.oprepWin.text yview moveto $::optable::_data(yview)}
  }
  dialogbutton $w.b.cancel -textvar ::tr(Cancel) -command {
    array set ::optable [array get ::optable::backup]
    destroy .oprepOptions
  }
  packbuttons left $w.b.defaults
  packbuttons right $w.b.cancel $w.b.ok
  array set ::optable::backup [array get ::optable]
  wm resizable $w 0 0
  wm title $w  "Scid: [tr ToolsOpReport]: [tr OprepFileOptions]"
  bind $w <Escape> "$w.b.cancel invoke"
}

# previewLaTeX:
#   Saves the report to a temporary file, runs latex on it, then
#   "dvips" to produce PostScript, and "ghostview" to display it.
#
proc ::optable::previewLaTeX {} {
  busyCursor .
  set tmpdir $::scidLogDir
  set tmpfile "TempOpeningReport"
  set fname [file join $tmpdir $tmpfile]
  catch {exec /bin/sh -c "rm $fname.*" }
  if {[catch {set tempfile [open $fname.tex w]}]} {
    tk_messageBox -title "Scid: Error writing report" -type ok -icon warning \
        -message "Unable to write the file: $fname.tex"
  }
  # Add the "batchmode" command to the top of the file to prevent latex
  # pausing for input on errors:
  puts $tempfile "\\batchmode"
  puts $tempfile [::optable::report latex 1 $::optable::_flip]
  close $tempfile
  if {! [catch {exec /bin/sh -c "cd $tmpdir; latex '$tmpfile.tex'" >& /dev/null}]} {
    if {[catch {exec /bin/sh -c "cd $tmpdir; dvips '$tmpfile.dvi'" >& /dev/null}]} {
      tk_messageBox -title "Scid" -icon warning -type ok \
          -message "Unable to run \"dvips\" to convert the report to PostScript."
    } else {
      if {[catch {exec /bin/sh -c "ghostview '$fname.ps'" >& /dev/null &}]} {
        tk_messageBox -title "Scid" -icon warning -type ok \
            -message "Unable to run \"xdvi\" to view the report."
      }
    }
  } else {
    tk_messageBox -title "Scid: Errors producing report" -type ok \
        -icon warning \
        -message "Errors running latex on the file: $fname.tex\n\nSee $fname.log for details."
  }
  unbusyCursor .
}

# previewHTML:
#   Saves the report to a temporary file, and invokes the user's web
#   browser to display it.
#
proc ::optable::previewHTML {} {
  busyCursor .
  set tmpdir $::scidLogDir
  set tmpfile "TempOpeningReport"
  set fname [file join $tmpdir $tmpfile]
  if {[catch {set tempfile [open $fname.html w]}]} {
    tk_messageBox -title "Scid: Error writing report" -type ok -icon warning \
        -message "Unable to write the file: $fname.html"
  }
  puts $tempfile [::optable::report html 1 $::optable::_flip]
  close $tempfile
  if {[string match $::tcl_platform(os) "Windows NT"]} {
    catch {exec $::env(COMSPEC) /c start $fname.html &}
  } else {
    catch {exec start $fname.html &}
  }
  unbusyCursor .
}

# saveReport:
#   Saves the current opening report to a file.
#   "fmt" is the format: text, html or latex.
#   "type" is the report type: report, table, or both.
#
proc ::optable::saveReport {fmt} {
  set t [tk_dialog .dialog "Scid: Select report type" \
      "Select the report type. You may save a full report (which includes the theory table), a compact report (with no theory table), or just the theory table by itself." \
      "" 0 "Full report" "Compact report" \
      "Theory table" "Cancel"]
  if {$t == 3} { return }
  set default ".txt"
  set ftype {
    { "Text files" {".txt"} }
    { "All files"  {"*"}    }
  }
  if {$fmt == "latex"} {
    set default ".tex"
    set ftype {
      { "LaTeX files" {".tex" ".ltx"} }
      { "All files"  {"*"}    }
    }
  } elseif {$fmt == "html"} {
    set default ".html"
    set ftype {
      { "HTML files" {".html" ".htm"} }
      { "All files"  {"*"}    }
    }
  }
  
  set fname [tk_getSaveFile -initialdir [pwd] -filetypes $ftype \
      -defaultextension $default -title "Scid: Save opening report"]
  if {$fname == ""} { return }
  
  busyCursor .
  if {[catch {set tempfile [open $fname w]}]} {
    tk_messageBox -title "Scid: Error writing report" -type ok -icon warning \
        -message "Unable to write the file: $fname\n\n"
  } else {
    if {$t == 2} {
      set report [::optable::table $fmt]
    } elseif {$t == 1} {
      set report [::optable::report $fmt 0 $::optable::_flip]
    } else {
      set report [::optable::report $fmt 1 $::optable::_flip]
    }
    if {$::hasEncoding  &&  $::langEncoding($::language) != ""} {
      catch {set report [encoding convertto $::langEncoding($::language) $report]}
    }
    puts $tempfile $report
    close $tempfile
  }
  unbusyCursor .
}

proc ::optable::create {} {
  set ::optable::_data(tree) [sc_tree search -time 0 -epd 0]
  ::optable::latexifyTree
  set ::optable::_data(bdLaTeX) [sc_pos tex]
  set ::optable::_data(bdHTML) [sc_pos html]
  set ::optable::_data(bdLaTeX_flip) [sc_pos tex flip]
  set ::optable::_data(bdHTML_flip) [sc_pos html -flip 1]
  sc_report opening create $::optable(ExtraMoves) $::optable(MaxGames)
  ::optable::setupRatios
}

# latexifyTree
#   Convert the plain text tree output used for text/html reports
#   to a table for LaTeX output.
#
proc ::optable::latexifyTree {} {
  set ::optable::_data(moves) {}
  if {! [info exists ::optable::_data(tree)]} { return }
  set tree [split $::optable::_data(tree) "\n"]
  set ltree "\\begin{tabular}{rllr@{:}rrrrrr}\n\\hline\n"
  append ltree " & Move & ECO & \\multicolumn{2}{c}{Frequency}"
  append ltree " & Score & \$\\mu\$Elo & Perf & \$\\mu\$Year & \\% Draws \\\\ \n"
  append ltree "\\hline\n"
  set len [llength $tree]
  set done 0
  for {set i 1} {$i < $len} {incr i} {
    set line [lindex $tree $i]
    if {[string index $line 0] == "_"} {
      append ltree "\\hline\n"
      continue
    }
    if {[string length $line] == 0} { continue }
    set num    [string range $line  0  1]
    set move   [string range $line  4  9]
    set eco    [string range $line 11 15]
    set freq   [string range $line 17 23]
    set fpct   [string range $line 25 29]
    set score  [string range $line 33 37]
    set avElo  [string range $line 41 44]
    set perf   [string range $line 47 50]
    set avYear [string range $line 53 56]
    set pctDraw [string range $line 59 61]
    set mv [string trim $move]
    regsub K $move {{\\K}} move
    regsub Q $move {{\\Q}} move
    regsub R $move {{\\R}} move
    regsub B $move {{\\B}} move
    regsub N $move {{\\N}} move
    if {[string index $line 0] == "T"} {
      append ltree "\\multicolumn{2}{l}{Total}"
    } else {
      append ltree " $num & $move "
      lappend ::optable::_data(moves) $mv
    }
    append ltree " & $eco & $freq & $fpct\\% & $score\\%"
    append ltree " & $avElo & $perf & $avYear & $pctDraw\\% \\\\ \n"
  }
  append ltree "\\hline\n"
  append ltree "\\end{tabular}\n"
  set ::optable::_data(latexTree) $ltree
}

proc ::optable::setupRatios {} {
  set r [sc_filter freq date 0000.00.00]
  if {[lindex $r 0] == 0} {
    set ::optable::_data(ratioAll) 0
  } else {
    set ::optable::_data(ratioAll) \
        [expr {int(double([lindex $r 1]) / double([lindex $r 0]))} ]
  }
  foreach {start end} {1800 1899  1900 1949  1950 1969  1970 1979
    1980 1989 1990 1999 2000 2009} {
    set r [sc_filter freq date $start.00.00 $end.12.31]
    set filter [lindex $r 0]
    set all [lindex $r 1]
    if {$filter == 0} {
      set ::optable::_data(range$start) "---"
    } else {
      set ::optable::_data(range$start) \
          [expr {int(double($all) / double($filter))} ]
    }
  }
  foreach y {1 5 10} {
    set year "[expr [::utils::date::today year]-$y]"
    append year ".[::utils::date::today month].[::utils::date::today day]"
    set r [sc_filter freq date $year]
    set filter [lindex $r 0]
    set all [lindex $r 1]
    if {$filter == 0} {
      set ::optable::_data(ratio$y) 0
    } else {
      set ::optable::_data(ratio$y) \
          [expr {int(double($all) / double($filter))} ]
    }
    if {$::optable::_data(ratio$y) == 0} {
      set r 1.0
    } else {
      set r [expr {double($::optable::_data(ratioAll))} ]
      set r [expr {$r / double($::optable::_data(ratio$y))} ]
    }
    set ::optable::_data(delta$y) [expr {int(($r - 1.0) * 100.0 + 0.5)} ]
  }
}

proc ::optable::_percent {x fmt} {
  set p "%"
  if {$fmt == "latex"} { set p "\\%" }
  return "[expr $x / 10][sc_info decimal][expr $x % 10]$p"
}

proc ::optable::results {reportType fmt} {
  set s {}
  set n "\n"; set next " "; set p "%"
  set white "1-0"; set draw "=-="; set black "0-1"
  
  if {$fmt == "latex"} {
    set next " & "; set n "\\\\\n"; set p "\\%"
    set white "\\win"; set draw "\\draw"; set black "\\loss"
    append s "\\begin{tabular}{lccccccc}\n"
  }
  
  if {$fmt == "html"} { append s "<pre>\n" }
  if {$fmt == "ctext"} { append s "<tt>" }
  if {$fmt == "latex"} { append s "\\hline\n" }
  
  set lenReport [string length $::tr(OprepReportGames)]
  set lenAll [string length $::tr(OprepAllGames)]
  set len [expr {($lenReport > $lenAll) ? $lenReport : $lenAll} ]
  set score [::utils::string::Capital $::tr(score)]
  set slen [string length $score]
  if {$slen < 7} { set slen 7 }
  
  append s " [::utils::string::Pad {} $len] $next"
  append s "[::utils::string::PadRight $score $slen] $next"
  if {$fmt == "latex"} {
    append s "\\multicolumn{3}{c}{$::tr(OprepLength)} & "
    append s "\\multicolumn{3}{c}{$::tr(OprepFrequency)} $n "
  } else {
    append s "[::utils::string::PadCenter $::tr(OprepLength) 19] $next"
    append s "[::utils::string::PadCenter $::tr(OprepFrequency) 22] $n"
  }
  
  append s " [::utils::string::Pad {} $len] $next"
  append s "[::utils::string::PadRight {} $slen] $next"
  append s "[::utils::string::PadRight $white 5] $next"
  append s "[::utils::string::PadRight $draw  5] $next"
  append s "[::utils::string::PadRight $black 5] $next"
  append s "[::utils::string::PadRight $white 5]  $next"
  append s "[::utils::string::PadRight $draw  5]  $next"
  append s "[::utils::string::PadRight $black 5]  $n"
  if {$fmt == "latex"} { append s "\\hline\n" }
  
  set sc [sc_report $reportType score]
  set wlen [sc_report $reportType avgLength 1]
  set dlen [sc_report $reportType avgLength =]
  set blen [sc_report $reportType avgLength 0]
  set wf [sc_report $reportType freq 1]
  set df [sc_report $reportType freq =]
  set bf [sc_report $reportType freq 0]
  
  append s " [::utils::string::Pad $::tr(OprepReportGames) $len] $next"
  append s "[::utils::string::PadRight [::optable::_percent [lindex $sc 0] $fmt] $slen] $next"
  append s "[::utils::string::PadRight [lindex $wlen 0] 5] $next"
  append s "[::utils::string::PadRight [lindex $dlen 0] 5] $next"
  append s "[::utils::string::PadRight [lindex $blen 0] 5] $next"
  append s "[::utils::string::PadRight [::optable::_percent [lindex $wf 0] $fmt] 6] $next"
  append s "[::utils::string::PadRight [::optable::_percent [lindex $df 0] $fmt] 6] $next"
  append s "[::utils::string::PadRight [::optable::_percent [lindex $bf 0] $fmt] 6] $n"
  
  append s " [::utils::string::Pad $::tr(OprepAllGames) $len] $next"
  append s "[::utils::string::PadRight [::optable::_percent [lindex $sc 1] $fmt] $slen] $next"
  append s "[::utils::string::PadRight [lindex $wlen 1] 5] $next"
  append s "[::utils::string::PadRight [lindex $dlen 1] 5] $next"
  append s "[::utils::string::PadRight [lindex $blen 1] 5] $next"
  append s "[::utils::string::PadRight [::optable::_percent [lindex $wf 1] $fmt] 6] $next"
  append s "[::utils::string::PadRight [::optable::_percent [lindex $df 1] $fmt] 6] $next"
  append s "[::utils::string::PadRight [::optable::_percent [lindex $bf 1] $fmt] 6] $n"
  
  if {$fmt == "latex"} { append s "\\hline\n\\end{tabular}\n" }
  if {$fmt == "html"} { append s "</pre>\n" }
  if {$fmt == "ctext"} { append s "</tt>" }
  
  return $s
}

proc ::optable::stats {fmt} {
  global stats
  set s {}
  set all $::tr(OprepStatAll)
  set both $::tr(OprepStatBoth)
  set since $::tr(OprepStatSince)
  set games [::utils::string::Capital $::tr(games)]
  set score [::utils::string::Capital $::tr(score)]
  
  set alen [string length $all]
  set blen [expr {[string length $both] + 6} ]
  set slen [expr {[string length $since] + 11} ]
  set len $alen
  if {$len < $blen} { set len $blen }
  if {$len < $slen} { set len $slen }
  
  set ratings 0
  set years 0
  set rlist [lsort -decreasing [array names stats r*]]
  set ylist [lsort [array names stats y*]]
  foreach i $rlist { if {$stats($i)} { set ratings 1 } }
  foreach i $ylist { if {$stats($i)} { set years 1 } }
  
  if {$fmt == "latex"} {
    append s "\\begin{tabular}{l r r r r r @{.} l}\n\\hline\n"
    append s "       & $games & \\win & \\draw & \\loss & "
    append s "\\multicolumn{2}{c}{$score} \\tspace \\\\ \\hline \n"
    scan [sc_filter stats all] "%u%u%u%u%u%\[.,\]%u" g w d l p c x
    append s "$all & $g & $w & $d & $l & $p&$x\\% \\\\\n"
    
    if {$ratings} {
      append s "\\hline\n"
      foreach i $rlist {
        if {$stats($i)} {
          set elo [string range $i 1 end]
          scan [sc_filter stats elo $elo] "%u%u%u%u%u%\[.,\]%u" g w d l p c x
          append s "$both $elo+ & $g & $w & $d & $l & $p&$x\\% \\\\\n"
        }
      }
    }
    if {$years} {
      append s "\\hline\n"
      foreach i $ylist {
        if {$stats($i)} {
          set year [string range $i 1 end]
          scan [sc_filter stats year $year] "%u%u%u%u%u%\[.,\]%u" g w d l p c x
          append s "$since $year.01.01 & $g & $w & $d & $l & $p&$x\\% \\\\\n"
        }
      }
    }
    append s "\\hline\n\\end{tabular}\n"
    return $s
  }
  
  # For non-LaTeX format, just display in plain text:
  if {$fmt == "html"} { append s "<pre>\n" }
  if {$fmt == "ctext"} { append s "<tt>" }
  set stat ""
  append s " [::utils::string::Pad $stat [expr $len - 4]] [::utils::string::PadRight $games 10]"
  append s "     1-0     =-=     0-1 [::utils::string::PadRight $score 8]\n"
  append s "-----------------------------------------------------------"
  append s "\n [::utils::string::Pad $all $len]"     [sc_filter stats all]
  
  if {$ratings} {
    append s "\n"
    foreach i $rlist {
      if {$stats($i)} {
        set elo [string range $i 1 end]
        set stat "$both $elo+"
        append s "\n [::utils::string::Pad $stat $len]"   [sc_filter stats elo $elo]
      }
    }
  }
  if {$years} {
    append s "\n"
    foreach i $ylist {
      if {$stats($i)} {
        set year [string range $i 1 end]
        set stat "$since $year.01.01"
        append s "\n [::utils::string::Pad $stat $len]"   [sc_filter stats year $year]
      }
    }
  }
  append s "\n-----------------------------------------------------------\n"
  if {$fmt == "html"} { append s "</pre>\n" }
  if {$fmt == "ctext"} { append s "</tt>" }
  return $s
}

proc ::optable::_reset {} {
  set ::optable::_data(sec) 0
  set ::optable::_data(subsec) 0
}

proc ::optable::_title {} {
  set fmt $::optable::_data(fmt)
  set title $::tr(OprepTitle)
  if {$fmt == "latex"} {
    return "\\begin{center}{\\LARGE \\bf $title}\\end{center}\n\n"
  } elseif {$fmt == "html"} {
    return "<h1><center>$title</center></h1>\n\n"
  } elseif {$fmt == "ctext"} {
    return "<h1><center>$title</center></h1>\n\n"
  }
  set r    "--------------------------------------------------------------"
  append r "\n                        [string toupper $title]\n"
  append r "--------------------------------------------------------------"
  append r "\n\n"
  return $r
}

proc ::optable::_sec {text} {
  set fmt $::optable::_data(fmt)
  incr ::optable::_data(sec)
  set ::optable::_data(subsec) 0
  if {$fmt == "latex"} {
    return "\n\n\\section{$text}\n"
  } elseif {$fmt == "html"} {
    return "\n<h2>$::optable::_data(sec). $text</h2>\n"
  } elseif {$fmt == "ctext"} {
    return "<h4>$::optable::_data(sec). $text</h4>"
  }
  set line "$::optable::_data(sec). [string toupper $text]"
  set underline "-----------------------------------------------------"
  return "\n\n$line\n[string range $underline 1 [string length $line]]\n"
}

proc ::optable::_subsec {text} {
  set fmt $::optable::_data(fmt)
  incr ::optable::_data(subsec)
  if {$fmt == "latex"} {
    return "\n\\subsection{$text}\n\n"
  } elseif {$fmt == "html"} {
    return "\n<h3>$::optable::_data(sec).$::optable::_data(subsec) $text</h3>\n\n"
  } elseif {$fmt == "ctext"} {
    return "\n<maroon><b>$::optable::_data(sec).$::optable::_data(subsec) $text</b></maroon>\n\n"
  }
  return "\n$::optable::_data(sec).$::optable::_data(subsec)  $text\n\n"
}
################################################################################
# report:
#   Produces a report in the appropriate format. If "withTable" is true,
#   the theory table is also included.
################################################################################
proc ::optable::report {fmt withTable {flipPos 0}} {
  global tr
  sc_report opening format $fmt
  set fmt [string tolower $fmt]
  set ::optable::_data(fmt) $fmt
  ::optable::_reset
  
  # numRows: the number of rows to show in the theory table.
  # If it is zero, the number of rows if decided according to the
  # number of games in the report.
  set numRows 0
  
  # Specify whether a theory table is to be printed, so note numbers
  # can be generated and displayed if necessary:
  sc_report opening notes $withTable $numRows
  
  set n "\n"; set p "\n\n"; set preText ""; set postText ""
  set percent "%"; set bullet "  * "
  if {$fmt == "latex"} {
    set n "\\\\\n"; set p "\n\n"
    #set preText "{\\samepage\\begin{verbatim}\n"
    #set postText "\\end{verbatim}\n}\n"
    set percent "\\%"; set bullet "\\hspace{0.5cm}\$\\bullet\$"
  } elseif {$fmt == "html"} {
    set n "<br>\n"; set p "<p>\n\n"
    set preText "<pre>\n"; set postText "</pre>\n"
  } elseif {$fmt == "ctext"} {
    set preText "<tt>"; set postText "</tt>"
  }
  
  # Generate the report:
  set games $tr(games)
  set moves $tr(moves)
  set counts [sc_report opening count]
  set rgames [lindex $counts 0]
  set tgames [lindex $counts 1]
  
  set r {}
  append r $::optable::_docStart($fmt)
  set title $::tr(OprepTitle)
  set r [string map [list "\[OprepTitle\]" $title] $r]
  append r [::optable::_title]
  append r "$tr(Database): [file tail [sc_base filename]] "
  append r "([::utils::thousands [sc_base numGames]] $games)$n"
  append r "$tr(OprepReport): [::trans [sc_report opening line]] ("
  if {$fmt == "ctext"} {
    append r "<darkblue><run sc_report opening select all 0; ::windows::stats::Refresh>"
  }
  append r "$rgames"
  if {$fmt == "ctext"} { append r "</run></darkblue>"; }
  append r " $games)$n"
  set eco [sc_report opening eco]
  if {$eco != ""} {
    append r "$tr(ECO): $eco$n"
  }
  
  append r "$::tr(OprepGenerated) Scid [sc_info version], [::utils::date::today]\n"
  if {$fmt == "latex"} {
    if {$flipPos} {
      append r $::optable::_data(bdLaTeX_flip)
    } else {
      append r $::optable::_data(bdLaTeX)
    }
    append r {$$\showboard$$}
  } elseif {$fmt == "html"} {
    if {$flipPos} {
      append r $::optable::_data(bdHTML_flip)
    } else {
      append r $::optable::_data(bdHTML)
    }
  } elseif {$fmt == "ctext"} {
    append r "\n<center><window .oprepWin.text.bd></center>\n"
  }
  if {$rgames == 0} {
    append r $::optable::_docEnd($fmt)
    return $r
  }
  
  if {$::optable(Stats) > 0  ||
    $::optable(Oldest) > 0  ||
    $::optable(Newest) > 0  ||
    $::optable(Popular) > 0  ||
    ($::optable(MostFrequent) > 0 &&
    ($::optable(MostFrequentWhite) || $::optable(MostFrequentBlack)))} {
    append r [::optable::_sec $tr(OprepStatsHist)]
  }
  if {$::optable(Stats)} {
    append r [::optable::_subsec $tr(OprepStats)]
    append r [::optable::stats $fmt]
  }
  if {$::optable(Oldest) > 0} {
    append r [::optable::_subsec $tr(OprepOldest)]
    append r [sc_report opening best o $::optable(Oldest)]
  }
  if {$::optable(Newest) > 0} {
    append r [::optable::_subsec $tr(OprepNewest)]
    append r [sc_report opening best n $::optable(Newest)]
  }
  
  if {$::optable(Popular) > 0} {
    append r [::optable::_subsec $tr(OprepPopular)]
    set next ""
    if {$fmt == "latex"} { set next " & " }
    
    # A table showing popularity by year ranges:
    if {$fmt == "latex"} {
      append r "\\begin{tabular}{lccccccc}\n\\hline\n"
    } else {
      append r $preText
    }
    
    set sYear $tr(Year)
    set sEvery [::utils::string::Capital $tr(OprepEvery)]
    regsub "%u" $sEvery X sEvery
    set len [string length $sYear]
    if {[string length $sEvery] > $len} { set len [string length $sEvery] }
    append r [::utils::string::Pad $tr(Year) $len]
    foreach range {1800-99 1900-49 1950-69 1970-79 1980-89 1990-99 2000-09} {
      append r $next
      append r [::utils::string::PadCenter $range 8]
    }
    
    append r $n
    append r [::utils::string::Pad $sEvery $len]
    foreach y {1800 1900 1950 1970 1980 1990 2000} {
      append r $next
      append r [::utils::string::PadCenter $::optable::_data(range$y) 8]
    }
    append r $n
    if {$fmt == "latex"} {
      append r "\\hline\n\\end{tabular}\n"
    } else {
      append r $postText
    }
    
    append r "\n"
    
    # A table showing popularity in the last 1/5/10 years:
    if {$fmt == "latex"} {
      append r "\\begin{tabular}{lrr}\n"
    }
    
    foreach y {All 10 5 1} {
      if {$fmt == "ctext"} { append r "<tt>" }
      append r $tr(OprepFreq$y)
      if {$fmt == "ctext"} { append r "</tt>" }
      append r $next
      append r [format $tr(OprepEvery) $::optable::_data(ratio$y)]
      if {$y != "All"} {
        append r $next
        set d $::optable::_data(delta$y)
        if {$d > 0} {
          append r " ([format $tr(OprepUp) $d $percent])"
        } elseif {$d < 0} {
          append r " ([format $tr(OprepDown) [expr 0- $d] $percent])"
        } else {
          append r " ($tr(OprepSame))"
        }
      }
      append r "$n"
    }
    if {$fmt == "latex"} {
      append r "\\end{tabular}\n"
    }
  }
  
  if {$::optable(MostFrequent) > 0  &&  $::optable(MostFrequentWhite)} {
    append r [::optable::_subsec "$tr(OprepMostFrequent) ($tr(White))"]
    append r [sc_report opening players white $::optable(MostFrequent)]
  }
  if {$::optable(MostFrequent) > 0  &&  $::optable(MostFrequentBlack)} {
    append r [::optable::_subsec "$tr(OprepMostFrequent) ($tr(Black))"]
    append r [sc_report opening players black $::optable(MostFrequent)]
  }
  
  if {$::optable(AvgPerf)  ||  $::optable(HighRating)} {
    append r [::optable::_sec $tr(OprepRatingsPerf)]
  }
  if {$::optable(AvgPerf)} {
    append r [::optable::_subsec $tr(OprepAvgPerf)]
    set e [sc_report opening elo white]
    set welo [lindex $e 0]; set wng [lindex $e 1]
    set bpct [lindex $e 2]; set bperf [lindex $e 3]
    set e [sc_report opening elo black]
    set belo [lindex $e 0]; set bng [lindex $e 1]
    set wpct [lindex $e 2]; set wperf [lindex $e 3]
    append r "$tr(OprepWRating): $welo ($wng $games);  "
    append r "$tr(OprepWPerf): $wperf ($wpct$percent vs $belo)$n"
    append r "$tr(OprepBRating): $belo ($bng $games);  "
    append r "$tr(OprepBPerf): $bperf ($bpct$percent vs $welo)$n"
  }
  
  if {$::optable(HighRating) > 0} {
    append r [::optable::_subsec $tr(OprepHighRating)]
    append r [sc_report opening best a $::optable(HighRating)]
  }
  
  if {$::optable(Results)  ||
    ($::optable(Shortest) > 0  &&
    ($::optable(ShortestBlack) || $::optable(ShortestBlack)))} {
    append r [::optable::_sec $tr(OprepTrends)]
  }
  
  if {$::optable(Results)} {
    append r [::optable::_subsec $::tr(OprepResults)]
    append r [::optable::results opening $fmt]
  }
  
  if {$::optable(Shortest) > 0  &&  $::optable(ShortestWhite)} {
    append r [::optable::_subsec "$tr(OprepShortest) ($tr(White))"]
    append r [sc_report opening best w $::optable(Shortest)]
  }
  if {$::optable(Shortest) > 0  &&  $::optable(ShortestBlack)} {
    append r [::optable::_subsec "$tr(OprepShortest) ($tr(Black))"]
    append r [sc_report opening best b $::optable(Shortest)]
  }
  
  if {$::optable(MoveOrders) > 0  ||
    $::optable(MovesFrom) > 0  ||
    $::optable(Themes) > 0  ||
    $::optable(Endgames) > 0} {
    append r [::optable::_sec $tr(OprepMovesThemes)]
  }
  if {$::optable(MoveOrders) > 0} {
    append r [::optable::_subsec $tr(OprepMoveOrders)]
    set nOrders [sc_report opening moveOrders 0]
    set maxOrders $::optable(MoveOrders)
    if {$nOrders == 1} {
      append r $tr(OprepMoveOrdersOne)
    } elseif {$nOrders <= $maxOrders} {
      append r [format $tr(OprepMoveOrdersAll) $nOrders]
    } else {
      append r [format $tr(OprepMoveOrdersMany) $nOrders $maxOrders]
    }
    append r $n
    append r [::trans [sc_report opening moveOrders $maxOrders]]
  }
  if {$::optable(MovesFrom)} {
    append r [::optable::_subsec $tr(OprepMovesFrom)]
    if {$fmt == "latex"} {
      append r $::optable::_data(latexTree)
    } else {
      append r $preText
      append r $::optable::_data(tree)
      append r $postText
    }
  }
  
  if {$::optable(Themes) > 0} {
    append r [::optable::_subsec $tr(OprepThemes)]
    append r [sc_report opening themes $tr(OprepThemeDescription:) \
        $tr(OprepThemeSameCastling:) $tr(OprepThemeOppCastling:) \
        $tr(OprepThemeKPawnStorm:) $tr(OprepThemeQueenswap:) \
        $tr(OprepTheme1BishopPair:) \
        $tr(OprepThemeWIQP:) $tr(OprepThemeBIQP:) \
        $tr(OprepThemeWP567:) $tr(OprepThemeBP234:) \
        $tr(OprepThemeOpenCDE:) ]
  }
  
  if {$::optable(Endgames) > 0} {
    append r [::optable::_subsec $tr(OprepEndgames)]
    append r "$tr(OprepEndClass:)$n"
    append r [sc_report opening endmat]
  }
  
  if {$withTable  &&  $::optable(MaxGames) > 0} {
    set sec [::optable::_sec $tr(OprepTheoryTable)]
    set comment ""
    if {$tgames > $::optable(MaxGames)} {
      set comment [format $tr(OprepTableComment) $::optable(MaxGames)]
    }
    append r [sc_report opening print $numRows $sec $comment]
    # puts [sc_report opening print $numRows $sec $comment]
  }
  
  append r $::optable::_docEnd($fmt)
  
  # Eszet (ss) characters seem to be mishandled by LaTeX, even with
  # the font encoding package, so convert them explicitly:
  if {$fmt == "latex"} { regsub -all ß $r {{\\ss}} r }
  
  return $r
}

# table:
#   Produces only the ECO table, not any other part of the report.
#
proc ::optable::table {fmt} {
  sc_report opening format $fmt
  set ::optable::_data(fmt) $fmt
  set r {}
  append r $::optable::_docStart($fmt)
  set r [string map [list "\[OprepTitle\]" $::tr(OprepTitle)] $r]
  append r [sc_report opening print]
  append r $::optable::_docEnd($fmt)
  return $r
}


set reportFavorites {}

# updateFavoritesMenu
#   Update the Favorites menu in the report window, adding a
#   command for each favorite report position.
#
proc ::optable::updateFavoritesMenu {} {
  set m .oprepWin.menu.favorites
  $m delete 3 end
  $m add separator
  foreach entry $::reportFavorites {
    set name [lindex $entry 0]
    set moves [lindex $entry 1]
    $m add command -label $name \
        -command "importMoveList [list $moves]; ::optable::makeReportWin"
  }
  if {[llength $::reportFavorites] == 0} {
    $m entryconfigure 1 -state disabled
    $m entryconfigure 2 -state disabled
  } else {
    $m entryconfigure 1 -state normal
    $m entryconfigure 2 -state normal
  }
}

# favoriteReportNames
#   Return a list of the favorite report names.
#
proc ::optable::favoriteReportNames {} {
  set reportNames {}
  foreach entry $::reportFavorites {
    lappend reportNames [lindex $entry 0]
  }
  return $reportNames
}

# addFavoriteDlg
#   Adds the current position to the opening report favorites list.
#
proc ::optable::addFavoriteDlg {} {
  set w .addFavoriteDlg
  toplevel $w
  wm title $w "Scid: Add Opening Report Favorite"
  label $w.name -text "Enter a name for the opening report of this position:"
  pack $w.name -side top
  # label $w.name2 -text "(Use letters, digits, spaces and undercores only)"
  # pack $w.name2 -side top
  entry $w.e -width 40
  pack $w.e -side top -fill x -padx 2
  addHorizontalRule $w
  label $w.old -text "Existing favorite report names:"
  pack $w.old -side top
  pack [frame $w.existing] -side top -fill x -padx 2
  text $w.existing.list -width 30 -height 10 -background gray90 \
      -yscrollcommand [list $w.existing.ybar set]
  scrollbar $w.existing.ybar -command [list $w.existing.list yview]
  pack $w.existing.ybar -side right -fill y
  pack $w.existing.list -side left -fill both -expand yes
  foreach entry $::reportFavorites {
    $w.existing.list insert end "[lindex $entry 0]\n"
  }
  $w.existing.list configure -state disabled
  addHorizontalRule $w
  frame $w.b
  pack $w.b -side bottom -fill x
  button $w.b.ok -text OK -command ::optable::addFavoriteOK
  button $w.b.cancel -text $::tr(Cancel) -command "grab release $w; destroy $w"
  pack $w.b.cancel $w.b.ok -side right -padx 5 -pady 5
  focus $w.e
  grab $w
}

proc ::optable::addFavoriteOK {} {
  global reportFavorites
  set w .addFavoriteDlg
  set reportName [$w.e get]
  set err ""
  if {$reportName == ""} {
    set err "The report name must not be empty."
  } elseif {[lsearch -exact [::optable::favoriteReportNames] $reportName] >= 0} {
    set err "That name is already used for another favorite report position."
  } else {
    lappend reportFavorites [list $reportName [sc_game moves]]
    ::optable::saveFavorites
    ::optable::updateFavoritesMenu
    grab release $w
    destroy $w
    return
  }
  tk_messageBox -title Scid -icon info -type ok -message $err
}

set reportFavoritesName ""

# editFavoritesDlg
#   Open the dialog box for editing the list of opening report
#   favorite positions.
#
proc ::optable::editFavoritesDlg {} {
  global reportFavorites reportFavoritesTemp reportFavoritesName
  set w .editFavoritesDlg
  if {[winfo exists $w]} { return }
  
  set ::reportFavoritesTemp $::reportFavorites
  toplevel $w
  wm title $w "Scid: [tr OprepFavoritesEdit]"
  # wm transient $w .
  bind $w <F1> {helpWindow Reports Opening}
  entry $w.e -width 60 -foreground black -background white \
      -textvariable reportFavoritesName -font font_Small -exportselection 0
  bind $w.e <FocusIn>  "$w.e configure -background lightYellow"
  bind $w.e <FocusOut> "$w.e configure -background white"
  
  trace variable reportFavoritesName w ::optable::editFavoritesRefresh
  pack $w.e -side top -fill x
  pack [frame $w.b] -side bottom -fill x
  autoscrollframe $w.f listbox $w.f.list -width 50 -height 10 \
      -fg black -bg white -exportselection 0 -font font_Small -setgrid 1
  pack $w.f -side top -fill both -expand yes
  bind $w.f.list <<ListboxSelect>>  ::optable::editFavoritesSelect
  foreach entry $::reportFavoritesTemp {
    set name [lindex $entry 0]
    set moves [lindex $entry 1]
    $w.f.list insert end "$name \[$moves\]"
  }
  button $w.b.delete -text $::tr(Delete)  -command ::optable::editFavoritesDelete
  button $w.b.up -image bookmark_up -command {::optable::editFavoritesMove up}
  button $w.b.down -image bookmark_down -command {::optable::editFavoritesMove down}
  foreach i [list $w.b.up $w.b.down] {
    $i configure -padx 0 -pady 0 -borderwidth 1
  }
  button $w.b.ok -text "OK" -command ::optable::editFavoritesOK
  button $w.b.cancel -text "Cancel" -command {
    catch {grab release .editFavoritesDlg}
    destroy .editFavoritesDlg
  }
  pack $w.b.delete $w.b.up $w.b.down -side left -padx 2 -pady 2
  pack $w.b.cancel $w.b.ok -side right -padx 2 -pady 2
  set editFavoritesName ""
  
  wm withdraw $w
  update idletasks
  set x [expr {[winfo screenwidth $w]/2 - [winfo reqwidth $w]/2 \
        - [winfo vrootx .]}]
  set y [expr {[winfo screenheight $w]/2 - [winfo reqheight $w]/2 \
        - [winfo vrooty .]}]
  wm geom $w +$x+$y
  wm protocol $w WM_DELETE_WINDOW [list $w.b.cancel invoke]
  wm deiconify $w
  update
  catch {grab $w}
}

proc ::optable::editFavoritesRefresh {args} {
  global reportFavoritesTemp reportFavoritesName
  set list .editFavoritesDlg.f.list
  set sel [lindex [$list curselection] 0]
  if {$sel == ""} { return }
  set name $reportFavoritesName
  set e [lindex $reportFavoritesTemp $sel]
  set moves [lindex $e 1]
  set e [lreplace $e 0 0 $name]
  set reportFavoritesTemp [lreplace $reportFavoritesTemp $sel $sel $e]
  $list insert $sel "$name \[$moves\]"
  $list delete [expr $sel + 1]
  $list selection clear 0 end
  $list selection set $sel
}

proc ::optable::editFavoritesSelect {} {
  set list .editFavoritesDlg.f.list
  set sel [lindex [$list curselection] 0]
  if {$sel == ""} {
    set ::reportFavoritesName ""
    return
  }
  if {$sel >= [llength $::reportFavoritesTemp]} {
    $list selection clear 0 end
    set ::reportFavoritesName ""
    return
  }
  set e [lindex $::reportFavoritesTemp $sel]
  set ::reportFavoritesName [lindex $e 0]
}

proc ::optable::editFavoritesDelete {} {
  global reportFavoritesTemp
  set w .editFavoritesDlg
  set list $w.f.list
  set sel [lindex [$list curselection] 0]
  if {$sel == ""} { return }
  set reportFavoritesTemp [lreplace $reportFavoritesTemp $sel $sel]
  $list selection clear 0 end
  $list delete $sel
  set ::reportFavoritesName ""
  
}

proc ::optable::editFavoritesMove {dir} {
  global reportFavoritesTemp
  set w .editFavoritesDlg
  set list $w.f.list
  set sel [lindex [$list curselection] 0]
  if {$sel == ""} { return }
  set e [lindex $reportFavoritesTemp $sel]
  set name [lindex $e 0]
  set moves [lindex $e 1]
  set text "$name \[$moves\]"
  
  set newsel $sel
  if {$dir == "up"} {
    incr newsel -1
    if {$newsel < 0} { return }
  } else {
    incr newsel
    if {$newsel >= [$list index end]} { return }
  }
  set reportFavoritesTemp [lreplace $reportFavoritesTemp $sel $sel]
  set reportFavoritesTemp [linsert $reportFavoritesTemp $newsel $e]
  $list selection clear 0 end
  $list delete $sel
  $list insert $newsel $text
  $list selection set $newsel
}

proc ::optable::editFavoritesOK {} {
  set w .editFavoritesDlg
  catch {grab release $w}
  destroy $w
  set ::reportFavorites $::reportFavoritesTemp
  ::optable::saveFavorites
  ::optable::updateFavoritesMenu
}

proc ::optable::favoritesFilename {} {
  return [scidConfigFile reports]
}

proc ::optable::saveFavorites {} {
  set fname [::optable::favoritesFilename]
  if {[catch {open $fname w} f]} {
    # tk_messageBox ...
    return
  }
  puts $f "# Scid opening report favorites file"
  puts $f ""
  puts $f "set reportFavorites [list $::reportFavorites]"
  close $f
}

proc ::optable::loadFavorites {} {
  global reportFavorites
  set fname [::optable::favoritesFilename]
  catch {source $fname}
}

::optable::loadFavorites

set reportFormat html
set reportType full

proc ::optable::generateFavoriteReports {} {
  global reportFavorites
  if {[llength $reportFavorites] == 0} {
    tk_messageBox -title "Scid" -type ok -icon info \
        -message "You have no favorite report positions."
    return
  }
  set ::reportDir $::initialDir(report)
  
  set w .reportFavoritesDlg
  if {[winfo exists $w]} { return }
  toplevel $w
  wm title $w "Scid: Generate Reports..."
  pack [label $w.typelabel -text "Select the report type:" -font font_Bold] -side top
  pack [frame $w.type] -side top -padx 2
  radiobutton $w.type.full -text "Full" -variable reportType -value full
  radiobutton $w.type.compact -text "Compact (no theory table)" -variable reportType -value compact
  radiobutton $w.type.theory -text "Theory table only" -variable reportType -value theory
  pack $w.type.full $w.type.compact $w.type.theory -side left -padx 4
  addHorizontalRule $w
  pack [label $w.fmtlabel -text "Select the report file format:" -font font_Bold] -side top
  pack [frame $w.fmt] -side top -padx 2
  radiobutton $w.fmt.text -text "Plain text (.txt)" -variable reportFormat -value text
  radiobutton $w.fmt.html -text "HTML" -variable reportFormat -value html
  radiobutton $w.fmt.latex -text "LaTeX" -variable reportFormat -value latex
  pack $w.fmt.text $w.fmt.html $w.fmt.latex -side left -padx 4
  addHorizontalRule $w
  pack [frame $w.dir] -side top -padx 2 -pady 2
  label $w.dir.label -text "Save reports in the folder: " -font font_Bold
  entry $w.dir.entry -background white -textvariable ::reportDir
  button $w.dir.choose -text $::tr(Browse...) -command {
    set tmpdir [tk_chooseDirectory -parent .reportFavoritesDlg \
        -title "Scid: Choose Report Folder"]
    if {$tmpdir != ""} {
      set ::reportDir [file nativename $tmpdir]
    }
  }
  pack $w.dir.label -side left
  pack $w.dir.choose -side right
  pack $w.dir.entry -side left -fill x
  addHorizontalRule $w
  pack [frame $w.b] -side bottom -fill x
  button $w.b.ok -text "OK"\
      -command "::optable::reportFavoritesOK; grab release $w; destroy $w; ::optable::makeReportWin"
  button $w.b.cancel -text $::tr(Cancel) -command "grab release $w; destroy $w"
  pack $w.b.cancel $w.b.ok -side right -padx 5 -pady 5
  grab $w
}

proc ::optable::reportFavoritesOK {} {
  global reportDir reportFormat reportType
  set ::initialDir(report) $reportDir
  set fmt $reportFormat
  switch $reportFormat {
    "html" { set suffix ".html" }
    "text" { set suffix ".txt" }
    "latex" { set suffix "tex" }
  }
  
  set w .reportsProgress
  toplevel $w
  wm withdraw $w
  wm title $w "Scid: Generating Reports"
  bind $w <Visibility> "raiseWin $w"
  pack [label $w.t -width 40 -text "Generating reports. Please wait..." -font font_Bold] -side top -pady 5
  pack [label $w.report] -side top -pady 5
  ::utils::win::Centre $w
  wm deiconify $w
  grab $w
  update
  
  set count 0
  set total [llength $::reportFavorites]
  foreach entry $::reportFavorites {
    set name [lindex $entry 0]
    set moves [lindex $entry 1]
    set fname [file join $reportDir "$name$suffix"]
    if {[catch {open $fname w} f]} {
      tk_messageBox -title "Scid" -icon warning -type ok \
          -message "Unable to write file: $fname\n$f"
      grab release $w
      destroy $w
      return
    }
    incr count
    $w.report configure -text "$count / $total: $name$suffix"
    update
    sc_game push
    sc_move addSan $moves
    ::optable::makeReportWin -nodisplay -noprogress
    if {$reportType == "theory"} {
      set report [::optable::table $fmt]
    } elseif {$reportType == "compact"} {
      set report [::optable::report $fmt 0 $::optable::_flip]
    } else {
      set report [::optable::report $fmt 1 $::optable::_flip]
    }
    if {$::hasEncoding  &&  $::langEncoding($::language) != ""} {
      catch {set report [encoding convertto $::langEncoding($::language) $report]}
    }
    sc_game pop
    puts $f $report
    close $f
  }
  grab release $w
  destroy $w
}

# end of optable.tcl
# preport.tcl: Player reports.
# Part of Scid. Copyright 2003 Shane Hudson

namespace eval ::preport {}
array set ::preport::_data {}

set preport(MaxGames) 400

set ::preport::_player ""
set ::preport::_color white
set ::preport::_pos start
set ::preport::_clipbase 0

# preportDlg
#   Present a dialog allowing the user to select the
#   player and color for which to generate a player report.
#
proc ::preport::preportDlg {args} {
  if {[sc_base numGames] == 0} {
    tk_messageBox -title "Scid" -type ok -icon warning -message "No games in current base"
    return
  }
  # Set default player and color if parameters are provided
  if {[llength $args] >= 1} {
    set ::preport::_player [lindex $args 0]
    if {$::preport::_player == [sc_game info white]} {
      set ::preport::_color white
    } elseif {$::preport::_player == [sc_game info black]} {
      set ::preport::_color black
    }
  }
  if {[llength $args] >= 2} {
    set ::preport::_color [lindex $args 1]
  }
  
  set w .preportDlg
  if {[winfo exists $w]} { return }
  toplevel $w
  wm title $w "Scid: [tr ToolsPlayerReport]"
  wm resizable $w 0 0
  pack [label $w.plabel -text "Generate Player Report"]
  pack [frame $w.g] -side top -fill x -expand yes -padx 2
  label $w.g.where -text "Player:"
  grid $w.g.where -row 0 -column 0 -sticky w
  ttk::combobox $w.g.player -width 40 -textvariable ::preport::_player
  ::utils::history::SetCombobox ::preport::_player $w.g.player
  grid $w.g.player -row 0 -column 1 -sticky we
  label $w.g.has -text "Color:"
  grid $w.g.has -row 1 -column 0 -sticky w
  frame $w.g.color
  radiobutton $w.g.color.white -text $::tr(White) \
      -variable ::preport::_color -value white
  frame $w.g.color.gap -width 5
  radiobutton $w.g.color.black -text $::tr(Black) \
      -variable ::preport::_color -value black
  pack $w.g.color.white $w.g.color.gap $w.g.color.black -side left
  grid $w.g.color -row 1 -column 1 -sticky w
  label $w.g.pos -text "Start position:"
  grid $w.g.pos -row 2 -column 0
  frame $w.g.pselect
  radiobutton $w.g.pselect.start -text "Standard start position" \
      -variable ::preport::_pos -value start
  radiobutton $w.g.pselect.current -text "Current board position" \
      -variable ::preport::_pos -value current
  pack $w.g.pselect.start $w.g.pselect.current -side left
  grid $w.g.pselect -row 2 -column 1 -sticky w
  checkbutton $w.g.clipbase -text $::tr(PReportClipbase) \
      -variable ::preport::_clipbase
  grid $w.g.clipbase -row 3 -column 1 -sticky w
  addHorizontalRule $w
  pack [frame $w.b] -side bottom -fill x
  pack [frame $w.b2] -side bottom -fill x
  set whiteName [sc_game info white]
  set blackName [sc_game info black]
  dialogbutton $w.b2.white -text "$::tr(White) ($whiteName)" -command {
    set ::preport::_player [sc_game info white]
    set ::preport::_color white
  }
  dialogbutton $w.b2.black -text "$::tr(Black) ($blackName)" -command {
    set ::preport::_player [sc_game info black]
    set ::preport::_color black
  }
  if {$whiteName == ""  ||  $whiteName == "?"} {
    $w.b2.white configure -state disabled
  }
  if {$blackName == ""  ||  $blackName == "?"} {
    $w.b2.black configure -state disabled
  }
  
  dialogbutton $w.b.help -text $::tr(Help) \
      -command {helpWindow Reports Player}
  dialogbutton $w.b.ok -text OK \
      -command "catch {grab release $w}; destroy $w; ::preport::makeReportWin"
  dialogbutton $w.b.cancel -text $::tr(Cancel) \
      -command "catch {grab release $w}; destroy $w"
  # foreach button {help ok cancel} {
  # $w.b.$button configure -font font_Small
  # }
  if {$whiteName != ""  &&  $whiteName != "?"} {
    packbuttons left $w.b2.white
  }
  if {$blackName != ""  &&  $blackName != "?"} {
    packbuttons right $w.b2.black
  }
  packbuttons right $w.b.cancel $w.b.ok
  packbuttons left $w.b.help
  if {[sc_base current] == [sc_info clipbase]} {
    $w.g.clipbase configure -state disabled
  }
  bind $w <Return> [list $w.b.ok invoke]
  bind $w <Escape> [list $w.b.cancel invoke]
  ::utils::win::Centre $w
  grab $w
  focus $w.g.player
}

proc ::preport::ConfigMenus {{lang ""}} {
  if {! [winfo exists .preportWin]} { return }
  if {$lang == ""} { set lang $::language }
  set m .preportWin.menu
  foreach idx {0 1} tag {File Help} {
    configMenuText $m $idx Oprep$tag $lang
  }
  foreach idx {0 1 2 4 6} tag {Text Html LaTeX Options Close} {
    configMenuText $m.file $idx OprepFile$tag $lang
  }
  foreach idx {0 1} tag {Report Index} {
    configMenuText $m.helpmenu $idx OprepHelp$tag $lang
  }
  
}

proc ::preport::makeReportWin {args} {
  if {! [sc_base inUse]} { return }
  set showProgress 1
  set args [linsert $args 0 "args"]
  if {[lsearch -exact $args "-noprogress"] >= 0} { set showProgress 0 }
  if {$showProgress} {
    set w .progress
    toplevel $w
    wm withdraw $w
    wm title $w "Scid: [tr ToolsPlayerReport]"
    bind $w <Visibility> "raiseWin $w"
    
    pack [frame $w.b] -side bottom -fill x
    set ::preport::_interrupt 0
    button $w.b.cancel -text $::tr(Cancel) -command {
      set ::preport::_interrupt 1
      sc_progressBar
    }
    pack $w.b.cancel -side right -pady 5 -padx 2
    
    foreach i {1 2} name {"Searching database for report games"
      "Generating report information"} {
      label $w.text$i -text "$i. $name"
      pack $w.text$i -side top
      canvas $w.c$i -width 400 -height 20 -bg white -relief solid -border 1
      $w.c$i create rectangle 0 0 0 0 -fill blue -outline blue -tags bar
      $w.c$i create text 395 10 -anchor e -font font_Regular -tags time \
          -fill black -text "0:00 / 0:00"
      pack $w.c$i -side top -pady 10
    }
    wm resizable $w 0 0
    # Set up geometry for middle of screen:
    set x [winfo screenwidth $w]; set x [expr $x - 400]; set x [expr $x / 2]
    set y [winfo screenheight $w]; set y [expr $y - 20]; set y [expr $y / 2]
    wm geometry $w +$x+$y
    wm deiconify $w
    grab $w.b.cancel
    sc_progressBar $w.c1 bar 401 21 time
    busyCursor .
  }

  # if the report is to be done from the starting position, a full
  # search of the base has to be ensured. Remove all filters including
  # tree filters:
  if {$::preport::_pos == "start"} { sc_filter clear }

  set searchArgs {}
  lappend searchArgs -filter RESET
  lappend searchArgs "-$::preport::_color"
  lappend searchArgs "\"$::preport::_player\""
  eval sc_search header $searchArgs
  if {$showProgress} {
    if {$::preport::_interrupt} {
      unbusyCursor .
      catch {grab release $w.b.cancel}
      destroy $w
      return
    }
    sc_progressBar $w.c2 bar 401 21 time
  }
  
  ::utils::history::AddEntry ::preport::_player $::preport::_player
  
  if {$::preport::_pos == "start"} { sc_game push }
  sc_search board AND Exact false 0
  sc_report player create $::preport(ExtraMoves) $::preport(MaxGames)
  if {$::preport::_pos == "start"} { sc_game pop }
  if {$::preport::_clipbase} {
    if {[sc_base current] != [sc_info clipbase]} {
      sc_clipbase clear
      sc_filter copy [sc_base current] [sc_info clipbase]
    }
  }
  if {$showProgress} {
    unbusyCursor .
    catch {grab release $w.b.cancel}
    destroy $w
    if {$::preport::_interrupt} { return }
  }
  set report [::preport::report ctext 1]
  
  if {[lsearch -exact $args "-nodisplay"] >= 0} { return }
  
  set w .preportWin
  if {![winfo exists $w]} {
    toplevel $w
    wm title $w "Scid: $::tr(PReportTitle)"
    menu $w.menu
    $w configure -menu $w.menu
    $w.menu add cascade -label OprepFile -menu $w.menu.file
    $w.menu add cascade -label OprepHelp -menu $w.menu.helpmenu
    foreach i {file helpmenu} {
      menu $w.menu.$i -tearoff 0
    }
    $w.menu.file add command -label OprepFileText \
        -command {::preport::saveReport text}
    $w.menu.file add command -label OprepFileHtml \
        -command {::preport::saveReport html}
    $w.menu.file add command -label OprepFileLaTeX \
        -command {::preport::saveReport latex}
    $w.menu.file add separator
    $w.menu.file add command -label OprepFileOptions \
        -command ::preport::setOptions
    $w.menu.file add separator
    $w.menu.file add command -label Close \
        -command "$w.b.close invoke"
    $w.menu.helpmenu add command -label "Player Report Help" \
        -accelerator F1 -command {helpWindow Reports Player}
    $w.menu.helpmenu add command -label "Index" \
        -command {helpWindow Index}
    
    bind $w <F1> {helpWindow Reports Player}
    bind $w <Escape> "$w.b.close invoke"
    bind $w <Up> "$w.text yview scroll -1 units"
    bind $w <Down> "$w.text yview scroll 1 units"
    bind $w <Prior> "$w.text yview scroll -1 pages"
    bind $w <Next> "$w.text yview scroll 1 pages"
    bind $w <Key-Home> "$w.text yview moveto 0"
    bind $w <Key-End> "$w.text yview moveto 0.99"
    bindMouseWheel $w $w.text
    
    autoscrollframe -bars y $w.scroll text $w.text \
        -height 30 -width 85 -font font_Small -setgrid 1 -wrap word \
        -background white -foreground black -cursor top_left_arrow
    ::htext::init $w.text
    frame $w.b
    button $w.b.opts -text [tr OprepFileOptions] -command ::preport::setOptions
    button $w.b.help -textvar ::tr(Help) -command {helpWindow Reports Player}
    button $w.b.viewHTML -text $::tr(OprepViewHTML) \
        -command ::preport::previewHTML
    button $w.b.update -textvar ::tr(Update...) -command {
      ::preport::preportDlg
    }
    button $w.b.close -textvar ::tr(Close) -command "focus .; destroy $w"
    pack $w.b -side bottom -fill x
    pack $w.scroll -side top -fill both -expand yes
    pack $w.b.close $w.b.update -side right -padx 2 -pady 2
    if {$::windowsOS} {
      pack $w.b.viewHTML -side left -padx 2 -pady 2
    }
    pack $w.b.opts -side left -padx 2 -pady 2
    ::preport::ConfigMenus
    ::utils::win::Centre $w
  }
  
  busyCursor .
  $w.text configure -state normal
  $w.text delete 1.0 end
  regsub -all "\n" $report "<br>" report
  ::htext::display $w.text $report
  $w.text configure -state disabled
  unbusyCursor .
  ::windows::gamelist::Refresh
  ::windows::stats::Refresh
}


proc ::preport::setOptions {} {
  set w .preportOptions
  if {[winfo exists $w]} { return }
  toplevel $w
  pack [frame $w.f] -side top -fill x -padx 5 -pady 5
  set row 0
  foreach i {Stats AvgPerf Results MovesFrom Themes Endgames} {
    set yesno($i) 1
  }
  foreach i {Stats Oldest Newest MostFrequentOpponents Results sep \
        AvgPerf HighRating sep \
        MostFrequentEcoCodes Themes Endgames sep \
        MaxGames ExtraMoves} {
    set from 0; set to 10; set tick 1; set res 1
    if {$i == "MaxGames"} {
      set from 0; set to 500; set tick 100; set res 50
    }
    if {$i == "sep"} {
      frame $w.f.fsep$row -height 2 -borderwidth 2 -relief sunken -bg white
      frame $w.f.tsep$row -height 2 -borderwidth 2 -relief sunken -bg white
      grid $w.f.fsep$row -row $row -column 0 -sticky we -columnspan 4
      #grid $w.f.tsep$row -row $row -column 1 -sticky we -columnspan 2
    } elseif {[info exists yesno($i)]} {
      frame $w.f.f$i
      radiobutton $w.f.f$i.yes -variable ::preport($i) -value 1 \
          -text "$::tr(Yes)   " -font font_Small
      radiobutton $w.f.f$i.no -variable ::preport($i) -value 0 \
          -text "$::tr(No)   "  -font font_Small
      pack $w.f.f$i.yes -side left
      pack $w.f.f$i.no -side right
      label $w.f.t$i -textvar ::tr(Oprep$i) -font font_Small
      grid $w.f.f$i -row $row -column 0 -sticky n
      grid $w.f.t$i -row $row -column 1 -sticky w -columnspan 3
    } else {
      scale $w.f.s$i -variable ::preport($i) -from $from -to $to \
          -width 8 -length 200 -tickinterval $tick -orient horizontal \
          -font font_Small -resolution $res -showvalue 0
      label $w.f.t$i -textvar ::tr(Oprep$i) -font font_Small
      grid $w.f.s$i -row $row -column 0 -sticky we
      grid $w.f.t$i -row $row -column 1 -sticky w -columnspan 3
    }
    grid rowconfigure $w.f $row -pad 2
    incr row
  }
  addHorizontalRule $w
  pack [frame $w.b] -side bottom -fill x
  button $w.b.defaults -textvar ::tr(Defaults) -command {
    array set ::preport [array get ::preportDefaults]
  }
  button $w.b.ok -text "OK" -command {
    destroy .preportOptions
    catch {set ::preport::_data(yview) [lindex [.preportWin.text yview] 0]}
    ::preport::makeReportWin
    catch {.preportWin.text yview moveto $::preport::_data(yview)}
  }
  button $w.b.cancel -textvar ::tr(Cancel) -command {
    array set ::preport [array get ::preport::backup]
    destroy .preportOptions
  }
  pack $w.b.defaults -side left -padx 5 -pady 5
  pack $w.b.cancel $w.b.ok -side right -padx 5 -pady 5
  array set ::preport::backup [array get ::preport]
  wm resizable $w 0 0
  wm title $w  "Scid: [tr ToolsPlayerReport]: [tr OprepFileOptions]"
  bind $w <Escape> "$w.b.cancel invoke"
}


# previewHTML:
#   Saves the report to a temporary file, and invokes the user's web
#   browser to display it.
#
proc ::preport::previewHTML {} {
  busyCursor .
  set tmpdir $::scidLogDir
  set tmpfile "TempPlayerReport"
  set fname [file join $tmpdir $tmpfile]
  if {[catch {set tempfile [open $fname.html w]}]} {
    tk_messageBox -title "Scid: Error writing report" -type ok -icon warning \
        -message "Unable to write the file: $fname.html"
  }
  puts $tempfile [::preport::report html 1]
  close $tempfile
  if {[string match $::tcl_platform(os) "Windows NT"]} {
    catch {exec $::env(COMSPEC) /c start $fname.html &}
  } else {
    catch {exec start $fname.html &}
  }
  unbusyCursor .
}

proc ::preport::saveReport {fmt} {
  set default ".txt"
  set ftype {
    { "Text files" {".txt"} }
    { "All files"  {"*"}    }
  }
  if {$fmt == "latex"} {
    set default ".tex"
    set ftype {
      { "LaTeX files" {".tex" ".ltx"} }
      { "All files"  {"*"}    }
    }
  } elseif {$fmt == "html"} {
    set default ".html"
    set ftype {
      { "HTML files" {".html" ".htm"} }
      { "All files"  {"*"}    }
    }
  }
  
  set fname [tk_getSaveFile -initialdir [pwd] -filetypes $ftype \
      -defaultextension $default -title "Scid: Save opening report"]
  if {$fname == ""} { return }
  
  busyCursor .
  if {[catch {set tempfile [open $fname w]}]} {
    tk_messageBox -title "Scid: Error writing report" -type ok -icon warning \
        -message "Unable to write the file: $fname\n\n"
  } else {
    set report [::preport::report $fmt 1]
    if {$::hasEncoding  &&  $::langEncoding($::language) != ""} {
      catch {set report [encoding convertto $::langEncoding($::language) $report]}
    }
    puts $tempfile $report
    close $tempfile
  }
  unbusyCursor .
}

proc ::preport::_reset {} {
  set ::preport::_data(sec) 0
  set ::preport::_data(subsec) 0
}

proc ::preport::_title {} {
  set fmt $::preport::_data(fmt)
  set title $::tr(PReportTitle)
  if {$fmt == "latex"} {
    return "\\begin{center}{\\LARGE \\bf $title}\\end{center}\n\n"
  } elseif {$fmt == "html"} {
    return "<h1><center>$title</center></h1>\n\n"
  } elseif {$fmt == "ctext"} {
    return "<h1><center>$title</center></h1>\n\n"
  }
  set r    "--------------------------------------------------------------"
  append r "\n                        [string toupper $title]\n"
  append r "--------------------------------------------------------------"
  append r "\n\n"
  return $r
}

proc ::preport::_sec {text} {
  set fmt $::preport::_data(fmt)
  incr ::preport::_data(sec)
  set ::preport::_data(subsec) 0
  if {$fmt == "latex"} {
    return "\n\n\\section{$text}\n"
  } elseif {$fmt == "html"} {
    return "\n<h2>$::preport::_data(sec). $text</h2>\n"
  } elseif {$fmt == "ctext"} {
    return "<h4>$::preport::_data(sec). $text</h4>"
  }
  set line "$::preport::_data(sec). [string toupper $text]"
  set underline "-----------------------------------------------------"
  return "\n\n$line\n[string range $underline 1 [string length $line]]\n"
}

proc ::preport::_subsec {text} {
  set fmt $::preport::_data(fmt)
  incr ::preport::_data(subsec)
  if {$fmt == "latex"} {
    return "\n\\subsection{$text}\n\n"
  } elseif {$fmt == "html"} {
    return "\n<h3>$::preport::_data(sec).$::preport::_data(subsec) $text</h3>\n\n"
  } elseif {$fmt == "ctext"} {
    return "\n<maroon><b>$::preport::_data(sec).$::preport::_data(subsec) $text</b></maroon>\n\n"
  }
  return "\n$::preport::_data(sec).$::preport::_data(subsec)  $text\n\n"
}


proc ::preport::report {fmt {withTable 1}} {
  global tr preport
  sc_report player format $fmt
  set fmt [string tolower $fmt]
  set ::preport::_data(fmt) $fmt
  ::preport::_reset
  
  # numRows: the number of rows to show in the theory table.
  # If it is zero, the number of rows if decided according to the
  # number of games in the report.
  set numRows 0
  
  # Specify whether a theory table is to be printed, so note numbers
  # can be generated and displayed if necessary:
  sc_report player notes $withTable $numRows
  
  set n "\n"; set p "\n\n"; set preText ""; set postText ""
  set percent "%"; set bullet "  * "
  if {$fmt == "latex"} {
    set n "\\\\\n"; set p "\n\n"
    #set preText "{\\samepage\\begin{verbatim}\n"
    #set postText "\\end{verbatim}\n}\n"
    set percent "\\%"; set bullet "\\hspace{0.5cm}\$\\bullet\$"
  } elseif {$fmt == "html"} {
    set n "<br>\n"; set p "<p>\n\n"
    set preText "<pre>\n"; set postText "</pre>\n"
  } elseif {$fmt == "ctext"} {
    set preText "<tt>"; set postText "</tt>"
  }
  
  # Generate the report:
  set games $tr(games)
  set moves $tr(moves)
  set counts [sc_report player count]
  set rgames [lindex $counts 0]
  set tgames [lindex $counts 1]
  
  set r {}
  append r $::optable::_docStart($fmt)
  set r [string map [list "\[OprepTitle\]" $tr(PReportTitle)] $r]
  append r [::preport::_title]
  append r "$tr(Player): \"$::preport::_player\""
  if {$::preport::_color == "white"} {
    append r " $tr(PReportColorWhite)"
  } else {
    append r " $tr(PReportColorBlack)"
  }
  set eco ""
  if {$::preport::_pos == "current"  &&  ![sc_pos isAt start]} {
    append r " [format $tr(PReportMoves) [sc_report player line]]"
    set eco [sc_report player eco]
  }
  append r " ("
  if {$fmt == "ctext"} {
    append r "<darkblue><run sc_report player select all 0; ::windows::stats::Refresh>"
  }
  append r "$rgames"
  if {$fmt == "ctext"} { append r "</run></darkblue>"; }
  append r " $games)$n"
  append r "$tr(Database): [file tail [sc_base filename]] "
  append r "([::utils::thousands [sc_base numGames]] $games)$n"
  if {$eco != ""} {
    append r "$tr(ECO): $eco$n"
  }
  append r "$::tr(OprepGenerated) Scid [sc_info version], [::utils::date::today]$n"
  
  if {$preport(Stats)  ||  $preport(Oldest) > 0  ||  $preport(Newest) > 0  ||
    $preport(MostFrequentOpponents) > 0  ||  $preport(Results)} {
    append r [::preport::_sec $tr(OprepStatsHist)]
  }
  if {$preport(Stats)} {
    append r [::preport::_subsec $tr(OprepStats)]
    append r [::optable::stats $fmt]
  }
  if {$preport(Oldest) > 0} {
    append r [::preport::_subsec $tr(OprepOldest)]
    append r [sc_report player best o $preport(Oldest)]
  }
  if {$preport(Newest) > 0} {
    append r [::preport::_subsec $tr(OprepNewest)]
    append r [sc_report player best n $preport(Newest)]
  }
  if {$preport(MostFrequentOpponents) > 0} {
    append r [::preport::_subsec "$tr(OprepMostFrequentOpponents)"]
    if {$::preport::_color == "white"} {
      append r [sc_report player players black $preport(MostFrequentOpponents)]
    } else {
      append r [sc_report player players white $preport(MostFrequentOpponents)]
    }
  }
  if {$preport(Results)} {
    append r [::preport::_subsec $::tr(OprepResults)]
    append r [::optable::results player $fmt]
  }
  
  if {$preport(AvgPerf)  ||  $preport(HighRating)} {
    append r [::preport::_sec $tr(OprepRatingsPerf)]
  }
  if {$preport(AvgPerf)} {
    append r [::preport::_subsec $tr(OprepAvgPerf)]
    set e [sc_report player elo white]
    set welo [lindex $e 0]; set wng [lindex $e 1]
    set bpct [lindex $e 2]; set bperf [lindex $e 3]
    set e [sc_report player elo black]
    set belo [lindex $e 0]; set bng [lindex $e 1]
    set wpct [lindex $e 2]; set wperf [lindex $e 3]
    append r "$tr(OprepWRating): $welo ($wng $games);  "
    append r "$tr(OprepWPerf): $wperf ($wpct$percent vs $belo)$n"
    append r "$tr(OprepBRating): $belo ($bng $games);  "
    append r "$tr(OprepBPerf): $bperf ($bpct$percent vs $welo)$n"
  }
  if {$preport(HighRating) > 0} {
    append r [::preport::_subsec $tr(OprepHighRating)]
    append r [sc_report player best a $preport(HighRating)]
  }
  
  if {$preport(Themes)  ||  $preport(MostFrequentEcoCodes) > 0  ||
    $preport(Endgames)} {
    append r [::preport::_sec $tr(OprepMovesThemes)]
  }
  if {$preport(MostFrequentEcoCodes) > 0} {
    append r [::preport::_subsec $tr(PReportOpenings)]
    append r [sc_report player eco $preport(MostFrequentEcoCodes)]
  }
  if {$preport(Themes)} {
    append r [::preport::_subsec $tr(OprepThemes)]
    append r [sc_report player themes $tr(OprepThemeDescription:) \
        $tr(OprepThemeSameCastling:) $tr(OprepThemeOppCastling:) \
        $tr(OprepThemeKPawnStorm:) $tr(OprepThemeQueenswap:) \
        $tr(OprepTheme1BishopPair:) \
        $tr(OprepThemeWIQP:) $tr(OprepThemeBIQP:) \
        $tr(OprepThemeWP567:) $tr(OprepThemeBP234:) \
        $tr(OprepThemeOpenCDE:) ]
  }
  if {$preport(Endgames)} {
    append r [::preport::_subsec $tr(OprepEndgames)]
    append r "$tr(OprepEndClass:)$n"
    append r [sc_report player endmat]
  }
  
  if {$withTable  &&  $::preport(MaxGames) > 0} {
    set sec [::preport::_sec $tr(OprepTheoryTable)]
    set comment ""
    if {$tgames > $::preport(MaxGames)} {
      set comment [format $tr(OprepTableComment) $::preport(MaxGames)]
    }
    append r [sc_report player print $numRows $sec $comment]
  }
  append r $::optable::_docEnd($fmt)
  
  # Eszet (ss) characters seem to be mishandled by LaTeX, even with
  # the font encoding package, so convert them explicitly:
  if {$fmt == "latex"} { regsub -all ß $r {{\\ss}} r }
  
  return $r
}

####################
# Player Info window

namespace eval pinfo {
set playerInfoName ""

# the following icons are used as buttons with PND as input, this has
# to be handled specially and they involve some technicallities. All
# other icons and link resolvers come from the config file
image create photo wikiplnk -data {
   R0lGODlhEAAQAIQQAAQCBBkYGSgoKDw6PEhHSFdYV2lqaXp7eoSDhJiYmKmoqbm6ucjHyNjZ2Ono
   6fz9/P///////////////////////////////////////////////////////////////yH+EUNy
   ZWF0ZWQgd2l0aCBHSU1QACH5BAEKABAALAAAAAAQABAAAAV24COOZGmeaDouBbE8CnE0z1E0jVE8
   iPA+BEHDgUg8HAZjI2BwPBIBBcMgQo4KAcajEUQoRIsvOIAQJQC7I+InIhBojQFB1DiUEIBv3Pc0
   lgQFDgoGA1QITncDBwp1AgllJgoCAl8Lk1onbjQPBgIpC5hbbConIQA7
}
image create photo dnblnk -data {
   R0lGODlhFAAUALMAAAAAAGZmZld/u8zMzP8AAP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
   AAAAACH5BAEAAAQALAAAAAAUABQAAARkkMg5BaA4SxHs1RknjB5YdSQJfCGapismvjRLzDTM4vkI
   BB9e7ze4CHPEIsDT8wUGUAsHuKw9o8YAIUCFXQeWzbNQ4K4s37BkOSCTzWkb4dx2x0F0N9a0ZhfA
   ciZnanwYMSARAAA7
}
image create photo seealsolnk -data {
   R0lGODlhFQAVAMZ5AAAAAAEBAAICAQQGAhEXCSEtECMwESouJjw8PDJFGEJcH0xpJGFhYVRuMVV1
   KF6CLH2IbmuVM4+Pj5SUlHysO4imYYGwQYK0PaKiooa6QIe7QKioqIi8Qoq9RIq9RYu9R4y+SI2+
   SY2+SqysrI/ATZDAT62urK6urpHBUJLBUa+vr7GxsZXDVrKyspXEV5bEWJfEWrOzs7W1tZrGX7a2
   tre3t57IZbm5ubq6uru7u6TLbry8vL29vajOdanOdsDAwMHBwavQecLCwqzQe63QfMPDw8TExLDS
   gbDSgsXFxbHTg8bGxsfHx7LUhbTUh8jIyLXVicnJycrKyrfWjcvLy8zMzM3Nzc7OztDQ0L/bmdHR
   0dLS0sbfpNbW1s/ks9bovdbovtrqxNrqxdvqxd3syN3syeLv0ePv0ubx1+jy2urz3fL46vP47Pf3
   9/T57vb68Pn89vv7+/r8+Pz9+v3++/3+/P7+/f7+/v///v///////////////////////////yH+
   EUNyZWF0ZWQgd2l0aCBHSU1QACwAAAAAFQAVAAAH/oAjKi00Nzs/QEJFi4tAPzw3NC0qJy01O0BJ
   T1RWV55XVlVRS0A7NS0rNDt5rK15LxqxsrE7NDE3QHlsRCIcJTaws7JCODI8S3k+GmJzaEMvIXJ5
   cB+ySzw1P1J5HhpsrS9NrUeyUkA3RVZ5KRooUF5sL2R5aXljsldFOUtYeWHssTq4qENnhh06JGJp
   WbKDiRZWdc5wgaEBhD0NZfJMibWFScMtrvKs0eAhDxINSvKY4fjkYx4dYNyYOKAhCKs4NfLgYaFh
   S0uHeXq8sDCAgJM3XzQ4CAAhT5aeTPb1Y9UFAAMqVCpEiGAAwAQ1GhaiU8fqDgIAaNOmvaDhipFs
   TdtatcEgocGCuwUAJMigwZwxZCFfxXogYG+sa7dyBQ5GQQHfWMRSrVosTFatSqoyReH0CZQoUqZa
   CCJkCJEiRkUcQZKkYoPr17Bjyw4EADs=
}

proc setupDefaultResolvers { } {
   set optionF ""
   if {[catch {open [scidConfigFile resolvers] w} optionF]} {
      tk_messageBox -title "Scid: Unable to write file" -type ok -icon warning \
         -message "Unable to write options file: [scidConfigFile resolvers]\n$optionF"
   } else {
      puts $optionF "# Scid resolver configuration"
      puts $optionF "# Version: $::scidVersion, $::scidVersionDate"
      puts $optionF "# This file contains commands in the Tcl language format."
      puts $optionF "# If you edit this file, you must preserve valid Tcl"
      puts $optionF "# format or it will not set your Scid options properly."
      puts $optionF "#"
      puts $optionF "# Define how to interpret IDs stored in ssp files. Each ID has to"
      puts $optionF "# have a unique page to link to. It is currently not possible to link"
      puts $optionF "# to more than one page by means of a single ID, or to get more"
      puts $optionF "# than one button by any ID. Therefore, PND is handled specially"
      puts $optionF "# and within pinfo.tcl"
      puts $optionF "#"
      puts $optionF "# Syntax of the following array's list entries:"
      puts $optionF "#"
      puts $optionF "# IDName: the tag to search for e.g. VIAF searches for"
      puts $optionF "#         %Bio VIAF-lines and so on"
      puts $optionF "# link target url: %ID% is replaced by the ID"
      puts $optionF "# icon name: the icons are specified below as base64 encoded images"
      puts $optionF "#            They must not live in ::pinfo-namespace!"
      puts $optionF "# Link text: what to display in pinfo window"
      puts $optionF "set ::pinfo::idlink(0) {{VIAF} {http://viaf.org/%ID%} {viaflnk} {VIAF}}"
      puts $optionF "set ::pinfo::idlink(1) {{FIDEID} {http://ratings.fide.com/card.phtml?event=%ID%} {fidelnk} {FIDE}}"
      puts $optionF "set ::pinfo::idlink(2) {{ICCFID} {http://www.iccf-webchess.com/PlayerDetails.aspx?id=%ID%} {iccflnk} {ICCF}}"
      puts $optionF "set ::pinfo::idlink(3) {{DSB} {http://www.schachbund.de/dwz/db/spieler.html?zps=%ID%} {dsblnk} {DSB}}"
      puts $optionF "set ::pinfo::idlink(4) {{BCF} {http://grading.bcfservices.org.uk/getref.php?ref=%ID%} {bcflnk} {BCF}}"
      puts $optionF "set ::pinfo::idlink(5) {{SchemingMind} {http://www.schemingmind.com/plyrprofile.aspx?profile_id=%ID%} {smlnk} {SchemingMind}}"
      puts $optionF "#"
      puts $optionF "# Icons for the icons defined here MUST NOT live in ::pinfo namespace"
      puts $optionF "#"
      puts $optionF "image create photo fidelnk -data {"
      puts $optionF "   R0lGODlhEAAQAOecACIxWSY0XSc2XSg2YCc3Xig3Xik3Xyk4Xyo4Xyo4YCo5Xyo5YCs5Xyo6Xys6"
      puts $optionF "   YCs6YSw6YCw6YSw7YSw7Yi07Yi48Yi48Yy88Yi89YzA+ZDE/ZDE/ZTI/ZTJAZTJBZjNBZTNBZjRB"
      puts $optionF "   ZjNCZTRCZjZEaDdEaThEaThGaTlGaTpIazxKbT1KbT9MbkBNb0NQc0VRc0ZScUZUdEhUdEdVdkhV"
      puts $optionF "   dElVdEpXdk1ZeE5ZeFRef1NgfVRgf1dgf1hhf11nhGFsh2JsiGFtiGJtiGNtiGZyi2lzjWt3kHB4"
      puts $optionF "   kHN+lnqEm36GnYCJnYmSo4qTpZWbrpWcq5eerZeer5qgrp6ltaGns6asuKesuqetvK60wrC1wLa6"
      puts $optionF "   xra8x7i9xLu/x7vAyb3CyMvO1MzP09DS2tDT2dHU2dHV2tLV2dPV29PX29fZ3tna3dna3tra3tzd"
      puts $optionF "   4d3d4dze4Nze4d3e4d3e4tzf4d3f4d3f497f4d7f5N/g4d7h497h5t/h5ODi5OHi5eHj5eLj5eLk"
      puts $optionF "   5uPl6OTm6efn6eXo6ejq6+rq6+rq7Orr7Ors6+vs7ezt7+3u7+/w8vDw8O/x8fDx8vHx8vHy9PHz"
      puts $optionF "   9PX19fb29vf39/j4+fr6+/v6+/z9/f39/v//////////////////////////////////////////"
      puts $optionF "   ////////////////////////////////////////////////////////////////////////////"
      puts $optionF "   ////////////////////////////////////////////////////////////////////////////"
      puts $optionF "   ////////////////////////////////////////////////////////////////////////////"
      puts $optionF "   ////////////////////////////////////////////////////////////////////////////"
      puts $optionF "   /////////////////////////////////////////////////////yH+EUNyZWF0ZWQgd2l0aCBH"
      puts $optionF "   SU1QACH5BAEKAP8ALAAAAAAQABAAAAjbAEEIHEiwoMGDBz1IGGDhhIkKBhx0IBhiAgUjWMSYiXRH"
      puts $optionF "   C5IPC0YIfLBji51KV1wESWPpT5chCUBggDGH06UsACYE0DFIEqdGPSBsKIMojxwgRFg84MGmzh5B"
      puts $optionF "   elbccATp0SNGVjgIWBKpUCJFjH7gcPOGDh8yFzAISGLID6A+f4SQCMQIzhovJVqouDFGTZtDk15Q"
      puts $optionF "   8EEI0yZKVGrIgCJJU6ZFRxiAQFAEDR4wVXLYkBImzhklCgY2ENEkChMuX55McYLiQMEOBSCkiEFj"
      puts $optionF "   RgQCGhCC6JCht+7fAwMCADs="
      puts $optionF "}"
      puts $optionF "image create photo iccflnk -data {"
      puts $optionF "   R0lGODlhEAAQAMZqAAAA/wEB/wMD/wQE/wUF/wYG/wcH/wgI/woK/wsL/wwM/xAQ/xER/xIS/xMT"
      puts $optionF "   /xQU/xYW/xcX/xgY/xkZ/xoa/xsb/x4e/yEh/yIi/yUl/yYm/ycn/ykp/zIy/zQ0/zY2/zc3/zo6"
      puts $optionF "   /zs7/zw8/z09/0ZG/0lJ/01N/1hY/1lZ/1pa/1tb/1xc/2Nj/2Vl/2lp/2pq/3R0/3V1/3Z2/3d3"
      puts $optionF "   /3h4/3t7/3x8/39//4SE/4WF/4uL/42N/4+P/5CQ/5KS/5OT/5SU/5WV/5aW/5eX/5iY/5ub/5+f"
      puts $optionF "   /6Cg/6Gh/6en/6mp/6qq/66u/6+v/7S0/7i4/7u7/729/7+//8DA/8LC/8PD/8rK/8zM/83N/87O"
      puts $optionF "   /9PT/9fX/9jY/+Pj/+Tk/+bm/+jo/+vr/+zs//Hx//Ly//T0//b2//j4//z8////////////////"
      puts $optionF "   /////////////////////////////////////////////////////////////////////////yH+"
      puts $optionF "   EUNyZWF0ZWQgd2l0aCBHSU1QACH5BAEKAH8ALAAAAAAQABAAAAfjgFJTaF86R2dpXjlIZ2JQUFIV"
      puts $optionF "   GGMnAAVFaCaWRlQKCRULE1cGBwIgWwQIASFSAAAMDBJKAC4XEEwALRcWTwAUKAwTQwA0GQs9ADIZ"
      puts $optionF "   Dk0ALGmhw8ULPAAzGgvNK2nBQtYjHNUxJBxOABw/3dZcW0YANl1bUa4eod40aWlHADf5rQAegkmT"
      puts $optionF "   8QIIgBozXvQqoUWgNWM7kmVg0EwFtAlFiE30kWxDA23cJiwBAAODBFwvdvXaFsvKgAcGQGQJEGGA"
      puts $optionF "   iFYsJYT5ACBAEDMdAAggMi9FGiVMzmhhcYNMGiwrcJQBk6RKmkAAOw=="
      puts $optionF "}"
      puts $optionF "image create photo viaflnk -data {"
      puts $optionF "   R0lGODlhEAAQAIQaAP8AAP8ICP8QEP8YGP8hIf8pKf8xMf85Of9CQv9SUv9aWv9jY/9zc/97e/+E"
      puts $optionF "   hP+MjP+UlP+cnP+lpf+trf+1tf/Gxv/Ozv/W1v/e3v/v7////////////////////////yH+EUNy"
      puts $optionF "   ZWF0ZWQgd2l0aCBHSU1QACH5BAEKAB8ALAAAAAAQABAAAAWDoCZm1lVp1ZVhqSWOSnBpEJNlynC+"
      puts $optionF "   tCA2LwODJ4IENI+M6AKYESWACuXlIBBFFADwVdgSK9bRBCC5ajBOTYYiNWumIguFPSdmledA42JJ"
      puts $optionF "   8DIHABhYghoqPAxZTgsEEQwTPBILDFEiAhBIeIYOhgBTd0QZCEpZEBcJA2lLFyolKayqGiEAOw=="
      puts $optionF "}"
      puts $optionF ""
      puts $optionF "image create photo smlnk -data {"
      puts $optionF "   R0lGODlhEAAQAOMNAAAAABgYITE5OVJSUmNja3Nzc4SEjJycpbW1tcbOztbW3ufn5+/39///////"
      puts $optionF "   /////yH+EUNyZWF0ZWQgd2l0aCBHSU1QACwAAAAAEAAQAAAEl7AVZEprawCSmkJLQy2HwCiFJgzK"
      puts $optionF "   1RyAUBBKMhjBEAgGchSFWOGAahACh8GNsEDkBhaPStA6SAA7gytRMHQ8GQFCYcWEMK4DsoNwoS+L"
      puts $optionF "   hIAwUnxA8Iv6N0gYBDkdDC5KCF0JCAQEgw0MIQxiBD0GTQRdUSETfQcHCAgCADEIjJwgY2N/VIw1"
      puts $optionF "   lJ0vnTEKISEGRAOeuAhfLhEAOw=="
      puts $optionF "}"
      puts $optionF ""
      puts $optionF "image create photo bcflnk -data {"
      puts $optionF "   R0lGODlhEAAQAIQRAAAAAAAAIAAAQAAgYCAgIDAwMABAgEBAQGBgYDBvbwCAgD9/fzCQkH9/f2Cg"
      puts $optionF "   oDCvr4/Pz////////////////////////////////////////////////////////////yH+EUNy"
      puts $optionF "   ZWF0ZWQgd2l0aCBHSU1QACwAAAAAEAAQAAAFWmCBjGRZEgixFE3kqqwbHUjCGK1r4zJdGINc5Bfs"
      puts $optionF "   IRrIpFJJkzUAUCcU0HQ9o9ZpNXIFSKE0mFBs3AnNRqJQbVy6k9uuE/IIxKdOh0Jwx3IDAlQEB4SF"
      puts $optionF "   hoYEIQA7"
      puts $optionF "}"
      puts $optionF ""
      puts $optionF "image create photo dsblnk -data {"
      puts $optionF "   R0lGODlhEAAQAMZMABIRERYVFDsQDUoTDyMiInUfGWclIDQzM3QmF4QiG0A3G0A3HU47OU49O0VE"
      puts $optionF "   RE9FI1BNTFFNTFFOTVFOTlJOTlJQT1JRUVJSUVNSUlRTU1VUVFZVVds5LMw+Mto7Kds7L80/NF1d"
      puts $optionF "   XNs9Mdo/K9s+Mts+M9pAK9xAM9xANNtBNW9iNtxDN9xDONpGLNxFOdlIK9lILH5tN9xQRXh3d458"
      puts $optionF "   P4iIiK2XTJmZmb2lU6qqqru7u9zAYszMzOzNZuzNZ+zOZ+zOaOzOae3Qbe3Qbu7Rce3Sc93d3e7u"
      puts $optionF "   7vn39/v5+fz6+v37+///////////////////////////////////////////////////////////"
      puts $optionF "   ////////////////////////////////////////////////////////////////////////////"
      puts $optionF "   /////////////////////////////////////////////////////////////////////////yH+"
      puts $optionF "   EUNyZWF0ZWQgd2l0aCBHSU1QACwAAAAAEAAQAAAHs4BMghAUIi5CPT2Ci4sVEgwpJkGJjI0SDSgv"
      puts $optionF "   lJWLExUiIj49RZyCGBMyJCk9Q6WCS0sCBSM7Kg41gg66OUxIIScGNDG4NTdMDkxHB0xKFxwgCjYb"
      puts $optionF "   N0aCBDUzM0xJEyIfCz1GNw7GBzo6DkZIqAkID9VHyMhMMzqwAQMdOAsOBzxMAHRp0xBhAosTQBS5"
      puts $optionF "   YmIhQoYTHn4odBUhgowSLSQuzDABwooTMIAAIeKKYzcUMnokZBQIADs="
      puts $optionF "}"
      close $optionF
   }
}

# Resolve Wikipedias language sites by means of the Wikipedia API
proc WikipNLS { LinkList } {

   # set WikiPediaAPI "http://de.wikipedia.org/w/api.php?action=query"

   set WikiPLL  "&prop=langlinks"
   set WikiPTI  "&titles="
   set lang     $::language
   set langlink [lindex $LinkList 3]

   # translate Scids internal single letter language representation by
   # a more common two letter one; the same is used by WP
   switch $lang {
      B {set wplanguage pt}
      C {set wplanguage cs}
      D {set wplanguage de}
      F {set wplanguage fr}
      G {set wplanguage gr}
      H {set wplanguage hu}
      I {set wplanguage it}
      K {set wplanguage ca}
      N {set wplanguage nl}
      O {set wplanguage no}
      P {set wplanguage pl}
      R {set wplanguage ru}
      S {set wplanguage es}
      W {set wplanguage sv}
      Y {set wplanguage sr}
      default {set wplanguage en}
   }

   set Title    [lindex $LinkList 3]
   regsub -all {.*/} $Title "" Title

   # Spaces etc in URLs are bad, especially for TCL.
   # Use poor mans urlencoding:
   regsub -all { } $Title "%20" Title

   # collect all languages in $fullresult, each page contains a
   # llcontinue item linking to the following languages
   set fullresult ""
   set llcontinue ""

   # start out here:
   set WPfetchURL "$::pinfo::wikipAPI$WikiPLL$WikiPTI$Title"

   set token     [::http::geturl $WPfetchURL]
   set xmlresult [::http::data $token]
   ::http::cleanup $token

   # avoid requirement of tDOM and use simple regexping here as the
   # XML structure returned is simple enough

   # for more than 10 translations, a continue url is returned.
   # Extract it
   regsub -all {.*<langlinks llcontinue=} $xmlresult  "" llcontinue
   regsub -all {/>.*}                     $llcontinue "" llcontinue
   regsub -all {\|} $llcontinue "%7C" llcontinue
   regsub -all {\"} $llcontinue "" llcontinue

   # check if more langlinks exist, if so set the watermark, otherwise
   # it has to be emptied.
   if {[string match "*llcontinue*" $xmlresult]} {
      # keep only the langlinks-section of the XML
      regsub -all {.*<langlinks>} $xmlresult "" xmlresult
      regsub -all {</langlinks>.*} $xmlresult "" xmlresult
      regsub -all {</ll>} $xmlresult "</ll>\n" xmlresult
   } else {
      set llcontinue ""
   }
   set fullresult $xmlresult

   while { $llcontinue != "" } {

      set WPfetchURL "$::pinfo::wikipAPI$WikiPLL$WikiPTI$Title&llcontinue=$llcontinue"
      regsub -all { } $WPfetchURL "" WPfetchURL

      set token     [::http::geturl $WPfetchURL]
      set xmlresult [::http::data $token]
      ::http::cleanup $token

      if {[string match "*llcontinue*" $xmlresult]} {
         regsub -all {.*<langlinks llcontinue=} $xmlresult  "" llcontinue
         regsub -all {/>.*}                     $llcontinue "" llcontinue
         regsub -all {\|} $llcontinue "%7C" llcontinue
         regsub -all {\"} $llcontinue "" llcontinue
      } else {
         set llcontinue ""
      }

      regsub -all {.*<langlinks>} $xmlresult "" xmlresult
      regsub -all {</langlinks>.*} $xmlresult "" xmlresult
      regsub -all {</ll>} $xmlresult "</ll>\n" xmlresult
      set fullresult "$fullresult$xmlresult"
   }

   set langlist [split $fullresult "\n"]

   foreach ll $langlist {
      # construct the NLS-enabled link to WP
      if { [string match "*lang=\"$wplanguage\"*" $ll] } {
         set baselink "http://$wplanguage.wikipedia.org/wiki/"
         regsub -all {.*preserve">} $ll       "" pagename
         regsub -all {<.*} $pagename "" pagename
         set langlink "$baselink$pagename"
      }
   }
   openURL $langlink
}

# Use the SeeAlso service hosted at Gemeinsamer Bibliotheks Verbund
# (Goettingen) to resolve the PND to german Wikipedia. SeeAlso might
# proove useful later for other services as they appear on SeeAlso
proc saPND2WP { pnd } {

   set SeeAlso "$::pinfo::SeeAlsoPND2WP$pnd"

   set token [::http::geturl $SeeAlso]

   set LinkList [::http::data $token]
   regsub -all {\[} $LinkList "" LinkList
   regsub -all {\]} $LinkList "" LinkList
   regsub -all {\"} $LinkList "" LinkList
   set LinkList [split $LinkList ,]

   WikipNLS $LinkList
}

# Replace the ID-Tags by proper links
proc ReplaceIDTags { pinfo } {
  # replace certain BIO lines by links to external media
  regsub -all ".*PND "    $pinfo "" pnd
  regsub -all {<br>.*}    $pnd  "" pnd

  set pnd   [string trim $pnd]

  switch $::language {
     B {set wplanguage pt}
     C {set wplanguage cs}
     D {set wplanguage de}
     F {set wplanguage fr}
     H {set wplanguage hu}
     I {set wplanguage it}
     K {set wplanguage ca}
     N {set wplanguage nl}
     O {set wplanguage no}
     P {set wplanguage pl}
     R {set wplanguage ru}
     S {set wplanguage es}
     W {set wplanguage sv}
     Y {set wplanguage sr}
     default {set wplanguage en}
  }


  # the following three resolvers hook up with PND and need special
  # treatment as additional functions need to be called
  set wikiplink  "<run openURL $::pinfo::wikipurl/$wplanguage/$pnd; ::windows::stats::Refresh><button wikiplnk -command openURL $::pinfo::wikipurl/$wplanguage/$pnd;><blue>WP</blue></run>"

  # As we have direct linkage to WikiPedia SeeAlso is currently
  # obsolete. It might become of interest again if it offerse other
  # services to connect to.
  ### set seealsolink  "<run ::pinfo::saPND2WP $pnd; ::windows::stats::Refresh><button seealsolnk -command ::pinfo::saPND2WP $pnd><blue>SeeAlso</blue></run>"
  set seealsolink ""

  set dnblink    "<run openURL $::pinfo::dnburl/$pnd; ::windows::stats::Refresh><button dnblnk -command openURL $::pinfo::dnburl/$pnd><blue>DNB</blue></run>"

  # Handle all id definitions and link resolvers from the config file
  foreach index [array names ::pinfo::idlink] {
     set federation $::pinfo::idlink($index)
     set searchterm [lindex $federation 0]
     set link       [lindex $federation 1]
     set icon       [lindex $federation 2]
     set str        [lindex $federation 3]

     # extract the ID
     regsub -all ".*$searchterm " $pinfo "" id
     regsub -all {<br>.*} $id "" id
     set id [string trim $id]

     if {$id != ""} {
        regsub -all "%ID%" $link $id link
        set btn "<run openURL $link; ::windows::stats::Refresh><button $icon -command openURL $link><blue>$str</blue></run>"
        regsub -all "$searchterm $id<br>" $pinfo $btn pinfo
     }
  }

  # Replace PND by all services linked to that ID
  regsub -all "PND $pnd<br>" $pinfo "$seealsolink $wikiplink $dnblink" pinfo
  regsub -all "</run>  <run" $pinfo "</run> <run" pinfo

  return $pinfo
}


proc playerInfo {{player ""}} {
  global playerInfoName
  global spffile
  if {$player == ""} { set player $playerInfoName }
  if {[catch {sc_name info -htext $player} pinfo]} { return }
  set playerInfoName $player
  set ::rgraph(player) $player
  set w .playerInfoWin
  if {! [winfo exists $w]} {
    toplevel $w
    setWinLocation $w
    wm title $w "Scid: [tr ToolsPInfo]"
    wm minsize $w 40 5
    pack [frame $w.b2] -side bottom -fill x
    pack [frame $w.b] -side bottom -fill x
    button $w.b.graph -text [tr ToolsRating] \
      -command {::tools::graphs::rating::Refresh player $playerInfoName}
    button $w.b.edit -text $::tr(PInfoEditRatings) -command {
      makeNameEditor
      setNameEditorType rating
      set editName $playerInfoName
      set editNameSelect crosstable
    }
    button $w.b2.report -text [tr ToolsPlayerReport] \
      -command {::preport::preportDlg $playerInfoName}
    dialogbutton $w.b2.help -textvar ::tr(Help) -command {helpWindow PInfo}
    dialogbutton $w.b2.update -textvar ::tr(Update) -command {::pinfo::playerInfo $playerInfoName}
    dialogbutton $w.b2.close -textvar ::tr(Close) -command "focus .; destroy $w"
    packbuttons right $w.b2.close $w.b2.update $w.b2.help
    packbuttons left $w.b.graph $w.b.edit
    packbuttons left $w.b2.report

    autoscrollframe $w.frame text $w.text -font font_Regular -background white \
      -width $::winWidth($w) -height $::winHeight($w) -setgrid 1 -wrap none
    #scrollbar $w.ybar -command "$w.text yview"
    #pack $w.ybar -side right -fill y
    #text $w.text -font font_Regular -background white \
    #  -width $::winWidth($w) -height $::winHeight($w) \
    #  -setgrid 1 -wrap none -yscrollcommand "$w.ybar set"
    label $w.photo -background white
    #pack $w.text -side top -fill both -expand yes
    pack $w.frame -side top -fill both -expand yes
    bind $w <Escape> "focus .; destroy $w"
    ::htext::init $w.text
    ::htext::updateRate $w.text 0
    bind $w <Escape> "focus .; destroy $w"
    bind $w <F1> {helpWindow PInfo}
    bind $w <Configure> "recordWinSize $w"
    standardShortcuts $w
  }
  set player [trimEngineName $player]
  if {[info exists spffile($player)]} {
    image create photo photoPInfo -data [getphoto $player]
    $w.photo configure -image photoPInfo -anchor ne
    place $w.photo -in $w.text -relx 1.0 -x -1 -rely 0.0 -y 1 -anchor ne
  } else {
    place forget $w.photo
  }
  $w.text configure -state normal
  $w.text delete 1.0 end

  set pinfo [::pinfo::ReplaceIDTags $pinfo]

  # Display the player info
  ::htext::display $w.text $pinfo

  $w.text configure -state disabled
  ::windows::gamelist::Refresh
  ::maint::Refresh
  #raiseWin $w
}

# Call in the idlink config file.
   if {[catch {source [scidConfigFile resolvers]} ]} {
     ::splash::add "No configuration for link resolvers found. Creating default..."
     ::pinfo::setupDefaultResolvers
      if {[catch {source [scidConfigFile resolvers]} ]} {
         ::splash::add "Oops there is something wrong with the resolvers file..."
      } else {
         ::splash::add "Default resolvers created and loaded."
      }
   } else {
     ::splash::add "ID resolvers found, extended player info available."
   }
}
###
### analysis.tcl: part of Scid.
### Copyright (C) 1999-2003  Shane Hudson.
### Copyright (C) 2007  Pascal Georges

######################################################################
### Analysis window: uses a chess engine to analyze the board.

# analysis(logMax):
#   The maximum number of log message lines to be saved in a log file.
set analysis(logMax) 5000

# analysis(log_stdout):
#   Set this to 1 if you want Scid-Engine communication log messages
#   to be echoed to stdout.
#
set analysis(log_stdout) 0

set useAnalysisBook 1
set analysisBookSlot 1
set useAnalysisBookName ""
set wentOutOfBook 0
# State variable: 1 <=> engine is making an initial
# assessment of the current position, before progressing
# into the game
set initialAnalysis 0

# State variable: 1 <=> We will not add a variation to
# this move, since this cannot be different from the
# (engine variation to the) main line
set atStartOfLine 0

set isBatch 0
set batchEnd 1
set isBatchOpening 0
set isBatchOpeningMoves 12
set stack ""

set markTacticalExercises 1

set isAnnotateVar 0
set isShortAnnotation 0
set addScoreToShortAnnotations 0
set addAnnotatorTag 0

################################################################################
#
################################################################################
# resetEngine:
#   Resets all engine-specific data.
#
proc resetEngine {n} {
    global analysis
    set analysis(pipe$n) ""             ;# Communication pipe file channel
    set analysis(seen$n) 0              ;# Seen any output from engine yet?
    set analysis(seenEval$n) 0          ;# Seen evaluation line yet?
    set analysis(score$n) 0             ;# Current score in centipawns
    set analysis(prevscore$n) 0         ;# Immediately previous score in centipawns
    set analysis(scoremate$n) 0         ;# Current mating distance (0 if infinite)
    set analysis(prevscoremate$n) 0     ;# Previous mating distance
    set analysis(prevmoves$n) ""        ;# Immediately previous best line out from engine
    set analysis(nodes$n) 0             ;# Number of (kilo)nodes searched
    set analysis(depth$n) 0             ;# Depth in ply
    set analysis(prev_depth$n) 0        ;# Previous depth
    set analysis(time$n) 0              ;# Time in centisec (or sec; see below)
    set analysis(moves$n) ""            ;# PV (best line) output from engine
    set analysis(seldepth$n) 0
    set analysis(currmove$n) ""         ;# current move output from engine
    set analysis(currmovenumber$n) 0    ;# current move number output from engine
    set analysis(hashfull$n) 0
    set analysis(nps$n) 0
    set analysis(tbhits$n) 0
    set analysis(sbhits$n) 0
    set analysis(cpuload$n) 0
    set analysis(movelist$n) {}         ;# Moves to reach current position
    set analysis(nonStdStart$n) 0       ;# Game has non-standard start
    set analysis(has_analyze$n) 0       ;# Engine has analyze command
    set analysis(has_setboard$n) 0      ;# Engine has setboard command
    set analysis(send_sigint$n) 0       ;# Engine wants INT signal
    set analysis(wants_usermove$n) 0    ;# Engine wants "usermove" before moves
    set analysis(isCrafty$n) 0          ;# Engine appears to be Crafty
    set analysis(wholeSeconds$n) 0      ;# Engine times in seconds not centisec
    set analysis(analyzeMode$n) 0       ;# Scid has started analyze mode
    set analysis(invertScore$n) 1       ;# Score is for side to move, not white
    set analysis(automove$n) 0
    set analysis(automoveThinking$n) 0
    set analysis(automoveTime$n) 4000
    set analysis(lastClicks$n) 0
    set analysis(after$n) ""
    set analysis(log$n) ""              ;# Log file channel
    set analysis(logCount$n) 0          ;# Number of lines sent to log file
    set analysis(wbEngineDetected$n) 0  ;# Is this a special Winboard engine?
    set analysis(priority$n) normal     ;# CPU priority: idle/normal
    set analysis(multiPV$n) {}          ;# multiPV list sorted : depth score moves
    set analysis(multiPVraw$n) {}       ;# same thing but with raw UCI moves
    set analysis(uci$n) 0               ;# UCI engine
    # UCI engine options in format ( name min max ). This is not engine config but its capabilities
    set analysis(uciOptions$n) {}
    # the number of lines in multiPV. If =1 then act the traditional way
    set analysis(multiPVCount$n) 4      ;# number of N-best lines
    set analysis(index$n) 0             ;# the index of engine in engine list
    set analysis(uciok$n) 0             ;# uciok sent by engine in response to uci command
    set analysis(name$n) ""             ;# engine name
    set analysis(processInput$n) 0      ;# the time of the last processed event
    set analysis(waitForBestMove$n) 0
    set analysis(waitForReadyOk$n) 0
    set analysis(waitForUciOk$n) 0
    set analysis(movesDisplay$n) 1      ;# if false, hide engine lines, only display scores
    set analysis(lastHistory$n) {}      ;# last best line
    set analysis(maxmovenumber$n) 0     ;# the number of moves in this position
    set analysis(lockEngine$n) 0        ;# the engine is locked to current position
    set analysis(fen$n) {}              ;# the position that engine is analyzing
}

resetEngine 1
resetEngine 2

set annotateMode 0
set annotateModeButtonValue 0 ; # feedback of annotate mode

set annotateMoves all
set annotateBlunders blundersonly
set scoreAllMoves 0

################################################################################
# calculateNodes:
#   Divides string-represented node count by 1000
################################################################################
proc calculateNodes {{n}} {
    set len [string length $n]
    if { $len < 4 } {
        return 0
    } else {
        set shortn [string range $n 0 [expr {$len - 4}]]
        scan $shortn "%d" nd
        return $nd
    }
}


# resetAnalysis:
#   Resets the analysis statistics: score, depth, etc.
#
proc resetAnalysis {{n 1}} {
    global analysis
    set analysis(score$n) 0
    set analysis(scoremate$n) 0
    set analysis(nodes$n) 0
    set analysis(prev_depth$n) 0
    set analysis(depth$n) 0
    set analysis(time$n) 0
    set analysis(moves$n) ""
    set analysis(multiPV$n) {}
    set analysis(multiPVraw$n) {}
    set analysis(lastHistory$n) {}
    set analysis(maxmovenumber$n) 0
}

namespace eval enginelist {}

set engines(list) {}

# engine:
#   Adds an engine to the engine list.
#   Calls to this function will be found in the user engines.lis
#   file, which is sourced below.
#
proc engine {arglist} {
    global engines
    array set newEngine {}
    foreach {attr value} $arglist {
        set newEngine($attr) $value
    }
    # Check that required attributes exist:
    if {! [info exists newEngine(Name)]} { return  0 }
    if {! [info exists newEngine(Cmd)]} { return  0 }
    if {! [info exists newEngine(Dir)]} { return  0 }
    # Fill in optional attributes:
    if {! [info exists newEngine(Args)]} { set newEngine(Args) "" }
    if {! [info exists newEngine(Elo)]} { set newEngine(Elo) 0 }
    if {! [info exists newEngine(Time)]} { set newEngine(Time) 0 }
    if {! [info exists newEngine(URL)]} { set newEngine(URL) "" }
    # puts this option here for compatibility with previous file format (?!)
    if {! [info exists newEngine(UCI)]} { set newEngine(UCI) 0 }
    if {! [info exists newEngine(UCIoptions)]} { set newEngine(UCIoptions) "" }
    
    lappend engines(list) [list $newEngine(Name) $newEngine(Cmd) \
            $newEngine(Args) $newEngine(Dir) \
            $newEngine(Elo) $newEngine(Time) \
            $newEngine(URL) $newEngine(UCI) $newEngine(UCIoptions)]
    return 1
}

# ::enginelist::read
#   Reads the user Engine list file.
#
proc ::enginelist::read {} {
    catch {source [scidConfigFile engines]}
}

# ::enginelist::write:
#   Writes the user Engine list file.
#
proc ::enginelist::write {} {
    global engines ::uci::newOptions
    
    set enginesFile [scidConfigFile engines]
    set enginesBackupFile [scidConfigFile engines.bak]
    # Try to rename old file to backup file and open new file:
    catch {file rename -force $enginesFile $enginesBackupFile}
    if {[catch {open $enginesFile w} f]} {
        catch {file rename $enginesBackupFile $enginesFile}
        return 0
    }
    
    puts $f "\# Analysis engines list file for Scid [sc_info version] with UCI support"
    puts $f ""
    foreach e $engines(list) {
        set name [lindex $e 0]
        set cmd [lindex $e 1]
        set args [lindex $e 2]
        set dir [lindex $e 3]
        set elo [lindex $e 4]
        set time [lindex $e 5]
        set url [lindex $e 6]
        set uci [lindex $e 7]
        set opt [lindex $e 8]
        puts $f "engine {"
            puts $f "  Name [list $name]"
            puts $f "  Cmd  [list $cmd]"
            puts $f "  Args [list $args]"
            puts $f "  Dir  [list $dir]"
            puts $f "  Elo  [list $elo]"
            puts $f "  Time [list $time]"
            puts $f "  URL  [list $url]"
            puts $f "  UCI [list $uci]"
            puts $f "  UCIoptions [list $opt]"
            puts $f "}"
        puts $f ""
    }
    close $f
    return 1
}

# Read the user Engine List file now:
#
catch { ::enginelist::read }
if {[llength $engines(list)] == 0} {
    # No engines, so set up a default engine list:
    set scidlet "scidlet"
    set phalanx "phalanx-scid"
    set togaII "togaII"
    if { $::windowsOS } {
        set scidlet "scidlet.exe"
        set phalanx "phalanx-scid.exe"
        set togaII "TogaII.exe"
    }
    set scidEngPaths [list $::scidExeDir [file join $::scidExeDir "engines" ] [file join $::scidShareDir "engines" ] \
            [ file join $::scidUserDir "engines" ]  [ file join usr local share scid engines ] \
            [ file join usr local bin ] [ file join  usr bin ] [ file join usr local games ] [ file join usr games ] \
            [file join $::scidExeDir "engines" "phalanx-scid" ] [file join $::scidExeDir "engines" "togaII1.2.1a" "src" ] ]
    
    # The next four lists should have the same length!
    set scidEngCmds [list $phalanx $togaII $scidlet ]
    set scidEngNames [list "Phalanx-Scid" "Toga II" "Scidlet" ]
    array set parentDirs "
    $phalanx { phalanx-scid Phalanx-XXII }
    $togaII  { togaII1.2.1a toga togaII [ file join togaII1.2.1a src ] }
    $scidlet { . }
    "
    
    set isUCI [list 0 1 0 ]
    
    # Let's search the engines:
    foreach cmd $scidEngCmds name $scidEngNames uci $isUCI {
        set leave 0
        foreach path $scidEngPaths {
            set c [ file join $path $cmd]
            if { [file executable $c ] && ! [ file isdirectory $c ] } {
                engine [list \
                        Name $name \
                        Cmd  $c \
                        Dir  . \
                        UCI  $uci \
                        UCIoptions {} \
                        ]
                set leave 1
            } else {
                foreach parent $parentDirs($cmd) {
                    set c [ file join $path $parent $cmd ]
                    if { [file executable $c] && ! [ file isdirectory $c ] } {
                        engine [list \
                                Name $name \
                                Cmd  $c \
                                Dir  . \
                                UCI  $uci \
                                UCIoptions {} \
                                ]
                        set leave 1
                        break
                    }
                }
            }
            if { $leave } { break }
        }
    }
}

# ::enginelist::date
#   Given a time in seconds since 1970, returns a
#   formatted date string.
proc ::enginelist::date {time} {
    return [clock format $time -format "%a %b %d %Y %H:%M"]
}

# ::enginelist::sort
#   Sort the engine list.
#   If the engine-open dialog is open, its list is updated.
#   The type defaults to the current engines(sort) value.
#
proc ::enginelist::sort {{type ""}} {
    global engines
    
    if {$type == ""} {
        set type $engines(sort)
    } else {
        set engines(sort) $type
    }
    switch $type {
        Name {
            set engines(list) [lsort -dictionary -index 0 $engines(list)]
        }
        Elo {
            set engines(list) [lsort -integer -decreasing -index 4 $engines(list)]
        }
        Time {
            set engines(list) [lsort -integer -decreasing -index 5 $engines(list)]
        }
    }
    
    # If the Engine-open dialog is open, update it:
    #
    set w .enginelist
    if {! [winfo exists $w]} { return }
    set f $w.list.list
    $f delete 0 end
    set count 0
    foreach engine $engines(list) {
        incr count
        set name [lindex $engine 0]
        set elo [lindex $engine 4]
        set time [lindex $engine 5]
        set uci [lindex $engine 7]
        set date [::enginelist::date $time]
        set text [format "%2u. %-21s " $count $name]
        set eloText "    "
        if {$elo > 0} { set eloText [format "%4u" $elo] }
        append text $eloText
        set timeText "  "
        if {$time > 0} { set timeText "   $date" }
        append text $timeText
        $f insert end $text
    }
    $f selection set 0
    
    # Show the sorted column heading in red text:
    $w.title configure -state normal
    foreach i {Name Elo Time} {
        $w.title tag configure $i -foreground {}
    }
    $w.title tag configure $engines(sort) -foreground red
    $w.title configure -state disabled
}
################################################################################
# ::enginelist::choose
#   Select an engine from the Engine List.
#   Returns an integer index into the engines(list) list variable.
#   If no engine is selected, returns the empty string.
################################################################################
proc ::enginelist::choose {} {
    global engines
    set w .enginelist
    if {[winfo exists $w]} {
        raise .enginelist
        return }
    toplevel $w
    ::setTitle $w "Scid: [tr ToolsAnalysis]"
    ttk::label $w.flabel -text $::tr(EngineList:) -font font_Bold -anchor center
    pack $w.flabel -side top -expand 1 -fill both
    
    pack [ttk::frame $w.buttons] -side bottom -fill x
    ttk::frame $w.rule -height 2 -borderwidth 2 -relief sunken
    pack $w.rule -side bottom -fill x
    
    # Set up title frame for sorting the list:
    text $w.title -width 55 -height 1 -font font_Fixed -relief flat \
            -cursor top_left_arrow
    $w.title insert end "    "
    $w.title insert end $::tr(EngineName) Name
    for {set i [string length $::tr(EngineName)]} {$i < 21} { incr i } {
        $w.title insert end " "
    }
    $w.title insert end "  "
    $w.title insert end $::tr(EngineElo) Elo
    for {set i [string length $::tr(EngineElo)]} {$i < 4} { incr i } {
        $w.title insert end " "
    }
    $w.title insert end "  "
    $w.title insert end $::tr(EngineTime) Time
    foreach i {Name Elo Time} {
        $w.title tag bind $i <Any-Enter> \
                "$w.title tag configure $i -background yellow"
        $w.title tag bind $i <Any-Leave> \
                "$w.title tag configure $i -background {}"
        $w.title tag bind $i <1> [list ::enginelist::sort $i]
    }
    $w.title configure -state disabled
    pack $w.title -side top -fill x
    
    # The list of choices:
    set f $w.list
    pack [ttk::frame $f] -side top -expand yes -fill both
    listbox $f.list -height 10 -width 55  -selectmode browse \
            -background white -setgrid 1 \
            -yscrollcommand "$f.ybar set" -font font_Fixed -exportselection 0
    bind $f.list <Double-ButtonRelease-1> "$w.buttons.ok invoke; break"
    ttk::scrollbar $f.ybar -command "$f.list yview"
    pack $f.ybar -side right -fill y
    pack $f.list -side top -fill both -expand yes
    $f.list selection set 0
    
    set f $w.buttons
    dialogbutton $f.add -text $::tr(EngineNew...) -command {::enginelist::edit -1}
    dialogbutton $f.edit -text $::tr(EngineEdit...) -command {
        ::enginelist::edit [lindex [.enginelist.list.list curselection] 0]
    }
    dialogbutton $f.delete -text $::tr(Delete...) -command {
        ::enginelist::delete [lindex [.enginelist.list.list curselection] 0]
    }
    ttk::label $f.sep -text "   "
    dialogbutton $f.ok -text "OK" -command {
        set engines(selection) [lindex [.enginelist.list.list curselection] 0]
        destroy .enginelist
    }
    dialogbutton $f.cancel -text $::tr(Cancel) -command {
        set engines(selection) ""
        destroy .enginelist
    }
    packbuttons right $f.cancel $f.ok
    pack $f.add $f.edit $f.delete -side left -padx 1
    
    ::enginelist::sort
    ::utils::win::Centre $w
    focus $w.list.list
    wm protocol $w WM_DELETE_WINDOW "destroy $w"
    bind $w <F1> { helpWindow Analysis List }
    bind $w <Escape> "destroy $w"
    bind $w.list.list <Return> "$w.buttons.ok invoke; break"
    set engines(selection) ""
    catch {grab $w}
    tkwait window $w
    return $engines(selection)
}

# ::enginelist::setTime
#   Sets the last-opened time of the engine specified by its
#   index in the engines(list) list variable.
#   The time should be in standard format (seconds since 1970)
#   and defaults to the current time.
#
proc ::enginelist::setTime {index {time -1}} {
    global engines
    set e [lindex $engines(list) $index]
    if {$time < 0} { set time [clock seconds] }
    set e [lreplace $e 5 5 $time]
    set engines(list) [lreplace $engines(list) $index $index $e]
}

trace variable engines(newElo) w [list ::utils::validate::Integer [sc_info limit elo] 0]

# ::enginelist::delete
#   Removes an engine from the list.
#
proc ::enginelist::delete {index} {
    global engines
    if {$index == ""  ||  $index < 0} { return }
    set e [lindex $engines(list) $index]
    set msg "Name: [lindex $e 0]\n"
    append msg "Command: [lindex $e 1]\n\n"
    append msg "Do you really want to remove this engine from the list?"
    set answer [tk_messageBox -title Scid -icon question -type yesno \
            -message $msg]
    if {$answer == "yes"} {
        set engines(list) [lreplace $engines(list) $index $index]
        ::enginelist::sort
        ::enginelist::write
    }
}

# ::enginelist::edit
#   Opens a dialog for editing an existing engine list entry (if
#   index >= 0), or adding a new entry (if index is -1).
#
proc ::enginelist::edit {index} {
    global engines
    if {$index == ""} { return }
    
    if {$index >= 0  ||  $index >= [llength $engines(list)]} {
        set e [lindex $engines(list) $index]
    } else {
        set e [list "" "" "" . 0 0 "" 1]
    }
    
    set engines(newIndex) $index
    set engines(newName) [lindex $e 0]
    set engines(newCmd) [lindex $e 1]
    set engines(newArgs) [lindex $e 2]
    set engines(newDir) [lindex $e 3]
    set engines(newElo) [lindex $e 4]
    set engines(newTime) [lindex $e 5]
    set engines(newURL) [lindex $e 6]
    set engines(newUCI) [lindex $e 7]
    set engines(newUCIoptions) [lindex $e 8]
    
    set engines(newDate) $::tr(None)
    if {$engines(newTime) > 0 } {
        set engines(newDate) [::enginelist::date $engines(newTime)]
    }
    
    set w .engineEdit
    toplevel $w
    ::setTitle $w Scid
    
    set f [ttk::frame $w.f]
    pack $f -side top -fill x -expand yes
    set row 0
    foreach i {Name Cmd Args Dir URL} {
        ttk::label $f.l$i -text $i
        if {[info exists ::tr(Engine$i)]} {
            $f.l$i configure -text $::tr(Engine$i)
        }
        ttk::entry $f.e$i -textvariable engines(new$i) -width 40
        bindFocusColors $f.e$i
        grid $f.l$i -row $row -column 0 -sticky w
        grid $f.e$i -row $row -column 1 -sticky we
        
        # Browse button for choosing an executable file:
        if {$i == "Cmd"} {
            ttk::button $f.b$i -text "..." -command {
                if {$::windowsOS} {
                    set scid_temp(filetype) {
                        {"Applications" {".bat" ".exe"} }
                        {"All files" {"*"} }
                    }
                } else {
                    set scid_temp(filetype) {
                        {"All files" {"*"} }
                    }
                }
                set scid_temp(cmd) [tk_getOpenFile -initialdir $engines(newDir) \
                        -title "Scid: [tr ToolsAnalysis]" -filetypes $scid_temp(filetype)]
                if {$scid_temp(cmd) != ""} {
                    set engines(newCmd) $scid_temp(cmd)
                    # if {[string first " " $scid_temp(cmd)] >= 0} {
                    # The command contains spaces, so put it in quotes:
                    # set engines(newCmd) "\"$scid_temp(cmd)\""
                    # }
                    # Set the directory from the executable path if possible:
                    set engines(newDir) [file dirname $scid_temp(cmd)]
                    if {$engines(newDir) == ""} [ set engines(newDir) .]
                }
            }
            grid $f.b$i -row $row -column 2 -sticky we
        }
        
        if {$i == "Dir"} {
            ttk::button $f.current -text " . " -command {
                set engines(newDir) .
            }
            ttk::button $f.user -text "~/.scid" -command {
                set engines(newDir) $scidUserDir
            }
            if {$::windowsOS} {
                $f.user configure -text "scid.exe dir"
            }
            grid $f.current -row $row -column 2 -sticky we
            grid $f.user -row $row -column 3 -sticky we
        }
        
        if {$i == "URL"} {
            ttk::button $f.bURL -text [tr FileOpen] -command {
                if {$engines(newURL) != ""} { openURL $engines(newURL) }
            }
            grid $f.bURL -row $row -column 2 -sticky we
        }
        
        incr row
    }
    
    grid columnconfigure $f 1 -weight 1
    
    ttk::checkbutton $f.cbUci -text UCI -variable engines(newUCI) -style Bold.TCheckbutton
    ttk::button $f.bConfigUCI -text $::tr(ConfigureUCIengine) -command {
        ::uci::uciConfig 2 [ toAbsPath $engines(newCmd) ] $engines(newArgs) \
                [ toAbsPath $engines(newDir) ] $engines(newUCIoptions)
    }
    # Mark required fields:
    $f.lName configure -font font_Bold
    $f.lCmd configure -font font_Bold
    $f.lDir configure -font font_Bold
    # $f.cbUci configure -font font_Bold
    
    ttk::label $f.lElo -text $::tr(EngineElo)
    ttk::entry $f.eElo -textvariable engines(newElo) -justify right -width 5
    bindFocusColors $f.eElo
    grid $f.lElo -row $row -column 0 -sticky w
    grid $f.eElo -row $row -column 1 -sticky w
    incr row
    grid $f.cbUci -row $row -column 0 -sticky w
    grid $f.bConfigUCI -row $row -column 1 -sticky w
    incr row
    
    ttk::label $f.lTime -text $::tr(EngineTime)
    ttk::label $f.eTime -textvariable engines(newDate) -anchor w -width 1
    grid $f.lTime -row $row -column 0 -sticky w
    grid $f.eTime -row $row -column 1 -sticky we
    ttk::button $f.clearTime -text $::tr(Clear) -command {
        set engines(newTime) 0
        set engines(newDate) $::tr(None)
    }
    ttk::button $f.nowTime -text $::tr(Update) -command {
        set engines(newTime) [clock seconds]
        set engines(newDate) [::enginelist::date $engines(newTime)]
    }
    grid $f.clearTime -row $row -column 2 -sticky we
    grid $f.nowTime -row $row -column 3 -sticky we
    
    addHorizontalRule $w
    
    set f [ttk::frame $w.buttons]
    ttk::button $f.ok -text OK -command {
        if {[string trim $engines(newName)] == ""  ||
            [string trim $engines(newCmd)] == ""  ||
            [string trim $engines(newDir)] == ""} {
            tk_messageBox -title Scid -icon info \
                    -message "The Name, Command and Directory fields must not be empty."
        } else {
            set newEntry [list $engines(newName) $engines(newCmd) \
                    $engines(newArgs) $engines(newDir) \
                    $engines(newElo) $engines(newTime) \
                    $engines(newURL) $engines(newUCI) $::uci::newOptions ]
            if {$engines(newIndex) < 0} {
                lappend engines(list) $newEntry
            } else {
                set engines(list) [lreplace $engines(list) \
                        $engines(newIndex) $engines(newIndex) $newEntry]
            }
            destroy .engineEdit
            ::enginelist::sort
            ::enginelist::write
            focus .enginelist
        }
    }
    ttk::button $f.cancel -text $::tr(Cancel) -command "destroy $w ; focus .enginelist"
    pack $f -side bottom -fill x
    pack $f.cancel $f.ok -side right -padx 2 -pady 2
    ttk::label $f.required -font font_Small -text $::tr(EngineRequired)
    pack $f.required -side left
    
    bind $w <Return> "$f.ok invoke"
    bind $w <Escape> "destroy $w ; focus .enginelist "
    bind $w <F1> { helpWindow Analysis List }
    focus $w.f.eName
    wm resizable $w 1 0
    catch {grab $w}
}
# ################################################################################
#
################################################################################
proc configAnnotation {} {
    global autoplayDelay tempdelay blunderThreshold annotateModeButtonValue
    
    set w .configAnnotation
    # Do not do anyting if the window exists
    #
    if { [winfo exists $w] } {
        raise $w
        focus $w
        return
    }
    
    # If the annotation button is pressed while annotation is
    # running, stop the annotation
    #
    if { ! $annotateModeButtonValue } {
        toggleAutoplay
        return
    }
    
    trace variable blunderThreshold w {::utils::validate::Regexp {^[0-9]*\.?[0-9]*$}}
    
    set tempdelay [expr {$autoplayDelay / 1000.0}]
    toplevel $w
    ::setTitle $w "Scid"
    wm resizable $w 0 0
    set f [ttk::frame $w.f]
    pack $f -expand 1
    ttk::label $f.label -text $::tr(AnnotateTime:)
    pack $f.label -side top
    spinbox $f.spDelay -background white -width 4 -textvariable tempdelay -from 1 -to 999 -increment 1
    pack $f.spDelay -side top -pady 5
    bind $w <Escape> { .configAnnotation.f.buttons.cancel invoke }
    bind $w <Return> { .configAnnotation.f.buttons.ok invoke }
    
    addHorizontalRule $f
    ttk::label        $f.avlabel -text $::tr(AnnotateWhich:)
    ttk::radiobutton  $f.all     -text $::tr(AnnotateAll)   -variable annotateMoves -value all
    ttk::radiobutton  $f.white   -text $::tr(AnnotateWhite) -variable annotateMoves -value white
    ttk::radiobutton  $f.black   -text $::tr(AnnotateBlack) -variable annotateMoves -value black
    pack $f.avlabel -side top
    pack $f.all $f.white $f.black -side top -fill x -anchor w

    addHorizontalRule $f
    
    ttk::radiobutton  $f.allmoves     -text $::tr(AnnotateAllMoves)     -variable annotateBlunders -value allmoves
    ttk::radiobutton  $f.blundersonly -text $::tr(AnnotateBlundersOnly) -variable annotateBlunders -value blundersonly
    pack $f.allmoves $f.blundersonly -side top -fill x -anchor w
    
    ttk::frame $f.blunderbox
    pack $f.blunderbox -side top -padx 5 -pady 5
    
    ttk::label $f.blunderbox.label -text $::tr(BlundersThreshold:)
    spinbox $f.blunderbox.spBlunder -background white -width 4 -textvariable blunderThreshold \
            -from 0.1 -to 3.0 -increment 0.1
    pack $f.blunderbox.label $f.blunderbox.spBlunder -side left -padx 5 -pady 5
    
    addHorizontalRule $f
    ttk::checkbutton  $f.cbAnnotateVar      -text $::tr(AnnotateVariations)         -variable ::isAnnotateVar
    ttk::checkbutton  $f.cbShortAnnotation  -text $::tr(ShortAnnotations)           -variable ::isShortAnnotation
    ttk::checkbutton  $f.cbAddScore         -text $::tr(AddScoreToShortAnnotations) -variable ::addScoreToShortAnnotations
    ttk::checkbutton  $f.cbAddAnnotatorTag  -text $::tr(addAnnotatorTag)            -variable ::addAnnotatorTag
    pack $f.cbAnnotateVar $f.cbShortAnnotation $f.cbAddScore $f.cbAddAnnotatorTag -fill x -anchor w

    addHorizontalRule $f

    # Checkmark to enable all-move-scoring
    #
    ttk::checkbutton  $f.scoreAll -text $::tr(ScoreAllMoves) -variable scoreAllMoves
    pack $f.scoreAll -fill x -anchor w
    
    # choose a book for analysis
    addHorizontalRule $f
    ttk::checkbutton $f.cbBook  -text $::tr(UseBook) -variable ::useAnalysisBook
    # load book names
    set bookPath $::scidBooksDir
    set bookList [  lsort -dictionary [ glob -nocomplain -directory $bookPath *.bin ] ]
    
    # No book found
    if { [llength $bookList] == 0 } {
        set ::useAnalysisBook 0
        $f.cbBook configure -state disabled
    }
    
    set tmp {}
    set idx 0
    set i 0
    foreach file  $bookList {
        lappend tmp [ file tail $file ]
        if {$::book::lastBook == [ file tail $file ] } {
            set idx $i
        }
        incr i
    }
    ttk::combobox $f.comboBooks -width 12 -values $tmp
    catch { $f.comboBooks current $idx }
    pack $f.cbBook $f.comboBooks -side top
    
    addHorizontalRule $f
    
    # batch annotation of consecutive games, and optional opening errors finder
    ttk::frame $f.batch
    pack $f.batch -side top -fill x
    set to [sc_base numGames]
    if {$to <1} { set to 1}
    ttk::checkbutton $f.batch.cbBatch -text $::tr(AnnotateSeveralGames) -variable ::isBatch
    spinbox $f.batch.spBatchEnd -background white -width 8 -textvariable ::batchEnd \
            -from 1 -to $to -increment 1 -validate all -vcmd { regexp {^[0-9]+$} %P }
    ttk::checkbutton $f.batch.cbBatchOpening -text $::tr(FindOpeningErrors) -variable ::isBatchOpening
    spinbox $f.batch.spBatchOpening -background white -width 2 -textvariable ::isBatchOpeningMoves \
            -from 10 -to 20 -increment 1 -validate all -vcmd { regexp {^[0-9]+$} %P }
    ttk::label $f.batch.lBatchOpening -text $::tr(moves)
    # pack $w.batch.cbBatch $w.batch.spBatchEnd -side top -fill x
    # pack $w.batch.cbBatchOpening $w.batch.spBatchOpening $w.batch.lBatchOpening  -side left -fill x
    grid $f.batch.cbBatch -column 0 -row 0 -sticky w
    grid $f.batch.spBatchEnd -column 1 -row 0 -sticky w
    grid $f.batch.cbBatchOpening -column 0 -row 1 -sticky w
    grid $f.batch.spBatchOpening -column 1 -row 1 -sticky e
    grid $f.batch.lBatchOpening -column 2 -row 1 -sticky w
    set ::batchEnd $to
    
    ttk::checkbutton $f.batch.cbMarkTactics -text $::tr(MarkTacticalExercises) -variable ::markTacticalExercises
    grid $f.batch.cbMarkTactics -column 0 -row 2 -sticky w
    if {! $::analysis(uci1)} {
        set ::markTacticalExercises 0
        $f.batch.cbMarkTactics configure -state disabled
    }
    
    addHorizontalRule $f
    ttk::frame $f.buttons
    pack $f.buttons -side top -fill x
    ttk::button $f.buttons.cancel -text $::tr(Cancel) -command {
        destroy .configAnnotation
        set annotateModeButtonValue 0
    }
    ttk::button $f.buttons.ok -text "OK" -command {
        set ::useAnalysisBookName [.configAnnotation.f.comboBooks get]
        set ::book::lastBook $::useAnalysisBookName
        
        # tactical positions is selected, must be in multipv mode
        if {$::markTacticalExercises} {
            if { $::analysis(multiPVCount1) < 2} {
                # TODO: Why not put it at the (apparent) minimum of 2?
                #
                set ::analysis(multiPVCount1) 4
                changePVSize 1
            }
        }
        
        if {$tempdelay < 0.1} { set tempdelay 0.1 }
        set autoplayDelay [expr {int($tempdelay * 1000)}]
        destroy .configAnnotation
        cancelAutoplay
        set annotateModeButtonValue 1
        # Tell the analysis mode that we want an initial assessment of the
        # position. So: no comments yet, please!
        set ::initialAnalysis 1
        # And start the time slicer
        toggleAutoplay
    }
    pack $f.buttons.cancel $f.buttons.ok -side right -padx 5 -pady 5
    focus $f.spDelay
    bind $w <Destroy> { focus . }
}
################################################################################
# Part of annotation process : will check the moves if they are in te book, and add a comment
# when going out of it
################################################################################
proc bookAnnotation { {n 1} } {
    global analysis
    
    if {$::annotateMode && $::useAnalysisBook} {
        
        set prevbookmoves ""
        set bn [ file join $::scidBooksDir $::useAnalysisBookName ]
        sc_book load $bn $::analysisBookSlot
        
        set bookmoves [sc_book moves $::analysisBookSlot]
        while {[string length $bookmoves] != 0 && ![sc_pos isAt vend]} {
            # we are in book, so move immediately forward
            ::move::Forward
            set prevbookmoves $bookmoves
            set bookmoves [sc_book moves $::analysisBookSlot]
        }
        sc_book close $::analysisBookSlot
        set ::wentOutOfBook 1
        
        set verboseMoveOutOfBook " $::tr(MoveOutOfBook)"
        set verboseLastBookMove " $::tr(LastBookMove)"
        
        set theCatch 0
        if { [ string match -nocase "*[sc_game info previousMoveNT]*" $prevbookmoves ] != 1 } {
            if {$prevbookmoves != ""} {
                sc_pos setComment "[sc_pos getComment]$verboseMoveOutOfBook [::trans $prevbookmoves]"
            } else  {
                sc_pos setComment "[sc_pos getComment]$verboseMoveOutOfBook"
            }
            # last move was out of book: it needs to be analyzed, so take back
            #
            set theCatch [catch {sc_move back 1}]
        } else  {
            sc_pos setComment "[sc_pos getComment]$verboseLastBookMove"
        }
        
        if { ! $theCatch } {
            resetAnalysis
            updateBoard -pgn
        }
        set analysis(prevscore$n)     $analysis(score$n)
        set analysis(prevmoves$n)     $analysis(moves$n)
        set analysis(prevscoremate$n) $analysis(scoremate$n)
        set analysis(prevdepth$n)     $analysis(depth$n)
    }
}
################################################################################
# Will add **** to any position considered as a tactical shot
# returns 1 if an exercise was marked, 0 if for some reason it was not (obvious move for example)
################################################################################
proc markExercise { prevscore score nag} {
    
    sc_pos addNag $nag
    
    if {!$::markTacticalExercises} { return 0 }
    
    # check at which depth the tactical shot is found
    # this assumes analysis by an UCI engine
    if {! $::analysis(uci1)} { return 0 }
    
    set deltamove [expr {$score - $prevscore}]
    # filter tactics so only those with high gains are kept
    if { [expr abs($deltamove)] < $::informant("+/-") } { return 0 }
    # dismiss games where the result is already clear (high score,and we continue in the same way)
    if { [expr $prevscore * $score] >= 0} {
        if { [expr abs($prevscore) ] > $::informant("++-") } { return 0 }
        if { [expr abs($prevscore)] > $::informant("+-") && [expr abs($score) ] < [expr 2 * abs($prevscore)]} { return 0 }
    }
    
    # The best move is much better than others.
    if { [llength $::analysis(multiPV1)] < 2 } {
        puts "error, not enough PV"
        return 0
    }
    set sc2 [lindex [ lindex $::analysis(multiPV1) 1 ] 1]
    if { [expr abs( $score - $sc2 )] < 1.5 } { return 0 }
    
    # There is no other winning moves (the best move may not win, of course, but
    # I reject exercises when there are e.g. moves leading to +9, +7 and +5 scores)
    if { [expr $score * $sc2] > 0.0 && [expr abs($score)] > $::informant("+-") && [expr abs($sc2)] > $::informant("+-") } {
        return 0
    }
    
    # The best move does not lose position.
    if {[sc_pos side] == "white" && $score < [expr 0.0 - $::informant("+/-")] } { return 0 }
    if {[sc_pos side] == "black" && $score > $::informant("+/-") } { return 0}
    
    # Move is not obvious: check that it is not the first move guessed at low depths
    set pv [ lindex [ lindex $::analysis(multiPV1) 0 ] 2 ]
    set bm0 [lindex $pv 0]
    foreach depth {1 2 3} {
        set res [ sc_pos analyze -time 1000 -hashkb 32 -pawnkb 1 -searchdepth $depth ]
        set bm$depth [lindex $res 1]
    }
    if { $bm0 == $bm1 && $bm0 == $bm2 && $bm0 == $bm3 } {
        puts "obvious move"
        return 0
    }
    
    # find what time is needed to get the solution (use internal analyze function)
    set timer {1 2 5 10 50 100 200 1000}
    set movelist {}
    for {set t 0} {$t < [llength $timer]} { incr t} {
        set res [sc_pos analyze -time [lindex $timer $t] -hashkb 1 -pawnkb 1 -mindepth 0]
        set move_analyze [lindex $res 1]
        lappend movelist $move_analyze
    }
    
    # find at what timing the right move was reliably found
    # only the move is checked, not if the score is close to the expected one
    for {set t [expr [llength $timer] -1]} {$t >= 0} { incr t -1} {
        if { [lindex $movelist $t] != $bm0 } {
            break
        }
    }
    
    set difficulty [expr $t +2]
    
    puts "flag T pour [sc_game number] difficulty $difficulty"
    # If the base opened is read only, like a PGN file, avoids an exception
    catch { sc_game flag T [sc_game number] 1 }
    sc_pos setComment "****D${difficulty} [format %.1f $prevscore]->[format %.1f $score] [sc_pos getComment]"
    updateBoard
    
    return 1
}
################################################################################
#
################################################################################
proc addAnnotation { {n 1} } {
    global analysis annotateMoves annotateBlunders annotateMode blunderThreshold scoreAllMoves autoplayDelay
    
    # Check if we only need to register an initial
    # assessment of the position
    # If so, we do not generate any annotation yet
    #
    if { $::initialAnalysis } {
        set ::initialAnalysis 0
        
        if { $::isBatchOpening && ([sc_pos moveNumber] < $::isBatchOpeningMoves ) } {
            appendAnnotator "opBlunder [sc_pos moveNumber] ([sc_pos side])"
        }
        if { $::addAnnotatorTag } {
            appendAnnotator "$analysis(name1) ([expr {$autoplayDelay / 1000}] sec)"
        }
        
        set analysis(prevscore$n)     $analysis(score$n)
        set analysis(prevmoves$n)     $analysis(moves$n)
        set analysis(prevscoremate$n) $analysis(scoremate$n)
        set analysis(prevdepth$n)     $analysis(depth$n)
        
        return
    }
    
    # Check if we are at the start of a subline
    # If so, we will not include the engine line as a variation.
    # Rationale: this line cannot be different from the line for the
    # main move, that we will include anyway.
    #
    set skipEngineLine $::atStartOfLine
    set ::atStartOfLine 0
            
    # First look in the book selected
    # TODO: Is this dead code by now?
    # TODO: Seek for an opportunity to do book analysis on a move by
    #       move basis, thus allowing variations to be included
    #
    if { ! $::wentOutOfBook && $::useAnalysisBook } {
        bookAnnotation
        return
    }
    
    # Let's try to assess the situation:
    # We are here, now that the engine has analyzed the position reached by
    # our last move. Currently it is the opponent to move:
    #
    set tomove [sc_pos side]

    # And this is his best line:
    #
    set moves $analysis(moves$n)
    # For non-uci lines, trim space characters in <moveno>.[ *][...]<move> 
    set moves [regsub -all {\. *} $moves {.}]
    
    # The best line we could have followed, and the game move we just played instead, are here:
    #
    set prevmoves $analysis(prevmoves$n)
    # For non-uci lines, trim space characters in <moveno>.[ *][...]<move> 
    set prevmoves [regsub -all {\. *} $prevmoves {.}]

    set gamemove  [sc_game info previousMoveNT]
    
    # Bail out if we have a mate
    #
    if { [expr { [string index $gamemove end] == "#" }] } {
        set analysis(prevscore$n)     $analysis(score$n)
        set analysis(prevmoves$n)     $analysis(moves$n)
        set analysis(prevscoremate$n) $analysis(scoremate$n)
        set analysis(prevdepth$n)     $analysis(depth$n)
        return
    }
    
    # We will add a closing line at the end of variation or game
    #
    set addClosingLine 0
    if {  [sc_pos isAt vend] } {
        set addClosingLine 1
    }
    
    
    # Temporarily clear the pre-move command since we want to add a
    # whole line without Scid updating stuff:
    #
    sc_info preMoveCmd {}
    
    # We do not want to insert a best-line variation into the game
    # if we did play along that line. Even not when annotating all moves.
    # It simply makes no sense to do so (unless we are debugging the engine!)
    # Sooner or later the game will deviate anyway; a variation at that point will
    # do nicely and is probably more accurate as well.
    #
    set bestMovePlayed 0
    set bestMoveIsMate 0
    if { $prevmoves != "" } {
        # Following lines of code have only one goal:
        # Transform an engine move (e.g. "g1f3") into the short notation that we use
        # for moves in our games ("Nf3"), such that they can be (string) compared.
        # We create a scratch copy of the game, add the engine move and then ask
        # the game about the most recent move that was played.
        # This might not be the most subtle solution...
        sc_game push copyfast
        set bestmove [lindex $prevmoves 0]
        sc_move back 1
        sc_move_add $bestmove $n
        set bestmove [sc_game info previousMoveNT]
        sc_game pop
        
        if { $bestmove == $gamemove } {
            set bestMovePlayed 1
        }
        
        # Did we miss a mate in one?
        #
        set bestMoveIsMate [expr { [string index $bestmove end] == "#" }]
    }
    
    
    # As said, another reason not to include the engine line
    #
    set skipEngineLine [expr {$skipEngineLine + $bestMovePlayed}]

    # As to the engine evaluations
    # This is score the opponent will have if he plays his best move next
    #
    set score $analysis(score$n)
    
    # This is the score we could have had if we had played our best move
    #
    set prevscore $analysis(prevscore$n)
    
    # Let's help the engine a bit...
    # It makes no sense to criticise the players for moving insights at
    # engine end. So we upgrade the old score to the new score if the lines
    # start with the same move.
    #
    if { $bestMovePlayed } {
        set prevscore $score
    }
    
    # Note that the engine's judgement is in absolute terms, a negative score
    # being favorable to black, a positive score favorable to white
    # Looking primarily for blunders, we are interested in the score decay,
    # which, for white, is (previous-current)
    #
    set deltamove [expr {$prevscore - $score}]
    # and whether the game was already lost for us
    #
    set gameIsLost [expr {$prevscore < (0.0 - $::informant("++-"))}]
    
    # Invert this logic for black
    #
    if { $tomove == "white" } {
        set deltamove [expr {0.0 - $deltamove}]
        set gameIsLost [expr {$prevscore > $::informant("++-")}] 
    }
    
    # Note btw that if the score decay is - unexpectedly - negative, we played
    # a better move than the engine's best line!
    
    # Set an "isBlunder" filter.
    # Let's mark moves with a decay greater than the threshold.
    #
    set isBlunder 0
    if { $deltamove > $blunderThreshold } {
        set isBlunder 2
    } elseif { $deltamove > 0 } {
        set isBlunder 1
    }
    
    set absdeltamove [expr { abs($deltamove) } ]
    
    set exerciseMarked 0
    
    # to parse scores if the engine's name contains - or + chars (see sc_game_scores)
    #
    set engine_name  [string map {"-" " " "+" " "} $analysis(name$n)]
    
    # Prepare score strings for the opponent
    #
    if { $analysis(scoremate$n) != 0 } {
        set text [format "%d:M%d" $analysis(depth$n) $analysis(scoremate$n)]
    } else {
        set text [format "%d:%+.2f" $analysis(depth$n) $score]
    }
    # And for the my (missed?) chance
    #
    if { $analysis(prevscoremate$n) != 0 } {
        set prevtext [format "%d:M%d" $analysis(prevdepth$n) $analysis(prevscoremate$n)]
    } else {
        set prevtext [format "%d:%+.2f" $analysis(prevdepth$n) $prevscore]
    }
    
    # Must we annotate our own moves? If no, we bail out unless
    # - we must add a closing line
    #
    if { ( $annotateMoves == "white"  &&  $tomove == "white" ||
           $annotateMoves == "black"  &&  $tomove == "black"   ) && ! $addClosingLine } {
        set analysis(prevscore$n)     $analysis(score$n)
        set analysis(prevmoves$n)     $analysis(moves$n)
        set analysis(prevscoremate$n) $analysis(scoremate$n)
        set analysis(prevdepth$n)     $analysis(depth$n)
        
        # Add score for this position anyway if this is configured
        #
        if { $scoreAllMoves } {
            sc_pos setComment "[sc_pos getComment] $text"
        }
        
        # Restore the pre-move command
        #
        sc_info preMoveCmd preMoveCommand
    
        # Update the board
        #
        updateBoard -pgn
    
        # Update score graph if it is open
        #
        if {[winfo exists .sgraph]} { ::tools::graphs::score::Refresh }
        return
    }
    

    # See if we have the threshold filter activated.
    # If so, take only bad moves and missed mates until the position is lost anyway
    #
    # Or that we must annotate all moves
    #
    if {  (  $annotateBlunders == "blundersonly"
          && ($isBlunder > 1 || ($isBlunder > 0 && [expr abs($score)] >= 327.0))
          && ! $gameIsLost)
       || ($annotateBlunders == "allmoves") } {
        if { $isBlunder > 0 } {
            # Add move score nag, and possibly an exercise
            #
            if {       $absdeltamove > $::informant("??") } {
                set exerciseMarked [ markExercise $prevscore $score "??" ]
            } elseif { $absdeltamove > $::informant("?")  } {
                set exerciseMarked [ markExercise $prevscore $score "?" ]
            } elseif { $absdeltamove > $::informant("?!") } {
                sc_pos addNag "?!"
            }
        } elseif { $absdeltamove > $::informant("!?") } {
            sc_pos addNag "!?"
        }
            
        # Add score comment and engine name if needed
        #
        if { ! $::isShortAnnotation } {
            sc_pos setComment "[sc_pos getComment] $engine_name: $text"
        } elseif { $::addScoreToShortAnnotations || $scoreAllMoves } {
            sc_pos setComment "[sc_pos getComment] $text"
        }
            
        # Add position score nag
        #
        sc_pos addNag [scoreToNag $score]
            
        # Add the variation
        #
        if { $skipEngineLine == 0 } {
            sc_move back
            if { $annotateBlunders == "blundersonly" } {
                # Add a diagram tag, but avoid doubles
                #
                if { [string first "D" "[sc_pos getNags]"] == -1 } {
                    sc_pos addNag "D"
                }
            }
            if { $prevmoves != ""} {
                sc_var create
                # Add the starting move
                sc_move_add [lrange $prevmoves 0 0] $n
                # Add its score
                if { ! $bestMoveIsMate } {
                    if { ! $::isShortAnnotation || $::addScoreToShortAnnotations } {
                        sc_pos setComment "$prevtext"
                    }
                }
                # Add remaining moves
                sc_move_add [lrange $prevmoves 1 end] $n
                # Add position NAG, unless the line ends in mate
                if { $analysis(prevscoremate$n) == 0 } {
                    sc_pos addNag [scoreToNag $prevscore]
                }
                sc_var exit
            }
            sc_move forward
        }
    } else {
        if { $isBlunder == 0 && $absdeltamove > $::informant("!?") } {
            sc_pos addNag "!?"
        }
        if { $scoreAllMoves } { 
            # Add a score mark anyway
            #
            sc_pos setComment "[sc_pos getComment] $text"
        }
    }
        
    if { $addClosingLine } {
        sc_move back
        sc_var create
        sc_move addSan $gamemove
        if { $analysis(scoremate$n) == 0 } {
            if { ! $::isShortAnnotation || $::addScoreToShortAnnotations } {
                sc_pos setComment "$text"
            }
        }
        sc_move_add $moves 1
        if { $analysis(scoremate$n) == 0 } {
            sc_pos addNag [scoreToNag $score]
        }
        sc_var exit
        # Now up to the end of the game
        ::move::Forward
    }
    
    set analysis(prevscore$n)     $analysis(score$n)
    set analysis(prevmoves$n)     $analysis(moves$n)
    set analysis(prevscoremate$n) $analysis(scoremate$n)
    set analysis(prevdepth$n)     $analysis(depth$n)
    
    # Restore the pre-move command
    #
    sc_info preMoveCmd preMoveCommand
    
    # Update the board
    #
    updateBoard -pgn
    
    # Update score graph if it is open
    #
    if {[winfo exists .sgraph]} { ::tools::graphs::score::Refresh }
}

# Informant index strings
array set ana_informantList { 0 "+=" 1 "+/-" 2 "+-" 3 "++-" }
# Nags. Note the slight inconsistency for the "crushing" symbol (see game.cpp)
array set ana_nagList  { 0 "=" 1 "+=" 2 "+/-" 3 "+-" 4 "+--" 5 "=" 6 "=+" 7 "-/+" 8 "-+" 9 "--+" }
################################################################################
#
################################################################################
proc scoreToNag {score} {
    global ana_informantList ana_nagList
    # Find the score in the informant map
    set tmp [expr { abs( $score ) }]
    for { set i 0 } { $i < 4 } { incr i } {
        if { $tmp < $::informant("$ana_informantList($i)") } {
            break
        }
    }
    # Jump into negative counterpart
    if { $score < 0.0 } {
        set i [expr {$i + 5}]
    }
    return $ana_nagList($i)
}
################################################################################
# will append arg to current game Annotator tag
################################################################################
proc appendAnnotator { s } {
    # Get the current collection of extra tags
    set extra [sc_game tags get "Extra"]

    set annot 0
    set other ""
    set nExtra {}
    # Walk through the extra tags, just copying the crap we do not need
    # If we meet the existing annotator tag, add our name to the list
    foreach line $extra {
        if { $annot == 1 } {
            lappend nExtra "Annotator \"$line, $s\"\n"
            set annot 2
        } elseif { $other != "" } {
            lappend nExtra "$other \"$line\"\n"
            set other ""
        } elseif {[string match "Annotator" $line]} {
            set annot 1
        } else {
            set other $line
        }
    }
    
    # First annotator: Create a tag
    if { $annot == 0 } {
        lappend nExtra "Annotator \"$s\"\n"
    }
    # Put the extra tags back to the game
    sc_game tags set -extra $nExtra
}
################################################################################
#
################################################################################
proc pushAnalysisData { { lastVar } { n 1 } } {
    global analysis
    lappend ::stack [list $analysis(prevscore$n) $analysis(prevscoremate$n) $analysis(prevdepth$n) \
                          $analysis(score$n)     $analysis(scoremate$n)     $analysis(depth$n) \
                          $analysis(prevmoves$n) $analysis(moves$n) $lastVar ]
}
################################################################################
#
################################################################################
proc popAnalysisData { { n 1 } } {
    global analysis
    # the start of analysis is in the middle of a variation
    if {[llength $::stack] == 0} {
        set analysis(prevscore$n) 0
        set analysis(prevscoremate$n) 0
        set analysis(prevdepth$n) 0
        set analysis(score$n) 0
        set analysis(scoremate$n) 0
        set analysis(depth$n) 0
        set analysis(prevmoves$n) ""
        set analysis(moves$n) ""
        set lastVar 0
        return
    }
    set tmp [lindex $::stack end]
    set analysis(prevscore$n) [lindex $tmp 0]
    set analysis(prevscoremate$n) [lindex $tmp 1]
    set analysis(prevdepth$n) [lindex $tmp 2]
    set analysis(score$n) [lindex $tmp 3]
    set analysis(scoremate$n) [lindex $tmp 4]
    set analysis(depth$n) [lindex $tmp 5]
    set analysis(prevmoves$n) [lindex $tmp 6]
    set analysis(moves$n) [lindex $tmp 7]
    set lastVar [lindex $tmp 8]
    set ::stack [lreplace $::stack end end]
    return $lastVar
}

################################################################################
#
################################################################################
proc addAnalysisVariation {{n 1}} {
    global analysis
    
    if {! [winfo exists .analysisWin$n]} { return }
    
    # Cannot add a variation to an empty variation:
    if {[sc_pos isAt vstart]  &&  [sc_pos isAt vend]} { return }
    
    # if we are at the end of the game, we cannot add variation
    # so we add the analysis one move before and append the last game move at the beginning of the analysis
    set addAtEnd [sc_pos isAt vend]
    
    # Temporarily clear the pre-move command since we want to add a
    # whole line without Scid updating stuff:
    sc_info preMoveCmd {}
    
    set moves $analysis(moves$n)
    if {$analysis(uci$n)} {
        set tmp_moves [ lindex [ lindex $analysis(multiPV$n) 0 ] 2 ]
        set text [format "\[%s\] %d:%s" $analysis(name$n) $analysis(depth$n) [scoreToMate $analysis(score$n) $tmp_moves $n]]
    } else  {
        set text [format "\[%s\] %d:%+.2f" $analysis(name$n) $analysis(depth$n) $analysis(score$n)]
    }
    
    if {$addAtEnd} {
        # get the last move of the game
        set lastMove [sc_game info previousMoveUCI]
        #back one move
        sc_move back
    }
    
    # Add the variation:
    sc_var create
    # Add the comment at the start of the variation:
    sc_pos setComment "[sc_pos getComment] $text"
    if {$addAtEnd} {
        # Add the last move of the game at the beginning of the analysis
        sc_move_add $lastMove $n
    }
    # Add as many moves as possible from the engine analysis:
    sc_move_add $moves $n
    sc_var exit
    
    if {$addAtEnd} {
        #forward to the last move
        sc_move forward
    }
    
    # Restore the pre-move command:
    sc_info preMoveCmd preMoveCommand
    
    if {[winfo exists .pgnWin]} { ::pgn::Refresh 1 }
    
    # Update score graph if it is open:
    if {[winfo exists .sgraph]} { ::tools::graphs::score::Refresh }
}
################################################################################
#
################################################################################
proc addAllVariations {{n 1}} {
    global analysis
    
    if {! [winfo exists .analysisWin$n]} { return }
    
    # Cannot add a variation to an empty variation:
    if {[sc_pos isAt vstart]  &&  [sc_pos isAt vend]} { return }
    
    # if we are at the end of the game, we cannot add variation
    # so we add the analysis one move before and append the last game move at the beginning of the analysis
    set addAtEnd [sc_pos isAt vend]
    
    # Temporarily clear the pre-move command since we want to add a
    # whole line without Scid updating stuff:
    sc_info preMoveCmd {}
    
    foreach i $analysis(multiPVraw$n) j $analysis(multiPV$n) {
        set moves [lindex $i 2]
        
        set tmp_moves [ lindex $j 2 ]
        set text [format "\[%s\] %d:%s" $analysis(name$n) [lindex $i 0] [scoreToMate [lindex $i 1] $tmp_moves $n]]
        
        if {$addAtEnd} {
            # get the last move of the game
            set lastMove [sc_game info previousMoveUCI]
            sc_move back
        }
        
        # Add the variation:
        sc_var create
        # Add the comment at the start of the variation:
        sc_pos setComment "[sc_pos getComment] $text"
        if {$addAtEnd} {
            # Add the last move of the game at the beginning of the analysis
            sc_move_add $lastMove $n
        }
        # Add as many moves as possible from the engine analysis:
        sc_move_add $moves $n
        sc_var exit
        
        if {$addAtEnd} {
            #forward to the last move
            sc_move forward
        }
        
    }
    
    # Restore the pre-move command:
    sc_info preMoveCmd preMoveCommand
    
    if {[winfo exists .pgnWin]} { ::pgn::Refresh 1 }
    # Update score graph if it is open:
    if {[winfo exists .sgraph]} { ::tools::graphs::score::Refresh }
}
################################################################################
#
################################################################################
# TODO fonction obsolète à virer ??
proc addAnalysisToComment {line {n 1}} {
    global analysis
    if {! [winfo exists .analysisWin$n]} { return }
    
    # If comment editor window is open, add the score there, otherwise
    # just add the comment directly:
    if {[winfo exists .commentWin]} {
        set tempStr [.commentWin.cf.text get 1.0 "end-1c"]
    } else {
        set tempStr [sc_pos getComment]
    }
    set score $analysis(score$n)
    
    # If line is true, add the whole line, else just add the score:
    if {$line} {
        set scoretext [format "%+.2f: %s" $score $analysis(moves$n)]
    } else {
        set scoretext [format "%+.2f" $score]
    }
    
    # Strip out old score if it exists at the start of the comment:
    regsub {^\".*\"} $tempStr "" tempStr
    set newText "\"$scoretext\"$tempStr"
    if {[winfo exists .commentWin]} {
        .commentWin.cf.text delete 1.0 end
        .commentWin.cf.text insert 1.0 $newText
    } else {
        sc_pos setComment $newText
    }
    ::pgn::Refresh 1
}
################################################################################
#
################################################################################
proc makeAnalysisMove {{n 1} {comment ""}} {
    set s $::analysis(moves$n)
    set res 1
    while {1} {
        if {[string length $s] == 0} { return 0 }
        set c [string index $s 0]
        switch -- $c {
            a - b - c - d - e - f - g - h -
            K - Q - R - B - N - O {
                break
            }
        }
        set s [string range $s 1 end]
    }
    if {[scan $s "%s" move] != 1} { set res 0 }
    set action "replace"
    if {! [sc_pos isAt vend]} {
        set action [confirmReplaceMove]
    }
    if {$action == "cancel"} { return }
    set ::analysis(automoveThinking$n) 0
    if {$action == "var"} { sc_var create }
    if { [sc_move_add $move $n] } { 
    	set res 0 
    } else {
    	sc_pos setComment $comment
    }
    
    updateBoard -pgn -animate
    ::utils::sound::AnnounceNewMove $move
    return $res
}
################################################################################
#
################################################################################

# destroyAnalysisWin:
#   Closes an engine, because its analysis window is being destroyed.
#
proc destroyAnalysisWin {{n 1}} {
    
    global windowsOS analysis annotateMode
    
    if {$::finishGameMode} { toggleFinishGame }
    
    if { $n == 1 && $annotateMode } {
        toggleAutoplay
    }

    # Cancel scheduled commands
    if {$analysis(after$n) != ""} {
        after cancel $analysis(after$n)
    }
    
    # Check the pipe is not already closed:
    if {$analysis(pipe$n) == ""} {
        set ::analysisWin$n 0
        return
    }
    
    # Send interrupt signal if the engine wants it:
    if {(!$windowsOS)  &&  $analysis(send_sigint$n)} {
        catch {exec -- kill -s INT [pid $analysis(pipe$n)]}
    }
    
    # Some engines in analyze mode may not react as expected to "quit"
    # so ensure the engine exits analyze mode first:
    if {$analysis(uci$n)} {
        sendToEngine $n "stop"
        sendToEngine $n "quit"
    } else  {
        sendToEngine $n "exit"
        sendToEngine $n "quit"
    }
    catch { flush $analysis(pipe$n) }
    
    # Uncomment the following line to turn on blocking mode before
    # closing the engine (but probably not a good idea!)
    #   fconfigure $analysis(pipe$n) -blocking 1
    
    # Close the engine, ignoring any errors since nothing can really
    # be done about them anyway -- maybe should alert the user with
    # a message box?
    catch {close $analysis(pipe$n)}
    
    if {$analysis(log$n) != ""} {
        catch {close $analysis(log$n)}
        set analysis(log$n) ""
    }
    set analysis(pipe$n) ""
    set ::analysisWin$n 0
    
    ::docking::cleanup ".analysisWin$n"
}

# sendToEngine:
#   Send a command to a running analysis engine.
#
proc sendToEngine {n text} {
    # puts " -------- Scid>> $text"
    logEngine $n "Scid  : $text"
    catch {puts $::analysis(pipe$n) $text}
}

# sendMoveToEngine:
#   Sends a move to a running analysis engine, using sendToEngine.
#   If the engine has indicated (with "usermove=1" on a "feature" line)
#   that it wants it, send with "usermove " before the move.
#
proc sendMoveToEngine {n move} {
    # Convert "e7e8Q" into "e7e8q" since that is the XBoard/WinBoard
    # standard for sending moves in coordinate notation:
    set move [string tolower $move]
    if {$::analysis(uci$n)} {
        # should be position fen [sc_pos fen] moves ?
        sendToEngine $n "position fen [sc_pos fen] moves $move"
    } else  {
        if {$::analysis(wants_usermove$n)} {
            sendToEngine $n "usermove $move"
        } else {
            sendToEngine $n $move
        }
    }
}

# logEngine:
#   Log Scid-Engine communication.
#
proc logEngine {n text} {
    global analysis
    
    # Print the log message to stdout if applicable:
    if {$::analysis(log_stdout)} {
        puts stdout $text
    }
    
    if { [ info exists ::analysis(log$n)] && $::analysis(log$n) != ""} {
        puts $::analysis(log$n) $text
        catch { flush $::analysis(log$n) }
        
        # Close the log file if the limit is reached:
        incr analysis(logCount$n)
        if {$analysis(logCount$n) >= $analysis(logMax)} {
            puts $::analysis(log$n) \
                    "NOTE  : Log file size limit reached; closing log file."
            catch {close $analysis(log$n)}
            set analysis(log$n) ""
        }
    }
}

# logEngineNote:
#   Add a note to the engine comminucation log file.
#
proc logEngineNote {n text} {
    logEngine $n "NOTE  : $text"
}

################################################################################
#
# makeAnalysisWin:
#   Produces the engine list dialog box for choosing an engine,
#   then opens an analysis window and starts the engine.
################################################################################
proc makeAnalysisWin { {n 1} {index -1} } {
    global analysisWin$n font_Analysis analysisCommand analysis annotateModeButtonValue
    set w ".analysisWin$n"
    if {[winfo exists $w]} {
        focus .
        destroy $w
        set analysisWin$n 0
        resetEngine $n
        return
    }
    
    # Set the button in non-annotation state
    #
    if { $n == 1 } {
        set annotateModeButtonValue 0
    }
    
    resetEngine $n
    
    # if parameter index is a valid engine then start engine. Only update engine's time
    # when it was chosen in the engines dialog box
    if { $index < 0 } {
        set index [::enginelist::choose]
        catch {
            ::enginelist::setTime $index
        }
    } else {
        set index [expr {$n - 1}]
    }
    
    if {$index == ""  ||  $index < 0} {
        set analysisWin$n 0
        return
    }
    
    # ::enginelist::setTime $index
    # catch {::enginelist::write}
    
    set analysis(index$n) $index
    set engineData [lindex $::engines(list) $index]
    set analysisName [lindex $engineData 0]
    set analysisCommand [ toAbsPath [lindex $engineData 1] ]
    set analysisArgs [lindex $engineData 2]
    set analysisDir [ toAbsPath [lindex $engineData 3] ]
    set analysis(uci$n) [ lindex $engineData 7 ]
    
    # If the analysis directory is not current dir, cd to it:
    set oldpwd ""
    if {$analysisDir != "."} {
        set oldpwd [pwd]
        catch {cd $analysisDir}
    }
    
    if {! $analysis(uci$n) } {
        set analysis(multiPVCount$n) 1
    }
    
    # Try to execute the analysis program:
    if {[catch {set analysis(pipe$n) [open "| [list $analysisCommand] $analysisArgs" "r+"]} result]} {
        if {$oldpwd != ""} { catch {cd $oldpwd} }
        tk_messageBox -title "Scid: error starting analysis" \
                -icon warning -type ok \
                -message "Unable to start the program:\n$analysisCommand"
        set analysisWin$n 0
        resetEngine $n
        return
    }
    
    set analysisWin$n 1
    
    # Return to original dir if necessary:
    if {$oldpwd != ""} { catch {cd $oldpwd} }
    
    # Open log file if applicable:
    set analysis(log$n) ""
    if {$analysis(logMax) > 0} {
        if {! [catch {open [file join $::scidLogDir "engine$n.log"] w} log]} {
            set analysis(log$n) $log
            logEngine $n "Scid-Engine communication log file"
            logEngine $n "Engine: $analysisName"
            logEngine $n "Command: $analysisCommand"
            logEngine $n "Date: [clock format [clock seconds]]"
            logEngine $n ""
            logEngine $n "This file was automatically generated by Scid."
            logEngine $n "It is rewritten every time an engine is started in Scid."
            logEngine $n ""
        }
    }
    
    set analysis(name$n) $analysisName
    
    # Configure pipe for line buffering and non-blocking mode:
    fconfigure $analysis(pipe$n) -buffering line -blocking 0
    
    #
    # Set up the  analysis window:
    #
    ::createToplevel $w
    
    if {$n == 1} {
        ::setTitle $w "Analysis: $analysisName"
    } else {
        ::setTitle $w "Analysis $n: $analysisName"
    }
    bind $w <F1> { helpWindow Analysis }
    setWinLocation $w
    setWinSize $w
    standardShortcuts $w
    
    ::board::new $w.bd 25
    $w.bd configure -relief solid -borderwidth 1
    set analysis(showBoard$n) 0
    set analysis(showEngineInfo$n) 0
    
    ttk::frame $w.b1
    pack $w.b1 -side bottom -fill x
    
    checkbutton $w.b1.automove -image tb_training  -indicatoron false -height 24 -relief raised -command "toggleAutomove $n" -variable analysis(automove$n)
    ::utils::tooltip::Set $w.b1.automove $::tr(Training)
    
    checkbutton $w.b1.lockengine -image tb_lockengine -indicatoron false -height 24 -width 24 -variable analysis(lockEngine$n) -command "toggleLockEngine $n"
    ::utils::tooltip::Set $w.b1.lockengine $::tr(LockEngine)
    
    button $w.b1.line -image tb_addvar -height 24 -width 24 -command "addAnalysisVariation $n"
    ::utils::tooltip::Set $w.b1.line $::tr(AddVariation)
    
    button $w.b1.alllines -image tb_addallvars -height 24 -width 24 -command "addAllVariations $n"
    ::utils::tooltip::Set $w.b1.alllines $::tr(AddAllVariations)
    
    button $w.b1.move -image tb_addmove -command "makeAnalysisMove $n"
    ::utils::tooltip::Set $w.b1.move $::tr(AddMove)
    
    if {$analysis(uci$n)} {
        set state readonly
    } else  {
        set state disabled
    }
    
    spinbox $w.b1.multipv -from 1 -to 8 -increment 1 -textvariable analysis(multiPVCount$n) -state $state -width 2 \
            -command "changePVSize $n"
    ::utils::tooltip::Set $w.b1.multipv $::tr(Lines)
    
    # add a button to start/stop engine analysis
    button $w.b1.bStartStop -image tb_pause -command "toggleEngineAnalysis $n"
    ::utils::tooltip::Set $w.b1.bStartStop "$::tr(StopEngine) (F[expr 3 + $n])"
    
    if {$n == 1} {
        set ::finishGameMode 0
        button $w.b1.bFinishGame -image finish_off -command "toggleFinishGame $n" -relief flat
        ::utils::tooltip::Set $w.b1.bFinishGame $::tr(FinishGame)
    }
    button $w.b1.showboard -image tb_coords -height 24 -width 24 -command "toggleAnalysisBoard $n"
    ::utils::tooltip::Set $w.b1.showboard $::tr(ShowAnalysisBoard)
    
    checkbutton $w.b1.showinfo -image tb_engineinfo -indicatoron false -height 24 -width 24 -variable analysis(showEngineInfo$n) -command "toggleEngineInfo $n"
    ::utils::tooltip::Set $w.b1.showinfo $::tr(ShowInfo)
    if {!$analysis(uci$n)} {
        $w.b1.showinfo configure -state disabled
        $w.b1.alllines configure -state disabled
    }
    
    if {$n == 1} {
        checkbutton $w.b1.annotate -image tb_annotate -indicatoron false -height 24 -variable annotateModeButtonValue -relief raised -command { configAnnotation }
        ::utils::tooltip::Set $w.b1.annotate $::tr(Annotate...)
    }
    checkbutton $w.b1.priority -image tb_cpu -indicatoron false -relief raised -variable analysis(priority$n) -onvalue idle -offvalue normal \
            -command "setAnalysisPriority $n"
    ::utils::tooltip::Set $w.b1.priority $::tr(LowPriority)
    
    if {$analysis(uci$n)} {
        set state disabled
    } else  {
        set state normal
    }
    
    button $w.b1.update -image tb_update -state $state -command "if {$analysis(uci$n)} {sendToEngine $n .}" ;# UCI does not support . command
    ::utils::tooltip::Set $w.b1.update $::tr(Update)
    
    button $w.b1.help -image tb_help -height 24 -width 24 -command { helpWindow Analysis }
    ::utils::tooltip::Set $w.b1.help $::tr(Help)
    
    if {$n ==1} {
        pack $w.b1.bStartStop $w.b1.lockengine $w.b1.move $w.b1.line $w.b1.alllines $w.b1.multipv $w.b1.annotate $w.b1.automove $w.b1.bFinishGame -side left
    } else  {
        pack $w.b1.bStartStop $w.b1.lockengine $w.b1.move $w.b1.line $w.b1.alllines $w.b1.multipv $w.b1.automove -side left
    }
    pack $w.b1.help $w.b1.priority $w.b1.update $w.b1.showboard $w.b1.showinfo -side right
    if {$analysis(uci$n)} {
        text $w.text -width 60 -height 1 -fg black -bg white -font font_Bold -wrap word -setgrid 1 ;# -spacing3 2
    } else {
        text $w.text -width 60 -height 4 -fg black -bg white -font font_Fixed -wrap word -setgrid 1
    }
    ttk::frame $w.hist
    text $w.hist.text -width 60 -height 8 -fg black -bg white -font font_Fixed \
            -wrap word -setgrid 1 -yscrollcommand "$w.hist.ybar set"
    $w.hist.text tag configure indent -lmargin2 [font measure font_Fixed "xxxxxxxxxxxx"]
    ttk::scrollbar $w.hist.ybar -command "$w.hist.text yview" -takefocus 0
    pack $w.text -side top -fill both
    pack $w.hist -side top -expand 1 -fill both
    pack $w.hist.ybar -side right -fill y
    pack $w.hist.text -side left -expand 1 -fill both
    
    bind $w.hist.text <ButtonPress-$::MB3> "toggleMovesDisplay $n"
    $w.text tag configure blue -foreground blue
    $w.text tag configure bold -font font_Bold
    $w.text tag configure small -font font_Small
    $w.hist.text tag configure blue -foreground blue -lmargin2 [font measure font_Fixed "xxxxxxxxxxxx"]
    $w.hist.text tag configure gray -foreground gray
    $w.text insert end "Please wait a few seconds for engine initialisation (with some engines, you will not see any analysis \
            until the board changes. So if you see this message, try changing the board \
            by moving backward or forward or making a new move.)" small
    $w.text configure -state disabled
    bind $w <Destroy> "destroyAnalysisWin $n"
    bind $w <Configure> "recordWinSize $w"
    bind $w <Escape> "focus .; destroy $w"
    bind $w <Key-a> "$w.b1.bStartStop invoke"
    wm minsize $w 25 0
    bindMouseWheel $w $w.hist.text
    
    if {$analysis(uci$n)} {
        fileevent $analysis(pipe$n) readable "::uci::processAnalysisInput $n"
    } else  {
        fileevent $analysis(pipe$n) readable "processAnalysisInput $n"
    }
    after 1000 "checkAnalysisStarted $n"
    
    # finish MultiPV spinbox configuration
    if {$analysis(uci$n)} {
        # find UCI engine MultiPV capability
        while { ! $analysis(uciok$n) } { ;# done after uciok
            update
            after 200
        }
        set hasMultiPV 0
        foreach opt $analysis(uciOptions$n) {
            if { [lindex $opt 0] == "MultiPV" } {
                set hasMultiPV 1
                set min [lindex $opt 1]
                set max [lindex $opt 2]
                if {$min == ""} { set min 1}
                if {$max == ""} { set max 8}
                break
            }
        }
        set current -1
        set options  [ lindex $engineData 8 ]
        foreach opt $options {
            if {[lindex $opt 0] == "MultiPV"} { set current [lindex $opt 1] ; break }
        }
        if {$current == -1} { set current 1 }
        set analysis(multiPVCount$n) $current
        #    changePVSize $n
        catch {
            if { $hasMultiPV } {
                $w.b1.multipv configure -from $min -to $max -state readonly
            } else  {
                $w.b1.multipv configure -from 1 -to 1 -state disabled
            }
        }
    } ;# end of MultiPV spinbox configuration
    
    # We hope the engine is correctly started at that point, so we can send the first analyze command
    # this problem only happens with winboard engine, as we don't know when they are ready
    if { !$analysis(uci$n) } {
        initialAnalysisStart $n
    }
    # necessary on windows because the UI sometimes starves, also keep latest priority setting
    if {$::windowsOS || $analysis(priority$n) == "idle"} {
        set analysis(priority$n) idle
        setAnalysisPriority $n
    }
    
    catch {
        ::enginelist::sort
        ::enginelist::write
    }
    
}
################################################################################
#
################################################################################
proc toggleMovesDisplay { {n 1} } {
    set ::analysis(movesDisplay$n) [expr 1 - $::analysis(movesDisplay$n)]
    set h .analysisWin$n.hist.text
    $h configure -state normal
    $h delete 1.0 end
    $h configure -state disabled
    updateAnalysisText $n
}

################################################################################
# will truncate PV list if necessary and tell the engine to send N best lines
################################################################################
proc changePVSize { n } {
    global analysis
    if { $analysis(multiPVCount$n) < [llength $analysis(multiPV$n)] } {
        set analysis(multiPV$n) {}
        set analysis(multiPVraw$n) {}
    }
    if {$analysis(multiPVCount$n) == 1} {
        set h .analysisWin$n.hist.text
        $h configure -state normal
        $h delete 0.0 end
        $h configure -state disabled
        set analysis(lastHistory$n) {}
    }
    if { ! $analysis(uci$n) } { return }

    # if the UCI engine was analysing, stop and restart
    if {$analysis(analyzeMode$n)} {
        stopAnalyzeMode $n
        set analysis(waitForReadyOk$n) 1
        sendToEngine $n "isready"
        set dont_stuck [ after 60000 "set ::analysis(waitForReadyOk$n) 0" ]
        vwait analysis(waitForReadyOk$n)
        after cancel $dont_stuck
        sendToEngine $n "setoption name MultiPV value $analysis(multiPVCount$n)"
        startAnalyzeMode $n
    } else {
        sendToEngine $n "setoption name MultiPV value $analysis(multiPVCount$n)"
    }
}
################################################################################
# setAnalysisPriority
#   Sets the priority class (in Windows) or nice level (in Unix)
#   of a running analysis engine.
################################################################################
proc setAnalysisPriority {n} {
    global analysis
    
    # Get the process ID of the analysis engine:
    if {$analysis(pipe$n) == ""} { return }
    set pidlist [pid $analysis(pipe$n)]
    if {[llength $pidlist] < 1} { return }
    set pid [lindex $pidlist 0]
    
    # Set the priority class (idle or normal):
    if {$::windowsOS} {
        catch {sc_info priority $pid $analysis(priority$n)}
    } else {
        set priority 0
        if {$analysis(priority$n) == "idle"} { set priority 15 }
        catch {sc_info priority $pid $priority}
    }
    
    # Re-read the priority class for confirmation:
    if {[catch {sc_info priority $pid} newpriority]} { return }
    if {$::windowsOS} {
        if {$newpriority == "idle"  ||  $newpriority == "normal"} {
            set analysis(priority$n) $newpriority
        }
    } else {
        set priority normal
        if {$newpriority > 0} { set priority idle }
        set analysis(priority$n) $priority
    }
}
################################################################################
# checkAnalysisStarted
#   Called a short time after an analysis engine was started
#   to send it commands if Scid has not seen any output from
#   it yet.
################################################################################
proc checkAnalysisStarted {n} {
    global analysis
    if {$analysis(seen$n)} { return }
    # Some Winboard engines do not issue any output when
    # they start up, so the fileevent above is never triggered.
    # Most, but not all, of these engines will respond in some
    # way once they have received input of some type.  This
    # proc will issue the same initialization commands as
    # those in processAnalysisInput below, but without the need
    # for a triggering fileevent to occur.
    
    logEngineNote $n {Quiet engine (still no output); sending it initial commands.}
    
    if {$analysis(uci$n)} {
        # in order to get options
        sendToEngine $n "uci"
        # egine should respond uciok
        sendToEngine $n "isready"
        set analysis(seen$n) 1
    } else  {
        sendToEngine $n "xboard"
        sendToEngine $n "protover 2"
        sendToEngine $n "ponder off"
        sendToEngine $n "post"
        # Prevent some engines from making an immediate "book"
        # reply move as black when position is sent later:
        sendToEngine $n "force"
    }
}
################################################################################
# with wb engines, we don't know when the startup phase is over and when the
# engine is ready : so wait for the end of initial output and take some margin
# to issue an analyze command
################################################################################
proc initialAnalysisStart {n} {
    global analysis
    
    update
    
    if { $analysis(processInput$n) == 0 } {
        after 500 initialAnalysisStart $n
        return
    }
    set cl [clock clicks -milliseconds]
    if {[expr $cl - $analysis(processInput$n)] < 1000} {
        after 200 initialAnalysisStart $n
        return
    }
    after 200 startAnalyzeMode $n 1
}
################################################################################
# processAnalysisInput (only for win/xboard engines)
#   Called from a fileevent whenever there is a line of input
#   from an analysis engine waiting to be processed.
################################################################################
proc processAnalysisInput {{n 1}} {
    global analysis
    
    # Get one line from the engine:
    set line [gets $analysis(pipe$n)]
    
    # this is only useful at startup but costs less than 10 microseconds
    set analysis(processInput$n) [clock clicks -milliseconds]
    
    logEngine $n "Engine: $line"
    
    if { ! [ checkEngineIsAlive $n ] } { return }
    
    if {! $analysis(seen$n)} {
        set analysis(seen$n) 1
        # First line of output from the program, so send initial commands:
        logEngineNote $n {First line from engine seen; sending it initial commands now.}
        sendToEngine $n "xboard"
        sendToEngine $n "protover 2"
        sendToEngine $n "ponder off"
        sendToEngine $n "post"
    }
    
    # Check for "feature" commands so we can determine if the engine
    # has the setboard and analyze commands:
    #
    if {! [string compare [string range $line 0 6] "feature"]} {
        if {[string match "*analyze=1*" $line]} { set analysis(has_analyze$n) 1 }
        if {[string match "*setboard=1*" $line]} { set analysis(has_setboard$n) 1 }
        if {[string match "*usermove=1*" $line]} { set analysis(wants_usermove$n) 1 }
        if {[string match "*sigint=1*" $line]} { set analysis(send_sigint$n) 1 }
        if {[string match "*myname=*" $line] } {
            if { !$analysis(wbEngineDetected$n) } { detectWBEngine $n $line  }
            if { [regexp "myname=\"(\[^\"\]*)\"" $line dummy name]} {
                if {$n == 1} {
                    catch {::setTitle .analysisWin$n "Analysis: $name"}
                } else {
                    catch {::setTitle .analysisWin$n "Analysis $n: $name"}
                }
            }
        }
        return
    }
    
    # Check for a line starting with "Crafty", so Scid can work well
    # with older Crafty versions that do not recognize "protover":
    #
    if {! [string compare [string range $line 0 5] "Crafty"]} {
        logEngineNote $n {Seen "Crafty"; assuming analyze and setboard commands.}
        set major 0
        if {[scan $line "Crafty v%d.%d" major minor] == 2  &&  $major >= 18} {
            logEngineNote $n {Crafty version is >= 18.0; assuming scores are from White perspective.}
            set analysis(invertScore$n) 0
        }
        # Turn off crafty logging, to reduce number of junk files:
        sendToEngine $n "log off"
        # Set a fairly low noise value so Crafty is responsive to board changes,
        # but not so low that we get lots of short-ply search data:
        sendToEngine $n "noise 1000"
        set analysis(isCrafty$n) 1
        set analysis(has_setboard$n) 1
        set analysis(has_analyze$n) 1
        return
    }
    
    # Scan the line from the engine for the analysis data:
    #
    set res [scan $line "%d%c %d %d %s %\[^\n\]\n" \
            temp_depth dummy temp_score \
            temp_time temp_nodes temp_moves]
    if {$res == 6} {
        if {$analysis(invertScore$n)  && (![string compare [sc_pos side] "black"])} {
            set temp_score [expr { 0.0 - $temp_score } ]
        }
        set analysis(depth$n) $temp_depth
        set analysis(score$n) $temp_score
        # Convert score to pawns from centipawns:
        set analysis(score$n) [expr {double($analysis(score$n)) / 100.0} ]
        set analysis(moves$n) [formatAnalysisMoves $temp_moves]
        set analysis(time$n) $temp_time
        set analysis(nodes$n) [calculateNodes $temp_nodes]
        
        # Convert time to seconds from centiseconds:
        if {! $analysis(wholeSeconds$n)} {
            set analysis(time$n) [expr {double($analysis(time$n)) / 100.0} ]
        }
        
        updateAnalysisText $n
        
        if {! $analysis(seenEval$n)} {
            # This is the first evaluation line seen, so send the current
            # position details to the engine:
            set analysis(seenEval$n) 1
        }
        
        return
    }
    
    # Check for a "stat01:" line, the reply to the "." command:
    #
    if {! [string compare [string range $line 0 6] "stat01:"]} {
        if {[scan $line "%s %d %s %d" \
                    dummy temp_time temp_nodes temp_depth] == 4} {
            set analysis(depth$n) $temp_depth
            set analysis(time$n) $temp_time
            set analysis(nodes$n) [calculateNodes $temp_nodes]
            # Convert time to seconds from centiseconds:
            if {! $analysis(wholeSeconds$n)} {
                set analysis(time$n) [expr {double($analysis(time$n)) / 100.0} ]
            }
            updateAnalysisText $n
        }
        return
    }
    
    # Check for other engine-specific lines:
    # The following checks are intended to make Scid work with
    # various WinBoard engines that are not properly configured
    # by the "feature" line checking code above.
    #
    # Many thanks to Allen Lake for testing Scid with many
    # WinBoard engines and providing this code and the detection
    # code in wbdetect.tcl
    if { !$analysis(wbEngineDetected$n) } {
        detectWBEngine $n $line
    }
    
}
################################################################################
# returns 0 if engine died abruptly or 1 otherwise
################################################################################
proc checkEngineIsAlive { {n 1} } {
    global analysis
    
    if {[eof $analysis(pipe$n)]} {
        fileevent $analysis(pipe$n) readable {}
        set exit_status 0
        if {[catch {close $analysis(pipe$n)} standard_error] != 0} {
            global errorCode
            if {"CHILDSTATUS" == [lindex $errorCode 0]} {
                set exit_status [lindex $errorCode 2]
            }
        }
        set analysis(pipe$n) ""
        if { $exit_status != 0 } {
            logEngineNote $n {Engine terminated with exit code $exit_status: "\"$standard_error\""}
            tk_messageBox -type ok -icon info -parent . -title "Scid" \
                          -message "The analysis engine terminated with exit code $exit_status: \"$standard_error\""
        } else {
            logEngineNote $n {Engine terminated without exit code: "\"$standard_error\""}
            tk_messageBox -type ok -icon info -parent . -title "Scid" \
                          -message "The analysis engine terminated without exit code: \"$standard_error\""
        }
        catch {destroy .analysisWin$n}
        return 0
    }
    return 1
}
################################################################################
# formatAnalysisMoves:
#   Given the text at the end of a line of analysis data from an engine,
#   this proc tries to strip out some extra stuff engines add to make
#   the text more compatible for adding as a variation.
################################################################################
proc formatAnalysisMoves {text} {
    # Yace puts ".", "t", "t-" or "t+" at the start of its moves text,
    # unless directed not to in its .ini file. Get rid of it:
    if {[strIsPrefix ". " $text]} { set text [string range $text 2 end]}
    if {[strIsPrefix "t " $text]} { set text [string range $text 2 end]}
    if {[strIsPrefix "t- " $text]} { set text [string range $text 3 end]}
    if {[strIsPrefix "t+ " $text]} { set text [string range $text 3 end]}
    
    # Trim any initial or final whitespace:
    set text [string trim $text]
    
    # Yace often adds "H" after a move, e.g. "Bc4H". Remove them:
    regsub -all "H " $text " " text
    
    # Crafty adds "<HT>" for a hash table comment. Change it to "{HT}":
    regsub "<HT>" $text "{HT}" text
    
    return $text
}

set finishGameMode 0

################################################################################
# will ask engine(s) to play the game till the end
################################################################################
proc toggleFinishGame { { n 1 } } {
    global analysis
    set b ".analysisWin$n.b1.bFinishGame"
    if { $::annotateModeButtonValue || $::autoplayMode } { return }
    if { ! $analysis(uci$n) } {    
        if { !$analysis(analyzeMode$n) || ! [sc_pos isAt vend] } { return }
    
        if {!$::finishGameMode} {
    	    set ::finishGameMode 1
        	$b configure -image finish_on -relief flat
            after $::autoplayDelay autoplayFinishGame
    	} else  {
        	set ::finishGameMode 0
            $b configure -image finish_off -relief flat
            after cancel autoplayFinishGame
    	}
    	return
    }

    # UCI engines
    # Default values
    if {! [info exists ::finishGameEng1] } { set ::finishGameEng1 1 }
    if {! [info exists ::finishGameEng2] } { set ::finishGameEng2 1 }
    if {! [info exists ::finishGameCmd1] } { set ::finishGameCmd1 "movetime" }
    if {! [info exists ::finishGameCmdVal1] } { set ::finishGameCmdVal1 5 }
    if {! [info exists ::finishGameCmd2] } { set ::finishGameCmd2 "movetime" }
    if {! [info exists ::finishGameCmdVal2] } { set ::finishGameCmdVal2 5 }
    if {! [info exists ::finishGameAnnotate] } { set ::finishGameAnnotate 1 }
    # On exit save values in options.dat
    options.save ::finishGameEng1
    options.save ::finishGameEng2
    options.save ::finishGameCmd1
    options.save ::finishGameCmdVal1
    options.save ::finishGameCmd2
    options.save ::finishGameCmdVal2
    options.save ::finishGameAnnotate
	
    if {$::finishGameMode} {
        set ::finishGameMode 0
        sendToEngine 1 "stop"
        set analysis(waitForReadyOk1) 0
        set analysis(waitForBestMove1) 0
        sendToEngine 2 "stop"
   		set analysis(waitForReadyOk2) 0
        set analysis(waitForBestMove2) 0   		
   		$b configure -image finish_off -relief flat
   		grab release .analysisWin$n
   		.analysisWin$n.b1.bStartStop configure -state normal
        .analysisWin$n.b1.move configure -state normal
        .analysisWin$n.b1.line configure -state normal
        .analysisWin$n.b1.alllines configure -state normal
        .analysisWin$n.b1.annotate configure -state normal
        .analysisWin$n.b1.automove configure -state normal
   		return
	}
		
	set w .configFinishGame			
	toplevel $w -class Dialog -bg [ttk::style lookup . -background]
	wm resizable $w 0 0
	::setTitle $w "Scid: $::tr(FinishGame)"
	    
	ttk::labelframe $w.wh_f -text "$::tr(White)" -padding 5
	grid $w.wh_f -column 0 -row 0 -columnspan 2 -sticky we -pady 8
	label $w.wh_f.p -image wk$::board::_size(.main.board)
    grid $w.wh_f.p -column 0 -row 0 -rowspan 3	
	ttk::radiobutton $w.wh_f.e1 -text $analysis(name1) -variable ::finishGameEng1 -value 1 
	if {[winfo exists .analysisWin2] } {
		ttk::radiobutton $w.wh_f.e2 -text $analysis(name2) -variable ::finishGameEng1 -value 2 	
	} else {
		set ::finishGameEng1 1
		ttk::radiobutton $w.wh_f.e2 -text $::tr(StartEngine) -variable ::finishGameEng1 -value 2 -state disabled
	}
	grid $w.wh_f.e1 -column 1 -row 0 -columnspan 3 -sticky w
	grid $w.wh_f.e2 -column 1 -row 1 -columnspan 3 -sticky w
	spinbox $w.wh_f.cv -width 4 -textvariable ::finishGameCmdVal1 -from 1 -to 999
	ttk::radiobutton $w.wh_f.c1 -text $::tr(seconds) -variable ::finishGameCmd1 -value "movetime"
	ttk::radiobutton $w.wh_f.c2 -text $::tr(FixedDepth) -variable ::finishGameCmd1 -value "depth"
	grid $w.wh_f.cv -column 1 -row 2 -sticky w
	grid $w.wh_f.c1 -column 2 -row 2 -sticky w
	grid $w.wh_f.c2 -column 3 -row 2 -sticky w 
	grid columnconfigure $w.wh_f 2 -weight 1	
		
	ttk::labelframe $w.bk_f -text "$::tr(Black)" -padding 5
	grid $w.bk_f -column 0 -row 1 -columnspan 2 -sticky we -pady 8
	label $w.bk_f.p -image bk$::board::_size(.main.board)
    grid $w.bk_f.p -column 0 -row 0 -rowspan 3	
	ttk::radiobutton $w.bk_f.e1 -text $analysis(name1) -variable ::finishGameEng2 -value 1 
	if {[winfo exists .analysisWin2] } {
		ttk::radiobutton $w.bk_f.e2 -text $analysis(name2) -variable ::finishGameEng2 -value 2 	
	} else {
		set ::finishGameEng2 1
		ttk::radiobutton $w.bk_f.e2 -text $::tr(StartEngine) -variable ::finishGameEng2 -value 2 -state disabled
	}
	grid $w.bk_f.e1 -column 1 -row 0 -columnspan 3 -sticky w
	grid $w.bk_f.e2 -column 1 -row 1 -columnspan 3 -sticky w
	spinbox $w.bk_f.cv -width 4 -textvariable ::finishGameCmdVal2 -from 1 -to 999
	ttk::radiobutton $w.bk_f.c1 -text $::tr(seconds) -variable ::finishGameCmd2 -value "movetime"
	ttk::radiobutton $w.bk_f.c2 -text $::tr(FixedDepth) -variable ::finishGameCmd2 -value "depth"
	grid $w.bk_f.cv -column 1 -row 2 -sticky w
	grid $w.bk_f.c1 -column 2 -row 2 -sticky w
	grid $w.bk_f.c2 -column 3 -row 2 -sticky w 
	grid columnconfigure $w.bk_f 2 -weight 1		

	ttk::checkbutton $w.annotate -text $::tr(Annotate) -variable ::finishGameAnnotate
	grid $w.annotate -column 0 -row 2 -columnspan 2 -sticky w -padx 5 -pady 8

	ttk::button $w.cancel -text $::tr(Cancel) -command { destroy .configFinishGame }
    grid $w.cancel -column 0 -row 3
    ttk::button $w.ok -text "OK" -command {
    	if {$::finishGameEng1 == $::finishGameEng2} {
   			set ::finishGameMode 1
   		} else {
   			set ::finishGameMode 2
   		}		      
	    destroy .configFinishGame		      	
    }
    grid $w.ok -column 1 -row 3
	focus $w.ok		
	bind $w <Escape> { .configFinishGame.cancel invoke }
    bind $w <Return> { .configFinishGame.ok invoke }
	bind $w <Destroy> { focus .analysisWin1 }
	::tk::PlaceWindow $w widget .analysisWin1
	grab $w
	bind $w <ButtonPress> { 
		set w .configFinishGame
		wm deiconify $w
		if {%x < 0 || %x > [winfo width $w] || %y < 0 || %y > [winfo height $w] } { ::tk::PlaceWindow $w pointer }
	}
	tkwait window $w
	if {!$::finishGameMode} { return }

	set gocmd(1) "go $::finishGameCmd1 $::finishGameCmdVal1"
	set gocmd(2) "go $::finishGameCmd2 $::finishGameCmdVal2"
	if {$::finishGameCmd1 == "movetime" } { append gocmd(1) "000" }
	if {$::finishGameCmd2 == "movetime" } { append gocmd(2) "000" }
	if {[sc_pos side] == "white"} {
		set current_cmd 1
		set current_engine $::finishGameEng1
	} else {
		set current_cmd 2
		set current_engine $::finishGameEng2
	}

    stopEngineAnalysis 1
    stopEngineAnalysis 2
	$b configure -image finish_on -relief flat
	.analysisWin$n.b1.bStartStop configure -state disabled
	.analysisWin$n.b1.move configure -state disabled
	.analysisWin$n.b1.line configure -state disabled
	.analysisWin$n.b1.alllines configure -state disabled
	.analysisWin$n.b1.annotate configure -state disabled
	.analysisWin$n.b1.automove configure -state disabled
	grab .analysisWin$n
   	
	while { [string index [sc_game info previousMove] end] != "#"} {
		set analysis(waitForReadyOk$current_engine) 1
		sendToEngine $current_engine "isready"
		vwait analysis(waitForReadyOk$current_engine)
		if {!$::finishGameMode} { break }
		sendToEngine $current_engine "position fen [sc_pos fen]"
		sendToEngine $current_engine $gocmd($current_cmd)
		set analysis(fen$current_engine) [sc_pos fen]
		set analysis(maxmovenumber$current_engine) 0
		set analysis(waitForBestMove$current_engine) 1
		vwait analysis(waitForBestMove$current_engine)
		if {!$::finishGameMode} { break }

        if { ! [sc_pos isAt vend] } { sc_var create }
		if {$::finishGameAnnotate} {
			set moves [ lindex [ lindex $analysis(multiPV$current_engine) 0 ] 2 ]
			set text [format "%+.2f %s - %s  Depth: %d  Time:%6.2f s" \
    			$analysis(score$current_engine) \
    			[addMoveNumbers $current_engine [::trans $moves]] \
    			$analysis(name$current_engine) \
    			$analysis(depth$current_engine) \
    			$analysis(time$current_engine) ]
    		makeAnalysisMove $current_engine $text
    	} else {
            makeAnalysisMove $current_engine
        }		
 
 		incr current_cmd
 		if {$current_cmd > 2} { set current_cmd 1 } 
		if {$::finishGameMode == 2} { 
			incr current_engine 
   			if {$current_engine > 2 } { set current_engine 1 }
   		}
	}
	if {$::finishGameMode} { toggleFinishGame }
}
################################################################################
#
################################################################################
proc autoplayFinishGame { {n 1} } {
    if {!$::finishGameMode || ![winfo exists .analysisWin$n]} {return}
    .analysisWin$n.b1.move invoke
    if { [string index [sc_game info previousMove] end] == "#"} {
        toggleFinishGame $n
        return
    }
    after $::autoplayDelay autoplayFinishGame
}

################################################################################
#
################################################################################
proc startEngineAnalysis { {n 1} {force 0} } {
    global analysis
    
    if { !$analysis(analyzeMode$n) } {
        set b ".analysisWin$n.b1.bStartStop"
        
        startAnalyzeMode $n $force
        $b configure -image tb_pause
        ::utils::tooltip::Set $b "$::tr(StopEngine)(a)"
        # enable lock button
        .analysisWin$n.b1.lockengine configure -state normal
    }
}

################################################################################
#
################################################################################
proc stopEngineAnalysis { {n 1} } {
    global analysis
    
    if { $analysis(analyzeMode$n) } {
        set b ".analysisWin$n.b1.bStartStop"

        stopAnalyzeMode $n
        $b configure -image tb_play
        ::utils::tooltip::Set $b "$::tr(StartEngine)"
        # reset lock mode and disable lock button
        set analysis(lockEngine$n) 0
        toggleLockEngine $n
        .analysisWin$n.b1.lockengine configure -relief raised
        .analysisWin$n.b1.lockengine configure -state disabled
    }
}

################################################################################
#
################################################################################
proc toggleEngineAnalysis { { n 1 } { force 0 } } {
    global analysis
    
    if { $n == 1} {
        if { ($::annotateMode || $::finishGameMode) && ! $force } {
            return
        }
    }
    
    if {$analysis(analyzeMode$n)} {
        stopEngineAnalysis $n
    } else  {
        startEngineAnalysis $n $force
    }
}
################################################################################
# startAnalyzeMode:
#   Put the engine in analyze mode.
################################################################################
proc startAnalyzeMode {{n 1} {force 0}} {
    global analysis
    
    # don't start analysis mode when restoring the default layout in docked mode
    if { $::docking::USE_DOCKING && $::docking::restore_running } {
        set b ".analysisWin$n.b1.bStartStop"
        $b configure -image tb_play
        ::utils::tooltip::Set $b "$::tr(StartEngine)"
        # reset lock mode and disable lock button
        set analysis(lockEngine$n) 0
        toggleLockEngine $n
        .analysisWin$n.b1.lockengine configure -relief raised
        .analysisWin$n.b1.lockengine configure -state disabled
        set t .analysisWin$n.text
        $t configure -state normal
        $t delete 0.0 end
        return
    }
    
    # Check that the engine has not already had analyze mode started:
    if {$analysis(analyzeMode$n) && ! $force } { return }
    set analysis(analyzeMode$n) 1
    if { $analysis(uci$n) } {
        updateAnalysis $n
    } else  {
        if {$analysis(has_setboard$n)} {
            sendToEngine $n "setboard [sc_pos fen]"
        }
        if { $analysis(has_analyze$n) } {
            sendToEngine $n "analyze"
        } else  {
            updateAnalysis $n ;# in order to handle special cases (engines without setboard and analyse commands)
        }
    }
}
################################################################################
# stopAnalyzeMode
################################################################################
proc stopAnalyzeMode { {n 1} } {
    global analysis
    if {! $analysis(analyzeMode$n)} { return }
    set analysis(analyzeMode$n) 0
    if { $analysis(uci$n) } {
        if {$analysis(after$n) != ""} {
            after cancel $analysis(after$n)
            set analysis(after$n) ""
        }
        sendToEngine $n "stop"
        set analysis(waitForReadyOk$n) 1
        sendToEngine $n "isready"
    } else  {
        sendToEngine $n "exit"
    }
    set analysis(fen$n) {}
}
################################################################################
# toggleLockEngine
#   Toggle whether engine is locked to current position.
################################################################################
proc toggleLockEngine {n} {
    global analysis
    if { $analysis(lockEngine$n) } {
        set state disabled
        set analysis(lockN$n) [sc_pos moveNumber]
        set analysis(lockSide$n) [sc_pos side]
    } else {
        set state normal
    }
    set w ".analysisWin$n"
    $w.b1.move configure -state $state
    $w.b1.line configure -state $state
    if {$analysis(uci$n)} {
        $w.b1.multipv configure -state $state
    }
    $w.b1.alllines configure -state $state
    $w.b1.automove configure -state $state
    if { $n == 1 } {
        $w.b1.annotate configure -state $state
        $w.b1.bFinishGame configure -state $state
    }
    updateAnalysis $n
}
################################################################################
# updateAnalysisText
#   Update the text in an analysis window.
################################################################################
proc updateAnalysisText {{n 1}} {
    global analysis
    
    set nps 0
    if {$analysis(currmovenumber$n) > $analysis(maxmovenumber$n) } {
        set analysis(maxmovenumber$n) $analysis(currmovenumber$n)
    }
    if {$analysis(time$n) > 0.0} {
        set nps [expr {round($analysis(nodes$n) / $analysis(time$n))} ]
    }
    set score $analysis(score$n)
    
    set t .analysisWin$n.text
    set h .analysisWin$n.hist.text
    
    $t configure -state normal
    $t delete 0.0 end
    
    if { $analysis(uci$n) } {
        if { [expr abs($score)] >= 327.0 } {
            if { [catch { set tmp [format "M%d " $analysis(scoremate$n)]} ] } {
                set tmp [format "%+.1f " $score]
            }
        } else {
            set tmp [format "%+.1f " $score]
        }
        $t insert end $tmp
        
        $t insert end "[tr Depth]: "
        if {$analysis(showEngineInfo$n) && $analysis(seldepth$n) != 0} {
            $t insert end [ format "%2u/%u " $analysis(depth$n) $analysis(seldepth$n)] small
        } else {
            $t insert end [ format "%2u " $analysis(depth$n) ] small
        }
        $t insert end "[tr Nodes]: "
        $t insert end [ format "%6uK (%u kn/s) " $analysis(nodes$n) $nps ] small
        $t insert end "[tr Time]: "
        $t insert end [ format "%6.2f s" $analysis(time$n) ] small
        if {$analysis(showEngineInfo$n)} {
            $t insert end "\n" small
            $t insert end "[tr Current]: "
            $t insert end [ format "%s (%s/%s) " [::trans $analysis(currmove$n)] $analysis(currmovenumber$n) $analysis(maxmovenumber$n)] small
            $t insert end "TB Hits: "
            $t insert end [ format "%u " $analysis(tbhits$n)] small
            $t insert end "Nps: "
            $t insert end [ format "%u n/s " $analysis(nps$n)] small
            $t insert end "Hash Full: "
            set hashfull [expr {round($analysis(hashfull$n) / 10)}]
            $t insert end [ format "%u%% " $hashfull ] small
            $t insert end "CPU Load: "
            set cpuload [expr {round($analysis(cpuload$n) / 10)}]
            $t insert end [ format "%u%% " $cpuload ] small
            
            #$t insert end [ format "\nCurrent: %s (%s) - Hashfull: %u - nps: %u - TBhits: %u - CPUload: %u" $analysis(currmove$n) $analysis(currmovenumber$n) $analysis(hashfull$n) $analysis(nps$n) $analysis(tbhits$n) $analysis(cpuload$n) ]
        }
    } else {
        set newStr [format "Depth:   %6u      Nodes: %6uK (%u kn/s)\n" $analysis(depth$n) $analysis(nodes$n) $nps]
        append newStr [format "Score: %+8.2f      Time: %9.2f seconds\n" $score $analysis(time$n)]
        $t insert 1.0 $newStr small
    }
    
    
    if {$analysis(automove$n)} {
        if {$analysis(automoveThinking$n)} {
            set moves "   Thinking..... "
        } else {
            set moves "   Your move..... "
        }
        
        if { ! $analysis(uci$n) } {
            $t insert end $moves blue
        }
        $t configure -state disabled
        updateAnalysisBoard $n ""
        return
    }
    
    if {! $::analysis(movesDisplay$n)}  {
        $h configure -state normal
        $h delete 0.0 end
        $h insert end "     $::tr(ClickHereToSeeMoves)\n" blue
        updateAnalysisBoard $n ""
        $h configure -state disabled
        return
    }
    
    if { $analysis(uci$n) } {
        set moves [ lindex [ lindex $analysis(multiPV$n) 0 ] 2 ]
    } else  {
        set moves $analysis(moves$n)
    }
    
    $h configure -state normal
    set cleared 0
    if { $analysis(depth$n) < $analysis(prev_depth$n)  || $analysis(prev_depth$n) == 0 } {
        $h delete 1.0 end
        set cleared 1
    }
    
    ################################################################################
    if { $analysis(uci$n) } {
        if {$cleared} { set analysis(multiPV$n) {} ; set analysis(multiPVraw$n) {} }
        if {$analysis(multiPVCount$n) == 1} {
            set newhst [format "%2d %s %s" $analysis(depth$n) [scoreToMate $score $moves $n] [addMoveNumbers $n [::trans $moves]]]
            if {$newhst != $analysis(lastHistory$n) && $moves != ""} {
                $h insert end [format "%s (%.2f)\n" $newhst $analysis(time$n)] indent
                $h see end-1c
                set analysis(lastHistory$n) $newhst
            }
        } else {
            $h delete 1.0 end
            # First line
            set pv [lindex $analysis(multiPV$n) 0]
            if { $pv != "" } {
                catch { set newStr [format "%2d %s " [lindex $pv 0] [scoreToMate $score [lindex $pv 2] $n] ] }
            
                $h insert end "1 " gray
                append newStr "[addMoveNumbers $n [::trans [lindex $pv 2]]] [format (%.2f)\n [lindex $pv 4]]"
                $h insert end $newStr blue
            
                set lineNumber 1
                foreach pv $analysis(multiPV$n) {
                    if {$lineNumber == 1} { incr lineNumber ; continue }
                    $h insert end "$lineNumber " gray
                    set score [scoreToMate [lindex $pv 1] [lindex $pv 2] $n]
                    $h insert end [format "%2d %s %s (%.2f)\n" [lindex $pv 0] $score [addMoveNumbers $n [::trans [lindex $pv 2]]] [lindex $pv 4]] indent
                    incr lineNumber
                }
            }
        }
        ################################################################################
    } else  {
        # original Scid analysis display
        $h insert end [format "%2d %+5.2f %s (%.2f)\n" $analysis(depth$n) $score [::trans $moves] $analysis(time$n)] indent
        $h see end-1c
    }
    
    $h configure -state disabled
    set analysis(prev_depth$n) $analysis(depth$n)
    if { ! $analysis(uci$n) } {
        $t insert end [::trans $moves] blue
    }
    # $t tag add score 2.0 2.13
    $t configure -state disabled
    
    updateAnalysisBoard $n $analysis(moves$n)
}
################################################################################
# args = score, pv
# returns M X if mate detected (# or ++) or original score
################################################################################
proc scoreToMate { score pv n } {
    
    if {$::analysis(lockEngine$n)} {
        return [format "%+5.2f" $score]
    }
    
    if { [string index $pv end] == "#" || [string index $pv end] == "+" && [string index $pv end-1] == "+"} {
        set plies [llength $pv]
        
        set mate [expr $plies / 2 + 1 ]
        
        set sign ""
        if {[expr $plies % 2] == 0 && [sc_pos side] == "white" || [expr $plies % 2] == 1 && [sc_pos side] == "black"} {
            set sign "-"
        }
        if {[sc_pos side] == "white" } {
            if { $sign == "" } {
                set mate [expr $plies / 2 + 1 ]
            } else  {
                set mate [expr $plies / 2 ]
            }
        } else  {
            if { $sign == "" } {
                set mate [expr $plies / 2 ]
            } else  {
                set mate [expr $plies / 2 + 1 ]
            }
        }
        
        set ret "M$sign$mate"
    } else  {
        set ret [format "%+5.2f" $score]
    }
    
    return $ret
}
################################################################################
# returns the pv with move numbers added
# ::pgn::moveNumberSpaces controls space between number and move
################################################################################
proc addMoveNumbers { e pv } {
    global analysis

    if { $analysis(lockEngine$e) } {
      set n $analysis(lockN$e)
      set turn $analysis(lockSide$e)
    } else {
      set n [sc_pos moveNumber]
      set turn [sc_pos side]
    }

    if {$::pgn::moveNumberSpaces} {
      set spc { }
    } else {
      set spc {}
    }

    set ret ""
    set start 0
    if {$turn == "black"} {
        set ret "$n.$spc... [lindex $pv 0] "
        incr start
        incr n
    }
    for {set i $start} {$i < [llength $pv]} {incr i} {
        set m [lindex $pv $i]
        if { [expr $i % 2] == 0 && $start == 0 || [expr $i % 2] == 1 && $start == 1 } {
            append ret "$n.$spc$m "
        } else  {
            append ret "$m "
            incr n
        }
    }
    return $ret
}
################################################################################
# toggleAnalysisBoard
#   Toggle whether the small analysis board is shown.
################################################################################
proc toggleAnalysisBoard {n} {
    global analysis
    if { $analysis(showBoard$n) } {
        set analysis(showBoard$n) 0
        pack forget .analysisWin$n.bd
        setWinSize .analysisWin$n
        bind .analysisWin$n <Configure> "recordWinSize .analysisWin$n"
    } else {
        bind .analysisWin$n <Configure> ""
        set analysis(showBoard$n) 1
        pack .analysisWin$n.bd -side right -before .analysisWin$n.b1 -padx 4 -pady 4 -anchor n
        update
        .analysisWin$n.hist.text configure -setgrid 0
        .analysisWin$n.text configure -setgrid 0
        set x [winfo reqwidth .analysisWin$n]
        set y [winfo reqheight .analysisWin$n]
        wm geometry .analysisWin$n ${x}x${y}
        .analysisWin$n.hist.text configure -setgrid 1
        .analysisWin$n.text configure -setgrid 1
    }
}
################################################################################
# toggleEngineInfo
#   Toggle whether engine info are shown.
################################################################################
proc toggleEngineInfo {n} {
    global analysis
    if { $analysis(showEngineInfo$n) } {
        .analysisWin$n.text configure -height 2
    } else {
        .analysisWin$n.text configure -height 1
    }
    updateAnalysisText $n
}
################################################################################
#
################################################################################
# updateAnalysisBoard
#   Update the small analysis board in the analysis window,
#   showing the position after making the specified moves
#   from the current main board position.
#
proc updateAnalysisBoard {n moves} {
    global analysis
    # PG : this should not be commented
    if {! $analysis(showBoard$n)} { return }
    
    set bd .analysisWin$n.bd
    # Temporarily wipe the premove command:
    sc_info preMoveCmd {}
    # Push a temporary copy of the current game:
    sc_game push copyfast
    
    # Make the engine moves and update the board:
    sc_move_add $moves $n
    ::board::update $bd [sc_pos board]
    
    # Pop the temporary game:
    sc_game pop
    # Restore pre-move command:
    sc_info preMoveCmd preMoveCommand
}

################################################################################
# sendFENtoEngineUCI
#   Wait for the engine to be ready then send position and go infinite
#   engine_n: number of the engine that will receive the commands
#   delay: delay the commands - INTERNAL - DON'T USE OUTSIDE sendFENtoEngineUCI
################################################################################
proc sendFENtoEngineUCI {engine_n  {delay 0}} {
    global analysis
    set analysis(after$engine_n) ""

    if {$analysis(waitForReadyOk$engine_n) } {
        #If too slow something is wrong: give up
        if {$delay > 250} { return }

        # Engine is not ready: process events, idle tasks and then call me back
        incr delay
        set cmd "set ::analysis(after$engine_n) "
        append cmd { [ } " after $delay sendFENtoEngineUCI $engine_n $delay " { ] }
        set analysis(after$engine_n) [eval [list after idle $cmd]]
    } else {
        sendToEngine $engine_n "position fen $analysis(fen$engine_n)"
        sendToEngine $engine_n "go infinite"
    }
}

################################################################################
# updateAnalysis
#   Update an analysis window by sending the current board
#   to the engine.
################################################################################
proc updateAnalysis {{n 1}} {
    global analysis
    if {$analysis(pipe$n) == ""} { return }
    # Just return if no output has been seen from the analysis program yet:
    if {! $analysis(seen$n)} { return }
    # No need to update if no analysis is running
    if { ! $analysis(analyzeMode$n) } { return }
    # No need to send current board if engine is locked
    if { $analysis(lockEngine$n) } { return }

    if { $analysis(uci$n) } {
        if {$analysis(after$n) == "" } {
            if { $analysis(fen$n) != "" } { sendToEngine $n "stop" }
            set analysis(waitForReadyOk$n) 1
            sendToEngine $n "isready"
            set analysis(after$n) [after idle "sendFENtoEngineUCI $n"]
        }
        set analysis(fen$n) [sc_pos fen]
        set analysis(maxmovenumber$n) 0
        set analysis(movelist$n) [sc_game moves coord list]
        set analysis(nonStdStart$n) [sc_game startBoard]
    } else {
        #TODO: remove 0.3s delay even for other engines

        global analysisWin windowsOS

        # If too close to the previous update, and no other future update is
        # pending, reschedule this update to occur in another 0.3 seconds:
        #
        if {[catch {set clicks [clock clicks -milliseconds]}]} {
            set clicks [clock clicks]
        }
        set diff [expr {$clicks - $analysis(lastClicks$n)} ]
        if {$diff < 300  &&  $diff >= 0} {
            if {$analysis(after$n) == ""} {
                set analysis(after$n) [after 300 updateAnalysis $n]
            }
            return
        }
        set analysis(lastClicks$n) $clicks
        set analysis(after$n) ""
        after cancel updateAnalysis $n

        set old_movelist $analysis(movelist$n)
        set movelist [sc_game moves coord list]
        set analysis(movelist$n) $movelist
        set nonStdStart [sc_game startBoard]
        set old_nonStdStart $analysis(nonStdStart$n)
        set analysis(nonStdStart$n) $nonStdStart

        # This section is for engines that support "analyze":
        if {$analysis(has_analyze$n)} {
            sendToEngine $n "exit"   ;# Get out of analyze mode, to send moves.
            
            # On Crafty, "force" command has different meaning when not in
            # XBoard mode, and some users have noticed Crafty not being in
            # that mode at this point -- although I cannot reproduce this.
            # So just re-send "xboard" to Crafty to make sure:
            if {$analysis(isCrafty$n)} { sendToEngine $n "xboard" }
            
            sendToEngine $n "force"  ;# Stop engine replying to moves.
            # Check if the setboard command must be used -- that is, if the
            # previous or current position arose from a non-standard start.
            
            #if {$analysis(has_setboard$n)  &&  ($old_nonStdStart  || $nonStdStart)}
            # We skip all code below if the engine has setboard capability : this is provides less error prone behavior
            if {$analysis(has_setboard$n)} {
                sendToEngine $n "setboard [sc_pos fen]"
                # Most engines with setboard do not recognize the crafty "mn"
                # command (it is not in the XBoard/WinBoard protocol), so only send it to crafty:
                if {$analysis(isCrafty$n)} { sendToEngine $n "mn [sc_pos moveNumber]" }
                sendToEngine $n "analyze"
                return
            }
            
            # If we need a non-standard start and the engine does not have
            # setboard, the user is out of luck:
            if {$nonStdStart} {
                set analysis(moves$n) "  Sorry, this game has a non-standard start position."
                updateAnalysisText $n
                return
            }
            
            # Here, the engine has the analyze command (and no setboard) but this game does
            # not have a non-standard start position.
            
            set oldlen [llength $old_movelist]
            set newlen [llength $movelist]
            
            # Check for optimization to minimize the commands to be sent:
            # Scid sends "undo" to backup wherever possible, and avoid "new" as
            # on many engines this would clear hash tables, causing poor
            # hash table performance.
            
            # Send just the new move if possible (if the new move list is exactly
            # the same as the previous move list, with one extra move):
            if {($newlen == $oldlen + 1) && ($old_movelist == [lrange $movelist 0 [expr {$oldlen - 1} ]])} {
                sendMoveToEngine $n [lindex $movelist $oldlen]
                
            } elseif {($newlen + 1 == $oldlen) && ($movelist == [lrange $old_movelist 0 [expr {$newlen - 1} ]])} {
                # Here the new move list is the same as the old list but with one
                # less move, just send one "undo":
                sendToEngine $n "undo"
                
            } elseif {$newlen == $oldlen  &&  $old_movelist == $movelist} {
                
                # Here the board has not changed, so send nothing
                
            } else {
                
                # Otherwise, undo and re-send all moves:
                for {set i 0} {$i < $oldlen} {incr i} {
                    sendToEngine $n "undo"
                }
                foreach m $movelist {
                    sendMoveToEngine $n $m
                }
                
            }
            
            sendToEngine $n "analyze"
            
        } else {
            
            # This section is for engines without the analyze command:
            # In this case, Scid just sends "new", "force" and a bunch
            # of moves, then sets a very long search time/depth and
            # sends "go". This is not ideal but it works OK for engines
            # without "analyze" that I have tried.
            
            # If Unix OS and engine wants it, send an INT signal:
            if {(!$windowsOS)  &&  $analysis(send_sigint$n)} {
                catch {exec -- kill -s INT [pid $analysis(pipe$n)]}
            }
            sendToEngine $n "new"
            sendToEngine $n "force"
            if { $nonStdStart && ! $analysis(has_setboard$n) } {
                set analysis(moves$n) "  Sorry, this game has a non-standard start position."
                updateAnalysisText $n
                return
            }
            if {$analysis(has_setboard$n)} {
                sendToEngine $n "setboard [sc_pos fen]"
            } else  {
                foreach m $movelist {
                    sendMoveToEngine $n $m
                }
            }
            # Set engine to be white or black:
            sendToEngine $n [sc_pos side]
            # Set search time and depth to something very large and start search:
            sendToEngine $n "st 120000"
            sendToEngine $n "sd 50"
            sendToEngine $n "post"
            sendToEngine $n "go"
        }
    }
}
################################################################################
#
################################################################################

set temptime 0
trace variable temptime w {::utils::validate::Regexp {^[0-9]*\.?[0-9]*$}}

proc setAutomoveTime {{n 1}} {
    global analysis temptime dialogResult
    set ::tempn $n
    set temptime [expr {$analysis(automoveTime$n) / 1000.0} ]
    set w .apdialog
    toplevel $w
    #wm transient $w .analysisWin
    ::setTitle $w "Scid: Engine thinking time"
    wm resizable $w 0 0
    ttk::label $w.label -text "Set the engine thinking time per move in seconds:"
    pack $w.label -side top -pady 5 -padx 5
    ttk::entry $w.entry -background white -width 10 -textvariable temptime
    pack $w.entry -side top -pady 5
    bind $w.entry <Escape> { .apdialog.buttons.cancel invoke }
    bind $w.entry <Return> { .apdialog.buttons.ok invoke }
    
    addHorizontalRule $w
    
    set dialogResult ""
    set b [ttk::frame $w.buttons]
    pack $b -side top -fill x
    ttk::button $b.cancel -text $::tr(Cancel) -command {
        focus .
        catch {grab release .apdialog}
        destroy .apdialog
        focus .
        set dialogResult Cancel
    }
    ttk::button $b.ok -text "OK" -command {
        catch {grab release .apdialog}
        if {$temptime < 0.1} { set temptime 0.1 }
        set analysis(automoveTime$tempn) [expr {int($temptime * 1000)} ]
        focus .
        catch {grab release .apdialog}
        destroy .apdialog
        focus .
        set dialogResult OK
    }
    pack $b.cancel $b.ok -side right -padx 5 -pady 5
    focus $w.entry
    update
    catch {grab .apdialog}
    tkwait window .apdialog
    if {$dialogResult != "OK"} {
        return 0
    }
    return 1
}

proc toggleAutomove {{n 1}} {
    global analysis
    if {! $analysis(automove$n)} {
        cancelAutomove $n
    } else {
        set analysis(automove$n) 0
        if {! [setAutomoveTime $n]} {
            return
        }
        set analysis(automove$n) 1
        automove $n
    }
}

proc cancelAutomove {{n 1}} {
    global analysis
    set analysis(automove$n) 0
    after cancel "automove $n"
    after cancel "automove_go $n"
}

proc automove {{n 1}} {
    global analysis autoplayDelay
    if {! $analysis(automove$n)} { return }
    after cancel "automove $n"
    set analysis(automoveThinking$n) 1
    after $analysis(automoveTime$n) "automove_go $n"
}

proc automove_go {{n 1}} {
    global analysis
    if {$analysis(automove$n)} {
        if {[makeAnalysisMove $n]} {
            set analysis(autoMoveThinking$n) 0
            updateBoard -pgn
            after cancel "automove $n"
            ::tree::doTraining $n
        } else {
            after 1000 "automove $n"
        }
    }
}
################################################################################
# If UCI engine, add move through a dedicated function in uci namespace
# returns the error caught by catch
################################################################################
proc sc_move_add { moves n } {
    if { $::analysis(uci$n) } {
        return [::uci::sc_move_add $moves]
    } else  {
        return [ catch { sc_move addSan $moves } ]
    }
}
################################################################################
# append scid directory if path starts with .
################################################################################
proc toAbsPath { path } {
    set new $path
    if {[string index $new 0] == "." } {
        set scidInstallDir [file dirname [info nameofexecutable] ]
        set new [ string replace $new 0 0  $scidInstallDir ]
    }
    return $new
}
################################################################################
#
################################################################################
image create photo tb_cpu -data {
    R0lGODlhGAAYAOeiAAAAAAABAQECAgICAgIDAwUFBQYGBgYHCAgICDE1JzI1JzI2JzM3KDU5
    Kjg8LTk9Ljk9Lzo+MDs/MTtALDxAMj1AMjxCLTxCLj1BMj5CND9FMEJIMkNKM0VMNE5VPFFX
    P1ZfQlheR11mR15TuWBmUGFqSWJoU2FrSmNtS2RtTGNZvGRuTGVvTWVbvWZwTWdxTmddvmlv
    Wml0UGp0UGthwGx2Umx2U2x3Um50YG1jwW14U255U255VG55VW9lwm96VG96VXB7VXB7VnF8
    V3J8WHN5ZnJ9V3J9WHNpxHN+WXR/WnaAXHeBXXl+bHeCXnp/bXlvx3iDX3qAbXuAbnqEYXyB
    b3txyHuFYn2CcHyGY3yGZH1zyX2HZX6HZYGCgYCFdH92yn+JZ4CKaIF4y4GLaYOId4KMa4WO
    boaQcId+zomSc4qTdYuD0IyVd42Vd4+H0pCZe5WUipWVjJKK05KbfpSM1JaO1ZefhJiR1pqT
    152V2KKhmJ+Y2aGa2qOd26af3Kii3a2to6+p4LGs4bax47iz5L29tr245sDAwMTDusXFvMnI
    wMzLw9jSm9nTnNDQx9rTnN7Xn9bVzuLcouTdpOXepOfgpujhpt7e1+nip+rjqODf2uDf3ODg
    3OHg3O3mqu3mq+3mrP//////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////////////
    /////////////////////////////////yH5BAEKAP8ALAAAAAAYABgAAAj+AP8JHEiwoMGD
    CBMqRAigoUMABh9K/AdAlMWLoiASBNBD0xFQH4mEoojxosaBAG5UqkHphqUZk0iWzLiRwYIG
    DypEkABhgcySEB0ykFJmyhcpRXDEIEERkdOniIKCytTgyR06a9SYMXNFyU+MQZPocIAFzpks
    YboYCfLjq0mKmjI9qOLGDJdOnjY94uHWYtAhQDBgaSNGCydJjBLpoOilsWMvQT9dotAEjZMo
    mBYp2iPjX4FDhAgVKjRIT9AjQjLgIEMliaFAcuKs+GeAECBAfvTgSRNZrokuSYKw1cHiBO1B
    fvrosWNnS9AlNhiEYLJDRooSIkCAoC2oT546deZwQAnakMEHDx04aLAw4cKGfwi62wH/BsnJ
    8gsS5Few/98BQHiAVwcbNJwkEAAyROICJC84gkIj/wjwR4BzvDFGDgEUBEAQn3Do4Sf/EMAH
    GySCYQUMBlIkkUP/DGAFEj7A0IIKI6S40IoNLaTjjjsGBAA7
}
image create photo tb_training -data {
    R0lGODlhGAAYAOeRAGVlZWpnZWhoaG1pZnZrYm5ubnduZYRtWXxwZ3V1dcRkFnl5eYt3aM5r
    G4GBgZF9bYKCgshwKJd+adBvIdRuHIWFhaF+YoaGhpuBbIiIiNtyHqt/XImJicN6P9J2LNd1
    JoqKiouLi8R+Ro2NjY6OjuR4IeR4IuR5IuV5IsuARJCQkJGRkZKSkq2Lb5SUlKeQfZWVlZaW
    luaCMJeXl8yKVJiYmPGBJpmZmfKCJvOCJ5qampycnNGOWb6Ucp2dnduNTp6enp+fn6CgoKGh
    oaKioqSkpOuSSqWlpaampqenp9+ZYaioqKmpqdidbqqqquyZVqurq7iom6ysrK6urtakfK+v
    r7mtpLCwsLKysrOzs7S0tLa2tre3t7i4uLm5ubq6uru7u9a0mcC8ur6+vsDAwMPDw8TExMfH
    x8jIyMnJycrKyt7GssvLy8zMzM/MyM3Nzc7Ozs/Pz9DQ0NHR0dLS0tTU1NXV1dbW1tfX19jY
    2NzX1NnZ2dra2tvb29zc3N3d3d7e3t/f3+Dg4OHh4eLi4uPj4+Tk5OXl5ebm5ufn5+jo6Onp
    6erq6uvr6+zs7O3t7e7u7v//////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////////////
    /////////////////////////////////yH5BAEKAP8ALAAAAAAYABgAAAj+AP8JHEjwnwEG
    AQoqXPhvQI8nRpQ8YEjxXwsZOXKg+IGg4kIeJWzYMPEBg0eFNDSUKKFhgoSTBS14oEChQQoC
    MAtuiKBAxIGcBSu4sVIEaNA4X4gYJegAqZClAgWQafPFi46TBRA5esRVESI+bfrkYXTIUCE/
    CxQyIRRI0CFIf97YsWNmiqFEYvFMURjoD6BBkCDRQUOmyxUodRohynOHDwCCMAz5+UOIK6E0
    Y7hcGZOokSI8d/DcIFhGD5UmaxI5Wo2I0KJGjRb9uXOnjpqBCQyFOYGjAx9BiBitZqSIEB/Q
    durgqSCwCKA8UV6I4UO9+p48eZDX2f70HxDQd5Jl16EzZ44cOHDetGGjJg2aM2ZGCNxBBsyX
    Llu0ZMFyZYoUJ0wsgUQRRAwRRBAcCBSDGVVxkR9/VfjnxBJJHEGgEEEIwZxAOviwgw431DBD
    DC6wsIIKJIwQAggZXFABBI9BJaNHAQEAOw==
}
image create photo tb_addmove -data {
    R0lGODlhGAAYAOfwABSDDhOFDhWEDxGIDBOHDRiEEheFERKJDROKDRCMDBOLDRaNEhOQDROQ
    DhKRDRCTCxGTDCOIHhGVDBCWCw+XChCYCw+ZCg6bChCaCw+bCxSYDg6cChWYDxaYEBSaDhaa
    EBOeDhafEBybFhKiDSiTIx2cFxGmDBKmDRGnDDSRLxGqDCOeHhGrDCSfHiSfHyWeIxCuCxCv
    CyegIg+yCw+zCyqiJQ63CjyaNwy7CQ27Cg28Ci+lKgu+CBC8DAy/CUOZPwrBCAzACTSmLjWm
    MArECAzDCQvECAzECAzECTenMj6iOwvHCDmoNAnJBwvICDqoNjupNgjMBgrLBwrMBwjOBkSm
    QQnQB06hSQjUBkOsPlShTzyyNwfYBkqrRkauQTW6Mk2uS0yxSE6ySk+ySl6oWlGyTEO8QlKz
    TVKzTmWqYVe1U0q+SUy+Sk2+TE+9TVC9Tl64Wlu7WW2vamC5XGW7YXSxcUzOSmPBYWq9ZlTM
    Unu1d22/ambEZWzCan+2fGrHaHDEbXDEbnXCcWvLam3KbHPHcXjEdXrEdnDMcHfIdXrKeHvK
    enfOdH3Le4bKg4nLhpDOjZLPkJLQkJDVjZfRlIzaipTVkpHZj5zTmZnVl5bZlJ7Um47fjJ7V
    m6DVnZPekZvZmZfdlaLWn6LWoKPWoZ/ZnpTikqTXopzdmqTZoqbYpJnhmKfYpaHdn6nZp57h
    nKnap6bdpKvaqKvaqZrmmandp6Phoq3bq6zcqqDlnq/crajhprDcrqTlo7Hdr7LdsKzhq7Pd
    saLpoKnlqLTesrbetKbppbbftK7lrKvoqrjgt6jsp7PlsbrgubrhuLrhubDor63srLziu7Xo
    tLHrsL7ivb/iva7vrrrouLbrtbTus8PkwsTkwrvrurnuuLXytL3uvMDsv7rxusLuwb/xvszo
    y7z0vMfuxsTxw8H0wMnxyMb0xc3xzMv0ytD0z9T01P//////////////////////////////
    /////////////////////////////////yH5BAEKAP8ALAAAAAAYABgAAAj+AP8JHDjQzBo2
    bdy8IciwocBB79y1W5fO3CKHGP8hYqcOHTlx3xpldEjo3Dhw3rRdUzSy4Z9w3bJRi7YsUUuG
    fLBNg5bMmLBCNwneYYZsWK9ctAIFHRgH2C5br1aZ6oPxRbBt1ZwV84WrVqxWqEJ94mQHBw8g
    RJpEoZIADDdrz479ugUrVSlQmi5VytPDR5ElUqxg4bKhizRlxHTNYjWqUyZLkxh9mWEjh98l
    UwRfqCL3lqtTnjBRkgRoywkVMGhU9oHESWYLSnTJUjVqEyVDZ1p4ADHChIoYqi0fcU1hwZw9
    eNBAEaGhuYbdvVkArxzEiJMJA5xr1w4dhXTVOqpvP/h3QIF58wgYcA/xoYEDCBIqYMiQkYBz
    ETJ2kFgqMICGDisMkUUYN/D3DwAcuPCEGHDgcYWBAJSQxBh0GOIIGQYKUIMXcxwCiShyGGiA
    EGXs8QgpzehhYAFMqCFIJLyU44eB/0SQwg9apFFHRgEBADs=
}
image create photo tb_update -data {
    R0lGODlhGAAYAOfCAEm5Sly3Sme+Qmi/Q2a9XnG/RHTAPXLARXPBRnHBTXLCTnzAP2vCY3fD
    QXbDSH3BQHTDT3zBR3DBaXnEQnfESX7CQXLEV3jFSnbFUYDDQnTFWILEO2/GZnjDXoHEQ4PF
    PHbEZonDO4LFRITGPX7FU3zFWnrFYIrEPIPGRXvDbH/GVHvGYYbHPovFPYTHRnbHbn7HXIfI
    P4zGPoXIR3fIb3zIYnrIaY/HN4nGTo3HQIPGYoHGaZDIOIfKSYTHY3nKcYDKXpHJOYvIUH3I
    d5LKOn7JeJfIOoHJcZDKQ4jKX5PLPIbKZY3KUoTKbJjJO5XMNIjIcZDLTJTMPYXLbYnJcpjK
    RJzLNJXNPprLPZHNTZ3MNYjLe57NNp/ON4rNfYjNg43Nd6DPOaLQMKXNOI7LgqfOL47OeKbO
    OZHMfajPMKfPOqnQMpPOf6rRM6fQRK3SKazSNJPQh5DTgrHRNbTSK6/VLLLSNrXTLa7VN5XT
    ibTTN53Td7bULrfVL7vTL5rTkbzUMKnTbJbWk7jXMZ3WgL7VMcDWJ7fXO7nYMp/VjZ3Vk7/W
    MsHXKLjYPJ7WlMDXNKTXiMHYNcPZK8XbH7/cLKDYlr7YRsnYLL3YTr/ZR6bXlsPbOKrYkcnZ
    OMvaL6bbk8HbSsfdL63ZjKvZks7cJczbMMvbO83cMcXdQ8feO7Lbh8beRdDfKM7eM7PciK/a
    oM3ePbnaibjdfdXdNdHgNdbeNq/dqtXeQNHhQb7ehbzejNniQ7nfrdvjO9jiTNrjRdvkRuTm
    Sv//////////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////////////
    /////////////////////////////////yH+FUNyZWF0ZWQgd2l0aCBUaGUgR0lNUAAh+QQB
    CgD/ACwAAAAAGAAYAAAI/gD/CRxIsKDBgwSLNGEiRBBChENWRMEELBgoCQ8J/jARJZOvXaYe
    dQLFIKNAEpaC3erkZ5CfQ49MBRj4goQGgzbc3HrUBxGfPn4erQIgkEwjXLd6OCoYB4epTnai
    3rFkioNAGLf4WGo1w6AgLKb8RLVDxxQagVNm+XlDdUXBJqHw2Hn0SK4pMwJfeWhFZ26Ygkge
    tWlTatCsQaWODNRU5dEcO546DLRRx8+cR1WOSCFVSwdBKpTsqOnkYSCNR2fGkCrxT5GKNzsI
    yhEzZ86gGAPNMBrDhVFsgVQUFXxiZ8ygJwO9+MGC5ZLih07aYJmDZCCBOm5u9Lnw8EsbLUro
    mZQeGMRKDixjUiDE4CdHjjmsB0KY02LEmg1sDO4QEySEkTBeEJSCEjlsgEMYOYBAhkBbQBCG
    ERlEEUYEBpXAxQYZZBAEF0GgMAJ6IiwwQRUfQHEQCVZkUIADEUzwgQgqGpBEILIId9ArCRgR
    QgE8FiAACTrsEUssvJjUgQM5nJBBEnuIokssoxRpEoNgQMKJKJzYYsuUXBoUEAA7
}
image create photo tb_annotate -data {
    R0lGODlhGAAYAOfzAAAAAAIAAAMAAAYAAAUFBRIMCw4ODisLBBQUFCUSDiIXFR8fHygoKDg4
    OE9BFVpQLlxQK2FWL2JWN2FXOGVZMGZaMrs3GWxfNGFhYWdjWcBGK8FGKm9rY8NMMd9CHsRU
    O3R0cnV0cs9SNcdXPtxQMN9PLnx4b3p6d9xWOHx7echhSslkS4CAf4GAf4KBfuNdP4OCgN9f
    QYODgYSDgYaFgt9jRsxtWIiIhZCKgeVpTuJrUN9yWNB4ZZOTkJSUkd94X916Y5qVipuVit96
    YpuWipiXlJeXl5iXl52Xi5mYkeh5YJ2XjJmYl56Yjed7Y5uZl5+ZjZ+Zjpqal5qamZual5+a
    jqCajpubmaGbj6GbkJycnKGckOeBa6OdkaOdkp6enp+enKOekueDbaSek5+fnqGfnKGgnaGh
    oKGhodeQfaWjoKSko+qMd+KPfamppqqppquqp6urqqyrqKurq6yrqa2rqa2sqe2kPq+vrrCv
    rbCvrrGwrrOyr+eejbOysfCpP7Ozs7SzsbSzsrS0steudLW0srW0s7W1s7W1tLW1tba1tLe2
    tbi3tPOvQrm3tri4trm4uLm5ubq5t/SyRO+0Tbu7ufe1RPK2Tfe1Rb29vO6rm8C/vMDAwMPC
    vsXEwcnJx8rKyM3LyPbSNs3My83Nzc/OytDOyvjYN9DQz9LRzdHR0dPSzvncONTTz9PT0tPT
    09XTztbU0PnfOdfV0dfW0dbW1tjW0djW0tnX09nX1PrkOtrZ1dvZ1fvnO9za1tza2Nzb2Nzb
    2fzpO9zc2t3c2N3c2t7d2fzrPd/e2uDe2t/f3eDf2+Hf2+Hf3OHg3ODg3+Hg3eLh3ePi4OTj
    4OXj4OXk4eTk5Obl4ufm4+jn5Ofn5+np6evq6Ozr6e3s6u3t6+3t7e/v7vDw7vDw8PHw7vLy
    8vPy8fTz8vT09Pb19Pb29vj39vj49/n5+Pn5+fr6+fv7+/z8+/7+/v//////////////////
    /////////////////////////////////yH5BAEKAP8ALAAAAAAYABgAAAj+AP8JHJhAQIAB
    BwYqXKgQgEMdKEigEOGwogEGGBj+A/BKHQBNfdoAWQGglrt27bRZI7WAIQB18wCI+TFkx4gC
    tea1C4dn2zxADRYCmBeTS40YNToUQMMpU6I14+ahm0OgIVEATkpo3aDAFbx25b5UdGg1phIP
    aC0AIJMpU6QzjmTMIDtwqDwAZ9MCQLWunblnvz4B6HUJQN158RCwecH4AwAtlSAtUmQIwDFL
    EAwLHPoOAJscoFUgGHWutDkAwjBd0Lx5HjvPPADwsIFgyiNEgQDomjSBbut0ANIAiANAAwBQ
    5LwBkNVIAgAOrDfOOzcFAAsjTAC0ODIIACtKFQDYPDERfeg5c8o+DSNXTFIwAKf+UABwxQ6O
    8vPEIUJ0qJAgQX4AIModDwAAAgyeBIHfN9504yA32UgDACERACDFG520EgV+3Oyxhx555EEH
    AA44FIILPZixSxb4YXPNi9VQA4xDRVABRyer4IILFOW5Mw0dctRhhxtg3HBCCjT4UIYaatzS
    RHngQNOMM8tEY0wqjPCxSSix8IKLLbMgUZ4qzCSDjDHLEJNLKaZ0yYsvt9ACixDlJRHGGF50
    4cUWWFRhhRVZQAHFEksQkUF0G42l6KK+aeToowEBADs=
}

image create photo tb_play -data {
    R0lGODlhGAAYAKUjAAAAAGxranJxcHt7en18e39+fYKBgIaFg4mIhoyLiY+OjJCPjZmZlp2c
    mqGfnaGgnqWkoaemo6mopbCvrLSzsbWzsba0srm2tLm3tLq5try6t728ucPCv8XDwMfGw8fG
    xNDOzNLRztjX1f//////////////////////////////////////////////////////////
    /////////////////////////////////////////////////////////yH+FUNyZWF0ZWQg
    d2l0aCBUaGUgR0lNUAAh+QQBCgA/ACwAAAAAGAAYAAAGXsCfcEgsGo/IpHLJbDoBziQAGjUC
    BNTqEDAIZLWAAoPwjQIMjcmi3AQcHhQLhL0EICCYjIYDGJkTEhsdIH1VAAoVHiGFhg0XIoyG
    Dh+RhhGVhpiGflpEnJ2goaKjSEEAOw==
}

image create photo tb_pause -data {
    R0lGODlhGAAYAIQcAAAAAHNzcn5+fYSEg4WEg4iIh5GQjqSko6aloqalpKinpqqpp66tqa+u
    rLKwrbWzsLW0s7u6t7+9usC/vsPBvsrKyNHPzNTT0tfV09nY1t7d2/Pz8///////////////
    /yH+FUNyZWF0ZWQgd2l0aCBUaGUgR0lNUAAh+QQBCgAfACwAAAAAGAAYAAAFeOAnjmRpnmiq
    rmzrviYgy9xMs0AwFECt8xycQHHoAYbF4OqYgBgFzR6OsJgYqValCmBoVIzdrzbF9YLNY1RZ
    vJYuEZGLES5PnwD0edy9ZUgwRn6AdjEOFBlGhoiEJQAPFhpGj5GMJDZGNpUjHJycG52dMKKj
    pKUsIQA7
}

image create photo tb_addallvars -data {
    R0lGODdhFAAUAKEDAAAngc4PNNnZ2f///ywAAAAAFAAUAAACN5SPqcvtjwBQ
    0tV0WT43BOQJWxYe4Th56qpOXMrG11Ya5ezan7nj0LuBSIKPYe4nOiKJyKbz
    VwAAOw==
}

image create photo tb_engineinfo -data {
    R0lGODdhFAAUAMIFAAAAAAAA/7i4uMDAwO7v8v///////////ywAAAAAFAAU
    AAADUEgarP6QsNkipIXaR/t2mPeF2jhl5UY2AtG+rXRqQl27sSx+XMVHgKBw
    SAQ8ikihQ2irDZtGRXK6nCKXUEDWNngIgltbsFsFf5nnIERdPRoTADs=
}

image create photo tb_lockengine -data {
    R0lGODlhGAAYAOfHAAAAAAwFABUJAg8PDxUQDBMTExQUFB0XEBwcHCUdFSEhISkhGjIhEC4kGS8l
    GycnJykpKTkrHTU1NTw8PEo5K0VFRW1CFUxMTFZTUl5aVl9fX2FhYGVjYZdcGpddGpheGppeG2pq
    aptgHqNrL6ZxN7B1MKl3PKt4P7J3M7N4NLR4NLN5NLJ6PLJ7O7Z8NrZ9OLZ9Ord9ObR/Q7SBRbmA
    PbSCQLSBRraCQbmBP7qBPrSDSbeDQrqDP7WETLqEQriFRLmFSLaGTLWITbyGRbeHTrqHSryHRryH
    SLqISbmITruJSayMZbyKS76KTLqLUrqMVLqMVZSUlLuNVbuOVryOVsCNUb2OVryPWL2QWMCRVcCS
    Vr+SWsCTWMSSVsGVXMKVXMKWXMOWX56ensaYVsOYYMaYWMeYWMSZYMSZYcaYYaCgoKGhocabZMac
    ZMibZ8ecZcmdYcidZcidZsqdYcieZsifaMqfY8mfaMqebcqfaMuja8yka8ykbMykbc2kbc6ka8yl
    bc6kbsymbc6mb9ClcM+mcM+ncM+ncs+nfNKndtCpcdGodNOqetOqe7KystKtdtOse9Sud9auf9Kv
    hdSwfNavgLa2tre2ttewgNizf9m0hNW2jtq2hde7ldm+mdq+mcPDw+G9lNzAnd/AluDAmeDBmeLC
    m+PCnMjIyOPDnOTEneTGoM/Pz9DQ0OXQs9XV1efSudbW1tjY2OnVvu7Vt+3WuO7Yuu7Yu+7YvO/Y
    u+3ZwN3d3e/avvDav+/bv97e3uHh4eLi4ubm5ufn5+np6e3t7e/v7///////////////////////
    ////////////////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////////////////
    /////////////////////////////////////////////////////yH+uihjKSAyMDAwIEpha3Vi
    ICdKaW1tYWMnIFN0ZWluZXIKClRoaXMgaW1hZ2Ugd2FzIGNyZWF0ZWQgdXNpbmcgR2ltcC4gR2lt
    cCBpcyBmcmVlIHNvZnR3YXJlIAphcyBkZWZpbmVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k
    YXRpb24gYW5kIGlzIGF2YWlsYWJsZQpmb3IgZG93bmxvYWQgYXQgaHR0cDovL3d3dy5naW1wLm9y
    ZwAh+QQBCgD/ACwAAAAAGAAYAAAI/gD/CRxIsKDBgwgTKhwIoGHDhQYBKBAjbBgqNQUgMtRQTFis
    V7tkrZkAQKMEY6wuNDQQopWjChABBJMFoaTAASFQRbGZsAAxUDwFIgAmJujBB78sGQUw7JJRggIa
    JNiQYQEBBwkOJKDAAUMEBgEOAvClaxYsV6I8efrkqdOmSYhAPP0HoNeqSpAI3WHTRs4bMlqGuPgw
    FwCuVJUaFcrThk4dOmi4GIkhV+wtU5LwpNkyxQqWK0lm+FDRoTAvVZg4UVL0x4+gPXbM4EjhoXCu
    UozchKHi5IkUKEFk8FghojCuU5I0RTK0Rw8fPXPG5EAxonCtUIvSYCGio4eQIDZYSsAoQaKwLVKN
    Mj0atKcPID5wytB4caIwrVGJAsU54+ULGDBZMOFDEyYUtsQhXVSBxA413PCDEkcUAUQLFsxFl0MY
    ZviQRhx2mFBAADs=
}

if {$png_image_support} {
	image create photo tb_addmove -data {
		iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAABmJLR0QA/wD/AP+gvaeTAAAACXBI
		WXMAAABIAAAASABGyWs+AAAACXZwQWcAAAAYAAAAGAB4TKWmAAABRklEQVRIx+1US04CQRB9Vd0D
		zFxgWOnKEym/uAMNHkFdkZgIibpSIwcwhnAUwb0XGBQ37JAJM10uDEQZIz3ERE14m+6uqtfvpfoD
		rPHbINvC8m7pKY4in4gMaw46t91NGx7bCsRRlG+etmivtq/iabxhy7MWmBM4HSW1QGpD/15ALwbK
		leKzEeMvxj3XnQDIERE815sUStvyMU9EYOZh566b/1aAmPzmSSvhRERyRIRMJoNqtZYjosU8rq4v
		E8YSArPiIAjmzkQkMTfGfFrPxuUCguHR8eEXLfLCev0gS0Rot2/C8es4C0CISAAIADiODlY+rFKl
		MO3176X/0JNieSey5WnbwneHDpRSQIovJtU1VUpBaw0Rseat+g6k0WhYcVO1KAxDiAiY2QwGAwXA
		/JiAo/Xj+cXZFgBmxS+j0Wjp5mv8DbwBYHRvj9quE3MAAAAielRYdFNvZnR3YXJlAAB42isvL9fL
		zMsuTk4sSNXLL0oHADbYBlgQU8pcAAAAAElFTkSuQmCC
	}
}


###
### End of file: analysis.tcl
###
###
###
### wbdetect.tcl: part of Scid.
### Copyright (C) 1999-2002  Shane Hudson.
#      Copyright (C) 2006-2007  Pascal Georges.
###

######################################################################
#
# Code to detect various Winboard engines being used as analysis
# engines in Scid.
#
# Thanks to Allen Lake for testing many WinBoard engines
# with Scid in Windows and providing this code.
#
# Most cases below are for engines that have analyze mode but
# do not let Scid know about it by sending a "feature" line
# with "analyze=1" in response to the "protover 2" command.
# Some cases also cover engines that report times in seconds
# instead of centiseconds.

proc detectWBEngine { {n 1} engineOutput } {
  
  global analysis
  
  # Check for a line containing "Amy version" to detect use of
  # the Amy 0.7 Winboard engine, which doesn't support the
  # "setboard" command, but does support the "analyze" command.
  if {[string match "*Amy version*" $engineOutput] } {
    logEngineNote $n {Seen "Amy"; assuming analyze command.}
    set analysis(has_analyze$n) 1
    set analysis(wbEngineDetected$n) 1
    return
  }
  
  # Check for a line containing "Baron" to detect use of the
  # Baron 0.26, 0.26a, 0.27, or 0.28a Winboard engines.  These
  # engines display analysis time in whole seconds, rather than
  # in centiseconds, so I have added code to detect this.
  if {[string match "*Baron*" $engineOutput] } {
    logEngineNote $n {Seen "Baron"; assuming analyze, setboard, times in seconds.}
    set analysis(has_setboard$n) 1
    set analysis(has_analyze$n) 1
    set analysis(wholeSeconds$n) 1
    set analysis(wbEngineDetected$n) 1
    return
  }
  
  # Check for a line containing "D U K E" to detect use of
  # the Duke 1.0 or 1.1 Winboard engines, which don't support the
  # "setboard" command, but do support the "analyze" command.
  if {[string match "*D U K E*" $engineOutput] } {
    logEngineNote $n {Seen "Duke"; assuming analyze command.}
    set analysis(has_analyze$n) 1
    set analysis(wbEngineDetected$n) 1
    return
  }
  
  # Check for a line containing "ESCbook.bin" to detect use of
  # the Esc 1.09 Winboard engine, which doesn't support the
  # "setboard" command, but does support the "analyze" command.
  if {[string match "*ESCbook.bin*" $engineOutput] } {
    logEngineNote $n {Seen "ESC"; assuming analyze command.}
    set analysis(has_analyze$n) 1
    set analysis(wbEngineDetected$n) 1
    return
  }
  
  # Check for a line containing "FORTRESS" to detect use of
  # the Fortress 1.62 Winboard engine, which doesn't support the
  # "setboard" command, but does support the "analyze" command.
  if {[string match "*FORTRESS*" $engineOutput] } {
    logEngineNote $n {Seen "Fortress"; assuming analyze command.}
    set analysis(has_analyze$n) 1
    set analysis(wbEngineDetected$n) 1
    return
  }
  
  # Check for a line containing only "Chess", to detect the use of
  # GNU Chess 4, which issues time in whole seconds rather than in
  # centiseconds.
  #if {! [string compare $engineOutput "Chess"]} {
  #  logEngineNote $n {Seen "GNU Chess 4"; assuming times in seconds.}
  #  set analysis(wholeSeconds$n) 1
  #  set analysis(wbEngineDetected$n) 1
  #  return
  #}
  
  # Check for a line containing "GNU Chess v5" to detect use of
  # the GNU Chess 5.02 or 5.03 Winboard engine, which don't support the
  # "analyze" command, but do support the "setboard" command.
  if {[string match "*GNU Chess v5*" $engineOutput] } {
    logEngineNote $n {Seen "GNU Chess 5"; assuming setboard command.}
    set analysis(has_setboard$n) 1
    set analysis(wbEngineDetected$n) 1
    return
  }
  
  # Check for a line containing "Gromit3" to detect use of the
  # Gromit 3.00 or Gromit 3.8.2 Winboard engine, which don't
  # support the "setboard" command, but do support the
  # "analyze" command.
  if {[string match "*Gromit3*" $engineOutput]  ||  [string match "GROMIT" $engineOutput]} {
    logEngineNote $n {Seen "Gromit"; assuming analyze command.}
    set analysis(has_analyze$n) 1
    set analysis(wbEngineDetected$n) 1
    return
  }
  
  # Check for a line containing "Jester" to detect use of the
  # Jester 0.82 Winboard engine.  This engine supports "analyze"
  # but does not support "setboard" or "protover".
  if {[string match "*Jester*" $engineOutput] } {
    logEngineNote $n {Seen "Jester"; assuming analyze command.}
    set analysis(has_analyze$n) 1
    set analysis(wbEngineDetected$n) 1
    return
  }
  
  # Check for a line containing "Calzerano" to detect use of the
  # Leila 0.36 or Leila 0.41i Winboard engine, which don't
  # support the "setboard" command, but do support the
  # "analyze" command.
  if {[string match "*Calzerano*" $engineOutput] } {
    logEngineNote $n {Seen "Calzerano" (Leila); assuming analyze command.}
    set analysis(has_analyze$n) 1
    set analysis(wbEngineDetected$n) 1
    return
  }
  
  # Check for a line containing "LordKing" to detect use of the
  # LordKing 3.0, 3.1, or 3.2 Winboard engines.  These engines
  # have "analyze", but do not support "setboard" or "protover".
  if {[string match "*LordKing*" $engineOutput] } {
    logEngineNote $n {Seen "LordKing"; assuming analyze command.}
    set analysis(has_analyze$n) 1
    set analysis(wbEngineDetected$n) 1
    return
  }
  
  # Check for a line containing "NEJMET" to detect use of the
  # Nejmet 2.6.0 Winboard engine, which supports "setboard"
  # and "analyze", but not "protover".
  if {[string match "*NEJMET*" $engineOutput] } {
    logEngineNote $n {Seen "Nejmet"; assuming analyze and setboard commands.}
    set analysis(has_setboard$n) 1
    set analysis(has_analyze$n) 1
    set analysis(wbEngineDetected$n) 1
    return
  }
  
  # Check for a line containing "Nejmet" to detect use of the
  # Nejmet 3.0.1 and 3.0.2 Winboard engines, which send
  # "feature analyse=1" instead of "feature analyze=1".
  if {[string match "*Nejmet*" $engineOutput] } {
    logEngineNote $n {Seen "Nejmet"; assuming analyze and setboard commands.}
    set analysis(has_setboard$n) 1
    set analysis(has_analyze$n) 1
    set analysis(wbEngineDetected$n) 1
    return
  }
  
  # Check for a line containing "Pharaon" to detect use of the
  # Pharaon 2.50 or Pharaon 2.61 Winboard engines.  These
  # engines display analysis time in whole seconds, rather than
  # in centiseconds, so I have added code to detect this.
  # Performance of these engines has been somewhat uneven, with
  # occasional crashes of the engine, but more stable and
  # predictable with this code in place.
  if {[string match "*Pharaon*" $engineOutput] } {
    logEngineNote $n {Seen "Pharaon"; assuming analyze, setboard, times in seconds.}
    set analysis(has_setboard$n) 1
    set analysis(has_analyze$n) 1
    set analysis(wholeSeconds$n) 1
    set analysis(wbEngineDetected$n) 1
    return
  }
  
  # Check for a line containing "Skaki" to detect use of the
  # Skaki 1.19 Winboard engine.  This engine has "analyze",
  # but does not support "setboard" or "protover".
  if {[string match "*Skaki*" $engineOutput] } {
    logEngineNote $n {Seen "Skaki"; assuming analyze command.}
    set analysis(has_analyze$n) 1
    set analysis(wbEngineDetected$n) 1
    return
  }
  
  # Check for a line containing "EngineControl-TCB" to detect use of the
  # TCB 0045 Winboard engine.  This engine has "analyze",
  # but does not support "setboard" or "protover".
  if {[string match "*EngineControl-TCB*" $engineOutput] } {
    logEngineNote $n {Seen "TCB"; assuming analyze and setboard commands.}
    set analysis(has_analyze$n) 1
    set analysis(wbEngineDetected$n) 1
    return
  }
  
  # Check for a line containing "ZChess" to detect use of the
  # ZChess 2.22 Winboard engine.  ZChess is the predecessor
  # of the Pharaon series of Winboard engines and, as such,
  # displays analysis time in whole seconds, rather than
  # in centiseconds.
  if {[string match "*ZChess*" $engineOutput] } {
    logEngineNote $n {Seen "ZChess"; assuming analyze, setboard, times in seconds.}
    set analysis(has_analyze$n) 1
    set analysis(wholeSeconds$n) 1
    set analysis(wbEngineDetected$n) 1
    return
  }
  
  # Check for a line containing "King of Kings" to detect use
  # of the King of Kings 2.02 Winboard engine.  KofK uses the
  # "protover" command, but seems to confuse previous code on
  # Win98SE. Setting analysis(has_setboard$n) and
  # analysis(has_analyze$n) explicitly seems to help.
  if {[string match "*King of Kings*" $engineOutput] } {
    logEngineNote $n {Seen "King of Kings"; assuming analyze and setboard commands.}
    set analysis(has_setboard$n) 1
    set analysis(has_analyze$n) 1
    set analysis(wbEngineDetected$n) 1
    return
  }
  
  # Check for a line containing "EXchess" to detect use of the
  # EXchess 4.02 or 4.03 Winboard engine, which supports "setboard"
  # and "analyze", but not "protover".
  if {[string match "*EXchess*" $engineOutput] } {
    logEngineNote $n {Seen "EXchess"; assuming analyze and setboard commands.}
    set analysis(has_setboard$n) 1
    set analysis(has_analyze$n) 1
    set analysis(wbEngineDetected$n) 1
    return
  }
  
  # Check for a line containing "WildCat version 2.61" to detect use of the
  # WildCat 2.61 Winboard engine, which supports "analyze"
  # but not "setboard" or "protover".
  if {[string match "*WildCat version 2.61*" $engineOutput] } {
    logEngineNote $n {Seen "WildCat 2.61"; assuming analyze and setboard commands.}
    set analysis(has_analyze$n) 1
    set analysis(wbEngineDetected$n) 1
    return
  }
  
  
  # Check for a line containing "Phalanx" to detect use of the
  # Phalanx Winboard engine, which supports "analyze"
  # but not "setboard" or "protover".
  if {[string match "*Phalanx*" $engineOutput] } {
    logEngineNote $n {Seen "Phalanx"; assuming analyze command.}
    set analysis(has_analyze$n) 1
    set analysis(wbEngineDetected$n) 1
    set analysis(has_setboard$n) 1
    return
  }
  
  # Check for a line containing "Scorpio" , which supports "analyze"
  # and "setboard".
  if {[string match -nocase "*Scorpio*" $engineOutput] } {
    logEngineNote $n {Seen "Scorpio"; assuming analyze command.}
    set analysis(has_analyze$n) 1
    set analysis(wbEngineDetected$n) 1
    return
  }
  
}

###
### End of file: wbdetect.tcl
###
### reper.tcl:
### Repertoire editor functions for Scid.
### Copyright (C) 2001-2002 Shane Hudson.

# The heirarchical view used to display a repertoire in Scid was
# originally based on the  public domain Tcl/Tk tree widget written by
# D. Richard Hipp (available at: http://www.hwaci.com/sw/tk/tree.html)
# but the Scid code is completely rewritten and significantly improved.

namespace eval ::rep {}
array set ::rep::_data {}
set ::rep::Win 0

# ::rep::create
#   Create a new repertoire widget.  $args become the configuration
#   arguments to the canvas widget that is created.
#
proc ::rep::create {w args} {
  eval canvas $w -bg white -width 1 $args
  bind $w <Destroy> "catch {::rep::clear $w}"
  ::rep::_defaults $w /
  ::rep::_drawWhenIdle $w
  set ::rep::_data($w:selection) {}
  set ::rep::_data($w:selidx) {}
  set ::rep::_data($w:altered) 0
  set ::rep::_data($w:nlines) 0
  set ::rep::_data($w:ngroups) 0
  set ::rep::_data($w:filename) ""
  #set ::rep::_data($w:readonly) 0
}

# ::rep::_defaults
#   Used to initialize a new element of the tree.
#
proc ::rep::_defaults {w v} {
  set ::rep::_data($w:$v:children) {}
  set ::rep::_data($w:$v:shown) 1
  set ::rep::_data($w:$v:tags) {}
  set ::rep::_data($w:$v:comment) {}
  set ::rep::_data($w:$v:text) {}
  set ::rep::_data($w:$v:group) 0
  set ::rep::_data($w:$v:include) 1
}

# ::rep::_findGroup
#   Finds the parent group of a line or group that will be added.
#
proc ::rep::_findGroup {w v parent} {
  set p $parent
  if {$parent == ""} { set p "/" }
  foreach g $::rep::_data($w:$p:children) {
    set len [string length $g]
    set v2 [string range $v 0 [expr {$len - 1} ]]
    
    # If the next character in the line is a "-", it means we have a
    # situation with both the castling moves "O-O" and "O-O-O".
    # To avoid "O-O-O" looking like a child line of "O-O", we need to
    # deliberately ignore this possibility.
    if {[string length $v] > $len  &&  [string index $v $len] == "-"} { continue }
    
    regsub -all " " $v2 "," v2
    if {! [string compare $v2 $g]} {
      set v [string trim [string range $v $len end]]
      return [::rep::_findGroup $w $v $parent/$g]
    }
  }
  set v [string trim $v]
  regsub -all " " $v "," v
  return $parent/$v
}

# ::rep::AddCurrentBoard
#   Adds the line representing the current board position as a
#   group, included line or excluded line.
#
proc ::rep::AddCurrentBoard {w type} {
  switch -exact -- $type {
    group   { set grp 1; set inc 0; set cmd ::rep::newGroup }
    include { set grp 0; set inc 1; set cmd ::rep::newLine  }
    exclude { set grp 0; set inc 0; set cmd ::rep::newLine  }
    default { return }
  }
  # Verify that the current game began at the standard starting position:
  if {[sc_game startBoard]} {
    tk_messageBox -parent $w -type ok -icon info -title "Scid" \
        -message "The current game does not have the standard starting position, so its positions cannot be added to the repertoire."
    return
  }
  set moves [string trim [sc_game moves]]
  set err [catch {$cmd $w $moves -group $grp -include $inc} res]
  if {$err} {
    tk_messageBox -parent $w -type ok -icon info -title "Scid" -message $res
    return
  }
  ::rep::regroup $w
  ::rep::singleClick $w $res
}

# ::rep::newGroup
#   Adds a new group to the repertoire.
#
proc ::rep::newGroup {w v args} {
  if {$v == ""} {
    return -code error "The starting chess position cannot be a group."
  }
  set s [::rep::_findGroup $w $v ""]
  lappend args -group 1
  return [::rep::_newItem $w $s $args]
}

# ::rep::newLine
#   Adds a new group to the repertoire.
#
proc ::rep::newLine {w v args} {
  set s [::rep::_findGroup $w $v ""]
  lappend args -group 0
  return [::rep::_newItem $w "${s} ,LINE" $args]
}

# ::rep::_decode
#   Decodes a group or line path back to standard chess notation,
#   e.g. "/1.e4_c5/2.Nf3_d6" -> "1.e4 c5 2.Nf3 d6"
#
proc ::rep::_decode {m} {
  regsub -all "," $m " " moves
  regsub -all "/" $moves " " moves
  regsub "LINE" $moves "" moves
  set moves [string trim $moves]
  return $moves
}

# ::rep::_newItem
#   Called from newGroup or newLine to add a new element to the repertoire.
#
proc ::rep::_newItem {w v args} {
  regsub -all " " $v "," v
  set dir [file dirname $v]
  set n [file tail $v]
  if {[llength $args] == 1} {
    set args [lindex $args 0]
  }
  set image {}
  set tags {}
  set text {}
  set comment {}
  set group 0
  set include 1
  set shown 1
  
  foreach {op arg} $args {
    switch -exact -- $op {
      -image {set image $arg}
      -tags {set tags $arg}
      -text {set text $arg}
      -comment {set comment $arg}
      -group {set group $arg}
      -include {set include $arg}
      -shown {set shown $arg}
    }
  }
  if {![info exists ::rep::_data($w:$dir:shown)]} {
    return -code error "parent item \"$dir\" is missing"
  }
  set i [lsearch -exact $::rep::_data($w:$dir:children) $n]
  if {$i >= 0} {
    # Group or line already exists.
    if {! $group} {
      set ::rep::_data($w:$v:include) $include
      ::rep::updateStatus $w
    }
    return $v
    #set  type "line"
    #if {$group} { set type "group" }
    #return -code error "The $type \"[::rep::_decode $v]\" already exists in this repertoire."
  }
  if {$group} {
    incr ::rep::_data($w:ngroups)
  } else {
    incr ::rep::_data($w:nlines)
  }
  
  lappend ::rep::_data($w:$dir:children) $n
  set ::rep::_data($w:$dir:children) [lsort $::rep::_data($w:$dir:children)]
  ::rep::_defaults $w $v
  set ::rep::_data($w:$v:comment) $comment
  set ::rep::_data($w:$v:image) $image
  set ::rep::_data($w:$v:tags) $tags
  set ::rep::_data($w:$v:text) $text
  set ::rep::_data($w:$v:group) $group
  set ::rep::_data($w:$v:include) $include
  set ::rep::_data($w:$v:shown) $shown
  set ::rep::_data($w:altered) 1
  ::rep::updateStatus $w
  # ::rep::_drawWhenIdle $w
  return $v
}

# ::rep::updateStatus
#   Updates the status bar message for the repertoire window.
#
proc ::rep::updateStatus {w} {
  set s "  "
  if {$::rep::_data($w:altered)} { append s "XX" } else { append s "--" }
  append s "  "
  set f $::rep::_data($w:filename)
  if {$f == ""} {
    set f "(Untitled)"
  } else {
    set f [file tail $f]
  }
  append s "$f: $::rep::_data($w:nlines) lines"
  append s " in $::rep::_data($w:ngroups) groups"
  set ::rep::_data($w:status) $s
}

# ::rep::updateWinTitle
#   Updates the repertoire window title.
#
proc ::rep::updateWinTitle {w} {
  set f $::rep::_data($w:filename)
  if {$f == ""} {
    set f "(Untitled)"
  } else {
    set f [file tail $f]
  }
  wm title [winfo toplevel $w] "Scid: [tr WindowsRepertoire]: $f"
}

# ::rep::regroup
#   Calls ::rep::_extract to produce a set of commands for rebuilding
#   the repertoire heirarchy, then clears and rebuilds it.
#   Used to reorganise the repertoire whenever a group is added or
#   removed.
proc ::rep::regroup {w} {
  set list [::rep::_extract $w / {}]
  ::rep::clear $w
  foreach i $list {eval $i}
  ::rep::_drawWhenIdle $w
}

# ::rep::newFile
#   Clears the repertoire and reset the filename to be untitled.
#
proc ::rep::newFile {w} {
  ::rep::clear $w
  set ::rep::_data($w:filename) ""
  #set ::rep::_data($w:readonly) 0
  ::rep::updateWinTitle $w
  ::rep::_drawWhenIdle $w
}

# ::rep::clear
#   Clears the repertoire, but keeps its filename.
#
proc ::rep::clear {w} {
  set fname ""
  set fname $::rep::_data($w:filename)
  foreach t [array names ::rep::_data $w:*] {
    unset ::rep::_data($t)
  }
  set ::rep::_data($w:filename) $fname
  set ::rep::_data($w:selection) {}
  set ::rep::_data($w:selidx) {}
  set ::rep::_data($w:altered) 0
  set ::rep::_data($w:nlines) 0
  set ::rep::_data($w:ngroups) 0
  ::rep::_defaults $w /
}

# ::rep::deleteGroup
#   After verification from the user, this deletes the specified
#   group but keeps all subgroups and lines.
#
proc ::rep::deleteGroup {w v} {
  if {! [info exists ::rep::_data($w:$v:group)]} { return }
  if {! $::rep::_data($w:$v:group)} { return }
  set v2 [::rep::_decode $v]
  set msg "The group \"$v2\" contains [::rep::_numChildLines $w $v] lines "
  append msg "in [expr [::rep::_numChildGroups $w $v] - 1] subgroups.\n\n"
  append msg "Are you sure you want to delete this group, keeping all the groups and lines under it?"
  set answer [tk_messageBox -parent $w -title "Scid: Delete group?" \
      -type yesno -icon question -message $msg]
  if {$answer != "yes"} { return }
  set ::rep::_data($w:$v:delete) 1
  ::rep::regroup $w
}

# ::rep::pruneGroup
#   After verification from the user, this deletes the specified
#   group AND all its subgroups and lines.
#
proc ::rep::pruneGroup {w v} {
  if {! [info exists ::rep::_data($w:$v:group)]} { return }
  if {! $::rep::_data($w:$v:group)} { return }
  set v2 [::rep::_decode $v]
  set msg "The group \"$v2\" contains [::rep::_numChildLines $w $v] lines "
  append msg "in [expr [::rep::_numChildGroups $w $v] - 1] subgroups.\n\n"
  append msg "Are you sure you want to delete this group AND ALL the groups and lines under it?"
  set answer [tk_messageBox -parent $w -title "Scid: Delete group?" \
      -type yesno -icon question -message $msg]
  if {$answer != "yes"} { return }
  set ::rep::_data($w:$v:delete) 1
  set ::rep::_data($w:$v:prune) 1
  ::rep::regroup $w
}

# ::rep::deleteGroup
#   After verification from the user, this deletes the specified line.
#
proc ::rep::deleteLine {w v} {
  if {! [info exists ::rep::_data($w:$v:group)]} { return }
  if {$::rep::_data($w:$v:group)} { return }
  set v2 [::rep::_decode $v]
  set msg "Delete: $v2\n\n"
  append msg "Are you sure you want to delete this line?"
  set answer [tk_messageBox -parent $w -title "Scid: Delete line?" \
      -type yesno -icon question -message $msg]
  if {$answer != "yes"} { return }
  set ::rep::_data($w:$v:delete) 1
  ::rep::regroup $w
}

# ::rep::showAll
#   Expands the specified group and all its subgroups.
#
proc ::rep::showAll {w {v ""}} {
  foreach i [array names ::rep::_data $w:$v*:shown] {
    set ::rep::_data($i) 1
  }
  ::rep::_drawWhenIdle $w
}

# ::rep::hideAll
#   Collapses the specified group and all its subgroups.
#
proc ::rep::hideAll {w {v ""}} {
  foreach i [array names ::rep::_data $w:$v*:shown] {
    set ::rep::_data($i) 0
  }
  ::rep::_drawWhenIdle $w
}

# ::rep::setSelection
#   Changes the selection to the specified group or line.
#
proc ::rep::setSelection {w v} {
  set ::rep::_data($w:selection) $v
  ::rep::_drawSelection $w
  ::rep::updateStatus $w
}

# ::rep::getSelection
#   Retrieves the current selection.
#
proc ::rep::getSelection {w} {
  return $::rep::_data($w:selection)
}

# ::rep::_numChildGroups
#   Returns the number of (direct and indirect) subgroups of a group.
#
proc ::rep::_numChildGroups {w v} {
  if {! $::rep::_data($w:$v:group)} { return 0 }
  set count 1
  if {[info exists ::rep::_data($w:$v:children)]} {
    foreach child $::rep::_data($w:$v:children) {
      incr count [::rep::_numChildGroups $w $v/$child]
    }
  }
  return $count
}


# ::rep::_numChildLines
#   Returns the number of (direct and indirect) child lines of a group.
#
proc ::rep::_numChildLines {w v} {
  if {! $::rep::_data($w:$v:group)} { return 1 }
  set count 0
  if {[info exists ::rep::_data($w:$v:children)]} {
    foreach child $::rep::_data($w:$v:children) {
      incr count [::rep::_numChildLines $w $v/$child]
    }
  }
  return $count
}

# ::rep::_draw
#   Draws the repertoire heirarchy.
#
proc ::rep::_draw {w} {
  catch {unset ::rep::_data($w:drawPending)}
  $w delete all
  set ::rep::_data($w:y) 30
  ::rep::_drawLevel $w "/" 10
  $w config -scrollregion [$w bbox all]
  ::rep::_drawSelection $w
  ::rep::updateStatus $w
  $w xview moveto 0.0
}

# ::rep::_drawLevel
#   Draws a single level of the heirarchy, indented by $in pixels.
#
proc ::rep::_drawLevel {w v in} {
  set p $v
  if {$v == "/"} { set p "" }
  set start [expr {$::rep::_data($w:y)-10} ]
  set y 0
  if {[llength $::rep::_data($w:$v:children)] == 0} {
    set y $::rep::_data($w:y)
    incr ::rep::_data($w:y) 17
    $w create line $in $y [expr {$in+10} ] $y -fill gray50
    incr in 12
    $w create text $in $y -font font_Small -anchor w -text "(empty)"
    return
  }
  
  foreach c $::rep::_data($w:$v:children) {
    set y $::rep::_data($w:y)
    incr ::rep::_data($w:y) 17
    $w create line $in $y [expr {$in + 10} ] $y -fill gray50
    set group $::rep::_data($w:$p/$c:group)
    set icon $::rep::_data($w:$p/$c:image)
    set taglist x
    foreach tag $::rep::_data($w:$p/$c:tags) { lappend taglist $tag }
    if {$group} {
      set icon ::rep::_closedgroup
      if {$::rep::_data($w:$p/$c:shown)} { set icon ::rep::_opengroup }
    } else {
      set icon ::rep::_cross
      if {$::rep::_data($w:$p/$c:include)} { set icon ::rep::_tick }
    }
    set x [expr {$in + 12} ]
    
    if {$icon != ""} {
      set tag [$w create image $x $y -image $icon -anchor w -tags $taglist]
      incr x 20
      set ::rep::_data($w:tag:$tag) $p/$c
      if {$group} {
        set s [expr {1 - $::rep::_data($w:$p/$c:shown)} ]
        $w bind $tag <1> "set ::rep::_data($w:$p/$c:shown) $s; ::rep::_draw $w"
      }
      $w bind $tag <$::MB3> "::rep::_popupMenu $w $p/$c %X %Y"
    }
    set moves [::rep::_decode $c]
    if {$moves == ""} { set moves "..." }
    if {$group} {
      append moves " ([::rep::_numChildLines $w $p/$c])"
    }
    set tag [$w create text $x $y -text $moves -font font_Small \
        -anchor w -tags $taglist]
    set ::rep::_data($w:tag:$tag) $p/$c
    set ::rep::_data($w:$p/$c:tag) $tag
    $w bind $tag <$::MB3> "::rep::_popupMenu $w $p/$c %X %Y"
    set comment ""
    if {[string length $::rep::_data($w:$p/$c:text)] > 0} {
      set comment "** "
    }
    if {[string length $::rep::_data($w:$p/$c:comment)] > 0} {
      append comment "$::rep::_data($w:$p/$c:comment)"
    }
    if {$comment != ""} {
      incr x [expr {3 + [lindex [$w bbox $tag] 2] - [lindex [$w bbox $tag] 0]} ]
      set tag [$w create text $x $y -text $comment -font font_Small \
          -fill red3 -anchor w -tags $taglist]
      $w bind $tag <$::MB3> "::rep::_popupMenu $w $p/$c %X %Y"
      set ::rep::_data($w:tag:$tag) $p/$c
    }
    
    if {[llength $::rep::_data($w:$p/$c:children)] > 0} {
      if {$::rep::_data($w:$p/$c:shown)} {
        set tag [$w create image $in $y -image ::rep::_shown]
        $w bind $tag <1> "set ::rep::_data($w:$p/$c:shown) 0; ::rep::_draw $w"
        ::rep::_drawLevel $w $p/$c [expr {$in + 18} ]
      } else {
        set tag [$w create image $in $y -image ::rep::_hidden]
        $w bind $tag <1> "set ::rep::_data($w:$p/$c:shown) 1; ::rep::_draw $w"
      }
      $w bind $tag <$::MB3> "::rep::_popupMenu $w $p/$c %X %Y"
    }
  }
  set tag [$w create line $in $start $in [expr {$y+1} ] -fill gray50 ]
  $w lower $tag
}

# ::rep::showGroup
#   Expand a single group.
#
proc ::rep::showGroup {w v} {
  if {[info exists ::rep::_data($w:$v:shown)]
    &&  $::rep::_data($w:$v:shown) == 0
    &&  [info exists ::rep::_data($w:$v:children)]
    &&  [llength $::rep::_data($w:$v:children)] > 0} {
    set ::rep::_data($w:$v:shown) 1
    ::rep::_draw $w
  }
}

# ::rep::showGroup
#   Collapse a single group.
#
proc ::rep::hideGroup {w v} {
  if {[info exists ::rep::_data($w:$v:shown)]
    &&  $::rep::_data($w:$v:shown) == 1} {
    set ::rep::_data($w:$v:shown) 0
    ::rep::_draw $w
  }
}

# ::rep::toggleLineState
#   Change the state of a line (included vs excluded).
#
proc ::rep::toggleLineState {w v} {
  if {[info exists ::rep::_data($w:$v:group)]
    &&  $::rep::_data($w:$v:group) == 0} {
    set state $::rep::_data($w:$v:include)
    set state [expr {1 - $state} ]
    set ::rep::_data($w:$v:include) $state
    set ::rep::_data($w:altered) 1
    ::rep::_draw $w
  }
}

# ::rep::_drawSelection
#   Highlight the selected goupr or line.
#
proc ::rep::_drawSelection w {
  if {[string length $::rep::_data($w:selidx)]} {
    $w delete $::rep::_data($w:selidx)
  }
  set v $::rep::_data($w:selection)
  if {[string length $v]==0} { return }
  if {![info exists ::rep::_data($w:$v:tag)]} { return }
  set bbox [$w bbox $::rep::_data($w:$v:tag)]
  if {[llength $bbox]==4} {
    set i [eval $w create rectangle $bbox -fill yellow2 -outline {{}}]
    set ::rep::_data($w:selidx) $i
    $w lower $i
  } else {
    set ::rep::_data($w:selidx) {}
  }
}

# ::rep::_drawWhenIdle
#   Schedule a redraw event of the repertoire heirarchy.
#
proc ::rep::_drawWhenIdle w {
  if {![info exists ::rep::_data($w:drawPending)]} {
    set ::rep::_data($w:drawPending) 1
    after idle "::rep::_draw $w"
  }
}

# ::rep::labelAtXY
#   Return the group or line in the repertoire located at the
#   real coordinates ($x,$y).
#
proc ::rep::labelAtXY {w x y} {
  set x [$w canvasx $x]
  set y [$w canvasy $y]
  foreach m [$w find overlapping $x $y $x $y] {
    if {[info exists ::rep::_data($w:tag:$m)]} {
      return $::rep::_data($w:tag:$m)
    }
  }
  return ""
}

# ::rep::OpenCloseWindow
#   Open/close the repertoire editor.
#
proc ::rep::OpenCloseWindow {} {
  set w .repWin

  set DeprecatedTxt "The repertoir editor is deprecated and may be removed in a future version of Scid.\n\nWe feel, that Tree Masks offer much better functionality and versality and strongly encourage transition to them.\nIf you feel Masks can not cover all functions of the repertoir editor and you would like to have it kept, please subscribe to\n\nscid-users@lists.sourceforge.net\n\nfor an open discussion.\n\nDo you want to learn more about Masks?"


  if {[winfo exists $w]} {
    destroy $w
    return
  }
  set result [tk_dialog .roDialog "Scid: Function Deprecated" \
				$DeprecatedTxt "" 1 $::tr(No) $::tr(Yes)]

  if {$result ==0} {
     ::rep::makeWindow
  } else {
	  helpWindow TreeMasks
  }
}

# ::rep::closeWindow
#   Close the repertoire editor.
#
proc ::rep::closeWindow {} {
  set w .repWin
  if {! [winfo exists $w]} { return }
  if {$::rep::_data($w.f.w.rep:altered)} {
    set answer [tk_messageBox -parent .repWin \
        -type yesno -icon question \
        -title "Scid: [tr RepFileClose]" \
        -message $::tr(RepCloseDialog)]
    if {$answer != "yes"} { return }
  }
  destroy $w
  set ::rep::Win 0
}

# ::rep::OpenWithFile
#   Open the repertoire editor and losd the specified file.
#
proc ::rep::OpenWithFile {fname} {
  ::rep::makeWindow
  ::rep::readFile .repWin.f.w.rep $fname
}

# ::rep::ConfigMenus
#   Called to set the window menus to a specified language.
proc ::rep::ConfigMenus {w {lang ""}} {
  if {! [winfo exists $w]} { return }
  if {$lang == ""} { set lang $::language }
  set m $w.menu
  foreach idx {0 1 2 3 4} tag {File Edit View Search Help} {
    configMenuText $m $idx Rep$tag $lang
  }
  foreach idx {0 1 3 4 6} tag {New Open Save SaveAs Close} {
    configMenuText $m.file $idx RepFile$tag $lang
  }
  foreach idx {0 1 2} tag {Group Include Exclude} {
    configMenuText $m.edit $idx RepEdit$tag $lang
  }
  foreach idx {0 1} tag {Expand Collapse} {
    configMenuText $m.view $idx RepView$tag $lang
  }
  foreach idx {0 1} tag {All Displayed} {
    configMenuText $m.search $idx RepSearch$tag $lang
  }
  foreach idx {0 1} tag {Rep Index} {
    configMenuText $m.helpmenu $idx RepHelp$tag $lang
  }
}

# ::rep::makeWindow
#   Create the repertoire editor window.
#
proc ::rep::makeWindow {} {
  set w .repWin
  if {[winfo exists $w]} { return }
  set ::rep::Win 1
  toplevel $w
  
  standardShortcuts $w
  wm protocol $w WM_DELETE_WINDOW ::rep::closeWindow
  
  frame $w.m -bd 1 -relief raised
  pack $w.m -side top -fill x
  menu $w.menu
  $w configure -menu $w.menu
  $w.menu add cascade -label RepFile -menu $w.menu.file
  menu $w.menu.file
  $w.menu.file add command -label RepFileNew -accelerator "Ctrl+N" \
      -command "::rep::newFile $w.f.w.rep"
  bind $w <Control-n> "$w.menu.file invoke 0"
  $w.menu.file add command -label RepFileOpen -accelerator "Ctrl+O" \
      -command "::rep::OpenFile $w.f.w.rep"
  bind $w <Control-o> "$w.menu.file invoke 1"
  $w.menu.file add separator
  $w.menu.file add command -label RepFileSave -accelerator "Ctrl+S" \
      -command "::rep::saveFile $w.f.w.rep"
  bind $w <Control-s> "$w.menu.file invoke 3"
  $w.menu.file add command -label RepFileSaveAs \
      -command "::rep::saveFile $w.f.w.rep new"
  $w.menu.file add separator
  $w.menu.file add command -label RepFileClose -accelerator "Ctrl+Q" \
      -command "destroy $w"
  bind $w <Control-q> "destroy $w"
  
  $w.menu add cascade -label RepEdit -menu $w.menu.edit
  menu $w.menu.edit
  $w.menu.edit add command -label RepEditGroup -accelerator "Ctrl+G" \
      -command "::rep::AddCurrentBoard $w.f.w.rep group"
  bind $w <Control-g> "$w.menu.edit invoke 0"
  $w.menu.edit add command -label RepEditInclude -accelerator "Ctrl+I" \
      -command "::rep::AddCurrentBoard $w.f.w.rep include"
  bind $w <Control-i> "$w.menu.edit invoke 1"
  $w.menu.edit add command -label RepEditExclude -accelerator "Ctrl+X" \
      -command "::rep::AddCurrentBoard $w.f.w.rep exclude"
  bind $w <Control-x> "$w.menu.edit invoke 2"
  
  $w.menu add cascade -label RepView -menu $w.menu.view
  menu $w.menu.view
  $w.menu.view add command -label RepViewExpand \
      -command "::rep::showAll $w.f.w.rep"
  $w.menu.view add command -label RepViewCollapse \
      -command "::rep::hideAll $w.f.w.rep"
  
  $w.menu add cascade -label RepSearch -menu $w.menu.search
  menu $w.menu.search
  $w.menu.search add command -label RepSearchAll \
      -command "::rep::search $w.f.w.rep all"
  $w.menu.search add command -label RepSearchDisplayed \
      -command "::rep::search $w.f.w.rep displayed"
  
  $w.menu add cascade -label RepHelp -menu $w.menu.helpmenu
  menu $w.menu.helpmenu
  $w.menu.helpmenu add command -label RepHelpRep -command {helpWindow Repertoire}
  $w.menu.helpmenu add command -label RepHelpIndex -command {helpWindow Index}
  
  
  # Toolbar:
  set f [frame $w.toolbar -relief raised -border 1]
  pack $f -side top -fill x
  button $f.new -image tb_new -command "::rep::newFile $w.f.w.rep"
  button $f.open -image tb_open -command "::rep::OpenFile $w.f.w.rep"
  button $f.save -image tb_save -command "::rep::saveFile $w.f.w.rep"
  button $f.close -image tb_close -command "destroy $w"
  frame $f.space1 -width 12
  button $f.group -image ::rep::_tb_group \
      -command "::rep::AddCurrentBoard $w.f.w.rep group"
  button $f.include -image ::rep::_tb_include \
      -command "::rep::AddCurrentBoard $w.f.w.rep include"
  button $f.exclude -image ::rep::_tb_exclude \
      -command "::rep::AddCurrentBoard $w.f.w.rep exclude"
  
  foreach i {new open save close group include exclude} {
    $f.$i configure -relief flat -border 1 -highlightthickness 0 -anchor n \
        -takefocus 0
    bind $f.$i <Any-Enter> "+$f.$i configure -relief groove"
    bind $f.$i <Any-Leave> "+$f.$i configure -relief flat"
  }
  foreach {b m} {
    new RepFileNew open RepFileOpen save RepFileSave
    group RepEditGroup include RepEditInclude exclude RepEditExclude
  } {
    set ::helpMessage($f.$b) [tr $m]
  }
  pack $f.new $f.open $f.save $f.close $f.space1 \
      $f.group $f.include $f.exclude \
      -side left -padx 0 -ipadx 0 -pady 0 -ipady 0 -expand yes
  
  label $w.status -relief sunken -width 1 -anchor w -font font_Small
  pack $w.status -side bottom -anchor w -fill x -expand yes
  
  set pane [::utils::pane::Create $w.f w text 600 600 0.5 h] ;# 600 300
  ::utils::pane::SetRange $w.f 0.2 0.8
  #::pane::SetDrag $w.f 0
  pack $w.f -fill both -expand 1
  
  ::rep::create $w.f.w.rep -yscrollcommand "$w.f.w.sb set"
  scrollbar $w.f.w.sb -orient vertical -command "$w.f.w.rep yview"
  pack $w.f.w.sb -side right -fill y
  pack $w.f.w.rep -side left -fill both -expand 1 -padx 5 -pady 5
  text $w.f.text.moves -height 3 -fg darkBlue -bg white -font font_Small -state disabled -cursor top_left_arrow -wrap word
  entry $w.f.text.entry -width 1 -fg black -bg white -font font_Small
  text $w.f.text.note -width 40 -height 10 -fg black -bg white -font font_Small
  pack $w.f.text.moves -side top -fill x
  pack $w.f.text.entry -side top -fill x
  pack $w.f.text.note -side top -expand 1 -fill both
  $w.status configure -textvar ::rep::_data($w.f.w.rep:status)
  
  bind $w <F1> {helpWindow Repertoire}
  bind $w <Down> "$w.f.w.rep yview scroll +1 units"
  bind $w <Up> "$w.f.w.rep yview scroll -1 units"
  bind $w <Prior> "$w.f.w.rep yview scroll -1 pages"
  bind $w <Next> "$w.f.w.rep yview scroll +1 pages"
  bind $w <Home> "$w.f.w.rep yview moveto 0.0"
  bind $w <End> "$w.f.w.rep yview moveto 0.99"
  $w.f.w.rep xview moveto 0.0
  $w.f.w.rep yview moveto 0.0
  
  $w.f.w.rep bind x <1> \
      "::rep::singleClick $w.f.w.rep \[::rep::labelAtXY %W %x %y\]"
  $w.f.w.rep bind x <Double-Button-1> \
      "::rep::doubleClick $w.f.w.rep \[::rep::labelAtXY %W %x %y\]"
  
  bind $w.f.text.moves <1> "if {\[string length \[$w.f.text.moves get 1.0 end\]\] > 1} { importMoveList \[$w.f.text.moves get 1.0 end\] }"
  
  bind $w.f.text.entry <KeyPress> {
    after idle {
      set label [::rep::getSelection .repWin.f.w.rep]
      if {$label != ""} {
        set ::rep::_data(.repWin.f.w.rep:$label:comment) \
            [string trim [.repWin.f.text.entry get]]
        ::rep::_draw .repWin.f.w.rep
      }
    }
  }
  
  bind $w.f.text.note <KeyPress> {
    after idle {
      set label [::rep::getSelection .repWin.f.w.rep]
      if {$label != ""} {
        set ::rep::_data(.repWin.f.w.rep:$label:text) \
            [string trim [.repWin.f.text.note get 1.0 end]]
      }
    }
  }
  
  ::rep::ConfigMenus $w
  ::rep::updateWinTitle $w.f.w.rep
  wm geometry $w =500x400
}

# ::rep::singleClick
#   Updates the move list label, single-line comment entry widget
#   and multi-line comment text widget in the repertoire editor.
#   Called whenever the left mouse button is clicked on a group or
#   line in the repertoire.
#
proc ::rep::singleClick {w label} {
  ::rep::setSelection $w $label
  if {$label == ""} { return }
  set moves [::rep::_decode $label]
  set win [winfo toplevel $w]
  $win.f.text.moves configure -state normal
  $win.f.text.moves delete 1.0 end
  $win.f.text.moves insert end $moves
  $win.f.text.moves configure -state disabled
  set comment ""
  catch {set comment $::rep::_data($w:$label:comment)}
  $win.f.text.entry delete 0 end
  $win.f.text.entry insert end $comment
  set temptext ""
  catch {set temptext $::rep::_data($w:$label:text)}
  set temptext [string trim $temptext]
  $win.f.text.note delete 1.0 end
  $win.f.text.note insert end $temptext
}

# ::rep::doubleClick
#   Called whenever the left mouse button is double-clicked on a group or
#   line in the repertoire.
#
proc ::rep::doubleClick {w label} {
  ::rep::setSelection $w $label
  if {$label == ""} { return }
  set moves [::rep::_decode $label]
  catch {sc_game import $moves}
  updateBoard -pgn
}

# ::rep::_extract
#   Traverses the repertoire heirarchy, producing a list of
#   commands needed to reconstruct the entire repertoire.
#   If a line or group is marked deleted, it is not included in
#   the list. If a group is marked pruned, its children are not
#   included either.
#
proc ::rep::_extract {w v returnList} {
  set p $v
  if {$v == "/"} { set p "" }
  foreach c $::rep::_data($w:$v:children) {
    set text [string trim $::rep::_data($w:$p/$c:text)]
    set comment [string trim $::rep::_data($w:$p/$c:comment)]
    set moves [::rep::_decode $p/$c]
    
    set recurse 0
    if {$::rep::_data($w:$p/$c:group)} {
      if {! [info exists ::rep::_data($w:$p/$c:prune)]} { set recurse 1 }
      set cmd "::rep::newGroup $w [list $moves]"
      append cmd " -shown $::rep::_data($w:$p/$c:shown)"
    } else {
      set cmd "::rep::newLine $w [list $moves]"
      append cmd " -include $::rep::_data($w:$p/$c:include)"
    }
    append cmd " -comment [list $comment] -text [list $text]"
    if {! [info exists ::rep::_data($w:$p/$c:delete)]} {
      lappend returnList $cmd
    }
    
    if {$recurse  &&  [llength $::rep::_data($w:$p/$c:children)] > 0} {
      set returnList [::rep::_extract $w $p/$c $returnList]
    }
  }
  return $returnList
}

# ::rep::_searchLines
#   Traverses the repertoire heirarchy, producing a list of
#   lines to be searched. If type is "all", all lines in the
#   repertoire will appear. Otherwise, type should be "displayed"
#   and only currently displayed lines will appear.
#   Each include-line returned has "1 " prepended to its moves, and
#   each exclude-line returned has "0 " prepended to its moves.
#
proc ::rep::_searchLines {w type v returnList} {
  set p $v
  if {$v == "/"} { set p "" }
  foreach c $::rep::_data($w:$v:children) {
    set text [string trim $::rep::_data($w:$p/$c:text)]
    set comment [string trim $::rep::_data($w:$p/$c:comment)]
    set moves [::rep::_decode $p/$c]
    
    set recurse 0
    if {$::rep::_data($w:$p/$c:group)} {
      if {$type == "all"  ||  $::rep::_data($w:$p/$c:shown)} {
        set recurse 1
      }
    } else {
      lappend returnList "$::rep::_data($w:$p/$c:include) $moves"
    }
    
    if {$recurse  &&  [llength $::rep::_data($w:$p/$c:children)] > 0} {
      set returnList [::rep::_searchLines $w $type $p/$c $returnList]
    }
  }
  return $returnList
}

# ::rep::readFile
#   Reads the specified repertoire file.
#
proc ::rep::readFile {w fname} {
  #set readonly 0
  #if {[catch {open $fname r+} f]} {
  #  set readonly 1
  #} else {
  #  close $f
  #}
  
  if {[catch {open $fname r} f]} {
    return -code error "Unable to open the file: $fname"
  }
  ::rep::clear $w
  set ::rep::_data($w:altered) 1
  #set ::rep::_data($w:readonly) 1
  set text ""
  set count 0
  set groups {}
  while {1} {
    set line [string trim [gets $f]]
    if {[eof $f]} { break }
    incr count
    set sep [string first ";" $line]
    if {$sep < 0} {
      set moves $line
      set comment ""
    } else {
      set moves [string trim [string range $line 0 [expr {$sep - 1} ]]]
      set comment [string trim [string range $line [expr {$sep + 1} ] end]]
    }
    set c [string index $line 0]
    
    switch -exact -- $c {
      "\#" {
        set line [string trim [string range $line 1 end]]
        append text "$line\n"
      }
      "\[" {
        set group [string trim [string range $moves 1 end]]
        set m [join $groups]
        append m " $group"
        if {[catch {::rep::newGroup $w $m -comment $comment -text $text} err]} {
          return -code error "Error: $fname: line $count: $err"
        }
        lappend groups $group
        set text ""
      }
      "\]" {
        set len [llength $groups]
        if {$len == 0} {
          return -code error "Error: $fname: line $count: extra \"\]\" symbol."
        } elseif {$len == 1} {
          set groups {}
        } else {
          set groups [lrange $groups 0 [expr {$len - 2} ]]
        }
      }
      "-" {
        set m [join $groups]
        append m " "
        append m [string trim [string range $moves 1 end]]
        if {[catch {::rep::newLine $w $m -include 0 -comment $comment -text $text} err]} {
          return -code error "Error: $fname: line $count: $err"
        }
        set text ""
      }
      "+" {
        set m [join $groups]
        append m " "
        append m [string trim [string range $moves 1 end]]
        if {[catch {::rep::newLine $w $m -include 1 -comment $comment -text $text} err]} {
          return -code error "Error: $fname: line $count: $err"
        }
        set text ""
      }
      "" -
      "@" {
        # do nothing
      }
      default {
        return -code error "Error in $fname at line $count: unexpected character: \"$c\""
      }
    }
  }
  close $f
  set ::rep::_data($w:altered) 0
  set ::rep::_data($w:filename) $fname
  ::rep::_drawWhenIdle $w
  ::rep::updateWinTitle $w
  return
}

# ::rep::writeFile
#   Writes the repertoire to the specified file.
#
proc ::rep::writeFile {w fname} {
  if {[catch {open $fname w} f]} {
    return -code error "Unable to open the file \"$fname\""
  }
  puts $f "@ Scid opening repertoire file.  Updated: [::utils::date::today]."
  if {[catch {::rep::_writeFileLevel $w $f "/" 0} err]} {
    return -code error "Error writing the file \"$fname\": $err"
  }
  close $f
  set ::rep::_data($w:altered) 0
  set ::rep::_data($w:filename) $fname
  ::rep::updateStatus $w
  ::rep::updateWinTitle $w
  return
}

# ::rep::_writeFileLevel
#   Writes a single level of the repertoire to the open
#   file channel "f", indented "in" spaces.
#
proc ::rep::_writeFileLevel {w f v in} {
  set p $v
  if {$v == "/"} { set p "" }
  if {[llength $::rep::_data($w:$v:children)] == 0} { return }
  
  foreach c $::rep::_data($w:$v:children) {
    if {$in == 0} { puts $f "" }
    set text [split [string trim $::rep::_data($w:$p/$c:text)] "\n"]
    foreach line $text {
      for {set i 0} {$i < $in} {incr i} { puts -nonewline $f " " }
      puts -nonewline $f "\# "
      puts $f [string trim $line]
    }
    
    for {set i 0} {$i < $in} {incr i} { puts -nonewline $f " " }
    if {$::rep::_data($w:$p/$c:group)} {
      puts -nonewline $f "\[ "
    } else {
      if {$::rep::_data($w:$p/$c:include)} {
        puts -nonewline $f "+ "
      } else {
        puts -nonewline $f "- "
      }
    }
    set moves [::rep::_decode $c]
    if {[string length $::rep::_data($w:$p/$c:comment)] > 0} {
      append moves " ; $::rep::_data($w:$p/$c:comment)"
    }
    puts $f $moves
    if {[llength $::rep::_data($w:$p/$c:children)] > 0} {
      ::rep::_writeFileLevel $w $f $p/$c [expr {$in + 4} ]
    }
    if {$::rep::_data($w:$p/$c:group)} {
      for {set i 0} {$i < $in} {incr i} { puts -nonewline $f " " }
      puts $f "\]"
    }
  }
}

# ::rep::OpenFile
#   Prompts the user to select a repertoire file, and reads it.
#
proc ::rep::OpenFile {w} {
  set ftype { {"Scid repertoire files" {".sor"}} }
  set fname [tk_getOpenFile -filetypes $ftype -title "Open a repertoire file"]
  if {$fname == ""} { return }
  ::rep::readFile $w $fname
}

# ::rep::saveFile
#   Prompts the user to select a repertoire file name if the file is
#   untitled or if the user type is "new", and then writes the file.
#
proc ::rep::saveFile {w {type current}} {
  set fname $::rep::_data($w:filename)
  if {$type == "new"  ||  $fname == ""} {
    set ftype { {"Scid repertoire files" {".sor"}} }
    set fname [tk_getSaveFile -filetypes $ftype -defaultextension ".sor" -title "Create a repertoire file"]
  }
  if {$fname == ""} { return }
  if {[file extension $fname] != ".sor" } {
    append fname ".sor"
  }
  ::rep::writeFile $w $fname
}

# ::rep::_popupMenu
#   Creates and presents a right-mouse-button popup menu for a
#   group or line at the real coordinates ($x,$y).
#
proc ::rep::_popupMenu {w v x y} {
  if {! [info exists ::rep::_data($w:$v:group)]} { return }
  catch {destroy $w.popup}
  set group $::rep::_data($w:$v:group)
  menu $w.popup
  $w.popup add command -label "Paste moves as current game" \
      -command "catch {sc_game import \"[::rep::_decode $v]\"};
  updateBoard -pgn"
  $w.popup add separator
  if {$group} {
    $w.popup add command -label "Expand group and all subgroups" \
        -command "::rep::showAll $w $v"
    $w.popup add command -label "Collapse group and all subgroups" \
        -command "::rep::hideAll $w $v"
    $w.popup add separator
    $w.popup add command -label "Delete group, keeping subgroups..." \
        -command "::rep::deleteGroup $w $v"
    $w.popup add command -label "Delete group and subgroups..." \
        -command "::rep::pruneGroup $w $v"
  } else {
    $w.popup add command -label "Toggle included/excluded state" \
        -command "::rep::toggleLineState $w $v"
    $w.popup add separator
    $w.popup add command -label "Delete line..." \
        -command "::rep::deleteLine $w $v"
  }
  tk_popup $w.popup $x $y
}

# ::rep::search
#   Opens the repertoire search window. The parameter "type" should be
#   "all" or "displayed", indicating which lines to use in the search.
#
proc ::rep::search {repwin {type all}} {
  sc_search repertoire clear
  set lines [::rep::_searchLines $repwin $type / {}]
  set numIncluded 0
  set numExcluded 0
  foreach i $lines {
    set include [string index $i 0]
    set moves [string range $i 2 end]
    sc_game push
    if {[catch {eval "sc_move addSan $moves"} result]} {
      sc_game pop
      tk_messageBox -parent $repwin -type ok -icon warning -title "Scid" \
          -message "Error in line \"$moves\": $result"
      sc_search repertoire clear
      return
    }
    sc_search repertoire add $include
    sc_game pop
    if {$include} { incr numIncluded } else { incr numExcluded }
  }
  if {$numIncluded == 0} {
    tk_messageBox -parent $repwin -type ok -icon info -title "Scid" \
        -message "The repertoire you want to search for has no included lines, so it cannot possibly match any games."
    return
  }
  
  set w .searchRep
  toplevel $w
  wm title $w "Scid: $::tr(RepSearch)"
  bind $w <Escape> "$w.b.cancel invoke"
  bind $w <Return> "$w.b.search invoke"
  bind $w <F1> {helpWindow Repertoire Search}
  
  pack [label $w.l -anchor w] -side top -fill x
  set t "$::tr(RepSearch): $numIncluded $::tr(RepIncludedLines), "
  append t "$numExcluded $::tr(RepExcludedLines)"
  $w.l configure -text $t
  
  ::search::addFilterOpFrame $w
  addHorizontalRule $w
  
  canvas $w.progress -height 20 -width 300 -bg white -relief solid -border 1
  $w.progress create rectangle 0 0 0 0 -fill blue -outline blue -tags bar
  $w.progress create text 295 10 -anchor e -font font_Regular -tags time \
      -fill black -text "0:00 / 0:00"
  
  frame $w.b
  pack $w.b -side top -ipady 5 -fill x
  
  set ::_searchRep $repwin
  button $w.b.search -textvar ::tr(Search) -command {
    busyCursor .
    grab .searchRep.b.cancel
    sc_progressBar .searchRep.progress bar 301 21 time
    .searchRep.b.cancel configure -command sc_progressBar
    set err [catch {sc_search repertoire go $::search::filter::operation} result]
    sc_search repertoire clear
    unbusyCursor .
    grab release .searchRep.b.cancel
    grab release .searchRep
    focus .repWin
    destroy .searchRep
    if {$err} {
      tk_messageBox -parent $::_searchRep -type ok -icon info -title "Scid" \
          -message $result
    } else {
      set ::rep::_data($::_searchRep:status) "  $::tr(RepSearch): $result"
    }
    set glstart 1
    ::windows::gamelist::Refresh
    ::windows::stats::Refresh
  }
  button $w.b.cancel -textvar ::tr(Cancel) \
      -command "grab release $w; focus $repwin; destroy $w"
  pack $w.b.cancel $w.b.search -side right -pady 5 -padx 5
  pack $w.progress -side bottom
  wm resizable $w 0 0
  grab $w
}


# Images and bitmaps used in heirarchical repertoire view.
# I found the open and closed folder images used at the sourceforge.net
# website, but i hope to find or create nicer-looking ones...

image create photo ::rep::_closedgroup -data {
  R0lGODdhDwANAIQAAP7+/AICBMa6la6ehJaJda6ihPbu6ubcwNbGtN7V2c7Dp97Opc66m8a1
  lLaniu7q2Xp0cHJuW+7m1LaulKaYfL6zl25mWJ6ObYJ5a1pVTQAAAAAAAAAAAAAAAAAAAAAA
  ACwAAAAADwANAAAFYSAgjmQ5BmhgkoEwuOoaDARdEGkqBsbR/wZE4qBQBQ6CBUO5EDQcAhwg
  8GgynVAHxHhYLgWCbCFilDAbYUFhQiFPu4tK2uGgUCzlBRpaqF8IeG8QBBgUGIQRFhYZMTmO
  OiEAOw==
}

#image create photo ::rep::_oldgroup -data {
#R0lGODdhEAAPAMIAAP////j4+Hh4eLi4uPj4AAAAAAAAAAAAACwAAAAAEAAPAAADPAi63BBB
#SAlrfWIQPYS92SZ2EwUIjiMUJzC+2tpy8CajNX0DdG+zOJ8OyMv9WsYYsMQssQKFqHQ6TVkV
#CQA7
#}

image create photo ::rep::_opengroup -data {
  R0lGODdhDwANAKUAAP7+/O7u7M7OzDo6NN7e3PLy5J6enNbW1K6urH5+fDo2LIZ+bK6qnJaW
  lGpqbFZSRF5eXG5ubG5mVLaunNLOxObm4HpyZGJiXA4ODBoWFJaOfHZuXI6GdObi3OLi5EpG
  RJqOfMrKzNrWzPb27Pr69CIiHH52ZJqSfBoaFFpWT4J6ZN7azCoqLGZeVKqqrLq2pO7q5IaG
  hKKahL6+vFZWVGpmVD4+PJKKdAYGBAAAAAAAAAAAAAAAAAAAAAAAAAAAACwAAAAADwANAAAG
  kkCAcBgQCAYDwrBgOAAQhoRCsWA0BAaD4wGJQB6SCYVSsVwemIxmseF0PAUA5ONYgDIhhUY0
  IhESJSYcICcnKAQpKisADSwtIBonGpMZAC4fLyMoJyCdkJMoAB0RGzAZhJKchJUAMS0yKJOy
  HA8lM0M0JhmFnDU2BkNCBimnIDUPN8HBLCgWCgnAykMHODQCAdJBADs=
}

image create photo ::rep::_tick -data {
  R0lGODdhEAAQAKEAAP///wAAAFFR+wAAACwAAAAAEAAQAAACMISPacHtvpQKUSIKsBQiV8V1
  mIaEFWmYJ8Cl7TGynQpH4XtV9/ThuWepZR5ERtBSAAA7
}

image create photo ::rep::_cross -data {
  R0lGODdhEAAQAKEAAP///wAAAPoTQAAAACwAAAAAEAAQAAACL4SPacHtvpQKUSIKsFA7V9EZ
  YIUBoxliJXqSSeseIKzKXVujyJlbse/JPIYMoKQAADs=
}

image create photo ::rep::_tb_group -data {
  R0lGODlhEQARAIQAANnZ2QICBMa6la6ehJaJda6ihPbu6ubcwNbGtN7V2c7Dp97Opc66m8a1
  lLaniqmpqe7q2Xp0cHJuW+7m1LaulKaYfL6zl25mWJ6ObYJ5a1pVTScznicznicznicznicz
  niwAAAAAEQARAAAFdiAgjmRpnigQrEE6BsIQt2kwEHdBsCwZGAeg0IBIHBQ01UGwYDQXgoZD
  sHuIAhDoMzp1RAJWpdMpEHQLEvB18myYBQVKJR0OHJyWt8NRqVzUKmxuUwV8GAR/dQcRBBkV
  GY0SFxcagCo8mCsPYSKbnp+eLqKjIyEAOw==
}

image create photo ::rep::_tb_include -data {
  R0lGODlhEQARAKEAAP///9nZ2QAAAFFR+ywAAAAAEQARAAACOYyPecLtvoCcVIpY8zUizzEA
  W9B5YDiW1WlhFNtyACjBMTmH9t2ddJWq7XifkMbl4T2WDIXzCVUUAAA7
}

image create photo ::rep::_tb_exclude -data {
  R0lGODlhEQARAKEAANnZ2QAAAP////oTQCwAAAAAEQARAAACOoSPecHtvoScVIZY8zVBjvwJ
  G9AJQ+iFY2mG57RS5wtjE11z8kzF6W/B4FpBXabiO+ZIjyZDAY1KFQUAOw==
}

#----------------------------------------------------------------------
if {$png_image_support} {
	image create photo ::rep::_closedgroup -data {
		iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABmJLR0QAAAAAAAD5Q7t/AAABHElE
		QVR42s2TTUoDQRCF3wwuXCjRjeBRIp7AM7idreBpPIF4CPeRRDRCCJigSURHSdwY1MXEqnpZ9PSQ
		SQ/Bn40NRf/Q36tX/QP8p1YHwKWo/wh+SgfsdFvsdFs8PTv5lkic9433jzdcNM8xeX3EeDzCxuY6
		jo4PAaBR4cxHEuUCfH65R622g+l0UqibGeI4hqi4TWSxnqYj7O8dYM1v3t7axd2wDYCgGcwMRoWp
		wgpQXdDQvrkslYAs+/zVyRcOEEWgaZDZZwUAoxXu1KQsQBKiXwHoIV/7YoKSgJlCRALQQ86BA0mD
		2pIAQYjMAnAxG2nQfBycgcwyqEoAVkGVAoOHPq6um84u6Zzk11fVerfD0jxZ8dpWRfLnHzgHi+4c
		BY9h5BAAAAAASUVORK5CYII=
	}

	image create photo ::rep::_opengroup -data {
		iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABmJLR0QA/wD/AP+gvaeTAAACo0lE
		QVR42pVTS0wTURQ9r9MvUKeD2JaCbQUxgFVREQzGhRsXJibudO3GtZDowqUxxsRE4wdidKMmYnTh
		xoWK8gnCAokLpLUtGfqhpVNaoJ0HU+iUeW6AkPhBTnI393POTe65wO9oMJkt4WMnTq55PN4cgAbs
		AA3l1l1iMiUxRVHYzVu3FYPB+O1/hw+UW3kxmZJYoVBgwWCQRWPxZY93nwqgZVtlg8kSSKQkrVAo
		sGAoxCYmJlg8HmcDQ8Miz/P+vw1yAM6Yy61vo5FIfVWlTSeKIlKzszAajaCUorraWRSnI3t+BgLj
		6/0qgOIGgZ7TG6/0PHro4a0VJBAIgBACm82GdDoNnufVXJ6WdXVeNXA68ikSiWwqE0JKfr9/Ur9W
		KtYmpdTa4NfRtaaGOnM4HIYgCOB5HlRZpeHpmOnC+XOmV729AGNgDGAAcosLXEfHqSYOwOdwKHT2
		aEuLnYBxPM9DVVWsFlU5PZdRD/uaeYPBQGSZwlJWBk3TIKUkjI2Pk57ux8M6APFEIjEzk0xiRdVU
		h8OBUqkEeakQd9irrPvr64jT6YTD6dxcP5PN4udUlAGY0K/nLj190jO3AlPeyMHh9XrT6cwPV9vx
		I2ZKKfKyDLvdAQZAklJIZ+bx4N5dAmBkg4CmJenl99HByy67IMlLiuprbnS4XC4wxqAxBk3ToCME
		8wt5DI6MQUrGXwMY0G05aVd/38fFSf8UnQqHBEEQkM1mAUJA1kMpKBCjM3jxrBsA7gPIclsIigD6
		YrHYdZWr4Hw+H1nM5cgypaByHhaLBdFIFF+GRvDh/bs7AJ4DAPmDuVqqa91vhMrdNrfHW9be1mre
		W1Oj05utkKmMG9c6VZpfPAQgvJ29reufePFg6+n+anfdsru+UQPQjh3C8K/iLzfsMM5wz19XAAAA
		AElFTkSuQmCC
	}

	image create photo ::rep::_tick -data {
		iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABmJLR0QA/wD/AP+gvaeTAAAACXBI
		WXMAAAsRAAALEQF/ZF+RAAAAB3RJTUUH0gsWDAwVWfJ8VQAAAhlJREFUeJyVkltIk2Ecxn/7lkvZ
		aKDCGiMP1FJIyOakUKhQTKhAihEV3WRQF9FBsDu7KSjsQHRTu+jOggyMNulGlpAJaxZMm2m2dLqD
		pZQDc1vNbW8XfYuPIdWem/eF/3P4Py8v5IerwCDQ1dphz0uoRaUa2NVi+9baYReAT1tsyMug7/DZ
		K5k7T0eEttiQBm7kEoqAdYCkN1bkzi5vtTZlXr4LCsuhcwL4ABxUEnR7z3TH9caKWaAW0JRbmrOz
		45XVO0btDo9ov/1c6Eo2ZoC7wBalQamxqi48Gfwqyi3NceAEoDM3tgH4Tt10iocv3ov6I50CCAE2
		YIPSQA20H73mEE63X5gb21KawsKLwL3NtQ1jPa5xcey6U5SUVQugF6iR6/4RC2Bq+u3Avk3WA6aq
		7TulUCjckoxFP1+61bPHPx9lcnSEj6/64gjuA2+AmNIAIJX6mRgKRyKna+p3qw3mOmlVVWC27W+S
		hnwhxl2PWF6Y8wCPgQCQyhpI8imAwKx38MnYhB+1pKKr84La4fazND/D4rQ3A7iAOWBV2V9S3JMi
		nT7v6e1eSCTTPHAME/g0Rdg3TDK+MgN4gSiQyX1AJVI/lpeC8VjMtl6rZ9HvJTLhJhn/3g/0A1/k
		bf8KbUGR1m3a1iB0pSYhp54EigHVv8TZWmWoSMjiZ4AV0KxFzq2AvGJMFiaB14AHWPmf9FxU8vvj
		rJkO8As57sg7EP2vzQAAAABJRU5ErkJggg==
	}

	image create photo ::rep::_cross -data {
		iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABmJLR0QA/wD/AP+gvaeTAAAC6UlE
		QVR42p2TS2hcdRSHv/u/907mzp07GJM0sUwgZip0oTEWC1abphaSKMEGIq2IWt0IQUTITheiiMZS
		UnBTEDeKuLTipggighgDIbE1jal2xvHRRmcyk3k4mft+uZCRKnahv9U5nPP9OOfAkflTuhDimBBC
		j+N4m/+qdDo9f2zotvhQtt8zDGPhZn2app0QQuRVVf1eVdWRvwoHBnquF8++HH/z9MPx8cHe2DCM
		V/4J67o+eVd/b/TFC6fi85MHYk1VfgEQAOmEinVlHdd2eHE0x3gm8aphGM914GQyefyOjHbhw8en
		JGljle1yBY3IAZABGkH42KN9etarlAhsi/HhLG3Hm/7Ri6upVOpyt8y3Hz8xLV9bW2GzbvLpdov1
		tjcBlAXA/WNHPnp+JR/L3b3EgFff4WRPgrt19Zxpmj+fPzUjXbu0xkp1l3d+qnChZk3EcXwJQOqM
		mUqlXrpdUxbePrQfr7FDCIQRhMP72Ws3WS1e582rJX8r4L4gCC52OLkT+L6/ZAmluFlrzU7lsgS2
		hZCgW5Goblc4nS9TsMMzYRh+cONx5RsT3/cvb1luV6nRHHvkyGHcnQqOaSILGO/LsG6HY6akbPi+
		/92/GiiKMjegSKffnZ+j8fUyLhJxFCFLoEpw+JYkF1vurCnJK77vF/9mIISYP7ine/H9uSeVxtJn
		bDZtnt0oFQpW0PNQbpDIsegSEkd7dHm56c40HG8TyMsAkiQtnBwaeP2NE9NK/avPKZgui4WKFSSS
		QyU3KOWrjemJfYNEtkWXBKO9ma5Pyq3RIIrOyQC5VOK9t56azfy+ukTR8jn7QzX4LWBfu91ueJ63
		WhOquVVvTT44PEhsW/hBwFrbFzXHOyMDRIryTK5V6a95Ia9dLVMJpQccx7nSWc/zvOUSyp5fm62D
		R4ezlHYtvqzbuzXHXQRAVdWROzPaTlZT65qmzdzsmQzDWLh3b59/T/+tcTqdnuf/SJblESHEFKAD
		/AFjPUc+w8q9dwAAAABJRU5ErkJggg==
	}

	image create photo ::rep::_tb_group -data {
		iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABmJLR0QAAAAAAAD5Q7t/AAABHElE
		QVR42s2TTUoDQRCF3wwuXCjRjeBRIp7AM7idreBpPIF4CPeRRDRCCJigSURHSdwY1MXEqnpZ9PSQ
		SQ/Bn40NRf/Q36tX/QP8p1YHwKWo/wh+SgfsdFvsdFs8PTv5lkic9433jzdcNM8xeX3EeDzCxuY6
		jo4PAaBR4cxHEuUCfH65R622g+l0UqibGeI4hqi4TWSxnqYj7O8dYM1v3t7axd2wDYCgGcwMRoWp
		wgpQXdDQvrkslYAs+/zVyRcOEEWgaZDZZwUAoxXu1KQsQBKiXwHoIV/7YoKSgJlCRALQQ86BA0mD
		2pIAQYjMAnAxG2nQfBycgcwyqEoAVkGVAoOHPq6um84u6Zzk11fVerfD0jxZ8dpWRfLnHzgHi+4c
		BY9h5BAAAAAASUVORK5CYII=
	}

	image create photo ::rep::_tb_include -data {
		iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABmJLR0QA/wD/AP+gvaeTAAAACXBI
		WXMAAAsRAAALEQF/ZF+RAAAAB3RJTUUH0gsWDAwVWfJ8VQAAAhlJREFUeJyVkltIk2Ecxn/7lkvZ
		aKDCGiMP1FJIyOakUKhQTKhAihEV3WRQF9FBsDu7KSjsQHRTu+jOggyMNulGlpAJaxZMm2m2dLqD
		pZQDc1vNbW8XfYuPIdWem/eF/3P4Py8v5IerwCDQ1dphz0uoRaUa2NVi+9baYReAT1tsyMug7/DZ
		K5k7T0eEttiQBm7kEoqAdYCkN1bkzi5vtTZlXr4LCsuhcwL4ABxUEnR7z3TH9caKWaAW0JRbmrOz
		45XVO0btDo9ov/1c6Eo2ZoC7wBalQamxqi48Gfwqyi3NceAEoDM3tgH4Tt10iocv3ov6I50CCAE2
		YIPSQA20H73mEE63X5gb21KawsKLwL3NtQ1jPa5xcey6U5SUVQugF6iR6/4RC2Bq+u3Avk3WA6aq
		7TulUCjckoxFP1+61bPHPx9lcnSEj6/64gjuA2+AmNIAIJX6mRgKRyKna+p3qw3mOmlVVWC27W+S
		hnwhxl2PWF6Y8wCPgQCQyhpI8imAwKx38MnYhB+1pKKr84La4fazND/D4rQ3A7iAOWBV2V9S3JMi
		nT7v6e1eSCTTPHAME/g0Rdg3TDK+MgN4gSiQyX1AJVI/lpeC8VjMtl6rZ9HvJTLhJhn/3g/0A1/k
		bf8KbUGR1m3a1iB0pSYhp54EigHVv8TZWmWoSMjiZ4AV0KxFzq2AvGJMFiaB14AHWPmf9FxU8vvj
		rJkO8As57sg7EP2vzQAAAABJRU5ErkJggg==
	}

	image create photo ::rep::_tb_exclude -data {
		iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABmJLR0QA/wD/AP+gvaeTAAAC6UlE
		QVR42p2TS2hcdRSHv/u/907mzp07GJM0sUwgZip0oTEWC1abphaSKMEGIq2IWt0IQUTITheiiMZS
		UnBTEDeKuLTipggighgDIbE1jal2xvHRRmcyk3k4mft+uZCRKnahv9U5nPP9OOfAkflTuhDimBBC
		j+N4m/+qdDo9f2zotvhQtt8zDGPhZn2app0QQuRVVf1eVdWRvwoHBnquF8++HH/z9MPx8cHe2DCM
		V/4J67o+eVd/b/TFC6fi85MHYk1VfgEQAOmEinVlHdd2eHE0x3gm8aphGM914GQyefyOjHbhw8en
		JGljle1yBY3IAZABGkH42KN9etarlAhsi/HhLG3Hm/7Ri6upVOpyt8y3Hz8xLV9bW2GzbvLpdov1
		tjcBlAXA/WNHPnp+JR/L3b3EgFff4WRPgrt19Zxpmj+fPzUjXbu0xkp1l3d+qnChZk3EcXwJQOqM
		mUqlXrpdUxbePrQfr7FDCIQRhMP72Ws3WS1e582rJX8r4L4gCC52OLkT+L6/ZAmluFlrzU7lsgS2
		hZCgW5Goblc4nS9TsMMzYRh+cONx5RsT3/cvb1luV6nRHHvkyGHcnQqOaSILGO/LsG6HY6akbPi+
		/92/GiiKMjegSKffnZ+j8fUyLhJxFCFLoEpw+JYkF1vurCnJK77vF/9mIISYP7ine/H9uSeVxtJn
		bDZtnt0oFQpW0PNQbpDIsegSEkd7dHm56c40HG8TyMsAkiQtnBwaeP2NE9NK/avPKZgui4WKFSSS
		QyU3KOWrjemJfYNEtkWXBKO9ma5Pyq3RIIrOyQC5VOK9t56azfy+ukTR8jn7QzX4LWBfu91ueJ63
		WhOquVVvTT44PEhsW/hBwFrbFzXHOyMDRIryTK5V6a95Ia9dLVMJpQccx7nSWc/zvOUSyp5fm62D
		R4ezlHYtvqzbuzXHXQRAVdWROzPaTlZT65qmzdzsmQzDWLh3b59/T/+tcTqdnuf/SJblESHEFKAD
		/AFjPUc+w8q9dwAAAABJRU5ErkJggg==
	}
}
#----------------------------------------------------------------------


set maskdata "#define solid_width 9\n#define solid_height 9"
append maskdata {
  static unsigned char solid_bits[] = {
    0xff, 0x01, 0xff, 0x01, 0xff, 0x01, 0xff, 0x01, 0xff, 0x01, 0xff, 0x01,
    0xff, 0x01, 0xff, 0x01, 0xff, 0x01
  };
}

set data "#define open_width 9\n#define open_height 9"
append data {
  static unsigned char open_bits[] = {
    0xff, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x7d, 0x01, 0x01, 0x01,
    0x01, 0x01, 0x01, 0x01, 0xff, 0x01
  };
}

image create bitmap ::rep::_shown -data $data -maskdata $maskdata \
    -foreground black -background white

set data "#define closed_width 9\n#define closed_height 9"
append data {
  static unsigned char closed_bits[] = {
    0xff, 0x01, 0x01, 0x01, 0x11, 0x01, 0x11, 0x01, 0x7d, 0x01, 0x11, 0x01,
    0x11, 0x01, 0x01, 0x01, 0xff, 0x01
  };
}

image create bitmap ::rep::_hidden -data $data -maskdata $maskdata \
    -foreground black -background white

###
### End of file: reper.tcl
###
### graph.tcl: part of Scid.

# ::tools::graphs::Save
#
#   Saves a graph (e.g. tree graph, filter graph, rating graph) to a
#   color or greyscale Postscript file.
#
#   The mode should be "color" or "gray".
#
proc ::tools::graphs::Save {mode w} {
  if {! [winfo exists $w]} { return }
  set ftypes {{"PostScript files" {.eps .ps}} {"All files" *}}
  set fname [tk_getSaveFile -filetypes $ftypes -parent $w -defaultextension ".eps" -title "Scid: Save Graph"]
  if {$fname == ""} { return }
  
  if {[file extension $fname] != ".eps" && [file extension $fname] != ".ps" } {
    append fname ".eps"
  }
  
  if {[catch {$w postscript -file $fname -colormode $mode} result]} {
    tk_messageBox -icon info -parent $w -title "Scid" -message $result
  }
}

########################################
# Configure Filter graph window

if { ! [info exists FilterMinElo] } {
  set FilterMinElo 2100
  set FilterMaxElo 2800
  set FilterStepElo 100
  set FilterGuessELO 1
  set FilterMinYear 1995
  set FilterMaxYear 2007
  set FilterStepYear 1
  set FilterMinMoves 5
  set FilterMaxMoves 80
  set FilterStepMoves 1
}

image create photo icongraphic -data {
  R0lGODlhIAAbAPcAAAQCjISGhMTCvExKpKymnOTixCQilNTSzKSixGxubISC
  tMzKxLSypPT23DQynGRmrBQSlLS2zJSSvFxerNzexMzKzLy2tDw6nHx+tJyW
  lMTCzFRSpOTi1KyqxPz+3GxutBwelJyavDw+pAwKjIyGhMzGxExOpKympCwq
  nNTW1Hx+fIyOvNTOxLSyrBQWlLy6zNze1MzOzLy6tDw+nOzq3KyuxPz+5HRy
  tJyevO4AAJEAAHwAAHDkkgUAApLMkHwBAP8w2P+MIf9Fef8AAG2SgAUCU5KQ
  0nwAdxUM2AoAAIIAinwAAAAA2AAAIRcAeQAAAFCgeAO55wBPEgAAAFjwh/3m
  3BcS0QAAd3ig2Gs4IRdFeQAAAAC0SADmmQASdQAAAH6gAAA4AABFAMAAAAA6
  oACeuQAATwAAAP+MAf/mAP8SAP8AAP8QOv/gBv/RAf93zwDkWAAA6wDMEgAB
  AAAgIQAANwAARQAAAACS0QACtBeQ0QAAd8ASg+UARhIASAACAGIBkgkAAoIA
  kHwAAHjUAGvmABcSAAAAANu+BwXfAILRAHx3AADkAL8AAE/MAAABAHggAGsA
  AAEAFwAAAGqSAAACAACQAAAAAPwYAORVABIAAAAAAADYAADmAAASAAAAAPiD
  APcqABKCAAB8ABgAKO4AAJEAuXwAAHAAAAUAAJIAAHwAAP8AAP8AAP8AAP8A
  AG0pGQW3AJKTAHx8AEosGfYAAIC5AHwAAAC+UAA+7ReCEgB8AAD//wD//wD/
  /wD//3gAAGsAABcAAAAAAAC8BAHm6AASEgAAAAC+HgA+qwCCSwB8AFf45Pb3
  54ASEnwAAOgYe+buwBKRTgB8AHgAGGu36BeTEgB8AEH/vjv/Pjz/gnf/fBss
  nbMA6NG5EncAAPC+5eU+/xKC/wB8fywAhADo6AASEgAAAADdLAA/AHiCuf98
  AOMWvpQ/PtGCgnd8fEkBLGYAANMAuXcAANgxGAAAVYoAAAAAAAwBAAAAAAAA
  AAAAAEQxzmEwcHMwRyAgACH5BAAAAAAALAAAAAAgABsABwj/AA+wiMHAgw2D
  CA8qTMhwoUIWAhk4bGhQAoYGEyceiJiR4QoAAEJQdMgCosSRCFOAHOAB5cEF
  AggU7KhQw4wKH0TQNCjgBAkCFBoIHUq0wYUXQk3gKFr0gIwTM1GumKAQhgMM
  BxEmFHggakcQNBiKePAgrI2FEFmc7BiB5USQWFsq5OqVIQcQHDKCdAHjLEIW
  C1qsZdgAhYaOKUKsGNAg4VMVQJkqQLGBKdMbBjoIjXGgRYa6Zx0AGLBTYQUQ
  ikHEMDmxAYgZK0oj1ADyhUCCDD1MuOGyIQyQqzkmDOGgd8YUMWwIVKv1BVjZ
  NCEmiNwAAYQYlrNbFvj54IsRNXobZKdrY8No47JvF5wBUmtH9xTTSqQRAoHC
  +wbx+824fDD8/1k59NABnxlEwX42HHifgvkxeFAByrGgggwMMCBThRVeiKGG
  GWLYoUAWpMWViCSOaCILJRAQgAAltnjii2mdQEALAQEAOw==
}

#Check for illegal Values and set to default values
proc checkConfigFilterGraph {} {
  global FilterMaxMoves FilterMinMoves FilterStepMoves FilterMaxElo FilterMinElo FilterStepElo FilterMaxYear FilterMinYear FilterStepYear
  if { $FilterStepMoves < 1 } { set FilterStepMoves 1 }
  if { $FilterStepElo < 1 } { set FilterStepElo 100 }
  if { $FilterStepYear < 1 } { set FilterStepYear 1 }
  if { $FilterMinMoves < 1 } { set FilterMinMoves 5 }
  if { $FilterMinElo < 0 } { set FilterMinElo 2100 }
  if { $FilterMinYear < 1 } { set FilterMinYear 1995 }
  if { $FilterMaxMoves < 1 } { set FilterMaxMoves 80 }
  if { $FilterMaxElo < 1 } { set FilterMaxElo 2800 }
  if { $FilterMaxYear < 1 } { set FilterMaxYear 2007 }
}

proc configureFilterGraph {} {
  global FilterMaxMoves FilterMinMoves FilterStepMoves FilterMaxElo FilterMinElo FilterStepElo FilterMaxYear FilterMinYear FilterStepYear FilterGuessELO
  
  set w .configFilterGraph
  if {[winfo exists $w]} {
    destroy $w
  }
  
  toplevel $w
  wm title $w $::tr(ConfigureFilter)
  setWinLocation $w
  bind $w <F1> {helpWindow Graphs Filter}
  frame $w.filter
  set col 0
  set row 0
  #Create input for each configurationvalue
  foreach { i n } { Year Year Elo Rating Moves moves} {
    label $w.filter.label$i -text $::tr($n): -font font_Bold
    grid $w.filter.label$i -row $row -column $col -sticky w
    incr col
    foreach {j k} { FilterMin "  " FilterMax " - " FilterStep "  Intervall:"} {
      label $w.filter.label$j$i -text $k
      entry $w.filter.i$j$i -textvariable $j$i -justify right -width 5 -validate all -vcmd { regexp {^[0-9]{0,4}$} %P }
      grid $w.filter.label$j$i -row $row -column $col -sticky w
      incr col
      grid $w.filter.i$j$i -row $row -column $col -sticky w
      incr col
    }
    if { $i == "Elo" } {
      checkbutton $w.filter.iEloGuess -text $::tr(FilterEstimate) -onvalue 1 -offvalue 0 -variable FilterGuessELO
      grid $w.filter.iEloGuess -row $row -column $col -sticky w
      #	  incr col
    }
    incr row
    set col 0
  }
  
  button $w.close -textvar ::tr(Close) -command {
    checkConfigFilterGraph; ::tools::graphs::filter::Refresh
    ::tools::graphs::absfilter::Refresh; destroy .configFilterGraph  }
  button $w.standard -textvar ::tr(Defaults) -command {
    set FilterMinElo 2100
    set FilterMaxElo 2800
    set FilterStepElo 100
    set FilterMinYear 1995
    set FilterMaxYear 2007
    set FilterStepYear 1
    set FilterMinMoves 5
    set FilterMaxMoves 80
    set FilterStepMoves 1
    set FilterGuessELO 1
  }
  button $w.update -textvar ::tr(Update) -command { checkConfigFilterGraph
    ::tools::graphs::absfilter::Refresh;
    ::tools::graphs::filter::Refresh
  }
  
  pack $w.filter
  pack $w.close $w.update $w.standard -side right -padx 2 -pady 2
  focus $w.filter.iFilterMinYear
  bind $w <Configure> "recordWinSize $w"
}

#####################
# Filter graph window

# ::tools::graphs::filter::type
#   can be "decade", "year" or "elo" , "move"
#
set ::tools::graphs::filter::type year

proc tools::graphs::filter::Open {} {
  global filterGraph
  set w .fgraph
  if {[winfo exists $w]} {
    focus .
    destroy $w
    set filterGraph 0
    return
  }
  toplevel $w
  wm title $w $::tr(TitleFilterGraph)
  set filterGraph 1
  bind $w <Destroy> {set filterGraph 0}
  
  frame $w.b
  pack $w.b -side bottom -fill x
  label $w.b.status -width 1 -font font_Small -anchor w
  frame $w.sep -height 2 -borderwidth 2 -relief sunken -background white
  pack $w.sep -side bottom -fill x -pady 4
  
  canvas $w.c -width 600 -height 400
  $w.c create text 25 5 -tag title -justify center -width 1 \
      -font font_Small -anchor n
  $w.c create text 250 295 -tag type -justify center -width 1 \
      -font font_Small -anchor s
  pack $w.c -side top -expand yes -fill both
  ::utils::graph::create filter
  
  bind $w <F1> {helpWindow Graphs Filter}
  bind $w <Configure> {
    .fgraph.c itemconfigure title -width [expr {[winfo width .fgraph.c] - 50}]
    .fgraph.c coords title [expr {[winfo width .fgraph.c] / 2}] 10
    .fgraph.c itemconfigure type -width [expr {[winfo width .fgraph.c] - 50}]
    .fgraph.c coords type [expr {[winfo width .fgraph.c] / 2}] \
        [expr {[winfo height .fgraph.c] - 10}]
    ::utils::graph::configure filter -height [expr {[winfo height .fgraph.c] - 80}]
    ::utils::graph::configure filter -width [expr {[winfo width .fgraph.c] - 60}]
    ::utils::graph::redraw filter
  }
  bind $w.c <1> tools::graphs::filter::Switch
  bind $w.c <$::MB3> ::tools::graphs::filter::Refresh
  
  foreach {name text} {decade Decade year Year elo Rating move moves} {
    radiobutton $w.b.$name -padx 4 -pady 3 -text $::tr($text) \
        -variable ::tools::graphs::filter::type -value $name \
        -command ::tools::graphs::filter::Refresh
    pack $w.b.$name -side left -padx 1 -pady 2
  }
  button $w.b.setup -image icongraphic -command configureFilterGraph
  dialogbutton $w.b.close -text $::tr(Close) -command "destroy $w"
  pack $w.b.decade $w.b.elo -side left -padx 1 -pady 2
  pack $w.b.close $w.b.setup -side right -padx 2 -pady 2
  pack $w.b.status -side left -padx 2 -pady 2 -fill x -expand yes
  
  ::tools::graphs::filter::Refresh
}

proc tools::graphs::filter::Switch {} {
  variable type
  switch $type {
    "decade" { set type "year" }
    "year" { set type "elo" }
    "elo" { set type "move" }
    "move" { set type "decade" }
  }
  ::tools::graphs::filter::Refresh
}

proc ::tools::graphs::filter::Refresh {} {
  global FilterMaxMoves FilterMinMoves FilterStepMoves FilterMaxElo FilterMinElo FilterStepElo FilterMaxYear FilterMinYear FilterStepYear FilterGuessELO
  
  set w .fgraph
  if {! [winfo exists $w]} { return }
  
  $w.c itemconfigure title -width [expr {[winfo width $w.c] - 50}]
  $w.c coords title [expr {[winfo width $w.c] / 2}] 10
  $w.c itemconfigure type -width [expr {[winfo width $w.c] - 50}]
  $w.c coords type [expr {[winfo width $w.c] / 2}] \
      [expr {[winfo height $w.c] - 10}]
  set height [expr {[winfo height $w.c] - 80}]
  set width [expr {[winfo width $w.c] - 60}]
  set vlines {}
  if {$::tools::graphs::filter::type == "elo"} {
    # Vertical lines for Elo-range graph:
    for {set i 1} {$i <=  $FilterMaxElo- $FilterMinElo} { incr i } {
      lappend vlines [list gray80 1 at $i.5]
    }
  } elseif {$::tools::graphs::filter::type == "year"} {
    # Vertical lines for Year-range graph:
    for {set i 1} {$i <= $FilterMaxYear- $FilterMinYear} {incr i } {
      lappend vlines [list gray80 1 at $i.5]
    }
  } elseif {$::tools::graphs::filter::type == "decade"} {
    # Vertical lines for Decade graph: most are gray, but those
    # just before 1950s and 2000s are blue to make them stand out.
    for {set i 1} {$i < 10} {incr i} {
      set vlineColor gray80
      if {$i == 4  ||  $i == 9} { set vlineColor steelBlue }
      lappend vlines [list $vlineColor 1 at $i.5]
    }
  }
  
  ::utils::graph::create filter -width $width -height $height -xtop 40 -ytop 35 \
      -ytick 1 -xtick 1 -font font_Small -canvas $w.c -textcolor black \
      -vline $vlines -background lightYellow -tickcolor black -xmin 0 -xmax 1
  ::utils::graph::redraw filter
  busyCursor .
  update
  
  set count 0
  set dlist {}
  set xlabels {}
  set max 0.0
  
  # Generate plot values and labels:
  if {$::tools::graphs::filter::type == "decade"} {
    set ftype date
    set typeName $::tr(Decade)
    set rlist [list 0000 1919 -1919  1920 1929 20-29 \
        1930 1939 30-39  1940 1949 40-49  1950 1959 50-59 \
        1960 1969 60-69  1970 1979 70-79  1980 1989 80-89 \
        1990 1999 90-99  2000 2009 2000+]
  } elseif {$::tools::graphs::filter::type == "year"} {
    set ftype date
    set typeName $::tr(Year)
    set endYear $FilterMaxYear
    set startYear $FilterMinYear
    set rlist {}
    for {set i $startYear} {$i <= $endYear} {set i [expr {$i + $FilterStepYear}]} {
      lappend rlist $i
      lappend rlist [expr {$i+$FilterStepYear-1}]
      lappend rlist [expr {$i+$FilterStepYear/2}]
    }
  } elseif {$::tools::graphs::filter::type == "elo"} {
    set ftype elo
    set typeName $::tr(Rating)
    #    set rlist [list 0 1999 0-1999  2000 2099 20xx  2100 2199 21xx  \
    2200 2299 22xx  2300 2399 23xx  2400 2499 24xx  \
        2500 2599 25xx  2600 2699 26xx  2700 3999 2700+]
    set endElo $FilterMaxElo
    set startElo $FilterMinElo
    set rlist {}
    for {set i $startElo} {$i <= $endElo} {set i [expr {$i + $FilterStepElo}]} {
      lappend rlist $i
      lappend rlist [expr {$i+$FilterStepElo-1}]
      # shorten gap between 0 and "useful" ratings 1800
      set j $i
      if { $i < 100 } { set i [expr { 1800 - $FilterStepElo}] }
      lappend rlist [concat $j-[expr {$i+$FilterStepElo-1}]]
    }
  } else {
    set ftype move
    set typeName $::tr(moves)
    set startMove $FilterMinMoves
    set endMove  $FilterMaxMoves
    set rlist {}
    for {set i $startMove} {$i <= $endMove} {set i [expr {$i + $FilterStepMoves}]} {
      lappend rlist [expr {2*$i}]
      lappend rlist [expr {2*($i+$FilterStepMoves)-1}]
      if { $i % 5 == 0 } {
        lappend rlist $i
      } else {
        lappend rlist ""
      }
    }
  }
  
  foreach {start end label} $rlist {
    if {$ftype == "date"} { append end ".12.31" }
    set r [sc_filter freq $ftype $start $end $FilterGuessELO]
    set filter [lindex $r 0]
    set all [lindex $r 1]
    if {$all == 0} {
      set freq 0.0
    } else {
      set freq [expr {double($filter) * 1000.0 / double($all)}]
    }
    if {$freq >= 1000.0} { set freq 999.9 }
    incr count
    lappend dlist $count
    lappend dlist $freq
    if {$freq > $max} { set max $freq }
    lappend xlabels [list $count $label]
  }
  
  # Find a suitable spacing of y-axis labels:
  set ytick 0.1
  if {$max > 1.0} { set ytick 0.2 }
  if {$max > 2.5} { set ytick 0.5 }
  if {$max >   5} { set ytick   1 }
  if {$max >  10} { set ytick   2 }
  if {$max >  25} { set ytick   5 }
  if {$max >  50} { set ytick  10 }
  if {$max > 100} { set ytick  20 }
  if {$max > 250} { set ytick  50 }
  if {$max > 500} { set ytick 100 }
  set hlines [list [list gray80 1 each $ytick]]
  # Add mean horizontal line:
  set filter [sc_filter count]
  set all [sc_base numGames]
  if {$all > 0} {
    set mean [expr {double($filter) * 1000.0 / double($all)}]
    if {$mean >= 1000.0} { set mean 999.9 }
    lappend hlines [list red 1 at $mean]
  }
  
  # Create fake dataset with bounds so we see 0.0::
  #::utils::graph::data decade bounds -points 0 -lines 0 -bars 0 -coords {1 0.0 1 0.0}
  
  ::utils::graph::data filter data -color darkBlue -points 1 -lines 1 -bars 0 \
      -linewidth 2 -radius 4 -outline darkBlue -coords $dlist
  ::utils::graph::configure filter -xlabels $xlabels -ytick $ytick \
      -hline $hlines -ymin 0 -xmin 0.5 -xmax [expr {$count + 0.5}]
  ::utils::graph::redraw filter
  $w.c itemconfigure title -text $::tr(GraphFilterTitle)
  $w.c itemconfigure type -text $typeName
  $w.b.status configure -text "  $::tr(Filter): [filterText]"
  unbusyCursor .
  update
}

#Klimmek: Invert white/black Score in Score graph
set ::tools::graphs::score::White 0
set ::tools::graphs::score::Black 0

####################
# Game score graph

proc ::tools::graphs::score::Refresh {} {
  set linecolor red
  set linewidth 2
  set psize 2
  
  set w .sgraph
  
  if {! [winfo exists $w]} {
    toplevel $w
    menu $w.menu
    $w configure -menu $w.menu
    $w.menu add cascade -label GraphFile -menu $w.menu.file
    menu $w.menu.file
    $w.menu.file add command -label GraphFileColor \
        -command "::tools::graphs::Save color $w.c"
    $w.menu.file add command -label GraphFileGrey \
        -command "::tools::graphs::Save gray $w.c"
    $w.menu.file add separator
    $w.menu.file add command -label GraphFileClose -command "destroy $w"
    $w.menu add cascade -label GraphOptions -menu $w.menu.options
    #Checkbuttons for Invert white/black Score in Score graph
    menu $w.menu.options
    foreach i {White Black} {
      $w.menu.options add checkbutton -label GraphOptions$i \
          -variable ::tools::graphs::score::$i -offvalue "0" -onvalue "1" \
          -command "::tools::graphs::score::Refresh"
    }
    
    canvas $w.c -width 500 -height 300
    $w.c create text 25 5 -tag text -justify center -width 1 \
        -font font_Regular -anchor n
    pack $w.c -side top -expand yes -fill both
    bind $w <F1> {helpWindow Graphs Score}
    bind $w <Configure> {
      .sgraph.c itemconfigure text -width [expr {[winfo width .sgraph.c] - 50}]
      .sgraph.c coords text [expr {[winfo width .sgraph.c] / 2}] 10
      ::utils::graph::configure score -height [expr {[winfo height .sgraph.c] - 90}]
      ::utils::graph::configure score -width [expr {[winfo width .sgraph.c] - 100}]
      ::utils::graph::redraw score
    }
    bind $w.c <$::MB3> ::tools::graphs::score::Refresh
    bind $w.c <1> {::tools::graphs::score::Move %x}
    bind $w <Control-Z> ::tools::graphs::score::Refresh
    wm title $w "Scid: [tr ToolsScore]"
    ::tools::graphs::score::ConfigMenus
  }
  
  $w.c itemconfigure text -width [expr {[winfo width $w.c] - 50}]
  $w.c coords text [expr {[winfo width $w.c] / 2}] 10
  set height [expr {[winfo height $w.c] - 90} ]
  set width [expr {[winfo width $w.c] - 100} ]
  ::utils::graph::create score -width $width -height $height -xtop 50 -ytop 45 \
      -ytick 1 -xtick 5 -font font_Small -canvas $w.c -textcolor black \
      -hline {{gray80 1 each 1} {black 1 at 0}} \
      -vline {{gray80 1 each 1} {steelBlue 1 each 5}}
  
  # Create fake dataset with bounds so we see at least -1.0 to 1.0:
  ::utils::graph::data score bounds -points 0 -lines 0 -bars 0 -coords {1 -0.9 1 0.9}
  
  # Update the graph:
  set whiteelo [sc_game tag get WhiteElo]
  set blackelo [sc_game tag get BlackElo]
  if {$whiteelo == 0} {set whiteelo ""} else {set whiteelo "($whiteelo)"}
  if {$blackelo == 0} {set blackelo ""} else {set blackelo "($blackelo)"}
  $w.c itemconfigure text -text "[sc_game info white]$whiteelo - [sc_game info black]$blackelo\n[sc_game info site]  [sc_game info date]"
  busyCursor $w
  update
  #Klimmek: Invert white/black Score in Score graph
  catch {::utils::graph::data score data -color $linecolor -points 1 -lines 1 \
        -linewidth $linewidth -radius $psize -outline $linecolor \
        -coords [sc_game scores $::tools::graphs::score::White $::tools::graphs::score::Black]}
  ::utils::graph::redraw score
  unbusyCursor $w
  update
}

proc ::tools::graphs::score::ConfigMenus {{lang ""}} {
  if {! [winfo exists .sgraph]} { return }
  if {$lang == ""} { set lang $::language }
  set m .sgraph.menu
  foreach idx {0 1} tag {File Options} {
    configMenuText $m $idx Graph$tag $lang
  }
  foreach idx {0 1 3} tag {Color Grey Close} {
    configMenuText $m.file $idx GraphFile$tag $lang
  }
  #Klimmek: translate optionsmenu
  foreach idx {0 1} tag {White Black} {
    configMenuText $m.options $idx GraphOptions$tag $lang
  }
}

proc ::tools::graphs::score::Move {xc} {
  set x [expr {round([::utils::graph::xunmap score $xc] * 2)} ]
  sc_move start
  sc_move forward $x
  updateBoard
}


####################
# Rating graph

set ::tools::graphs::rating::year 1900
set ::tools::graphs::rating::type both
set ::tools::graphs::rating::player ""

proc ::tools::graphs::rating::Refresh {{type ""} {player ""}} {
  set white [sc_game info white]
  set black [sc_game info black]
  set whiteColor red
  set blackColor blue
  set lwidth 2
  set psize 2
  
  if {$type == ""} { set type $::tools::graphs::rating::type }
  if {$player == ""} { set player $::tools::graphs::rating::player }
  set ::tools::graphs::rating::type $type
  set ::tools::graphs::rating::player $player
  
  set w .rgraph
  
  if {! [winfo exists $w]} {
    toplevel $w
    menu $w.menu
    $w configure -menu $w.menu
    $w.menu add cascade -label GraphFile -menu $w.menu.file
    menu $w.menu.file
    $w.menu.file add command -label GraphFileColor \
        -command "::tools::graphs::Save color $w.c"
    $w.menu.file add command -label GraphFileGrey \
        -command "::tools::graphs::Save gray $w.c"
    $w.menu.file add separator
    $w.menu.file add command -label GraphFileClose -command "destroy $w"
    $w.menu add cascade -label GraphOptions -menu $w.menu.options
    menu $w.menu.options
    foreach i {White Black Both PInfo} j {white black both player} {
      $w.menu.options add radiobutton -label GraphOptions$i \
          -variable ::tools::graphs::rating::type -value $j \
          -command "::tools::graphs::rating::Refresh"
    }
    $w.menu.options add separator
    foreach i {1900 1980 1985 1990 1995 2000 2005 2010 2015 } {
      $w.menu.options add radiobutton -label "Since $i" \
          -variable ::tools::graphs::rating::year -value $i \
          -command "::tools::graphs::rating::Refresh"
    }
    
    canvas $w.c -width 500 -height 300
    $w.c create text 25 10 -tag text -justify center -width 1 \
        -font font_Regular -anchor n
    pack $w.c -side top -expand yes -fill both
    bind $w <F1> {helpWindow Graphs Rating}
    bind $w <Configure> {
      .rgraph.c itemconfigure text -width [expr {[winfo width .rgraph.c] - 50} ]
      .rgraph.c coords text [expr {[winfo width .rgraph.c] / 2} ] 10
      ::utils::graph::configure ratings -height [expr {[winfo height .rgraph.c] - 70} ]
      ::utils::graph::configure ratings -width [expr {[winfo width .rgraph.c] - 100} ]
      ::utils::graph::configure ratings -logy 10
      ::utils::graph::redraw ratings
    }
    bind $w.c <Button-1> "::tools::graphs::rating::Refresh"
    bind $w.c <Button-$::MB3> "::tools::graphs::rating::Refresh"
    wm title $w "Scid: [tr ToolsRating]"
    ::tools::graphs::rating::ConfigMenus
  }
  
  $w.c itemconfigure text -width [expr {[winfo width $w.c] - 50} ]
  $w.c coords text [expr {[winfo width $w.c] / 2} ] 10
  set height [expr {[winfo height $w.c] - 70} ]
  set width [expr {[winfo width $w.c] - 100} ]
  ::utils::graph::create ratings -width $width -height $height -xtop 50 -ytop 35 \
      -ytick 50 -xtick 1 -font font_Small -canvas $w.c -textcolor black \
      -hline {{gray80 1 each 25} {steelBlue 1 each 100}} \
      -vline {{gray80 1 each 1} {steelBlue 1 each 5}}
  ::utils::graph::redraw ratings
  busyCursor $w
  update
  
  set title "[tr ToolsRating]: "
  set year $::tools::graphs::rating::year
  if {$type == "player"} {
    append title $player
    catch {::utils::graph::data ratings d -color $whiteColor -points 1 -lines 1 \
          -linewidth $lwidth -radius $psize -outline $whiteColor \
          -coords [sc_name info -ratings:$year $player]}
  }
  if {$type == "white"  ||  $type == "both"} {
    set key ""
    if {$type == "both"} { set key [::utils::string::Surname $white] }
    append title $white
    catch {::utils::graph::data ratings d -color $whiteColor -points 1 -lines 1 \
          -linewidth $lwidth -radius $psize -outline $whiteColor \
          -key $key -coords [sc_name info -ratings:$year $white]}
  }
  if {$type == "both"} { append title " - " }
  if {$type == "black"  ||  $type == "both"} {
    set key ""
    if {$type == "both"} { set key [::utils::string::Surname $black] }
    append title $black
    catch {::utils::graph::data ratings d2 -color $blackColor -points 1 -lines 1 \
          -linewidth $lwidth -radius $psize -outline $blackColor \
          -key $key -coords [sc_name info -ratings:$year $black]}
  }
  set minYear [expr {int([::utils::graph::cget ratings axmin])} ]
  set maxYear [expr {int([::utils::graph::cget ratings axmax])} ]
  ::utils::graph::configure ratings -xtick 1
  if {[expr {$maxYear - $minYear} ] > 10} {::utils::graph::configure ratings -xtick 5}
  ::utils::graph::redraw ratings
  $w.c itemconfigure text -text $title
  unbusyCursor $w
}

proc ::tools::graphs::rating::ConfigMenus {{lang ""}} {
  if {! [winfo exists .rgraph]} { return }
  if {$lang == ""} { set lang $::language }
  set m .rgraph.menu
  foreach idx {0 1} tag {File Options} {
    configMenuText $m $idx Graph$tag $lang
  }
  foreach idx {0 1 3} tag {Color Grey Close} {
    configMenuText $m.file $idx GraphFile$tag $lang
  }
  foreach idx {0 1 2 3} tag {White Black Both PInfo} {
    configMenuText $m.options $idx GraphOptions$tag $lang
  }
}


########################################
# Filter graph window for absolut values

# ::tools::graphs::absfilter::type
#   can be "decade", "year" or "elo", "move"
#
set ::tools::graphs::absfilter::type year

proc tools::graphs::absfilter::Open {} {
  global absfilterGraph
  set w .afgraph
  if {[winfo exists $w]} {
    focus .
    destroy $w
    set absfilterGraph 0
    return
  }
  toplevel $w
  wm title $w $::tr(TitleFilterGraph)
  set absfilterGraph 1
  bind $w <Destroy> {set absfilterGraph 0}
  
  frame $w.b
  pack $w.b -side bottom -fill x
  label $w.b.status -width 1 -font font_Small -anchor w
  frame $w.sep -height 2 -borderwidth 2 -relief sunken -background white
  pack $w.sep -side bottom -fill x -pady 4
  
  canvas $w.c -width 600 -height 400
  $w.c create text 25 5 -tag title -justify center -width 1 \
      -font font_Small -anchor n
  $w.c create text 250 295 -tag type -justify center -width 1 \
      -font font_Small -anchor s
  pack $w.c -side top -expand yes -fill both
  ::utils::graph::create absfilter
  
  bind $w <F1> {helpWindow Graphs Filter}
  bind $w <Configure> {
    .afgraph.c itemconfigure title -width [expr {[winfo width .afgraph.c] - 50}]
    .afgraph.c coords title [expr {[winfo width .afgraph.c] / 2}] 10
    .afgraph.c itemconfigure type -width [expr {[winfo width .afgraph.c] - 50}]
    .afgraph.c coords type [expr {[winfo width .afgraph.c] / 2}] \
        [expr {[winfo height .afgraph.c] - 10}]
    ::utils::graph::configure absfilter -height [expr {[winfo height .afgraph.c] - 80}]
    ::utils::graph::configure absfilter -width [expr {[winfo width .afgraph.c] - 60}]
    ::utils::graph::redraw absfilter
  }
  bind $w.c <1> tools::graphs::absfilter::Switch
  bind $w.c <$::MB3> ::tools::graphs::absfilter::Refresh
  foreach {name text} {decade Decade year Year elo Rating move moves} {
    radiobutton $w.b.$name -padx 4 -pady 3 -text $::tr($text) \
        -variable ::tools::graphs::absfilter::type -value $name \
        -command ::tools::graphs::absfilter::Refresh
    pack $w.b.$name -side left -padx 1 -pady 2
  }
  button $w.b.setup -image icongraphic -command configureFilterGraph
  dialogbutton $w.b.close -text $::tr(Close) -command "destroy $w"
  pack $w.b.decade $w.b.elo -side left -padx 1 -pady 2
  pack $w.b.close $w.b.setup -side right -padx 2 -pady 2
  pack $w.b.status -side left -padx 2 -pady 2 -fill x -expand yes
  
  ::tools::graphs::absfilter::Refresh
}

proc tools::graphs::absfilter::Switch {} {
  variable type
  switch $type {
    "decade" { set type "year" }
    "year" { set type "elo" }
    "elo" { set type "move" }
    "move" { set type "decade" }
  }
  ::tools::graphs::absfilter::Refresh
}

proc ::tools::graphs::absfilter::Refresh {} {
  global FilterMaxMoves FilterMinMoves FilterStepMoves FilterMaxElo FilterMinElo FilterStepElo FilterMaxYear FilterMinYear FilterStepYear FilterGuessELO
  
  set w .afgraph
  if {! [winfo exists $w]} { return }
  
  $w.c itemconfigure title -width [expr {[winfo width $w.c] - 50}]
  $w.c coords title [expr {[winfo width $w.c] / 2}] 10
  $w.c itemconfigure type -width [expr {[winfo width $w.c] - 50}]
  $w.c coords type [expr {[winfo width $w.c] / 2}] \
      [expr {[winfo height $w.c] - 10}]
  set height [expr {[winfo height $w.c] - 80}]
  set width [expr {[winfo width $w.c] - 60}]
  set vlines {}
  if {$::tools::graphs::absfilter::type == "elo"} {
    # Vertical lines for Elo-range graph:
    for {set i 1} {$i <=  $FilterMaxElo- $FilterMinElo} { incr i } {
      lappend vlines [list gray80 1 at $i.5]
    }
  } elseif {$::tools::graphs::absfilter::type == "year"} {
    # Vertical lines for Year-range graph:
    for {set i 1} {$i <= $FilterMaxYear- $FilterMinYear} {incr i } {
      lappend vlines [list gray80 1 at $i.5]
    }
  } elseif {$::tools::graphs::absfilter::type == "decade"} {
    # Vertical lines for Decade graph: most are gray, but those
    # just before 1950s and 2000s are blue to make them stand out.
    for {set i 1} {$i < 10} {incr i} {
      set vlineColor gray80
      if {$i == 4  ||  $i == 9} { set vlineColor steelBlue }
      lappend vlines [list $vlineColor 1 at $i.5]
    }
  }
  
  ::utils::graph::create absfilter -width $width -height $height -xtop 40 -ytop 35 \
      -ytick 1 -xtick 1 -font font_Small -canvas $w.c -textcolor black \
      -vline $vlines -background lightYellow -tickcolor black -xmin 0 -xmax 1
  ::utils::graph::redraw absfilter
  busyCursor .
  update
  
  set count 0
  set dlist {}
  set xlabels {}
  set max 0.0
  
  # Generate plot values and labels:
  if {$::tools::graphs::absfilter::type == "decade"} {
    set ftype date
    set typeName $::tr(Decade)
    set rlist [list 0000 1919 -1919  1920 1929 20-29 \
        1930 1939 30-39  1940 1949 40-49  1950 1959 50-59 \
        1960 1969 60-69  1970 1979 70-79  1980 1989 80-89 \
        1990 1999 90-99  2000 2009 2000+]
  } elseif {$::tools::graphs::absfilter::type == "year"} {
    set ftype date
    set typeName $::tr(Year)
    set endYear $FilterMaxYear
    set startYear $FilterMinYear
    set rlist {}
    for {set i $startYear} {$i <= $endYear} {set i [expr {$i + $FilterStepYear}]} {
      lappend rlist $i
      lappend rlist [expr {$i+$FilterStepYear-1}]
      lappend rlist [expr {$i+$FilterStepYear/2}]
    }
  } elseif {$::tools::graphs::absfilter::type == "elo"} {
    set ftype elo
    set typeName $::tr(Rating)
    #    set rlist [list 0 1999 0-1999  2000 2099 20xx  2100 2199 21xx  \
    2200 2299 22xx  2300 2399 23xx  2400 2499 24xx  \
        2500 2599 25xx  2600 2699 26xx  2700 3999 2700+]
    set endElo $FilterMaxElo
    set startElo $FilterMinElo
    set rlist {}
    for {set i $startElo} {$i <= $endElo} {set i [expr {$i + $FilterStepElo}]} {
      lappend rlist $i
      lappend rlist [expr {$i+$FilterStepElo-1}]
      # shorten gap between 0 and "useful" ratings 1800
      set j $i
      if { $i < 100 } { set i [expr { 1800 - $FilterStepElo}] }
      lappend rlist [concat $j-[expr {$i+$FilterStepElo-1}]]
    }
  } else {
    set ftype move
    set typeName $::tr(moves)
    set startMove $FilterMinMoves
    set endMove  $FilterMaxMoves
    set rlist {}
    for {set i $startMove} {$i <= $endMove} {set i [expr {$i + $FilterStepMoves}]} {
      lappend rlist [expr {2*$i}]
      lappend rlist [expr {2*($i+$FilterStepMoves)-1}]
      if { $i % 5 == 0 } {
        lappend rlist $i
      } else {
        lappend rlist ""
      }
    }
  }
  
  set mean 0
  foreach {start end label} $rlist {
    if {$ftype == "date"} { append end ".12.31" }
    set r [sc_filter freq $ftype $start $end $FilterGuessELO]
    set absfilter [lindex $r 0]
    set all [lindex $r 1]
    set freq $absfilter
    incr count
    set mean [expr { $mean + $absfilter }]
    lappend dlist $count
    lappend dlist $freq
    if {$freq > $max} { set max $freq }
    lappend xlabels [list $count $label]
  }
  
  # Find a suitable spacing of y-axis labels:
  set ytick 1
  if {$max >=  10} { set ytick   1 }
  if {$max >=  25} { set ytick   5 }
  #  if {$max >=  50} { set ytick   5 }
  if {$max >= 100} { set ytick  10 }
  if {$max >= 250} { set ytick  25 }
  if {$max >= 500} { set ytick  50 }
  if {$max >= 1000} { set ytick 100 }
  if {$max >= 2500} { set ytick 250 }
  if {$max >= 5000} { set ytick 500 }
  if {$max >= 10000} { set ytick  1000 }
  if {$max >= 25000} { set ytick  2500 }
  if {$max >= 50000} { set ytick  5000 }
  if {$max >= 100000} { set ytick 10000 }
  if {$max >= 250000} { set ytick 25000 }
  if {$max >= 500000} { set ytick 50000 }
  if {$max >= 1000000} { set ytick 100000 }
  set hlines [list [list gray80 1 each $ytick]]
  # Add mean horizontal line:
  set absfilter [sc_filter count]
  set all [sc_base numGames]
  if { $count != 0 } {set mean [expr { $mean / $count }] }
  if {$all > 0} {
    if {$mean > $max} { set max $mean }
    lappend hlines [list red 1 at $mean]
  }
  
  # Create fake dataset with bounds so we see 0.0::
  #::utils::graph::data decade bounds -points 0 -lines 0 -bars 0 -coords {1 0.0 1 0.0}
  
  ::utils::graph::data absfilter data -color darkBlue -points 1 -lines 1 -bars 0 \
      -linewidth 2 -radius 4 -outline darkBlue -coords $dlist
  ::utils::graph::configure absfilter -xlabels $xlabels -ytick $ytick \
      -hline $hlines -ymin 0 -xmin 0.5 -xmax [expr {$count + 0.5}]
  ::utils::graph::redraw absfilter
  $w.c itemconfigure title -text $::tr(GraphAbsFilterTitle)
  $w.c itemconfigure type -text $typeName
  $w.b.status configure -text "  $::tr(Filter): [filterText]"
  unbusyCursor .
  update
}
### End of file: graph.tcl
### tools/tablebase.tcl:
###   Tablebase display routines for Scid.

set ::tb::isOpen 0
set tbTraining 0
set tbBoard 0
set tbStatus ""

if { [catch {package require http} ] } {
  set ::tb::online_available 0
} else  {
  set ::tb::online_available 1
}

namespace eval ::tb {
  set url "http://k4it.de/egtb/fetch.php"
  # proxy configuration
  set proxyhost "127.0.0.1"
  set proxyport 3128
}

set tbInfo(section) 21
set tbInfo(material) "kpk"
set tbInfo(sections) [list 21 22 31 32 41]
foreach i $tbInfo(sections) { set tbInfo($i) [list] }

set tbInfo(21) [list kqk krk kbk knk kpk]

set tbInfo(22) [list \
    kqkq kqkr kqkb kqkn kqkp \
    -    krkr krkb krkn krkp \
    -    -    kbkb kbkn kbkp \
    -    -    -    knkn knkp \
    -    -    -    -    kpkp ]

set tbInfo(31) [list \
    kqqk kqrk kqbk kqnk kqpk \
    -    krrk krbk krnk krpk \
    -    -    kbbk kbnk kbpk \
    -    -    -    knnk knpk \
    -    -    -    -    kppk ]

set tbInfo(32) [list \
    kqqkq kqqkr kqqkb kqqkn kqqkp \
    kqrkq kqrkr kqrkb kqrkn kqrkp \
    kqbkq kqbkr kqbkb kqbkn kqbkp \
    kqnkq kqnkr kqnkb kqnkn kqnkp \
    kqpkq kqpkr kqpkb kqpkn kqpkp \
    -     -     -     -     -     \
    krrkq krrkr krrkb krrkn krrkp \
    krbkq krbkr krbkb krbkn krbkp \
    krnkq krnkr krnkb krnkn krnkp \
    krpkq krpkr krpkb krpkn krpkp \
    -     -     -     -     -     \
    kbbkq kbbkr kbbkb kbbkn kbbkp \
    kbnkq kbnkr kbnkb kbnkn kbnkp \
    kbpkq kbpkr kbpkb kbpkn kbpkp \
    -     -     -     -     -     \
    knnkq knnkr knnkb knnkn knnkp \
    knpkq knpkr knpkb knpkn knpkp \
    kppkq kppkr kppkb kppkn kppkp ]

set tbInfo(41) [list \
    kqqqk kqqrk kqqbk kqqnk kqqpk \
    -     kqrrk kqrbk kqrnk kqrpk \
    -     -     kqbbk kqbnk kqbpk \
    -     -     -     kqnnk kqnpk \
    -     -     -     -     kqppk \
    -     krrrk krrbk krrnk krrpk \
    -     -     krbbk krbnk krbpk \
    -     -     -     krnnk krnpk \
    -     -     -     -     krppk \
    -     -     kbbbk kbbnk kbbpk \
    -     -     -     kbnnk kbnpk \
    -     -     -     -     kbppk \
    -     -     -     knnnk knnpk \
    -     -     -     -     knppk \
    -     -     -     -     kpppk ]

set tbInfo(42) [list \
    kqqqkq kqqqkr kqqqkb kqqqkn kqqqkp \
    kqqrkq kqqrkr kqqrkb kqqrkn kqqrkp \
    kqqbkq kqqbkr kqqbkb kqqbkn kqqbkp \
    kqqnkq kqqnkr kqqnkb kqqnkn kqqnkp \
    kqqpkq kqqpkr kqqpkb kqqpkn kqqpkp \
    kqrrkq kqrrkr kqrrkb kqrrkn kqrrkp \
    kqrbkq kqrbkr kqrbkb kqrbkn kqrbkp \
    kqrnkq kqrnkr kqrnkb kqrnkn kqrnkp \
    kqrpkq kqrpkr kqrpkb kqrpkn kqrpkp \
    kqbbkq kqbbkr kqbbkb kqbbkn kqbbkp \
    kqbnkq kqbnkr kqbnkb kqbnkn kqbnkp \
    kqbpkq kqbpkr kqbpkb kqbpkn kqbpkp \
    kqnnkq kqnnkr kqnnkb kqnnkn kqnnkp \
    kqnpkq kqnpkr kqnpkb kqnpkn kqnpkp \
    kqppkq kqppkr kqppkb kqppkn kqppkp \
    krrrkq krrrkr krrrkb krrrkn krrrkp \
    krrbkq krrbkr krrbkb krrbkn krrbkp \
    krrnkq krrnkr krrnkb krrnkn krrnkp \
    krrpkq krrpkr krrpkb krrpkn krrpkp \
    krbbkq krbbkr krbbkb krbbkn krbbkp \
    krbnkq krbnkr krbnkb krbnkn krbnkp \
    krbpkq krbpkr krbpkb krbpkn krbpkp \
    krnnkq krnnkr krnnkb krnnkn krnnkp \
    krnpkq krnpkr krnpkb krnpkn krnpkp \
    krppkq krppkr krppkb krppkn krppkp \
    kbbbkq kbbbkr kbbbkb kbbbkn kbbbkp \
    kbbnkq kbbnkr kbbnkb kbbnkn kbbnkp \
    kbbpkq kbbpkr kbbpkb kbbpkn kbbpkp \
    kbnnkq kbnnkr kbnnkb kbnnkn kbnnkp \
    kbnpkq kbnpkr kbnpkb kbnpkn kbnpkp \
    kbppkq kbppkr kbppkb kbppkn kbppkp \
    knnnkq knnnkr knnnkb knnnkn knnnkp \
    knnpkq knnpkr knnpkb knnpkn knnpkp \
    knppkq knppkr knppkb knppkn knppkp \
    kpppkq kpppkr kpppkb kpppkn kpppkp ]

# ::tb::isopen
#   Returns boolean value of whether the tablebase window is open.
#
proc ::tb::isopen {} {
  return [winfo exists .tbWin]
}

# ::tb::Open
#   Open the tablebase window.
#
proc ::tb::Open {} {
  global tbInfo
  set w .tbWin
  if {[winfo exists $w]} { return }
  ::createToplevel $w
  setWinLocation $w
  ::setTitle $w "Scid: [tr WindowsTB]"
  pack [ttk::frame $w.b] -side bottom -fill x
  pack [ttk::frame $w.info] -side left -fill y
  addVerticalRule $w
  pack [ttk::frame $w.pos] -side right -fill both -expand yes
  
  # Left frame: tablebase browser and summary info
  
  set f $w.info
  pack [ttk::frame $f.sec] -side top -fill x
  foreach i $tbInfo(sections) {
    set name "[string index $i 0]-[string index $i 1]"
    ttk::radiobutton $f.sec.b$i -text " $name " -variable tbInfo(section) -value $i -command "::tb::section $i" ;# -indicatoron 0
    pack $f.sec.b$i -side left -pady 1 -padx 1
  }
  autoscrollframe $f.list text $f.list.text \
      -width 35 -height 7 -font font_Fixed -wrap none \
      -foreground black -background white -cursor top_left_arrow
  pack $f.list -side top
  pack [ttk::frame $f.separator -height 2]
  # addHorizontalRule $f
  
  autoscrollframe $f.data text $f.data.text \
      -width 35 -height 0 -font font_Fixed -wrap none \
      -foreground black -background white -cursor top_left_arrow
  pack $f.data -side top -fill y -expand yes
  
  $f.list.text tag configure avail -foreground blue
  $f.list.text tag configure unavail -foreground gray40
  $f.data.text tag configure fen -foreground blue
  
  # Right frame: tablebase results for current position
  
  set f $w.pos
  autoscrollframe $f text $f.text -width 30 -height 20 -font font_Small \
      -wrap word -foreground black -background white -setgrid 1
  $f.text tag configure indent -lmargin2 [font measure font_Fixed  "        "]
  
  ::board::new $f.board 25
  $f.board configure -relief solid -borderwidth 1
  for {set i 0} {$i < 64} {incr i} {
    ::board::bind $f.board $i <Button-1> [list ::tb::resultsBoard $i]
  }
  if {$::tbBoard} {
    grid $f.board -row 0 -column 2 -rowspan 2
  }
  
  ttk::checkbutton $w.b.training -text $::tr(Training) -variable tbTraining -command ::tb::training ;# -padx 4 -pady 5
  # button $w.b.online -text Online -command ::tb::updateOnline -relief raised -padx 4 -pady 5
  if { !$::tb::online_available } {
    catch { $w.b.online configure -state disabled }
  }
  ttk::button $w.b.random -text "Random" -command ::tb::random
  ttk::button $w.b.showboard -image tb_coords -command ::tb::showBoard
  dialogbutton $w.b.help -text $::tr(Help) -command { helpWindow TB }
  dialogbutton $w.b.close -text $::tr(Close) -command "destroy $w"
  ttk::label $w.b.status -width 1 -textvar tbStatus -font font_Small -relief flat -anchor w ;# -height 0
  packbuttons right $w.b.close $w.b.help
  pack $w.b.training -side left -padx 2 -pady 2
  catch { pack $w.b.online -side left -padx 2 -pady 2 }
  pack $w.b.random $w.b.showboard -side left -padx 2 -pady 2
  pack $w.b.status -side left -fill x -expand yes
  bind $w <Destroy> { set ::tb::isOpen 0; set tbTraining 0 }
  bind $w <F1> { helpWindow TB }
  bind $w <Configure> "recordWinSize $w"
  wm minsize $w 15 20
  ::createToplevelFinalize $w
  set ::tbTraining 0
  ::tb::section
  ::tb::summary
  ::tb::results
}

# ::tb::showBoard
#   Toggles the results board.
#
proc ::tb::showBoard {} {
  global tbBoard
  set f .tbWin.pos
  if {$tbBoard} {
    set tbBoard 0
    grid forget $f.board
  } else {
    set tbBoard 1
    grid $f.board -row 0 -column 2 -rowspan 2
  }
}

# ::tb::resultsBoard
#   Updates theresultsBoard board for a particular square.
#
proc ::tb::resultsBoard {sq} {
  set f .tbWin.pos
  set board [sc_pos board]
  # If selected square is empty, take no action:
  if {[string index $board $sq] == "."} { return }
  # Clear any previous results:
  ::board::clearText $f.board
  # Highlight the selected square:
  ::board::colorSquare $f.board $sq $::highcolor
  # Retrieve tablebase scores:
  busyCursor .
  set scores [sc_pos probe board $sq]
  set text(X) X; set color(X) red; set shadow(X) white
  set text(=) =; set color(=) blue; set shadow(=) white
  set text(?) "?"; set color(?) red; set shadow(?) white
  set text(+) "#"; set text(-) "#"
  if {[sc_pos side] == "white"} {
    set color(+) white; set color(-) black
    set shadow(+) black; set shadow(-) white
  } else {
    set color(+) black; set color(-) white
    set shadow(+) white; set shadow(-) black
  }
  for {set i 0} {$i < 64} {incr i} {
    # Skip squares that have a piece.
    if {[string index $board $i] != "."} { continue }
    # Draw the score on this square:
    set score [string index $scores $i]
    catch {::board::drawText $f.board $i $text($score) $color($score) 0 $shadow($score)}
  }
  unbusyCursor .
}

# ::tb::name
#   Converts a material string like "kqkr" or "KQKR" to "KQ-KR".
#
proc ::tb::name {s} {
  set s [string toupper $s]
  set idx [string last "K" $s]
  set new [string range $s 0 [expr $idx - 1]]
  append new "-"
  append new [string range $s $idx end]
  return $new
}

# ::tb::section
#   Updates the tablebase list for the specified section.
#
proc ::tb::section {{sec 0}} {
  global tbInfo
  set w .tbWin
  if {! [winfo exists $w]} { return }
  if {$sec == 0} { set sec $tbInfo(section)}
  set tbInfo(section) $sec
  if {! [info exists tbInfo($sec)]} { return }
  set t $w.info.list.text
  $t configure -state normal
  $t delete 1.0 end
  $t configure -height 10
  set count 0
  set linecount 1
  foreach tb $tbInfo($sec) {
    if {$tb == "-"} {
      $t insert end [format "%-7s" ""]
    } else {
      set avail [sc_info tb available $tb]
      if {$avail} {
        set taglist [list avail $tb]
      } else {
        set taglist [list unavail $tb]
      }
      $t insert end [format "%-6s" [::tb::name $tb]] $taglist
      $t insert end " "
      # Bind tags for enter/leave/buttonpress on this tb:
      $t tag bind $tb <Any-Enter> \
          [list $t tag configure $tb -foreground yellow -background darkBlue]
      $t tag bind $tb <Any-Leave> \
          [list $t tag configure $tb -foreground {} -background {}]
      $t tag bind $tb <ButtonPress-1> [list ::tb::summary $tb]
    }
    incr count
    if {$count == 5} { set count 0; incr linecount; $t insert end "\n" }
  }
  if {$linecount > 10} { set linecount 10 }
  $t configure -height $linecount
  $t configure -state disabled
}

# ::tb::summary
#   Shows the tablebase information for the specified tablebase.
#
proc ::tb::summary {{material ""}} {
  global tbInfo tbs
  set w .tbWin
  if {! [winfo exists $w]} { return }
  
  if {$material == ""} { set material $tbInfo(material) }
  set tbInfo(material) $material
  set t $w.info.data.text
  $t configure -state normal
  $t delete 1.0 end
  $t insert end [format "%-6s" [::tb::name $material]]
  if {! [info exists tbs($material)]} {
    $t insert end "\nNo summary for this tablebase."
    $t configure -state disabled
    return
  }
  set data $tbs($material)
  
  $t insert end [format "    %5u games per million\n\n" [lindex $data 0]]
  
  # Longest-mate and result-percentage stats:
  
  $t insert end "Side    Longest    %     %     %\n"
  $t insert end "to move   mate    Win  Draw  Loss\n"
  $t insert end "---------------------------------\n"
  
  # Stats for White:
  $t insert end "White     "
  set len [lindex $data 1]
  set fen [lindex $data 2]
  if {$len == "0"} { set len "-" }
  if {[string length $fen] > 2} {
    append fen " w"
    $t insert end [format "%3s" $len] [list fen $fen]
    $t tag bind $fen <Any-Enter> \
        [list $t tag configure $fen -foreground yellow -background darkBlue]
    $t tag bind $fen <Any-Leave> \
        [list $t tag configure $fen -foreground {} -background {}]
    $t tag bind $fen <ButtonPress-1> [list ::tb::setFEN $fen]
  } else {
    $t insert end [format "%3s" $len]
  }
  $t insert end "  "
  $t insert end [format " %5s" [lindex $data 5]]
  $t insert end [format " %5s" [lindex $data 6]]
  $t insert end [format " %5s" [lindex $data 7]]
  $t insert end "\n"
  
  # Stats for Black:
  $t insert end "Black     "
  set len [lindex $data 3]
  set fen [lindex $data 4]
  if {$len == "0"} { set len "-" }
  if {[string length $fen] > 2} {
    append fen " b"
    $t insert end [format "%3s" $len] [list fen $fen]
    $t tag bind $fen <Any-Enter> \
        [list $t tag configure $fen -foreground yellow -background darkBlue]
    $t tag bind $fen <Any-Leave> \
        [list $t tag configure $fen -foreground {} -background {}]
    $t tag bind $fen <ButtonPress-1> [list ::tb::setFEN $fen]
  } else {
    $t insert end [format "%3s" $len]
  }
  $t insert end "  "
  $t insert end [format " %5s" [lindex $data 8]]
  $t insert end [format " %5s" [lindex $data 9]]
  $t insert end [format " %5s" [lindex $data 10]]
  $t insert end "\n\n"
  
  set mzugs [lindex $data 11]
  $t insert end "Mutual zugzwangs: "
  if {$mzugs >= 0} { $t insert end "$mzugs\n" } else { $t insert end "?\n" }
  if {$mzugs <= 0} {
    $t configure -state disabled
    return
  }
  
  # Extra Zugzwang info:
  set nBtmLoses [lindex $data 12]
  set nWtmLoses [lindex $data 14]
  set nBothLose [lindex $data 16]
  set zugnames [list " White draws, Black loses: " \
      " Black draws, White loses: " \
      " Whoever moves loses:      "]
  if {$nBtmLoses > 0} {
    $t insert end [lindex $zugnames 0]
    $t insert end [format "%5d\n" $nBtmLoses]
  }
  if {$nWtmLoses > 0} {
    $t insert end [lindex $zugnames 1]
    $t insert end [format "%5d\n" $nWtmLoses]
  }
  if {$nBothLose > 0} {
    $t insert end [lindex $zugnames 2]
    $t insert end [format "%5d\n" $nBothLose]
  }
  
  # Selected zugzwang positions:
  set btmFens [lindex $data 13]
  set wtmFens [lindex $data 15]
  set bothFens [lindex $data 17]
  set nBtmFens [llength $btmFens]
  set nWtmFens [llength $wtmFens]
  set nBothFens [llength $bothFens]
  set nTotalFens [expr $nBtmFens + $nWtmFens + $nBothFens]
  if {$nTotalFens == 0} {
    $t configure -state disabled
    return
  }
  
  # Print the lists of selected zugzwang positions:
  $t insert end "\nSelected zugzwang positions:"
  foreach n [list $nBtmFens $nWtmFens $nBothFens] \
      fenlist [list $btmFens $wtmFens $bothFens] \
      name $zugnames tomove [list b w w] {
        if {$n == 0} { continue }
        $t insert end "\n [string trim $name]"
        set count 0
        for {set count 0} {$count < $n} {incr count} {
          set fen [lindex $fenlist $count]
          if {[expr $count % 10] == 0} {
            $t insert end "\n  "
          }
          $t insert end " "
          append fen " $tomove"
          $t insert end [format "%2d" [expr $count + 1]] [list fen $fen]
          $t tag bind $fen <Any-Enter> \
          [list $t tag configure $fen -foreground yellow -background darkBlue]
          $t tag bind $fen <Any-Leave> \
          [list $t tag configure $fen -foreground {} -background {}]
          $t tag bind $fen <ButtonPress-1> [list ::tb::setFEN $fen]
        }
      }
  
  $t configure -state disabled
}

# ::tb::results
#   Called when the main window board changes, to display tablebase
#   results for all moves from the current position.
#
proc ::tb::results {} {
  global tbTraining
  set w .tbWin
  if {! [winfo exists $w]} { return }
  
  # Reset results board:
  ::board::clearText $w.pos.board
  ::board::update $w.pos.board [sc_pos board]
  
  # Update results panel:
  set t $w.pos.text
  $t delete 1.0 end
  if {$tbTraining} {
    $t insert end "\n (Training mode; results are hidden)"
  } else {
    $t insert end [sc_pos probe report] indent
  }
}

################################################################################
#
################################################################################
proc ::tb::updateOnline {} {
  global tbTraining
  set w .tbWin
  if {! [winfo exists $w]} { return }
  
  # proxy configuration - needs UI
  # ::http::config -proxyhost $::tb::proxyhost -proxyport $::tb::proxyport
  
  set t $w.pos.text
  if { ! $tbTraining } {
    set query [ ::http::formatQuery hook null action egtb fen [sc_pos fen] ]
    ::http::geturl $::tb::url -timeout 5000 -query $query -command { ::tb::httpCallback }
  }
}
################################################################################
#
################################################################################
proc ::tb::httpCallback { token } {
  
  upvar #0 $token state
  
  set w .tbWin
  if {! [winfo exists $w]} { return }
  set t $w.pos.text
  
  # delete previous online output
  foreach tag {tagonline} {
    while {1} {
      set del [$t tag nextrange $tag 1.0]
      if {$del == ""} {break}
      catch {$t delete [lindex $del 0] [lindex $del 1]}
    }
  }
  
  if {$state(status) != "ok"} {
    $t insert end $state(status) tagonline
    return
  }
  
  set b $state(body)
  set result ""
  
  if {[sc_pos side] == "black"} {
    set tmp ""
    set found 0
    foreach line [split $b "\n" ] {
      if {$line == "NEXTCOLOR"} {
        set found 1
        continue
      }
      if {$found} {
        append tmp "$line\n"
      }
    }
    set b $tmp
  }
  
  foreach line [split $b "\n" ] {
    if {$line == "NEXTCOLOR"} {
      break
    }
    if { $line == "No information available" } {
      append result "$line\n"
    }
    if {[string match "hook|null|value|*" $line]} {
      append result "Online : [string range $line 16 end ]\n"
      continue
    }
    if {[scan $line "%d-%d:%s" sq1 sq2 tmp] == 3} {
      set p1 [ string toupper [string index [sc_pos board] $sq1 ] ]
      set p2 [string index [sc_pos board] $sq2 ]
      set take ""
      if {$p2 != "."} {
        set take "x"
      }
      append result "$p1[::board::san $sq1]$take[::board::san $sq2] [string range $line [string first : $line] end]\n"
    }
  }
  ::http::cleanup state
  $t insert end $result tagonline
}
################################################################################
#
################################################################################

# ::tb::random
#   Sets up a random position with the material of the tablebase
#   currently displayed in the info frame.
#
proc ::tb::random {} {
  global tbInfo
  if {[catch {sc_game startBoard "random:$tbInfo(material)"} err]} {
    tk_messageBox -title "Scid" -icon warning -type ok -message $err
    return
  }
  # The material is valid, so clear the game and regenerate a
  # random starting position:
  sc_game new
  sc_game startBoard "random:$tbInfo(material)"
  updateBoard -pgn
}

# ::tb::setFEN
#   Called when an item in the Tablebase info browser with an
#   associated FEN position is selected with the left mouse button,
#   causing the position to be set in the main window.
#
proc ::tb::setFEN {fen} {
  if {[catch {sc_game startBoard $fen} err]} {
    tk_messageBox -title "Scid" -icon info -type ok -message $err
    return
  }
  # The FEN is valid, so clear the game and reset the FEN:
  sc_game new
  sc_game startBoard $fen
  updateBoard -pgn
}

# ::tb::training
#   Toggle tablebase training mode.
#
proc ::tb::training {} {
  global tbTraining tbStatus gameInfo
  set w .tbWin
  set tbStatus ""
  if {$tbTraining} {
    set gameInfo(showTB_old) $gameInfo(showTB)
    set gameInfo(showTB) 0
  } else {
    if {$gameInfo(showTB) == 0} { set gameInfo(showTB) $gameInfo(showTB_old) }
  }
  updateBoard -pgn
  ::tb::results
}

# ::tb::move
#   Finds and executes the best move in the current position,
#   if one can be determined from the tablebases.
#
proc ::tb::move {} {
  global tbTraining tbStatus
  if {! $tbTraining} { return }
  set moves [split [sc_pos probe optimal]]
  set len [llength $moves]
  if {$len == 0} {
    set tbStatus "No optimal move was found."
    return
  }
  set i [expr int(rand() * $len)]
  set move [lindex $moves $i]
  if {[catch {sc_move addSan $move}]} {
    set tbStatus "Error playing $move."
  } else {
    set tbStatus "Played $move."
  }
  updateBoard -pgn
}


# tbs:
#   Summary data about tablebases.
#   Each list has the following elements:
#     (0) Frequency (per million games),
#     (1) Longest-wtm-mate length, (2) Longest-wtm-mate FEN,
#     (3) Longest-btm-mate length, (4) Longest-btm-mate FEN,
#     (5) wtm-win-%, (6) wtm-draw-%, (7) wtm-loss-%,
#     (8) btm-win-%, (9) btm-draw-%, (10) btm-loss-%,
#     (11) number of mutual zugzwangs (-1 if unknown).
#  The longest-mate FENs have a board field only; no side to move, etc.
#
#   There are three types of mutual zugzwang:
#     wtm draws / btm loses, wtm loses / btm draws, wtm loses / btm loses.
#   The first two are "half-point" zugzwangs, the last is "full-point".
#
#   If the number of mutual zugzwangs is known and nonzero,
#   six more items should follow in the list:
#     (12) number of wtm-draws-btm-loses zugzwangs,
#     (13) list of selected wtm-draws-btm-loses zugzwang FENs,
#     (14) number of wtm-loses-btm-draws zugzwangs,
#     (15) list of selected wtm-loses-btm-draws zugzwang FENs,
#     (16) number of whoever-moves-loses (full-point) zugzwangs,
#     (17) list of selected whoever-moves-loses zugzwang FENs.
#   These zugzwang FENs board field only; no side to move, etc.

set tbs(kqk) {
  257 10 {7K/6Q1/8/8/2k5/8/8/8} 0 -
  100.0 0.0 0.0 0.0 10.3 89.7
  0
}

set tbs(krk) {
  542 16 {8/8/2R5/3k4/8/8/8/1K6} 0 -
  100.0 0.0 0.0 0.0 9.9 90.1
  0
}

set tbs(kbk) {
  194 0 - 0 -
  0.0 100.0 0.0 0.0 100.0 0.0
  0
}

set tbs(knk) {
  224 0 - 0 -
  0.0 100.0 0.0 0.0 100.0 0.0
  0
}

set tbs(kpk) {
  2352 28 {8/8/8/1k6/8/8/K5P1/8} 0 -
  76.5 23.5 0.0 0.0 41.9 58.1
  80 80 {} 0 {} 0 {}
}

set tbs(kqkq) {
  222 13 {8/8/8/8/8/8/8/qk1K2Q1} 13 {8/8/8/8/8/8/8/QK1k2q1}
  41.7 57.8 0.5 41.7 57.8 0.5
  0
}

set tbs(kqkr) {
  400 35 {K3r3/8/5k2/Q7/8/8/8/8} 19 {k7/5r2/K7/8/8/8/1Q6/8}
  99.0 0.8 0.2 28.7 5.8 65.5
  0
}

set tbs(kqkb) {
  25 17 {K7/8/8/3k4/4b3/8/8/7Q} 0 -
  99.7 0.3 0.0 0.0 23.1 76.9
  0
}

set tbs(kqkn) {
  74 21 {8/KQ6/2n5/2k5/8/8/8/8} 0 -
  99.3 0.7 0.0 0.0 19.5 80.5
  0
}

set tbs(kqkp) {
  937 28 {3KQ3/8/8/8/8/8/3kp3/8} 29 {8/1p4k1/7Q/8/7K/8/8/8}
  99.4 0.6 0.0 7.7 12.1 80.2
  0
}

set tbs(krkr) {
  423 19 {8/3R4/8/8/5k2/6r1/7K/8} 19 {1k6/2R5/3K4/8/8/8/6r1/8}
  29.1 70.2 0.7 29.1 70.2 0.7
  0
}

set tbs(krkb) {
  322 29 {k7/8/b7/8/K7/R7/8/8} 0 -
  35.2 64.8 0.0 0.0 96.8 3.2
  5  5 {
    4R3/8/8/8/8/b1K5/8/3k4 8/5R2/7b/8/8/2K5/8/1k6 8/8/1b6/5R2/8/3K4/8/2k5
    8/8/8/8/8/1k6/b7/R1K5 8/8/8/8/8/2K5/4k3/R2b4
  } 0 {} 0 {}
}

set tbs(krkn) {
  397 40 {8/8/6R1/2K5/n7/8/8/3k4} 1 {8/8/8/8/1n6/k7/8/KR6}
  48.4 51.6 0.0 0.0 89.0 11.0
  18 18 {
    8/2n5/8/4R3/3K1k2/8/8/8 8/8/5k2/4R3/3K4/2n5/8/8 8/8/8/1k6/2R5/3K4/4n3/8
    8/8/8/2n5/3K4/4R3/5k2/8 8/8/8/3k4/2R5/3K4/n7/8 8/8/8/3k4/4R3/3K4/6n1/8
    8/8/8/4k3/3R4/2K5/1n6/8 8/8/8/5k2/4R3/3K4/2n5/8 8/8/8/6n1/3K4/4R3/3k4/8
    8/8/8/8/2R5/1k1K4/4n3/8 8/8/8/8/3K1k2/4R3/8/2n5 8/8/8/8/3R4/2K1k3/1n6/8
    8/8/8/8/4R3/3K1k2/2n5/8 8/8/8/8/6n1/3K4/4R3/3k4 8/8/8/8/8/2KR4/8/2k2n2
    8/8/8/8/8/2RK4/8/n2k4 8/8/8/8/8/3KR3/8/3k2n1 8/8/8/n7/3K4/2R5/3k4/8
  } 0 {} 0 {}
}

set tbs(krkp) {
  2146 26 {2K5/8/7p/6k1/8/8/R7/8} 43 {8/8/8/8/5R2/2pk4/5K2/8}
  91.4 8.4 0.2 16.4 17.5 66.1
  12 12 {
    8/8/8/8/8/1k6/p7/R1K5   8/8/8/8/8/2k5/1p6/1R1K4 8/8/8/8/8/4k3/5p2/3K1R2
    8/3K4/8/3k4/3p4/8/8/3R4 8/1K6/8/1k6/1p6/8/8/1R6 8/2K5/8/2k5/2p5/8/8/2R5
    8/2K5/8/2k5/3p4/8/8/3R4 8/3K4/8/3k4/4p3/8/8/4R3 8/1K6/8/1k6/2p5/8/8/2R5
    8/2K5/8/2k5/1p6/8/8/1R6 8/3K4/8/3k4/2p5/8/8/2R5 8/K7/8/k7/1p6/8/8/1R6
  } 0 {} 0 {}
}

set tbs(kbkb) {
  49 1 {8/8/8/8/8/K7/7B/kb6} 1 {6BK/8/6k1/8/8/b7/8/8}
  0.0 100.0 0.0 0.0 100.0 0.0
  0
}

set tbs(kbkn) {
  87 1 {knB5/8/1K6/8/8/8/8/8} 1 {K1k1n3/B7/8/8/8/8/8/8}
  0.0 100.0 0.0 0.0 100.0 0.0
  0
}

set tbs(kbkp) {
  387 1 {7k/7p/5K2/8/8/8/1B6/8} 29 {8/1p4k1/7B/8/8/7K/8/8}
  0.0 94.8 5.2 23.6 76.4 0.0
  1 0 {} 1 {8/8/8/8/8/8/1pK5/kB6} 0 {}
}

set tbs(knkn) {
  68 1 {k7/n1K5/8/3N4/8/8/8/8} 1 {8/8/8/8/1n6/1k6/8/KN6}
  0.0 100.0 0.0 0.0 100.0 0.0
  0
}

set tbs(knkp) {
  497 7 {8/8/8/8/pN6/8/2K5/k7} 29 {8/1p6/6kN/8/8/7K/8/8}
  0.0 87.1 12.9 32.6 67.4 0.0
  29 22 {} 7 {} 0 {}
}

set tbs(kpkp) {
  2810 33 {2K5/k7/7p/8/8/8/6P1/8} 33 {8/2p1K3/8/8/8/4P3/8/3k4}
  43.4 33.3 23.2 43.4 33.3 23.2
  121 106 {} 106 {} 15 {
    8/8/8/1Kp5/2Pk4/8/8/8 8/8/8/2Kp4/3Pk3/8/8/8 8/8/8/8/1Kp5/2Pk4/8/8
    8/8/8/8/1pK5/kP6/8/8  8/8/8/8/2Kp4/3Pk3/8/8 8/8/8/8/2pK4/1kP5/8/8
    8/8/8/8/3Kp3/4Pk2/8/8 8/8/8/8/8/1Kp5/2Pk4/8 8/8/8/8/8/1pK5/kP6/8
    8/8/8/8/8/2Kp4/3Pk3/8 8/8/8/8/8/2pK4/1kP5/8 8/8/8/8/8/3Kp3/4Pk2/8
    8/8/8/8/8/Kp6/1Pk5/8  8/8/8/8/Kp6/1Pk5/8/8  8/8/8/Kp6/1Pk5/8/8/8
  }
}

set tbs(kqqk) {
  13 4 {8/8/8/4k3/8/8/1K6/QQ6} 0 -
  100.0 0.0 0.0 0.0 2.1 97.9
  0
}

set tbs(kqrk) {
  18 6 {7Q/8/8/8/4k3/8/8/1R5K} 0 -
  100.0 0.0 0.0 0.0 1.1 98.9
  0
}

set tbs(kqbk) {
  36 8 {8/Q4B2/5k2/8/8/8/8/K7} 0 -
  100.0 0.0 0.0 0.0 9.4 90.6
  0
}

set tbs(kqnk) {
  41 9 {K7/N7/8/8/8/5k2/Q7/8} 0 -
  100.0 0.0 0.0 0.0 9.7 90.3
  0
}

set tbs(kqpk) {
  156 10 {8/8/8/2k5/8/8/4P1Q1/7K} 0 -
  100.0 0.0 0.0 0.0 2.8 97.2
  0
}

set tbs(krrk) {
  8 7 {4R3/3k4/8/8/5R1K/8/8/8} 0 -
  100.0 0.0 0.0 0.0 0.3 99.7
  0
}

set tbs(krbk) {
  46 16 {8/8/3R4/4k3/4B3/8/8/K7} 0 -
  100.0 0.0 0.0 0.0 8.8 91.2
  0
}

set tbs(krnk) {
  15 16 {K7/2R5/3k4/3N4/8/8/8/8} 0 -
  100.0 0.0 0.0 0.0 9.2 90.8
  0
}

set tbs(krpk) {
  333 16 {K7/8/3R4/4kP2/8/8/8/8} 0 -
  100.0 0.0 0.0 0.0 2.5 97.5
  0
}

set tbs(kbbk) {
  31 19 {K7/8/3B4/3k4/8/8/4B3/8} 0 -
  49.3 50.7 0.0 0.0 58.8 41.2
  0
}

set tbs(kbnk) {
  206 33 {7K/4B3/4k3/8/8/8/8/2N5} 0 -
  99.5 0.5 0.0 0.0 18.1 81.9
  0
}

set tbs(kbpk) {
  453 31 {8/3P4/KBk5/8/8/8/8/8} 0 -
  96.0 4.0 0.0 0.0 16.8 83.2
  6 6 {
    1B1K4/8/8/k7/8/P7/8/8 1B6/3K4/8/1k6/8/P7/8/8 1BK5/8/1k6/8/8/P7/8/8
    8/B1k5/K7/P7/8/8/8/8 kB6/8/1PK5/8/8/8/8/8 kB6/8/KP6/8/8/8/8/8
  } 0 {} 0 {}
}

set tbs(knnk) {
  20 1 {k7/3N4/K1N5/8/8/8/8/8} 0 -
  0.0 100.0 0.0 0.0 100.0 0.0
  0
}

set tbs(knpk) {
  426 27 {1N6/8/8/8/8/2k3P1/8/2K5} 0 -
  96.3 3.7 0.0 0.0 18.5 81.5
  75 75 {} 0 {} 0 {}
}

set tbs(kppk) {
  563 32 {8/8/8/8/2k5/6P1/K5P1/8} 0 -
  98.4 1.6 0.0 0.0 7.9 92.1
  43 43 {} 0 {} 0 {}
}

set tbs(kqqkq) {
  51 30 {2K5/8/1k6/5q2/8/8/6Q1/7Q} 13 {7Q/7K/8/6Qk/8/8/7q/8}
  99.1 0.8 0.1 0.6 32.8 66.6
  0
}

set tbs(kqqkr) {
  0 35 {Kr6/8/8/8/8/3Q4/4Q3/2k5} 19 {6Q1/8/8/8/8/7K/2r4Q/7k}
  100.0 0.0 0.0 0.1 0.2 99.7
  0
}

set tbs(kqqkb) {
  0 15 {8/8/7Q/5k1K/7Q/5b2/8/8} 0 -
  100.0 0.0 0.0 0.0 0.1 99.9
  0
}

set tbs(kqqkn) {
  0 19 {5K2/3n4/4k3/2Q5/8/8/8/1Q6} 0 -
  100.0 0.0 0.0 0.0 0.1 99.9
  0
}

set tbs(kqqkp) {
  7 22 {8/8/8/3Q4/7Q/2k5/1p6/K7} 13 ?
  100.0 0.0 0.0 0.0 0.7 99.3
  0
}

set tbs(kqrkq) {
  36 67 {8/8/8/8/q7/6k1/8/KR5Q} 38 {8/8/q7/8/8/6R1/2K4Q/k7}
  97.0 2.8 0.2 24.4 21.2 54.4
  1 1 {8/8/8/8/1R6/k4q2/8/1K2Q3} 0 {} 0 {}
}

set tbs(kqrkr) {
  132 34 {1K2Q3/8/3k4/1r2R3/8/8/8/8} 20 {6rQ/8/8/8/8/7K/5R2/6k1}
  99.8 0.1 0.0 0.3 17.1 82.1
  0
}

set tbs(kqrkb) {
  12 29 {2k5/5b2/8/8/2K5/8/Q7/6R1} 0 -
  100.0 0.0 0.0 0.0 11.6 88.4
  0
}

set tbs(kqrkn) {
  2 40 ? 1 {8/8/8/8/1n6/k7/8/KR5Q}
  99.9 0.1 0.0 0.0 7.7 92.3
  0
}

set tbs(kqrkp) {
  25 40 ? 43 ?
  100.0 0.0 0.0 0.3 1.4 98.3
  0
}

set tbs(kqbkq) {
  28 33 {5q2/8/8/5B2/k1K4Q/8/8/8} 24 {6KQ/8/1B6/6k1/8/6q1/8/8}
  55.7 44.0 0.3 30.5 62.3 7.2
  25 25 {} 0 {} 0 {}
}

set tbs(kqbkr) {
  21 40 ? 30 ?
  99.3 0.6 0.0 0.7 27.5 71.8
  0
}

set tbs(kqbkb) {
  2 17 ? 2 ?
  99.7 0.3 0.0 0.0 19.8 80.2
  0
}

set tbs(kqbkn) {
  2 21 ? 1 ?
  99.5 0.5 0.0 0.0 16.7 83.3
  0
}

set tbs(kqbkp) {
  25 32 ? 24 ?
  100.0 0.0 0.0 1.0 14.1 84.9
  0
}

set tbs(kqnkq) {
  74 41 {8/7q/8/k7/2K5/2N5/8/4Q3} 24 {7K/8/1N6/Q5k1/8/8/6q1/8}
  50.1 49.6 0.3 33.5 62.2 4.3
  38 38 {} 0 {} 0 {}
}

set tbs(kqnkr) {
  12 38 ? 41 ?
  99.2 0.7 0.0 3.0 27.2 69.8
  0
}

set tbs(kqnkb) {
  7 17 ? 1 ?
  99.8 0.2 0.0 0.0 20.9 79.1
  0
}

set tbs(kqnkn) {
  13 21 ? 1 ?
  99.4 0.6 0.0 0.0 17.8 82.2
  0
}

set tbs(kqnkp) {
  46 30 ? 29 ?
  99.9 0.1 0.0 1.9 15.0 83.1
  0
}

set tbs(kqpkq) {
  1179 124 {4q3/K7/8/8/8/4P3/6Q1/k7} 29 {8/7q/3PK3/8/8/8/Q7/3k4}
  68.4 31.2 0.4 35.2 51.2 13.6
  640 640 {} 0 {} 0 {}
}

set tbs(kqpkr) {
  216 38 ? 33 ?
  99.6 0.3 0.1 19.7 6.1 74.1
  1 1 {k7/8/KQ1r4/P7/8/8/8/8} 0 {} 0 {}
}

set tbs(kqpkb) {
  16 28 ? 2 ?
  99.9 0.1 0.0 0.0 16.7 83.3
  0
}

set tbs(kqpkn) {
  41 30 ? 8 ?
  99.7 0.3 0.0 0.0 12.5 87.5
  0
}

set tbs(kqpkp) {
  622 105 {8/8/8/8/3P2Q1/8/1p6/K1k5} 34 ?
  100.0 0.0 0.0 3.3 7.3 89.4
  0
}

set tbs(krrkq) {
  8 29 {3R4/1R6/8/8/q7/7K/8/k7} 49 {7R/1q6/3K4/8/k7/8/2R5/8}
  58.2 36.8 5.1 52.0 37.0 11.0
  10 10 {
    6R1/8/8/8/6R1/7q/1K5k/8 6R1/8/8/8/8/6R1/7q/K6k  8/6R1/8/8/8/3K2R1/7q/7k
    8/6R1/8/8/8/6R1/7q/1K5k 8/8/1R6/8/8/1R1K4/q7/k7 8/8/6R1/8/8/6R1/7q/2K4k
    8/8/8/3R4/8/k7/2KR4/4q3 8/8/8/6R1/8/6R1/7q/3K3k 8/8/8/8/1R6/1R6/q7/k2K4
    8/8/8/8/8/2K5/2R1R3/kq6
  } 0 {} 0 {}
}

set tbs(krrkr) {
  38 31 {8/1R6/8/8/8/5r1K/4R3/k7} 20 {1k6/2R5/7r/3K3R/8/8/8/8}
  99.2 0.7 0.0 0.4 33.4 66.2
  0
}

set tbs(krrkb) {
  8 29 {8/8/8/2b5/8/4KR2/1k6/6R1} 0 -
  99.3 0.7 0.0 0.0 22.4 77.6
  1 1 {8/8/8/8/8/b1k5/1R6/1RK5} 0 {} 0 {}
}

set tbs(krrkn) {
  8 40 {4k3/6R1/8/7n/5K2/1R6/8/8} 1 {8/8/8/8/1n6/k7/8/KR1R4}
  99.7 0.3 0.0 0.0 15.0 85.0
  0
}

set tbs(krrkp) {
  3 33 ? 50 ?
  100.0 0.0 0.0 1.0 5.7 93.3
  0
}

set tbs(krbkq) {
  23 21 ? 70 ?
  38.7 48.0 13.4 71.2 25.6 3.2
  372 0 {} 372 {3Kn3/8/8/8/8/4r3/7Q/3k4} 0 {}
}

set tbs(krbkr) {
  649 65 {k7/7r/3K4/8/6B1/8/4R3/8} 30 {8/4R2K/8/5k2/8/8/7B/4r3}
  41.3 58.7 0.0 0.8 94.1 5.1
  17 17 {
    8/8/8/8/8/1R1K4/2B5/r1k5 8/8/8/8/8/2KB4/2R5/kr6   8/8/8/8/7B/4r3/5R2/2K1k3
    8/8/8/8/rB6/8/1R6/1K1k4  7k/6R1/7r/8/8/8/1B6/1K6  8/8/8/8/8/2K4B/6R1/3r1k2
    8/8/8/8/4R3/k7/2K1B3/4r3 8/8/8/8/8/2R3Br/k1K5/8   8/8/8/3B1r2/3K4/8/6R1/3k4
    8/8/8/8/8/R2K4/5B2/1r1k4 8/8/8/8/8/3K2R1/8/4k1Br  8/8/8/2B5/8/6r1/k1K4R/8
    8/5r2/8/8/1R4B1/8/3K4/k7 8/8/3B4/1r6/8/2K5/4R3/1k6 8/8/8/8/3KB2r/8/5R2/k7
    8/8/3B4/8/8/5r2/k1K1R3/8 5R2/8/8/8/8/3K4/5Br1/2k5
  } 0 {} 0 {}
}

set tbs(krbkb) {
  20 30 ? 2 ?
  98.2 1.8 0.0 0.0 31.1 68.9
  0
}

set tbs(krbkn) {
  5 40 ? 1 ?
  98.9 1.1 0.0 0.0 24.0 76.0
  0
}

set tbs(krbkp) {
  33 28 ? 70 ?
  99.1 0.9 0.0 2.4 17.1 80.5
  1 1 {1k1K4/7R/8/8/8/8/6p1/7B} 0 {} 0 {}
}

set tbs(krnkq) {
  15 20 ? 69 ?
  35.4 41.1 23.4 78.2 19.7 2.1
  455 0 {} 455 {} 0 {}
}

set tbs(krnkr) {
  430 37 {2k1r3/8/R7/N2K4/8/8/8/8} 41 {4K3/8/1r6/8/5k2/1R4N1/8/8}
  36.7 63.3 0.1 3.2 93.6 3.2
  10 10 {
    2R5/8/8/8/8/k2K4/8/r1N5  8/8/8/8/3N4/1R1K4/8/r1k5 8/8/8/8/3N4/2KR4/8/2k1r3
    8/8/8/8/4N3/7R/k1K5/5r2  8/8/8/8/8/2KRN3/8/2k1r3  8/8/8/8/8/3KN3/3R4/2k1r3
    8/8/8/8/8/5RN1/8/2K1k1r1 8/8/8/8/8/6RN/8/3K1k1r   8/8/8/8/8/NR1K4/8/r1k5
    8/8/8/8/r1N5/2R5/k1K5/8
  } 0 {} 0 {}
}

set tbs(krnkb) {
  7 31 ? 1 ?
  97.7 2.3 0.0 0.0 32.4 67.6
  0
}

set tbs(krnkn) {
  12 37 ? 1 ?
  99.0 1.0 0.0 0.0 24.6 75.4
  3 3 {
    8/8/8/8/4n3/1k6/N7/R1K5 8/8/8/8/8/3n4/N2k4/RK6 8/8/8/8/8/n7/1k6/N1RK4
  } 0 {} 0 {}
}

set tbs(krnkp) {
  32 29 ? 68 ?
  98.5 1.5 0.0 4.5 17.1 78.4
  0
}

set tbs(krpkq) {
  367 68 ? 104 ?
  37.7 11.8 50.5 91.0 7.1 1.8
  243 2 {} 241 {} 0 {}
}

set tbs(krpkr) {
  9184 74 {8/1k6/4R3/8/8/8/6Pr/4K3} 33 {8/1P6/2k5/8/K7/8/8/1r5R}
  66.6 33.0 0.4 20.1 54.4 25.5
  209 209 {} 0 {} 0 {}
}

set tbs(krpkb) {
  626 73 ? 2 ?
  96.4 3.6 0.0 0.0 32.6 67.4
  225 225 {} 0 {} 0 {}
}

set tbs(krpkn) {
  397 54 ? 8 ?
  97.5 2.5 0.0 0.0 24.7 75.3
  413 413 {} 0 {} 0 {} 0 {}
}

set tbs(krpkp) {
  1092 56 ? 103 ?
  99.4 0.4 0.3 10.0 6.6 83.5
  3 0 {} 2 {
    8/8/8/8/8/1p6/kP6/1RK5 8/8/8/8/8/k7/Pp6/RK6
  } 1 {8/8/8/8/8/2p5/1kP5/2RK4}
}

set tbs(kbbkq) {
  3 21 ? 81 ?
  15.3 20.2 64.5 96.5 2.9 0.6
  1 0 {} 1 {8/8/8/8/q7/2BB4/1K6/3k4} 0 {}
}

set tbs(kbbkr) {
  13 23 {4r3/8/8/8/8/4B3/8/k1K4B} 31 {1K4B1/8/3k4/8/B5r1/8/8/8}
  16.5 83.4 0.1 1.3 97.2 1.5
  3 3 {
    8/8/8/8/8/3K1k2/6r1/4B2B 8/8/8/8/8/5k2/6r1/3KB2B 8/8/8/B7/8/3k4/2r5/KB6
  } 0 {} 0 {}
}

set tbs(kbbkb) {
  35 22 {6B1/8/7B/8/b7/2K5/8/k7} 2 {1B5K/5k1B/8/8/8/4b3/8/8}
  15.6 84.3 0.0 0.0 98.6 1.4
  0
}

set tbs(kbbkn) {
  28 78 {8/K7/8/8/8/5k2/6n1/2B4B} 1 ?
  48.2 51.8 0.0 0.0 66.1 33.9
  1 1 {8/8/8/8/8/6n1/2K4B/kB6} 0 {} 0 {}
}

set tbs(kbbkp) {
  23 74 ? 83 ?
  48.0 50.2 1.8 11.4 54.1 34.5
  1 1 {B1k5/1pB5/3K4/8/8/8/8/8} 0 {} 0 {}
}

set tbs(kbnkq) {
  13 36 ? 53 ?
  25.0 6.4 68.6 97.6 1.7 0.7
  1 0 {} 1 {8/8/q7/8/3K4/2N5/8/k1B5} 0 {}
}

set tbs(kbnkr) {
  64 36 {8/8/8/2N5/8/8/B6K/5kr1} 41 {8/8/1B4N1/5k2/8/1r6/8/4K3}
  26.0 73.8 0.2 3.8 94.6 1.6
  8 6 {
    3r4/8/2B5/8/1N6/8/8/k1K5 8/8/8/8/8/2k5/1r6/B1NK4  8/8/8/8/8/2k5/3r4/1KN1B3
    8/8/8/8/8/3k4/4r3/2KN1B2 8/8/8/8/8/4k3/5r2/3KN1B1 8/8/8/8/B7/1r6/N1k5/K7
  } 2 {8/8/8/8/8/1k3r2/8/1KB4N 8/r7/8/B7/8/8/N1k5/K7} 0 {}
}

set tbs(kbnkb) {
  54 39 {8/7B/8/8/6N1/8/3k4/1Kb5} 2 {KB6/8/k4N2/8/6b1/8/8/8}
  25.5 74.5 0.0 0.0 98.8 1.2
  45 45 {} 0 {} 0 {}
}

set tbs(kbnkn) {
  36 107 {6Bk/8/8/7N/8/7K/6n1/8} 1 {8/8/3N4/8/3n4/8/B7/K1k5}
  32.2 67.8 0.0 0.0 96.1 3.9
  922 922 {} 0 {} 0 {}
}

set tbs(kbnkp) {
  165 104 ? 55 ?
  91.4 5.5 3.2 14.7 23.0 62.4
  62 61 {} 1 {8/8/8/1N6/3K4/B7/5p2/k7} 0 {}
}

set tbs(kbpkq) {
  117 35 ? 50 ?
  21.3 11.5 67.2 96.8 2.8 0.4
  16 0 {} 16 {
    3K4/2P5/B3qk2/8/8/8/8/8   8/1KP1q3/1B1k4/8/8/8/8/8 8/qPK5/8/3k4/1B6/8/8/8
    2q5/2B2P2/3K4/1k6/8/8/8/8 8/2P5/4q3/KB6/8/k7/8/8   8/3P4/5q2/1KB5/8/1k6/8/8
    8/1KP1q3/4k3/B7/8/8/8/8   3K4/q1P5/B4k2/8/8/8/8/8  8/5P2/3K4/8/4k2B/7q/8/8
    8/4P3/6q1/k1K5/2B5/8/8/8  3k4/KP1q4/3B4/8/8/8/8/8  8/3K1P2/1k2Bq2/8/8/8/8/8
    3K4/2P5/2B2k2/8/1q6/8/8/8 8/1P1K4/1qB2k2/8/8/8/8/8 1k6/3K1P2/4Bq2/8/8/8/8/8
    5k2/1P1K4/1qB5/8/8/8/8/8
  } 0 {}
}

set tbs(kbpkr) {
  451 45 ? 39 ?
  30.9 67.3 1.8 23.4 73.1 3.5
  306 4 {} 302 {} 0 {}
}

set tbs(kbpkb) {
  570 51 ? 3 ?
  41.3 58.7 0.0 0.0 86.9 13.1
  160 160 {} 0 {} 0 {}
}

set tbs(kbpkn) {
  497 105 ? 8 ?
  53.7 46.3 0.0 0.0 76.4 23.6
  2125 2112 {} 13 {} 0 {}
}

set tbs(kbpkp) {
  1443 67 ? 51 ?
  86.4 9.5 4.1 16.7 24.1 59.2
  406 403 {} 2 {} 1 {8/8/8/8/8/k1p5/2P5/1BK5}
}

set tbs(knnkq) {
  5 1 {k1N5/2K5/8/3N4/8/5q2/8/8} 72 ?
  0.0 42.8 57.1 94.0 6.0 0.0
  229 0 {} 229 {} 0 {}
}

set tbs(knnkr) {
  15 3 {5r1k/8/7K/4N3/5N2/8/8/8} 41 {8/8/1r4N1/4kN2/8/8/8/4K3}
  0.0 99.6 0.4 6.3 93.7 0.0
  25 0 {} 25 {} 0 {}
}

set tbs(knnkb) {
  2 4 {7k/5K2/8/8/5NN1/8/8/2b5} 1 {8/8/8/8/8/8/N1k5/K1b4N}
  0.0 100.0 0.0 0.0 100.0 0.0
  0
}

set tbs(knnkn) {
  8 7 {7n/8/8/8/1N1KN3/8/8/k7} 1 {K7/N1k5/8/3n4/3N4/8/8/8}
  0.1 99.9 0.0 0.0 100.0 0.0
  362 362 {} 0 {} 0 {}
}

set tbs(knnkp) {
  71 115 ? 74 ?
  31.3 66.4 2.3 12.8 73.6 13.6
  3143 3124 {} 19 {} 0 {}
}

set tbs(knpkq) {
  130 41 ? 55 ?
  17.9 11.9 70.2 97.2 2.3 0.5
  52 0 {} 52 {} 0 {}
}

set tbs(knpkr) {
  433 44 ? 67 ?
  26.7 69.3 4.0 29.3 68.5 2.2
  1181 23 {} 1158 {} 0 {}
}

set tbs(knpkb) {
  728 43 ? 9 ?
  38.8 61.2 0.0 0.0 88.1 11.9
  642 640 {} 2 {} 0 {}
}

set tbs(knpkn) {
  781 97 ? 7 ?
  49.2 50.8 0.0 0.0 77.2 22.8
  4191 4128 {} 63 {} 0 {}
}

set tbs(knpkp) {
  1410 57 ? 58 ?
  78.3 13.6 8.1 21.8 27.6 50.6
  2303 2281 {} 14 {} 8 {
    8/8/8/8/3K4/NkpP4/8/8   8/8/8/8/3K4/3PpkN1/8/8 8/8/8/8/8/1k2p3/4P3/KN6
    8/8/8/8/8/2K5/2PpkN2/8  8/8/8/8/8/3K4/3PpkN1/8 8/8/8/8/8/3K4/NkpP4/8
    8/8/8/8/1p6/1P6/K7/N1k5 8/8/8/8/8/1K6/1PpkN3/8
  }
}

set tbs(kppkq) {
  726 124 {8/5P2/8/8/3K4/3P3q/7k/8} 41 {8/2KP2q1/8/2P5/5k2/8/8/8}
  16.0 12.6 71.4 98.4 1.5 0.1
  2 0 {} 2 {8/2KP3q/2P2k2/8/8/8/8/8 8/2KP3q/8/2P3k1/8/8/8/8} 0 {}
}

set tbs(kppkr) {
  1652 54 {3K4/8/8/4P3/8/2r5/5P2/2k5} 40 {8/8/8/7K/5P2/3Pr3/8/2k5}
  35.4 20.1 44.5 75.2 18.2 6.6
  119 18 {} 99 {} 2 {1r1k4/1P6/1PK5/8/8/8/8/8 8/8/8/8/k7/r1P5/1KP5/8}
}

set tbs(kppkb) {
  519 43 {8/6P1/7k/8/6P1/1K6/8/1b6} 4 {K5b1/P7/1k6/8/8/8/2P5/8}
  54.4 45.6 0.0 0.0 75.4 24.6
  212 211 {} 1 {8/8/8/8/8/b2k4/P2P4/1K6} 0 {}
}

set tbs(kppkn) {
  705 50 {3n4/5P2/8/8/3K2P1/8/k7/8} 17 {7K/8/4k2P/8/8/8/5P2/5n2}
  64.7 35.3 0.0 0.0 62.4 37.6
  1077 920 {} 157 {} 0 {}
}

set tbs(kppkp) {
  5080 127 {8/8/8/8/1p2P3/1k1KP3/8/8} 43 {7K/8/4P3/5P2/3k4/7p/8/8}
  77.1 10.3 12.6 27.7 19.1 53.2
  4237 4179 {} 52 {} 6 {
    8/8/8/8/2k5/K1p5/P3P3/8   8/8/8/8/3k4/1K1p4/1P3P2/8
    8/8/8/8/4k3/2K1p3/2P3P1/8 8/8/8/2k5/K1p5/P3P3/8/8
    8/8/8/8/5k2/3K1p2/3P3P/8  8/8/8/k7/p1K5/2P5/2P5/8
  }
}

set tbs(kqqqk) {
  0 3 ? 0 -
  100.0 0.0 0.0 0.0 4.0 96.0
  0
}

set tbs(kqqrk) {
  0 4 ? 0 -
  100.0 0.0 0.0 0.0 3.1 96.9
  0
}

set tbs(kqqbk) {
  3 4 ? 0 -
  100.0 0.0 0.0 0.0 2.7 97.3
  0
}

set tbs(kqqnk) {
  2 4 ? 0 -
  100.0 0.0 0.0 0.0 2.4 97.6
  0
}

set tbs(kqqpk) {
  12 4 ? 0 -
  100.0 0.0 0.0 0.0 2.1 97.9
  0
}

set tbs(kqrrk) {
  0 4 ? 0 -
  100.0 0.0 0.0 0.0 2.0 98.0
  0
}

set tbs(kqrbk) {
  3 5 ? 0 -
  100.0 0.0 0.0 0.0 1.7 98.3
  0
}

set tbs(kqrnk) {
  3 5 ? 0 -
  100.0 0.0 0.0 0.0 1.4 98.6
  0
}

set tbs(kqrpk) {
  26 7 ? 0 -
  100.0 0.0 0.0 0.0 1.1 98.9
  0
}

set tbs(kqbbk) {
  3 6 ? 0 -
  100.0 0.0 0.0 0.0 5.0 95.0
  0
}

set tbs(kqbnk) {
  5 7 ? 0 -
  100.0 0.0 0.0 0.0 1.1 98.9
  0
}

set tbs(kqbpk) {
  31 9 ? 0 -
  100.0 0.0 0.0 0.0 1.2 98.8
  0
}

set tbs(kqnnk) {
  0 8 ? 0 -
  100.0 0.0 0.0 0.0 9.1 90.9
  0
}

set tbs(kqnpk) {
  10 9 ? 0 -
  100.0 0.0 0.0 0.0 1.0 99.0
  0
}

set tbs(kqppk) {
  64 9 ? 0 -
  100.0 0.0 0.0 0.0 0.7 99.3
}

set tbs(krrrk) {
  2 5 ? 0 -
  100.0 0.0 0.0 0.0 0.9 99.1
  0
}

set tbs(krrbk) {
  0 10 ? 0 -
  100.0 0.0 0.0 0.0 0.8 99.2
  0
}

set tbs(krrnk) {
  0 10 ? 0 -
  100.0 0.0 0.0 0.0 0.6 99.4
  0
}

set tbs(krrpk) {
  7 14 ? 0 -
  100.0 0.0 0.0 0.0 0.3 99.7
  0
}

set tbs(krbbk) {
  0 12 ? 0 -
  100.0 0.0 0.0 0.0 4.3 95.7
  0
}

set tbs(krbnk) {
  3 29 ? 0 -
  100.0 0.0 0.0 0.0 0.5 99.5
  0
}

set tbs(krbpk) {
  23 16 ? 0 -
  100.0 0.0 0.0 0.0 0.6 99.4
  0
}

set tbs(krnnk) {
  0 15 ? 0 -
  100.0 0.0 0.0 0.0 8.5 91.5
  0
}

set tbs(krnpk) {
  16 17 ? 0 -
  100.0 0.0 0.0 0.0 0.5 99.5
  0
}

set tbs(krppk) {
  119 15 {8/8/4k3/8/8/3P4/3P4/5R1K} 0 -
  100.0 0.0 0.0 0.0 0.2 98.8
  0
}

set tbs(kbbbk) {
  0 16 ? 0 -
  74.0 26.0 0.0 0.0 31.6 68.4
  0
}

set tbs(kbbnk) {
  3 33 ? 0 -
  100.0 0.0 0.0 0.0 4.1 95.9
  0
}

set tbs(kbbpk) {
  5 30 ? 0 -
  98.3 1.7 0.0 0.0 6.8 93.2
  0
}

set tbs(kbnnk) {
  0 34 ? 0 -
  100.0 0.0 0.0 0.0 8.4 91.6
  0
}

set tbs(kbnpk) {
  26 33 ? 0 -
  100.0 0.0 0.0 0.0 0.8 99.2
  0
}

set tbs(kbppk) {
  100 25 ? 0 -
  99.8 0.2 0.0 0.0 1.3 98.7
  6 6 {
    8/B1k5/K7/P7/P7/8/8/8 K7/8/1k6/1P6/BP6/8/8/8 K7/8/Bk6/1P6/1P6/8/8/8
    KBk5/P1P5/8/8/8/8/8/8 kB6/8/1PK5/1P6/8/8/8/8 kB6/8/KP6/1P6/8/8/8/8
  } 0 {} 0 {}
}

set tbs(knnnk) {
  0 21 ? 0 -
  98.7 1.3 0.0 0.0 25.0 75.0
  0
}

set tbs(knnpk) {
  7 28 ? 0 -
  98.4 1.6 0.0 0.0 12.0 88.0
  0
}

set tbs(knppk) {
  96 32 ? 0 -
  100.0 0.0 0.0 0.0 1.0 99.0
  93 93 {} 0 {} 0 {}
}

set tbs(kpppk) {
  97 33 {7K/5k2/8/8/1P6/1P6/1P6/8} 0 -
  99.9 0.1 0.0 0.0 0.6 99.4
  11 11 {
    1k6/1P6/K7/P7/P7/8/8/8  1k6/1P6/K7/PP6/8/8/8/8  2k5/2P5/3K4/P7/P7/8/8/8
    8/1k6/1P6/KP6/1P6/8/8/8 8/8/1k6/1P6/KP6/1P6/8/8 8/8/8/1k1P4/8/PK6/P7/8
    8/8/8/1k6/1P6/KP6/1P6/8 8/K1k5/P1P5/P7/8/8/8/8  K1k5/2P5/P1P5/8/8/8/8/8
    K1k5/8/P1P5/P7/8/8/8/8  k7/8/KP6/PP6/8/8/8/8
  } 0 {} 0 {}
}

# End of file: tb.tcl


####################
# Piece tracker window

namespace eval ::ptrack {}

set ::ptrack::psize 35
set ::ptrack::select d1
set ::ptrack::moves(start) 1
set ::ptrack::moves(end) 20
set ::ptrack::mode "-games"
set ::ptrack::color blue
set ::ptrack::colors [list black red yellow cyan blue xblack xred xyellow xcyan xblue]

trace variable ::ptrack::moves(start) w {::utils::validate::Integer 999 0}
trace variable ::ptrack::moves(end) w {::utils::validate::Integer 999 0}

# ::ptrack::sq
#   Given a square number (0=a1 to 63=h8), returns the square name.
#
proc ::ptrack::sq {n} {
  set sq [lindex [list a b c d e f g h] [expr {$n % 8} ]]
  append sq [expr {int($n/8) + 1} ]
  return $sq
}

# ::ptrack::unselect
#   Unselects all pieces in the Piece Tracker window.
#
proc ::ptrack::unselect {} {
  set w .ptracker
  set ::ptrack::select {}
  foreach i {a1 c1 e1 g1 b2 d2 f2 h2 a7 c7 e7 g7 b8 d8 f8 h8} {
    $w.bd.p$i configure -background $::dark
  }
  foreach i {b1 d1 f1 h1 a2 c2 e2 g2 b7 d7 f7 h7 a8 c8 e8 g8} {
    $w.bd.p$i configure -background $::lite
  }
}

# ::ptrack::select
#   Selects all the listed pieces the Piece Tracker window.
#
proc ::ptrack::select {plist} {
  ::ptrack::unselect
  foreach p $plist {
    lappend ::ptrack::select $p
    .ptracker.bd.p$p configure -background $::highcolor
  }
}

# ::ptrack::status
#   Sets the Piece Tracker window status bar.
#
proc ::ptrack::status {{text ""}} {
  set t .ptracker.status
  if {$text == ""} {
    $t configure -text "$::tr(Filter): [filterText]"
  } else {
    $t configure -text $text
  }
}

# ::ptrack::recolor
#   Changes the color scheme for track values.
#
proc ::ptrack::recolor {color} {
  set ::ptrack::color $color
  .ptracker.t.color.b configure -image ptrack_$::ptrack::color
  ::ptrack::refresh color
}

# ::ptrack::color
#   Given a real value between 0.0 and 100.0, returns
#   the corresponding Piece Tracker color value.
#
proc ::ptrack::color {pct {col ""}} {
  if {$col == ""} {
    set col $::ptrack::color
  }
  set x $pct
  if {$x > 100.0} { set x 100.0}
  if {$x < 0.01} { set x 0.01 }
  set y [expr {255 - round($x * 0.5 + 10 * log($x))} ]
  set yb [expr {255 - round($x * 2.0 + 10 * log($x))} ]
  if {$y > 255} { set y 255}
  if {$yb > 255} { set yb 255}
  if {$yb < 0} { set yb 0}
  if {$y < 0} { set y 0}
  if {$pct > 0.0  &&  $y == 0} { set y 1 }
  if {$pct > 0.0  &&  $yb == 0} { set yb 1 }
  set xy [expr {255 - $y} ]
  set xyb [expr {255 - $yb} ]
  switch $col {
    black   { set color [format "\#%02X%02X%02X" $yb $yb $yb] }
    red     { set color [format "\#%02X%02X%02X" $y $yb $yb] }
    yellow  { set color [format "\#%02X%02X%02X" $y $y $yb] }
    cyan    { set color [format "\#%02X%02X%02X" $yb $y $y] }
    blue    { set color [format "\#%02X%02X%02X" $yb $yb $y] }
    xblack  { set color [format "\#%02X%02X%02X" $xyb $xyb $xyb] }
    xred    { set color [format "\#%02X%02X%02X" $xyb $xy $xy] }
    xyellow { set color [format "\#%02X%02X%02X" $xyb $xyb $xy] }
    xcyan   { set color [format "\#%02X%02X%02X" $xy $xyb $xyb] }
    xblue   { set color [format "\#%02X%02X%02X" $xy $xy $xyb] }
  }
  return $color
}

# ::ptrack::make
#   Creates the Piece Tracker window
#
proc ::ptrack::make {} {
  set w .ptracker
  if {[winfo exists $w]} { return }

  toplevel $w
  wm title $w "Scid: [tr ToolsTracker]"
  setWinLocation $w
  bind $w <Escape> "destroy $w"
  bind $w <F1> {helpWindow PTracker}
  image create photo ptrack -width $::ptrack::psize -height $::ptrack::psize
  label $w.status -width 1 -anchor w -relief sunken -font font_Small
  pack $w.status -side bottom -fill x

  canvas $w.progress -height 20 -width 400 -bg white -relief solid -border 1
  $w.progress create rectangle 0 0 0 0 -fill blue -outline blue -tags bar
  $w.progress create text 395 10 -anchor e -font font_Regular -tags time \
    -fill black -text "0:00 / 0:00"
  pack $w.progress -side bottom -pady 2

  frame $w.bd
  pack $w.bd -side left -padx 2 -pady 4

  frame $w.t
  pack $w.t -side right -fill y -expand yes
  pack [frame $w.gap -width 5] -side left

  frame $w.t.color
  frame $w.t.mode
  frame $w.t.moves
  frame $w.t.buttons
  pack $w.t.buttons -side bottom -fill x
  pack $w.t.moves -side bottom
  pack $w.t.mode -side bottom
  pack $w.t.color -side bottom

  set ::ptrack::shade {}
  for {set i 0} {$i < 64} {incr i} {
    label $w.bd.sq$i -image ptrack -background white -border 1 -relief raised
    set rank [expr {$i / 8}]
    set file [expr {$i % 8} ]
    grid $w.bd.sq$i -row [expr {7 - $rank} ] -column [expr {$file + 1} ]
    lappend ::ptrack::shade 0.0
  }

  foreach rank {1 2 3 4 5 6 7 8} {
    label $w.bd.r$rank -text $rank -width 2
    grid $w.bd.r$rank -column 0 -row [expr {8 - $rank} ]
  }

  foreach column {1 2 3 4 5 6 7 8} file {a b c d e f g h} {
    label $w.bd.f$file -text $file
    grid $w.bd.f$file -row 8 -column $column
  }

  grid [frame $w.bd.gap1 -height 5] -row 9 -column 0

  foreach file {a b c d e f g h} c {1 2 3 4 5 6 7 8} p {r n b q k b n r} {
    set sq ${file}8
    set b $w.bd.p$sq
    label $b -image b$p$::ptrack::psize -border 1 -relief raised
    grid $b -row 10 -column $c
    bind $b <1> "::ptrack::select $sq"
  }
  foreach file {a b c d e f g h} c {1 2 3 4 5 6 7 8} p {p p p p p p p p} {
    set sq ${file}7
    set b $w.bd.p$sq
    label $b -image b$p$::ptrack::psize -border 1 -relief raised
    grid $b -row 11 -column $c
    bind $b <1> "::ptrack::select $sq"
    bind $b <$::MB3> "::ptrack::select {a7 b7 c7 d7 e7 f7 g7 h7}"
  }
  grid [frame $w.bd.gap2 -height 5] -row 12 -column 0
  foreach file {a b c d e f g h} c {1 2 3 4 5 6 7 8} p {p p p p p p p p} {
    set sq ${file}2
    set b $w.bd.p$sq
    label $b -image w$p$::ptrack::psize -border 1 -relief raised
    grid $b -row 13 -column $c
    bind $b <ButtonPress-1> "::ptrack::select $sq"
    bind $b <$::MB3> "::ptrack::select {a2 b2 c2 d2 e2 f2 g2 h2}"
  }
  foreach file {a b c d e f g h} c {1 2 3 4 5 6 7 8} p {r n b q k b n r} {
    set sq ${file}1
    set b $w.bd.p$sq
    label $b -image w$p$::ptrack::psize -border 1 -relief raised
    grid $b -row 14 -column $c
    bind $b <Button-1> "::ptrack::select $sq"
  }

  # Both-piece bindings:
  foreach sq {d1 e1 d8 e8} {
    bind $w.bd.p$sq <$::MB3> [list ::ptrack::select $sq]
  }
  foreach left {a b c} right {h g f} {
    set cmd [list ::ptrack::select [list ${left}1 ${right}1]]
    bind $w.bd.p${left}1 <ButtonPress-$::MB3> $cmd
    bind $w.bd.p${right}1 <ButtonPress-$::MB3> $cmd
    set cmd [list ::ptrack::select [list ${left}8 ${right}8]]
    bind $w.bd.p${left}8 <ButtonPress-$::MB3> $cmd
    bind $w.bd.p${right}8 <ButtonPress-$::MB3> $cmd
  }

  # Status-bar help:
  foreach sq {d1 e1 d8 e8} {
    bind $w.bd.p$sq <Any-Enter> {
      ::ptrack::status $::tr(TrackerSelectSingle)
    }
    bind $w.bd.p$sq <Any-Leave> ::ptrack::status
  }

  foreach sq {a1 b1 c1 f1 g1 h1 a8 b8 c8 f8 g8 h8} {
    bind $w.bd.p$sq <Any-Enter> {
      ::ptrack::status $::tr(TrackerSelectPair)
    }
    bind $w.bd.p$sq <Any-Leave> ::ptrack::status
  }
  foreach sq {a2 b2 c2 d2 e2 f2 g2 h2 a7 b7 c7 d7 e7 f7 g7 h7} {
    bind $w.bd.p$sq <Any-Enter> {
      ::ptrack::status $::tr(TrackerSelectPawn)
    }
    bind $w.bd.p$sq <Any-Leave> ::ptrack::status
  }
  set plist $::ptrack::select
  ::ptrack::unselect
  ::ptrack::select $plist

  set f $w.t.text
  pack [frame $f] -side top -fill both -expand yes -padx 2 -pady 2
  text $f.text -width 28 -height 1 -foreground black -background white \
    -yscrollcommand "$f.ybar set" -relief sunken -takefocus 0 \
    -wrap none -font font_Small
  set xwidth [font measure [$f.text cget -font] "x"]
  foreach {tab justify} {3 r 5 l 19 r 29 r} {
    set tabwidth [expr {$xwidth * $tab} ]
    lappend tablist $tabwidth $justify
  }
  $f.text configure -tabs $tablist
  scrollbar $f.ybar -takefocus 0 -command "$f.text yview"
  pack $f.ybar -side right -fill y
  pack $f.text -side left -fill y -expand yes

  set f $w.t.color

  menubutton $f.b -menu $f.b.menu -indicatoron 0 -relief raised
  menu $f.b.menu
  foreach col $::ptrack::colors {
    image create photo ptrack_$col -width 101 -height 20
    for {set i 0} {$i <= 100} {incr i} {
      set color [::ptrack::color $i $col]
      ptrack_$col put $color -to $i 0 [expr {$i+1} ] 19
    }
    $f.b.menu add command -image ptrack_$col \
      -command "::ptrack::recolor $col"
  }
  $f.b configure -image ptrack_$::ptrack::color
  label $f.label -text $::tr(GlistColor:) -font font_Bold
  pack $f.label $f.b -side left -pady 5

  set f $w.t.mode
  label $f.mode -text $::tr(TrackerStat:) -font font_Bold
  grid $f.mode -row 0 -column 0
  radiobutton $f.games -text $::tr(TrackerGames) -anchor w \
    -variable ::ptrack::mode -value "-games"
  radiobutton $f.time -text $::tr(TrackerTime) -anchor w \
    -variable ::ptrack::mode -value "-time"
  grid $f.games -row 1 -column 0 -sticky we
  grid $f.time -row 2 -column 0 -sticky we

  set f $w.t.moves
  label $f.lfrom -text $::tr(TrackerMoves:) -font font_Bold
  entry $f.from -width 3 -justify right -textvariable ::ptrack::moves(start)
  label $f.lto -text "-"
  entry $f.to -width 3 -justify right -textvariable ::ptrack::moves(end)
  pack $f.lfrom $f.from $f.lto $f.to -side left -pady 5
  bindFocusColors $f.from
  bindFocusColors $f.to
  bind $f.from <FocusIn> [list +::ptrack::status $::tr(TrackerMovesStart)]
  bind $f.from <FocusOut> +::ptrack::status
  bind $f.to <FocusIn> [list +::ptrack::status $::tr(TrackerMovesStop)]
  bind $f.to <FocusOut> +::ptrack::status

  set f $w.t.buttons
  button $f.stop -text $::tr(Stop) -command sc_progressBar -state disabled
  button $f.update -text $::tr(Update) -command ::ptrack::refresh
  button $f.close -text $::tr(Close) -command "destroy $w"
  pack $f.close $f.update $f.stop -side right -padx 3 -pady 5
  ::ptrack::status
  bind $w <Configure> "recordWinSize $w"
  wm resizable $w 0 0
  focus $w.t.buttons.update
}

# ::ptrack::refresh
#   Regenerates Piece Tracker statistics and updates the window
#
proc ::ptrack::refresh {{type "all"}} {
  set w .ptracker
  if {! [winfo exists $w]} { return }

  # Check if only the color needs refreshing:
  if {$type == "color"} {
    for {set i 0} {$i < 64} {incr i} {
      set x [lindex $::ptrack::shade $i]
      $w.bd.sq$i configure -background [::ptrack::color $x]
    }
    return
  }

  busyCursor .
  $w.t.buttons.update configure -state disabled
  $w.t.buttons.close configure -state disabled
  $w.t.buttons.stop configure -state normal
  catch {grab $w.t.buttons.stop}

  if {$::ptrack::moves(end) < $::ptrack::moves(start)} {
    set ::ptrack::moves(end) $::ptrack::moves(start)
  }

  set timeMode 0
  if {$::ptrack::mode == "-time"} { set timeMode 1 }

  sc_progressBar $w.progress bar 401 21 time
  set data [eval sc_base piecetrack $::ptrack::mode \
              $::ptrack::moves(start) $::ptrack::moves(end) \
              $::ptrack::select]
  set ::ptrack::data $data

  catch {grab release $w.t.buttons.stop}
  $w.t.buttons.stop configure -state disabled
  $w.t.buttons.update configure -state normal
  $w.t.buttons.close configure -state normal
  unbusyCursor .

  set dfilter [sc_filter count]
  if {$timeMode} {
    set nmoves [expr {$::ptrack::moves(end) + 1 - $::ptrack::moves(start)} ]
    set dfilter [expr {$dfilter * $nmoves} ]
  }
  if {$dfilter == 0} { set dfilter 1 } ;# to avoid divide-by-zero

  set max 1
  for {set i 0} {$i < 64} {incr i} {
    set freq [lindex $data $i]
    if {$freq > $max} {set max $freq}
  }

  set ::ptrack::shade {}
  for {set i 0} {$i < 64} {incr i} {
    set freq [lindex $data $i]
    set x [expr {$freq * 100.0 / $max} ]
    set color [::ptrack::color $x]
    lappend ::ptrack::shade $x
    $w.bd.sq$i configure -background $color
  }

  # Update text frame:
  set text $w.t.text.text
  $text delete 1.0 end
  array set printed {}
  for {set top 1} {$top <= 64} {incr top} {
    set best -1
    set idx -1
    for {set i 0} {$i < 64} {incr i} {
      set n [lindex $data $i]
      if {$n > $best  &&  ![info exists printed($i)]} {
        set idx $i
        set best $n
      }
    }

    set printed($idx) 1
    set pct [expr {round(double($best) * 10000.0 / double($dfilter)) / 100.0} ]
    set line [format "\t%2d.\t%s\t%7s\t%6.2f %%" $top \
                [::ptrack::sq $idx] [::utils::thousands $best] $pct]
    $text insert end "$line\n"
    set status "  [::ptrack::sq $idx]: [::utils::thousands $best] ($pct%%)  $top/64"
    bind $w.bd.sq$idx <Any-Enter> [list ::ptrack::status $status]
    bind $w.bd.sq$idx <Any-Leave> ::ptrack::status
  }
}
### help.tcl: Help pages for Scid.
### This file uses UTF-8
#################################################

set helpTitle(Contents) "Contents"
set helpText(Contents) {<h1>Scid Help Contents</h1>
  
  <h4>Starting out and general help</h4>
  <ul>
  <li><a Guide><b>Quick Guide</b> to using Scid</a> <red>(Read this first)</red></li>
  <li><a Hints><b>Hints</b> for getting more out of Scid</a></li>
  <li><a MainWindow>The Scid <b>main window</b></a></li>
  <li><a Menus>Scid <b>menus</b></a></li>
  <li><a Moves>Entering <b>chess moves</b></a></li>
  <li><a Searches><b>Searches</b> in Scid</a></li>
  <li><a Clipbase>Using the <b>Clipbase</b> database</a></li>
  <li><a Annotating><b>Annotating games</b></a></li>
  </ul>
  
  <h4>Other Scid windows</h4>
  <ul>
  <li><a Analysis><b>Analysis</b> window</a></li>
  <li><a Book><b>Book</b> window</a></li>
  <li><a CalVar><b>Calculation of variations</b> window</a></li>
  <li><a Comment><b>Comment editor</b> window</a></li>
  <li><a Crosstable><b>Crosstable</b> window</a></li>
  <li><a Switcher><b>Database Switcher</b> window</a></li>
  <li><a Email><b>Email</b> chess manager window</a></li>
  <li><a Finder><b>File Finder</b> window</a></li>
  <li><a GameList><b>Game List</b> window</a></li>
  <li><a Import><b>Import game</b> window</a></li>
  <li><a OpeningTrainer><b>Opening Trainer</b> window </a></li>
  <li><a Reports><b>Reports</b></a> <red>(updated!)</red></li>
  <li><a PGN><b>PGN</b> (game text) window</a></li>
  <li><a PTracker><b>Piece Tracker</b></a></li>
  <li><a PList><b>Player Finder</b> window</a></li>
  <li><a PInfo><b>Player Info</b> window</a></li>
  <li><a Repertoire><b>Repertoire editor</b> window</a></li>
  <li><a TacticalGame><b>Tactical game</b> window</a></li>
  <li><a Tmt><b>Tournament Finder</b> window</a></li>
  <li><a Tree><b>Tree</b> window</a></li>
  <li><a Graphs><b>Graph</b> windows</a></li>
  <li><a TB>Using <b>Tablebases</b> in Scid</a></li>
  </ul>
  
  <h4>Other utilities and information</h4>
  <ul>
  <li><a Bookmarks><b>Bookmarks</b></a></li>
  <li><a Cmdline>Command-line options</a></li>
  <li><a Compact><b>Compacting</b> a database</a></li>
  <li><a Correspondence>Correspondence Chess</a></li>
  <li><a Maintenance><b>Database maintenance</b> tools</a></li>
  <li><a ECO><b>ECO</b> openings classification</a></li>
  <li><a EPD><b>EPD</b> files</a></li>
  <li><a Export><b>Exporting</b> games to text files</a></li>
  <li><a Flags>Game <b>Flags</b></a></li>
  <li><a LaTeX>Using <b>LaTeX</b> with Scid</a></li>
  <li><a Options><b>Options</b> and preferences</a></li>
  <li><a Sorting><b>Sorting</b> a database</a></li>
  <li><a Pgnscid><b>Pgnscid</b>: converting <a PGN>PGN</a> files</a></li>
  <li><a NAGs>Standard <b>NAG</b> annotation values</a></li>
  <li><a Formats>Scid database <b>file formats</b></a></li>
  <li><a Author>Contact information</a></li>
  </ul>
  
  <p><footer>(Updated: Scid 4.3, January 2011)</footer></p>
}

###############
### Topic Index

set helpTitle(Index) "Scid Help Topic Index"
set helpText(Index) {<h1>Scid Help Topic Index</h1>
  
  <h3>A</h3>
  <ul>
  <li><a Analysis>Analysis</a> window</li>
  <li><a Annotating>Annotating games</a></li>
  <li><a NAGs>Annotation symbols</a></li>
  <li><a Author>Author, contacting</a></li>
  <li><a MainWindow Autoplay>Autoplay mode</a></li>
  </ul>
  
  <h3>B</h3>
  <ul>
  <li><a Tree Best>Best games</a> window</li>
  <li><a Searches Board>Board searches</a></li>
  <li><a Book>Book</a> window</li>
  <li><a BookTuning>Book</a> tuning</li>
  <li><a Bookmarks>Bookmarks</a></li>
  <li><a GameList Browsing>Browsing games</a></li>
  </ul>
  
  <h3>C</h3>
  <ul>
  <li><a Maintenance Cleaner>Cleaner</a></li>
  <li><a Clipbase>Clipbase</a></li>
  <li><a Cmdline>Command-line options</a></li>
  <li><a Comment>Comment editor</a></li>
  <li><a Compact>Compacting a database</a></li>
  <li><a Correspondence>Correspondence Chess</a></li>
  <li><a CCIcons>Correspondence Chess Icons</a></li>
  <li><a Author>Contact information</a></li>
  <li><a Contents>Contents</a></li>
  <li><a Crosstable>Crosstable</a> window</li>
  </ul>
  
  <h3>D</h3>
  <ul>
  <li><a Compact>Database compaction</a></li>
  <li><a Formats>Database file formats</a></li>
  <li><a Metadata>Database information (Metadata)</a></li>
  <li><a Maintenance>Database maintenance</a></li>
  <li><a Sorting>Database sorting</a></li>
  <li><a Switcher>Database switcher</a> window</li>
  <li><a Maintenance Twins>Deleting twin games</a></li>
  <li><a HardwareConfig>DGT Electronic Chess Board</a></li>
  <li><a InputEngine>DGT usage</a></li>
  <li><a Metadata>Dublin Core Metadata</a></li>
  </ul>
  
  <h3>E</h3>
  <ul>
  <li><a ECO Browser>ECO Browser</a> window</li>
  <li><a ECO Codes>ECO code system</a></li>
  <li><a ECO>ECO openings classification</a></li>
  <li><a Menus Edit>Edit menu</a></li>
  <li><a Email>Email manager</a> window</li>
  <li><a CCeMailChess>Email Chess</a></li>
  <li><a Analysis List>Engines list</a></li>
  <li><a Moves>Entering chess moves</a></li>
  <li><a EPD>EPD files</a></li>
  <li><a Export>Exporting games to text files</a></li>
  <li><a HardwareConfig>External Hardware (Novag, DGT...)</a></li>
  </ul>
  
  <h3>F</h3>
  <ul>
  <li><a FICSLogin>FICS Login</a></li>
  <li><a FICSfindOpp>FICS Find opponent</a></li>
  <li><a FICS>Play on the Internet (FICS)</a></li>
  <li><a FICS Training>FICS lectures</a></li>
  <li><a Finder>File Finder</a></li>
  <li><a FindBestMove>Training: Find best move</a></li>
  <li><a Formats>File formats</a></li>
  <li><a Menus File>File menu</a></li>
  <li><a Searches Filter>Filter</a></li>
  <li><a Export>Filter, exporting</a></li>
  <li><a Graphs Filter>Filter graph</a></li>
  <li><a Flags>Flags</a></li>
  <li><a Options Fonts>Fonts</a></li>
  </ul>
  
  <h3>G</h3>
  <ul>
  <li><a Flags>Game flags</a></li>
  <li><a GameList>Game List</a> window</li>
  <li><a Menus Game>Game menu</a></li>
  <li><a Graphs>Graph windows</a></li>
  </ul>
  
  <h3>H</h3>
  <ul>
  <li><a Searches Header>Header searches</a></li>
  <li><a Menus Help>Help menu</a></li>
  <li><a Hints>Hints</a></li>
  <li><a HardwareConfig>Using Hardware (Novag, DGT)</a></li>
  </ul>
  
  <h3>I</h3>
  <ul>
  <li><a CCIcons>Icons for Correspondence Chess</a></li>
  <li><a Import>Import</a> window</li>
  <li><a Moves Informant>Informant Symbols</a></li>
  <li><a InputEngine>Input Engine drivers</a></li>
  </ul>
  
  <h3>L</h3>
  <ul>
  <li><a LaTeX>LaTeX</a> output format</li>
  </ul>
  
  <h3>M</h3>
  <ul>
  <li><a MainWindow>Main Window</a></li>
  <li><a Maintenance>Maintenance tools</a></li>
  <li><a TreeMasks>Masks for Trees</a></li>
  <li><a Searches Material>Material/pattern searches</a></li>
  <li><a Menus>Menus</a></li>
  <li><a GameList Browsing>Merging games</a></li>
  <li><a Metadata>Metadata</a></li>
  <li><a Moves>Move entry</a></li>
  </ul>
  
  <h3>N</h3>
  <ul>
  <li><a Maintenance Editing>Names, editing</a></li>
  <li><a Maintenance Spellcheck>Names, spellchecking</a></li>
  <li><a NAGs>NAG annotation values</a></li>
  <li><a Annotating Null>Null moves</a></li>
  <li><a HardwareConfig>Novag Citrine Electronic Chess Board</a></li>
  <li><a Novag>Novag Citrine usage</a></li>
  </ul>
  
  <h3>O</h3>
  <ul>
  <li><a ECO>Opening classification (ECO)</a></li>
  <li><a Repertoire>Opening repertoires</a></li>
  <li><a Reports Opening>Opening report</a> window</li>
  <li><a OpeningTrainer>Training: Openings</a></li>
  <li><a Options>Options</a></li>
  </ul>
  
  <h3>P</h3>
  <ul>
  <li><a PGN>PGN</a> window</li>
  <li><a Pgnscid>Pgnscid</a></li>
  <li><a FICS>Play on the Internet (FICS)</a></li>
  <li><a PTracker>Piece Tracker</a> window</li>
  <li><a PList>Player Finder</a> window</li>
  <li><a PInfo>Player Info</a> window</li>
  <li><a Reports Player>Player report</a> window</li>
  <li><a TacticalGame>Play tactical game</a></li>
  <li><a SeriousGame>Play serious game</a></li>
  </ul>
  
  <h3>Q</h3>
  <ul>
  <li><a Guide>Quick guide to using Scid</a></li>
  </ul>
  
  <h3>R</h3>
  <ul>
  <li><a Graphs Rating>Rating graph</a></li>
  <li><a Repertoire>Repertoire editor</a></li>
  </ul>
  
  <h3>S</h3>
  <ul>
  <li><a Searches Filter>Search filter</a></li>
  <li><a Menus Search>Search menu</a></li>
  <li><a Searches>Searches</a></li>
  <li><a SeriousGame>Play serious game</a></li>
  <li><a Sorting>Sorting a database</a></li>
  <li><a Maintenance Spellcheck>Spellchecking names</a></li>
  <li><a Switcher>Switcher</a> window</li>
  </ul>
  
  <h3>T</h3>
  <ul>
  <li><a TB>Tablebases</a></li>
  <li><a TacticalGame>Tactical game</a></li>
  <li><a Menus Tools>Tools menu</a></li>
  <li><a Tmt>Tournament finder</a></li>
  <li><a FindBestMove>Training: Find best move</a></li>
  <li><a OpeningTrainer>Training: Openings</a></li>
  <li><a TacticsTrainer>Training: Tactics</a></li>
  <li><a FICS Training>Training: FICS lectures</a></li>
  <li><a Tree>Tree window</a></li>
  <li><a TreeMasks>Masks for Trees</a></li>
  <li><a Moves Trial>Trial mode</a></li>
  <li><a Maintenance Twins>Twin (duplicate) games</a></li>
  </ul>
  
  <h3>V</h3>
  <ul>
  <li><a Annotating Vars>Variations</a></li>
  </ul>
  
  <h3>W</h3>
  <ul>
  <li><a Menus Windows>Windows menu</a></li>
  </ul>

  <h3>X</h3>
  <ul>
  <li><a CCXfcc>Xfcc support</a></li>
  </ul>

  <p><footer>(Updated: Scid 3.6.23, March 2008)</footer></p>
}


####################
### Quick Guide help:

set helpTitle(Guide) "Quick Guide to using Scid"
set helpText(Guide) {<h1>Quick Guide to using Scid</h1>
  <p>
  Scid is a chess database application; with it you can browse
  databases of chess games, edit games and <a Searches>search</a>
  for games by various criteria.
  </p>
  <p>
  Scid uses its own special three-file <a Formats>database format</a>
  which is very compact and fast, but it can convert to and from
  the standard <a PGN>PGN</a> (Portable Game Notation) format.
  Scids <a PGN>PGN window</a> displays the text of the current game in
  <a PGN>PGN</a> format.
  </p>
  <p>
  You can use Scid to add chess games to a database, using the keyboard or
  mouse to enter moves. See the help page on <a Moves>entering chess moves</a>
  for more details.
  </p>
  <p>
  You can also use Scid as a <a PGN>PGN</a> file browser, by pasting
  <a PGN>PGN</a> text into Scids <a Import>Import</a> window or by
  opening a <a PGN>PGN</a> file in Scid.  However, <a PGN>PGN</a>
  files cannot be edited by Scid (it opens them read-only) and they
  use more memory and are slower to load, so for large <a PGN>PGN</a>
  files it is recommended that you create a Scid database from them
  first with the <a Pgnscid>pgnscid</a> utility.
  </p>
  <p>
  Windows can be used in docked mode or as independant windows (see
  flag in the options menu).  In docked mode, the most important
  windows are embedded into a main one. The windows can be reordered
  by right-clicking on the tab (where the title of the window is) and
  by dragging tabs from one notebook to another. The menu for each
  window that has one (marked with a triangle at the left of the tab)
  is opened by left cliking on the tab.
  </p>
  <p>
  The <a MainWindow>main window</a>
  of Scid (with the graphical chess board) shows details of
  the active game and database. At any time, you can have up to nine
  databases open (five including the <a Clipbase>clipbase</a>),
  and each will have its own active game.
  (A game numbered 0 indicates a scratch game that is not part of the
  actual database).
  You can switch between the open databases with the
  <a Menus File>File menu</a>.
  </p>
  <p>
  For more information, please read the other help pages listed in the
  <a Index>Help Index</a>.
  </p>
  <p>
  See the <a Author>contact information</a> page if you need to contact the
  author of Scid.
  </p>
  
  <p><footer>(Updated: Scid 3.6.7, December 2008)</footer></p>
}


####################
### Hints page:
set helpTitle(Hints) "Scid Hints"
set helpText(Hints) {<h1>Scid Hints</h1>
  <p>
  This page contains useful hints in question and answer format to
  help you use Scid better. If you are new to Scid, please read the <a
  Guide>quick guide</a> first.  Most of the information on this page
  is available in more detail on the other help pages listed in the <a
  Index>index</a>.  If you think of a useful hint to add to this page,
  please send it to the <a Author>author of Scid</a>.
  </p>
  
  <h4>Can I get Scid to load a database when it starts?</h4>
  <p>
  Yes, you can add databases, <a PGN>PGN</a> files or <a EPD>EPD files</a>
  to the command line. For example:
  <ul>
  <li> <b>scid  mybase  games.pgn.gz</b> </li>
  </ul>
  will load the Scid database <b>mybase</b> and also load the
  Gzip-compressed <a PGN>PGN</a> file <b>games.pgn.gz</b>.
  </p>
  
  <h4>Is there an easier way to change the board size than using the
  options menu?</h4>
  <p>
  Yes, you can use the shortcut keys <b>Control+Shift+LeftArrow</b> and
  <b>Control+Shift+RightArrow</b> to decrease or increase the board size.
  </p>
  
  <h4>I am training by playing through a game, so I do not want Scid to
  print the next move in the game information area below the chessboard.
  Can I hide it?</h4>
  <p>
  You can hide the next move by pressing the <b>right</b> mouse button in the
  game information area, and selecting <b>Hide next move</b> from the
  menu that appears.
  </p>
  
  <h4>How can I see the ECO opening code for the current position?</h4>
  <p>
  The ECO code is displayed on the bottom line of the game
  information box, below the chessboard in the <a MainWindow>main window</a>,
  if you have the ECO classification file (<b>scid.eco</b>) loaded. <br>
  The <a ECO>ECO codes</a> help page explains how to load the ECO classification
  file and save options so it will be loaded every time you start Scid.
  </p>
  
  <h4>I am entering a game, and I am up to move 30, but just saw that move
  10 was wrong. How can I correct it and keep all the moves after it?</h4>
  <p>
  You can use the <a Import>Import</a> window; see the
  <a Moves Mistakes>entering moves</a> help page for more information.
  </p>
  
  <h4>How do I copy games from one database to another?</h4>
  <p>
  Use the <a Switcher>database switcher window</a>: drag from the source
  database to the target database to copy all games in the source database
  <a Searches Filter>filter</a>.
  </p>
  
  <h4>Every time I enter a move where one already exists, I get a
  "Replace move?" dialog box. How do I avoid that?</h4>
  <p>
  Turn it off with the <b>Ask before replacing moves</b> option in the
  <menu>Options: Moves</menu> menu.
  Or, get into the habit of taking back moves using the right-mouse button,
  which actually removes the move from the game if you are at the last move of
  the game.
  </p>
  
  <h4>How do I change column widths in the Game List window?</h4>
  <p>
  Click the left or right mouse button on each column title.
  </p>
  
  <h4>How can I use the tree window on a selection of games, not my whole
  database?</h4>
  <p>
  Use the <a Clipbase>clipbase</a>. Set your database filter to contain the
  games you want to use the tree on, then copy them to the clipbase using the
  <a Switcher>database switcher</a>. Then, just open the tree window in the
  clipbase.
  </p>
  
  <h4>The Tree is slow for large databases. How do I speed it up?</h4>
  <p>
  Save the Tree cache often, to save tree results for future use.
  See the caching section of the <a Tree>Tree</a> help page for details.
  </p>
  
  <h4>How can I edit the <a PGN>PGN</a> representation of the game directly?</h4>
  <p>
  You cannot use the <a PGN>PGN</a> window to edit the current game, but you can
  still edit its <a PGN>PGN</a> representation using the <a Import>Import game</a> window.
  Just open it (shortcut key: <b>Control+Shift+I</b>) and then press the
  <b>Paste current game</b> button, then edit the game, then press <b>Import</b>.
  </p>
  
  <h4>My database has several spellings for some player names. How do I
  correct them all?</h4>
  <p>
  You can edit individual names or spellcheck all the names in a database
  with the commands in the <menu>File: Maintenance</menu> menu.
  See the <a Maintenance Editing>maintenance</a> page.
  </p>
  
  <h4>I have two databases open: one with my own games, and a large database of
  grandmaster games. How do I compare one of my games to those in the large
  database?</h4>
  <p>
  Just open the <a Tree>Tree</a> window for the reference database and
  switch back to the game to compare by means of the database
  switcher. Alternatively, a base can directly be opened as tree via
  the <term>File</term> menu.
  </p>
  
  <p><footer>(Updated: Scid 3.6.28, December 2008)</footer></p>
}


####################
### Main window help:

set helpTitle(MainWindow) "Scid main window"
set helpText(MainWindow) {<h1>Scid main window</h1>
  <p>
  The main window in Scid displays the current board position of the
  active game and information about the current game and database.
  Separate help pages describe the <a Menus>menus</a> and ways to
  <a Moves>enter chess moves</a>.
  </p>
  
  <h3>Game navigation buttons</h3>
  <p>
  The navigation buttons above the board have the following meanings, from
  left to right:
  <ul>
  <li> <button tb_start> Move to the start of the game. [Home] </li>
  <li> <button tb_prev> Move back one move. [Left] </li>
  <li> <button tb_next> Move forward one move. [Right] </li>
  <li> <button tb_end> Move to the end of the game. [End] </li>
  <li> <button tb_invar> Move into a variation. [v] </li>
  <li> <button tb_outvar> Move out of the current variation. [z] </li>
  <li> <button tb_addvar> Add a new variation. [Ctrl-A]</li>
  <li> <button comment_avail> Signifies that the current move has a
  textual comment attached. This comment is displayed in a tooltip
  upon mouse hovering on the button. Pressing the button also opens up
  the <a Comment>Comment editor</a></li>
  <li> <button autoplay_off> Start/stop autoplay mode (see below).  [Ctrl-Z] </li>
  <li> <button tb_trial> Start/stop <a Moves Trial>trial mode</a>.
  [Ctrl-Space] </li>
  <li> <button tb_flip> Rotate the board 180 degrees. [.]</li>
  <li> <button tb_coords> Show/hide board coordinates. [0]</li>
  </ul>
  Keyboard shortcuts are given in square brackets.
  
  <h4><name Autoplay>Autoplay mode</name></h4>
  <p>
  In autoplay mode, Scid automatically plays the moves in the current game,
  moving forward until the end of the game. The time delay between moves can
  be set from the <menu>Options: Moves</menu> menu, and is saved to your
  options file when you save options.
  </p>
  <p>
  The shortcut key <b>Control+Z</b> starts or stops autoplay mode, and
  you can also exit autoplay mode by pressing the <b>Escape</b> key.
  </p>
  <p>
  If you start autoplay mode when the <a Analysis>analysis window</a> is open,
  the game is <term>annotated</term>: the score and analysis for each position
  are added to the game as a new variation just before each move is made.
  See the <a Analysis>analysis window</a> help page for details.
  </p>
  
  <h3>The game information area</h3>
  <p>
  The area below the chessboard showing information about the game is
  called the <term>game information area</term>.  Its first three
  lines show information such as the players, their country, result,
  date, and site.  This information is drawn from the games PGN
  header. To show country information the fields
  WhiteCountry/BlackCountry need to be available. The fourth line
  indicates the current position in the game, and what the next move
  is.
  </p>
  <p>
  Additionally, flags set for a given game are shown. Here, custom
  flags only show up by their respecitve number while the standard
  flags also show their textual meaning.
  </p>
  <p>
  Next to the flags a link called <term>Bib</term> may show up in case the
  PGN header contains a bibliographic link, ie. a link to the chess
  literature. This link is to be placed in a special header field
  called <term>Bib</term> and links the game to a BibTeX database containing
  the bibliographic information. This linking is done by almost
  standard LaTeX structure, that is the <term>Bib</term> field
  contains first the BibTeX key. Additinal information (e.g. page,
  game number...) may be added by <b>, addinfo</b>. To give more than
  one bibliogrpahic link several of this entries may be separated by
  <b> ; </b> (ie. space semicolon space). To resolve the bibliographic
  reference, Scid first searches a .bib-file named like the database
  in the database directory. If it can not find such a file it resorts
  to <b>~/.scid/data/Bookshelf.bib</b>.
  </p>
  <p>
  The fifth line shows the <a ECO>ECO</a> (Encyclopedia of Chess
  Openings) code for the current position, if the position appears in
  the ECO file being used.
  </p>
  <p>
  If Scid can find a suitable photo file (either in ~/.scid or Scids
  share directory within the photos folder) and photos for the players
  exist, also these photos show up in the information area. (Suitable
  photo files can be downloaded from the <url
  http://scid.sourceforge.net/>Scid website</url>; a documentation of
  their format is contained within these files.) However, the player
  photos tend to hide some text in the information area.  Therefore,
  they can be minimised temporarily by clicking on them.
  </p>
  <p>
  The game information area has a menu activated with the right mouse button,
  with options to hide the next move (useful if you are training using a game
  and want to guess each move) and to delete or undelete the current game.
  You can also activate this menu without using the mouse, by pressing the
  <b>[F9]</b> function key.
  </p>
  <p>
  On the right hand side of the board the material balance can be
  displayed by small piece symbols. E.g. if white has captured a
  bishop while black has captured a knight, a white bishop and a black
  knight show up.
  </p>
  
  <h4>Tablebases</h4>
  <p>
  The game information area also displays tablebase results whenever the
  displayed position reaches a material configuration found in a
  tablebase file. See the <a TB>tablebases</a> help page for details.
  </p>
  
  <h3>The status bar</h3>
  <p>
  The status bar shows information about the current database.
  The first field indicates the game status: <b>XX</b> means it has been
  altered and not yet saved, while <b>--</b> means it is unchanged,
  and <b>%%</b> indicates the database is read-only (not alterable).
  </p>
  <p>
  If you want a database to be opened read-only, just set the permissions
  of its Scid files, or at least its index file, for example:
  <b>chmod a-w myfile.si3</b>
  as a shell command, and it will be opened read-only by Scid.
  </p>
  <p>
  The status bar also shows how many games are currently in the
  <a Searches Filter>filter</a>.
  </p>
  
  <p><footer>(Updated: Scid 4.3, October 2011)</footer></p>
}


####################
### Menus help screen:

set helpTitle(Menus) "Menus"
set helpText(Menus) {<h1>Scid menus</h1>
  
  <h3><name File>File</name></h3>
  <ul>
  <li><menu>New</menu>: Creates a new empty Scid database.</li>
  <li><menu>Open</menu>: Opens an existing Scid database.</li>
  <li><menu>Close</menu>: Closes the current Scid database.</li>
  <li><menu>Finder</menu>: Opens the <a Finder>File Finder</a>.</li>
  <li><menu>Bookmarks</menu>: <a Bookmarks>Bookmarks</a> and bookmark
  functions.</li>
  <br>
  <li><menu>Open base as tree</menu>: Opens the tree window for a
  selected database</li>
  <li><menu>Open recent base as tree</menu>: Offers a list of recently
  opened bases to get their tree window.</li>
  <br>
  <li><menu>Maintenance</menu>: Database <a Maintenance>maintenance</a>
  functions.</li>
  <ul>
  <li><menu>Maintenance window</menu>: Opens/closes the database maintenance
  window.</li>
  <li><menu>Delete twin games</menu>: Finds <a Maintenance Twins>twin</a>
  games in the database.</li>
  <li><menu>ECO-Classify games</menu>: Recomputes the
  <a ECO>ECO code</a> for all games in the database. </li>
  <li><menu>Name editor</menu>: Replaces all occurrences of a player,
  event site or round name.</li>
  </ul>
  <li><menu>Read-Only</menu>: Makes the current database read-only.</li>
  <br>
  <li><menu>Switch to Database</menu>: These commands let you switch between
  the 8 available database slots and the <a Clipbase>clipbase</a>
  database.</li>
  <li>1/2/3/4/5/...</li> Offers a list of recently used databases for
  easy recall.</li>
  <li><menu>Exit</menu>: Exits Scid. </li>
  </ul>
  
  <h3><name Edit>Edit</name></h3>
  <ul>
  <li><menu>Add Variation</menu>: Adds a new empty variation for the
  next move, or for the previous move if there is no next move yet.</li>
  <li><menu>Delete Variation</menu>: Provides a submenu of variations for
  the current move, so one can be deleted.</li>
  <li><menu>Make First Variation</menu>: Promotes a variation to be the
  first variation of the current move.</li>
  <li><menu>Promote Variation to Main line</menu>: Promotes a variation
  to be the main line, swapping it with its parent.</li>
  <li><menu>Try Variation</menu>: Enters <a Moves Trial>trial mode</a> for
  testing a temporary variation without altering the current game.</li>
  <li><menu>Strip</menu>: Strips all comments or variations from the current
  game.</li>
  <li><menu>Undo</menu>: Allows to undo up to 10 recent changes.</li>
  <br>
  <li><menu>Empty Clipbase</menu>: Empties the <a Clipbase>clipbase</a>
  so it contains no games.</li>
  <li><menu>Copy this game to clipbase</menu>: Copies the current game
  to the <a Clipbase>clipbase</a> database. Additionally, the games
  curent <term>PGN notation</term> is added to the system clipboard.</li>
  <li><menu>Paste last clipbase game</menu>: Pastes the active game of
  the <a Clipbase>clipbase</a> to be the active game of the current
  database.</li>
  <br>
  <li><menu>Setup start board</menu>: Sets the starting position for the
  current game.</li>
  <li><menu>Copy position</menu>: Copies the current position as
  <term>FEN notation</term> to the system clipboard.</li>
  <li><menu>Paste start board</menu>: Sets the start board from the current
  text selection (clipboard). This selection has to be a valid
  <term>FEN</term> notation.</li>
  </ul>
  
  <h3><name Game>Game</name></h3>
  <ul>
  <li><menu>New Game</menu>: Resets the active game to an empty state,
  discarding any unsaved changes.</li>
  <li><menu>Load First/Previous/Next/Last Game</menu>: These load the first,
  previous, next or last game in the <a Searches Filter>filter</a>.</li>
  <li><menu>Reload this game</menu>: Reloads the current game, discarding
  any changes made.</li>
  <li><menu>Load Game Number</menu>: Loads the game given its game number
  in the current database.</li>
  <br>
  <li><menu>Save: Replace game</menu>: Saves the current game, replacing
  its original version in the database.</li>
  <li><menu>Save: Add new game</menu>: Saves the current game as a new
  game, appending to the end of the database.</li>
  <br>
  <li><menu>Identify opening</menu>: Finds the deepest
  position in the current game that is in the ECO file.</li>
  <li><menu>Goto move number</menu>: Goes to the specified move number in
  the current game.</li>
  <li><menu>Find novelty</menu>: Finds the first move of the current game
  that has not been played before in the current base.</li>
  </ul>
  
  <h3><name Search>Search</name></h3>
  <ul>
  <li><menu>Reset Filter</menu>: Resets the <a Searches Filter>filter</a>
  so all games are included. This does not affect a filter created by
  an eventually opened <a Tree>tree window</a>.</li>
  <li><menu>Negate filter</menu>: Inverts the filter criteria that are
  not set by an eventually opened <a Tree>tree window</a>.</li>
  <br>
  <li><menu>Current board</menu>: Searches for the
  <a Searches Board>current board</a> position.</li>
  <li><menu>Header</menu>: Searches by <a Searches Header>header</a>
  information such as player names. This filter is cummulative to
  an fiter eventually set by an open <a Tree>tree window</a>.</li>
  <li><menu>Material/Pattern</menu>: Searches by
  <a Searches Material>material</a> or chessboard patterns</a>. This
  filter is cummulative to an fiter eventually set by an open <a
  Tree>tree window</a>.</li>
  <br>
  <li><menu>Using search file</menu>: Searches using
  <a Searches Settings>settings</a> from a SearchOptions file. This
  filter is cummulative to an fiter eventually set by an open <a
  Tree>tree window</a>.</li>
  </ul>
  
  <h3><name Windows>Windows</name></h3>
  <ul>
  <li><menu>Comment Editor</menu>: Opens/closes the
  <a Comment>Comment Editor</a> window.</li>
  <li><menu>Game List window</menu>: Opens/closes the
  <a GameList>Game List window</a>.</li>
  <li><menu>PGN window</menu>: Opens/closes the
  <a PGN>PGN window</a>.</li>
  <li><menu>Tournament Finder</menu>: Opens/closes the
  <a Tmt>Tournament Finder</a> window.</li>
  <br>
  <li><menu>Database switcher</menu>: Opens/closes the
  <a Switcher>Database Switcher</a> window, which lets you switch to
  another database or copy games between databases easily.</li>
  <li><menu>Maintenance window</menu>: Opens/closes the database
  <a Maintenance>maintenance</a> window.</li>
  <br>
  <li><menu>ECO Browser</menu>: Opens/closes the
  <a ECO browser>ECO Browser</a> window.</li>
  <li><menu>Repertoire editor</menu>: Opens/closes the
  <a Repertoire>repertoire editor</a>. Note: since Scid 4.3 this
  function is deprecated in favour for <a TreeMasks>Tree Masks</a>.
  </li>
  <li><menu>Statistics window</menu>: Opens/closes the
  <term>Filter statistics window</term> which gives a win/loss summary
  of the games in the <a Searches Filter>filter.</a></li>
  <li><menu>Tree window</menu>: Opens/closes the <a Tree>tree window</a>.</li>
  <li><menu>Endgame Tablebase window</menu>: Opens/closes the window that
  displays <a TB>tablebase</a> information.</li>
  <li><menu>Correspondence window</menu>: Opens/closes the window for
  for handling correspondence chess games.</li>
  </ul>

  <h3><name Play>Play</name></h3>
  <ul>
  <li><menu>Serious game</menu>: Allows to play an installed
  <term>UCI</term> chess engine in a serious game, ie. in tournament
  conditions.</li>
  <li><menu>Tactical game</menu>: Allows to play the Phalanx chess
  engine at an adjustable level.</li>
  <li><menu>Play on FICS</menu>: Gives access to the Free Internet
  Chess Server (FICS) to play games of chess against human opponents
  or chess engines, observe games, or take part in trainings
  sessions.</li>
  <li><menu>Training</menu>: access various trainings modes available
  in Scid.</li>
  <li><menu>Correspondence Chess</menu>: access the functions for
  <a CCSetupDialog>correspondence chess configuration</a> and <a
  Correspondence>game play</a></li>
  <ul>
	  <li><menu>Configure</menu>: allows <a
	  CCSetupDialog>configuration</a> of the <a
	  Correspondence>correspondence chess</a> subsystem.
	  </li>
	  <li><menu>Observe games</menu>: allows to observe games by
	  fetching them from a website.
	  </li>
	  <li><menu>Open database</menu>: opens the default correspondence
	  chess database (cf. <a CCSetupDialog>configuration</a>)
	  </li>
	  <li><menu>Retrieve games</menu>: Fetch games form a server using
	  the <a CCXfcc>Xfcc</a> protocol.
	  </li>
	  <li><menu>Process inbox</menu>: Processes the correspondence
	  chess <a CCWorkflow>inbox to work in new games and moves</a> into
	  the current database. 
	  </li>
	  <li><menu>Send move</menu>: Transmitts to a server a move using
	  the <a CCXfcc>Xfcc</a> protocol.
	  </li>
	  <li><menu>Resign</menu>: resigns the current game (requires <a
	  CCXfcc>Xfcc</a>.)
	  </li>
	  <li><menu>Claim draw</menu>: claim a draw in the current game (requires <a
	  CCXfcc>Xfcc</a>.)
	  </li>
	  <li><menu>Offer draw</menu>: offer a draw in the current game
	  (requires <a CCXfcc>Xfcc</a>.)
	  </li>
	  <li><menu>Accept draw</menu>: accept the draw offer from the
	  opponent (requires <a CCXfcc>Xfcc</a>.)
	  </li>
	  <li><menu>Game page</menu>: opens the web page associated with a
	  <a CCXfcc>Xfcc</a> game.
	  </li>
	  <li><menu>New eMail Game</menu>: starts a new eMail based game.
	  </li>
	  <li><menu>Mail move</menu>: mails the move to the oponent in an
	  email based game.
	  </li>
  </ul>
  </ul>
  
  <h3><name Tools>Tools</name></h3>
  <ul>
  <li><menu>Analysis engine</menu>: Displays a list of all installed
  chess engines available for analysis to select and start one of
  them as analysis engine 1.</li>
  <li><menu>Analysis engine #2</menu>: Displays a list of all installed
  chess engines available for analysis to select and start one of
  them as analysis engine 2.
  </li>
  <li><menu>Start engine 1</menu>: Starts/stops the chess analysis
  engine, displaying the evaluation of the current position
  in the <a Analysis>analysis window</a>.</li>
  <li><menu>Start engine #2</menu>: Starts/stops a second analysis
  engine.</li>
  <li><menu>Crosstable</menu>: Constructs a tournament
  <a Crosstable>crosstable</a> for the current game. </li>
  <li><menu>Email manager</menu>: Opens/closes the <a Email>email manager</a>
  window, for managing email correspondence games.</li>
  <br>
  <li><menu>Rel. filter graph</menu>: Generates a <a
  FilterGraph>relative filter graph</a> e.g. to investigate popularity
  of the current opening by comparison of the current position against
  the whole database.
  </li>
  <li><menu>Abs. filter graph</menu>:  Generates a <a
  FilterGraph>absolute filter graph</a>
  </li>
  <li><menu>Opening report</menu>: Generates an
  <a Reports Opening>opening report</a> for the current position.</li>
  <li><menu>Piece Tracker</menu>: Opens the <a PTracker>piece tracker</a>
  window.</li>
  <li><menu>Book tuning</menu>: allows to adjust the probability
  values of a moved played in a selectable <a Book>opening book</a>).
  </li>
  <li><menu>Connect hardware</menu>: Allows external hardware to be
  used to enter moves. (E.g.  DGT electronic chessboard, Novag
  Citrine) 
  <ul>
		<li><menu>Configure</menu>: allows  <a HardwareConfig>basic
		parameters</a> to be set for usage of external hardware
		</li>
		<li><menu>Connect Input Engine</menu>: hooks up with hardware
		that supplies an Input Engine compatible driver (e.g. <url
		http://dgtdrv.sourceforge.net>dgtdrv website</url>.)
		</li>
		<li><menu>Connect Novag Citrine</menu>: hooks up with a Novag
		Citrine board.
		</li>
  </ul>
  </li>
  <br>
  <li><menu>Player information</menu>: Displays <a PInfo>player information</a>
  for one of the two players of the current game.</li>
  <ul>
	<li><menu>White</menu>: use the White player of the current game.</li>
	<li><menu>Black</menu>: use the Black player of the current game.</li>
  </ul>
  <li><menu>Player report</menu>: generates a <a Reports Player>player
  report</a>
  <li><menu>Rating graph</menu>: Displays the
  <a Graphs Rating>rating graph</a>.</li>
  <li><menu>Score graph</menu>: Displays the
  <a Graphs Score>score graph</a>.</li>
  <br>
  <li><menu>Export current game</menu>: Saves the current game to a text
  file in PGN, HTML or LaTeX format. See the <a Export>export</a> help
  page.</li>
  <li><menu>Export all filter games</menu>: Saves all games in the
  search <a Searches Filter>filter</a> to a text file in PGN, HTML or
  LaTeX format. See the <a Export>export</a> help page.</li>
  <br>
  <li><menu>Import <a PGN>PGN</a> game</menu>: Opens the <a Import>Import window</a>
  for entering a game by typing or pasting its text in
  <a PGN>PGN format</a>.</li>
  <li><menu>Import file of <a PGN>PGN</a> games</menu>: Imports a whole file containing
  games in <a PGN>PGN</a> format to the current database. Note, that several PGN
  files can be selected in this dialogue at once.</li>
  </ul>
  
  <h3><name Options>Options</name></h3>
  <p>
  This menu provides entries for setting most of Scid's configurable
  options.
  The <menu>Save options</menu> entry saves the current options to the
  file "<b>~/.scid/config/options.dat</b>" (or "<b>options.dat</b>" in the
  sub directory "<b>config</b>" of the Scid executable programs for Windows
  users); this file is loaded each time you start up Scid.
  </p>
  
  <h3><name Help>Help</name></h3>
  <p>
  This menu contains help functions, and access to the tip of the day
  window or the startup window which provides information about the
  files Scid loaded when it started.
  </p>
  
  <p><footer>(Updated: Scid 4.3, January 2011)</footer></p>
}


####################
### Entering moves help:

set helpTitle(Moves) "Entering moves"
set helpText(Moves) {<h1>Entering chess moves</h1>
  <p>
  In Scid, you can enter the moves for a game using the
  mouse or the keyboard. As you move the mouse over a square,
  it and one other square will change color if there is a legal
  move to or from that square. This is the <term>suggested move</term>.
  To make this move simply click the <term>left</term> mouse button.
  You can turn off move suggestion using the Options menu if it annoys you.
  </p>
  <p>
  To make any move other than the suggested move, you can use
  the <term>left</term> mouse button: just press the button over one square,
  and release it over the other square.
  </p>
  <p>
  If you want to enter a variation without being asked for a
  confirmation, use the middle mouse button of the mouse to enter the
  move.
  </p>
  <p>
  Depending on <menu>Options / Moves / Highlight last moves</menu> and
  the settings made there, Scid will mark the last move by a coloured
  frame around the involved fields.
  </p>
  
  <h4>Retracting a move</h4>
  <p>
  To take back a move, press the right mouse button, Control + Delete
  or Control + Backspace. This goes back one move, and deletes the
  move if it is the last in the game or variation.
  </p>
  
  <h4>Replacing old moves</h4>
  <p>
  When you enter a move at a point in the game where a move already exists,
  Scid will present a dialog box asking if you really want to replace the
  old move (the old move and all moves after it will be lost), or want
  to add the new move as a variation instead. Some people may find this
  dialog box annoying and always want to replace old moves, so it can be
  turned off with the <menu>Options: Moves</menu> menu option
  "<i>Ask before replacing moves</i>".
  </p>

  <h4>Marking fields and directions</h4>
  <p>
  colored squares and arrows can be entered directly on the board
  without the use of the <a Comment>Comment editor</a> by using the mouse
  buttons. For colored squares one can Shift-click on the square in
  question. Shift-Left button markes the square in green, the middle
  button in yellow, the right button in red. To draw arrows one can
  Ctrl-click on the source and target squares. The left mouse button
  again results in a green, the middle in a yellow and the right mouse
  button in a red arrow.
  </p>
  
  <h4><name Trial>Trial mode</name></h4>
  <p>
  If you are studying a game and reach a position where you want to try
  an alternative variation on the board without altering the game, select
  <b>Try variation</b> from the <menu>Edit</menu> menu to enter trial
  mode. In this mode, you can make temporary moves and changes to the
  game, then return to the original position when you exit trial mode.
  </p>
  
  <h3><name Mistakes>Correcting mistakes</name></h3>
  <p>
  If you are entering a game and suddenly see an incorrect move several
  moves earlier, it is possible to correct it without losing the extra
  moves you have added. The only way is to edit the <a PGN>PGN</a> representation
  of the game: open the <a Import>Import</a> window, select "Paste current
  game", correct the incorrect move, then select "Import".
  </p>
  
  <h3>Keyboard move entry</h3>
  <p>
  To enter moves at the keyboard, simply press letter and digit
  keys. Note that accepted moves should be in <term>SAN notation</term>,
  <i>without</i> the capture symbol (x) or the promotion symbol (=).
  Moves are matched case-insensitively, so you can type
  [n][f][3] instead of Nf3, for example -- but see the note below
  about conflicts with pawn moves.
  </p>
  <p>
  To ensure that no move is a prefix of any other move, the notation
  for kingside and queenside castling is [O][K] and
  [O][Q] respectively, instead of the usual O-O and O-O-O.
  </p>
  <p>
  As you enter a move, the status bar will show the list of matching moves.
  You can press the [space] bar at any time to choose the first
  matching move in the list and add it to the game.
  To delete a character, press [Backspace] or [Delete].
  </p>
  <p>
  <b>Note</b> that a lower-case letter matches to a pawn first, so a
  [b] can match to a pawn or Bishop, but if there is a conflict
  you must use a capital [B] for the Bishop move.
  </p>
  
  <h4>Auto-Completion</h4>
  <p>
  In the Options menu, you can turn on or off <term>Auto-Completion</term>
  of moves.
  With auto-completion, a move is made as soon as you have typed enough
  to distinguish it from any other legal move. For example, with
  auto-completion, you would only need to type [n][f] instead
  of [n][f][3] for <b>Nf3</b> in the starting position.
  </p>
  
  <h3><name Null>Entering null moves</name></h3>
  <p>
  <a Annotating Null>Null</a> (empty) moves can be useful in variations, where
  you want to skip a move for one side. You can enter a null move with the
  mouse by capturing one king with the other king, or with the keyboard by
  typing "<b>--</b>" (that is, pressing the minus key twice).
  </p>
  
  <h3><name Informant>Entering common annotation symbols</h3>
  <p>
  You can also add common <a NAGs>annotation symbols</a> using the keyboard
  in the main window, without needing to use the <a Comment>comment editor</a>
  window. The following list shows which symbols you can add, and their
  keyboard shortcuts:
  <ul>
  <li> !  : [!][Return] </li>
  <li> ?  : [?][Return] </li>
  <li> !? : [!][?][Return] </li>
  <li> ?! : [?][!][Return] </li>
  <li> !! : [!][!][Return] </li>
  <li> ?? : [?][?][Return] </li>
  <li> </li>
  <li> +- : [+][-] </li>
  <li> +/-: [+][/] </li>
  <li> += : [+][=] </li>
  <li> =  : [=][Return] </li>
  <li> -+ : [-][+] </li>
  <li> -/+: [-][/] </li>
  <li> =+ : [=][+] </li>
  </ul>
  <b>Note</b> Scid uses some of these symbols for automatic
  annotations, also. To this end, these symbols have to be associated
  with a certain pawn value. These pawn values can be set via Options
  / Game information / Configure Informant values. Note that since
  Scid 4.0 many NAGs can be displayed symbolically if your system
  suports UTF-8 properly. The connection between a NAGs numeric value
  and its symbolic representation within Scid is given on the page <a
  NAGs>Standard NAG values</a> which can be accessed e.g. by Ctrl-N
  from the <a Comment>Comment editor</a>
  
  <p><footer>(Updated: Scid 4.3, January 2011)</footer></p>
}


########################################
### Searches help screen:

set helpTitle(Searches) "Searches"
set helpText(Searches) {<h1>Searches in Scid</h1>
  <p>
  Scid can perform many different types of search on a database.
  The three main types of search are:
  <ul>
  <li><b>1)</b> for the current board, </li>
  <li><b>2)</b> for specified material and piece patterns, and </li>
  <li><b>3)</b> by header information such as players, result, date. </li>
  </ul>
  <p>
  In addition to these, there is also an automatic search mode called the
  <a Tree>Tree window</a> which is explained separately.
  </p>
  
  <h3><name Filter>The Search Filter</name></h3>
  <p>
  Searches in Scid are based on the concept of a <term>filter</term>.
  The filter represents a subset of the current database; at any time,
  each game is either included in or excluded from the filter.
  </p>
  <p>
  With each type of search, you can choose to restrict the existing
  filter, add to it, or ignore it and search the whole database.
  This choice permits complex searches to be built up incrementally.
  </p>
  <p>
  You can also copy all games in the filter of one database to another,
  using the <a Switcher>database switcher</a> window.
  </p>
  <p>
  With exact position, <a Tree>tree</a> or material/pattern searches, the
  move number of the first matching position of each matching game is
  remembered, so when you load each game it will show the matching position
  automatically.
  </p>
  <p>
  <b>Note</b> that searches only apply to the main line moves of a game,
  not to any moves in variations.
  </p>
  
  <h3><name Board>Search: Current Board</name></h3>
  <p>
  This search finds games that contain the current displayed position,
  ignoring castling and <i>en passant</i> rights.
  </p>
  <p>
  There are four board search types available. All four require a position
  to have the same exact material and side to move for a match.
  The types are:
  <ul>
  <li> [1] exact (the two positions must match on every square), </li>
  <li> [2] pawns (the pawn structure must match exactly, but other pieces
  can be anywhere), </li>
  <li> [3] files (the number of white and black pawns on each file must match
  exactly, but other pieces can be anywhere), and </li>
  <li> [4] material (pawns and pieces can be anywhere). </li>
  </ul>
  <p>
  The pawns search is useful for studying openings by pawn structure, and
  the files and material searches are useful for finding similar positions
  in an endgame.
  </p>
  <p>
  To search for an arbitrary position, you can set the position first
  (from the <menu>Edit: Setup Start Board</menu> menu) and then
  start the search.
  </p>
  <p>
  You can request that the search look in variations (instead of only
  examining actual game moves) by selecting the <b>Look in variations</b>
  checkbox, but this may make the search much slower if your database
  is large and has many games with variations.
  </p>
  
  <h3><name Material>Search: Material/Pattern</name></h3>
  <p>
  This search is useful for finding endgame or middlegame themes.
  You can specify minimum and maximum amounts of each type of material,
  and find patterns such as a Bishop on f7, or a pawn on the f-file.
  </p>
  <p>
  A number of common material and pattern settings are provided, such
  as Rook vs. Pawn endings, or isolated Queens pawns.
  </p>
  <p>
  <b>Hints:</b><br>
  The speed of pattern searches can vary widely. You can reduce the time
  needed for a search by setting restrictions intelligently. For example,
  if you set the minimum move number to 20 for an ending, all games that
  end in under 20 moves can be skipped.
  </p>
  
  <h3><name Header>Search: Header</name></h3>
  <p>
  This search can be used to find aspects of the game that are stored
  in the header (such as date, result, names, flags and ratings), so
  it does not require any moves to be decoded.
  </p>
  <p>
  For a game to match a Header search, <b>all</b> fields that you
  specify must match.
  </p>
  <p>
  The name fields (White, Black, Event, Site and Round) match on any text
  inside the name, case-insensitive and ignoring spaces.
  </p>
  <p>
  You can do case-sensitive wildcard searches for the White, Black, Event,
  Site and Round fields (with <b>?</b> representing one character and
  <b>*</b> representing zero or more characters) by putting the
  search text in double quotes. For example a search for the site <b>USA</b>
  will find American cities and also <b>Lausanne SUI</b>, which is probably
  not what you wanted! A search for the site <b>"*USA"</b> (remember to
  use the double-quotes) will only match cities in the United States.
  </p>
  <p>
  If you are searching for a particular player (or pair of opponents) as White
  or Black and it does not matter what color they played, select the
  <b>Ignore Colors</b> option.
  </p>
  <p>
  Additionally, an Annotator may be searched case insensitively. Note
  that this function requires the <b>Annotator</b> header field to be
  set properly. The checkbox <menu>annotated games only</menu> acts as
  a logical OR filter for the flags <b>Comments, Variations,
  Anotations</b>, that is can be used to select only those games that
  got any type of annotations.
  </p>
  <p>
  Finally, the Header search can be used to find any text
  (case-sensitive and without wildcards) in the <a PGN>PGN</a> representation of
  each game.  You may enter up to three text phrases, and they must
  all appear in a game for it to be a match.  This search is very
  useful for searching in the comments or extra tags of a game (such
  as <b>lost on time</b> or <b>Annotator</b>), or for a move sequence
  like <b>Bxh7+</b> and <b>Kxh7</b> for a bishop sacrifice on h7 that
  was accepted.  However, this type of search can be <i>very</i> slow
  since all the games that match other criteria must be decoded and
  scanned for the text phrases.  So it is a good idea to limit these
  searches as much as possible.  Here are some examples.  To find
  games with under-promotions to a rook, search for <b>=R</b> and also
  set the <b>Promotions</b> flag to Yes.  When searching for text that
  would appear in comments, set the <b>Comments</b> flag to Yes.  If
  you are searching for the moves <b>Bxh7+</b> and <b>Kxh7</b>, you
  may want to restrict the search to games with a 1-0 result and at
  least 40 half-moves, for example, or do a material/pattern search
  first to find games where a white bishop moves to h7.
  </p>
  <p>
  <b>Note</b> If a search by <a ECO>ECO</a> code is performed, games
  that have no ECO code attached are ignored.
  </p>
  
  <h3><name Settings>Saving search settings</name></h3>
  <p>
  The Material/Pattern and Header search windows provide a
  <term>Save settings</term> button. This lets you save the current
  search settings for later use, to a <term>SearchOptions</term> file
  (suffix .sso).
  To search using a previously saved SearchOptions (.sso) file, select
  <menu>Open</menu> from the <menu>Search</menu> menu.
  </p>
  
  <h3>Search times and skipped games</h3>
  <p>
  Most searches produce a message indicating the time taken and the number
  of games that were <term>skipped</term>. A skipped game is one that can
  be excluded from the search without decoding any of its moves, based on
  information stored in the index. See the help page on
  <a Formats>file formats</a> for more information.
  </p>
  
  <p><footer>(Updated: Scid 3.6.2, December 2006)</footer></p>
}


#################
### Clipbase help:

set helpTitle(Clipbase) "The Clipbase"
set helpText(Clipbase) {<h1>The Clipbase database</h1>
  <p>
  In addition to the databases you have open, Scid provides
  a <term>clipbase</term> database, which is just like any other database
  except that it exists in memory only and has no files for permanent storage.
  </p>
  <p>
  The clipbase is useful as a temporary database, for merging
  the results of searches on more than one database or for treating the
  results of a search as a separate database.
  </p>
  <p>
  For example, assume you want to prepare for an opponent and have searched
  a database so the <a Searches Filter>filter</a> contains only games where
  the opponent played White.
  You can copy these games to the clipbase (by dragging from their database
  to the clipbase in the <a Switcher>database switcher</a> window),
  switch to the clipbase database, and then open
  the <a Tree>Tree window</a> to examine that players repertoire.
  </p>
  <p>
  Note that you can copy games in the filter of one database directly to another
  opened database (without needing the clipbase as an intermediary
  location) using the <a Switcher>database switcher</a> window.
  </p>
  <p>
  Note that the clipbase <i>cannot</i> be closed; selecting the
  <menu>File: Close</menu> command while in the clipbase is equivalent
  to <menu>Edit: Reset Clipbase</menu> which empties the clipbase.
  </p>
  <p>
  The clipbase has a limit of 100,000 games at any time, since it exists in
  memory only.
  </p>
  
  <p><footer>(Updated: Scid 3.6.8,March  2007)</footer></p>
}

#################################
### Variations and comments help:

set helpTitle(Annotating) "Annotating games"
set helpText(Annotating) {<h1>Annotating games</h1>
  <p>
  Scid lets you add notes to games. There are three types of
  annotation you can add after a move: symbols, a comment, and
  variations. This section describes manual annotations, see the <a
  Analysis Annotating>Analyis</a> for engine supported analysis.
  </p>
  
  <h3>Symbols and comments</h3>
  <p>
  Symbols are used to indicate an evaluation of the position (such as
  "+-" or "=") or point out good ("!") and bad ("?") moves, while
  comments can be any text. To add symbols and comments to a game, use
  the <a Comment>Comment editor</a> window.
  There is also a help page listing <a NAGs>standard symbol values</a>.
  </p>
  <p>
  Note that each move can have more than one annotation symbol, but only
  one comment. A comment before the first move of the game is printed as text
  before the start of the game.
  </p>
  
  <h3><name Vars>Variations</name></h3>
  <p>
  A <term>variation</term> of a move is an alternative sequence of
  moves at a particular point in a game. Variations can contain
  comments and even recursively have sub-variations. The buttons
  above the board with a "<b>V</b>" symbol, and commands in the
  <menu>Edit</menu> menu, can be used to create, navigate and edit
  variations.
  </p>
  
  <h4>Keyboard shortcuts</h4>
  <p>
  When a move has variations, they are shown in the game information
  area. The first will be named <b>v1</b>, the second <b>v2</b>, etc.
  You can click on a variation to enter it, or press "<b>v</b>". In
  the latter case the <term>Variation</term> window will pop up
  allowing to select a variation using the cursor keys. Setting
  Options / Moves / Show variation window will pop up this window
  automatically every time a move with a variation is found while
  navigating through the game using the cursor keys. In the variation
  window one can enter the variation by selecting it with the up/down
  cursor keys and hitting enter or clicking on it with the mouse. This
  allows for navigation through the game with the cursor keys only.
  To leave a variation, you can use the "<b>z</b>" shortcut key. At
  the beginning of the variation, the up arrow can be used
  alternatively.
  </p>
  <p>
  Note that in case a game has variations you can also enter the
  variation by just playing the move of the variation in question. To
  explicitly add a new variation starting with the same move (e.g. to
  simplify deeply nested variation trees) press Ctrl-A to explicitly
  add a variation and only then play the move.
  </p>
  <p>
  Setting Options / Moves / Show arrows for variations may be set to
  display the existing variations on the main board. This can be
  especially helpful on computers with small displays (Netbooks)
  and/or in conjuction with disabling both PGN window and game
  informaion area (Options / Windows / Show game information).
  </p>
  
  <h3><name Null>Null moves</name></h3>
  <p>
  Sometimes, you may find it useful in a variation to skip over a move
  for one side. For example, you may want to add the move 14.Bd3 to
  a variation and point out that it threatens 15.Bxh7+ Kxh7 16.Ng5+
  with an attack. You can do this by making a <term>null move</term>
  between 14.Bd3 and 15.Bxh7+, in the above example. A null move is
  displayed as "<b>--</b>" and can be inserted using the mouse by making
  an illegal move of capturing one king with the other, or from the
  keyboard by typing "<b>--</b>" (two minus signs).
  </p>
  <p>
  Note that null moves are not a part of the <a PGN>PGN</a> standard, so if you
  export games with null moves to a <a PGN>PGN</a> file, Scid will provide (among
  other export options) an option to preserve null moves or convert them
  to comments for compatibility with other software.
  See the <a Export>Exporting</a> help page for more details.
  </p>
  <p>
  Also note, that Scid is capable of handling the move <term>Z0</term>
  as a null move, a notation that is common in some commercial chess
  applications.
  </p>
  
  <p><footer>(Updated: Scid 3.6.26, October 2008)</footer></p>
}

###############################
### Comment editor window help:

set helpTitle(Comment) "Comment Editor window"
set helpText(Comment) {<h1>The Comment Editor window</h1>
  <p>
  The Comment Editor window lets you add or edit comments and symbolic
  annotation symbols for moves in the active chess game.
  </p>
  
  <h3>Annotation symbols</h3>
  <p>
  Scid uses the <a Author Related>PGN standard</a> for annotation
  symbols, accepting <a NAGs>NAG (numeric annotation glyph)</a> values
  for annotations.  Some of the most common symbols (such as "!" or
  "+-") are displayed as symbols, and have a button in the comment
  editor window for fast entry. For other symbols, you can enter the
  appropriate numeric NAG value which is a number from 1 to 255.  For
  example, the NAG value 36 means "White has the initiative" and will
  be displayed as "$36" in the <a PGN>PGN text</a> of the game. If
  your system properly supports UTF-8 character sets many of the NAG
  symbols can be displayed by their <a NAGs>glphys</a>. 
  </p>
  <p>
  See the help page of <a NAGs>NAG values</a> for NAG values defined
  by the <a PGN>PGN</a> standard. This page can be accessed from the
  Comment editor by pressing Ctrl-N.
  </p>
  <p>
  <b>Hint:</b> You can add the common move evaluation symbols (!, ?,
  !!, ??, !? and ?!) while in the main window, without needing to use
  the comment editor window, by typing the symbol followed by the
  [Return] key.  This is especially useful if you are <a
  Moves>entering chess moves</a> using the keyboard. Also note that
  the <a PGN>PGN window's</a> context menu offers many of the most
  common symbols for direct annotation.
  </p>
  
  <h3>Comments</h3>
  <p>
  You can edit comments by typing in the text area provided and using
  the Clear, Revert and Store buttons. You do not need to press the
  Store button to update a comment; it is automatically updated
  whenever you leave the comment editor window e.g. by activating
  another window or tab.
  </p>
  <p>
  You can move through the moves of a game directly from within the
  comment editor by pressing Alt and the left/right cursor keys. To
  jump from the NAG entry and the free text entry Alt-N may be used
  for speedy navigation.
  </p>
  <p>
  <b>Hint:</b> To add a comment before the first move in a variation,
  go to the first move and hit the left arrow key once and then insert
  the comment. Also note that by pressing Ctrl-A a variation can be
  added right from within the comment editor. This eases creation
  of a pre move comment for the first move of a variation.
  </p>
  
  <h3>Coloring squares</h3>
  <p>
  Colored markers may be added to the chess board by drawing them on
  the little helper board that can be exapanded left of the comment
  window. The display of this board is toggled by <button tb_coords>.
  Scid will remember the state of this board if options are saved.
  Once the little helper board is expanded, select the marker to use
  from the buttons below the board, and the color from the color
  palette above and just click on the square to mark.
  </p>
  <p>
  A square may also be colored by using a special embedded command
  which can appear anywhere in a comment. The command format is:
  </p>
  <ul>
  <li><b>[%draw marker,square,color]</b><li>
  </ul>
  <p>
  where <b>square</b> is a square name like d4 and <b>color</b> is any
  recognized color name (such as red, blue4, darkGreen, lightSteelBlue, etc)
  or RGB code (a <b>#</b> followed by six hexadecimal digits, such as #a0b0c8).
  If the color is omitted, it defaults to <red>red</red>.
  <b>marker</b< may be full,circle,disk,x,+,-,?,!,= or the numbers
  1..9.
  </p>
  <p>
  A comment may contain any number of color commands, but each must have
  in its own <b>[%draw...]</b> tag.
  For example, the comment text</p>
  <p>
  Now d6 [%draw full,d6,red] is weak and the knight can attack it
  from b5. [%draw circle,b5,#000070]
  </p>
  <p>
  will color d6 <red>red</red> and b5 with the dark-blue color
  <darkblue>#000070</darkblue>.
  </p>
  
  <h3>Drawing arrows</h3>
  <p>
  You can draw an arrow from one square to another using a special
  comment command similar to the for coloring squares described above.
  The format is:
  </p>
  <ul>
  <li><b>[%arrow fromSquare toSquare color]</b><li>
  </ul>
  <p>
  where <b>fromSquare</b> and <b>toSquare</b> are square names like d4
  and <b>color</b> is any recognized color name (such as red, blue4, etc)
  or RGB code (like #a0b0c0).
  If the color is omitted, it defaults to <red>red</red>.
  </p>
  <p>
  For example, the comment text
  </p>
  <p>
  The c3-knight and c4-bishop control the weak d5 square.
  [%arrow c3 d5 red] [%arrow c4 d5 blue]
  </p>
  <p>
  will draw a red arrow from c3 to d5 and a blue one from c4 to d5.
  </p>

  <p>
  <b>Note</b>
  Colored squares and arrows can be entered directly on the board
  without the use of the Comment editor by using the mouse
  buttons. For colored squares one can Shift-click on the square in
  question. Shift-Left button markes the square in green, the middle
  button in yellow, the right button in red. To draw arrows one can
  Ctrl-click on the source and target squares. The left mouse button
  again results in a green, the middle in a yellow and the right mouse
  button in a red arrow.
  </p>
  
  <p><footer>(Updated: Scid 4.3, January 2011)</footer></p>
}

####################
### Crosstable window help:

set helpTitle(Crosstable) "Crosstable window"
set helpText(Crosstable) {<h1>The Crosstable window</h1>
  <p>
  The crosstable window shows the tournament crosstable for the
  current game. Each time you refresh the crosstable window (by
  pressing its Refresh button, by pressing the <b>Return</b> key in the
  crosstable window, or by typing <b>Control+Shift+X</b> in the
  <a MainWindow>main</a> or <a GameList>game list</a> windows), Scid
  searches for all games in the same tournament as the current game.
  </p>
  <p>
  Any game played up to <b>twelve months before or after</b> the current game,
  with the <b>exact same Event and Site tags</b>, is considered to be in
  the tournament.
  </p>
  <p>
  A single left-mouse button click on any result in the crosstable
  loads the corresponding game.
  You can add all the games in the tournament to the
  <a Searches Filter>filter</a>
  with the <b>Add to filter</b> button in the crosstable window.
  </p>
  
  <h4>Crosstable window menus</h4>
  <p>
  The <menu>File</menu> menu lets you print the current table to a file
  in plain text, LaTeX or HTML table format.
  </p>
  <p>
  The <menu>Display</menu> menu allows you to choose the table format:
  <b>All-play-all</b>, <b>Swiss</b> or <b>Knockout</b> or <b>Auto</b>.
  </p>
  <p>
  The all-play-all format (for round-robin-type events) has a limit of 30
  players, but the Swiss format (for tournaments with many players) can
  display up to 200 players and up to 20 rounds. <b>Auto</b>, which chooses
  the best format automatically for each tournament, is the default.
  </p>
  <p>
  Note that Scid uses the <b>Round</b> tag of each game to produce a Swiss
  crosstable, so you will not see any games in the Swiss table for a tournament
  if its games do not have numeric round values: 1, 2, 3, etc.
  </p>
  <p>
  The Display menu also lets you customize the data presented to
  include or exclude ratings, countries and player titles. You can also
  choose whether color allocations in Swiss tables are displayed.
  </p>
  <p>
  The <b>Separate score groups</b> option only affects the layout of the table
  when the players are sorted by score: it causes a blank line to be inserted
  between each group of players with the same score.
  </p>
  <p>
  The <menu>Sort</menu> menu allows you to sort the players by name, rating
  or score; by score is the default.
  </p>
  <p>
  The <menu>Color</menu> menu lets you turn color (hypertext) display on or off.
  Since it can take a long time to format and display large crosstables in
  hypertext, selecting <b>Plain text</b> for large events will save a
  lot of time.
  However, in plain text mode you cannot click on players or games.
  </p>
  
  <h4>Duplicate games in crosstables</h4>
  <p>
  To get good results with the crosstable, you should mark duplicate games
  for deletion and your games should have consistent spelling of player,
  site and event names.
  See the <a Maintenance>database maintenance</a> page for help on
  deleting duplicate games and editing (or spellchecking)
  player/event/site names.
  </p>
  
  <p><footer>(Updated: Scid 3.6.15, May 2007)</footer></p>
}


####################
### Database switcher help:

set helpTitle(Switcher) "Database Switcher"
set helpText(Switcher) {<h1>The Database Switcher window</h1>
  <p>
  The Database Switcher window provides a view which makes it easy to
  switch between databases or copy games between databases.
  The name, <a Searches Filter>filter</a> state and graphic type icon
  of each database is displayed, and the active database is highlighted
  with a yellow background.
  </p>
  <p>
  You can open the database switcher window from the <menu>Windows</menu> menu,
  or by its shortcut key: <b>Control+D</b>.
  </p>
  <p>
  To copy all the filtered games in one database to another, drag with the
  left mouse button from the source base to the target base. You will then
  see a confirmation dialog (if the target database is not the
  <a Clipbase>clipbase</a>) if the games can be copied, or an error message
  if the games cannot be copied (for example, if a selected database is not
  open).
  </p>
  <p>
  Pressing right mouse button over a database produces a popup menu applying
  to that database, from which you can change the database type icon or
  reset its <a Searches Filter>filter</a>. You can also use this menu to
  change the orientation of the window (to arrange the database slots
  vertically or horizontally) which is useful for smaller screens.
  </p>
  
  <p><footer>(Updated: Scid 3.6.2, December 2006)</footer></p>
}


####################
### File Finder window help:

set helpTitle(Finder) "File Finder window"
set helpText(Finder) {<h1>The File Finder window</h1>
  <p>
  The <term>File Finder</term> helps you find files of any type you can
  use in Scid: databases, <a PGN>PGN</a> files, <a EPD>EPD</a> files,
  and <a Repertoire>repertoire</a> files.
  </p>
  <p>
  The Finder shows useful information about each file, such as its size
  (see below) and date of last modification. You can open any displayed
  file by selecting it with a single left mouse button click.
  </p>
  
  <h3>Looking in subdirectories</h3>
  <p>
  When you want to find all files in all subdirectories of the current
  directory, turn on the <b>Look in subdirectories</b> checkbox. This
  will make Scid recursively examine every subdirectory for files that
  can be opened in Scid. This can take a long time if there are many
  subdirectories, so you may not want to do it for a directory near the
  root of the file system. You can interrupt the file search by pressing
  the <b>Stop</b> button.
  </p>
  
  <h3>File sizes</h3>
  <p>
  The meaning of a file size displayed by the Finder depends on the file
  type. For Scid databases and <a PGN>PGN</a> files, it is the number of games. For
  EPD files, it is the number of positions. For repertoire files, it is
  the number of (include or exclude) lines.
  </p>
  <p>
  For all file types except Scid databases, the file size is an estimate
  taken by examining only the first 64 kilobytes of the file, so the size
  may not be correct for files larger than 64 kb. Estimate sizes are shown
  with a tilde (~) to show they are not exact.
  </p>

  <p>
  For easy manipulation of Scid databases, the Finder offers a context
  menu. From this menu, accessible by a right mouse click as usual,
  the following functions can be performed
  <ul>
      <li><term>Open</term> will open the file in question, this is
      the same as just clicking on the file with the left mouse
      button.</li>
      <li><term>Backup</term> copies the file to its original name
      appended by the current date and time.</li>
      <li><term>Copy</term> copies the selected database to a new
      location.</li>
      <li><term>Move</term> moves the selected database to a new
      location.</li>
      <li><term>Delete</term> deletes the selected database.</li>
   </ul>
   These functions are especially helpful for Scid databases as these
   consist of several files.
  </p>
  
  <p><footer>(Updated: Scid 3.6.26, October 2008)</footer></p>
}

####################
### Tournament Finder window help:

set helpTitle(Tmt) "Tournament Finder window"
set helpText(Tmt) {<h1>The Tournament Finder window</h1>
  <p>
  The <term>Tournament Finder</term> lets you find tournaments in the
  current database. It scans all the database games and collates data
  about the tournaments found. Note that two games are considered to
  be in the same tournament if they have the same Event tag, same Site
  tag and were played within three months of each other.
  </p>
  <p>
  You can limit the list of tournaments by the number of players and
  games, date, mean Elo rating and country, by editing the fields below
  the tournament list and then pressing the <b>Update</b> button.
  </p>
  <p>
  The displayed list can be sorted by date, number of players, number
  of games, mean Elo rating, site, event or the surname of the winner.
  Select the category from the <menu>Sort</menu> menu or click on a
  column title to change the sort field.
  </p>
  <p>
  To load the first game of any displayed tournament, just click the
  left mouse button when its line is highlighted. This will also
  update the <a Crosstable>Crosstable</a> window if it is open.
  If you press the right mouse button instead, the game will be loaded
  and the Crosstable window will be opened even if it is closed.
  </p>
  <p>
  To speed up the tournament searching process, it is a good idea to
  set a fairly small date range (like a few years at most) or select
  a particular country (by its three-letter standard code). Doing
  these will greatly reduce the number of games Scid has to consider
  when trying to form tournaments out of the games in the database.
  </p>
  
  <p><footer>(Updated: Scid 3.6.2, December 2006)</footer></p>
}

####################
### GameList window help:

set helpTitle(GameList) "Game List window"
set helpText(GameList) {<h1>The Game List window</h1>
  <p>
  The Game List window displays a one-line summary for each game included
  in the current <term>filter</term>.
  </p>
  
  <h3>Navigating the game list</h3>
  <p>
  You can scroll the game list using the slider bar or the four
  buttons under the list.
  You can also use the [Home], [End],
  [Page Up], [Page Down] and arrow keys to scroll
  using the keyboard.
  </p>
  <p>
  You can find the next game in the list which has certain text in its
  White, Black, Event or Site field, using the <b>Find text</b> box.
  </p>
  
  <h3>Actions on games in the list</h3>
  <p>
  To load a game from the game list, double-click the left mouse button
  on the game.
  Clicking the middle mouse button shows the initial moves of a game;
  this can be useful for checking a games opening before loading it.
  </p>
  <p>
  The right mouse button produces a menu for the selected game, in which
  you can browse or merge the game (see below), delete (or undelete) the
  game, or exclude it from the filter.
  Note that deleting a game only turns on its delete flag; it will remain in
  the database until you <a Compact>compact</a> it.
  </p>
  
  <h3>Configuring the game list</h3>
  <p>
  Click the left or right mouse button on a column title to configure the
  game list. You can alter widths, add or remove columns, and change
  the color for each column.
  </p>
  <p>
  If you only want to change the width of a column, there is a shortcut:
  while pressing the <b>Control</b> (or <b>Shift</b>) key, pressing
  the left mouse button on the column title will make it narrower
  and pressing the right mouse button will make it wider.
  </p>
  
  <h3>Altering the size of the game list</h3>
  <p>
  The size of the game list window is stored in the options file
  whenever you save options.
  So if you want the game list to show 10 games by default, just resize
  the game list window and then select <menu>Save options</menu>
  from the <menu>Options</menu> menu.
  </p>
  
  <h3><name Browsing>Browsing and merging games</name></h3>
  <p>
  The game list right-mouse menu (and some other windows, such as the
  <a Reports Opening>opening report</a> window and the
  <a Tree Best>best games list</a> of the <a Tree>tree</a> window)
  provide the choice of loading, browsing or merging a game.
  </p>
  <p>
  When <term>Browse game</term> is selected, the moves of the selected
  game (without comments or variations) will be displayed in a separate
  window. This is a useful way of previewing another game without
  affecting the currently loaded game. The size of this window may be
  changes by +/- keys or Ctrl-Mousewheel.
  </p>
  <p>
  The <term>Merge game</term> feature provides a way to include the
  selected game as a variation of the current game. Scid finds the
  deepest point where the selected game differs from the current
  game (taking transpositions into account) and adds a variation
  for the selected game at that position. The selected game can also be merged
  with the current game of another opened base (this base must not be set read only).
  You can change the number
  of moves of the selected game to be shown, depending on whether you
  are interested in adding the whole game or just its opening phase.
  </p>
  
  <p><footer>(Updated: Scid 3.7.2, april 2009)</footer></p>
}


####################
### Import window help:

set helpTitle(Import) "Import window"
set helpText(Import) {<h1>The Import window</h1>
  <p>
  Scids Import window provides an easy way for you to paste a game
  in <a PGN>PGN format</a> into Scid from some other application or window.
  </p>
  <p>
  The large white frame in the window is where you type or paste
  the text of the game in <a PGN>PGN</a> format, and the gray frame below it
  provides feedback of any errors or warnings.
  </p>
  
  <h3>Editing the current game with the Import window</h3>
  <p>
  The Import window also doubles as a convenient way to make a few changes
  to the current game: you can paste the current game into the
  Import window (with the <b>Paste current game</b> button), edit the
  text, and click <b>Import</b> when done.
  </p>
  
  <h3>PGN tags in the Import window</h3>
  <p>
  Scid expects to see <a PGN>PGN</a> header tags such as
  <ul>
  <li> <b>[Result "*"]</b> </li>
  </ul>
  before any moves, but you can just paste in a game fragment like
  <ul>
  <li> <b>1.e4 e5 2.Bc4 Bc5 3.Qh5?! Nf6?? 4.Qxf7# 1-0</b> </li>
  </ul>
  without any header tags and Scid will import it.
  </p>
  
  <h3>Using <a PGN>PGN</a> files in Scid</h3>
  <p>
  If you want to use a <a PGN>PGN</a> format file in Scid but do not
  want to convert it with <a Pgnscid>pgnscid</a> first, there are two
  possible ways.
  </p>
  <p>
  First, you can import the games in the file to an existing database
  with the <menu>Tools: Import file of <a PGN>PGN</a> games...</menu> menu command.
  </p>
  <p>
  The alternative is to open the <a PGN>PGN</a> file directly in Scid. However, PGN
  format files are opened read-only and consume more memory than a
  comparable Scid database, so this is only recommended for relatively
  small <a PGN>PGN</a> files.
  </p>
  
  <p><footer>(Updated: Scid 3.6.2, December 2006)</footer></p>
}

####################
### Exporting help:

set helpTitle(Export) "Exporting games"
set helpText(Export) {<h1>Exporting games</h1>
  <p>
  You can use commands under the <menu>Tools</menu> menu to export the
  current game or all games in the current filter to a text file.
  </p>
  <p>
  Four text file formats are available: <a PGN>PGN</a> (portable game
  notation), HTML (for web pages), HTML and JavaScript (for
  interactive web pages) and LaTeX (a popular typesetting system).
  </p>
  <p>
  When exporting, you can choose to create a new file, or add the
  games to an existing file of games exported by Scid.
  </p>
  
  <h3>Diagrams</h3>
  <p>
  When exporting in HTML or LaTeX format, Scid will automatically add
  a diagram wherever a diagram <a NAGs>nag</a> ("D") or a <a
  Comment>comment</a> that starts with the character "#" appears in
  the game.
  </p>
  
  <h3><name Null>Null moves in <a PGN>PGN</a> Export</name></h3>
  <p>
  Scid allows <a Annotating Null>null (empty) moves</a> to be stored
  in games, as they can be helpful when annotating games using
  variations.  However, the <a PGN>PGN</a> standard has no null move concept. So
  if you export Scid games with null moves to a <a PGN>PGN</a> file, other
  PGN-reading software will not be able to read the null moves.
  </p>
  <p>
  To solve this problem, Scid provides an extra option,
  <b>Convert null moves to comments</b>, when exporting games in <a PGN>PGN</a> format.
  If you want to create a <a PGN>PGN</a> file that other software can use, turn this
  option on and variations containing null moves will be converted to
  comments. However, if you want to create a <a PGN>PGN</a> file that can be imported
  back into Scid later with null moves preserved, leave the option off.
  </p>
  
  <h3>HTML Export</h3>
  <p>
  Scid can export games to an HTML file. For diagrams to appear, you
  will need the diagram images (distributed with Scid in the directory
  "<b>bitmaps/</b>") to be in a subdirectory <b>bitmaps/</b> under the
  directory the HTML file is in.
  </p>

  <h3>HTML with JavaScript Export</h3>
  <p>
  While the HTML export generates a static file that may contain
  static board diagrams, this format offers dynamic HTML, that allows
  to move through the game interactively with the mouse.
  </p>
  <p>
  This format consists of several files that need to be stored in a
  specific structure. Therefore, it is advisable to first generate a
  empty folder that will contain these files. The name of the main
  file can be specified and it will get the extension html (e.g.
  mygame.html). This file should be loaded by the web browser. The
  other files are required to exist in exactly the position the export
  filter places them. However, the whole folder can easily be uploaded
  to some web server.
  </p>
  
  <h3>LaTeX Export</h3>
  <p>
  Scid can export games to a LaTeX file.  Games be printed two columns
  to a page and moves are in figurine algebraic notation with proper
  translation of the NAG symbols. Diagrams are added whenever a
  <term>D</term> comment is found.
  </p>
  <p>
  See the <a LaTeX>Using LaTeX with Scid</a> help page for more information.
  </p>
  
  <p><footer>(Updated: Scid 3.6.26, October 2008)</footer></p>
}

####################
### LaTeX help:

set helpTitle(LaTeX) "Scid and LaTeX"
set helpText(LaTeX) {<h1>Using LaTeX with Scid</h1>
  <p>
  Scid can save games and opening reports to files in LaTeX format.
  LaTeX is an extension to TeX, a popular typesetting system.
  </p>
  <p>
  To typeset the LaTeX files produced by Scid, you must have
  LaTeX (of course) and have the "chess12" chess font package installed.
  This font package is usually not part of standard LaTeX installations,
  so even if you have LaTeX, you may not have the chess font.
  </p>
  <p>
  For information about downloading and installing the LaTeX chess font,
  visit the
  <url http://scid.sourceforge.net/latex.html>Using LaTeX with Scid</url>
  page at the <url http://scid.sourceforge.net/>Scid website</url>.
  </p>
  
  <p><footer>(Updated: Scid 3.6.2, December 2006)</footer></p>
}

####################
### <a PGN>PGN</a> window help:

set helpTitle(PGN) "PGN window"
set helpText(PGN) {<h1>The <a PGN>PGN</a> window</h1>
  <p>
  Scids <a PGN>PGN</a> window displays the contents of the current game in
  standard <a PGN>PGN</a> representation. In the move text, comments appear {in
     braces} and variations appear (in parentheses).
  </p>
  
  <h3>PGN format</h3>
  <p>
  <a PGN>PGN</a> (Portable Game Notation) is a common standard for transferring
  chess games between computer programs.  A <a PGN>PGN</a> game consists of two
  sections. The first is the header, which contains tags such as
  <b>[White "Kasparov, Gary"]</b>
  and
  <b>[Result "1/2-1/2"]</b>.
  </p>
  <p>
  The second section contains the actual moves of the game, in
  standard algebraic notation (SAN) along with any variations,
  <a NAGs>annotation symbols</a> and <a Comment>comments</a>.
  </p>
  
  <h3>Actions in the <a PGN>PGN</a> window</h3>
  <p>
  You can use the <a PGN>PGN</a> window to navigate around the game: clicking the
  left mouse button on a move will jump to that move. Click the left
  mouse button on a comment will edit it.  The arrow keys and
  (<b>v</b> and <b>z</b> keys for entering or leaving variations) work
  for game navigation just as in the main window.  As in the main
  window, hitting v will cause the <term>Variation</term> window to
  pop up allowing to select a variation using the cursor keys. Setting
  Options / Moves / Show variation window will pop up this window
  automatically every time a move with a variation is found while
  navigating through the game using the cursor keys. In the variation
  window one can enter the variation by selecting it with the up/down
  cursor keys and hitting enter or clicking on it with the mouse. This
  allows for navigation through the game with the cursor keys only.
  Clicking on a move with middle mouse button will display a small
  board. Clicking on right mouse button will popup a contextual menu.
  </p>
  <p>
  From the context menu the following functions are available
  <ul>
     <li><term>Delete Variation:</term>
     Deletes the current variation
     </li>
     <li><term>Make First Variation:</term>
     Moves the current variation to the first position of all
     variations on that level
     </li>
     <li><term>Promote Variation to Mainline</term>
     Promotes the current variation to the mainline and demotes the
     current mainline to a variation.
     </li>
     <li><term>Strip:Moves from the beginning</term>
     </li>
     <li><term>Strip:Moves to the End</term>
     </li>
     <li><term>Strip:Comments</term>
     Removes all comments
     </li>
     <li><term>Strip:Variations</term>
     Removes all variations
     </li>
  </ul>
  </p>

  <h3>PGN display options</h3>
  <p>
  The <a PGN>PGN</a> window menus contain options that affect the <a PGN>PGN</a> window display.
  Scid can display the game in color or plain text -- see the
  <menu>Display</menu> menu in the <a PGN>PGN</a> window.
  The color display is easier to read, and allows you to select moves and
  comments using the mouse, but it is much slower to update. For very long
  games, you may want to select plain text display.
  </p>
  <p>
  You can also alter the format of comments and variations, choosing
  to display them indented on a separate line for greater visibility.
  </p>
  <p>
  The <a PGN>PGN</a> display options, and the size of the <a PGN>PGN</a> window, are saved to the
  options file whenever you <b>Save Options</b> from the <menu>Options</menu>
  menu of the main window.
  </p>
  
  <p><footer>(Updated: Scid 3.6.26, October 2008)</footer></p>
}


####################
### Piece Tracker help:

set helpTitle(PTracker) "Piece tracker"
set helpText(PTracker) {<h1>The Piece Tracker window</h1>
  <p>
  The <term>Piece Tracker</term> is a tool that tracks the movements
  of a particular piece in all games in the current filter, and
  generates a "footprint" showing how often each square has been
  visited by the piece.
  </p>
  <p>
  To use the Piece Tracker, first make sure the filter contains the
  games you are interested in, such as games reaching a particular
  opening position or all games where a certain player had the white pieces.
  Then, select the piece to track and set other tracking options; these are
  explained below. Then press the <b>Update</b> button.
  </p>
  <p>
  The tracked piece movement information is displayed in two ways: a
  graphical "footprint", and a text list with one line of data per square.
  </p>
  
  <h3>Selecting the tracked piece</h3>
  <p>
  The chess pieces are displayed as in the standard chess starting position
  below the footprint chart. A single piece (such as the White b1 knight or
  the Black d7 pawn) can be selected with the left mouse button, and all
  pieces of the same type and color (such as all White pawns or both Black
  rooks) can be selected using the right mouse button.
  </p>
  
  <h3>Other piece tracker settings</h3>
  <p>
  The move number range controls when tracking should start and stop in
  each game. The default range of 1-20 (meaning tracking should stop after
  Black's 20th move) is appropriate for examining opening themes, but (for
  example) a range like 15-35 would be better when looking for middlegame
  trends.
  </p>
  <p>
  There are two types of statistic the tracker can generate:
  <ul>
  <li> <b>% games with move to square</b>: shows what proportion of filter
  games contain a move by the tracked piece to each square. This is
  the default setting and usually the most suitable choice.
  <li> <b>% time in each square</b>: shows the proportion of time the
  tracked piece has spent on each square.
  </ul>
  </p>
  
  <h3>Hints</h3>
  <p>
  There are (at least) three good uses for the Piece Tracker: opening
  preparation, middlegame themes, and player preparation.
  </p>
  <p>
  For opening preparation, use the piece tracker with the <a Tree>Tree</a>
  opened. By tracking pieces you can see trends in the current opening
  such as common pawn pushes, knight outposts, and where the bishops are
  most often placed. You may find it useful to set the move number range
  to start after the current move in the game, so the moves made to reach
  the current position are not included in the statistics.
  </p>
  <p>
  For middlegame themes, the piece tracker can be useful when the filter
  has been set to contain a certain ECO range (using a
  <a Searches Header>Header search</a>) or perhaps a pattern such as a
  White IQP (using a <a Searches Material>Material/pattern search</a>).
  Set the move range to something suitable (such as 20-40), and track
  pieces to see pawn pushes in the late middlegame or early endgame,
  for example.
  </p>
  <p>
  For player preparation, use a <a Searches Header>Header search</a> or
  the <a PInfo>Player information</a> window to find all games by a
  certain player with one color. The Piece Tracker can then be used to
  discover how likely the player is to fianchetto bishops, castle
  queenside, or set up a d5 or e5 pawn wedge, for example.
  </p>
  
  <p><footer>(Updated: Scid 3.6.2, December 2006)</footer></p>
}


####################
### Repertoire editor help:

set helpTitle(Repertoire) "Repertoire editor"
set helpText(Repertoire) {<h1>The Repertoire editor window</h1>
  <p>
  The Repertoire editor lets you create, view, edit and <term>repertoire</term>
  files. A repertoire (.sor) file is a list of the opening positions you want to
  reach or try to avoid, and you can use it to manage your chess opening
  preferences and also to search databases in Scid.
  </p>
  
  <h3>Repertoire groups and lines</h3>
  <p>
  A repertoire contains two types of elements: <term>groups</term> and
  <term>lines</term>. Groups are not actually part of your repertoire; they
  are only used to structure it the same way directories give structure to the
  files on a computer disk.
  </p>
  <p>
  Lines in a repertoire come in two types: <term>include</term> lines which
  represent opening positions you are interested in and try to reach,
  and <term>exclude</term> lines which are those you have no interest in
  playing and try to avoid.
  For example, if you play the QGA (1.d4 d5 2.c4 dxc4) as Black and you play
  all moves after 3.e4 <i>except</i> 3...Nf6, you would have
  1.d4 d5 2.c4 dxc4 3.e4 as an include line and 1.d4 d5 2.c4 dxc4 3.e4 Nf6 as
  an exclude line.
  </p>
  
  <h3>Comments and notes</h3>
  <p>
  Each group or line can have comments attached to it. There are two types:
  short (single-line) comments appear (in red) in the repertoire hierarchy
  next to the moves of a group or line, while a long (multiple-line) comment
  is only shown when the group or line is selected.
  </p>
  
  <h3>Using the repertoire editor window</h3>
  <p>
  The <b>left</b> side of the window shows the repertoire hierarchy. You can
  click on folder icons to expand and collapse groups, and click on the
  moves of a group or line to select it and see its comments.
  Include lines are shown with a blue tick icon, and exclude lines have
  a red cross.
  </p>
  <p>
  If a line or group has a short comment, it is shown after the moves. If it
  has a long comment, this is indicated with <b><red>**</red></b> after the
  moves. Groups have a number in parentheses after their moves showing the
  number of (include and exclude) lines they contain.
  </p>
  <p>
  Clicking the right mouse button on a group or line produces a menu
  of functions for it, such as deleting it or changing its state.
  </p>
  <p>
  The <b>right</b> side of the window contains three frames. The first frame
  is a list of the moves in the currently selected line or group. You can click
  the left mouse button on this to paste the moves in the
  <a Import>Import</a> window, which is useful for setting the current game
  to start with a line in the repertoire.
  The second frame contains the short comment for the line or group, and
  the third frame contains its long comment.
  </p>
  
  <h3>Adding groups and lines to the repertoire</h3>
  <p>
  To add a line or group to the window, just make its moves on the
  chessboard in the main window, then use the <menu>Edit</menu> menu
  in the repertoire editor to add it as a group, include line or exclude line.
  </p>
  <p>
  To delete a group or line, click the right mouse button on it and select
  the appropriate command from the menu that appears.
  </p>
  
  <h3><name Search>Searching databases using repertoire files</name></h3>
  <p>
  The repertoire editor <menu>Search</menu> menu lets you search the
  current database using the repertoire. Each game will be searched for
  the positions in the repertoire and will only match the search if
  the <i>deepest</i> repertoire position found is for an <i>include</i> line.
  </p>
  <p>
  You can choose to search using the whole repertoire, or just the displayed
  lines. Searching by displayed lines only is useful when you only want to
  use some of the repertoire. For example, a repertoire might have two main
  groups at the top level, one for 1.e4 and one for 1.d4. If you are only
  interested in the 1.e4 lines, simply collapse the 1.d4 group and then
  search by displayed lines only.
  </p>
  
  <h3>Extra hints</h3>
  <p>
  A repertoire file is great for finding new games in your opening systems.
  For example, each time you get a new <a PGN>PGN</a> file to add to your main database
  (such as the excellent weekly <a PGN>PGN</a> file from
  <url http://www.chesscenter.com/twic/>The Week In Chess</url>),
  just open the <a PGN>PGN</a> file in Scid and do a repertoire search. Then you
  can browse the filtered games to see all the games played that are
  in your repertoire.
  </p>
  <p>
  You may want to keep two repertoire files: one for Black and one for
  White, so you can search with each file separately.
  </p>
  <p>
  A repertoire file can be opened from the command line, for example: <br>
  <b>scid mybase white.sor</b>
  </p>
  <p>
  You can edit a repertoire (.sor) file in any text editor, but be careful
  to preserve its format or it may not be loadable or searchable in Scid.
  </p>
  
  <p><footer>(Updated: Scid 3.6.2, December 2006)</footer></p>
}

####################
### Tree window help:

set helpTitle(Tree) "Tree window"
set helpText(Tree) {<h1>The Tree window</h1>
  <p>
  The <term>Tree</term> window displays information on all the
  moves made from the current position in games in the database.
  In tree mode, the tree window is updated automatically whenever the
  main windows board changes. This can be slow for large databases and
  can therefore be disabled using the <button engine_on>. To visualise
  that a tree is not automatically refreshed this button changes to
  <button engine_off>.
  </p>
  <p>To open the <term>Tree</term> window one can either first open a
  database and then choose Windows / Tree Window (Ctrl-T) from the
  menu, or open the base as tree right from the file menu.
  <p>
  Note that whenever the tree window is updated, the <a Searches
  Filter>filter</a> is reset and only the games that contain the
  current position will be included. This is also the case if e.g. a
  header search was done: once the next move is entered, the tree
  window updates and the filter is set to the games matching the tree
  window.
  </p>
  <p>
  Clicking the left mouse button on a move in the tree window adds
  that move to the game.
  </p>
  <h3>Tree window contents</h3>
  <p>
  The tree window shows the <a ECO>ECO code</a> (if any), frequency
  (both as number of games, and a percentage) and score of each move.
  The <term>score</term> is always computed from the <b>White</b>
  perspective, so 100% means all White wins and 0% means all Black
  wins. Scores are highlighted for moves that have good (green) or bad
  (red) results. On average a move should score 53.8% for white,
  highlighting appears if a move scores more than 3% better or worse
  than this average and if at least 15 games are contained in the
  database. The <term>AvElo</term> (average Elo) corresponds to the
  player's on move and <term>Perf</term> (performance) represents the
  opponent's strength. Additionally, <term>AvYear</term> shows the
  average year of games played in this move and <term>%Draws</term>
  gives the percentage of draws for the line displayed. All these
  values are calculated for the database displayed in the tree, and
  therefore depend of course on the games in this database.
  </p>
  <p>
  Additional information is displayed if a <term>Mask</term> has been
  opened. For the use of <term>Masks</term> see below.
  <p>
  The moves in the tree window can be sorted by move (alphabetically),
  ECO code, frequency, or score. You can change the sort method using
  the <menu>Sort</menu> menu.
  </p>

  <h3><name Best>Best games window</name></h3>
  <p>
  The tree window has a File menu command and button for opening the
  <term>Best games</term> window, which shows a list of the
  highest-rated games in the currently displayed tree branch.
  (Equivalently, one can use the <button b_list> button).  The games
  are listed in order of average rating, and you can restrict the list
  to show games with a particular result and also limit the number of
  games shown in this list. Additionally, up to 4 flags of the games
  in the list show up in the best games list. The special flag
  <b>A</b> marks a game as <b>Annotated</a>, ie. these games contain
  either comments, variations or NAGs (or any combination of those).
  Note that if a header search was ran against the database, the best
  games list is restricted to the results of this header search.
  </p>
  
  <h3><name Graph>Tree graph window</name></h3>
  <p>
  The tree window buttons include a button marked <term>Graph</term>
  (<button b_bargraph>) which produces a graphical display of the
  relative performance of each move from the current position.  All
  moves that have been played at least 1% of the time, and at least 5
  times, are displayed.  Percentage scores are always from White's
  perspective even when it is Black to move. The graphs can be saved
  in PostScript format via the file menu.
  </p>
  <p>
  In the tree graph, a red line is plotted showing the mean over all games
  from the current position, and the area between 50 and 55% (where most
  standard openings are expected to score) is colored blue
  to assist comparison of moves. Note that white usually scores around 55%
  in master level chess.
  </p>
  
  <h3><name Lock>Locking the tree window</name></h3>
  <p>
  Each tree window is associated with a specific base, that is, if
  several bases are opened simultaneously, several tree windows may
  exist. If the <term>Lock</term> button in the tree window is
  enabled, closing the tree window will also close the database
  associated with this specific tree. Additionally, this also closes
  associated graph or best games windows. If the <term>Lock</term>
  button is not checked closing the tree will leave all these windows
  opened and just close the tree view of the base.
  </p>
  <p>
  Note that opening a base as tree from the file menu will
  automatically lock the database by default.
  </p>
  
  <h3><name Training>Training</name></h3>
  <p>
  When the <term>Training</term> checkbox in the tree window is selected,
  Scid will randomly make a move every time you add a move to the game.
  The move Scid chooses depends on database statistics, so a move played
  in 80% of database games will be chosen by Scid with 80% probability.
  Turning on this feature, then hiding (or iconifying) the Tree window and
  playing openings against a large database, is a great way to test your
  knowledge of your opening repertoire. Another option to train an
  opening offers <a OpeningTrainer>Training / Openings</a>.
  </p>

  
  <h3>Caching for faster results</h3>
  <p>
  Scid maintains a cache of tree search results for the positions with the
  most matching games. If you move forward and back in a game in tree mode,
  you will see the tree window update almost instantly when the position
  being searched for is in the cache.
  </p>
  <p>
  The tree window has a file menu command named <term>Save Cache</term>.
  When you select this, the current contents of the tree cache in memory
  are written to a file (with the suffix <b>.stc</b>) to speed up future
  use of Tree mode with this database.
  </p>
  <p>
  The <term>Fill cache file</term> command in the file menu of the tree
  window fills the cache file with data for many opening positions.
  It does a tree search for about 100 of the most common opening positions,
  then saves the cache file.
  </p>
  <p>
  The maximum number of lines in the Cache can be configured by File /
  Cache size. The default are up to 1000 lines.
  </p>
  <p>
  Alternatively, one can fill the cache also with the content of a
  base or a game by choosing File / Fill Cache with base and File /
  Fill Cache with game, respectively. The cache will be filled with
  the contents of these including all variations. This is most helpful
  if one has one or more repertoire bases that can serve as input. (See
  also <a OpeningTrainer> about this type of bases.)
  <p>
  Tree refresh can be dramatically enhanced if the database is sorted
  by ECO code then compacted (see the <a Maintenance>maintenance</a>
  window). Once this is achieved (the whole process can last several
  hours), turn on the option <term>Fast mode</term>. The refresh of
  the Tree window will be 20 times faster in average at the cost of
  some inaccuracies (games not in current filter will not be taken
  into account). By turning off the <term>Fast mode</term> option you
  will see the difference in the number of games when all the
  transpositions are taken into account.  If you want to get a preview
  of statistics then get a precise Tree, use the option <term>Fast and
  slow mode</term> 
  </p>
  <p>
  Note that a tree cache (.stc) file is completely redundant; you can remove
  it without affecting the database, and in fact it is removed by Scid
  whenever an action occurs that could leave it out of date -- for example,
  adding or replacing a game, or sorting the database.
  </p>
  
  <p><footer>(Updated: Scid 4.3, November 2010)</footer></p>
}

set helpTitle(TreeMasks) "Masks for Trees"
set helpText(TreeMasks) {<h1>Masks for Trees</h1>
  <h3>Basics</h3>
  <p>
  The <term>Tree</term> window displays information on all the moves
  made from the current position in games in the database. See also <a
  Tree>The Tree window</a>  for more details.
  </p>
  <p>
  To add additional informations beyond pure statistical data a
  <term>Mask</term> can be defined. One can imagine a
  <term>Mask</term> as a transparet layer above the current tree, that
  holds additional data e.g. commentaries for moves or positions, own
  evaluations and ones own opening repertoir. <term>Masks</term> are
  stored in a Mask file (.stm) and thus are independent of the
  databases to be used with. That is, one can define a
  <term>Mask</term> once and use it with various databases by just
  loading it from the <term>Tree</term> windows menu.
  </p>
  <p>
  As soon as a <term>Mask</term> file is opened, the displays of
  the <term>Tree</term> window change. First of all, all moves from
  the current position that are present in the mask are highlighted.
  Additionally, NAGs and markers may show up in front of a move or
  commentaries concerning the move will show up at the end of its
  line. Finally, the current postition may also hold a comment.
  </p>
  <p>
  <b>Note</b>: The indepencence of <term>Masks</term> from a database
  make them a very powerfull tool to handle opening repertoirs.
  Contrary to the traditional way of opening lines, <term>Masks</term>
  have the advantage to handle transpositions transparently, simply
  cause they are based on the current positions instead of a line
  leading to it.
  </p>
  <h3>Using a Masks</h3>
  <p>
  As <term>Masks</term> operate on the tree view of a given database,
  first of all the tree view has to be opened either by <menu>Window /
  Tree window</menu> or the shortcut <b>ctrl-t</b>. For starting out
  it makes sense to open a larger reference database as this
  simplifies the addition of moves to a <term>Mask</term>. However,
  Masks work with every database, even the <term>Clipbase</term>, that
  is one could also import a collection of games from a <a PGN>PGN</a> file to
  the Clipbase to set up a <term>Mask</term>.
  </p>
  <p>
  Now, a mask file has to be created or loaded. These files use the
  extension .stm. To create a new mask file select <menu>Mask /
  New</menu> from the <term>Tree</term> windows menu. Similarly, an
  existing mask can be opened using <menu>Mask / Open</menu>. Finally,
  <menu>Mask / Open recent</menu> is a shortcut to the recently used
  <term>Mask</term> files. 
  </p>
  <p>
  Once a Mask file is opened new commentary can be added to this
  specific mask. Note again, that the Mask is independent of database
  used for its creation. It can later applied to any database of ones
  liking. For an opening repertoir it might thus make sense to
  generate two masks, one for the White and one for the Black
  openings.
  </p>
  <p>
  To add markers or comments to moves, first add the move
  to the mask by choosing <term>Add to mask</term> from the context
  menu available by clicking on the line with the right mouse button.
  After a line was added, it is highlighted in <blue>blue</blue>
  within the tree window. Similarly, a move can be removed from the
  mask by <menu>Remove from mask</menu> from the context menu.
  </p>
  <p>
  <b>Note</b>: If the move to be added is not displayed in the tree
  window Scid offers a list of all possible moves by means of the
  context menu. As this might be quite a bunch of moves, they are
  split into several context menu items at the end of the available
  choices. All are labled by <menu>Add this move to mask</menu> and in
  case necessary numbered. Just select a move from one of those lists
  if it does not show up in the tree anyway.
  <p>
  After a move was added to the <term>Mask</term> and one can select
  the following markers from the context menu. These markers will show
  up left to the move annotated:
  <ul>
  <li><term>NAG</term> symbols are the simplest annotation symbol. The
  menu displays only those nags sensible for a move (not a position)
  which results in the following symbols possible <term>!!, !, !?, ?!,
  ?, ??, ~</term>
  </li>
  <li>By selecting <menu>Marker 1</menu> and <menu>Marker 2</menu> up
  to two additional graphical markers can be attached to a move. They
  are mainly meant to handle opening repertoirs. The available options
  are:
     <ul>
     <li> <img ::rep::_tb_include> Include line in repertoire</li>
     <li> <img ::rep::_tb_exclude> Exclude line from repertoire</li>
     <li> <img ::tree::mask::imageMainLine> Main Line</li>
     <li> <img tb_bkm> Bookmark</li>
     <li> <img ::tree::mask::imageWhite> White</li>
     <li> <img ::tree::mask::imageBlack> Black</li>
     <li> <img tb_new> New line</li>
     <li> <img tb_rfilter> To be verified by further analysis</li>
     <li> <img tb_msearch> To train</li>
     <li> <img tb_help> Dubious line</li>
     <li> <img tb_cut> To remove</li>
     </ul>
	  To remove a marker just select the item <menu>No marker</menu>.
  </li>
  <li><term>Color</term> Allows to add a little colored square in
  front of the move for ones own highlighting. To remove it again
  select <menu>White</menu></li>
  <li><term>Comment move</term> allows to add a textual comment for
  the line. This comment is shown  right to the line it is
  associated. Note that only a part of the first line shows up there
  to give some visual feedback that commentary exists. The whole
  comment shows up in a tooltip once the mouse is moved over the line
  in question.
  </li>
  <li><term>Comment position</term> can be used to add a comment for the
  current position. This comment is shown on top of <term>Tree</term>
  window once the commented position is reached. Note that Scid
  displays only the first line of the comment to save space in the
  <term>Tree</term> window. However, if the mouse is moved over that
  line the whole commentary shows up in a tooltip.
  </li>
  </ul>
  Don't forget to save the Mask! You will be prompted to do it
  if you close a Mask that has been modified or if a <term>Tree</term>
  window is closed.
  </p>
  <p>
  To search for commentary, symbols etc. use <menu>Masks /
  Search</menu>. Here one can select various check boxes that use the
  selected search option as criterion. After selecting
  <button>Search</button> a list of all positions found is displayed
  in <term>FEN</term> notation followed by the move in question and
  the commentary if any.
  </p>
  <p>
  <menu>Display mask</menu> will display the current Mask in a line
  style. Stating at the current position all subsequent moves are
  sorted into some unfoldable tree to give an overview of the current
  lines of play similar to what is found in many repertoir books.
  Note that not all information are displayed (e.g. comments are
  shorted to fit the display). Additionally, as <term>Masks</term>
  work on positions rather than move sequences they may contain loops
  (ie. transpositions) which can not be unfolded in a line wise
  display perfectly. That is, this display may be cut at a certain
  point.
  </p>
  <h3>Conversion to Masks</h3>
  <p>
  Setting up a mask can be a tendious taks especially for complex
  opening repertoirs. However, if such a repertoir is available as a
  Scid database or a number of <a PGN>PGN</a> games, or lines stored in usual
  chess games, Scid can use that information to set up suitable
  <term>Masks</term> automatically.
  </p>
  <p>
  First of all one has to load the information into a Scid database.
  In case the information is already available as a Scid database this
  is as easy as opening it. In case a <a PGN>PGN</a> file is use it should be
  either imported into a Scid database or one can use the
  <term>Clipbase</term> to import it temporarily. In that case one
  should make sure that the <term>Clipbase</term> is empty before
  importing. (<menu>Edit / Empty Clipbase</menu>).
  </p>
  <p>
  The next step is to open the tree for the just opened Scid database.
  Then a new <term>Mask</term> should be created or an existing one
  opened. <b>Note</b> that this function may be used to consolidate
  serveral bases into a single <term>Mask</term>.
  </p>
  <p>
  Now, the <term>Mask</term> can be filled automatically with the game
  content of the database. In this process, comments within the games
  will be converted to move comments (appending to those existing
  eventually) in the <term>Mask</term>. <term>NAG</term> symbols will
  be added as well. To initiate this process one can chose either
  <menu>Masks / Fill with game</menu> to fill the <term>Mask</term>
  with the contents of a single game, or <menu>Fill with
  Database</menu> to loop over all games in the database.
  </p>
  <p>
  <b>Note</b>: especially filling a <term>Mask</term> with an entire
  base can be quite time consuming.
  </p>
  <p>
  <b>Note</b>: The <term>mask</term> is filled with all moves till the
  end of the game including all variations within a game. Therefore,
  it is sensible to use only bases for this procedure that end the
  games as soon as the middle game is reached.
  </p>

  <p><footer>(Updated: Scid 4.3, November 2010)</footer></p>
}

####################
### Compaction help:

set helpTitle(Compact) "Database compaction"
set helpText(Compact) {<h1>Database compaction</h1>
  <p>
  Database <term>compaction</term> is a specific type of
  <a Maintenance>maintenance</a> that keeps a database as small and
  efficient as possible.
  Compacting a database means removing any unused space in its files.
  There are two types: name file and game file compaction.
  </p>
  
  <h3>Name file compaction</h3>
  <p>
  Over time, you may find a database starts to contain a number of player,
  event, site or round names that are no longer used in any game. This will
  often happen after you spellcheck names. The unused names waste space in
  the name file, and can slow down name searches.
  Name file compaction removes all names that are not used in any games.
  </p>
  
  <h3>Game file compaction</h3>
  <p>
  Whenever a game is replaced or deleted, wasted space is left in the game
  file (the largest of the three files in a Scid database). Game file
  compaction removes all wasted space, leaving no deleted games in the
  database. Note that this operation is irreversible: after compaction,
  the deleted games are gone forever!
  </p>
  <p>
  Game file compaction is also recommended after <a Sorting>sorting</a> a
  database, to keep the order of the game file consistent with the sorted
  index file.
  </p>
  
  <p><footer>(Updated: Scid 3.6.2, December 2006)</footer></p>
}


####################
### Database maintenance tools help:

set helpTitle(Maintenance) "Database maintenance"
set helpText(Maintenance) {<h1>Database maintenance</h1>
  <p>
  Scid provides a number of tools for maintaining databases,
  available from the Scid <a Menus File>File</a> menu. The
  database <a Compact>compaction</a> and <a Sorting>sorting</a>
  functions are explained in separate help pages.
  </p>
  
  <h3>Maintenance window</h3>
  <p>
  Most Scid database maintenance can be done from the Maintenance
  window, which can be opened from the <menu>File: Maintenance</menu>
  or <menu>Windows</menu> menus or the shortcut key <b>Ctrl+M</b>.
  </p>
  <p>
  You can use this window to maintain <a Flags>game flags</a>,
  spellcheck names, <a Compact>compact</a> or <a Sorting>sort</a>
  a database. Note that any operations that are not available
  for the current database (for example, because it may be read-only
  or a <a PGN>PGN</a> file) will be grayed out.
  </p>
  
  <h3><name Twins>Deleting twin games</name></h3>
  <p>
  The <menu>File: Maintenance</menu> menu has a command
  <menu>Delete twin games...</menu> for detecting extra copies
  (twins) of games in the database.
  This command finds all pairs of games that are twins and, for each pair,
  flags the shorter game deleted leaving the longer game undeleted.
  Two games are considered to be twins if their players
  (and any other tags that you can optionally specify) match exactly.
  </p>
  <p>
  If you specify the "same moves" option, each pair of games must have the
  same actual moves up to the length of the shorter game (or up to move 60,
  whichever comes first) to be twins.
  </p>
  <p>
  When you have deleted twins, it is a good idea to check that each
  game deleted really is a copy of another game.
  You can do this easily if you selected the
  "<b>Set filter to all deleted games</b>" option in the
  delete twins dialog box. The filter will now contain all deleted games.
  You can browse through them (using the <b>p</b> and <b>n</b> keys) with
  the <term>twins checker</term> window (available from the maintenance
  menu, or the shortcut key <b>Ctrl+Shift+T</b>) to verify that each game is
  deleted because it actually is a twin of another game.
  </p>
  
  <h3><name Editing>Editing player, event, site and round names</name></h3>
  <p>
  You may find mis-spelt names in your databases and want to correct them.
  You can do this in Scid with the <term>Name editor</term> window
  (shortcut key: <b>Control+Shift+N</b>),
  available from the <menu>File: Maintenance</menu> submenu.
  </p>
  <p>
  Each unique name is only stored once in the name file, so changing a name
  actually changes all occurrences of it.
  </p>
  
  <h3><name Spellcheck>Spellchecking names</name></h3>
  <p>
  Scid comes with a <term>spellcheck</term> file named <b>spelling.ssp</b>,
  for correction of player, event, site and round names.
  Scid will try to load the spellcheck file whenever it starts up; if it
  does not load, you can load it from the <menu>Options</menu> menu.
  </p>
  <p>
  Once the spellcheck file is loaded, you can use it on a
  a Scid database using the spellcheck commands in the
  <menu>File: Maintenance</menu> menu, or from the maintenance window.
  </p>
  <p>
  When you spellcheck a database, Scid produces a list of corrections that you
  can edit before actually making any corrections, so you can remove any
  corrections you do not want to make.
  </p>
  <p>
  Spellchecking is especially useful for standardizing a database so all
  instances of a particular player are spelt the same way.
  For example, with the standard spellcheck file, the names "Kramnik,V.",
  "Vladimir Kramnik", and "V. Kramnik" would all be corrected
  to "Kramnik, Vladimir".
  </p>
  <p>
  The spellcheck file has one
  additional use: when it is loaded, its player data is
  used to enhance the <a PInfo>player information</a> window and the
  <a Crosstable>crosstable</a> window:
  you will see FIDE master title
  (<b>gm</b> = International Grandmaster, <b>im</b> = International Master, etc)
  and country information for any player that is
  listed in the spellcheck file. Over 6500 strong players of the past and
  present are listed in the <b>spelling.ssp</b> file that comes with Scid.
  </p>
  
  <h3><name Ratings>Adding Elo ratings to games</name></h3>
  <p>
  The "Add Elo ratings..." button in the Maintenance window causes Scid
  to search the current database for games where a player does not have
  a rating, but the spellcheck file has an Elo rating listed for that
  player at the date of the game. Scid will add all such ratings
  automatically. This is very useful for a database of master-level games
  which has few ratings.
  </p>
  <p>
  The spellcheck file "spelling.ssp" that comes with Scid does not contain
  the Elo rating information needed for this function, but a larger version
  of it called "ratings.ssp" is available from the <url
  http://scid.sourceforge.net/>Scid website</url>.
  </p>
  
  <h3><name Cleaner>The Cleaner</name></h3>
  <p>
  The Scid <term>Cleaner</term> (available from the Maintenance window) is
  a tool for doing a number of maintenance tasks on a database in one
  action. You can choose which tasks you want to do, and Scid will
  perform them on the current database without requiring user interaction.
  This is especially useful for maintenance of large databases.
  </p>
  
  <h3>Setting the database autoload game</h3>
  <p>
  The <term>autoload</term> game of a database is the game automatically
  loaded whenever that database is opened. To change the autoload game of
  a database, use the "Autoload game number..." button. If you always want
  the last game of a database to be opened (regardless of the actual number
  of games in the database), just set it to a very high number such as
  9999999.
  </p>
  
  <h3>Repair a base</h3>
  <p>
  In the rare cases that a Scid database is corrupted one might try to
  repair it using File / Maintanance / Repair base. For this to work,
  the base in question must not be opened (which is not possible in
  most cases anyway). Scid will then try its best to get the database
  back in a consistent and usable state.
  </p>

  <p><footer>(Updated: Scid 3.6.26, October 2008)</footer></p>
}

####################
### Sorting help:

set helpTitle(Sorting) "Sorting a database"
set helpText(Sorting) {<h1>Sorting a database</h1>
  <p>
  The <term>sorting</term> function sorts all games in a database.
  You can select a number of sort criteria.
  When two games are equal according to the the first criteria, they
  are sorted using the second criteria, and so on.
  </p>
  
  <h3>Sort criteria</h3>
  <p>
  The available sorting criteria are:
  </p>
  <ul>
  <li> Date (oldest games first)
  <li> Year (same as date, but using the year only)
  <li> Event name
  <li> Site name
  <li> Country (last 3 letters of Site name)
  <li> Round name
  <li> White name
  <li> Rating (average of White and Black ratings, highest first)
  <li> Black name
  <li> Result (White wins, then draws, then Black wins)
  <li> Length (number of full moves in the game)
  <li> ECO (the <a ECO>Encyclopedia of Chess Openings code</a>)
  </ul>
  
  <h3>Sort results</h3>
  <p>
  When you sort a Scid database that is not read-only, the sort
  results are saved so the order of games in the database is
  permanently changed.  If you want to the sort results to be
  temporary, make the database read-only first using the <b>File:
  Read-only</b> menu command.
  </p>
  <p>
  When you sort a database that is read-only or is actually a PGN
  file, the sort results cannot be saved so the sorted order of games
  will be lost when the file is closed.
  </p>
  <p>
  Note that sorting a database resets the <a Searches Filter>search
  filter</a> to contain all games.
  </p>
  
  <h3>Important note about sorting databases:</h3>
  <p>
  When a database is sorted, the index file is altered but the game file
  is not changed. This means sorting a database will leave the game file
  records in a scrambled order relative to the index file. This can
  really <b>slow down</b> <a Tree>tree</a>, position and material/pattern
  <a Searches>searches</a>, so you should reorder the game file by
  <a Compact>compacting</a> it after sorting the database to maintain
  good search performance.
  </p>
  <p>
  Note that only a database sorted by <a ECO>ECO</a> codes can use the fast
  tree search modes. This however, also requires to compact the
  database after the sort procedure!
  </p>
  
  <p><footer>(Updated: Scid 3.6.26, October 2008)</footer></p>
}

####################
### Flags help:

set helpTitle(Flags) "Game Flags"
set helpText(Flags) {<h1>Game Flags</h1>
  
  <p>
  A <term>flag</term> is an indicator of some chess characteristic
  that can be turned on or off for each game in the database.
  There are 13 user-settable flags that you can directly set for
  each game. Of these, only the Delete flag has any special
  significance: games with the Delete flag turned on are marked
  for deletion and will removed when the database is
  <a Compact>compacted</a>.
  </p>
  <p>
  The other 12 user-settable flags and their symbols are:
  </p>
  
  <ul>
  <li>White opening (W)</li>
  <li>Black opening (B)</li>
  <li>Middlegame (M)</li>
  <li>Endgame (E)</li>
  <li>Novelty (N)</li>
  <li>Pawn structure (P)</li>
  <li>Tactics (T)</li>
  <li>Queenside play (Q)</li>
  <li>Kingside play (K)</li>
  <li>Brilliancy (!)</li>
  <li>Blunder (?)</li>
  <li>User-defined (U)</li>
  </ul>

  <p>
  Since Scid 4.0 additional 6 custom flags are available for
  individual use.  These flags are specific for each base and their
  textual descriptoin can be set via the <a Maintenance>maintenance
  window</a>. In the games list, game info area and so on they display
  as the numbers (1) .. (6). For <a Searches Header>header
  searches</a> they behave exactly like the predefined flags above.
  </p>
  
  <p>
  A flag can be set for the current game, all filter games, or all
  database games using the <a Maintenance>maintenance</a> window.
  </p>
  <p>
  You can use a <a Searches Header>header search</a> to find all
  games in a database that have a particular flag turned on or off,
  or use flags as part of more complex searches.
  </p>
  <p>
  Since all the user-settable flags (except the Delete flag) have
  no significance to Scid, you can use them for any purpose that
  suits your needs. For example, you could use the Kingside (K)
  flag for kingside pawn storms, or kingside heavy piece attacks,
  or even for endgames with all pawns on the kingside. Depending on
  usage, however a custom flag might be more suitable.
  </p>
  <p>
  Note, that sensible handling of flags can speed up searches
  significantly!
  </p>
  <p>
  The following functions of Scid set or require flags:
  <ul>
     <li><a OpeningTrainer>Opening Trainer</a>: can evaluate the (B) and (W) flags
     <li><a Analysis Annotate>Find best move</a>: evaluates the (T) flag
     <li><a Analysis Annotate>Find tactical exercise</a>: sets the (T) flag
  </ul>
  
  <p><footer>(Updated: Scid 4.3, January 2011)</footer></p>
}

####################
### Analysis window help:

set helpTitle(Analysis) "Analysis window"
set helpText(Analysis) {<h1>The Analysis window</h1>
  <p>
  The Scid analysis window shows the analysis by a chess program
  (known as an <term>engine</term>) of the current board position.
  Whenever the board changes, Scid sends the new position to the
  engine and it shows its assessment of that position.
  Currently, up to two engines can be run simultaneously. To start the
  first analysis engine, the short cut <term>F2</term> can be used,
  for the second engine <term>F3</term>. To quickly close the engine
  window just hit <term>ESC</term>.
  </p>
  <p>
  The principle informations of the current analysis are shown on
  top of the window. The first number signifies the evaluation value
  in pawn units.  The score shown in the analysis window is always
  from the perspective of White, so a negative score indicates Black
  is better. <b>Depth:</b> shows the search depth already reached by
  the engines calculations in half moves. The number after
  <b>Nodes:</b> gives the number of positions analysed for the current
  result while the number of positions per second (kn/s) is shown in
  brackets.  <b>Time:</b> finally shows the amount of time spent for
  the current analysis.
  </p>
  <p>
  Additional information can be accessed using the <button
  tb_engineinfo> button. A new line will be added to the status area
  showing the current move analysed, the number of tablebase hits, a
  more exact number of nodes analysed per second, the watermark of the
  engines hash and the current cpu load. Usually, this information is
  hidden to save space for the analysis.
  </p>
  <p>
  If the engine only analyses the line it considers the main
  continuation, the lower frame in the window (with the scrollbar)
  shows the history of evaluations produced by the engine for the
  current position, so you can see how the assessment has changed.
  </p>
  <p>
  Many recent <term>UCI</term> engines however allow to analyse
  several lines at once. Using this <term>Multi-PV</term> feature, the
  user can also see what the engine thinks is the second or third best
  continuation.  The best line is always on top and highlighted to
  ease reading.  If an engine allows for <term>Multi-PV
  analysis</term>, the spin box below the analysis lines can be used
  to set the number of principal variations that should be calculated
  and shown. In this case, instead of the calculation history, only
  the resulting principal lines are shown. However, if the number of
  principal lines is set to 1, one can again observe the evaluation
  history. The spin box is disabled, if an engine does offer this
  feature.
  </p>
  <p>
  <b>Note</b> the output of the current analysis can be hidden/shown
  by clicking with the right mouse button into the analysis window. In
  this mode only the current evaluation is shown in the status line.
  <p>
  To add the best move chosen by the engine as a new move in the current
  game, press the <b>Add move</b> button <button tb_addmove>. If the
  whole main line of the engine should be added just use the <b>Add
  Variation</b> button <button tb_addvar>. In case an engine offers
  the <term>Multi-PV</term> mode, using the <b>Add all Variations</b>
  button (<button tb_addallvars>) can be used to add all principal
  variations to the game. The insertion of variations from the
  analysis window will also add the name of the engine as a comment to
  the game.
  </p>
  <p>
  To temporarily interrupt the calculation process one can use the
  stop engine button (<button tb_pause>). Once pressed, this button
  changes to the start engine button (<button tb_play>) which will
  restart the engines analysis. Note, however, that most engines will
  restart the whole analysis again, forgetting all results that where
  achieved in an earlier run. Only few engines are able to reuse the
  results they have calculated till the analysis was stopped. For the
  first analysis engine toggeling start/stop engine is mapped to the
  hotkey <term>F4</term> while for the second engine <term>F5</term>
  can be used.
  </p>
  <p>
  To set an engine to analyse a position in the background while
  other functions of Scid are used one can <term>lock the
  position</term> using the <button tb_lockengine> button. Scid now
  stops to send any changes of the main board to the engine, and the
  engine stays calculating the position.
  </p>
  <p>
  To finish the current game by the engine ("shoot out" or "demo" mode)
  one can use the finish game button <button finish_off>. To indicate
  the shootout mode this button turns to <button finish_on>. This
  function is only available for the first analysis engine.
  </p>

  <h3><name List>The Analysis Engines List</name></h3>
  <p>
  Scid maintains a list of the engines you have used, along with an
  estimated Elo rating (if you guess one; additionally some pages on
  the Internet offer these values as results from large engine-engine
  tournaments) and the date when each engine was last used. You can
  sort the engine list by name, Elo rating, or date.
  Select the <b>New</b> or <b>Edit</b> buttons to add a new engine to
  the list or edit the details for an existing entry.
  </p>
  <h3><name Start>Engine commands and directories</name></h3>
  <p>
  For each engine, you must specify the executable file to run and
  which directory Scid should run it in.
  </p>
  <p>
  The most likely cause of engine starting problems is the choice of
  which directory the engine should run in. Some engines require an
  initialization or opening book file in their start directory to run
  properly.  Other engines (like Crafty) write log files to the
  directory they start in, so you will need to run them in a directory
  where you have write access.  If the directory setting for an engine
  is ".", Scid will just start the engine in the current directory.
  </p>
  <p>
  So if an engine that should work fine in Scid does not start, try
  changing its directory setting. To avoid engines creating log files
  in many different directories, I recommend starting engines in
  the directory of the Scid User files (this is where the <b>scid.exe</b>
  file is located on Windows, or <b>~/.scid/</b> on Unix); there is a
  button in the dialog box for editing engine details marked
  <b>scid.exe dir</b> on Windows or <b>~/.scid</b> on Unix that lets
  you set the engine to start in this directory.
  </p>
  <p>
  If an engine needs additional parameters for startup (e.g. a
  specific opening book) they can be specified in the
  <term>Parameters</term> field. Please refer to the engines
  documentation about the parameters required, if any.
  </p>
  <p><term>URL</term> allows you to set the engines homepage. This
  comes in handy to check for updates e.g. or to have a look at recent
  developments. Pressing the <term>Open...</term> button will open
  this page in the web browser.
  </p>
  <p>
  If the engine uses the <term>UCI</term> protocol please mark the
  associated checkbox. Generally, there are two major engine protocols
  available today: xboard sometimes referred to as winboard (UCI must
  not be checked) which many, especially older engines use, and the
  UCI protocol that can be found in most of the modern chess engines.
  The main advantage of an <term>UCI</term> engine is, that this
  protocol allows the user to configure the engines parameters from
  within his preferred chess GUI like Scid, while for the other
  engines usually configuration files are used that have to be edited.
  Therefore, if the engine is an <term>UCI</term> engine, pressing the
  <term>Configure UCI engine</term> button offers a graphical dialogue
  where all engine parameters can be tuned to the users liking. This
  dialogue will look different for each engine as each engine has
  other parameters that can be set. Most of them will influence the
  playing style of the engine. Please refer to the engines
  documentation.
  </p>

  
  <h3>Training</h3>
  <p>
  With the <b>Training</b> button, you can play moves against the analysis
  engine. The time for each move is fixed, and the analysis results are
  not shown when training mode is on.
  </p>
  
  <h3><a Annotate>Annotating a game</h3>
  <p>
  The <b>Add variation</b> button (<button tb_addvar> or <button
  tb_addallvars>)in the analysis window adds the current score and
  best line of play as a new variation in the game.
  </p>
  <p>
  You can do this automatically for a number of moves (annotating the
  game) by pressing the <b>Annotate</b> button, <button tb_annotate>.
  Besides, the engines best lines also <a Moves Informant>Informant</a>
  style evaluation symbols are added in this process.  First, the
  parameters for automatic annotations have to be set:
  <ul>
     <li><term>Set the time between moves in seconds:</term> this
     gives the time, the engine can spend on analysis before moving on
     to the next move.</li>
     <li><term>Add variations</term>: here, one has the choice if
     moves for both sides or only one color should be added, if all
     moves should get an annotation or only if the game move is not
     the best move according to the engines evaluation. Additionally,
     one can add an annotation only if the game move is a blunder. The
     threshold defines the drop of the evaluation necessary to signify
     a blunder, the number is given in units of pawns (i.e. 0.2 means
     that if the evaluation drops by more than 2 centi pawns, the game
     move is a blunder).
     </li>
     <li><term>Annotate variations</term> will include variations
     within the game in the analysis by the engine.</li>
     <li><term>Short annotations<term> will only add minimal
     annotations, that is the pure lines and NAG codes without the
     engines names and usually without the current scores.</li>
     <li><term>Add score to annotations</term> will add the engines
     evaluation in pawn units to the annotations. This information can
     be used later on to draw a <a Score>Score Graph</a> of the game
     as a visualisation of the positions reached.
     </li>
     <li><term>Add annotator tag</term> will add an "Annotator" tag to
     the game header. This is meant for the <term>Short
     annotations</term> mode which does not signify which engine was
     used to gain the current evaluations and lines.
     </li>
     <li><term>Use book</term> allows the specification of an opening
     book. Moves that are contained in this opening book are skipped
     in the annotation process, that is the annotation starts
     automatically in the middle game.</li>
     <li><term>Annotate several games</term>  Scid will first annotate
     the current game with the settings specified, store the results,
     then automatically load the next game and annotate that as well.
     This is repeated till the game loaded reaches the number given in
     the spin box. By this procedure, many games can be annotated
     automatically without any user intervention.
     </li>
     <li><term>Find opening errors</term> will check the opening phase
     up to the move specified for blunders. Additionally, the
     Annotator-tag gets an entry "opBlunder X" where X is the move the
     blunder occurred.
     </li>
     <li><term>Mark tactical exercises</term> This can be used to
     generate exercises for the training function <a FindBestMove>Find
     best move</a>. This option is only available for <term>UCI</term>
     engines.
     </li>
  </ul>
  After pressing the Ok button,  autoplay mode is enabled and the
  engine starts to analyse the game.  When autoplay mode is used and
  the analysis window is open, a variation containing the score and
  best line of play is automatically added for each position as
  autoplay mode moves through the game.  Only positions from the
  current position until the end of the game (or until you exit
  autoplay mode) are annotated, so you can skip annotation of opening
  moves by moving to a middlegame position before starting autoplay.
  </p>
  <p>
  To cancel annotation at any time, just turn off autoplay mode, for example by
  pressing the <b>Escape</b> key in the main window.
  </p>
  <p>
  Note that for simplicity, the <b>Annotate</b> button is only available
  in the window opened as analysis engine 1. If you open an engine as
  analysis engine 2, you cannot use it to annotate the game.
  </p>
  
  <h3>Analysis board</h3>
  <p>
  Pressing the button <button tb_coords> in an analysis window will
  show or hide the analysis board, which shows the position at the end
  of the current best line of play found by the engine. This works for
  most Scid-compatible engines but may not work for all; it depends on
  the move notation an engine uses.
  </p>
  
  <h3>Engine priority</h3>
  <p>
  If an engine is using too much CPU time and affecting the use of Scid
  or other applications, turning on the <b>Low CPU priority</b> button
  <button tb_cpu> may help; it gives the engine a low priority for CPU
  scheduling. On Windows, engines are run on low priority by default.
  </p>
  <p>
  <b>Note</b> that on Unix systems the engines priority can not be set
  back to normal.
  </p>

  <p><footer>(Updated: Scid 3.6.26, October 2008)</footer></p>
}

####################
### Calvar window help:

set helpTitle(CalVar) "Calculation of variation"
set helpText(CalVar) {<h1>The calculation of variation window</h1>
  <p>
   This training exercise is also known as the Stoyko exercise.  Its
   purpose is to analyse a complex position and evaluate as many sound
   lines as possible, and give a correct evaluation for each of them.
  </p> 
  <h3>Configuration</h3></p>
  <p>
  Three parameters are set :
  <ul>
     <li>The UCI engine that will analyse various lines</li>
     <li>The time, in seconds, the engine will use to analyse the position</li>
     <li>The time, in seconds, the engine will use to analyse each line entered by the user</li>
  </ul>
  </p>

  <h3>Entering lines</h3></p>
  <p>
  Moves are entered as usual with mouse clicks on the board but they
  will not be displayed. At the end of a line the user needs to provide
  an evaluation by clicking on one of the buttons with NAG codes.
  </p>

  <h3>Evaluation verification</h3>
  <p>
  Each time an evaluation is given to a line the engine calculates its
  value and append the line and score just below the user ones.
  </p>

  <h3>Done with position</h3>
  <p>
   When  the user thinks he found all best lines, pressing <term>Done with
   position</term> will append to the game (with the comment <term>Missed
   line</term>), the lines that have a score higher than the best line
   entered by the user.
  </p>

  <p><footer>(Updated: Scid 3.6.21, December 2007)</footer></p>
}


####################
### EPD files help:

set helpTitle(EPD) "EPD files"
set helpText(EPD) {<h1>EPD files</h1>
  <p>
  An EPD (extended position description) file is a collection of positions,
  where each position has some associated text. Like <a PGN>PGN</a>, it
  is a common standard for chess information.
  </p>
  <p>
  An EPD file has a number of defined <term>opcodes</term> (fields)
  which are stored separated by semicolons (<b>;</b>) in the file
  but are shown on separate lines in a Scid EPD window to make editing easier.
  A semicolon within an EPD field is stored as "<b>\s</b>" by Scid to
  distinguish it from an end-of-field marker.
  Each position and its associated opcodes are stored on one single line
  in the EPD file.
  </p>
  <p>
  Standard EPD opcodes include:
  <ul>
  <li> <b>acd</b> Analysis count: depth searched.</li>
  <li> <b>acn</b> Analysis count: number of nodes searched.</li>
  <li> <b>acs</b> Analysis count: search time in seconds.</li>
  <li> <b>bm</b> Best moves: move(s) judged best for some reason.</li>
  <li> <b>ce</b> Centipawn evaluation: evaluation in hundredths of a
  pawn from the perspective of the <b>side to move</b> -- note this
  differs from the Analysis window which shows evaluations in pawns from
  Whites perspective. </li>
  <li> <b>cX</b> Comment (where <b>X</b> is a digit, 0-9).</li>
  <li> <b>eco</b> <a ECO>ECO</a> system opening code.</li>
  <li> <b>id</b> Unique Identification for this position.</li>
  <li> <b>nic</b> <i>New In Chess</i> system opening code.</li>
  <li> <b>pm</b> Predicted move: the first move of the PV.</li>
  <li> <b>pv</b> Predicted variation: the line of best play.</li>
  </ul>
  
  <p>
  EPD files have a number of uses: Scid uses an EPD file to classify
  games according to the <a ECO>Encyclopedia of Chess Openings</a> (ECO)
  system, and you can create an EPD file for your opening repertoire,
  adding comments for positions you regularly reach in games.
  </p>
  <p>
  You can create a new EPD file or open an existing one, from the
  <menu>New</menu> and <menu>Open</menu> commands of the
  <menu>File</menu> menu. At most four EPD files can be open at any time.
  </p>
  
  <h3>EPD windows</h3>
  <p>
  For each open EPD file, you will see a window which shows the text for
  the current position. You do not have to press the Store button to store
  any changes you make to a positions text; the text will be stored whenever
  you move to a different position in the game.
  </p>
  
  <h3>Navigating EPD files</h3>
  <p>
  To browse through the positions in a EPD file, use the
  <menu>Next position</menu> and <menu>Previous position</menu> commands
  from the EPD window <menu>Tools</menu> menu, or use the shortcut
  keys <b>Ctrl+DownArrow</b> and <b>Ctrl+UpArrow</b>.
  These commands move to the next/previous position in the file, clearing
  the current game and setting its start position.
  </p>

  <h3>Annotating</h3>
  <p>
  EPD-files can be automatically annotated by selecting Tools /
  Annotate position. The upcoming dialogue asks for the time that
  should be used for the analysis, then the <a Analysis List>engine
  list</a> is opened for selection of an engine to be used. <b>Note</b> If an
  analysis window is already opened, the analysis is done using this
  engine without asking the user beforehand. Then the engine is
  started and the result added to the EPD. The EPD tags used are :
  acd, acn, ce and pv.
  </p>
  <p>

  <h3>Stripping out EPD fields</h3>
  <p>
  EPD files you find on the Internet may contain fields that do not
  interest you, and they can waste a lot of space in the file.
  For example, an EPD file of computer evaluations might have ce, acd,
  acn, pm, pv and id fields but you may only need the ce and pv fields.
  </p>
  <p>
  You can strip out an EPD opcode from all positions in the EPD file using
  the <menu>Strip out EPD field</menu> from the EPD window <menu>Tools</menu>
  menu.
  </p>

  <h3>The EPD window status bar</h3>
  <p>
  The status bar of each EPD window shows:
  <ul>
  <li>- the file status (<b>--</b> means unchanged, <b>XX</b> means
  changed, and <b>%%</b> means read-only); </li>
  <li>- the file name; </li>
  <li>- the number of positions in the file; </li>
  <li>- legal moves from the current position reach another position
  in this EPD file.</li>
  </ul>
  
  <p><footer>(Updated: Scid 3.6.26, October 2008)</footer></p>
}

####################
### Email window help:

set helpTitle(Email) "Email window"
set helpText(Email) {<h1>The Email window</h1>
  <p>
  Scids email manager window provides a way for you to manage correspondence
  chess games played by email.
  If you do not play email chess, this will be of no interest to you.
  But if you play correspondence chess by email, you can send your email
  messages directly from Scid!
  </p>
  <p>
  To use the email manager:
  <ul>
  <li><b>1)</b> Create the game(s) for your opponent in the
  database. </li>
  <li><b>2)</b> In the email manager window, select <b>Add</b> and enter
  your opponents details: name, email address, and the game numbers in the
  database. </li>
  <li><b>3)</b> Select <b>Send email</b> in the email window each time you
  have added moves to the game(s) and want to send a message. </li>
  </ul>
  
  <p>
  When you send an email message, Scid generates the message with the games
  in <a PGN>PGN</a> format <b>without</b> any comments, annotations or variations, since
  you would not usually want your opponent to see your analysis.
  You can edit the message before sending it to add conditional moves or
  other text.
  </p>
  <p>
  For each opponent, you may have any number of games; one or two is most
  common. Note that Scid does not check if game numbers change, so after
  setting up the details of your opponents, be careful to avoid deleting games
  or sorting your database of email games, since this will rearrange games
  and the game numbers for each opponent will be incorrect.
  </p>
  
  <h3>Limitations</h3>
  <p>
  Scid does not have any capability to check your email folder yet, so you
  still need to add your opponents moves to the games manually.
  </p>
  
  <h3>Configuration</h3>
  <p>
  A copy of each email message sent by Scid is stored in the file
  <b>~/.scid/scidmail.log</b>. If you want them to be stored
  in a different file, you will need to edit the file <b>tcl/start.tcl</b>
  and recompile Scid.
  </p>
  <p>
  Scid can send email messages using an SMTP server or sendmail.
  User the <b>Settings</b> button in the Email Manager to specify which
  you want to use.
  </p>
  <p>
  Scid stores the opponent details for a database in a file
  with the same name as the database and the suffix "<b>.sem</b>".
  </p>
  
  <p><footer>(Updated: Scid 3.6.2, December 2006)</footer></p>
}

####################
### Reports help:

set helpTitle(Reports) "Reports"
set helpText(Reports) {<h1>Reports</h1>
  <p>
  A <term>Report</term> in Scid is a document containing information about
  a particular position and/or player. There are two types of report Scid can
  generate: Opening Reports and Player Reports.
  </p>
  
  <h3><name Opening>Opening Reports</name></h3>
  <p>
  Scid can produce an <term>opening report</term> that displays interesting
  facts about an opening position. To generate an opening report, first make
  sure the displayed position is the one you want a report for, then select
  <b>Opening Report</b> from the <b>Tools</b> menu.
  </p>
  <p>
  The <term>Opening Report</term> window displays the results of the report
  Scid generated. The <b>File</b> menu has commands to save the report
  to a file in plain text, HTML or <a LaTeX>LaTeX</a> format.
  </p>
  <p>
  The first sections of the report present information on the games that
  reach the report position, and moves played from the position. You can
  see if the opening is becoming more popular, if it has many short draws,
  and what move orders (transpositions) are used to reach it.
  </p>
  <p>
  The Positional Themes section reports the frequency of certain common
  positional themes in the report games. For this, the first 20 moves of
  each game (hence the first 40 positions of each game after the starting
  position) are examined. To be counted as containing a theme, a game must
  contain that particular theme in at least 4 positions of its first 20
  moves. This avoids the brief occurrence of a theme (such as an isolated
  Queen pawn which is quickly captured) distorting results.
  </p>
  <p>
  The final and largest part of the report is the theory table. When saving
  the report to a file, you can choose to save just the theory table, a compact
  report without the theory table, or the whole report.
  </p>
  <p>
  Almost all the report sections can be turned on or off or adjusted in
  the opening report options, so you can customize a report to only show
  the information that interests you.
  </p>
  <p>
  Most items of information in the report window that are shown in color,
  invoke some action when selected with the left mouse button. For example,
  you can click on a game reference to load that game, or click on a
  positional theme to set the filter to contain only the report games where
  that theme occurred.
  </p>
  <p>
  Choosing <term>Merge Games</term> will merge the games from the
  opening report into the currently displayed game. This merges in
  the whole games as variations to the game, including the full
  reference.
  </p>
  
  <h4>Favorites</h4>
  <p>
  The <menu>Favorites</menu> menu in the report window lets you maintain a
  collection of favorite opening report positions and generate the opening
  reports for all those positions easily. Selecting "Add Report..." from
  the Favorites menu will add the current position as a favorite report
  position; you will be prompted to enter a name that will be used as
  the filename when favorite reports are generated.
  </p>
  <p>
  Select "Generate Reports..." from the Favorites menu to generate a report
  for each of your favorite reports using the current database. A dialog
  box will appear allowing you to specify the report type and format, and
  a directory where report files will be saved. A suitable suffix for the
  format you selected (e.g. ".html" for HTML format) will be added to each
  report file name.
  </p>
  
  <h3><name Player>Player Reports</name></h3>
  <p>
  A <term>Player Report</term> is very similar to an opening report, but it
  contains information about the games of a single player with the white or
  black pieces. You can generate a player report from the Tools menu, or from
  the <a PInfo>Player Info</a> window.
  </p>
  <p>
  A player report can be generated either for all games by the specified player
  with the specified pieces, or for only the subset of those games which reach
  the current position on the main window chessboard.
  </p>
  
  <h3>Limits</h3>
  <p>
  There is a limit of 2000 games for most data generated by reports, so
  if the report position occurs in more than 2000 games, some results may
  be slightly incorrect.
  </p>
  <p>
  Also, there is a limit of 500 games for the theory table. If the report
  position occurs in more than 500 games, only the 500 games with the highest
  average Elo rating are used to generate the theory table. You can adjust the
  number of games used to generate the theory table in the Report options.
  </p>
  
  <p><footer>(Updated: Scid 3.6.26, October 2008)</footer></p>
}


####################
### Player List help:

set helpTitle(PList) "Player Finder window"
set helpText(PList) {<h1>The Player Finder window</h1>
  <p>
  The <term>Player Finder</term> window displays a list of names of
  players in the current database. Selecting a player will open the
  <a PInfo>Player Info</a> window to display more detailed information
  about that player.
  </p>
  <p>
  Five columns are displayed showing each player's name, peak Elo
  rating, number of games played and the year of their oldest and
  newest game.
  Click on any column title at the top of the list to sort the
  list by that column.
  </p>
  <p>
  The controls below the list allow you to filter the list contents.
  You can alter the maximum list size, enter a case-insensitive player
  name prefix (such as "ada" to search for "Adams"), and restrict the
  ranges of Elo rating and number of games played.
  </p>
  
  <p><footer>(Updated: Scid 3.6.2, December 2006)</footer></p>
}

####################
### Player Info help:

set helpTitle(PInfo) "Player Info window"
set helpText(PInfo) {<h1>The Player Info window</h1>
  <p>
  
  The <term>Player Information</term> window is produced or updated whenever
  you click the left mouse button on a player name in the game information
  area (below the chessboard) or in the <a Crosstable>crosstable</a> window.
  </p>
  <p>
  It displays (hopefully) useful information about the player, including their
  success with White and Black, favorite openings (by <a ECO>ECO code</a>),
  and rating history.
  </p>
  <p>
  All percentages displayed are an expected score (success rate), from the
  player's perspective -- so higher is always better for the player, whether they
  are White or Black.
  </p>
  <p>
  You can see the player's rating history in a graph by pressing the
  <a Graphs Rating>Rating graph</a> button.
  </p>
  <p>
  Any number printed in red can be clicked with the left mouse button to set
  the <a Searches Filter>filter</a> to the games it represents.
  </p>
  <p>
  If a current verison of the ratings file (cf. <url
  http://scid.sourceforge.net/>Scid website</url>) is online links to
  additional ressources may be present that will be accessible by the
  users web browser provided Internet access is available. These infos
  can be accessed by the following symbols in the player information
  window (note that not all symbols may be present!):
  <ul>
  <li><button fidelnk> Go to the players FIDE profile page</li>
  <li><button iccflnk> Go to the players ICCF profile page</li>
  <li><button dsblnk> Go to the players profile at the Deutscher
  Schachbund.</li>
  <li><button bcflnk> Go to the players profile at the British Chess
  Federation.</li>
  <li><button smlnk> Go to te players profile at SchemingMind.</li>
  <li><button wikiplnk> Call up the players Wikipedia profile page.
  Scid will try to use the language set for Scid itself. If no page is
  available, it will resort to German (for pure technical reasons).</li>
  <li><button dnblnk> Call up the German national library for books by
  or about the player.</li>
  <li><button seealsolnk> An alternative way to access Wikipedia.</li>
  <li><button viaflnk> Call up player information at the Virtual
  Autority File (VIAF). This could be used to call up books of/by this
  player in the contributing national libraries.</li>
  </ul>
  
  <p><footer>(Updated: Scid 4.3, January 2011)</footer></p>
}

####################
### Graphs help:

set helpTitle(Graphs) "Graph windows"
set helpText(Graphs) {<h1>Graph windows</h1>
  <p>
  Scid has a number of windows which display information graphically.
  They are explained below.
  </p>
  
  <h3><name FilterGraph>Relative and absolute Filter Graph windows</name></h3>
  <p>
  The <term>relative Filter Graph</term> window shows trends by date or by
  Elo rating for the games in the current filter, compared to the
  entire database. For example, it is useful when the <a Tree>tree</a>
  is open as a tool showing how the current opening position has changed
  in popularity in recent years or decades, or whether it is especially
  popular among higher-rated players such as grandmasters.
  Each point on the graph represents the number of games in the filter
  per 1000 games in the entire database, for a particular date or Elo
  rating range.
  </p>
  <p>
  The second Filter graph window is the <term>absolute Filter
  Graph</term> window. This graph shows the absolute quantity of games
  in the filter according the selecte criteria. It is possible to select
  the criteria: Decade, Year, Rating and Moves.<br>
  The small button near the Close-Button opens the dialog to configure
  the graph. You can select the range (from, to) and the size of
  intervall for the x-axes. The "decade"-criteria can't be configured,
  use Year insteed. If "Estimate" selected a missing rating will be
  estimate like described below. In other case no estimation is done
  and missing ratings are count as zero. This matches the Min. Elo
  evaluation in the statistic-window. Use "Update" to start a new
  evaluation with the actual value without closing the dialog.
  </p>
  <p>
  Please note: The calculation can be need some time on large ranges and
  small intervalls, in addition the readability degreases. 
  </p>
  <p>
  When plotting the Filter graph by rating, Scid uses the average (mean)
  rating for each game. Estimate ratings (such as those in the spelling file)
  are not used. If one player in a game has a rating but the opponent
  does not, the opponent is presumed to have the same up to a limit of 2200.
  For example, if one player is rated 2500 and the opponent has no rating,
  the mean rating is (2500+2200)/2=2350.
  </p>
  
  <h3><name Rating>Rating Graph window</name></h3>
  <p>
  The <term>Rating Graph</term> window shows the rating history of one
  player or the two players of the current game.
  You can produce the graph for a single player by pressing the
  <b>Rating graph</b> button in the <a PInfo>player information</a>
  window, or produce it for the two players of the current game by
  selecting <b>Rating graph</b> from the <menu>Tools</menu> menu.
  </p>
  
  <h3><name Score>Score Graph window</name></h3>
  <p>
  The <term>Score Graph</term> window shows the numeric evaluations (scores)
  stored in the comments of the current game as a graph.
  You can click the left mouse button anywhere in the score graph to go to the
  corresponding position in the game.
  </p>
  <p>
  Two types of evaluation comment are recognized: those produced by
  the Scid <a Analysis>analysis</a> window (which have the format
  <ul>
  <li><b>1.e4 {"+0.25 ...."}</b></li>
  </ul>
  and are always scores from White's perspective) and those produced
  by the Crafty annotate command (which have the format
  <ul>
  <li><b>1.e4 ({9:+0.25} ....)</b></li>
  </ul>
  and are also scores from White's perspective).
  </p>
  <p>
  In case the scores are not given from whites perspective, one can
  choose the perspective to use from the options menu to correct for
  this.
  ###--- Checking both ??? ---###
  </p>
  
  <h3><name Tree>Tree Graph window</name></h3>
  <p>
  The <term>Tree Graph</term> window is available from the tree
  window. It shows the performance of the most popular moves from the
  current position. More information is available from the
  <a Tree Graph>Tree</a> help page.
  </p>
  
  <p><footer>(Updated: Scid 3.6.26, October 2008)</footer></p>
}

####################
### Tablebases help:

set helpTitle(TB) "Tablebases"
set helpText(TB) {<h1>Tablebases</h1>
  
  <p>
  A <term>tablebase</term> is a file containing the perfect result
  information about all positions of a particular material setup,
  such as King and Rook versus King and Pawn. Tablebases for all
  material situations up to five men (including the Kings) have been
  generated, and some simple 6-men tablebases are also available.
  </p>
  <p>
  Scid can use Nalimov-format tablebases that are used by many modern
  chess engines. These often end with the file suffix <b>.nbw.emd</b>
  or <b>.nbb.emd</b>. All 3-, 4- and 5-men Nalimov tablebases can be
  used in Scid.
  </p>
  
  <h3>Using tablebases in Scid</h3>
  <p>
  To use tablebase files in Scid, simply set their directories by
  selecting <b>Tablebase directory...</b> from the <menu>Options</menu> menu.
  You can select up to 4 directories where your tablebase files are stored.
  You can press a <b>...</b> button to the right of an entry to choose a
  file, to specify that the directory of that file should be used.
  </p>
  <p>
  When a position found in a tablebase file is reached, the game information
  area (below the chessboard) will show tablebase information. You can
  configure the amount of information shown by clicking the right-mouse
  button in that area or selecting <b>Game information</b> from the
  <menu>Options</menu> menu. Selecting the "result and best moves" option
  gives the most useful information, but is much often slower than
  the "result only" option.
  </p>
  
  <h3>The Tablebase window</h3>
  <p>
  You can get even more tablebase information about the current position
  by opening the <term>Tablebase window</term> (<menu>Windows</menu> menu,
  shortcut: Ctrl+Shift+=). This window shows the result with perfect play
  of all legal moves from the current position.
  </p>
  <p>
  The window has two main parts. The summary frame (on the left) shows
  which tablebases Scid found on your computer and a summary for each
  tablebase. The results frame (on the right) shows optimal results for
  all moves from the current position displayed in the main window.
  </p>
  
  <h4>The summary frame</h4>
  <p>
  The top part of the summary frame lets you select a particular
  tablebase. Those you have available are shown in blue and unavailable
  tablebases are shown in gray, but you can select any tablebase.
  The lower part of the summary frame shows summary information for the
  selected tablebase. (Not all tablebases have a summary recorded in
  Scid yet.)
  </p>
  <p>
  The summary includes the frequency (how many games per million reach a
  position with this material, computed from a database of more than
  600,000 master-level games), a longest mate for either side, and the
  number of mutual (or "reciprocal") zugzwangs. A mutual zugwang is a
  position where white to move draws and black to move loses, or where
  white to move loses and black to move draws, or where whoever moves
  loses.
  </p>
  <p>
  For some tablebases with mutual zugzwangs, the summary also includes
  a list of all of the zugwang positions or a selection of them. A full
  list for every tablebase is not feasible since some tablebases have
  thousands of mutual zugzwangs.
  </p>
  <p>
  You can set up a random position from the selected tablebase by pressing
  the <b>Random</b> button.
  </p>
  
  <h4>The results frame</h4>
  <p>
  The results frame is updated whenever the chessboard in the main window
  changes. The first line shows how many moves win (+), draw (=), lose (-),
  or have an unknown result (?). The rest of the frame gives a more detailed
  list of results, ranking them from shortest to longest mates, then draws,
  then longest to shortest losses. All distances are to checkmate.
  </p>
  
  <h4>The results board</h4>
  <p>
  In a tablebase position, it is often useful what the tablebase results
  would be if all the pieces in the current position were on their
  current squares but one particular piece was moved somewhere else.
  For example, you may want to determine how close a king has to be to
  a passed pawn to win or draw a particular position. In endgame books
  this information is often called the <i>winning zone</i> or
  <i>drawing zone</i> of a piece in a position.
  </p>
  <p>
  You can find this information in Scid by pressing the button with an
  image of a chessboard, to show the <term>results board</term> in the
  tablebase window.
  When you press the left mouse button on any piece in this board, a
  symbol is drawn in each empty square showing what the tablebase result
  would be (with the same side to move as the current main window position)
  if the selected piece was on that square.
  </p>
  <p>
  There are five different symbols a square can have:
  a white <b>#</b> means White wins;
  a black <b>#</b> means Black wins;
  a blue <b>=</b> means the position is drawn;
  a red <b>X</b> means the position is illegal (because the kings are
  adjacent or the side to move is giving check); and
  a red <b>?</b> means the result is unknown because the necessary
  tablebase file is not available.
  </p>
  
  <h3>Obtaining Tablebase files</h3>
  <p>
  See the <a Author Related>related links</a> section for help on finding
  tablebase files on the Internet.
  </p>
  
  <p><footer>(Updated: Scid 3.6.2, December 2006)</footer></p>
}

####################
### Bookmarks help:

set helpTitle(Bookmarks) "Bookmarks"
set helpText(Bookmarks) {<h1>Bookmarks</h1>
  <p>
  Scid allows you to <term>bookmark</term> important games for easy
  future reference. The bookmarks menu is available from the
  <menu>File</menu> menu, the toolbar, or the <B>Ctrl+B</b> shortcut key.
  </p>
  <p>
  When you select a bookmarked game from the Bookmarks menu, Scid will
  open its database if necessary, find that game, and move to the game
  position at which it was bookmarked.
  </p>
  <p>
  Only games in a Scid format database (not a <a PGN>PGN</a> file or the clipbase)
  can be bookmarked.
  </p>
  <p>
  If the database of a bookmarked game is sorted or compacted, the bookmark
  details may become out of date. When that happens, Scid will search the
  database for the best matching game (comparing player names, site, etc)
  when the bookmark is selected, so the bookmarked game should still be
  loaded. However, if details of the bookmarked game change, it is possible
  that a different game will match the bookmark details better and be
  loaded instead. So it is a good idea to re-bookmark a game if you edit
  its players, site, result, round or year.
  </p>
  
  <h3>Editing bookmarks</h3>
  <p>
  With the bookmark editor, you can change the menu text displayed for
  each bookmarked game and add folders to categorize bookmarks.
  </p>
  
  <h3>Hints</h3>
  <p>
  You can use bookmarks for fast access to databases you use often
  by bookmarking a game from each database. Another good use for
  bookmarks is to add important games you find when studying a
  particular chess opening.
  </p>
  <p>
  The bookmarks menu contains an entry for controlling the display of
  bookmark folders: they can be shown as submenus (useful when there are
  many bookmarks), or as a single list.
  </p>
  
  <p><footer>(Updated: Scid 3.6.2, December 2006)</footer></p>
}

####################
### Command-line options help:

set helpTitle(Cmdline) "Command-line options"
set helpText(Cmdline) {<h1>Command-line options</h1>
  <p>
  When you start Scid from a shell or console, there are command-line
  options you can specify. Scid-format databases (with or without a
  file suffix such as ".si3") and <a PGN>PGN</a> files to be opened can be given,
  for example:
  <ul>
  <li>scid mybase newgames.pgn</li>
  </ul>
  will start Scid and open the Scid database called mybase and the
  <a PGN>PGN</a> file named newgames.pgn.
  </p>
  <p>
  There are also optional arguments to control which files Scid should
  search for and use when it starts. You can turn off the use of
  <a TB>tablebases</a> with the <b>-xtb</b> (or <b>-xt</b>) option,
  avoid loading the <a ECO>ECO openings classification</a> file with
  <b>-xeco</b> or <b>-xe</b>, and avoid loading the
  <a Maintenance Spellcheck>spelling</a> file
  with <b>-xspell</b> or <b>-xs</b>. Also, the option <b>-fast</b>
  or <b>-f</b> does all three, so <b>scid -f</b> is equivalent
  to <b>scid -xeco -xspell -xtb</b>.
  </p>

  <p>
  Additionally, a filter file (.sso) can be used on the command line.
  <ul>
  <li>scid mybase myfilter</li>
  </ul>
  will open mybase and run myfilter immediately against it to select a
  set of games. This can e.g. be used to select a list of unfinished
  games in a pgn file.
  </p>
  
  <p><footer>(Updated: Scid 3.6.26, October 2008)</footer></p>
}

####################
### Pgnscid help:

set helpTitle(Pgnscid) "Pgnscid"
set helpText(Pgnscid) {<h1>Pgnscid</h1>
  <p>
  <term>Pgnscid</term> is the separate program that you need to use to
  convert <a PGN>PGN</a> (portable game notation) files into Scid databases.
  </p>
  <p>
  To convert a file named <i>myfile.pgn</i>, simply type:
  <ul>
  <li> <b>pgnscid myfile.pgn</b> </li>
  </ul>
  and the scid database (consisting of <i>myfile.si3</i>, <i>myfile.sg3</i>
  and <i>myfile.sn3</i>) will be created.
  Any errors or warnings will be written to the file <i>myfile.err</i>.
  </p>
  <p>
  If you want the database to be created in a different directory or have
  a different name, you can add the database name to the command line,
  for example:
  <ul>
  <li> <b>pgnscid myfile.pgn mybase</b> </li>
  </ul>
  will create a database consisting of the files <i>mybase.si3</i>,
  <i>mybase.sg3</i> and <i>mybase.sn3</i>.
  </p>
  <p>
  Note that pgnscid (and scid) can read Gzipped <a PGN>PGN</a> files
  (e.g. <b>mybase.pgn.gz</b>)
  directly, so if you have a large <a PGN>PGN</a> file compressed with Gzip to save
  disk space, you do not have to un-gzip it first.
  </p>
  
  <h3>Options</h3>
  <p>
  There are two optional arguments pgnscid can accept before the filename:
  <b>-f</b> and <b>-x</b>.
  </p>
  <p>
  The <b>-f</b> option forces overwriting of an existing database; by
  default, pgnscid will not convert to a database that already exists.
  </p>
  <p>
  The <b>-x</b> option causes pgnscid to ignore all text between games.
  By default, text between games is stored as a pre-game comment of the
  game that follows. This option only affects text between games; standard
  comments inside each game are still converted and stored.
  </p>
  
  <h3>Formatting player names</h3>
  <p>
  To reduce the number of multiple spellings of names that refer to the
  same player, some basic formatting of player names is done by pgnscid.
  For example, the number of spaces after each comma is standardized to one,
  any spaces at the start and end of a name are removed, and a dot at the
  end of a name is removed.
  Dutch prefixes such as "van den" and "Van Der" are also normalized to have
  a capital V and small d.
  </p>
  <p>
  You can edit (and even spellcheck) player, event, site and round names in
  Scid; see the <a Maintenance Editing>Maintenance</a> help page for details.
  </p>
  
  <p><footer>(Updated: Scid 3.6.2, December 2006)</footer></p>
}


####################
### File formats help:

set helpTitle(Formats) "File Formats"
set helpText(Formats) {<h1>Scid File Formats</h1>
  <p>
  Scid databases consist of three essential files: an Index file, a Name
  file and a Game file. All have a three-letter suffix starting with "s":
  ".si3" for index files, ".sn3" for name files, and ".sg3" for game files.
  </p>
  
  <h3>The Index (.si3) file</h3>
  <p>
  This file contains a description for the database and a small fixed-size
  entry for each game. The current size is 41 bytes per game.
  Of this, about 28 bytes is essential information such as the result,
  date, player/event/site name ID numbers (the actual names are in the
  Name file), etc.
  </p>
  <p>
  The remaining 13 bytes contain redundant but useful information about the
  game that is used to speed up position, material and pattern searches.
  See the section <a Formats Fast>Fast searches</a> below for more information.
  </p>
  
  <h3>The Name (.sn3) file</h3>
  <p>
  This file contains all player, event, site and round names used in the
  database. Each name is stored only once even if it occurs in many games.
  The name file is usually the smallest of the three essential files in a
  database.
  </p>

  <h3>The Game (.sg3) file</h3>
  <p>
  This file contains the actual moves, variations and comments of each game.
  The move encoding format is very compact: most moves take only one byte
  of storage.
  </p>
  <p>
  When a game is replaced, its new version is saved to the <i>end</i> of
  the game file, so wasted space can accumulate over time. You can restore
  a database to its minimal size by <a Compact>compacting</a> it.
  </p>
  
  <h3>Other Scid files</h3>
  <p>
  An <a EPD>EPD</a> file (suffix: ".epd")
  contains a number of chess positions, each with a text comment.
  The EPD file format is described in the <a Author Related>PGN standard</a>.
  </p>
  <p>
  An email (suffix: ".sem") file for a database stores details of the opponents
  you send email messages to.
  </p>
  <p>
  A SearchOptions (suffix: ".sso") file contains Scid
  <a Searches Header>header</a> or
  <a Searches Material>material/pattern</a> search settings.
  </p>
  
  <h3><name Fast>Fast searches in Scid</name></h3>
  <p>
  As mentioned above, the index file stores some redundant but useful
  information about each game to speed up position or material searches.
  </p>
  <p>
  For example, the material of the final position is stored. If you search
  for rook and pawn endings, then all games that end with a queen, bishop
  or knight on the board (and have no pawn promotions) will be quickly
  skipped over.
  </p>
  <p>
  Another useful piece of information stored is the order in which pawns
  leave their home squares (by moving, or by being captured). This is used
  to speed up tree or exact position searches, especially for opening
  positions. For example, when searching for the starting position of the
  French defence (1.e4 e6), every game starts with 1.e4 c5, or 1.d4, etc, will
  be skipped, but games starting with 1.e4 e5 will still need to be searched.
  </p>
  
  <p><footer>(Updated: Scid 3.6.2, December 2006)</footer></p>
}

####################
### Options and Fonts help:

set helpTitle(Options) "Options"
set helpText(Options) {<h1>Options and preferences</h1>
  <p>
  Many Scid options and preferences (such as the board size, colors, fonts,
  and default settings) are adjustable from the <menu>Options</menu> menu.
  All these (and more, such as the last directory you loaded a database from
  and the sizes of some windows) are saved to an options file when
  you select <b>Save Options</b> from the Options menu.
  The options file is loaded whenever you start Scid.
  </p>
  <p>
  If you use Windows, the options file is <b>scid.opt</b> in the directory
  where the Scid program file <b>scid.exe</b> is located. For users of Unix
  operating systems (such as Solaris or Linux) the file
  is <b>~/.scid/scidrc</b>.
  </p>
  
  <h3><name MyPlayerNames>Setting your player names</name></h3>
  <p>
  There may be a player name (or several names) for whom, whenever a game
  is loaded, you would like the main window chessboard to be displayed from
  the perspective of that player. You can configure a list of such names
  using <b>My Player Names...</b> from the <menu>Options/Chessboard</menu>
  menu. In the dialog box that appears, enter one player name on each line.
  Wildcard characters ("<b>?</b>" for exactly one character and "<b>*</b>"
  for a sequence of zero or more characters) can be used.
  </p>
  
  <h3><name Fonts>Setting Fonts</name></h3>
  <p>
  Scid has three basic fonts it uses in most of its windows, and you can
  customize all of them. They are called <b>regular</b>, <b>small</b> and
  <b>fixed</b>.
  </p>
  <p>
  The fixed font should be a fixed-width (not proportional) font. It is used
  for the <a Tree>tree</a> and <a Crosstable>crosstable</a> windows.
  </p>
  
  <p><footer>(Updated: Scid 3.6.2, December 2006)</footer></p>
}

####################
### NAG values help:

set helpTitle(NAGs) "NAG values"
set helpText(NAGs) {<h1>Standard NAG values</h1>
  <p>
  Standard NAG (Numeric Annotation Symbol) values defined in the
  <a Author Related>PGN standard</a> are:
  </p>
  <cyan>
  <ul>
  <li>  1     Good move                                                      : !       </li>
  <li>  2     Poor move                                                      : ?       </li>
  <li>  3     Excellent move                                                 : !!      </li>
  <li>  4     Blunder                                                        : ??      </li>
  <li>  5     Interesting move                                               : !?      </li>
  <li>  6     Dubious move                                                   : ?!      </li>
  <li>  7     Forced move                                                    : forced  </li>
  <li>  8     Singular move; no reasonable alternatives                      : □       </li>
  <li>  9     Worst move                                                     : worst   </li>
  <li> 10     Drawish position                                               : =       </li>
  <li> 11     Equal chances, quiet position                                  : =, quiet</li>
  <li> 12     Equal chances, active position                                 : ↹       </li>
  <li> 13     Unclear position                                               : ~       </li>
  <li> 14     White has a slight advantage                                   : +=      </li>
  <li> 15     Black has a slight advantage                                   : =+      </li>
  <li> 16     White has a moderate advantage                                 : +/-     </li>
  <li> 17     Black has a moderate advantage                                 : -/+     </li>
  <li> 18     White has a decisive advantage                                 : +-      </li>
  <li> 19     Black has a decisive advantage                                 : -+      </li>
  <li> 20     White has a crushing advantage                                 : +--     </li>
  <li> 21     Black has a crushing advantage                                 : --+     </li>
  <li> 22     White is in zugzwang                                           :  ⊙      </li>
  <li> 23     Black is in zugzwang                                           :  ⊙      </li>
  <li> 24     White has a slight space advantage                             :  ◯      </li>
  <li> 25     Black has a slight space advantage                             :  ◯      </li>
  <li> 26     White has a moderate space advantage                           :  ◯◯     </li>
  <li> 27     Black has a moderate space advantage                           :  ◯◯     </li>
  <li> 28     White has a decisive space advantage                           :  ◯◯◯    </li>
  <li> 29     Black has a decisive space advantage                           :  ◯◯◯    </li>
  <li> 30     White has a slight time (development) advantage                :  ↻      </li>
  <li> 31     Black has a slight time (development) advantage                :  ↺      </li>
  <li> 32     White has a moderate time (development) advantage              :  ↻↻     </li>
  <li> 33     Black has a moderate time (development) advantage              :  ↺↺     </li>
  <li> 34     White has a decisive time (development) advantage              :  ↻↻↻    </li>
  <li> 35     Black has a decisive time (development) advantage              :  ↺↺↺    </li>
  <li> 36     White has the initiative                                       :  ↑      </li>
  <li> 37     Black has the initiative                                       :  ↓      </li>
  <li> 38     White has a lasting initiative                                 :  ⇑      </li>
  <li> 39     Black has a lasting initiative                                 :  ⇓      </li>
  <li> 40     White has the attack                                           :  →      </li>
  <li> 41     Black has the attack                                           :  ←      </li>
  <li> 42     White has insufficient compensation for material deficit       :  &/-    </li>
  <li> 43     Black has insufficient compensation for material deficit       :  &/+    </li>
  <li> 44     White has sufficient compensation for material deficit         :  =/&    </li>
  <li> 45     Black has sufficient compensation for material deficit         :  =/&    </li>
  <li> 46     White has more than adequate compensation for material deficit :  +/&    </li>
  <li> 47     Black has more than adequate compensation for material deficit :  -/&    </li>
  <li> 48     White has a slight center control advantage                    :  ⊞      </li>
  <li> 49     Black has a slight center control advantage                    :  ⊞      </li>
  <li> 50     White has a moderate center control advantage                  :  ⊞⊞     </li>
  <li> 51     Black has a moderate center control advantage                  :  ⊞⊞     </li>
  <li> 52     White has a decisive center control advantage                  :  ⊞⊞⊞    </li>
  <li> 53     Black has a decisive center control advantage                  :  ⊞⊞⊞    </li>
  <li> 54     White has a slight kingside control advantage                  :  ⟩      </li>
  <li> 55     Black has a slight kingside control advantage                  :  ⟩      </li>
  <li> 56     White has a moderate kingside control advantage                :  ⟫      </li>
  <li> 57     Black has a moderate kingside control advantage                :  ⟫      </li>
  <li> 58     White has a decisive kingside control advantage                :  ⋙      </li>
  <li> 59     Black has a decisive kingside control advantage                :  ⋙      </li>
  <li> 60     White has a slight queenside control advantage                 :  ⟨      </li>
  <li> 61     Black has a slight queenside control advantage                 :  ⟨      </li>
  <li> 62     White has a moderate queenside control advantage               :  ⟪      </li>
  <li> 63     Black has a moderate queenside control advantage               :  ⟪      </li>
  <li> 64     White has a decisive queenside control advantage               :  ⋘      </li>
  <li> 65     Black has a decisive queenside control advantage               :  ⋘      </li>
  <li> 66     White has a vulnerable first rank                              :         </li>
  <li> 67     Black has a vulnerable first rank                              :         </li>
  <li> 68     White has a well protected first rank                          :         </li>
  <li> 69     Black has a well protected first rank                          :         </li>
  <li> 70     White has a poorly protected king                              :         </li>
  <li> 71     Black has a poorly protected king                              :         </li>
  <li> 72     White has a well protected king                                :         </li>
  <li> 73     Black has a well protected king                                :         </li>
  <li> 74     White has a poorly placed king                                 :         </li>
  <li> 75     Black has a poorly placed king                                 :         </li>
  <li> 76     White has a well placed king                                   :         </li>
  <li> 77     Black has a well placed king                                   :         </li>
  <li> 78     White has a very weak pawn structure                           :         </li>
  <li> 79     Black has a very weak pawn structure                           :         </li>
  <li> 80     White has a moderately weak pawn structure                     :         </li>
  <li> 81     Black has a moderately weak pawn structure                     :         </li>
  <li> 82     White has a moderately strong pawn structure                   :         </li>
  <li> 83     Black has a moderately strong pawn structure                   :         </li>
  <li> 84     White has a very strong pawn structure                         :         </li>
  <li> 85     Black has a very strong pawn structure                         :         </li>
  <li> 86     White has poor knight placement                                :         </li>
  <li> 87     Black has poor knight placement                                :         </li>
  <li> 88     White has good knight placement                                :         </li>
  <li> 89     Black has good knight placement                                :         </li>
  <li> 90     White has poor bishop placement                                :         </li>
  <li> 91     Black has poor bishop placement                                :         </li>
  <li> 92     White has good bishop placement                                :  ↗      </li>
  <li> 93     Black has good bishop placement                                :  ↖      </li>
  <li> 94     White has poor rook placement                                  :         </li>
  <li> 95     Black has poor rook placement                                  :         </li>
  <li> 96     White has good rook placement                                  :  ⇈      </li>
  <li> 97     Black has good rook placement                                  :  ⇊      </li>
  <li> 98     White has poor queen placement                                 :         </li>
  <li> 99     Black has poor queen placement                                 :         </li>
  <li>100     White has good queen placement                                 :         </li>
  <li>101     Black has good queen placement                                 :         </li>
  <li>102     White has poor piece coordination                              :         </li>
  <li>103     Black has poor piece coordination                              :         </li>
  <li>104     White has good piece coordination                              :         </li>
  <li>105     Black has good piece coordination                              :         </li>
  <li>106     White has played the opening very poorly                       :         </li>
  <li>107     Black has played the opening very poorly                       :         </li>
  <li>108     White has played the opening poorly                            :         </li>
  <li>109     Black has played the opening poorly                            :         </li>
  <li>110     White has played the opening well                              :         </li>
  <li>111     Black has played the opening well                              :         </li>
  <li>112     White has played the opening very well                         :         </li>
  <li>113     Black has played the opening very well                         :         </li>
  <li>114     White has played the middlegame very poorly                    :         </li>
  <li>115     Black has played the middlegame very poorly                    :         </li>
  <li>116     White has played the middlegame poorly                         :         </li>
  <li>117     Black has played the middlegame poorly                         :         </li>
  <li>118     White has played the middlegame well                           :         </li>
  <li>119     Black has played the middlegame well                           :         </li>
  <li>120     White has played the middlegame very well                      :         </li>
  <li>121     Black has played the middlegame very well                      :         </li>
  <li>122     White has played the ending very poorly                        :         </li>
  <li>123     Black has played the ending very poorly                        :         </li>
  <li>124     White has played the ending poorly                             :         </li>
  <li>125     Black has played the ending poorly                             :         </li>
  <li>126     White has played the ending well                               :         </li>
  <li>127     Black has played the ending well                               :         </li>
  <li>128     White has played the ending very well                          :         </li>
  <li>129     Black has played the ending very well                          :         </li>
  <li>130     White has slight counterplay                                   :  ⇄      </li>
  <li>131     Black has slight counterplay                                   :  ⇆      </li>
  <li>132     White has moderate counterplay                                 :  ⇄⇄     </li>
  <li>133     Black has moderate counterplay                                 :  ⇆⇆     </li>
  <li>134     White has decisive counterplay                                 :  ⇄⇄⇄    </li>
  <li>135     Black has decisive counterplay                                 :  ⇆⇆⇆    </li>
  <li>136     White has moderate time control pressure                       :  ⊕      </li>
  <li>137     Black has moderate time control pressure                       :  ⊖      </li>
  <li>138     White has severe time control pressure                         :  ⊕⊕     </li>
  <li>139     Black has severe time control pressure                         :  ⊖⊖     </li>
  </ul>
  </cyan>
  
  <p>
  Other proposed NAG values for Chess Informant publication symbols include:
  </p>
  <cyan>
  <ul>
  <li>140     With the idea ...           : △  </li>
  <li>141     Aimed against ...           :    </li>
  <li>142     Better move                 : ⌓  </li>
  <li>143     Worse move                  :    </li>
  <li>144     Equivalent move             : R  </li>
  <li>145     Editor's Remark             : RR </li>
  <li>146     Novelty                     : N  </li>
  <li>147     Weak point                  : ×  </li>
  <li>148     Endgame                     : ⊥  </li>
  <li>149     Line                        : ⟺  </li>
  <li>150     Diagonal                    : ⇗  </li>
  <li>151     White has a pair of Bishops : ◫  </li>
  <li>152     Black has a pair of Bishops :    </li>
  <li>153     Bishops of opposite color   : ◨  </li>
  <li>154     Bishops of same color       : ⊶  </li>
  </ul>
  </cyan>
  
  <p>
  Other suggested values are:
  </p>
  <cyan>
  <ul>
  <li>190     Etc.            : ǁ </li>
  <li>191     Doubled pawns   : ⡁ </li>
  <li>192     Isolated pawn   : ⚯ </li>
  <li>193     Connected pawns : ⚮ </li>
  <li>194     Hanging pawns   :   </li>
  <li>195     Backwards pawn  :   </li>
  </ul>
  </cyan>
  
  <p>
  Symbols defined by Scid for its own use are:
  </p>
  <cyan>
  <ul>
  <li>201   Diagram        : D or #</li>
  <li>210   see            : —     </li>
  <li>211   mate           : #     </li>
  <li>212   passed pawn    : ⚨     </li>
  <li>213   more pawns     :       </li>
  <li>214   with           : ⌊     </li>
  <li>215   without        : ⌋     </li>
  </ul>
  </cyan>
  
  <p><footer>(Updated: Scid 4.2.2, January 2010)</footer></p>
}


set helpTitle(ECO) "ECO guide"
set helpText(ECO) {<h1>ECO openings classification</h1>
  <p>
  Scid can classify chess games according to the <b>ECO</b>
  (Encyclopedia of Chess Openings) chess openings classification.
  An standard ECO code consists of a letter (A..E) followed by two
  digits, so there are 500 distinct standard ECO codes.
  </p>
  
  <h3>Scid extensions to the ECO system</h3>
  <p>
  The ECO system is very limited and not sufficient for modern games:
  some of the 500 codes are almost never seen any more, while some
  are seen very often. To improve this situation, Scid allows an optional
  extension to the basic ECO codes: each code can be extended with a
  letter (a..z), with a further extension (another digit, 1..4) being
  possible but not used in the standard Scid ECO file yet.
  So an extended Scid ECO code looks like "<b>A41e</b>" or "<b>E99b2</b>".
  Many of the most common ECO codes found in modern master-level games have
  extensions defined in the Scid ECO file.
  </p>
  
  <h3><name Browser>The ECO Browser window</name></h3>
  <p>
  The <term>ECO Browser</term> window shows you the positions that are
  used to classify each ECO code, and the frequency and performance of
  ECO codes in the current database.
  </p>
  <p>
  The upper pane shows the frequency of each ECO code in the current
  database. The bars in the graph have three sections: the lowest
  (lightest color) is the number of White wins, the middle is the
  number of draws, and the highest (darkest) is the number of Black wins.
  This lets you see at a glance the characteristics of an opening: for
  example, if White is scoring very well, or if draws are very common.
  </p>
  <p>
  To go to a deeper ECO level, click the left mouse button
  on a bar in the graph (or type the
  letter or digit it corresponds to). To go back to the higher level,
  click the right mouse button anywhere in the graph, or press the left
  arrow (or delete or backspace) key.
  </p>
  <p>
  The lower pane shows the positions that comprise a particular ECO code,
  according to the ECO file you have loaded.
  </p>
  
  <h3>Loading the Scid ECO file</h3>
  <p>
  The ECO file that comes with Scid is called <b>scid.eco</b>,
  and Scid tries to load this when it starts up.
  If Scid cannot find it, you will need to do the following to enable ECO
  classification:
  <ul>
  <li>(a) In Scid, use the menu command
  <menu>Options: Load ECO file</menu>
  and select the file <b>scid.eco</b>. </li>
  <li>(b) Save options (from the <menu>Options</menu> menu). </li>
  </ul>
  After you do this, the ECO file will be loaded every time you start Scid.
  </p>
  
  <h3><name Codes>ECO code system</name></h3>
  <p>
  The basic structure of the ECO system is:
  </p>
  <p>
  <b><blue><run ::windows::eco::Refresh A>A</run></blue></b>
  1.d4 Nf6 2...;  1.d4 ...;  1.c4;  1.various
  <ul>
  <li>  <b>A0</b>  1.<i>various</i>
  (<b>A02-A03</b> 1.f4: <i>Bird's Opening</i>,
  <b>A04-A09</b>  1.Nf3: <i>Reti, King's Indian Attack</i>) </li>
  <li>  <b>A1</b>  1.c4 ...: <i>English</i> </li>
  <li>  <b>A2</b>  1.c4 e5: <i>King's English</i> </li>
  <li>  <b>A3</b>  1.c4 c5: <i>English, Symmetrical </i> </li>
  <li>  <b>A4</b>  1.d4 ...: <i>Queen's Pawn</i> </li>
  <li>  <b>A5</b>  1.d4 Nf6 2.c4 ..: <i>Indian Defence </i> </li>
  <li>  <b>A6</b>  1.d4 Nf6 2.c4 c5 3.d5 e6: <i>Modern Benoni</i> </li>
  <li>  <b>A7</b>  A6 + 4.Nc3 exd5 5.cxd5 d6 6.e4 g6 7.Nf3 </li>
  <li>  <b>A8</b>  1.d4 f5: <i>Dutch Defence</i> </li>
  <li>  <b>A9</b>  1.d4 f5 2.c4 e6: <i>Dutch Defence</i> </li>
  </ul>
  
  <p>
  <b><blue><run ::windows::eco::Refresh B>B</run></blue></b>
  1.e4 c5;  1.e4 c6;  1.e4 d6;  1.e4 <i>various</i>
  <ul>
  <li>  <b>B0</b>  1.e4 ...
  (<b>B02-B05</b>  1.e4 Nf6: <i>Alekhine Defence</i>;
  <b>B07-B09</b>  1.e4 d6: <i>Pirc</i>) </li>
  <li>  <b>B1</b>  1.e4 c6: <i>Caro-Kann</i> </li>
  <li>  <b>B2</b>  1.e4 c5: <i>Sicilian Defence </i> </li>
  <li>  <b>B3</b>  1.e4 c5 2.Nf3 Nc6: <i>Sicilian</i> </li>
  <li>  <b>B4</b>  1.e4 c5 2.Nf3 e6: <i>Sicilian</i> </li>
  <li>  <b>B5</b>  1.e4 c5 2.Nf3 d6: <i>Sicilian</i> </li>
  <li>  <b>B6</b>  B5 + 3.d4 cxd4 4.Nxd4 Nf6 5.Nc3 Nc6 </li>
  <li>  <b>B7</b>  B5 + 4.Nxd4 Nf6 5.Nc3 g6: <i>Sicilian Dragon</i> </li>
  <li>  <b>B8</b>  B5 + 4.Nxd4 Nf6 5.Nc3 e6: <i>Sicilian Scheveningen</i> </li>
  <li>  <b>B9</b>  B5 + 4.Nxd4 Nf6 5.Nc3 a6: <i>Sicilian Najdorf</i> </li>
  </ul>
  
  <p>
  <b><blue><run ::windows::eco::Refresh C>C</run></blue></b>
  1.e4 e5;  1.e4 e6
  <ul>
  <li>  <b>C0</b>  1.e4 e6: <i>French Defence</i> </li>
  <li>  <b>C1</b>  1.e4 e6 2.d4 d5 3.Nc3: <i>French, Winawer/Classical</i> </li>
  <li>  <b>C2</b>  1.e4 e5: <i>Open Game</i> </li>
  <li>  <b>C3</b>  1.e4 e5 2.f4: <i>King's Gambit</i> </li>
  <li>  <b>C4</b>  1.e4 e5 2.Nf3: <i>Open Game</i> </li>
  <li>  <b>C5</b>  1.e4 e5 2.Nf3 Nc6 3.Bc4: <i>Italian; Two Knights</i> </li>
  <li>  <b>C6</b>  1.e4 e5 2.Nf3 Nc6 3.Bb5: <i>Spanish (Ruy Lopez)</i> </li>
  <li>  <b>C7</b>  1.e4 e5 2.Nf3 Nc6 3.Bb5 a6 4.Ba4: <i>Spanish</i> </li>
  <li>  <b>C8</b>  C7 + 4...Nf6 5.O-O: <i>Spanish, Closed and Open</i>
  (<b>C80-C83</b>  5.O-O Nxe4: <i>Spanish, Open System</i>;
  <b>C84-C89</b>  5.O-O Be7: <i>Spanish, Closed System</i>) </li>
  <li>  <b>C9</b>  C8 + 5...Be7 6.Re1 b5 7.Bb3 d6: <i>Spanish, Closed</i> </li>
  </ul>
  
  <p>
  <b><blue><run ::windows::eco::Refresh D>D</run></blue></b>
  1.d4 d5; 1.d4 Nf6 2.c4 g6 with 3...d5
  <ul>
  <li>  <b>D0</b>   1.d4 d5: <i>Queen's Pawn</i> </li>
  <li>  <b>D1</b>   1.d4 d5 2.c4 c6: <i>Slav Defence</i> </li>
  <li>  <b>D2</b>  1.d4 d5 2.c4 dxc4: <i>Queen's Gambit Accepted (QGA)</i> </li>
  <li>  <b>D3</b>  1.d4 d5 2.c4 e6: <i>Queen's Gambit Declined (QGD)</i> </li>
  <li>  <b>D4</b>  D3 + 3.Nc3 Nf6 4.Nf3 c5/c6: <i>Semi-Tarrasch; Semi-Slav</i> </li>
  <li>  <b>D5</b>  D3 + 3.Nc3 Nf6 4.Bg5: <i>QGD Classical</i> </li>
  <li>  <b>D6</b>  D5 + 4...Be7 5.e3 O-O 6.Nf3 Nbd7: <i>QGD Orthodox</i> </li>
  <li>  <b>D7</b>  1.d4 Nf6 2.c4 g6 with 3...d5: <i>Grunfeld</i> </li>
  <li>  <b>D8</b>  1.d4 Nf6 2.c4 g6 3.Nc3 d5: <i>Grunfeld</i> </li>
  <li>  <b>D9</b>  1.d4 Nf6 2.c4 g6 3.Nc3 d5 4.Nf3: <i>Grunfeld</i> </li>
  </ul>
  
  <p>
  <b><blue><run ::windows::eco::Refresh E>E</run></blue></b>
  1.d4 Nf6 2.c4 e6; 1.d4 Nf6 2.c4 g6 </li>
  <ul>
  <li>  <b>E0</b>  1.d4 Nf6 2.c4 e6: <i>Catalan, etc</i> </li>
  <li>  <b>E1</b>  1.d4 Nf6 2.c4 e6 3.Nf3 (b6): <i>Queen's Indian, etc</i> </li>
  <li>  <b>E2</b>  1.d4 Nf6 2.c4 e6 3.Nc3 (Bb4): <i>Nimzo-Indian, etc</i> </li>
  <li>  <b>E3</b>  E2 + 4.Bg5 or 4.Qc2: <i>Nimzo-Indian</i> </li>
  <li>  <b>E4</b>  E2 + 4.e3: <i>Nimzo-Indian, Rubinstein</i> </li>
  <li>  <b>E5</b>  E4 + 4...O-O 5.Nf3: <i>Nimzo-Indian, main line</i> </li>
  <li>  <b>E6</b>  1.d4 Nf6 2.c4 g6: <i>King's Indian</i> </li>
  <li>  <b>E7</b>  1.d4 Nf6 2.c4 g6 3.Nc3 Bg7 4.e4: <i>King's Indian</i> </li>
  <li>  <b>E8</b>  E7 + 4...d6 5.f3: <i>King's Indian, Samisch</i> </li>
  <li>  <b>E9</b>  E7 + 4...d6 5.Nf3: <i>King's Indian, main lines</i> </li>
  </ul>
  
  <p><footer>(Updated: Scid 3.6.2, December 2006)</footer></p>
}


set helpTitle(Author) "Contact information"
set helpText(Author) {<h1>Contact Information</h1>
  <p>
  The Scid web page is located at: <br>
  <b><url http://scid.sourceforge.net/>http://scid.sourceforge.net/</url></b>
  </p>
  <p>
  It has downloads of the latest version of Scid and any extra
  files that are available.
  </p>
  <p>
  Please send any comments, questions, suggestions or bug reports to
  the Scid mailinglist <b>scid-users@lists.sourceforge.net</b>.
  </p>
  
  <h3><name Related>Related Links</name></h3>
  <p>
  If you enjoy using Scid, you may find the following websites interesting:
  </p>
  <ul>
  <li><url http://scid.sourceforge.net/>http://scid.sourceforge.net</url>--
  The program upon which Scid is heavily based. Scid was written by
  Shane Hudson, with help from others.</li>
  <li><url http://www.tim-mann.org/chess.html>http://www.tim_mann.org/chess.html</url> --
  Home page of Tim Mann's <b>xboard & winboard</b> program which is a PGN
  reader and an interface for Internet chess servers. His site also has
  good information on Crafty, GNUchess and other free chess programs.</li>
  
  <li><url ftp://ftp.cis.uab.edu/pub/hyatt/>ftp://ftp.cis.uab.edu/pub/hyatt/</url> --
  the strong chess-playing program Crafty.
  The subdirectory there named <b>TB</b> has many Nalimov-format tablebase
  files that you can use in several chess programs and in Scid.</li>
  
  <li><url http://www.chesscenter.com/twic/>http://www.chesscenter.com/twic/</url> --
  TWIC (the week in chess), an excellent weekly bulletin of international
  chess games in available in <a PGN>PGN</a> format.</li>
  
  <li><url http://scid.sourceforge.net/doc/standard.txt>http://scid.sourceforge.net/doc/standard.txt</url> --
  the <b>PGN Standard</b>, created by Steven J. Edwards in 1994.
  This text file explains the <a PGN>PGN</a> and EPD formats in detail.</li>
  </ul>
  
  <p><footer>(Updated: Scid 3.6.2, December 2006)</footer></p>
}

# Book window help
set helpTitle(Book) "Book Window"
set helpText(Book) {<h1>Book window</h1>
  <p>
  A list of all book files present in Scid's books directory is
  presented in the drop down list on top of the window. To specify the
  directory where Scid should search for opening books select Options /
  Books directory from the menu. The active book can be selected
  easily from that list.
  </p>
  <p>
  The format of books is the one used by Polyglot and the engines like
  Fruit and Toga, their usual extension is .bin. Currently, to build
  new books one has to use <term>polyglot</term> on the command line.
  Please refer to polyglots documentation about how to create a book.
  </p>
  <p>
  For each position, the book window displays all possible moves it
  contains and their relative weights in percent. When a move is
  entered, the book window is updated. Clicking on a move in the book
  window will play that move in current position.
  </p>
  <p>
  At the bottom of the book window, the button <i>Other moves</i> displays the moves
  that are not present in the book but part of lines that are present later on in the book.
  This allows an engine to play the best moves, and to have book replies available in the 
  book if the opponent chooses moves that are not in the book. The display of those <i>Other moves</i>
  shows where there are holes in a book.
  </p>
  <p>
  The book in use can be selected from the drop down list in the
  book window.
  </p>
  <p><footer>(Updated: Scid 3.6.26, October 2008)</footer></p>
}

# Tactical game window help
set helpTitle(TacticalGame) "Tactical Game Window"
set helpText(TacticalGame) {<h1>Tactical game window</h1>
  <p>
  Play a tactical game against an engine simulating an opponent with a
  given ELO rating.  The opponent is played by Phalanx and the coach
  by Toga II. The right engines are automatically selected by their
  names, and should be correctly configured (this is the default when
  Scid is installed).
  </p>
  <p>
  <b>Note</b> that a special version of the Phalanx engine is
  required. This special version comes with the Scid package.
  </p>
  <p>
  The following parameters must be configured :
  <ul>
  <li><term>Fixed level</term>: sets a fixed ELO rating for the opponent</li>
  <li><term>Random level</term>: chooses a random level between the
  minimum and maximum level specified by the left and right slider
  respectively.
  </li>
  <li><term>Opening:</term>
  <ul>
     <li><term>Start new game</term>: starts a new game choosing a
     random opening.</li>
     <li><term>Start from current position</term>: let the game begin
     with the current board position.</li>
     <li><term>Specific opening</term>: the opponent will play a
     specific opening, that can be chosen from the list below. This is
     useful for opening training.</li>
  </ul>
  <li><term>Limit engine analysis time</term> allows to limit the time used by the
  coach to check the players moves for errors. If this time is not
  limited the coach is allowed to think in the background.</li>
  </ul>
  <p>To start a tactical game press <term>Play</term></p> 

  <p><b>Note</b> a similar function can be achieved by playing a
  <a SeriousGame>serious game</a> against any UCI engine that allows
  for limiting its strength.
  </p>
  <p><footer>(Updated: Scid 3.6.26, October 2008)</footer></p>
}

# Opening Trainer window help
set helpTitle(OpeningTrainer) "Opening Trainer"
set helpText(OpeningTrainer) {<h1>Opening Trainer</h1>
  <p>
  A Scid database can be used as a repertoire, each game representing
  an opening line. The games can contain variations and may also
  contain NAG values to specify values for each line, and thus
  allowing to mark preferred or dubious lines. To be a valid database
  for the opening trainer it is also required to be of proper type.
  That is, if openings for white are to be trained, the database has
  to be of type <term>Openings for White</term> (similar for Black and
  both colors). The type can be set via the <a Maintenance>Maintenance
  window</a> by selecting the icon or via the database switchers
  context menu.
  </p>
  <p>
  <h2>Creating a repertoir base</h2>
  Before running the opening trainer, please be aware that the entire
  repertoire database will be loaded into the trainer. For this
  reason, it is good to use a smaller database. It is a good idea to
  first assemble a large database of quality games, then filter the
  database for a specific opening (e.g. the Ruy Lopez). These filtered
  games could then be copied to a new database for that specific
  opening you had in mind (please name it intelligently, so you can
  easily understand which opening it is for). Then instead of an
  entire 2 million or so game database, you have a much smaller
  repertoire database that will be loaded quickly into the opening
  trainer.
  </p>
  <p>
  You could also buy or download special databases that cover
  particular openings, although we cannot point you in the direction
  of any possible sources in this help file.
  </p>
  <p>
  Once you have a smaller database aimed at just the opening you
  require, set the type as mentioned using the <a
  Maintenance>Maintenance window</a>.  You will need to restart Scid
  to use the opening trainer with this new repertoire database.
  </p>
  <p>
  If you choose, for the opening trainer to work better, you may flag
  certain games as "White opening" or "Black opening". An exhaustive
  way of doing this would be to go through the entire database 'by
  hand' and assign the flags individually. A quicker way, may be to
  filter your database for white openings, then set the flag for all
  those filtered games, and similarly for black openings. Remember you
  can have a repertoire for both white and black in the same database.
  You can set the flags in this way via the <a Maintenance>Maintenance
  window</a>. How you choose to filter the games for flagging is
  entirely up to the user. One possible way is to filter 1-0 games for
  white openings, and 0-1 for black openings. This way is not the best
  however, and it is left to the user to find the system they feel
  most comfortable with.
  </p>
  <p>
  Finally, to work best, the Opening Trainer can use NAG values to understand 
  how a move in the opening is to be rated. Please refer to the <a NAGs>NAG 
  annotation help</a> for more information.
  </p>
  <p>
  <h2>Using the opening trainer</h2>
  To use the opening trainer first of all open the repertoire database you
  created, or one of the proper type. Then choose Play / Training / Opening Trainer.
  The upcoming dialogue offers some choices about the next training
  session
  <ul>
      <li><term>white</term>/<term>black</term>/<term>both</term> is
      used to select the side of the opening to train
      </li>
      <li><term>Allow only best moves</term> will treat lower rated moves
      as error. The rating of a line is given by NAG values.</li>
      <li><term>Opponent plays best moves</term> Scid will always play
      the best continuation according to the repertoire database. If
      unchecked Scid is allowed to choose also lower rated
      continuations. This is helpful to learn the refutations as well.
      </li>
      <li><term>Only flagged lines</term> Scid will only play lines
      from games flagged as <term>Opening for White</term> or
      <term>Opening for Black</term>.
      </li>
      <li><term>Reset statistics</term> will reset the statistics
      before the training session.</li>
  </ul>
  Press the <term>Continue</term> button to proceed with the training.
  </p>
  <p>
  The actual opening trainer will show up. Here one can display
  possible candidate moves (hidden by default) and also display their
  values by just enabling these functions. If <term>Show
  statistics</term> is enabled, the current statistics is shown in the
  color coded fields below the checkbox. Otherwise the overall
  statistics can be accessed by the button <term>Show report</term>
  
  <h3>Opening trainer statistics</h3>
  <p>
  Four numbers are displayed showing statistics for current position:
  <ul>
  <li><term>Green</term> the number of moves played by the user that
  are good moves</li>
  <li><term>Yellow</term> the number of dubious moves played that are
  in the repertoire</li>
  <li><term>Red</term> the number of moves played that are not in the
  repertoire</li>
  <li><term>White</term> the number of times the position was
  encountered</li>
  </ul>
  </p>
  
  <h3>The report</h3>
  <p>
  The report shows statistics for the whole repertoire and gives
  information about user's knowledge :
  <ul>
  <li><term>Positions in repertoire</term> the total number of
  positions in the repertoire (all lines in database)</li>
  <li><term>Positions not played</term> the positions that were never
  encountered</li>
  <li><term>Positions played</term> the positions that were played and
  the sum of the number of times they were encountered. Note that this
  figure represents the sum of occurrences of a position in all
  opening lines: this number can quickly become big for positions
  that are close to the start position</li>
  <li><term>Success</term> the number of good moves made by the player</li>
  <li><term>Dubious moves</term> the number of weak moves made by the
  player</li>
  <li><term>Out of repertoire</term> the number of moves made by the
  player that were not in repertoire</li>
  </ul>
  </p> 
  <p><footer>(Updated: Scid 3.6.26, October 2008)</footer></p>
}

####################
### Correspondence Chess help:
set helpTitle(Correspondence) "Correspondence Chess"
set helpText(Correspondence) {<h1>Correspondence Chess</h1>

<p>
Scid offers currently two main functionalities for correspondence
chess.
</p>
<ul>
   <li><b>eMail Chess</b> proceeds by sending the current game via eMail
   to your opponet once you made your move. To this end an eMail message
   is created in your prefered email program with the current game
   attached to it in <a PGN>PGN</a> format. Of course all comments and
   variations are stripped off before.
   </li>
   <li><b>Correspondence Chess Servers</b> are supported by means of the
   Xfcc protocol. Here external tools are used to fetch the games from
   your account(s) and deliver them to Scid for synchronisation. After
   you made your move this move is sent to your opponent also by means of
   Xfcc. The fetch and send tool are implemented as external tools for
   easy extension if other protocols arise.
   </li>
   <li><b>Postal play</b>: Scid allos support for postal play by
	adding a PGN file with the proper header information to it's Inbox
	directory. If the addtionaly header field <b>Mode</b> is set to
	<b>Postal</b> those games get their proper icon displayed. Note
	that also the header fields <b>CmailGamename</b> and <b>Gameid</b>
	should be present. 
	---TODO---: Printing of postcards is on the todo, this function
	will require the additional header fields WhiteAddress/BlackAddress
	to contain the postal adress of both players.
   </li>
   <li><b>Observation of games</b> is supported by just adding the URL
   for the <a PGN>PGN</a> file to the list offered by <menu>Play / Correspondence
   Chess / Observe Game</menu>. For this fucntion to work a connector
	for the site in question is required. (See below)
   </li>
</ul>
<p>
If any of the correspondence chess functions are accessed from the
menu a new window opens up. It can be opened manually from the window
menu or one can use the keyboard shortcut F12. There are two
additional shortcuts:
</p>
<ul>
   <li><b>Ctrl-F12</b>
      This will open the correspondence chess window and the default
      database. It will also process your current Inbox.
   </li>
   <li><b>Alt-F12</b>
      This will open the correspondence chess window, the default
      database and also initiate the fetch of Xfcc games in one go.
   </li
</ul>
<p>
Please see below for further details.
</p>

<p>
This window contains the neccessary buttons to navigate through
ongoing games, shortcut keys to fetch games by means of the Xfcc
protocol and sync in eMail based games as well as a console stating
which messages where sent or retrieved. Additionally this window
conatins a list of ongoing games retrieved from your Inbox directory.
</p>

<p>
To use the correspondence chess features a database of the type
"Correspondence chess" has to be opened before calling any
correspondence chess functions. If you do not have such a database
yet, just create a new database and set its type to "Correspondence
chess" by means of the <a Maintenance>Maintenance</a> function.
Setting the type is important as Scid will recognise the database for
synchronisation by this type. As this database is empty after the
creation Scid will treat all correspondence chess games it receives at
first synchronisation as new games and append them to this database.
</p>

<p>
If no database of the type "Correspondence chess" is currently opened
Scid will remid you of doing so. However, do not open more than one
database of this type as Scid then can not recognise the one to use.
</p>

<h3><name CCWorkflow>Basic functionality</name></h3>

<p>
If everything is set up correctly the usage of the correspondence
chess functions can easily accessed by the following buttons:
<ul>
   <li><button tb_CC_Retrieve> Retrieve the correspondence chess games.
   To this end the external fetch tool is called and all games retrieved
   via that way as well as all other games that are stored in Scids Inbox
   (see below) are synchronised into the current correspondence chess
   database.
   </li>
   <li><button tb_CC_Prev> Goes to the previous game in Scids Inbox
   </li>
   <li><button tb_CC_Next> Goes to the next game in Scids Inbox
   </li>
   <li><button tb_CC_Send> Sends your move to the opponent by either
   creating a new eMail message in your prefered mail program or by
   sending the move to a chess server in case of Xfcc.
   </li>
   <li><button tb_CC_delete> empties your In- and Outbox directories.
   </li>
   <li><img tb_CC_online> is shown if the game list was refreshed
   from the server within the current Scid session. The tool tip for
   this icon shows date and time of the last refresh.
   </li>
   <li><img tb_CC_offline> indicates, that Xfcc status icons are
   restored from saved results. No update has taken place in the
   current Scid session. The tool tip for this icon shows date and
   time of the last refresh.
   </li>
   <li><img tb_CC_pluginactive> indicates, that Correpsondence Chess
   plugin(s) were loaded and activated upon startup.
   </li>
</ul>
</p>
<p>
See also the list of <a CCIcons>Icons and Status Indicators</a>.
</p>

<h3>Configuration</h3>

<p>
Correspondence Chess within Scid is based upon a normal Scid
database that holds the games and some helpers external to Scid that
handle the "non-chess-parts". These tools and parameters must be set
up once, and are stored afterwards for future use.
</p>

<p>
To access the configuration dialog choose <menu>Play</menu>
<menu>Correspondence Chess</menu><menu>Configure</menu> from the
menu. The details are described in <a CCSetupDialog>Correspondence
Chess Setup</a>. Quitting this dialog by the <b>[Ok]</b> button will
automatically store your options.
</p>

<h3>Retrieving the games</h3>
<p>
Depending wether you play correspondence chess via eMail or via a
chess server the actual retrieval process differs slightly. Generally
it results in a set of games in <a PGN>PGN</a> format located in Scids Inbox
directory. This offers also the possibility of automatic retrieval via
external software.
</p>
<p>
Once the games are in Scids Inbox invoking <menu>Process Inbox</menu>
from the menu will work though the Inbox and add new moves to the
games already in the database. Additionally it will add games not
found in the current correspondence chess database as new games.
</p>

<p><a CCeMailChess>Correspondence Chess via eMail</a> describes the
details for the usage of eMail, while in <a CCXfcc>Correspondence
Chess via Chess Servers</a> describes the same for correspondence
chess servers.
</p>

<h3>Stepping through games</h3>
<p>
After games are retrieved they are loaded to Scids clipboard database
and new moves are added and stored in the correspondence chess
database opened. The most convenient way to step through the games is
by the two buttons <button tb_CC_Prev> and <button tb_CC_Next> which
go to the previous and the next game, respectively. The difference to
the functions from the <menu>Games</menu> menu is, that these two
buttons scroll only between the games in Scids Inbox which are
supposed to be your actually ongoing games. Of course the
Correspondence Chess database might contain much more games, but
normally you do not want to go through all these to find out what your
opponent moved in a current game.
</p>
<p>
Note that a header search is required incorporating some fields that
are not indexed by Scid. Hence, storing your correspondence chess
games in a huge reference database might not be advisable as the
search times may be quite long. If you play a lot and your own
database gets quite large, search times can be reduced by moving
finished games to an archive database, or by just createing a new
database for the ongoing games. Scid will treat all games not existing
in the correspondence chess database already as new games and add them
automatically. Hence, it is sufficient to open an empty database of
type "Correspondence chess" and call <menu>Process Inbox</menu> to
import all currently ongoing games.
</p>
<p>
Equivalent to the two buttons mentinoned are the items <menu>Previous
Game</menu> and <menu>Next Game</menu> from the <menu>Correpondence
Chess</menu> menu.
</p>
<p>
An alternate way to jump to a specific game is by double clicking on
it within the game list.
</p>
<p>
Note that if you set up your player names correctly (by means of
<menu>My Player Names</menu>) Scid will rotate the board for you to
play always upwards. You can have multiple player names. See also <a
Options MyPlayerNames>My Player Names</a> for details.
</p>

<h3>Analyse and make a move</h3>
<p>
All analysis features can be used for correspondence chess games.
Variations, annotations etc. can be added just like in normal game
analysis. Once finished, Scid will take the last half move added to
the game and treat it as the current move to send. No checking wether
only one half a move was added or which side to move is done here,
hence, only one half move to the mainline must be added!  In case a
chess server is used Scid also sends the last comment added to the
server which might be usefull for communication with the opponent. In
eMail chess this can be done by the normal mail message, so there all
commments are stripped off.
</p>
<p>
Pressing the Send button <button tb_CC_Send> will have Scid to
determine the type of the correspondence chess game displayed (eMail or
a server game) and call either your eMail program or the external send
tool to submit your move. Calling <menu>Send move</menu> is equivalent
to this button. Alternatively, <menu>Mail move</menu> can be used to
send the current game via eMail. In case of an eMail game this
function is equivalent to <menu>Send move</menu>. In case of a server
based game an eMail message is generated. Note however, that it will
not necessarily contain a proper recipient as eMail addresses are not
exchanged in server based correspondence chess.
</p>

<h3>Observing Correspondence Games</h3>
Observing a game of correspondence chess is technically done by
retrieving the games <a PGN>PGN</a> notation from the webserver.
These games are then fead into the usual workflow of the
Correspondence Chess funtions and show up thre as usual games. For
this function to work a file named "connector.xml" has to be available
in ~/.scid/data. If this file does not exist Scid will try to generate
one suitable for observation of games from ICCF Webchess. Additional
servers can be added to this file by apending additional
server-blocks.	

To observe a game on ICCF Webchess point your web browser to the page
where the notation an the chess board gets displayed. Copy the URL of
that page to the clipboard and add it to the list displayed by
choosing <menu>Play / Correspondence Chess / Observe Game</menu>. Use
a new line for each game to be observed.

Close the dialogue by selecting Ok and refetch the correspondence
chess games. Now the newly added observed games should show up in the
Correspondence Chess games list.

<h3>Additional features of the Correspondence Chess Window</h3>
<p>
The Correspondence Chess window offers additional functions by means
of its own menu, which is identical to Play / Correspondence Chess. It
is also possible to use the usual scrolling features of Scid, like
jumping to the next (previous) game by Ctrl-Down (Ctrl-Up). Hovering
with the mouse over certain fields in the game list will also give
additional informations as far as they are provided by the server. If
you want to copy the current game list to the clipboard one can use
the usual shortcuts Ctrl-Ins (or Ctrl-C).
</p>

<p><footer>(Updated: Scid 4.3, Jan 2011)</footer></p>
}

set helpTitle(CCIcons) "Correspondence Chess Icons and Status Indicators"
set helpText(CCIcons) {
<h1>Icons and Status Indicators</h1>
<p>
To shorten the display, a set of icons is used in the game list. Some
of them are only present in certain circumstances, some are only valid
for Xfcc based games, some for eMail based games. These indicators are
stored internally and are restored to the last update from the server
if no interet connection is available.
</p>
<ul>
   <li><img tb_CC_online> is shown if the game list was refreshed
   from the server within the current Scid session. The tool tip for
   this icon shows date and time of the last refresh.
   </li>
   <li><img tb_CC_offline> indicates, that Xfcc status icons are
   restored from saved results. No update has taken place in the
   current Scid session. The tool tip for this icon shows date and
   time of the last refresh.
   </li>
   <li><img tb_CC_pluginactive> indicates, that Correpsondence Chess
   plugin(s) were loaded and activated upon startup.
   </li>
   <li><img tb_CC_envelope> This is an eMail based game. In those
   games many of the status flags used in Xfcc-based games are not
   available due to the limitation of the medium.
   </li>
   <li><img tb_CC_relay> This is a observed game, ie. you're just
   fetching it and you will not make any move in those games.
   </li>
   <li><img tb_CC_postal> The mode of this game is set to
   <i>postal</i> (ie. real classical correspondence play via postal
   service). Scid will show those games but ignore them in the update
   process as no <a PGN>PGN</a> game file will exist in postal play.
   </li>
   <li><img tb_CC_yourmove>
   Its your move.<br>
   <b>Note 1:</b> this status is only updated if you
   synchronise your games with the server, that is, it always refers
   to the servers status at last syncronisation.
   <br>
   <b>Note 2:</b>Hovering over this icon with the mouse will display
   the opponents last move.
   </li>
   <li><img tb_CC_oppmove>
   Its the opponents move. Note: this status is only updated if you
   synchronise your games with the server, that is, it always refers
   to the servers status at last syncronisation.
   </li>
   <li><img tb_CC_draw>
   Peace was agreed by a draw.
   </li>
   <li><img tb_CC_book>
   The use of opening books is allowed for this game.
   </li>
   <li><img tb_CC_database>
   The use of databases is allowed for this game.
   </li>
   <li><img tb_CC_tablebase>
   The use of endgame tablebases (e.g. Nalimov tablebases etc.) is
   allowed for this game.
   </li>
   <li><img tb_CC_engine>
   Chess Engines are allowed for this game. Sometimes these games are
   also refered to as "Advanced Chess".
   </li>
   <li><img tb_CC_outoftime>
   Your opponent ran out of time. You may claim a win on time.
   </li>
   <li><img tb_CC_message>
   Your oppenent sent a message along with his last move. Check the
   game notation.
   </li>
</ul>
<p>
<b>Note 1:</b> If an event (e.g. a tournament) has not yet started, but
the setup was already retrieved via Xfcc the id, event and site
columns text show up in <gray><b>dark gray</b></gray>.
</p>
<p>
<b>Note 2:</b> Hovering over the site comlumn will show the whole site
tag, hovering over the event column will show the whole event tag and
the time control if it was sent along with the game. If no time
control was sent, Scid will denote it as <i>10 / 50d (?)</i>, that is,
guessing ICCFs official default timing of 10 moves in 50 days. (The
ICCF server itself never sends any timings.)
</p>

<p>
In Xfcc games, each opponents country may be displayed by the
associated flag, if the server provides that information. For eMail
based games this can be achieved by adding additional <a PGN>PGN</a> tags for
<i>whiteCountry</i> and <i>blackCountry</i>, each followed by the
international three letter country code according to ISO 3166-1
(e.g. "EUR" <img flag_eur>, "USA" <img flag_usa>, "GBR" <img
flag_gbr>, "FRA" <img flag_fra>, "RUS" <img flag_rus>, "CHN"
<img flag_chn>...).
</p>
<p>
To show country flags for other types of games (postal, observed) just
add WhiteCountry/BlackCountry headers ot the games in your database.
Note that the header values in the Scid database overwrite the values
supplied in the games of Scids Inbox. That is even for Xfcc games that
one can add country flags or overwrite the games mode. (The latter is
required e.g. for mixed games on ICCF where ICCFs Xfcc interface
also supplies games even if they are played by post.)
</p>

<p>
See also the chapter <a Correspondence>Correspondence Chess</a> for
general information.
</p>


<p><footer>(Updated: Scid 4.3, Jun 2010)</footer></p>
}



set helpTitle(CCXfcc) "Correspondence Chess Servers"
set helpText(CCXfcc) {<h1>Correspondence Chess Servers</h1>

<p>
There exist several correspondence chess servers throughout the
internet. Generally, they are used by means of a web browser, so no
specific software is required. However many of them also offer an
interface to specialised chess software via a protocoll called Xfcc.
The integration of Xfcc is done in Scid via external helper tools set
in the <a CCSetupDialog>Configuration</a> dialog for correspondence
chess.
</p>

<h3>Start a new game</h3>
<p>
Xfcc does not allow to start a new game itself. Searching for an
opponent and starting a game is instead handled by the chess server
on their web site. Once the game is started however, Scid can be used to
retrieve the moves of the opponent, add them to the internal database,
analyse them and so on. All features of Scid are to the users disposal
though certain modes of play may not allow them (e.g.  normal games
usually do not permit the usage of chess engines for analysis).
</p>

<h3>Retrieve games</h3>
<p>
Open a database that holds correspondence chess games. This database
has to be of type "Correspondence chess". 
</p>

Notes: 
<ul>
   <li>If Scid does not find a correspondence chess database it will
   inform you to open one.
   </li>
   <li>If the database does not hold the games that are fetchted from
   the server they are treated as new games and added to the database
   automatically.
   </li>
   <li>Scid will use the first database of type "Correspondence Chess"
   that is currently open. For this reason only one such DB should be
   opened at a time.
   </li>
</ul>
<p>
Xfcc always retrieves all games hosted on a specified server for your
user ID at once. To retrieve the games just press the <button
tb_CC_Retrieve> icon or select <menu>Retrieve Games</menu> from the
<menu>Correspondence Chess</menu> menu. As a server connection is
required to fetch new games be sure that the system has network
access. Scid will call the fetch tool configured in the <a
CCSetupDialog>Configuration</a> dialog which will place the games in
PGN format in Scids inbox. It may take some time to retrieve the
answer, so be patient. After the games are retrieved the
correspondence chess database is updated accordingly.
</p>

<p>
<b>Note</b>By using the <button tb_CC_delete> you can empty your whole
In- and Outbox directories.
</p>

<p>
Once the games are retrieved their counterpart is searched within the
correspondence chess db and new moves are added accordingly. As Xfcc
servers may offer various ways to insert moves (via web or mobile or
other programs...) it might well be that Scid will have to add half of
the game to the db. This poses no problem. Scid will add all moves
returned in the game from the server. Scid will however not replace
the game from the beginning as then all your analysis may be lost.
Hence it is <b>important to note</b> that you must not insert moves to
the main line beyond your own last move! To add continuations please
use variations!
</p>
<p>
Xfcc base games offer extensive status display within the games list.
This information, however, is only available if Scids internal Xfcc
support is used.  The following icon are for visual display:
<ul>
   <li><img tb_CC_draw> A draw was agreed with the last move.
   </li>
   <li><img tb_CC_yourmove> You're on the move.
   </li>
   <li><img tb_CC_oppmove> Your opponent is on the move.
   </li>
   <li><img tb_CC_book> This game allows the use of opening books.
   </li>
   <li><img tb_CC_database> This game allows the use of databases.
   </li>
   <li><img tb_CC_tablebase> This game allows the use of tablebases.
   </li>
   <li><img tb_CC_engine> This game allows the use of chess engines.
   </li>
</ul>
<p>
Additonally Scid will display the clock for both parties <b>at the
time of sync</b> as well as the chess variant played. Note however
that Scid currently only supports standard chess.
</p>
<p>
Note: only if the proper icon (book, database, tablebase, engine)
is dispalyed, the useage of these tools is allowed. It is forbidden
otherwise. Be fair and respect these rules.
</p>
<p>
Note: if other sources have placed games in your inbox (e.g. from
your eMail correspondence chess) they are also synchronised in the
retrieval step into the database as the whole Inbox is worked through.
This allows for adding eMail games to the Inbox, then switch to Scid,
hit <button tb_CC_Retrieve> and all games are up to date.  Games that are not
yet found in the database are treated as new games and appended to the
database.
</p>
<p>
<b>Note</b>By using the <button tb_CC_delete> you can empty your whole
In- and Outbox directories.
</p>
<p>
<b>Note for programmers</b>: the fetch tool is called with the Inbox path as
parameter. It is thought to work through all server accounts and place
properly formatted <a PGN>PGN</a> files in the path passed to it. These files
should contain additional header fields as they are known by the cmail
tool. (See <a CCeMailChess>Correspondence Chess via eMail</a> for
information about the fields required.)
</p>

<p><footer>(Updated: Scid 3.6.23, March 2008)</footer></p>
}

#############
# eMail Chess:
set helpTitle(CCeMailChess) "Correspondence Chess via eMail"
set helpText(CCeMailChess) {<h1>Correspondence Chess via eMail</h1>

<p>
eMail offers a very convenient way ot play correspondence chess. The
standard application in the Un*x world for this till today is xboard
together with its cmail helper. As it allows for almost automatic
handling of correspondence chess eMails and additonally does not add
anything not conforming to <a PGN>PGN</a> it is also the model for Scid to handle
eMail chess. By just preserving the whole <a PGN>PGN</a> header such games can be
played with any opponent who has a tool to handle PGN.
</p>

<h3>eMail Chess</h3>
<p>
Scid can handle eMail correspondence chess games almost automatically.
The way how this is done is kept compatible to the cmail utility that
comes with xboard on Un*x systems. (Having said this implies that you
can play against an opponent using cmail/xboard.) It works by sending
the games as whole <a PGN>PGN</a> files too and fro as mail attachements, while
the header contains certain tags that allows them to be recognised and
sorted together. For this reason the user has to be careful with
editing of the header fields.  Note that fields with explicit values have
to be set to exactly this value for eMail chess. Starting a game with
Scid will do this automatically, but you <b>must not</b> overwrite
or delete them!
</p>
<p>
Essential header fields are:
</p>
<ul>
   <li><term>Event</term>: by default "Email correspondence game"
   </li>
   <li><term>Site</term>: has to be "NET"
   </li>
   <li><term>Mode</term>: has to be "EM"
   </li>
   <li><term>WhiteNA</term>: contains the eMail address of the white player. Note
   that only the bare address is stored there in the form
   <term>user@host.org</term>.
   </li>
   <li><term>BlackNA</term>: contains the eMail address of the black player
   similar to WhiteNA.
   </li>
   <li><term>CmailGameName</term>: Contains a <b>unique</b> identifier for
   the game. This is used to sort the games together.
   <p>
   While Scid could use some database index this is not possible for
   non-DB-based tools like cmail. For this reason the
   <term>CmailGameName</term> parameter is user suppied. It must be
   unique! The easiest way is something of the form
   <term>xx-yy-yyyymmdd</term> where xx is a shortcut for the white
   player, yy one for the black player, and yyyymmdd the current date.
   </p>
   <p>For Xfcc-based games this field has also to be set to a unique
   identifier but there the server name and the unique game number on
   this server can be used, that is this identifier is of the form
   <term>MyXfccServer-12345</term>.
   </p>
   </li>
</ul>
<p>
eMail based chess does not contain that extended status codes as Xfcc.
These games show the <img tb_CC_envelope> icon to notify them as
eMail based. The same applies to observed games, denoted by <img
tb_CC_relay> and postal games which show the <img tb_CC_postal> icon.
</p>

<h3>Start a new game</h3>
<p>
This opens a dialog for the input of the own and the opponents name as
they should appear in the header as well as the eMail addresses of
both parties. Additionally a <b>unique</b> game ID has to be inserted.
The easiest way for this ID is something of the form
<term>xx-yy-yyyymmdd</term> where xx is a shortcut for the white
player, yy one for the black player, and yyyymmdd the current date.
This id is a text and it is important to identify the games uniquely.
Users of cmail will also know this ID as <i>game name</i>. It must
only contain letters and numbers, the minus sign and the underscore.
Please avoid other characters.
</p>
<p>
After the dialog is quit by pressing the <b>[Ok]</b> button a new
game is appended to the currently loaded correspondence chess database
and the <a PGN>PGN</a> header is set properly. Just make your move and send it as
mentioned below.
</p>

<h3>Retrieve games</h3>

<p>
Scid does not handle your mailbox automatically. This would,
considering the wide range of possible mail setups these days, involve
a huge amount of code. For this reason Scid relies on your normal
eMail program which is far more suitable for this purpose than Scid
can ever be. To get a game into Scid just save the attached <a PGN>PGN</a> file
to Scid's inbox and process the inbox by either <menu>Retrieve
Games</menu> or the <button tb_CC_Retrieve> button or
<menu>Process Inbox</menu>. The difference between the two is that
the first one will also fetch and populate the Inbox additionally with
games from another source (say Xfcc) by either the internal Xfcc
support or an external fetch tool called. Hence <button
tb_CC_Retrieve> is the most convenient way if you use both types of
correspondence chess games.
</p>
<p>
<b>Note</b> The <menu>Retrieve Games</menu> menu or the <button
tb_CC_Retrieve> button do <b>not</b> fetch your eMail messages! You
have to save your <a PGN>PGN</a> files to Scids Inbox by hand. Probably this can
be automatised by your eMail program (on Un*x systems setting up a
mime handler is easy enough by means of <term>.mailcap</term>).
</p>
<p>
<b>Note</b>By using the <button tb_CC_delete> you can empty your whole
In- and Outbox directories.
</p>

<h3>Send the response</h3>

<p>
After making your move send it by either the <menu>Mail Move</menu>
item from the menu via <menu>Send move</menu> which is equivalent to
<button tb_CC_Send>. The latter will Scid have to recognise the game
as eMail correspondence and send it by mail while the former method
will force Scid to generate an eMail message.
</p>
<p>
Of course Scid strips the the game bare of any comments and variations
before attaching it to the outgoing eMail as you probably do not want to send
your analysis along.
</p>
<p>
If a GUI-mailer is used, its usual compose window is opened. The
address of your opponent is filled in as well as a generic subject
containing the game id for easy filtering and the bcc address if
specified in the <a CCSetupDialog>Configuration</a> dialog. The mail
body is set to contain the <term>FEN</term> of the final position and
the list of moves made so far. This way the opponent can quickly look
up your move. Finally, Scid attaches the current game including your
move in <a PGN>PGN</a> format to the mail message.
</p>
<p>
When using a mailx compatible tool no window is opened and the mail is
sent invisibly by invoking the tool specified in the background. In
this case the generated mail contains the <a PGN>PGN</a> also in the mail body.
</p>
<p>
Note that as eMail chess works by sending the whole <a PGN>PGN</a> file you must
not add more than your half move. Scid does not check here wether
more than one half move was added to the mainline, simply as Scid does
not know which move it was, when you sent yours.
</p>
<p><footer>(Updated: Scid 3.6.23, March 2008)</footer></p>
}

#############
# Correspondence Chess setup dialog help:
set helpTitle(CCSetupDialog) "Correspondence Chess Setup"
set helpText(CCSetupDialog) {<h1>Correspondence Chess Setup</h1>

<p>
The entries in the configuration dialog are preset to some default
parameters but those must not match the reality on your system, so
adoption will surely be necessary. All parameters are stored in the
configuration file automatically once the dialog is closed via the
<b>[Ok]</b> button. The parameters are effective immediately.
</p>

<p><b>Note</b> that Scid will use the defaults until this setup dialog
is called and quit by selecting the <term>OK</term> button. The
default values are never stored in Scids internal config file until
then. Additionally, if Scid can not find a valid config, it will try
to set up the correspondence chess functions automatically. By default
it will store all data in the <term>data</term> subdir of Scids
configuration. Here also a valid DB as well as the necessary
In/Outboxes are created.
</p>

<p>
<b>Default Database</b>:
This defines the default database for
correspondence chess games. It can be accessed easily via
<menu>Open Database</menu> in the <menu>Correspondence Chess</menu>
menu. The advantage of this method is, that this database does not
show up in the <i>recent databases</i> lists and that you can have a
specific file for this. This database <b>has to be</b> of type
"Correspondence chess". Opening a database of this type by any other
means is also ok, so probably you may want to ignore this setting
(e.g. if you call Scid with your correspondence chess database on
startup.)
</p>

<p>
<b>Inbox (path)</b>:
In this directory Scid will look for correspondence chess games stored
in <a PGN>PGN</a> format. These games are used for the synchronisation of the
correspondence chess database. Generally, Scid does not care how the
games come to this directory. It will just work through all <a PGN>PGN</a> files
located there. This offers the possibility to use some external tools
to fetch games to this location. Additionally, in eMail chess one
should just save the <a PGN>PGN</a> files received from the opponent in this
directory.
</p>
<p>
Scid will not read a mailbox of whatever sort, it just handles
all <a PGN>PGN</a> files placed in that directory. Also note, that it will
synchronise games with the current database. However, if a game
from this directory does not yet exist in the database it is
treated as new game and appended to the database.
</p>
<p>
For the synchronisation process to work the <a PGN>PGN</a> files must contain
some additional header information that are in perfect agreement with
the <a PGN>PGN</a> standard. Please have a look at <a CCeMailChess>Correspondence
Chess via eMail</a> if you want to create your own tool or if you are
migrating data from some other system.
</p>

<p>
<b>Outbox (path)</b>:
The inverse of the <i>Inbox</i>. Scid places here <a PGN>PGN</a> files of the
outgoing games. For eMail chess this is essential as the <a PGN>PGN</a> files have
to be attached to an eMail message.  For Xfcc, where only the move is
sent, this would not be necessary, however the Outbox directory offers
a convenient way to link up to your PDA or for any other usage as the
PGN files contained in the Outbox will also contain your last move.
</p>

<p>
<b>Use internal Xfcc support</b>:
If checked Scid will not use the external tools specified as external
protocol handlers but use its internal Xfcc support to fetch games and
send moves. This will be the most convenient way to access an Xfcc
server and should be used as default.
</p>
<p>
This feature requires http and tDOM support for TCL to be installed.
Usually, these modules are distributed with your TCL installation,
however, on some systems they have to be installed explicitly. If
either one is not found this function is disabled.
</p>
<p>
<b>Xfcc Configuration</b>:
Give the path and filename of the config file for the xfcc protocol
handler. This path is also passed on to the external protocol handlers
to be used by them.
</p>

<p>
<b>Fetch Tool</b>:
This program is called to retrieve correspondence chess
games from a correspondence chess server. This helper just has to
fetch the games from whatever source it likes, generate a proper PGN
file containing the necessary <a PGN>PGN</a> header. Tools for fetching games
from Xfcc-servers exist as external programs and these are the natural
tools to set up here. For future protocols one could easily generate
an external fetch tool that handles this protocol. Also automatisation
is possible if this functionality is done externally.
</p>
<p>
Note: This tool is <b>not</b> called for retrieval of eMail chess
messages!
</p>

<p>
<b>Send Tool</b>: 
This is the inverse of the fetch tool, primarily also ment for Xfcc
support or any future protocol that might come up. The send tool,
however, is called from Scid with several parameters where the call
looks like:
<term>
SendTool Outbox Name GameID MoveCount Move "Comment" resign claimDraw offerDraw acceptDraw
</term>
</p>

<p>
<b>Confirm moves</b>: Opens a confirmation dialogue after pressing the
send button for each move that is send to the server.
</p>

<p>
<b>Only games I have the move</b>: Checking this setting will shorten
the games listed in the Correspondence Chess window to only those
games where the player is to move.
</p>

<p>
<b>Sorting</b>: Allows to sort games by various criteria. This sorting
takes effect upon the next update of the games list, e.g. by reopening
the Correspondence Chess window, fetching games or processing the
Inbox.
</p>

<p>
The meaning of the parameters is as follows:
   <ul>
      <li><term>Outbox</term>: The Outbox path set in this dialog. The
      send tool is meant to generate a correctly formatted <a PGN>PGN</a> file
      there.
      </li>
      <li><term>Name</term>: The name of the player to move as stated
      in the <a PGN>PGN</a> header. For Xfcc this would be the login name. It is
      identical to the player name in the <a PGN>PGN</a> header.
      </li>
      <li><term>MoveCount</term>: The move number to send.
      </li>
      <li><term>Move</term>: The actual move in SAN.
      </li>
      <li><term>"Comment"</term>: A comment sent to the opponent. Scid
      inserts the last comment of the game. That is these comments are
      treated as comments to the opponent. Note that the comment is
      quoted, so multiline comments should be possible.
      </li>
      <li><term>resign</term>: 0 or 1, specifying wether the user
      wants to resign. Set to 1 if the user invokes
      <menu>Resign</menu> from the <menu>Correspondence Chess</menu>
      menu.
      </li>
      <li><term>claimDraw</term>: 0 or 1, specifying wether the user
      wants to claim a draw. Set to 1 if the user invokes
      <menu>Claim Draw</menu> from the <menu>Correspondence Chess</menu>
      menu.
      </li>
      <li><term>offerDraw</term>: 0 or 1, specifying wether the user
      wants to offer a draw. Set to 1 if the user invokes <menu>Offer
      Draw</menu> from the <menu>Correspondence Chess</menu> menu.
      </li>
      <li><term>acceptDraw</term>: 0 or 1, specifying wether the user
      wants to accept a draw offered by the opponent. Set to 1 if the
      user invokes <menu>Accept Draw</menu> from the
      <menu>Correspondence Chess</menu>
      menu.
      </li>
   </ul>
</p>
<p>
Note: This tool is <b>not</b> called for eMail chess!
</p>

<p>
<b>Mail program</b>:
This gives the path to your prefered eMail program. This program is
called for eMail chess to compose the message to the opponent.
</p>

<p>
<b>(B)CC Address</b>:
A copy of the outgoing message is sent to this address as blind copy.
Note however, that if a GUI mailer is used it has normally its own
outgoing mail handling. Hence, setting this address might duplicate
messages. It can be used to transfer a game to another address though.
</p>

<p>
<b>Mode</b>:
Unfortunately there exists a wide range of mail clients and they use
very different calling conventions. Some common conventions, and
examples of programs that use them, are listed here. The mailprogram
will be called with the convention selected. In case it is not known
which convention is used one of those offered might match and do the
trick. Note however that quite a number of mail programs are not
capable of sending attachements when called from another program. In
this case you will have to either change your mail client or add the
attachement placed in Scids Outbox by hand.
</p>
<p>Hint: mailx or one of its many clones should be available as a
command line application on almost any platform as an easy to set up
tool. In case none of the conventions work with your preferred
client or this client can not handle mails with attachements by calls
from the command line, installing mailx would be an option.
</p>
<p>Hint: mutt uses the systems mail transport (aka
sendmail/exim/postfix). To hook up with those (arguably) not easy to
set up tools mutt is a perfect option. On a decent Un*x with a proper
setup it should be the most painless way to handle eMail chess.
(Though not many properly set up systems exist, especially in the
Linux world.)
</p>
<p>
<b>Attachement parameter</b>: 
This parameter is used to specify an attachement. It is <b>only</b>
used in <term>mailx</term> mode.
</p>
<p>
<b>Subject parameter</b>:
This parameter is used to specify the subject of the mail message. It
is <b>only</b> used in <term>mailx</term> mode.
</p>
<p><footer>(Updated: Scid 3.6.24, March 2008)</footer></p>
}

#############
# Correspondence Chess setup dialog help:
set helpTitle(CCXfccSetupDialog) "Xfcc Server Setup"
set helpText(CCXfccSetupDialog) {<h1>Xfcc Server Setup</h1>
<p>
The Xfcc Server Setup dialog reads in the currently specified xfcc
configuration and displays all servers specified in the config file.
The dialog is separated in two parts: the upper half lists all server
names defined, while the lower part lists all currently set
configuration values for these files.
</p>
<h2>Necessary entries</h2>
<ul>
<li><term>Server name</term>: This specifies the name used for this specific
server and to generate unique game IDs. The name should consist of a
single word containing only characters (a-z and A-Z), numbers and the
characters "-" and "_". It is treated case sensitive.
</li>
<li><term>Login name</term>: specifies the name used to log into a
specific server. It is a wise custom to use only characters, numbers
and "-" as well as "_" in this name.
</li>
<li><term>Password</term>: defines the password used for login. The
same rules apply as for the Login name. <b>Note</b> Scid currently
stores your passwords on the hardisc in unencrypted form. For this
reason keep the directory safe.
</li>
<li><term>URL</term>: This is the base URL for the Xfcc interface of the
correspondence chess server. It can be found at the servers homepage.
Some examples for common servers are:
<ul>
	<li>SchemingMind: <url
	http://www.schemingmind.com/xfcc/xfccbasic.asmx>
	http://www.schemingmind.com/xfcc/xfccbasic.asmx</url>
	</li>
	<li>ICCF: 
	<url http://www.iccf-webchess.com/XfccBasic.asmx>
	http://www.iccf-webchess.com/XfccBasic.asmx</url>
	</li>
	<li>MeinSchach.de / MyChess.de:
	<url http://www.myChess.de/xfcc/xfccbasic.php4>
	http://www.myChess.de/xfcc/xfccbasic.php4</url>
	</li>
</ul>
</li>
</ul>
<p>
To switch between the individual server settings just select the
server to change from the upper listbox. Its current values will then
be displayed in the entry fields and can be adopted. Clicking on
another server in the list will activate the new settings.
</p>
<p>
To add a new server, just hit the <term>Add</term> button. A new entry
will be created that is prefilled with some text to replace. Please
keep in mind that the server name has to be unique in your setup.
</p>
<p>
To delete a server select it from the list and press the
<term>Delete</term> button. All values for this specific server will
be prepended by a hash mark (#) marking this entry as deleted.
Therefore, if a server was deleted by accident, just remove the hash
marks in front of the entries.
</p>
<p>
Hitting <term>OK</term> will Scid have to store your current setup. At
this point all servers marked as deleted are deleted, all new servers
are added to the setup. By pressing <term>Cancel</term> all changes
are lost, the old setup stays in place.
</p>

<p><footer>(Updated: Scid 3.6.24, May 2008)</footer></p>
}

# Serious game window help
set helpTitle(SeriousGame) "Serious Game Window"
set helpText(SeriousGame) {<h1>Serious game window</h1>
  <p>
  Serious games can be played against any <term>UCI</term> engine set
  up for the usage with Scid. A list of all possible opponents is
  given on top of the <term>Game configuration</term> window. The
  button <term>Configure UCI engine</term> additionally gives access
  to the engines parameters. By default, they are set such as in the
  <a Analysis List>engine configuration</a>.
  </p>
  <p>
  Next, the book that should be used can be chosen from those opening
  books available to Scid. Unchecking the <term>Use book</term> box
  will disable the use of an opening book and the engine will start
  calculating moves right from the beginning.
  </p>
  <p>
  The section <term>Time mode</term> allows to set the timing used for
  the engine. Various settings are possible here:
  <ul>
     <li><term>Time + bonus</term> specifies the time for the whole
     game and a possible increment per move (Fisher clock). The
     default is set to 5 minutes per game and 10 seconds increment per
     move which is a usual setting for Blitz games. Note, that the
     times for Black and White can be set independently. This allows
     to set a short amount of time for the engine and give a longer
     time of thinking to the player, and thus strengthening the
     players analysing possibilities while weakening the engines
     abilities in case of <term>Permanent thinking</term> is off (see
     below).
     </li>

     <li><term>Fixed depth</term> does not set the time per game but
     the depth the engine will calculate in half moves. As this
     disables the ability to calculate deeper if necessary, the
     computer will not see certain mates and combinations, the engine
     may play weaker and thus offer a better partner for training
     purposes.
     <p>
     <b>Note</b>: some, especially commercial, engines also offer to
     weaken their strength in ELO units. Most likely this will offer a
     more suitable algorithm than limiting the search depth. In Scid,
     such games are also offered as <a TacticalGame>Tactical games</a>
     against the free Phalanx engine.
     </p>
     </li>

     <li><term>Nodes</term> is similar to limiting the search depth,
     but here the engine has to move after the evaluation of a certain
     number of positions. (The default is 10,000.)
     </li>

     <li><term>Seconds per move</term> allows the engine to spend a
     certain amount of time at maximum for a given position. Some
     engines will move faster in certain circumstances, but they will
     not exceed the time limit set here. As <term>Fixed depth</term>
     and <term>Nodes</term> this also limits the engines playing
     strength, but also gives a pretty responsive game play.
     </li>
  </ul>
  </p>
  <p>
  Serious games can start from the current board position if the box
  <term>Start from current position</term> is checked. This allows
  e.g. to play out defined middle game positions that arise from an
  opening.
  </p>
  <p>
  <term>Permanent thinking</term> (sometimes also called ponder)
  allows the engine to calculate on the players time. If unchecked, the
  engine will stop analysing the position if the player has the move.
  If the game is set for a fixed time per move, this will weaken the
  engine. On the other hand, the engine might move immediately, if the
  player made the move it was analysing on the players time.
  </p>
  <p>
  <term>Coach is watching</term> will open a dialogue offering to take
  back a move if the player made a blunder (due to the engines
  evaluation of his last move).
  </p>
  <p>
  For training of openings <term>Specific opening</term> can be
  checked. In the list below one can choose the opening to play. The
  player then should follow the line chosen, otherwise Scid will ask
  if the move should be taken back.
  </p>

  <p>
  After setting all parameters of the game and hitting the Play
  button, Scid will set up the opponent engine show the clocks and
  start the game. The player must not make a move till the clocks
  appear. Note that it might take some time for the chess engine to
  start up and initialise properly.
  </p>

  <p><footer>(Updated: Scid 3.6.26, October 2008)</footer></p>
}

# Tactics Trainer
set helpTitle(TacticsTrainer) "Training: Tactics"
set helpText(TacticsTrainer) {<h1>Training: Tactics</h1>
  <p>
  Scid offers the possibility to solve chess puzzles. For this feature
  special databases containing the puzzles are required. These
  databases are searched in the <term>Bases</term> directory, that can
  be specified via the menu Options / Bases directory. Unlike other
  bases these bases usually do not contain full games but just a
  starting position as is well known from the usual tactics puzzle
  books. In fact, every puzzle book can easily be converted to such a
  training base by just setting up the positions and storing them in
  the <term>Bases</term> directory. Additionally, one has to set the
  type of the base to <term>Tactics</term> by means of the <a
  Maintenance>Maintenance</a> window.
  </p>
  <p>
  After choosing Play / Training / Tactics a dialogue pops up that
  allows to choose a training base. There, the name of the base is
  displayed, followed by the number of solved puzzles and the total
  number of puzzles in the base in brackets. That is, Scid stores the
  puzzles the user already solved with the base. Choosing a base an
  clicking the <term>Reset scores</term> button will reset this
  information marking all puzzles as unsolved.
  </p>
  <p>
  <b>Note</b> it is advisable to close the <a PGN>PGN</a> window and check
  <term>hide next move</term> in the context menu of the information
  area of Scids main window. Otherwise cheating is pretty simple.
  <p>
  To get a solution for the puzzles in a base the positions are
  analysed by the Toga chess engine (included with Scid). The
  <term>Limit engine analysis time</term> slider allows to limit the
  time the engine has to solve the position. Several seconds should be
  enough for most cases as usually tactical puzzles contain a
  forced continuation which will be found very quickly by almost all
  chess engines.
  </p>
  <p>
  Clicking the <term>Continue</term> button will start the exercise,
  displaying the first unsolved puzzle. That is, it is possible to
  continue to work through a base. Also if some puzzle was skipped in
  the first session or unsolved, it will be redisplayed. A new window
  will pop up containing a clock and several buttons. The clock is
  only for the user to check how long he thought about the position at
  hand. No evaluation is done on the time required to solve a problem.
  </p>
  <p>
  Some tactical exercises do not end in a mate, but the correct
  solution gives a clear advantage. If one wants to play out these
  scenarios and only count the exercise solved in case of a win, just
  check the <term>Win won game</term> option. (This option has no
  meaning in case of a clear mate solution.)
  </p>
  <p>
  If a problem can not be solved, one can check the 
  <term>Show solution</term> checkbox. The solution is then displayed
  underneath in the dark gray field.
  </p>
  <p>
  Clicking the <term>Next</term> button allows the user to skip a
  puzzle and move on, the <term>Abort</term> button will end tactical
  training and close the database. Besides the <term>Next</term>
  button, the user can choose an exercise by whatever means one can
  select a game within a database in Scid, e.g. by choosing a random
  game via Ctrl-? or jumping to some bookmark or simply by the <a
  GameList>game list</a>.
  </p>
  <p><footer>(Updated: Scid 3.6.26, October 2008)</footer></p>
}

# Find best move 
set helpTitle(FindBestMove) "Training: Find best move"
set helpText(FindBestMove) {<h1>Training: Find best move</h1>
  <p>
  When annotating games with a chess engine, the engine can search for
  tactical opportunities within a game. This can be achieve by setting
  <term>Mark Tactical Exercise</term> in the <a
  Analysis>Annotation</a> window accessible from analysis. In case a
  tactical opportunity is found, Scid will then flag the game with the
  <term>T</term> flag (Tactics) and add a special comment that is
  evaluated in this exercise.
  </p>
  <p>
  To use this training method, a properly prepared database is
  required. This can be achieved by batch annotating a set of games or
  one can just download them from the <url
  http://scid.sourceforge.net/>Scid website</url>.
  After opening a properly prepared database, just select Play /
  Training / Find best move. Scid will then jump to the next location
  of a tactical blow from the current game position. If necessary a
  suitable new game will be loaded and Scid will display the critical
  position. The user is now required to find the best continuation.
  To jump to the next tactical position one can just right click on
  the goto end of game button.
  </p>
  <p>
  For this exercise it is advisable to close the <a PGN>PGN</a> window and set
  <term>Hide next move</term> from the status areas context menu.
  </p>
  <p><footer>(Updated: Scid 3.6.26, October 2008)</footer></p>
}

# FICS Login
set helpTitle(FICSLogin) "FICS Login"
set helpText(FICSLogin) {<h1>FICS Login</h1>
  <p>
  The Free Internet Chess Server (FICS) is a good place to play chess
  online with people all over the world at various playing strengths.
  One of the great advantages is, that one can play human opponents.
  Additionally, FICS offers a rating system that allows to test the
  own strength and monitor the own progress. Furthermore, FICS relays
  international tournaments which can be observed and discussed life
  on the server and there exist several training options. For a
  detailed description of the services offered, on how to become a
  member of FICS etc. please refer to the FICS homepage at
  http://www.freechess.org.
  </p>
  <p>
  Though in principle FICS can be used with a plain telnet program
  playing with a real chess program offers several advantages.
  Therefore, Scid offers an interface to this server. To establish a
  connection to the server one has to log in first and several
  parameters are required:
  <ul>
      <li><term>Login:</term> This is your login name on the FICS
      server. Its value is stored in Scids configuration for later
      reuse.</li>
      <li><term>Password:</term> specifies your password for login.
      <b>Note</b> that this password is displayed when you type,
      allowing everybody to read it. Additionally, this password is
      stored in plain text within Scids configuration. If you are
      using a publicly accessible system please make sure to assign
      proper rights to Scids config directory.
      </li>
      <li><term>Time seal</term> if checked, all connections to the
      FICS server are routed through the <term>timeseal</term>
      program. The purpose of <term>timeseal</term> is to cope with
      network lags and keeping the clocks in correct order, that means
      that you should not loose a game on time simply cause you are on
      a very slow network connection. The suitable
      <term>timeseal</term> program for your operating system has to
      be selected in the next input line. It is available for free,
      but required to be downloaded separately from
      http://www.freechess.org.
      </li>
      <li><term>Server port</term> specifies the port on the server.
      The default is 5000 and should be ok for almost all needs.</li>
      <li><term>Timeseal port</term> specifies the port where the
      <term>timeseal</term> program is listening. The default is 5001
      and should be ok for almost all needs.</li>
   </ul>
   All these settings are stored with Scids configuration and
   therefore have to be entered only once.
   </p>
  <p>
  After checking the settings you can connect to the FICS server by
  clicking the <term>Connect</term> button. Alternatively, Sicd offers
  an anonymous login by choosing <term>Login as guest</term>. In this
  mode you can try all functions of FICS play there anonymously, but
  you will not be able to play rated games or obtain a rating
  yourself. For the difference between Guest account and usual account
  please refer to the documentation at the FICS homepage.
  </p>
  <p>
  <b>Note</b> Besides standard chess FICS also offers a bunch of chess
  variants like bughouse or crazyhouse etc. Scid does not support any
  of these variations, so you can not play them using Scid. If you
  want to play variations you may wish to check out other interfaces.
  FICS offers a bunch of graphical interfaces for download on its
  homepage.
  </p>
  <p><footer>(Updated: Scid 3.6.26, October 2008)</footer></p>
}

# FICS Find Opponent
set helpTitle(FICSfindOpp) "FICS Find Opponent"
set helpText(FICSfindOpp) {<h1>FICS Find Opponent</h1>
  <p>
  This dialogue offers a convenient way to challenge other players for
  a game, in FICS speak to <term>place a seek</term>. For this several
  parameters have to be set:
  <ul>
      <li><term>Initial time (min)</term> sets the initial time for
      the game in minutes.</li>
      <li><term>Increment (sec)</term> sets the increment per move,
      this is equivalent to a <term>Fisher Clock</term>. Setting it to
      0 will cause the game to last <term>Initial time</term> minutes.
      </li>
      <li><term>Rated game</term> If checked, the game will be rated,
      uncheck it to play a leisure game.</li>
      <li><term>color</term> If set to automatic, its up to the
      opponent to choose the color he wants to play, you will accept
      either he choses. If you want to play black or white explicitly,
      mark either of those choices.
      </li>
      <li><term>Limit rating between</term> allows you to offer a game
      to players in the given rating interval. Using this option can
      assure you to play opponents in your rating range and thus
      having a good game.
      </li>
      <li><term>Confirm manually</term> allows you to confirm or deny
      the game, once another player accepted your challenge.</li>
      <li><term>Filter with formula</term> On FICS every player can
      set a formula that describes what challenges will be denied
      automatically. This formula can be enabled by checking this box.
      </li>
   </ul>
   Clicking the <term>Issue seek</term> button will place your
   offer on the server.
  </p>
  <p><footer>(Updated: Scid 3.6.26, October 2008)</footer></p>
}

# FICS
set helpTitle(FICS) "FICS: Play on the Internet"
set helpText(FICS) {<h1>FICS: Play on the Internet</h1>
  <p>
  The window is split horizontally in tow main parts. On top the
  console window is shown. Here all messages sent to the server or
  retrieved from the server show up. Normal messages are written in
  green, game offers form other players show up in red, commands sent
  to the server are prepended by a prompt.
  </p>
  <p>
  Interaction with FICS is command driven. Therefore, below the
  console window is the command line. Here the user can enter commands
  sent to the server by either hitting enter or the <term>send</term>
  button. Describing all commands of FICS is beyond the scope of this
  document, however FICS offers an extensive online help system. To
  see a list of possible commands one can issue <term>help
  commands</term>. To see the detailed documentation of a specific
  command just prepend its name by <term>help</term>. Note, that a
  command may have several help pages. To scroll down issue the
  <term>next</term> command.
  </p>
  <p>
  Below the command line, the dialogue is split in two parts. On the
  left hand side the clocks show up, one for white and one for black.
  Clicking into a clock will halt it, inside the analogue clocks a
  digital representation is shown.
  </p>
  <p>
  On the right hand side of the clocks appear the command buttons:
  <ul>
    <li><term>Silence</term> will filter out most of the messages on
    FICS that are not explicitly directed to the user. It is
    equivalent to sending the FICS commands 
    <ul>
    <li>set gin 0</li>
    <li>set seek 0</li>
    <li>set silence 0</li>
    <li>set chanoff 1</li>
    </ul>
    </li>
    <li><term>Offers</term> will show a graphical display of the
    current game offers. The y-axis shows the ELO rating of the
    opponent (the higher his level, the further up the offer appears),
    while x-axis of the graph shows the timing of of the games (the
    further to the right, the slower the game). The first red line
    marks standard <term>Blitz</term> timing (5 min., no increment)
    while the second red line marks the standard <term>Rapid</term>
    timing (15 min., no increment). Additionally, the offers use the
    following coding:
    <ul>
       <li><green>Green</green>: offers from human opponents</li>
       <li><blue>Blue</blue>: offers from computer opponents</li>
       <li><red>Red</red>: games with a total time of more than 1 hour</li>
       <li><gray>Gray</gray>: anonymous offers, i.e. offers from guest logins</li>
       <li>Boxes: unrated games</li>
       <li>Circles: rated games</li>
    </ul>
    Hovering the mouse over a specific offer shows the full details in
    a textual form:
    <ul>
       <li>the game number</li>
       <li>the players login handle</li>
       <li>the rating of the player in brackets</li>
       <li>the initial time / the time increment</li>
       <li>the word "rated" or "unrated" depending on the offer</li>
       <li>the word "[white]" or "[black]" if the opponent wants to
       play the specified color only</li>
    </ul>
    To accept an offer just click on the symbol.
  <li><term>Find opponent</term> opens a  <a FICSfindOpp>dialogue</a>
  that allows to place an offer.</li>
  <li><term>Draw</term> offers a draw in the ongoing game</li>
  <li><term>Abort</term> aborts the ongoing game</li>
  <li>term>Resign</term> resigns the ongoing game</li>
  <li><term>Takeback</term> takes back a half move, useful in
  analysis</li>
  <li><term>Takback 2</term> takes back a full move, useful in
  analysis</li>
  <li><term>Games</li> gives a list of ongoing games on the server.
  Note that FICS console is considered to be 80 chars wide, therefore,
  to get a nice table it would be necessary to resize the FICS window.
  </li>
  <li>
  <li><term>Close</term> closes the connection to FICS</li>
  </ul>
  </p>

  <h3><name Training>FICS Lectures</h3>
  <p>
  FICS offers several options for chess training. One of the more
  prominent once are the lecture bots <term>LectureBot</term> and
  <term>WesBot</term>. They run all the time on FICS and offer various
  training sessions that can be visited using Scid. The start of each
  session is announced on <term>Channel 67</term> of FICS. Therefore,
  to see these announcements one should first add this channel to the
  personal observation list. This can be done by <term>+channel
  67</term> (it can be removed again by <term>-channel 67</term>).
  Once e.g. LectureBot announces a training session, one can take part
  by issuing <term>observe lecturebot</term>. Please refer to the
  online documentation of FICS for additional features of the Bots and
  also other bots available.
  </p>

  <h3><name Observe>Observe games on FICS</h3>
  <p>
  From time to time FICS <term>relays</term> major events in
  international chess. In these cases one can observe the games life
  on the server and discuss them with other users on FICS. To find out
  what games are currently relayed (if any) one can ask the relay for
  a list by <term>relay listgames</term>. As FICS expects the terminal
  to have 80 chars width it might be necessary to resize Scids FICS
  window to get a nice table. The entries in the table are, first the
  game number, colon, than the opponents, the result of the game (*
  signifying an ongoing game as usual) and the <a ECO>ECO code</a> of
  the opening. To observe a specific game one can just <term>observe
  gamenumber</term>. Scid will then display the current board
  position, the clocks will display the proper values sent by the
  relay and it will fetch all moves of the game so far plus the usual
  <a PGN>PGN</a> header fields. If a player moves this move is performed in Scid
  as usual. For discussing the game with other observers,
  <term>whisper</term> and <term>kibitz</term> can be used. Please
  refer to the online help of these commands. All these conversations
  can be read in the console.
  </p>
  <p>
  Note that only one game can be observed within Scid.
  </p>

  <p><footer>(Updated: Scid 3.6.26, October 2008)</footer></p>
}

# Book tuning
set helpTitle(BookTuning) "Book tuning"
set helpText(BookTuning) {<h1>Book tuning</h1>
   <p>
   For each book move a percentage is given stating the probability
   that Scid will use this move. Using <term>Book tuning</term> one
   can adjust these values. First, the position where the lines should
   be adopted has to be set up. After calling Tools / Book tuning one
   gets a small window stating the moves in book and their percentage
   in a spin box. Note, that only integer values are shown, therefore
   a 0 may appear signifying that this move has a probability of "less
   than 1%". (Most likely this happens in automatically generated
   books from game collections.) All numbers add up to 100% of course.
   </p>
   <p>
   To navigate through the branches of the book one can just click on
   the line in the book tuning window or move around the game as usual
   in Scid.
   </p>
   <p>
   To adjust the probability, e.g. rise the probability of a certain
   variation, one can just increase its value. Though the other values
   stay the same, Scid will recalculate once <term>Save</term> is
   pressed.
   </p>
   <p>
   Choosing <term>Export</term> will export a branch of the book from
   the current position onwards into a single game. The continuation
   with the highest probability will make up the main line while all
   others are stored in variations. This allows for semi manually
   selecting lines to be included in a new book to be created. Note,
   that Scid can handle 3000 moves in a single game, therefore it will
   most likely not be possible (nor will it be very sensible) to
   export a whole opening book into one game. Also note that export
   can be done incrementally. That is, new lines are added to already
   existing ones. This also allows to merge several books.
   </p>
  <p><footer>(Updated: Scid 3.6.26, October 2008)</footer></p>
}

# Novag Citrine
set helpTitle(Novag) "Connecting the Novag Citrine Chess board"
set helpText(Novag) {<h1>Connecting the Novag Citrine Chess board</h1>
   <p>
   The Novag Citrine is a wooden chess board that can be interfaced
   from a PC by means of a serial connection. It can be used with Scid
   to enter games, play against a computer opponent or on FICS
   offering a "natural" chess interface.
   </p>
   <p>
   <b>Note</b>: Before the board can be used, one has to <a
   HardwareConfig>configure the port to use.</a>
   </p>
   <p>
   Once the proper port is set, choose Tools / Connect Hardware /
   Connect Novag Citrine to hook up the board, or just click the
   hardware connection button <button tb_eng_disconnected>. This
   button also shows the <a HardwareStatus> status of the
   connection.</a>

   ###--- Detailed description needed ---###
   </p>
  <p><footer>(Updated: Scid 3.6.26, October 2008)</footer></p>
}

set helpTitle(HardwareConfig) "Connecting External Hardware"
set helpText(HardwareConfig) {<h1>Connecting External Hardware</h1>
  There are two types of hardware that can be used with Scid to play
  or input games. Select from the <term>Hardware</term> list the one
  you wish to use:
  <ul>
    <li><term>Novag Citrine</term> (and compatible boards) use an
    internal driver that was developed specifically for the Novag
    Citrine board, however there may exist other boards that support
    this protocol.  This driver allows to enter moves, but the boards
    logic does not recognise the position set up on the board nor the
    pieces as such.
    </li>
    <li><term>Input Engine</term> drivers are meant to be a free,
    open interface to hook up any hardware to some GUI like Scid. It
    is modeled after the usual style of a chess engine. The
    specifications of the protocol as well as a driver suitable for
    the DGT Electronic Chess boards can be found at the <url
    http://dgtdrv.sourceforge.net>dgtdrv website</url>.  Depending on
    the hardware the board may know the positions set up and the
    pieces by their move. This is e.g. the case for the DGT boards.
    </li>
  </ul>
  <p>
  <b>Note</b> Scid does not include any input engine by default. Input
  engines are meant to be independent programs that can be used with a
  variety of GUIs.
  </p>
  <p>
  After selecting the hardware to use at least the port, this hardware
  is connected to, has to be specified. Depending on the operating
  system and the board to use this port varies. However, usually
  external hardware is hooked up by a serial, USB or BlueTooth
  connection, where the latter two are just derivatives of serial
  connections. Depending on the platform usual names for the port in
  question are:
  </p>
  <ul>
    <li><term>Unix</term> (incl. <term>Linux</term>): usually a file
    in the <term>/dev</term> directory is used. For serial ports the
    common naming is <term>/dev/ttyS0</term>, for the first serial
    port, <term>/dev/ttyS1</term>, for the second and so on. For
    serial USB devices common names include <term>/dev/ttyUSB0</term>
    for the first, <term>/dev/ttyUSB1</term> for the second and so on.
    Other less common names are <term>/dev/usb/tts/*</term> or
    <term>/dev/usbdev*</term> (where the asterisk * stands for some
    additional name). BlueTooth devices commonly show up as
    <term>/dev/rfcomm0</term> for the first, <term>/dev/rfcomm1</term>
    for the second and so on.
    </li>
    <li><term>MacOS</term>:
    ###--- details for naming on Mac OS X required ---###
    </li>
    <li><term>Windows</term> follows the usual DOS convention, where
    the serial ports are labeled <term>COM1:</term>,
    <term>COM2:</term> and so on. This naming also applies to
    converters, however they sometimes get numbers beyond 4.
    </li>
    <li><term>Show button</term> will enable the <a
    HardwareStatus>hardware connect button</a> in the toolbar if
    checked. If unchecked the button will not show up to save space.
    Removal of the button needs to restart Scid.
    </li>
  </ul>
  <p>
  <b>Note</b>: if a board is connected by means of an USB to serial or
  BlueTooth to serial converter, these adaptors usually show up in the
  above scheme as well.
  </p>
  <p>
  If an Input Engine compatible driver should be used, the following
  fields need to be filled in (for the Novag driver they are
  disabled):
  </p>
  <ul>
     <li><term>Engine command</term>: The name of the program that is
     to be used as a driver engine. A fully qualified name may be
     required, like in the configuration of a <name Analysis
     List>chess engine</a>. (E.g. the DGT driver engine on a Linux
     system is usually called <term>dgtdrv2.i686</term>.)
     </li>
     <li><term>Engine parameter</term>: The text given in this field
     is passed along as parameters to the driver engine. The values
     required here depend on the driver and should be given in its
     documentation. (E.g. the DGT driver engine needs a two letter
     code specifying the board orientation and the moves that should
     be send to the GUI. The first letter may be <term>l</term> or
     <term>r</term> depending on the clock sitting to Whites left or
     right, the second letter may be <term>a</term>, <term>b</term> or
     <term>w</term> depending whether all, only black or only whites
     moves should be sent.)
     </li>
  </ul>
  <p>
  Hitting <term>OK</term> will store the setup in Scids configuration
  and immediately start the driver selected.
  </p>
  <p>
  The status of the external board can be monitored by the <a
  HardwareStatus>Hardware status</a> button. This button can also be
  used to hook up already configured hardware immediately without
  calling the <term>Configuration</term> dialogue.
  </p>


  <p><footer>(Updated: Scid 3.6.27, October 2008)</footer></p>
}

set helpTitle(HardwareStatus) "Status of External Hardware"
set helpText(HardwareStatus) {<h1>Status of External Hardware</h1>
   <p>
   This button is located on the right of Scids toolbar. Depending on
   the status of the external hardware it shows different icons:
   </p>
   <ul>
   <li><button tb_eng_disconnected>
   This is the normal state after program startup and shows that no
   external hardware is active at the moment. Pressing the button will
   hook up the configured hardware.
   </li>
   <li><button tb_eng_connecting>
   Scid started the communication with the external hardware,
   initialisation is in progress. Depending on the driver and hardware
   connected, it may take some seconds for things to settle.
   </li>
   <li><button tb_eng_error>
   While communicating withe the external hardware some error
   occurred. Usual sources of problems are e.g. another program
   accessing the external hardware, the hardware is not connected to
   the PC or simply is not switched on. In rare cases an external
   hardware may also behave unexpected. Trying to connect again might
   cure the problem as the hardware is usually reset upon disconnect.
   Also unplugging and/or switching off the device is an option in
   this case. Pressing the button will try again to hook up the
   configured hardware.
   </li>
   <li><button tb_eng_ok>
   The communication is established, the device is ready and can be
   used for move input. Pressing the button will disconnect the
   external hardware.
   </li>
   <li><button tb_eng_dgt>
   In case a DGT Electronic Chess board is connected and ready, this
   button shows up. Pressing the button will disconnect the
   external hardware.
   </li>
   <li><button tb_eng_query>
   The <a HardwareConfig</a> dialogue is open. Finish configuration
   before hooking up the hardware.
   </li>
   </ul>

  <p><footer>(Updated: Scid 3.6.27, October 2008)</footer></p>
}

set helpTitle(InputEngine) "Input Engine driver console"
set helpText(InputEngine) {<h1>Input Engine driver console</h1>
   <p>
   On top of this window, a console shows up that monitors the
   communication between Scid and the driver engine. Usually, this is
   of no interest to the user, but it may provide helpful hints in
   case of malfunction. All commands sent by Scid are prepended by an
   arrow to the right, all answers retrieved from the driver engine by
   an arrow to the left.  Below the console, the actual invokation of
   the driver by Scid shows up for information.
   </p>
   <p>
   <term>Moves sent for</term> allows to limit the moves sent by the
   external hardware. For game input the board should of course send
   the moves for both sides. For actually playing a game however, the
   moves made by the opponent should be ingnored, as Scid would
   otherwise notify them as "illegal moves".
   </p>
   <p>
   The small board on the right shows the current position.
   </p>
   <p>
   If a move is made, in the area between the buttons and the small
   board the move performed (<term>move area</term>) on the external
   board is shown in figurine long algebraic notation. Valid moves
   show up on a <green>green</green> background while illegal moves
   show up on a <red>red</red> background. Additionally, illegal moves
   are announced by the alert sound, if Scid has sound enabled.
   Depending on the settings, the moves are additionally announced.
   </p>
   <p>
   The <term>Info</term> button calls up information from the driver
   engine. The extend of this information depends on the engine, but
   it should usually give as much as is available about the external
   hardware and the driver itself. Additionally, the external driver
   will return the current position on the external board as <term>FEN</term> which
   is then compared to Scids internal representation. Discrepancies
   show up in the console and issue an alert.
   </p>
   <p>
   In case Scid and the external board got out of sync, the
   <term>Synchronise</term> button can be used. A new game is set up
   and the start position is set to the position on the external
   board.  </p>
   <p>
   The <term>Close</term> button finally disconnects the external
   hardware and closes the console.
   </p>

   <h2>Special Features</h2>
   <p>
   The following features depend on the driver engine and hardware
   that is used. Their description is based on the functions available
   with the <url http://www.dgt-projects.com>DGT Electronic Chess
   Board</url> and specified in the
   <url http://dgtdrv.sourceforge.net>Input Engine Protocol</url>
   description. Some of these functions however rely on the fact that
   the hardware is able to recognise the pieces on the board and their
   current placement.
   </p>

   <h3>Position setup</h3>
   <p>
   The position setup mode is invoked by removing both kings from the
   board. In this mode the <term>move area</term> is colored yellow
   and shows the White king and the string <b>Setup</b>.
   </p>
   <p>
   In setup mode any valid position can be set up on the external
   board, however Scids internal representation is not updated till
   finished.
   </p>
   <p>
   To end the setup mode both kings are set back to the board. Note,
   that the king of the side to move is set back <b>last</b>, that is
   if white should be on the move first set back the black king, then
   the white king. Now, the <term>move area</term> shows the black
   Queen and the string <b>OK</b>.
   </p>

   <h3>End a game</h3>
   <p>
   In game input or game play one can end the current game by setting
   both kings into the center squares of the board. The result is
   given as follows:
   </p>
   <ul>
      <li><term>1-0</term> (White win): Set both kings to the squares
      e4 and d5 in any order, ie. to the white centre squares.
      The move area is colored in white, showing the white king and
      the result.
      </li>
      <li><term>0-1</term> (Black win): Set both kings to the squares
      e5 and d4 in any order, ie. to the black centre squares.
      The move area is colored in gray, showing the black king and
      the result.
      </li>
      <li><term>1/2-1/2</term> (Draw): Set one king on a white and one
      on a black centre square in any order.
      The move area is colored in black and white, showing the result.
      </li>
   </ul>
   <p>
   In either case the <term>Save / Add game</term> dialogue shows up
   to allow filling in the game tags and to store the game in the
   current database.
   </p>

   <h3>Start a new game</h3>
   <p>
   A new game can be stared by entering setup mode (ie. removing both
   kings) and setting up the start position. To notify, that Scid has
   recognised the call for a new game the <term>move area</term> is
   colored in blue showing the white king and the string
   <term>OK</term>.
   </p>


  <p><footer>(Updated: Scid 3.6.27, October 2008)</footer></p>
}

set helpTitle(ReviewGame) "Game Review"
set helpText(ReviewGame) {<h1>Reviewing a game</h1>
   <p>
	This feature is designed to study a game, which means you should
	try to guess the moves played during the match. So you first open a
	game from any Scid's base, and enter this function with the command
	<b>Review game</b> in the <b>Play</b> menu.  As usually, to play
	with Black, flip board first (you always play from the bottom of
	the board).
   </p>
	<p>
	For an effective training the following settings should be
	disabled:
	<ul>
		<li>Show last move (Options / Moves / Hightlight last move)</li>
		<li>Show next move (Options / Game information / Hide next move)</li>
		<li>PGN window</li>
	</p>
The process is the following :
<ul>
<li>- engines ponders on the move played during the game</li>
<li>- engine ponders on the position and finds the best move</li>
<li>- user is then allowed to enter his move</li>
<li>- engine ponders on the move played by the user</li>
</ul>
If the move played by the user is either the move actually played
during the game or the move chosen by the engine or a move whose score
is close to the best move found by the engine (using the margin error
defined by the user), then the move is considered as a good one. If
the user disagrees with the engine he can use the <b>extended time</b>
button to get a confirmation of engine's analysis.
<p>
<b>Notes:</b> 
<ul>
<li>- The side must be chosen before game reviewing </li>
<li>- The user always plays from the bottom of the board</li>
</ul>
</p>
  <p><footer>(Updated: Scid 4.3, January 2011)</footer></p>
}

set helpTitle(Metadata) "Dublin Core Metadata"
set helpText(Metadata) {<h1>Dublin Core Metadata</h1>
   <p>
   The <url "http://dublincore.org">Dublin Core</a> metadata element
   defines a standardised and widelay used way to exchange
   informations about electronic ressources (metadata, ie. data about
   data). Dublin Core was defined in 2003 by ISO Standard 15836, and
   NISO Standard Z39.85-2007.
   </p>
   <p>
   Some databases that are used with Scid may contain additional
   metadata information. Such information may refer to the License of
   a database, the source of the database (in case it is published on
   the Web), the date of a database and so on.
   </p>
   <p>
   These informations can be viewed or appended to a database by
   choosing <term>Database information</term>. A new window will open
   up that shows the individual Dublin Core items and allows to edit
   them.
   </p>
   <p>
   Internally, metadata are stored in <term>sme</term> files that may
   come with a database. In case no <term>sme</term> file exists
   opening the <term>Database information</term> dialogue  will set
   default values based on the current database. This is signified by
   the labels showing up in <blue>blue</blue>.
   </p>
   <p>
   After choosing <term>OK</term> Scid stores the metadata to the
   <term>sme</term> file for usage with Scid. Additionally, an
   <term>XML</term> file is genereated containing exactly the same
   metadata, but in XML format for easy data exchange.
   </p>
   <p>
   <b>Note</b>: Scid does not care about the XML file itself. It uses
   only the <term>sme</term> file for its internal procedures.
   However, other applications may well prefer the XML structure.
   </p>

  <p><footer>(Updated: Scid 3.6.27, October 2008)</footer></p>
}


namespace eval ::tip {}

proc ::tip::show {{n -1}} {
  global tips language
  set w .tipsWin

  if {! [winfo exists .tipsWin]} {
    toplevel $w
    wm title $w "Scid: [tr HelpTip]"
    pack [ttk::frame $w.b] -side bottom -fill x
    text $w.text -background gray95 -foreground black \
      -cursor top_left_arrow -width 40 -height 8 -setgrid 1 \
      -yscrollcommand "$w.ybar set" -wrap word
    ::htext::init $w.text
    ttk::scrollbar $w.ybar -command "$w.text yview"
    pack $w.ybar -side right -fill y
    pack $w.text -side left -fill both -expand 1
    ttk::checkbutton $w.b.start -textvar ::tr(TipAtStartup) -variable startup(tip) -style Small.TCheckbutton
    dialogbuttonsmall $w.b.prev [list -text "<" ]
    dialogbuttonsmall $w.b.next [list -text ">" ]
    dialogbuttonsmall $w.b.close [list -textvar ::tr(Close) -command "destroy $w" ]
    pack $w.b.start -side left -padx 2
    packbuttons right $w.b.close $w.b.next $w.b.prev

    bind $w <Up> "$w.text yview scroll -1 units"
    bind $w <Down> "$w.text yview scroll 1 units"
    bind $w <Prior> "$w.text yview scroll -1 pages"
    bind $w <Next> "$w.text yview scroll 1 pages"
    bind $w <Key-Home> "$w.text yview moveto 0"
    bind $w <Key-End> "$w.text yview moveto 0.99"
    bind $w <Escape> "$w.b.close invoke"
    ::utils::win::Centre $w
    raiseWin $w
    focus $w
  }
  $w.text configure -state normal
  $w.text delete 1.0 end
  if {[info exists tips($language)]} {
    set tiplist $tips($language)
  } else {
    set tiplist $tips(E)
  }

  set ntips [llength $tiplist]
  if {$n < 0} {
    set n [expr int(double($ntips) * rand())]
  }
  set prev [expr $n - 1]
  if {$prev < 0} {set prev [expr $ntips - 1]}
  set next [expr ($n + 1) % $ntips]
  $w.b.prev configure -command "::tip::show $prev"
  $w.b.next configure -command "::tip::show $next"
  set tip "<center><b>$::tr(Tip) [expr $n + 1]:</b></center><br><br>"
  append tip [string trim [lindex $tiplist $n]]
  ::htext::display $w.text $tip "" 0
}

set tips(E) {
  {
    Scid has over 30 <a Index>help pages</a>, and in most Scid windows
    pressing the <b>F1</b> key will produce the help page about that
    window.
  }
  {
    Some Scid windows (e.g. the game information area, database
    <a Switcher>switcher</a>) have a right-mouse button menu. Try
    pressing the right mouse button in each window to see if it has
    one and what functions are available.
  }
  {
    Scid offers you more than one way to enter chess moves, letting
    you choose which suits you best. You can use the mouse
    (with or without move suggestion) or the keyboard
    (with or without move completion). Read the
    <a Moves>entering chess moves</a> help page for details.
  }
  {
    If you have a few databases that you open often, add a
    <a Bookmarks>bookmark</a> for each one, and then you will be able
    to open them faster using the bookmarks menu.
  }
  {
    You can see all the moves of the current game
    (with any variations and comments) using the <a PGN>PGN window</a>.
    In the PGN window, you can go to any move by clicking
    the left mouse button on it, or use the middle or right mouse button
    to see a preview of that position.
  }
  {
    You can copy games from one database to another using drag and drop
    with the left mouse button in the <a Switcher>database switcher</a> window.
  }
  {
    Scid can open PGN files, even if they are compressed with Gzip
    (with a .gz filename suffix). PGN files are opened read-only, so
    if you want to edit a PGN file in Scid, create a new Scid database
    and copy the PGN file games to it using the
    <a Switcher>database switcher</a>.
  }
  {
    If you have a large database you use with the <a Tree>tree</a> window
    often, it is worth selecting <b>Fill cache file</b> from the tree
    window File menu. This will remember tree statistics for many common
    opening positions, making tree access faster for the database.
  }
  {
    The <a Tree>tree</a> window can show you all moves played from the
    current position, but if you also want to see all the move orders
    that reached this position, you can find them by generating
    an <a OpReport>opening report</a>.
  }
  {
    In the <a GameList>game list</a> window, press the left or right mouse
    button on the heading of each column to adjust its width.
  }
  {
    With the <a PInfo>player information</a> window (just click on either
    player name in the game info area below the main window chessboard
    to open it), you can easily set the <a Searches Filter>filter</a> to
    contain all games by a certain player with a certain result by
    clicking on any value that is displayed <red>in red text</red>.
  }
  {
    When studying an opening, it can be very useful to do a
    <a Searches Board>board search</a> with the <b>Pawns</b> or
    <b>Files</b> option on an important opening position, as this may
    reveal other openings that reach the same pawn structure.
  }
  {
    In the game information area (below the chessboard), you can press
    the right mouse button to produce a menu for customising it. For
    example, you can make Scid hide the next move which is useful for
    training by playing though a game guessing the moves.
  }
  {
    If you often do a lot of database <a Maintenance>maintenance</a> on
    a large database, you can do several maintenance jobs at once using
    the <a Maintenance Cleaner>cleaner</a>.
  }
  {
    If you have a large database where most games have an EventDate and
    you want the games in date order, consider <a Sorting>sorting</a> it
    by EventDate then Event instead of Date then Event, as this will
    help to keep games in the same tournament with different dates
    together (assuming they all have the same EventDate, of course).
  }
  {
    Before <a Maintenance Twins>deleting twin games</a>, it is a good idea
    to <a Maintenance Spellcheck>spellcheck</a> your database since this
    will enable to Scid find more twins and mark them for deletion.
  }
  {
    <a Flags>Flags</a> are useful for marking database games with
    characteristics you may want to search for at a later time, such
    as pawn structure, tactics, etc. You can search by flags with a
    <a Searches Header>header search</a>.
  }
  {
    If you are playing through a game and want to try out some moves
    without altering the game, simply turn on Trial mode (with the
    <b>Ctrl+space</b> shortcut or from the toolbar icon), then turn it off
    again to return to the original game when you are done.
  }
  {
    To find the most prominent games (with high-rated opponents)
    reaching a particular position, open the <a Tree>tree</a> window
    and from there, open the best games list. You can even restrict
    the best games list to show only games with a particular result.
  }
  {
    A great way to study an opening using a large database of games is
    to turn on training mode in the <a Tree>tree</a> window, then play
    against the database to see which lines occur often.
  }
  {
    If you have two databases open, and want to see <a Tree>tree</a>
    statistics of the first database while examining a game from the
    second database, just press the <b>Lock</b> button in the tree
    window to lock it to the first database and then switch to the
    second base.
  }
  {
    The <a Tmt>tournament finder</a> is not only useful for finding
    a particular tournament, but can also be used to see what tournaments
    a certain player has competed in recently or browse the top
    tournaments played in a particular country.
  }
  {
    There are a number of common patterns defined in the
    <a Searches Material>Material/Pattern</a> search window that you
    may find useful for openings or middlegame study.
  }
  {
    When searching for a particular material situation in the
    <a Searches Material>Material/Pattern</a> search window, it is
    often useful to restrict the search to games that match for at
    least a few half-moves to eliminate games where the searched-for
    situation only occurred briefly.
  }
  {
    If you have an important database you do not want to accidentally
    alter, select <b>Read-only...</b> from the <b>File</b> menu after
    opening it, or change its file permissions to be read-only.
  }
  {
    If you use XBoard or WinBoard (or some other chess program that
    can copy a chess position in standard FEN notation to the clipboard)
    and want to copy its current chess position to Scid, the fastest and
    easiest way is to select <b>Copy Position</b> from the File menu in
    XBoard/WinBoard, then <b>Paste start board</b> from the Edit menu
    in Scid.
  }
  {
    In a <a Searches Header>header search</a>, player/event/site/round
    names are case-insensitive and match anywhere in a name. You can choose
    to do a case-sensitive wildcard search instead
    (where "?" = any single character and "*" = zero or more characters)
    by entering the search text "in quotes". For example, type "*BEL"
    (with the quote characters) in the site field to find all games played
    in Belgium but not Belgrade.
  }
  {
    If you want to correct a move in a game without losing all the moves
    played after it, open the <a Import>Import</a> window, press the
    <b>Paste current game</b> button, edit the incorrect move and then
    press <b>Import</b>.
  }
  {
    If you have an ECO classification file loaded, you can go to the
    deepest classified position in the current game with
    <b>Identify opening</b> in the <b>Game</b> menu
    (shortcut: Ctrl+Shift+D).
  }
  {
    If you want to check the size of a file or its date of last modification
    before opening it, use the <a Finder>file finder</a> to open it.
  }
  {
    A <a Repertoire>repertoire</a> file is a great way to keep track of
    your favourite opening lines, and also find games where those lines
    were played. Once you have your openings stored in a repertoire file,
    you can do a repertoire search every time you get a new file of
    games and browse the games that feature your favourite openings.
  }
  {
    An <a OpReport>opening report</a> is great for learning more about
    a particular position. You can see how well it scores, whether it
    leads to frequent short draws, and common positional themes.
  }
  {
    You can add the most common annotation symbols (!, !?, +=, etc) to the
    current move or position with keyboard shortcuts without needing to
    use the <a Comment>comment editor<a> -- for example, type "!" then
    the Return key to add a "!" annotation symbol. See the
    <a Moves>Entering chess moves</a> help page for details.
  }
  {
    If you are browsing openings in a database with the <a Tree>tree</a>,
    you can see a useful overview of how well the current opening is
    scoring recently and between high-rated players by opening the
    Statistics window (shortcut: Ctrl+I).
  }
  {
    You can change the main window board size by holding down the <b>Ctrl</b>
    and <b>Shift</b> keys, and pressing the <b>Left</b> or <b>Right</b>
    arrow key.
  }
  {
    After a <a Searches>search</a>, you can easily browse through all
    the matching games by holding down <b>Ctrl</b> and pressing the
    <b>Up</b> or <b>Down</b> key to load the previous or next
    <a Searches Filter>filter</a> game.
  }
  {
    Windows can be docked by checking the relevant entry in the option menu.
    Tabs can be dragged and dropped from one notebook to another and layed out
    by right clicking on the tab widget.
  }
}

### Menus.tcl: part of Scid.
### Copyright (C) 2001-2003 Shane Hudson.

############################################################
###  Status bar help for menu items, buttons, etc:

array set helpMessage {}
set showHelp 1
set oldStatus ""

# statusBarHelp:
#   Called when a button or menu entry is entered to display
#   a status bar help message if applicable.
#
proc statusBarHelp {window {item {}}} {
  global showHelp helpMessage statusBar language
  
  set status ""
  if {! $showHelp} { return }
  
  # Tcl/Tk seems to generate strange window names for menus that
  # are configured to be a toplevel window main menu, e.g.
  # .menu.file get reported as ".#menu.#menu#file" and
  # .menu.file.utils is ".#menu.#menu#file.#menu#file#utils"
  # I have no idea why it does this, but to avoid it we
  # convert a window paths with hashes to its true value:
  
  if {[string first {.#} $window] != -1} {
    set idx [string last . $window]
    set window [string range $window [expr {$idx+1} ] end]
    regsub -all "\#" $window . window
  }
  
  # Look for a status bar help message for the current button
  # or menu entry, in the current language or English:
  
  if {$item == ""} { set index $window } else { set index "$window,$item" }
  if {[info exists helpMessage($language,$index)]} {
    set status "  $helpMessage($language,$index)"
  } elseif {[info exists helpMessage(E,$index)]} {
    set status "  $helpMessage(E,$index)"
  } elseif {[info exists helpMessage($index)]} {
    set tag $helpMessage($index)
    if {[info exists helpMessage($language,$tag)]} {
      set status "  $helpMessage($language,$tag)"
    } elseif {[info exists helpMessage(E,$tag)]} {
      set status "  $helpMessage(E,$tag)"
    } else { set status $tag }
  }
  
  if {$status == ""} { statusBarRestore $window; return }
  
  if {[string range $window 0 7] == ".treeWin"} {
    set bn ""
    catch { scan $window .treeWin%d.%s bn dummy}
    ::tree::status $status $bn
  } else {
    set statusBar $status
  }
}

# statusBarRestore:
#   Updates a status bar that was displaying a help message.
#
proc statusBarRestore {window} {
  global showHelp statusBar
  
  if {! $showHelp} { return }
  if {[string range $window 0 7] == ".treeWin"} {
    set bn ""
    catch { scan $window .treeWin%d.%s bn dummy}
    ::tree::status "" $bn
  } else {
    updateStatusBar
  }
}

# bind Menu <Any-Enter> "+statusBarHelp %W \[%W index @%y \]"
# bind Menu <Any-Motion> "+statusBarHelp %W \[%W index @%y \]"
# bind Menu <Any-Leave> "+statusBarRestore %W"

bind Menu <<MenuSelect>> {+
  if {[catch {%W index active} tempMenuIndex]} {
    statusBarRestore %W
  } else {
    statusBarHelp %W $tempMenuIndex
  }
}

bind Menubutton <Any-Enter> "+statusBarHelp %W"
bind Menubutton <Any-Leave> "+statusBarRestore %W"
bind Button <Any-Enter> "+statusBarHelp %W"
bind Button <Any-Leave> "+statusBarRestore %W"
bind Label <Any-Enter> "+statusBarHelp %W"
bind Label <Any-Leave> "+statusBarRestore %W"

bind TMenubutton <Any-Enter> "+statusBarHelp %W"
bind TMenubutton <Any-Leave> "+statusBarRestore %W"
bind TButton <Any-Enter> "+statusBarHelp %W"
bind TButton <Any-Leave> "+statusBarRestore %W"
bind TLabel <Any-Enter> "+statusBarHelp %W"
bind TLabel <Any-Leave> "+statusBarRestore %W"

############################################################
### Main window menus:

option add *Menu*TearOff 0

menu .menu

## Mac Application menu has to be before any call to configure.
if { $macOS } {
  # Application menu:
  .menu add cascade -label Scid -menu .menu.apple
  menu .menu.apple
  
  set menuindex -1
  set m .menu.apple
  
  $m add command -label HelpAbout -command helpAbout
  set helpMessage($m,[incr menuindex]) HelpAbout
  
  $m add separator
  incr menuindex
  
  # To Quit
  bind all <Command-q> "exit"
  bind all <Command-Q> "exit"
  
  ## To get Help
  bind all <Command-?> {helpWindow Contents}
  bind all <Help> {helpWindow Contents}

  # Fix Quitting on MacOS X, now it will save options on quit:
  proc exit {}  {
    ::file::Exit
  }

}

if { $::docking::USE_DOCKING } {
  . configure -menu .menu
} else  {
  .main configure -menu .menu
}

.menu add cascade -label File -menu .menu.file
.menu add cascade -label Edit -menu .menu.edit
.menu add cascade -label Game -menu .menu.game
.menu add cascade -label Search -menu .menu.search
.menu add cascade -label Windows -menu .menu.windows
.menu add cascade -label Play -menu .menu.play
.menu add cascade -label Tools -menu .menu.tools
.menu add cascade -label Options -menu .menu.options
.menu add cascade -label Help -menu .menu.helpmenu

foreach menuname { file edit game search windows play tools options helpmenu } {
  menu .menu.$menuname
}

### File menu:

set menuindex -1
set m .menu.file
$m add command -label FileNew -acc "Ctrl+N" -command ::file::New
bind $dot_w <Control-n> ::file::New
set helpMessage($m,[incr menuindex]) FileNew

$m add command -label FileOpen -acc "Ctrl+O" -command ::file::Open
bind $dot_w <Control-o> ::file::Open
set helpMessage($m,[incr menuindex]) FileOpen

$m add command -label FileClose -acc "Ctrl+W" -command ::file::Close
bind $dot_w <Control-w> ::file::Close
set helpMessage($m,[incr menuindex]) FileClose

$m add command -label FileFinder -acc "Ctrl+/" -command ::file::finder::Open
bind $dot_w <Control-slash> ::file::finder::Open
set helpMessage($m,[incr menuindex]) FileFinder

$m add cascade -label FileBookmarks -accelerator "Ctrl+B" -menu $m.bookmarks
set helpMessage($m,[incr menuindex]) FileBookmarks
menu $m.bookmarks

$m add separator
incr menuindex

# naming is weird because the menus are moved from Tools to File menus

$m add command -label ToolsOpenBaseAsTree -command ::file::openBaseAsTree
set helpMessage($m,[incr menuindex]) ToolsOpenBaseAsTree

menu $m.recenttrees
$m add cascade -label ToolsOpenRecentBaseAsTree -menu $m.recenttrees
set helpMessage($m,[incr menuindex]) ToolsOpenRecentBaseAsTree

$m add separator
incr menuindex

menu $m.utils
$m add cascade -label FileMaint -menu .menu.file.utils
set helpMessage($m,[incr menuindex]) FileMaint

$m.utils add checkbutton -label FileMaintWin -accelerator "Ctrl+M" -variable maintWin -command ::maint::OpenClose
bind $dot_w <Control-m> ::maint::OpenClose
set helpMessage($m.utils,0) FileMaintWin

$m.utils add command -label FileMaintCompact -command makeCompactWin
set helpMessage($m.utils,1) FileMaintCompact

$m.utils add command -label FileMaintClass -command classifyAllGames
set helpMessage($m.utils,2) FileMaintClass

$m.utils add command -label FileMaintSort -command makeSortWin
set helpMessage($m.utils,3) FileMaintSort

$m.utils add separator

$m.utils add command -label FileMaintDelete -state disabled -command markTwins
set helpMessage($m.utils,5) FileMaintDelete

$m.utils add command -label FileMaintTwin -command updateTwinChecker
set helpMessage($m.utils,6) FileMaintTwin

$m.utils add separator

menu $m.utils.name
$m.utils add cascade -label FileMaintName -menu .menu.file.utils.name
set helpMessage($m.utils,8) FileMaintName

$m.utils.name add checkbutton -label FileMaintNameEditor -command nameEditor -variable nameEditorWin -accelerator "Ctrl+Shift+N"
bind $dot_w <Control-N> nameEditor
set helpMessage($m.utils.name,0) FileMaintNameEditor

$m.utils.name add command -label FileMaintNamePlayer -command {openSpellCheckWin Player}
set helpMessage($m.utils.name,1) FileMaintNamePlayer

$m.utils.name add command -label FileMaintNameEvent -command {openSpellCheckWin Event}
set helpMessage($m.utils.name,2) FileMaintNameEvent

$m.utils.name add command -label FileMaintNameSite -command {openSpellCheckWin Site}
set helpMessage($m.utils.name.3) FileMaintNameSite

$m.utils.name add command -label FileMaintNameRound -command {openSpellCheckWin Round}
set helpMessage($m.utils.name,4) FileMaintNameRound

$m.utils add separator
$m.utils add command -label FileMaintFixBase -command ::maint::fixCorruptedBase
set helpMessage($m.utils,10) FileMaintFixBase

bind $dot_w <Control-d> ::windows::switcher::Open

$m add command -label FileReadOnly -command makeBaseReadOnly
set helpMessage($m,[incr menuindex]) FileReadOnly

$m add cascade -label FileSwitch -menu $m.switch
set helpMessage($m,[incr menuindex]) FileSwitch
menu $m.switch

set totalBaseSlots [sc_base count total]
set clipbaseSlot [sc_info clipbase]
set currentSlot [sc_base current]

for {set i 1} { $i <= $totalBaseSlots} {incr i} {
  $m.switch add radiobutton -variable currentSlot -value $i \
      -label "Base $i: <none>" \
      -underline 5 -accelerator "Ctrl+$i" -command [list ::file::SwitchToBase $i]
  set helpMessage($m.switch,[expr {$i - 1} ]) "Switch to base slot $i"
  if {$i == $clipbaseSlot} {
    set helpMessage($m.switch,[expr {$i - 1} ]) "Switch to the clipbase database"
  }
  bind $dot_w "<Control-Key-$i>" [list ::file::SwitchToBase $i]
}

$m add separator
incr menuindex

$m add command -label FileExit -accelerator "Ctrl+Q" -command ::file::Exit
bind $dot_w <Control-q> ::file::Exit
set helpMessage($m,[incr menuindex]) FileExit


### Edit menu:
set menuindex -1
set m .menu.edit
$m add command -label EditAdd -accel "Ctrl+A" -command {sc_var create; updateBoard -pgn}
set helpMessage($m,[incr menuindex]) EditAdd

menu $m.del
$m add cascade -label EditDelete -menu $m.del
set helpMessage($m,[incr menuindex]) EditDelete

menu $m.first
$m add cascade -label EditFirst -menu $m.first
set helpMessage($m,[incr menuindex]) EditFirst

menu $m.main
$m add cascade -label EditMain -menu $m.main
set helpMessage($m,[incr menuindex]) EditMain

$m add checkbutton -label EditTrial -variable trialMode -accelerator "Ctrl+space" -command {setTrialMode update}
bind $dot_w <Control-space> { setTrialMode toggle }
set helpMessage($m,[incr menuindex]) EditTrial

$m add cascade -label EditStrip -menu $m.strip
set helpMessage($m,[incr menuindex]) EditStrip

$m add command -label EditUndo -accelerator "Ctrl+z" -command {  sc_game undo ; updateBoard -pgn }
set helpMessage($m,[incr menuindex]) EditUndo

menu $m.strip
$m.strip add command -label EditStripComments -command {::game::Strip comments}
set helpMessage($m.strip,0) EditStripComments
$m.strip add command -label EditStripVars -command {::game::Strip variations}
set helpMessage($m.strip,1) EditStripVars
$m.strip add command -label EditStripBegin -command {::game::TruncateBegin}
set helpMessage($m.strip,2) EditStripBegin
$m.strip add command -label EditStripEnd -command {::game::Truncate}
set helpMessage($m.strip,3) EditStripEnd

$m add separator
incr menuindex

$m add command -label EditReset -command {
  sc_clipbase clear
  updateBoard -pgn
  ::windows::gamelist::Refresh
  updateTitle
}
set helpMessage($m,[incr menuindex]) EditReset

$m add command -label EditCopy -accelerator "Ctrl+C" -command {
  catch {sc_clipbase copy}
  updateBoard
 ::pgn::PgnClipboardCopy
}
bind $dot_w <Control-c> {catch {sc_clipbase copy}; updateBoard; ::pgn::PgnClipboardCopy}
bind $dot_w <Control-Insert> {catch {sc_clipbase copy}; updateBoard; ::pgn::PgnClipboardCopy}
set helpMessage($m,[incr menuindex]) EditCopy

$m add command -label EditPaste -accelerator "Ctrl+V" -command {
  sc_clipbase paste
  updateBoard -pgn
}
bind $dot_w <Control-v> {catch {sc_clipbase paste}; updateBoard -pgn}
bind $dot_w <Shift-Insert> {catch {sc_clipbase paste}; updateBoard -pgn}
set helpMessage($m,[incr menuindex]) EditPaste

$m add command -label EditPastePGN -command importClipboardGame
set helpMessage($m,[incr menuindex]) EditPastePGN

$m add separator
incr menuindex

$m add command -label EditSetup -accelerator "Ctrl+Shift+S" -command setupBoard
bind $dot_w <Control-S> setupBoard
set helpMessage($m,[incr menuindex]) EditSetup

$m add command -label EditCopyBoard -accelerator "Ctrl+Shift+C" -command copyFEN
bind $dot_w <Control-C> copyFEN
set helpMessage($m,[incr menuindex]) EditCopyBoard

$m add command -label EditPasteBoard -accelerator "Ctrl+Shift+V" -command pasteFEN
bind $dot_w <Control-V> pasteFEN
set helpMessage($m,[incr menuindex]) EditPasteBoard


### Game menu:
set menuindex -1
set m .menu.game
$m add command -label GameNew -accelerator "Ctrl+X" -command ::game::Clear
bind $dot_w <Control-x> ::game::Clear
set helpMessage($m,[incr menuindex]) GameNew

$m add command -label GameFirst -accelerator "Ctrl+Shift+Up" -command {::game::LoadNextPrev first}
bind $dot_w <Control-Shift-Up> {::game::LoadNextPrev first}
set helpMessage($m,[incr menuindex]) GameFirst

$m add command -label GamePrev -accelerator "Ctrl+Up" -command {::game::LoadNextPrev previous}
bind $dot_w <Control-Up> {::game::LoadNextPrev previous}
set helpMessage($m,[incr menuindex]) GamePrev

$m add command -label GameReload -command ::game::Reload -accelerator "Ctrl+Shift+L"
bind $dot_w <Control-L> ::game::Reload
set helpMessage($m,[incr menuindex]) GameReload

$m add command -label GameNext -accelerator "Ctrl+Down" -command {::game::LoadNextPrev next}
bind $dot_w <Control-Down> {::game::LoadNextPrev next}
set helpMessage($m,[incr menuindex]) GameNext

$m add command -label GameLast -accelerator "Ctrl+Shift+Down" -command {::game::LoadNextPrev last}
bind $dot_w <Control-Shift-Down> {::game::LoadNextPrev last}
set helpMessage($m,[incr menuindex]) GameLast

$m add command -label GameRandom -command ::game::LoadRandom -accelerator "Ctrl+?"
bind $dot_w <Control-question> ::game::LoadRandom
set helpMessage($m,[incr menuindex]) GameRandom

$m add command -label GameNumber -command ::game::LoadNumber -accelerator "Ctrl+G"
bind $dot_w <Control-g> ::game::LoadNumber
set helpMessage($m,[incr menuindex]) GameNumber

$m add separator
incr menuindex

$m add command -label GameReplace -command gameReplace -accelerator "Ctrl+R"
bind $dot_w <Control-r> { .menu.game invoke [tr GameReplace] }
set helpMessage($m,[incr menuindex]) GameReplace

$m  add command -label GameAdd -command gameAdd  -accelerator "Ctrl+S"
bind $dot_w <Control-s> gameAdd
set helpMessage($m,[incr menuindex]) GameAdd

$m add separator
incr menuindex

$m add command -label GameDeepest -accelerator "Ctrl+Shift+D" -command {
  sc_move ply [sc_eco game ply]
  updateBoard
}
bind $dot_w <Control-D> {sc_move ply [sc_eco game ply]; updateBoard}
set helpMessage($m,[incr menuindex]) GameDeepest

$m add command -label GameGotoMove -accelerator "Ctrl+U" -command ::game::GotoMoveNumber
set helpMessage($m,[incr menuindex]) GameGotoMove
bind $dot_w <Control-u> ::game::GotoMoveNumber

$m add command -label GameNovelty -accelerator "Ctrl+Shift+Y" -command findNovelty
bind $dot_w <Control-Y> findNovelty
set helpMessage($m,[incr menuindex]) GameNovelty


### Search menu:
set menuindex -1
set m .menu.search
$m  add command -label SearchReset -acc "Ctrl+F" -command ::search::filter::reset
bind $dot_w <Control-f> search::filter::reset
set helpMessage($m,[incr menuindex]) SearchReset

$m  add command -label SearchNegate -acc "Ctrl+Shift+F" -command ::search::filter::negate
bind $dot_w <Control-F> ::search::filter::negate
set helpMessage($m,[incr menuindex]) SearchNegate

$m  add separator
incr menuindex

$m  add command -label SearchCurrent -command ::search::board -accelerator "Ctrl+Shift+B"
bind $dot_w <Control-B> ::search::board
set helpMessage($m,[incr menuindex]) SearchCurrent

$m  add command -label SearchHeader -command ::search::header -accelerator "Ctrl+Shift+H"
bind $dot_w <Control-H> ::search::header
set helpMessage($m,[incr menuindex]) SearchHeader

$m  add command -label SearchMaterial -command ::search::material -accelerator "Ctrl+Shift+M"
bind $dot_w <Control-M> ::search::material
set helpMessage($m,[incr menuindex]) SearchMaterial

$m  add separator
incr menuindex

$m add command -label SearchUsing -accel "Ctrl+Shift+U" -command ::search::usefile
bind $dot_w <Control-KeyPress-U> ::search::usefile
set helpMessage($m,[incr menuindex]) SearchUsing

### Play menu:
set menuindex -1
set m .menu.play

$m add command -label ToolsSeriousGame -command ::sergame::config
set helpMessage($m,[incr menuindex]) ToolsSeriousGame
$m add command -label ToolsTacticalGame -command ::tacgame::config
set helpMessage($m,[incr menuindex]) ToolsTacticalGame
$m add command -label ToolsTrainFics -command ::fics::config
set helpMessage($m,[incr menuindex]) ToolsTrainFics
$m add separator
incr menuindex

# sub-menu for training
menu $m.training
$m add cascade -label ToolsTraining -menu $m.training
set helpMessage($m,[incr menuindex]) ToolsTraining
$m.training add command -label ToolsTrainOpenings -command ::opening::config
set helpMessage($m.training,0) ToolsTrainOpenings
$m.training add command -label ToolsTrainTactics -command ::tactics::config
set helpMessage($m.training,1) ToolsTrainTactics
$m.training add command -label ToolsTrainReviewGame -command ::reviewgame::start
set helpMessage($m.training,2) ToolsTrainReviewGame
$m.training add command -label ToolsTrainCalvar -command ::calvar::config
set helpMessage($m.training,3) ToolsTrainCalvar
$m.training add checkbutton -label ToolsTrainFindBestMove -variable ::tactics::findBestMoveRunning -command ::tactics::findBestMoveStart
set helpMessage($m.training,4) ToolsTrainFindBestMove

$m add separator
incr menuindex

# Add support for Correspondence Chess by means of Xfcc and cmail
menu $m.correspondence
$m add cascade -label CorrespondenceChess -menu $m.correspondence
set helpMessage($m,[incr menuindex]) CorrespondenceChess

$m.correspondence add command -label CCConfigure   -command {::CorrespondenceChess::config}
set helpMessage($m.correspondence,0) CCConfigure
$m.correspondence add command -label CCConfigRelay   -command {::CorrespondenceChess::ConfigureRelay}
set helpMessage($m.correspondence,1) CCConfigRelay

$m.correspondence add separator
$m.correspondence add command -label CCOpenDB      -command {::CorrespondenceChess::OpenCorrespondenceDB; ::CorrespondenceChess::ReadInbox} \
    -accelerator "Ctrl+F12"
bind $dot_w <Control-F12> {::CorrespondenceChess::OpenCorrespondenceDB; ::CorrespondenceChess::ReadInbox}
set helpMessage($m.correspondence,3) CCOpenDB

$m.correspondence add separator
$m.correspondence add command -label CCRetrieve    -command { ::CorrespondenceChess::FetchGames }
set helpMessage($m.correspondence,5) CCRetrieve

$m.correspondence add command -label CCInbox       -command { ::CorrespondenceChess::ReadInbox }
set helpMessage($m.correspondence,6) CCInbox

$m.correspondence add separator
$m.correspondence add command -label CCSend        -command {::CorrespondenceChess::SendMove 0 0 0 0}
set helpMessage($m.correspondence,8) CCSend
$m.correspondence add command -label CCResign      -command {::CorrespondenceChess::SendMove 1 0 0 0}
set helpMessage($m.correspondence,9) CCResign
$m.correspondence add command -label CCClaimDraw   -command {::CorrespondenceChess::SendMove 0 1 0 0}
set helpMessage($m.correspondence,10) CCClaimDraw
$m.correspondence add command -label CCOfferDraw   -command {::CorrespondenceChess::SendMove 0 0 1 0}
set helpMessage($m.correspondence,11) CCOfferDraw
$m.correspondence add command -label CCAcceptDraw  -command {::CorrespondenceChess::SendMove 0 0 0 1}
set helpMessage($m.correspondence,12) CCAcceptDraw
$m.correspondence add command -label CCGamePage    -command {::CorrespondenceChess::CallWWWGame}
set helpMessage($m.correspondence,13) CCGamePage
$m.correspondence add separator
$m.correspondence add command -label CCNewMailGame -command {::CorrespondenceChess::newEMailGame}
set helpMessage($m.correspondence,15) CCNewMailGame
$m.correspondence add command -label CCMailMove    -command {::CorrespondenceChess::eMailMove}
set helpMessage($m.correspondence,16) CCMailMove


### Windows menu:
set menuindex -1
set m .menu.windows
$m  add checkbutton -label WindowsComment -var commentWin -command makeCommentWin -accelerator "Ctrl+E"

bind $dot_w <Control-e> makeCommentWin
set helpMessage($m,[incr menuindex]) WindowsComment

$m  add checkbutton -label WindowsGList \
    -variable ::windows::gamelist::isOpen -command ::windows::gamelist::Open  -accelerator "Ctrl+L"
bind $dot_w <Control-l> ::windows::gamelist::Open
set helpMessage($m,[incr menuindex]) WindowsGList

$m  add checkbutton -label WindowsPGN -variable pgnWin -command ::pgn::OpenClose  -accelerator "Ctrl+P"
bind $dot_w <Control-p> ::pgn::OpenClose
set helpMessage($m,[incr menuindex]) WindowsPGN

$m add checkbutton -label WindowsPList -variable plistWin -command ::plist::toggle -accelerator "Ctrl+Shift+P"
bind $dot_w <Control-P> ::plist::toggle
set helpMessage($m,[incr menuindex]) WindowsPList

$m add checkbutton -label WindowsTmt -variable tourneyWin -command ::tourney::toggle -accelerator "Ctrl+Shift+T"
bind $dot_w <Control-T> ::tourney::toggle
set helpMessage($m,[incr menuindex]) WindowsTmt

$m add separator
incr menuindex

$m add checkbutton -label WindowsSwitcher -variable baseWin -accelerator "Ctrl+D" -command ::windows::switcher::Open
set helpMessage($m,[incr menuindex]) WindowsSwitcher

$m add checkbutton -label WindowsMaint -accelerator "Ctrl+M" -variable maintWin -command ::maint::OpenClose
bind $dot_w <Control-m> ::maint::OpenClose
set helpMessage($m,[incr menuindex]) WindowsMaint

$m add separator
incr menuindex

$m add checkbutton -label WindowsECO -accelerator "Ctrl+Y" -variable ::windows::eco::isOpen -command {::windows::eco::OpenClose}
bind $dot_w <Control-y> ::windows::eco::OpenClose
set helpMessage($m,[incr menuindex]) WindowsECO

$m add checkbutton -label WindowsRepertoire -variable ::rep::Win -accelerator "Ctrl+Shift+R" -command ::rep::OpenCloseWindow
bind $dot_w <Control-R> ::rep::OpenCloseWindow
set helpMessage($m,[incr menuindex]) WindowsRepertoire

$m add checkbutton -label WindowsStats -variable ::windows::stats::isOpen -accelerator "Ctrl+I" -command ::windows::stats::Open
bind $dot_w <Control-i> ::windows::stats::Open
set helpMessage($m,[incr menuindex]) WindowsStats

$m add checkbutton -label WindowsTree -variable treeWin -command ::tree::make -accelerator "Ctrl+T"
bind $dot_w <Control-t> { .menu.windows invoke [tr WindowsTree] }
set helpMessage($m,[incr menuindex]) WindowsTree

$m add checkbutton -label WindowsTB -variable ::tb::isOpen -command ::tb::Open -accelerator "Ctrl+="
bind $dot_w <Control-equal> ::tb::Open
set helpMessage($m,[incr menuindex]) WindowsTB

$m add checkbutton -label WindowsBook -variable ::book::isOpen -command ::book::open -accelerator "F6"
set helpMessage($m,[incr menuindex]) WindowsBook
bind $dot_w <F6>  ::book::open

$m add checkbutton -label WindowsCorrChess -variable ::CorrespondenceChess::isOpen \
    -command ::CorrespondenceChess::CCWindow -accelerator "F12"
bind $dot_w <F12> ::CorrespondenceChess::CCWindow

### Tools menu:

set menuindex -1
set m .menu.tools
$m  add checkbutton -label ToolsAnalysis -variable analysisWin1 \
    -command makeAnalysisWin -accelerator "Ctrl+Shift+A"
bind $dot_w <Control-A> makeAnalysisWin
set helpMessage($m,[incr menuindex]) ToolsAnalysis

$m  add checkbutton -label ToolsAnalysis2 -variable analysisWin2 \
    -command "makeAnalysisWin 2" -accelerator "Ctrl+Shift+2"
bind $dot_w <Control-at> "makeAnalysisWin 2"
set helpMessage($m,[incr menuindex]) ToolsAnalysis2

#Add Menu for Start Engine 1 and Engine 2
$m  add checkbutton -label ToolsStartEngine1 -variable analysisWin1 \
    -command "makeAnalysisWin 1 0" -accelerator "F2"
bind $dot_w <F2> "makeAnalysisWin 1 0"
set helpMessage($m,[incr menuindex]) ToolsStartEngine1

$m  add checkbutton -label ToolsStartEngine2 -variable analysisWin2 \
    -command "makeAnalysisWin 2 0" -accelerator "F3"
bind $dot_w <F3> "makeAnalysisWin 2 0"
set helpMessage($m,[incr menuindex]) ToolsStartEngine2

$m add separator
incr menuindex

$m add command -label ToolsCross \
    -accelerator "Ctrl+Shift+X" -command crosstabWin
bind $dot_w <Control-X> crosstabWin
set helpMessage($m,[incr menuindex]) ToolsCross

$m add checkbutton -label ToolsEmail \
    -accelerator "Ctrl+Shift+E" -variable emailWin -command ::tools::email
bind $dot_w <Control-E> ::tools::email
set helpMessage($m,[incr menuindex]) ToolsEmail

$m add checkbutton -label ToolsFilterGraph \
    -accelerator "Ctrl+Shift+G" -variable filterGraph -command tools::graphs::filter::Open
bind $dot_w <Control-G> tools::graphs::filter::Open
set helpMessage($m,[incr menuindex]) ToolsFilterGraph

$m add checkbutton -label ToolsAbsFilterGraph \
    -accelerator "Ctrl+Shift+J" -variable absfilterGraph -command tools::graphs::absfilter::Open
bind $dot_w <Control-J> tools::graphs::absfilter::Open
set helpMessage($m,[incr menuindex]) ToolsAbsFilterGraph

$m add command -label ToolsOpReport \
    -accelerator "Ctrl+Shift+O" -command ::optable::makeReportWin
bind $dot_w <Control-O> ::optable::makeReportWin
set helpMessage($m,[incr menuindex]) ToolsOpReport

$m add command -label ToolsTracker \
    -accelerator "Ctrl+Shift+K" -command ::ptrack::make
bind $dot_w <Control-K> ::ptrack::make
set helpMessage($m,[incr menuindex]) ToolsTracker

# book tuning
$m add command -label ToolsBookTuning -command ::book::tuning
set helpMessage($m,[incr menuindex]) ToolsBookTuning

# Connect Hardware
menu $m.hardware
$m add cascade -label ToolsConnectHardware -menu $m.hardware
set helpMessage($m,[incr menuindex]) ToolsConnectHardware
incr menuindex
$m.hardware add command -label ToolsConnectHardwareConfigure -command ::ExtHardware::config
set helpMessage($m.hardware,0) ToolsConnectHardwareConfigure
$m.hardware add command -label ToolsConnectHardwareInputEngineConnect -command ::inputengine::connectdisconnect
set helpMessage($m.hardware,1) ToolsConnectHardwareInputEngineConnect
$m.hardware add command -label ToolsConnectHardwareNovagCitrineConnect -command ::novag::connect
set helpMessage($m.hardware,2) ToolsConnectHardwareNovagCitrineConnect

$m add separator
incr menuindex

menu $m.pinfo
$m add cascade -label ToolsPInfo -menu $m.pinfo
set helpMessage($m,[incr menuindex]) ToolsPInfo
$m.pinfo add command -label White -underline 0 -command {
  ::pinfo::playerInfo [sc_game info white]
}
$m.pinfo add command -label Black -underline 0 -command {
  ::pinfo::playerInfo [sc_game info black]
}

$m add command -label ToolsPlayerReport -command ::preport::preportDlg -state disabled
set helpMessage($m,[incr menuindex]) ToolsPlayerReport

$m add command -label ToolsRating -command {::tools::graphs::rating::Refresh both}
# bind $dot_w <Control-R> {::tools::graphs::rating::Refresh both}
set helpMessage($m,[incr menuindex]) ToolsRating

$m add command -label ToolsScore -command ::tools::graphs::score::Refresh ;# -accelerator "Ctrl+Shift+Z"
# bind $dot_w <Control-Z> ::tools::graphs::score::Refresh
set helpMessage($m,[incr menuindex]) ToolsScore

$m add separator
incr menuindex

menu $m.exportcurrent

$m add cascade -label ToolsExpCurrent -menu $m.exportcurrent
set helpMessage($m,[incr menuindex]) ToolsExpCurrent

$m.exportcurrent add command -label ToolsExpCurrentPGN \
    -command {exportGames current PGN}
set helpMessage($m.exportcurrent,0) ToolsExpCurrentPGN

$m.exportcurrent add command -label ToolsExpCurrentHTML \
    -command {exportGames current HTML}
set helpMessage($m.exportcurrent,1) ToolsExpCurrentHTML

$m.exportcurrent add command -label ToolsExpCurrentHTMLJS \
    -command {::html::exportCurrentGame}
set helpMessage($m.exportcurrent,2) ToolsExpCurrentHTMLJS

$m.exportcurrent add command -label ToolsExpCurrentLaTeX \
    -command {exportGames current LaTeX}
set helpMessage($m.exportcurrent,3) ToolsExpCurrentLaTeX

menu $m.exportfilter

$m add cascade -label ToolsExpFilter -menu $m.exportfilter
set helpMessage($m,[incr menuindex]) ToolsExpFilter

$m.exportfilter add command -label ToolsExpFilterPGN \
    -command {exportGames filter PGN}
set helpMessage($m.exportfilter,0) ToolsExpFilterPGN

$m.exportfilter add command -label ToolsExpFilterHTML \
    -command {exportGames filter HTML}
set helpMessage($m.exportfilter,1) ToolsExpFilterHTML

$m.exportfilter add command -label ToolsExpFilterHTMLJS \
    -command {::html::exportCurrentFilter}
set helpMessage($m.exportfilter,2) ToolsExpFilterHTMLJS

$m.exportfilter add command -label ToolsExpFilterLaTeX \
    -command {exportGames filter LaTeX}
set helpMessage($m.exportfilter,3) ToolsExpFilterLaTeX

$m add separator
incr menuindex

$m add command -label ToolsImportOne \
    -accelerator "Ctrl+Shift+I" -command importPgnGame
bind $dot_w <Control-I> importPgnGame
set helpMessage($m,[incr menuindex]) ToolsImportOne

$m add command -label ToolsImportFile -command importPgnFile
set helpMessage($m,[incr menuindex]) ToolsImportFile

$m add separator
incr menuindex

#### needs to be fixed (at least for Linux)
$m add command -label ToolsCaptureBoard \
     -command { boardToFile "" "" }
set helpMessage($m,[incr menuindex]) ToolsCaptureBoard

### Options menu:

set m .menu.options
set optMenus {board export fonts ginfo language entry numbers startup windows theme}
set optLabels {Board Export Fonts GInfo Language Moves Numbers Startup Windows Theme}
set menuindex -1
foreach menu $optMenus label $optLabels {
  $m add cascade -label Options$label -menu $m.$menu
  set helpMessage($m,[incr menuindex]) Options$label
}

$m add command -label OptionsSounds -command ::utils::sound::OptionsDialog
set helpMessage($m,[incr menuindex]) OptionsSounds

$m add command -label OptionsToolbar -command configToolbar
set helpMessage($m,[incr menuindex]) OptionsToolbar

$m add separator
incr menuindex

$m add command -label OptionsECO -command {
  set ftype { { "Scid ECO files" {".eco"} } }
  if {[sc_info gzip]} {
    set ftype { { "Scid ECO files" {".eco" ".eco.gz"} } }
  }
  set fullname [tk_getOpenFile -initialdir [pwd] -filetypes $ftype -title "Load ECO file"]
  if {[string compare $fullname ""]} {
    if {[catch {sc_eco read $fullname} result]} {
      tk_messageBox -title "Scid" -type ok \
          -icon warning -message $result
    } else {
      set ecoFile $fullname
      tk_messageBox -title "Scid: ECO file loaded." -type ok -icon info \
          -message "ECO file $fullname loaded: $result positions.\n\nTo have this file automatically loaded when you start Scid, select \"Save Options\" from the Options menu before exiting."
    }
  }
}
set helpMessage($m,[incr menuindex]) OptionsECO

$m add command -label OptionsSpell -command readSpellCheckFile
set helpMessage($m,[incr menuindex]) OptionsSpell

$m add command -label OptionsTable -command setTableBaseDir
set helpMessage($m,[incr menuindex]) OptionsTable
if {![sc_info tb]} { $m entryconfigure 15 -state disabled }

# setTableBaseDir:
#    Prompt user to select a tablebase file; all the files in its
#    directory will be used.
#
proc setTableBaseDir {} {
  global initialDir tempDir
  set ftype { { "Tablebase files" {".emd" ".nbw" ".nbb"} } }
  
  set w .tbDialog
  toplevel $w
  ::setTitle $w Scid
  label $w.title -text "Select up to 4 table base directories:"
  pack $w.title -side top
  foreach i {1 2 3 4} {
    set tempDir(tablebase$i) $initialDir(tablebase$i)
    pack [frame $w.f$i] -side top -pady 3 -fill x -expand yes
    entry $w.f$i.e -width 30 -textvariable tempDir(tablebase$i)
    bindFocusColors $w.f$i.e
    button $w.f$i.b -text "..." -pady 2 -command [list chooseTableBaseDir $i]
    pack $w.f$i.b -side right -padx 2
    pack $w.f$i.e -side left -padx 2 -fill x -expand yes
  }
  addHorizontalRule $w
  pack [frame $w.b] -side top -fill x
  button $w.b.ok -text "OK" \
      -command "catch {grab release $w; destroy $w}; openTableBaseDirs"
  button $w.b.cancel -text $::tr(Cancel) \
      -command "catch {grab release $w; destroy $w}"
  pack $w.b.cancel $w.b.ok -side right -padx 2
  bind $w <Escape> "$w.b.cancel invoke"
  wm resizable $w 1 0
  grab $w
}

proc openTableBaseDirs {} {
  global initialDir tempDir
  set tableBaseDirs ""
  foreach i {1 2 3 4} {
    set tbDir [string trim $tempDir(tablebase$i)]
    if {$tbDir != ""} {
      if {$tableBaseDirs != ""} { append tableBaseDirs ";" }
      append tableBaseDirs [file nativename $tbDir]
    }
  }
  
  set npieces [sc_info tb $tableBaseDirs]
  foreach i {1 2 3 4} {
    set initialDir(tablebase$i) $tempDir(tablebase$i)
  }
  if {$npieces == 0} {
    set msg "No tablebases were found."
  } else {
    set msg "Tablebases with up to $npieces pieces were found.\n\n"
    append msg "If you want these tablebases be used whenever\n"
    append msg "you start Scid, select \"Save Options\" from the\n"
    append msg "Options menu before you exit Scid."
  }
  tk_messageBox -type ok -icon info -title "Scid: Tablebase results" \
      -message $msg
  
}
proc chooseTableBaseDir {i} {
  global tempDir
  
  set ftype { { "Tablebase files" {".emd" ".nbw" ".nbb"} } }
  set idir $tempDir(tablebase$i)
  if {$idir == ""} { set idir [pwd] }
  
  set fullname [tk_getOpenFile -initialdir $idir -filetypes $ftype \
      -title "Scid: Select a Tablebase file"]
  if {$fullname == ""} { return }
  
  set tempDir(tablebase$i) [file dirname $fullname]
}

$m add command -label OptionsRecent -command ::recentFiles::configure
set helpMessage($m,[incr menuindex]) OptionsRecent

$m add command -label OptionsBooksDir -command setBooksDir
set helpMessage($m,[incr menuindex]) OptionsBooksDir

$m add command -label OptionsTacticsBasesDir -command setTacticsBasesDir
set helpMessage($m,[incr menuindex]) OptionsTacticsBasesDir

proc setBooksDir {} {
  global scidBooksDir
  set dir [tk_chooseDirectory -initialdir $scidBooksDir -mustexist 1]
  if {$dir == ""} {
    return
  } else {
    set scidBooksDir $dir
  }
}

proc setTacticsBasesDir {} {
  global scidBasesDir
  set dir [tk_chooseDirectory -initialdir $scidBasesDir -mustexist 1]
  if {$dir == ""} {
    return
  } else {
    set scidBasesDir $dir
  }
}

proc options.save {varname} {
  if {![info exist ::autosave_opt] || [lsearch -exact $::autosave_opt $varname] == -1} {
    lappend ::autosave_opt $varname
  }
}

$m add separator
incr menuindex

$m add command -label OptionsSave -command {
  set optionF ""
  if {[catch {open [scidConfigFile options] w} optionF]} {
    tk_messageBox -title "Scid: Unable to write file" -type ok -icon warning \
        -message "Unable to write options file: [scidConfigFile options]\n$optionF"
  } else {
    puts $optionF "# Scid options file"
    puts $optionF "# Version: $scidVersion"
    puts $optionF "# This file contains commands in the Tcl language format."
    puts $optionF "# If you edit this file, you must preserve valid its Tcl"
    puts $optionF "# format or it will not set your Scid options properly."
    puts $optionF ""
    foreach i {boardSize boardStyle language ::pgn::showColor \
          ::pgn::indentVars ::pgn::indentComments \
          ::pgn::shortHeader ::pgn::boldMainLine ::pgn::stripMarks \
          ::pgn::symbolicNags ::pgn::moveNumberSpaces ::pgn::columnFormat myPlayerNames \
          tree(order) tree(autoSave) optionsAutoSave ::tree::mask::recentMask \
          ecoFile suggestMoves showVarPopup showVarArrows glistSize glexport \
          blunderThreshold autoplayDelay animateDelay boardCoords boardSTM \
          moveEntry(AutoExpand) moveEntry(Coord) \
          translatePieces highlightLastMove highlightLastMoveWidth highlightLastMoveColor \
          askToReplaceMoves ::windows::switcher::vertical locale(numeric) \
          spellCheckFile ::splash::autoclose autoRaise autoIconify windowsDock showGameInfo autoLoadLayout \
          exportFlags(comments) exportFlags(vars) \
          exportFlags(indentc) exportFlags(indentv) \
          exportFlags(column) exportFlags(symbols) \
          exportFlags(htmldiag) exportFlags(convertNullMoves) \
          email(smtp) email(smproc) email(server) \
          email(from) email(bcc) \
          gameInfo(photos) gameInfo(hideNextMove) gameInfo(wrap) \
          gameInfo(fullComment) gameInfo(showMarks) \
          gameInfo(showMaterial) gameInfo(showFEN) gameInfo(showTB) \
          engineCoach1 engineCoach2 scidBooksDir scidBasesDir ::book::lastBook \
          ::utils::sound::soundFolder ::utils::sound::announceNew \
          ::utils::sound::announceForward ::utils::sound::announceBack \
          ::tacgame::threshold ::tacgame::blunderwarning ::tacgame::blunderwarningvalue \
          ::tacgame::levelMin  ::tacgame::levelMax  ::tacgame::levelFixed ::tacgame::randomLevel \
          ::tacgame::isLimitedAnalysisTime ::tacgame::showblunder ::tacgame::showblundervalue \
          ::tacgame::showblunderfound ::tacgame::showmovevalue ::tacgame::showevaluation \
          ::tacgame::isLimitedAnalysisTime ::tacgame::analysisTime ::tacgame::openingType ::tacgame::chosenOpening \
          ::sergame::chosenOpening ::sergame::chosenEngine ::sergame::useBook ::sergame::bookToUse \
          ::sergame::startFromCurrent ::sergame::coachIsWatching ::sergame::timeMode \
          ::sergame::depth ::sergame::movetime ::sergame::nodes ::sergame::ponder ::sergame::isOpening \
          ::uci::uciInfo(wtime3) ::uci::uciInfo(winc3) ::uci::uciInfo(btime3) ::uci::uciInfo(binc3) \
			 ::commenteditor::showboard \
          boardfile_lite boardfile_dark \
          FilterMaxMoves FilterMinMoves FilterStepMoves FilterMaxElo FilterMinElo FilterStepElo \
          FilterMaxYear FilterMinYear FilterStepYear FilterGuessELO lookTheme autoResizeBoard } {
      puts $optionF "set $i [list [set $i]]"
    }
    
    puts $optionF ""
    foreach i [lsort [array names winWidth]] {
      puts $optionF "set winWidth($i)  [expr $winWidth($i)]"
      puts $optionF "set winHeight($i) [expr $winHeight($i)]"
    }
    puts $optionF ""
    foreach i [lsort [array names winX]] {
      puts $optionF "set winX($i)  [expr $winX($i)]"
      puts $optionF "set winY($i)  [expr $winY($i)]"
    }
    puts $optionF ""
    foreach i [lsort [array names winWidth_docked]] {
      puts $optionF "set winWidth_docked($i)  [expr $winWidth_docked($i)]"
      puts $optionF "set winHeight_docked($i) [expr $winHeight_docked($i)]"
    }
    puts $optionF ""
    foreach i [lsort [array names winX_docked]] {
      puts $optionF "set winX_docked($i)  [expr $winX_docked($i)]"
      puts $optionF "set winY_docked($i)  [expr $winY_docked($i)]"
    }
    puts $optionF ""
    puts $optionF "set analysisCommand [list $analysisCommand]"
    puts $optionF "set analysisChoices [list $analysisChoices]"
    puts $optionF ""
    foreach i {lite dark whitecolor blackcolor highcolor bestcolor \
          whiteborder blackborder borderwidth \
          pgnColor(Header) pgnColor(Main) pgnColor(Var) \
          pgnColor(Nag) pgnColor(Comment) pgnColor(Background) \
          pgnColor(Current) pgnColor(NextMove) } {
      puts $optionF "set $i [list [set $i]]"
    }
    puts $optionF ""
    foreach i [lsort [array names optable]] {
      puts $optionF "set optable($i) [list $optable($i)]"
    }
    foreach i [lsort [array names ::windows::stats::display]] {
      puts $optionF "set ::windows::stats::display($i) [list $::windows::stats::display($i)]"
    }
    foreach i [lsort [array names startup]] {
      puts $optionF "set startup($i) [list $startup($i)]"
    }
    foreach i [lsort [array names toolbar]] {
      puts $optionF "set toolbar($i) [list $toolbar($i)]"
    }
    foreach i [lsort [array names twinSettings]] {
      puts $optionF "set twinSettings($i) [list $twinSettings($i)]"
    }
    puts $optionF ""
    foreach i {Regular Menu Small Tiny Fixed} {
      puts $optionF "set fontOptions($i) [list $fontOptions($i)]"
    }
    puts $optionF ""
    puts $optionF "set glistFields [list $glistFields]"
    foreach type {base book html tex epd stm pgn report tablebase1 tablebase2 tablebase3 tablebase4} {
      puts $optionF "set initialDir($type) [list $initialDir($type)]"
    }
    puts $optionF ""
    foreach type {PGN HTML LaTeX} {
      puts $optionF "set exportStartFile($type) [list $exportStartFile($type)]"
      puts $optionF "set exportEndFile($type) [list $exportEndFile($type)]"
    }
    puts $optionF ""
    foreach i [lsort [array names informant]] {
      puts $optionF "set informant($i) [list $informant($i)]"
    }
    puts $optionF ""
    
    # save FICS config
    foreach i { use_timeseal timeseal_exec port_fics port_timeseal login password usedefaultvars \
          consolebg consolefg consoleheight consolewidth colseeking colgame colgameresult colficspercent server_ip } {
      puts $optionF "set ::fics::$i [list [set ::fics::$i]]"
    }
    foreach i [lsort [array names ::fics::profileVars]] {
      puts $optionF "set ::fics::profileVars($i) [list $::fics::profileVars($i)]"
    }

    # save pinfo config
    foreach i { wikipurl dnburl SeeAlsoPND2WP wikipAPI} {
      puts $optionF "set ::pinfo::$i [list [set ::pinfo::$i]]"
    }
    
    # save NOVAG config
    foreach i { referee } {
      puts $optionF "set ::novag::$i [list [set ::novag::$i]]"
    }
    
    # Save layouts
    foreach slot {1 2 3} {
      puts $optionF "set ::docking::layout_list($slot) [list $::docking::layout_list($slot)]"
    }
    
    # Save tactics (find best move history)
    foreach i [lsort [array names ::tactics::findBestMove_History]] {
        puts $optionF "set ::tactics::findBestMove_History($i) [list $::tactics::findBestMove_History($i)]"
    }

    # Save var that was added with options.save()
    if {[info exist ::autosave_opt]} {
      puts $optionF ""
      puts $optionF "set ::autosave_opt [list $::autosave_opt]"
      foreach {var} $::autosave_opt {
        upvar #0 $var a
        puts $optionF "set $var [list $a]"
      }
    }
    
    close $optionF
    set ::statusBar "Options were saved to: [scidConfigFile options]"
  }
}
set helpMessage($m,[incr menuindex]) OptionsSave

$m add checkbutton -label OptionsAutoSave -variable optionsAutoSave
set helpMessage($m,[incr menuindex]) OptionsAutoSave

menu $m.ginfo
$m.ginfo add checkbutton -label GInfoHideNext \
    -variable gameInfo(hideNextMove) -offvalue 0 -onvalue 1 -command updateBoard
$m.ginfo add checkbutton -label GInfoMaterial \
    -variable gameInfo(showMaterial) -offvalue 0 -onvalue 1 -command toggleShowMaterial
$m.ginfo add checkbutton -label GInfoFEN \
    -variable gameInfo(showFEN) -offvalue 0 -onvalue 1 -command updateBoard
$m.ginfo add checkbutton -label GInfoMarks \
    -variable gameInfo(showMarks) -offvalue 0 -onvalue 1 -command updateBoard
$m.ginfo add checkbutton -label GInfoWrap \
    -variable gameInfo(wrap) -offvalue 0 -onvalue 1 -command updateBoard
$m.ginfo add checkbutton -label GInfoFullComment \
    -variable gameInfo(fullComment) -offvalue 0 -onvalue 1 -command updateBoard
$m.ginfo add checkbutton -label GInfoPhotos \
    -variable gameInfo(photos) -offvalue 0 -onvalue 1 \
    -command {updatePlayerPhotos -force}
$m.ginfo add separator
$m.ginfo add radiobutton -label GInfoTBNothing \
    -variable gameInfo(showTB) -value 0 -command updateBoard
$m.ginfo add radiobutton -label GInfoTBResult \
    -variable gameInfo(showTB) -value 1 -command updateBoard
$m.ginfo add radiobutton -label GInfoTBAll \
    -variable gameInfo(showTB) -value 2 -command updateBoard
$m.ginfo add separator
$m.ginfo add command -label GInfoInformant -command configInformant

menu $m.entry
$m.entry add checkbutton -label OptionsMovesAsk \
    -variable askToReplaceMoves -offvalue 0 -onvalue 1
set helpMessage($m.entry,0) OptionsMovesAsk \
    
$m.entry add cascade -label OptionsMovesAnimate -menu $m.entry.animate
menu $m.entry.animate
foreach i {0 100 150 200 250 300 400 500 600 800 1000} {
  $m.entry.animate add radiobutton -label "$i ms" \
      -variable animateDelay -value $i
}
set helpMessage($m.entry,1) OptionsMovesAnimate

$m.entry add command -label OptionsMovesDelay -command setAutoplayDelay
set helpMessage($m.entry,2) OptionsMovesDelay

$m.entry add checkbutton -label OptionsMovesCoord \
    -variable moveEntry(Coord) -offvalue 0 -onvalue 1
set helpMessage($m.entry,3) OptionsMovesCoord

$m.entry add checkbutton -label OptionsMovesKey \
    -variable moveEntry(AutoExpand) -offvalue 0 -onvalue 1
set helpMessage($m.entry,4) OptionsMovesKey

$m.entry add checkbutton -label OptionsMovesSuggest \
    -variable suggestMoves -offvalue 0 -onvalue 1
set helpMessage($m.entry,5) OptionsMovesSuggest

$m.entry add checkbutton -label OptionsShowVarPopup \
    -variable showVarPopup -offvalue 0 -onvalue 1
set helpMessage($m.entry,6) OptionsShowVarPopup

$m.entry add checkbutton -label OptionsMovesSpace \
    -variable ::pgn::moveNumberSpaces -offvalue 0 -onvalue 1
set helpMessage($m.entry,7) OptionsMovesSpace

$m.entry add checkbutton -label OptionsMovesTranslatePieces \
    -variable ::translatePieces -offvalue 0 -onvalue 1 -command setLanguage
set helpMessage($m.entry,8) OptionsMovesTranslatePieces

menu $m.entry.highlightlastmove
$m.entry add cascade -label OptionsMovesHighlightLastMove -menu  $m.entry.highlightlastmove
$m.entry.highlightlastmove add checkbutton -label OptionsMovesHighlightLastMoveDisplay -variable ::highlightLastMove -command updateBoard
menu $m.entry.highlightlastmove.width
$m.entry.highlightlastmove add cascade -label OptionsMovesHighlightLastMoveWidth -menu $m.entry.highlightlastmove.width
foreach i {1 2 3 4 5} {
  $m.entry.highlightlastmove.width add radiobutton -label $i -value $i -variable ::highlightLastMoveWidth -command updateBoard
}
# menu $m.entry.highlightlastmove.pattern
# $m.entry.highlightlastmove add cascade -label OptionsMovesHighlightLastMovePattern -menu $m.entry.highlightlastmove.pattern
# foreach i {"plain" "." "-" "-." "-.." ". " "," ".  "} j { "" "." "-" "-." "-.." ". " "," ".  "} {
# $m.entry.highlightlastmove.pattern add radiobutton -label $i -value $j -variable ::highlightLastMovePattern -command updateBoard
# }
$m.entry.highlightlastmove add command -label OptionsMovesHighlightLastMoveColor -command {
  set col [ tk_chooseColor -initialcolor $::highlightLastMoveColor -title "Scid"]
  if { $col != "" } {
    set ::highlightLastMoveColor $col
    updateBoard
  }
}
set helpMessage($m.entry,9) OptionsMovesHighlightLast

$m.entry add checkbutton -label OptionsMovesShowVarArrows \
    -variable showVarArrows -offvalue 0 -onvalue 1
set helpMessage($m.entry,10) OptionsMovesShowVarArrows

proc updateLocale {} {
  global locale
  sc_info decimal $locale(numeric)
  ::windows::gamelist::Refresh
  updateTitle
}

set m .menu.options.numbers
menu $m
foreach numeric {".,"   ". "   "."   ",."   ", "   ","} \
    underline {  0     1      2     4      5      6} {
      set decimal [string index $numeric 0]
      set thousands [string index $numeric 1]
      $m add radiobutton -label "12${thousands}345${decimal}67" \
      -underline $underline \
      -variable locale(numeric) -value $numeric -command updateLocale
    }

set m .menu.options.export
menu $m
foreach format {PGN HTML LaTeX} {
  $m add command -label "$format file text" -underline 0 \
      -command "setExportText $format"
}

set m .menu.options.windows
menu $m
$m add checkbutton -label OptionsWindowsIconify -variable autoIconify
set helpMessage($m,0) OptionsWindowsIconify
$m add checkbutton -label OptionsWindowsRaise -variable autoRaise
set helpMessage($m,1) OptionsWindowsRaise
$m add checkbutton -label OptionsWindowsDock -variable windowsDock
set helpMessage($m,2) OptionsWindowsDock
$m add checkbutton -label OptionsWindowsShowGameInfo -variable showGameInfo -command ::toggleGameInfo
set helpMessage($m,3) OptionsShowGameInfo

if { $::docking::USE_DOCKING } {
  set state "normal"
} else  {
  set state "disabled"
}
$m add checkbutton -label OptionsWindowsAutoLoadLayout -variable autoLoadLayout -state $state
set helpMessage($m,4) OptionsWindowsAutoLoadLayout

if {$::docking::USE_DOCKING} {
  menu $m.savelayout
  menu $m.restorelayout
  foreach i {"1 (default)" "2" "3"} slot {1 2 3} {
    $m.savelayout add command -label $i -command "::docking::layout_save $slot"
    $m.restorelayout add command -label $i -command "::docking::layout_restore $slot"
  }
  $m add cascade -label OptionsWindowsSaveLayout -menu $m.savelayout
  set helpMessage($m,5) OptionsWindowsSaveLayout
  $m add cascade -label OptionsWindowsRestoreLayout -menu $m.restorelayout
  set helpMessage($m,6) OptionsWindowsRestoreLayout
}

set m .menu.options.theme
menu $m
foreach i [ttk::style theme names] {
  $m add radiobutton -label "$i" -value $i -variable ::lookTheme -command {ttk::style theme use $::lookTheme}
}

menu .menu.options.language

set m .menu.options.fonts
menu $m

$m add command -label OptionsFontsRegular -underline 0 -command {
  set fontOptions(temp) [FontDialog font_Regular $fontOptions(Regular)]
  if {$fontOptions(temp) != ""} { set fontOptions(Regular) $fontOptions(temp) }
  set font [font configure font_Regular -family]
  set fontsize [font configure font_Regular -size]
  font configure font_Bold -family $font -size $fontsize
  font configure font_Italic -family $font -size $fontsize
  font configure font_BoldItalic -family $font -size $fontsize
  font configure font_H1 -family $font -size [expr {$fontsize + 8} ]
  font configure font_H2 -family $font -size [expr {$fontsize + 6} ]
  font configure font_H3 -family $font -size [expr {$fontsize + 4} ]
  font configure font_H4 -family $font -size [expr {$fontsize + 2} ]
  font configure font_H5 -family $font -size [expr {$fontsize + 0} ]
}
set helpMessage($m,0) OptionsFontsRegular

$m add command -label OptionsFontsMenu -underline 0 -command {
  set fontOptions(temp) [FontDialog font_Menu $fontOptions(Menu)]
  if {$fontOptions(temp) != ""} { set fontOptions(Menu) $fontOptions(temp) }
}
set helpMessage($m,1) OptionsFontsMenu

$m add command -label OptionsFontsSmall -underline 0 -command {
  set fontOptions(temp) [FontDialog font_Small $fontOptions(Small)]
  if {$fontOptions(temp) != ""} { set fontOptions(Small) $fontOptions(temp) }
  set font [font configure font_Small -family]
  set fontsize [font configure font_Small -size]
  font configure font_SmallBold -family $font -size $fontsize
  font configure font_SmallItalic -family $font -size $fontsize
}
set helpMessage($m,2) OptionsFontsSmall

$m add command -label OptionsFontsTiny -underline 0 -command {
  set fontOptions(temp) [FontDialog font_Tiny $fontOptions(Tiny) 1]
  if {$fontOptions(temp) != ""} { set fontOptions(Tiny) $fontOptions(temp) }
}
set helpMessage($m,3) OptionsFontsTiny

$m add command -label OptionsFontsFixed -underline 0 -command {
  set fontOptions(temp) [FontDialog font_Fixed $fontOptions(Fixed) 1]
  if {$fontOptions(temp) != ""} { set fontOptions(Fixed) $fontOptions(temp) }
}
set helpMessage($m,4) OptionsFontsFixed

# The windows that are not dockable are always configurable for auto start
set m .menu.options.startup
menu $m
if { $::docking::USE_DOCKING } {
  set state "disabled"
} else  {
  set state "normal"
}
$m add checkbutton -label HelpTip -variable startup(tip)
$m add checkbutton -label ToolsCross -variable startup(crosstable)
$m add checkbutton -label WindowsSwitcher -variable startup(switcher) -state $state
$m add checkbutton -label FileFinder -variable startup(finder)
$m add checkbutton -label WindowsGList -variable startup(gamelist) -state $state
$m add checkbutton -label WindowsPGN -variable startup(pgn) -state $state
$m add checkbutton -label WindowsStats -variable startup(stats)
$m add checkbutton -label WindowsTree -variable startup(tree) -state $state
$m add checkbutton -label WindowsBook -variable startup(book) -state $state

set m .menu.options.board
menu $m

# Menu for changing board size:
$m add cascade -label OptionsBoardSize -menu $m.bdsize
set helpMessage($m,0) OptionsBoardSize

$m add cascade -label OptionsBoardPieces -menu $m.pieces
set helpMessage($m,1) OptionsBoardPieces

$m add command -label OptionsBoardColors -command chooseBoardColors
set helpMessage($m,2) OptionsBoardColors

#Klimmek: Menu for selecting chessboard textures
# $m add command -label OptionsBoardGraphics -command chooseBoardTextures
# set helpMessage($m,3) OptionsBoardGraphics

$m add separator

$m add command -label OptionsBoardNames -command editMyPlayerNames
set helpMessage($m,4) OptionsBoardNames

menu $m.bdsize
set count 0

foreach i $boardSizes {
  incr count
  set underline -1
  if {$count < 10} {set underline 0}
  if {$count == 10} {set underline 1}
  # PG : dirty workaround !
  $m.bdsize add radio -label $count -variable boardSize -value $i -underline $underline -command "::board::resize2 .main.board $i "
  unset underline
}

# Shortcut keys for changing board size:

bind $dot_w <Control-Shift-Left>  decreaseBoardSize
bind $dot_w <Control-Shift-Right> increaseBoardSize

proc decreaseBoardSize {} {
  global boardSize
  set boardSize [::board::resize2 .main.board -1]
}

proc increaseBoardSize {} {
  global boardSize
  set boardSize [::board::resize2 .main.board +1]
}

# Menu for changing Piece set:
menu $m.pieces
foreach i $boardStyles {
  $m.pieces add radio -label $i \
      -variable boardStyle -value $i \
      -underline 0 -command "setPieceFont $i"
}

### Help menu:
set menuindex -1
set m .menu.helpmenu
# On Mac use accelerator "Command-?" for Help:
if { $macOS } {
  $m add command -label HelpContents -command {helpWindow Contents} -accelerator "Command-?"
  
} else {
  $m add command -label HelpContents -command {helpWindow Contents} -accelerator "F1"
}
set helpMessage($m,[incr menuindex]) HelpContents
$m add command -label HelpIndex -command {helpWindow Index}
set helpMessage($m,[incr menuindex]) HelpIndex
$m add command -label HelpGuide -command {helpWindow Guide}
set helpMessage($m,[incr menuindex]) HelpGuide
$m add command -label HelpHints -command {helpWindow Hints}
set helpMessage($m,[incr menuindex]) HelpHints
$m add command -label HelpContact -command {helpWindow Author}
set helpMessage($m,[incr menuindex]) HelpContact
$m add separator
incr menuindex
$m add command -label HelpTip -command ::tip::show
set helpMessage($m,[incr menuindex]) HelpTip
$m add command -label HelpStartup -command {
  wm deiconify .splash
  raiseWin .splash
}
set helpMessage($m,[incr menuindex]) HelpStartup

$m add separator
incr menuindex

$m  add command -label HelpAbout -command helpAbout
set helpMessage($m,[incr menuindex]) HelpAbout

bind $dot_w <F1> {helpWindow Contents}

##################################################

# updateMenuStates:
#   Update all the menus, rechecking which state each item should be in.
#
proc updateMenuStates {} {
  global totalBaseSlots windowsOS
  set ::currentSlot [sc_base current]
  set lang $::language
  set m .menu
  for {set i 1} { $i <= $totalBaseSlots } { incr i } {
    set fname [file tail [sc_base filename $i]]
    $m.file.switch entryconfig [expr {$i - 1} ] -label "Base $i: $fname"
  }
  foreach i {Compact Delete} {
    $m.file.utils entryconfig [tr FileMaint$i] -state disabled
  }
  foreach i {Player Event Site Round} {
    $m.file.utils.name entryconfig [tr FileMaintName$i] -state disabled
  }
  
  $m.file entryconfig [tr FileReadOnly] -state disabled
  
  # update recent Tree list (open base as Tree)
  set ntreerecent [::recentFiles::treeshow .menu.file.recenttrees]
  
  # Remove and reinsert the Recent files list and Exit command:
  set idx 13
  $m.file delete $idx end
  set nrecent [::recentFiles::show $m.file]
  if {$nrecent > 0} {
    $m.file add separator
  }
  set idx [$m.file index end]
  incr idx
  $m.file add command -label [tr FileExit] -accelerator "Ctrl+Q" \
      -command ::file::Exit
  set helpMessage($m.file,$idx) FileExit
  
  # Configure File menu entry states::
  if {[sc_base inUse]} {
    set isReadOnly [sc_base isReadOnly]
    $m.file entryconfig [tr FileClose] -state normal
    if {! $isReadOnly} {
      $m.file.utils entryconfig [tr FileMaintDelete] -state normal
      $m.file.utils entryconfig [tr FileMaintName] -state normal
      foreach i {Player Event Site Round} {
        $m.file.utils.name entryconfig [tr FileMaintName$i] -state normal
      }
      $m.file entryconfig [tr FileReadOnly] -state normal
    }
    
    # Load first/last/random buttons:
    set filtercount [sc_filter count]
    if {$filtercount == 0} {set state disabled} else {set state normal}
    $m.game entryconfig [tr GameFirst] -state $state
    $m.game entryconfig [tr GameLast] -state $state
    $m.game entryconfig [tr GameRandom] -state $state
    
    # Load previous button:
    if {[sc_filter previous]} {set state normal} else {set state disabled}
    $m.game entryconfig [tr GamePrev] -state $state
    .main.tb.gprev configure -state $state
    
    # Reload button:
    if {[sc_game number]} {set state normal} else {set state disabled}
    $m.game entryconfig [tr GameReload] -state $state
    
    # Load next button:
    if {[sc_filter next]} {set state normal} else {set state disabled}
    $m.game entryconfig [tr GameNext] -state $state
    .main.tb.gnext configure -state $state
    
    $m.game entryconfig [tr GameNumber] -state normal
    
    # Save add button:
    set state normal
    if {$isReadOnly  ||  $::trialMode} {set state disabled}
    $m.game entryconfig [tr GameAdd] -state $state
    
    # Save replace button:
    set state normal
    if {[sc_game number] == 0  ||  $isReadOnly  ||  $::trialMode} {
      set state disabled
    }
    $m.game entryconfig [tr GameReplace] -state $state
    
    # Searching:
    foreach i {Reset Negate} {
      $m.search entryconfig [tr Search$i] -state normal
    }
    #$m.windows entryconfig [tr WindowsTree] -state normal
    
    # Tools:
    $m.tools entryconfig [tr ToolsEmail] -state normal
    $m.tools entryconfig [tr ToolsOpReport] -state normal
    $m.tools entryconfig [tr ToolsPlayerReport] -state normal
    
  } else {
    # Base is not in use:
    $m.file entryconfig [tr FileClose] -state disabled
    
    foreach i {First Prev Reload Next Last Random Number Replace Add} {
      $m.game entryconfig [tr Game$i] -state disabled
    }
    .main.tb.gprev configure -state disabled
    .main.tb.gnext configure -state disabled
    
    # search:
    foreach i {Reset Negate} {
      $m.search entryconfig [tr Search$i] -state disabled
    }
    #$m.windows entryconfig [tr WindowsTree] -state disabled
    
    # tools:
    $m.tools entryconfig [tr ToolsEmail] -state disabled
    $m.tools entryconfig [tr ToolsOpReport] -state disabled
    $m.tools entryconfig [tr ToolsPlayerReport] -state disabled
  }
  
  if {[sc_base numGames] == 0} {
    $m.tools entryconfig [tr ToolsExpFilter] -state disabled
  } else {
    $m.tools entryconfig [tr ToolsExpFilter] -state normal
  }
  
  set state disabled
  if {[baseIsCompactable]} { set state normal }
  $m.file.utils entryconfig [tr FileMaintCompact] -state $state
  
  ::search::Config
  ::windows::switcher::Refresh
  ::maint::Refresh
  ::bookmarks::Refresh
}


##############################
#
# Multiple-language menu support functions.

# configMenuText:
#    Reconfigures the main window menus. Called when the language is changed.
#
proc configMenuText {menu entry tag lang} {
  global menuLabel menuUnder
  if {[info exists menuLabel($lang,$tag)] && [info exists menuUnder($lang,$tag)]} {
    $menu entryconfig $entry -label $menuLabel($lang,$tag) -underline $menuUnder($lang,$tag)
  } else {
    $menu entryconfig $entry -label $menuLabel(E,$tag) -underline $menuUnder(E,$tag)
  }
}

proc setLanguageMenus {{lang ""}} {
  global menuLabel menuUnder oldLang
  
  if {$lang == ""} {set lang $::language}
  
  foreach tag { ToolsSeriousGame CorrespondenceChess ToolsTraining ToolsTacticalGame ToolsTrainFics} {
    configMenuText .menu.play [tr $tag $oldLang] $tag $lang
  }
  
  foreach tag {TrainOpenings TrainTactics TrainCalvar TrainFindBestMove TrainReviewGame } {
    configMenuText .menu.play.training [tr Tools$tag $oldLang] Tools$tag $lang
  }
  
  foreach tag { CCConfigure CCConfigRelay CCOpenDB CCRetrieve CCInbox \
        CCSend CCResign CCClaimDraw CCOfferDraw CCAcceptDraw   \
        CCNewMailGame CCMailMove CCGamePage } {
    configMenuText .menu.play.correspondence [tr $tag $oldLang] $tag $lang
  }
  
  foreach tag {File Edit Game Search Play Windows Tools Options Help} {
    configMenuText .menu [tr $tag $oldLang] $tag $lang
  }
  
  foreach tag {New Open Close Finder Bookmarks Maint ReadOnly Switch Exit} {
    configMenuText .menu.file [tr File$tag $oldLang] File$tag $lang
  }
  
  # open base as tree was moved from tools to file menus
  foreach tag { ToolsOpenBaseAsTree ToolsOpenRecentBaseAsTree } {
    configMenuText .menu.file [tr $tag $oldLang] $tag $lang
  }
  
  foreach tag {Win Compact Delete Twin Class Sort Name FixBase} {
    configMenuText .menu.file.utils [tr FileMaint$tag $oldLang] \
        FileMaint$tag $lang
  }
  foreach tag {Editor Player Event Site Round} {
    configMenuText .menu.file.utils.name [tr FileMaintName$tag $oldLang] \
        FileMaintName$tag $lang
  }
  foreach tag {Add Delete First Main Trial Strip Reset Copy Paste PastePGN Setup Undo
    CopyBoard PasteBoard} {
    configMenuText .menu.edit [tr Edit$tag $oldLang] Edit$tag $lang
  }
  foreach tag {Comments Vars Begin End} {
    configMenuText .menu.edit.strip [tr EditStrip$tag $oldLang] \
        EditStrip$tag $lang
  }
  foreach tag {New First Prev Reload Next Last Random Number
    Replace Add Deepest GotoMove Novelty} {
    configMenuText .menu.game [tr Game$tag $oldLang] Game$tag $lang
  }
  foreach tag {Reset Negate Material Current Header Using} {
    configMenuText .menu.search [tr Search$tag $oldLang] Search$tag $lang
  }
  
  foreach tag {Comment GList PGN PList Tmt Switcher Maint ECO Repertoire Stats Tree TB Book CorrChess } {
    configMenuText .menu.windows [tr Windows$tag $oldLang] Windows$tag $lang
  }
  
  foreach tag {Analysis Analysis2 Cross Email FilterGraph AbsFilterGraph OpReport Tracker
    Rating Score ExpCurrent ExpFilter ImportOne ImportFile StartEngine1 StartEngine2 BookTuning
    PInfo PlayerReport ConnectHardware CaptureBoard} {
    configMenuText .menu.tools [tr Tools$tag $oldLang] Tools$tag $lang
  }
  
  .menu.tools.pinfo entryconfigure 0 -label $::tr(White)
  .menu.tools.pinfo entryconfigure 1 -label $::tr(Black)
  foreach tag {ToolsExpCurrentPGN ToolsExpCurrentHTML ToolsExpCurrentHTMLJS ToolsExpCurrentLaTeX} {
    configMenuText .menu.tools.exportcurrent [tr $tag $oldLang] $tag $lang
  }
  foreach tag {ToolsExpFilterPGN ToolsExpFilterHTML ToolsExpFilterHTMLJS ToolsExpFilterLaTeX} {
    configMenuText .menu.tools.exportfilter [tr $tag $oldLang] $tag $lang
  }
  foreach tag {Board Export Fonts GInfo Language Moves Numbers
    Startup Sounds Toolbar Windows Theme ECO Spell Table BooksDir TacticsBasesDir Recent Save AutoSave} {
    configMenuText .menu.options [tr Options$tag $oldLang] Options$tag $lang
  }
  
  foreach tag { Configure NovagCitrineConnect InputEngineConnect  } {
    configMenuText .menu.tools.hardware [tr ToolsConnectHardware$tag $oldLang] ToolsConnectHardware$tag $lang
  }
  
  foreach tag {Regular Menu Small Tiny Fixed} {
    configMenuText .menu.options.fonts [tr OptionsFonts$tag $oldLang] \
        OptionsFonts$tag $lang
  }
  foreach tag {Size Pieces Colors Names} {
    configMenuText .menu.options.board [tr OptionsBoard$tag $oldLang] \
        OptionsBoard$tag $lang
  }
  foreach tag {HideNext Material FEN Marks Wrap FullComment Photos \
        TBNothing TBResult TBAll Informant} {
    configMenuText .menu.options.ginfo [tr GInfo$tag $oldLang] \
        GInfo$tag $lang
  }
  configMenuText .menu.options.entry [tr OptionsShowVarPopup $oldLang] OptionsShowVarPopup $lang
  foreach tag {Ask Animate Delay Suggest Key Coord Space TranslatePieces HighlightLastMove ShowVarArrows } {
    configMenuText .menu.options.entry [tr OptionsMoves$tag $oldLang] \
        OptionsMoves$tag $lang
  }
  
  foreach tag { Color Width Display } {
    configMenuText .menu.options.entry.highlightlastmove [tr OptionsMovesHighlightLastMove$tag $oldLang] OptionsMovesHighlightLastMove$tag $lang
  }
  
  foreach tag {HelpTip WindowsSwitcher WindowsPGN WindowsTree FileFinder \
        ToolsCross WindowsGList WindowsStats WindowsBook} {
    configMenuText .menu.options.startup [tr $tag $oldLang] $tag $lang
  }
  
  foreach tag {Iconify Raise Dock ShowGameInfo AutoLoadLayout} {
    configMenuText .menu.options.windows [tr OptionsWindows$tag $oldLang] \
        OptionsWindows$tag $lang
  }
  if {$::docking::USE_DOCKING} {
    foreach tag {SaveLayout RestoreLayout} {
      configMenuText .menu.options.windows [tr OptionsWindows$tag $oldLang] \
          OptionsWindows$tag $lang
    }
  }
  foreach tag {Contents Index Guide Hints Contact Tip Startup About} {
    configMenuText .menu.helpmenu [tr Help$tag $oldLang] Help$tag $lang
  }
  
  if { $::macOS } {
    foreach tag {About} {
      configMenuText .menu.apple [tr Help$tag $oldLang] Help$tag $lang
    }
  }
  
  
  foreach tag {HideNext Material FEN Marks Wrap FullComment Photos \
        TBNothing TBResult TBAll Delete Mark} {
    configMenuText .main.gameInfo.menu [tr GInfo$tag $oldLang] GInfo$tag $lang
  }
  
  updateGameInfoMenu
  
  ::pgn::ConfigMenus
  ::windows::stats::ConfigMenus
  ::tree::ConfigMenus
  ::crosstab::ConfigMenus
  ::optable::ConfigMenus
  ::preport::ConfigMenus
  ::tourney::ConfigMenus
  
  # Check for duplicate menu underline characters in this language:
  # set ::verifyMenus 1
  if {[info exists ::verifyMenus] && $::verifyMenus} {
    foreach m {file edit game search windows tools options help} {
      set list [checkMenuUnderline .menu.$m]
      if {[llength $list] > 0} {
        puts stderr "Menu $m has duplicate underline letters: $list"
      }
    }
  }
}
################################################################################
# updates the contextual game info menu.
# used when custom flags description change
################################################################################
proc updateGameInfoMenu {} {
  set i 0
  foreach flag $::maintFlaglist {
    if {$i < 12} {
      .main.gameInfo.menu.mark entryconfigure $i -label "$::tr($::maintFlags($flag)) ($flag)"
    } else  {
      set tmp [sc_game flag $flag description]
      if {$tmp == "" } { set tmp $::maintFlags($flag) }
      .main.gameInfo.menu.mark entryconfigure $i -label "$tmp ($flag)"
    }
    incr i
  }
}
################################################################################
# checkMenuUnderline:
#  Given a menu widget, returns a list of all the underline
#  characters that appear more than once.
################################################################################
proc checkMenuUnderline {menu} {
  array set found {}
  set duplicates {}
  set last [$menu index last]
  for {set i [$menu cget -tearoff]} {$i <= $last} {incr i} {
    if {[string equal [$menu type $i] "separator"]} {
      continue
    }
    set char [string index [$menu entrycget $i -label] \
        [$menu entrycget $i -underline]]
    set char [string tolower $char]
    if {$char == ""} {
      continue
    }
    if {[info exists found($char)]} {
      lappend duplicates $char
    }
    set found($char) 1
  }
  return $duplicates
}

# standardShortcuts:
#    Sets up a number of standard shortcut keys for the specified window.
#
proc standardShortcuts {w} {
  if {! [winfo exists $w]} { return }
  
  # Global shortcuts for docked mode
  if { $::docking::USE_DOCKING } {
    bind $w <F1> {helpWindow Contents}
    bind $w <period> {if {!$tree(refresh)} {toggleRotateBoard}}
    bind $w <Control-N> nameEditor
    bind $w <Control-a> {sc_var create; updateBoard -pgn}
    bind $w <Control-space> { setTrialMode toggle }
    bind $w <Control-D> {sc_move ply [sc_eco game ply]; updateBoard}
    bind $w <Control-u> ::game::GotoMoveNumber
    bind $w <Control-Y> findNovelty
    bind $w <Control-F> ::search::filter::negate
    bind $w <Control-p> ::pgn::OpenClose
    bind $w <Control-P> ::plist::toggle
    bind $w <Control-T> ::tourney::toggle
    bind $w <Control-y> ::windows::eco::OpenClose
    bind $w <Control-equal> ::tb::Open
    bind $w <Control-G> tools::graphs::filter::Open
    bind $w <Control-J> tools::graphs::absfilter::Open
    bind $w <Control-O> ::optable::makeReportWin
    bind $w <Control-K> ::ptrack::make
    bind $w <F11> { if {[wm attributes . -fullscreen]} { wm attributes . -fullscreen 0} else { wm attributes . -fullscreen 1} }
  }

  bind $w <Control-z> {  sc_game undo ; updateBoard -pgn }
  bind $w <exclam><Return> "sc_pos addNag !; updateBoard -pgn"
  bind $w <exclam><exclam><Return> "sc_pos addNag !!; updateBoard -pgn"
  bind $w <exclam><question><Return> "sc_pos addNag !?; updateBoard -pgn"
  bind $w <question><Return> "sc_pos addNag ?; updateBoard -pgn"
  bind $w <question><question><Return> "sc_pos addNag ??; updateBoard -pgn"
  bind $w <question><exclam><Return> "sc_pos addNag ?!; updateBoard -pgn"
  
  bind $w <plus><minus> "sc_pos addNag +-; updateBoard -pgn"
  bind $w <plus><slash> "sc_pos addNag +/-; updateBoard -pgn"
  bind $w <plus><equal> "sc_pos addNag +=; updateBoard -pgn"
  bind $w <equal><Return> "sc_pos addNag =; updateBoard -pgn"
  bind $w <minus><plus> "sc_pos addNag -+; updateBoard -pgn"
  bind $w <minus><slash> "sc_pos addNag -/+; updateBoard -pgn"
  bind $w <equal><plus> "sc_pos addNag =+; updateBoard -pgn"
  bind $w <asciitilde><Return> "sc_pos addNag ~; updateBoard -pgn"
  bind $w <asciitilde><equal><Return> "sc_pos addNag ~=; updateBoard -pgn"
  bind $w <minus><minus> "addMove null null"

  bind $w <Control-c> {catch {sc_clipbase copy}; ::updateBoard}
  bind $w <Control-d> ::windows::switcher::Open
  bind $w <Control-e> makeCommentWin
  bind $w <Control-f> ::search::filter::reset
  bind $w <Control-g> ::game::LoadNumber
  bind $w <Control-i> ::windows::stats::Open
  bind $w <Control-l> ::windows::gamelist::Open
  bind $w <Control-m> ::maint::OpenClose
  bind $w <Control-n> ::file::New
  bind $w <Control-o> ::file::Open
  bind $w <Control-p> ::pgn::OpenClose
  bind $w <Control-q> ::file::Exit
  bind $w <Control-r> ::gameReplace
  bind $w <Control-s> ::gameAdd
  bind $w <Control-t> ::tree::make
  bind $w <Control-v> {catch {sc_clipbase paste}; ::updateBoard -pgn}
  bind $w <Control-w> ::file::Close
  bind $w <Control-x> ::game::Clear
  
  bind $w <Control-A> makeAnalysisWin
  bind $w <Control-Shift-2>  "makeAnalysisWin 2"
  bind $w <Control-B> ::search::board
  bind $w <Control-C> ::copyFEN
  bind $w <Control-E> ::tools::email
  bind $w <Control-H> ::search::header
  bind $w <Control-I> importPgnGame
  bind $w <Control-L> ::game::Reload
  bind $w <Control-M> ::search::material
  bind $w <Control-O> ::optable::makeReportWin
  bind $w <Control-R> ::rep::OpenCloseWindow
  bind $w <Control-S> ::setupBoard
  bind $w <Control-T> ::tourney::toggle
  bind $w <Control-V> ::pasteFEN
  bind $w <Control-KeyPress-U> ::search:::usefile
  bind $w <Control-X> crosstabWin
  bind $w <Control-Z> ::toggleAutoplay ;#::tools::graphs::score::Refresh
  
  bind $w <Control-slash> ::file::finder::Open
  bind $w <Control-Shift-Up> {::game::LoadNextPrev first}
  bind $w <Control-Shift-Down> {::game::LoadNextPrev last}
  bind $w <Control-Up> {::game::LoadNextPrev previous}
  bind $w <Control-Down> {::game::LoadNextPrev next}
  bind $w <Control-question> ::game::LoadRandom
  
  bind $w <KeyPress-v> { ::showVars }
  bind $w <KeyPress-z> {.main.fbutton.button.exitVar invoke}
  
  for {set i 1} { $i <= $::totalBaseSlots} {incr i} {
    bind $w "<Control-Key-$i>" "::file::SwitchToBase $i"
  }
  
  bind $w <Home>  ::move::Start
  bind $w <Up> {
    if {[sc_pos isAt vstart]} {
      .main.fbutton.button.exitVar invoke
    } else  {
      ::move::Back 10
    }
  }
  bind $w <Left>  { ::move::Back }
  bind $w <Down>  {::move::Forward 10}
  bind $w <Right> ::move::Forward
  bind $w <End>   ::move::End
  bind $w <F2> "::makeAnalysisWin 1 0"
  bind $w <F3> "::makeAnalysisWin 2 0"
  bind $w <F4> { if {[winfo exists .analysisWin1]} { .analysisWin1.b1.bStartStop invoke } }
  bind $w <F5> { if {[winfo exists .analysisWin2]} { .analysisWin2.b1.bStartStop invoke } }
  bind $w <F6>  ::book::open
  bind $w <F12> ::CorrespondenceChess::CCWindow
  bind $w <Control-F12> {::CorrespondenceChess::OpenCorrespondenceDB; ::CorrespondenceChess::ReadInbox}
  bind $w <Alt-F12> {::CorrespondenceChess::OpenCorrespondenceDB;  ::CorrespondenceChess::FetchGames}
}
################################################################################
#
################################################################################
proc configInformant {} {
  global informant
  
  set w .configInformant
  if {[winfo exists $w]} {
    destroy $w
  }
  
  toplevel $w
  ::setTitle $w $::tr(ConfigureInformant)
  setWinLocation $w
  frame $w.spinF
  set idx 0
  set row 0
  
  foreach i [lsort [array names informant]] {
    label $w.spinF.labelExpl$idx -text [ ::tr "Informant[ string trim $i "\""]" ]
    label $w.spinF.label$idx -text $i
	 # Allow the configuration of "won game" up to "Mate found"
	 if {$i == "\"++-\""} {
		 spinbox $w.spinF.sp$idx -textvariable informant($i) -width 5 -from 0.0 -to 328.0 -increment 1.0 -validate all -vcmd { regexp {^[0-9]\.[0-9]$} %P }
	 } else {
		 puts stderr 9
		 spinbox $w.spinF.sp$idx -textvariable informant($i) -width 5 -from 0.0 -to 9.9 -increment 0.1 -validate all -vcmd { regexp {^[0-9]\.[0-9]$} %P }
	 }
    grid $w.spinF.labelExpl$idx -row $row -column 0 -sticky w
    incr row
    grid $w.spinF.label$idx -row $row -column 0 -sticky w
    grid $w.spinF.sp$idx -row $row -column 1 -sticky w
    incr row
    incr idx
  }
  
  button $w.close -textvar ::tr(Close) -command "destroy $w"
  pack $w.spinF $w.close
  bind $w <Configure> "recordWinSize $w"
}

### End of file: menus.tcl

# board.tcl: part of Scid
# Copyright (C) 2001-2003 Shane Hudson. All rights reserved.

# letterToPiece
#    Array that maps piece letters to their two-character value.
#
array set ::board::letterToPiece [list \
    "R" wr "r" br "N" wn "n" bn "B" wb "b" bb \
    "Q" wq "q" bq "K" wk "k" bk "P" wp "p" bp "." e \
    ]

# List of color schemes: each sublist contains a reference name (not used),
# then lite, dark, highcolor, bestcolor, white, black, w border, b border.
#
set colorSchemes {
  { "Blue-white" "#f3f3f3" "#7389b6" "#f3f484" "#b8cbf8" "#ffffff" "#000000" "#000000" "#ffffff" }
  { "Green-Yellow" "#e0d070" "#70a070" "#b0d0e0" "#bebebe" }
  { "Brown" "#d0c0a0" "#a08050" "#b0d0e0" "#bebebe" }
  { "Blue-ish" "#d0e0d0" "#80a0a0" "#b0d0e0" "#f0f0a0" }
  { "M. Thomas" "#e0d8b8" "#047c24" "#1c80e0" "#fe0000" }
  { "KM. Skontorp" "#ffdb86" "#ffa200" "#b0d0e0" "#bebebe" }
}
array set newColors {}

proc SetBoardTextures {} {
  global boardfile_dark boardfile_lite
  # handle cases of old configuration files
  image create photo bgl20 -height 20 -width 20
  image create photo bgd20 -height 20 -width 20
  if { [ catch { bgl20 copy $boardfile_lite -from 0 0 20 20 ; bgd20 copy $boardfile_dark -from 0 0 20 20 } ] } {
    set boardfile_dark emptySquare
    set boardfile_lite emptySquare
    bgl20 copy $boardfile_lite -from 0 0 20 20
    bgd20 copy $boardfile_dark -from 0 0 20 20
  }
  
  foreach size $::boardSizes {
    # create lite and dark squares
    image create photo bgl$size -width $size -height $size
    image create photo bgd$size -width $size -height $size
    bgl$size copy $boardfile_lite -from 0 0 $size $size
    bgd$size copy $boardfile_dark -from 0 0 $size $size
  }
}

SetBoardTextures

# chooseBoardTextures:
#   Dialog for selecting board textures.
#
proc chooseBoardTextures {i} {
  global boardfile_dark boardfile_lite
  
  set prefix [lindex $::textureSquare $i]
  set boardfile_dark ${prefix}-d
  set boardfile_lite ${prefix}-l
  SetBoardTextures
  
}

# chooseBoardColors:
#   Dialog for selecting board colors.
#
proc chooseBoardColors {{choice -1}} {
  global lite dark highcolor bestcolor
  global colorSchemes newColors
  
  set colors {lite dark highcolor bestcolor}
  
  set w .boardColorDialog
  
  if {[winfo exists $w]} {
    # Just update the dialog box colors and return:
    if {$choice >= 0} {
      set list [lindex $colorSchemes $choice]
      set newColors(lite) [lindex $list 1]
      set newColors(dark) [lindex $list 2]
      set newColors(highcolor) [lindex $list 3]
      set newColors(bestcolor) [lindex $list 4]
    }
    set nlite $newColors(lite)
    set ndark $newColors(dark)
    
    foreach i {wr bn wb bq wk bp} {
      $w.bd.$i configure -background $ndark
    }
    foreach i {br wn bb wq bk wp} {
      $w.bd.$i configure -background $nlite
    }
    $w.bd.bb configure -background $newColors(highcolor)
    $w.bd.wk configure -background $newColors(bestcolor)
    foreach i $colors {
      $w.select.b$i configure -background $newColors($i)
    }
    
    foreach i {0 1 2 3} {
      set c $w.border.c$i
      $c itemconfigure dark -fill $dark -outline $dark
      $c itemconfigure lite -fill $lite -outline $lite
    }
    
    return
  }
  
  toplevel $w
  wm title $w "Scid: [tr OptionsBoardColors]"
  
  foreach i $colors { set newColors($i) [set $i] }
  set bd $w.bd
  pack [ttk::frame $bd] -side top -expand 1
  addHorizontalRule $w
  pack [ttk::frame $w.select] -side top -fill x
  addHorizontalRule $w
  pack [ttk::frame $w.preset] -side top -fill x
  pack [ttk::frame $w.texture] -side top -fill x
  addHorizontalRule $w
  pack [ttk::frame $w.border] -side top
  addHorizontalRule $w
  pack [ttk::frame $w.buttons] -side top -fill x
  
  set column 0
  foreach j {r n b q k p} {
    ttk::label $bd.w$j -image w${j}40
    ttk::label $bd.b$j -image b${j}40
    grid $bd.b$j -row 0 -column $column
    grid $bd.w$j -row 1 -column $column
    incr column
  }
  
  set f $w.select
  foreach row {0 1 0 1} column {0 0 2 2} c {
    lite dark highcolor bestcolor
  } n {
    LightSquares DarkSquares SelectedSquares SuggestedSquares
  } {
    button $f.b$c -image e20 -background [set $c] -command "
    set x \[ tk_chooseColor -initialcolor \$newColors($c) -title Scid \]
    if {\$x != \"\"} { set newColors($c) \$x; chooseBoardColors }
    "
    ttk::label $f.l$c -text "$::tr($n)  "
    grid $f.b$c -row $row -column $column
    grid $f.l$c -row $row -column [expr {$column + 1} ] -sticky w
  }
  
  # Border width option:
  set f $w.border
  foreach i {0 1 2 3} {
    if {$i != 0} { pack [ttk::frame $f.gap$i -width 20] -side left -padx 1 }
    set b $f.b$i
    ttk::radiobutton $b -text "$i:" -variable newborderwidth -value $i
    set c $f.c$i
    canvas $c -height 40 -width 40 -background black
    $c create rectangle 0 0 [expr {20 - $i}] [expr {20 - $i}] -tag dark
    $c create rectangle [expr {20 + $i}] [expr {20 + $i}] 40 40 -tag dark
    $c create rectangle 0 [expr {20 + $i}] [expr 20 - $i] 40 -tag lite
    $c create rectangle [expr {20 + $i}] 0 40 [expr {20 - $i}] -tag lite
    pack $b $c -side left -padx 1
    bind $c <Button-1> "set newborderwidth $i"
  }
  set ::newborderwidth $::borderwidth
  
  set count 0
  set psize 40
  foreach list $colorSchemes {
    set f $w.preset.p$count
    pack [ttk::frame $f] -side left -padx 5
    ttk::label $f.blite -image bp40 -background [lindex $list 1]
    ttk::label $f.bdark -image bp40 -background [lindex $list 2]
    ttk::label $f.wlite -image wp40 -background [lindex $list 1]
    ttk::label $f.wdark -image wp40 -background [lindex $list 2]
    ttk::button $f.select -text [expr {$count + 1}] -command "chooseBoardColors $count ; \
        set ::boardfile_dark emptySquare ; \
        set ::boardfile_lite emptySquare ; \
        ::SetBoardTextures "
    foreach i {blite bdark wlite wdark} {
      bind $f.$i <1> "chooseBoardColors $count ; \
          set ::boardfile_dark emptySquare ; \
          set ::boardfile_lite emptySquare ; \
          ::SetBoardTextures "
    }
    grid $f.blite -row 0 -column 0 -sticky e
    grid $f.bdark -row 0 -column 1 -sticky w
    grid $f.wlite -row 1 -column 1 -sticky w
    grid $f.wdark -row 1 -column 0 -sticky e
    grid $f.select -row 2 -column 0 -columnspan 2 ; # -sticky we
    incr count
  }
  
  #########################################################
  set f $w.texture
  set count 0
  set row 0
  set col 0
  set psize 40
  foreach tex $::textureSquare {
    set f $w.texture.p$count
    grid [ ttk::frame $f ] -row $row -column $col -padx 5
    canvas $f.c -width [expr $psize*2] -height [expr $psize*2] -background red
    $f.c create image 0 0 -image ${tex}-l -anchor nw
    $f.c create image $psize 0 -image ${tex}-d -anchor nw
    $f.c create image 0 $psize -image ${tex}-d -anchor nw
    $f.c create image $psize $psize -image ${tex}-l -anchor nw
    
    $f.c create image 0 0 -image bp40 -anchor nw
    $f.c create image $psize 0 -image wp40 -anchor nw
    $f.c create image 0 $psize -image wp40 -anchor nw
    $f.c create image $psize $psize -image bp40 -anchor nw
    ttk::button $f.select -text [expr {$count + 1}] -command "chooseBoardTextures $count"
    bind $f.c <1> "chooseBoardTextures $count"
    pack $f.c $f.select -side top
    
    incr count
    incr col
    if {$col > 4} { set col 0 ; incr row }
  }
  
  dialogbutton $w.buttons.ok -text "OK" -command "
  foreach i {lite dark highcolor bestcolor} {
    set \$i \$newColors(\$i)
  }
  set borderwidth \$newborderwidth
  ::board::border .main.board \$borderwidth
  grab release $w
  destroy $w
  "
  dialogbutton $w.buttons.cancel -text $::tr(Cancel) \
      -command "catch {grab release $w}; destroy $w"
  bind $w <Escape> "catch {grab release $w}; destroy $w"
  packbuttons right $w.buttons.cancel $w.buttons.ok
  chooseBoardColors
  wm resizable $w 0 0
  catch {grab $w}
}

############################################################
### Toolbar and game movement buttons:

image create photo tb_open -data {
  R0lGODdhEQARAMIAANnZ2QAAAKmpqf///76+vgAAAAAAAAAAACwAAAAAEQARAAADSQi63B0w
  RuFAGDjfQF/WGOd9g9RZEPlFSkC4RCwTpYVKuMtxqgoJu8FsSAAaL8ThjoJMxoCipvMlsgwE
  2KzW2Mp5T9twtkJWJAAAOw==
}

image create photo tb_new -data {
  R0lGODlhEQARAMIAANnZ2ampqf///wAAAP///////////////yH5BAEKAAAA
  LAAAAAARABEAAANECLoaLY5JAEGodSo4RHdDKI5C6QVBZ5qdurpvqQ4ozIqe
  oNhrjuq8mOMSZEUsRdkRkDwxmrRnrxddQJejrGi5QHm/ywQAOw==
}

image create photo tb_save -data {
  R0lGODdhEQARAKEAANnZ2QAAAJmZAP///ywAAAAAEQARAAACPISPecHtvkQYtNIAsAnS2hZN
  3iWFI6ll3cml7Tm0kfQwQrnd+q67d93AqWgQlY8IMs5quVQG+FBIp1RFAQA7
}

image create photo tb_close -data {
  R0lGODlhEQARAKEAANnZ2YsAAP///////yH5BAEKAAAALAAAAAARABEAAAIk
  hI+pyxeh4HqJMguenFI3o2FN+IFeGW6XJVZYi7TwqJb2jRsFADs=
}

image create photo tb_finder -data {
  R0lGODdhEQARAMIAANnZ2QAAAKmpqf///76+vrDE3gAAAAAAACwAAAAAEQARAAADUgi63B0w
  RuFAGDjfQF/WGOd9g9RZEPlFSkC4RCwTpcBJ0jvZghoWwMLNNpi9Cpggh2gMIINCAeUyc0Kj
  06LM+sS2BlIpF9vB3SYQRni9ZlUqkAQAOw==
}

image create photo tb_bkm -data {
  R0lGODdhEQARAMIAANnZ2YsAAAAAAP///6mpqbDE3gAAAAAAACwAAAAAEQARAAADTgi60ftQ
  iBakFXEMqrsgy0VdwxcWKIUWQgkqwqqirQkXVM66Z67WL0AMp9vZhLLGCniSrYzB4XPJu02p
  R+SV9QnCLheCVyEum8WQtBqQAAA7
}

image create photo tb_cut -data {
  R0lGODdhEQARAKEAANnZ2QAAAKmpqb+/vywAAAAAEQARAAACNYSPqZEhehyS0DD7Kt7aAtp9
  AhiSXYBm2piZU2qhkMNiwzUNdyvsjU5x+Bq0iAsgUBmSoVABADs=
}

image create photo tb_copy -data {
  R0lGODdhEQARAKEAANnZ2QAAAP///6mpqSwAAAAAEQARAAACPYSPecHtCoKYdIahpNsvVllR
  gaE1AndioBWK6mmilye21sucsJPSrD2TrW6GgXEw/GASHMdScYwaIdSqtQAAOw==
}

image create photo tb_paste -data {
  R0lGODdhEQARAMIAANnZ2VFR+wAAAKmpqf///76+vgAAAAAAACwAAAAAEQARAAADUggKIb4w
  MickpCE3N6IgBUUNg9AtXzGoLGlexFqKtJKuH6HvRAV8sg9N2LmFeLwXUCWk9YogHHKnjDF7
  ziqpNNW9fiIs8gvY5qZk1HBkKW/fnQQAOw==
}

image create photo tb_gprev -data {
  R0lGODlhEQARAMIAANnZ2RwyggAAAP///6mpqampqampqampqSwAAAAAEQARAAADQgi63P4w
  wrCEvViFrcT44CcAWwl4mDUIRMl5Ichq1ZquBN3Fck7WKZSPsuPhdCdbbPYr8pjEU/DicxCu
  WKxkywUkAAA7
}

image create photo tb_gnext -data {
  R0lGODlhEQARAMIAANnZ2RwyggAAAP///6mpqampqampqampqSwAAAAAEQARAAADQQi63P4w
  wrCEvXhRJYb/nqBVA2aVhLIBHfgJKbB2Jh3P7nuTNRr8P1YuRAAGaS2dLCgcwlSV2iXmIFiv
  V4l2C0gAADs=
}

image create photo tb_rfilter -data {
  R0lGODlhEQARACIAACH5BAkAAAAALAAAAAARABEAotnZ2YsAALDE3gAAAP//
  /76+vgAAAAAAAAM+CBChvu+xOKOrC9vKmpWd913dCGpj6A3sQHHBIMyCq5S3
  TBC0jeq0mkkWFI6IAp7xGBwUTIqWkwWNtKoPVgIAOw==
}

image create photo tb_bsearch -data {
  R0lGODlhEQARACIAACH5BAkAAAAALAAAAAARABEAotnZ2aCAUNDAoAAAALDE
  3v///76+vgAAAANJKBqswmGACRy0TNK7mtIT93gCCIiiiQWr2rGvO8LlYFMn
  mRE8AaIDQqHQ0wCFPd/ExmQmeSYcIMgjKqU4KtSAlTYNt26XKR4PEgA7
}

image create photo tb_hsearch -data {
  R0lGODlhEQARACIAACH5BAkAAAAALAAAAAARABEAotnZ2QAngbDE3gAAAP//
  /76+vgAAAAAAAAM+CLrcvuFJECetFwcMVY0ftHkkR5HnGXrgNbzDOA1CLQwW
  TRA2Lum22yxY8z1oNZ5w2CtYALBB4fVkwKqLVwIAOw==
}

image create photo tb_msearch -data {
  R0lGODlhEQARACIAACH5BAkAAAAALAAAAAARABEAotnZ2QAAAP///wAngbDE
  3rLA3MDAwAAAAANLCLrcDmM8F4YQcqp6b34B132U6GmhSIIqkAZNaHVBYRfw
  Zgr1Rdi5Ha8g+BEIwRntyERulJfaseh0Ra6RQDNg0L2+IUNIU8qRF6EEADs=
}

image create photo tb_switcher -data {
  R0lGODdhFAAUAMIAANnZ2QAngf///wAAAP/tuMvFxosAAAAAACwAAAAAFAAUAAADWQi63B0w
  ykmrvZiKzbvn0DaMZPmFwkCsLDGkHqqWs9jJLVsWYCC6pdaAt8HlhEQBjjZaDXu/I6uQlDFH
  BYOh6ttQv2CtAdoRm8/KLufMHqM+ZS0Zvh73MpYEADs=
}

image create photo tb_pgn -data {
  R0lGODdhFAAUAKEAANnZ2QAngf///wAAACwAAAAAFAAUAAACSISPmcHtD6OcFIqLs8Zse90N
  IiYOl3kKYYoK5uiqQRy3J2qutfbGel/a5WZBmtBHzLR6rqHRyBzpSMGl7IO9Zj2d7abrzVQo
  BQA7
}

image create photo tb_glist -data {
  R0lGODdhFAAUAMIAANnZ2QAngf///wAAAIsAAAAAAAAAAAAAACwAAAAAFAAUAAADQgi63B0w
  ykmrvZiKzbvnkDAMX7mFo6AJRNuqgSnDIjl3KCl17hvenxwQFEutegTaEFe0DYUTDlK5PAUc
  2Mc1y81gEgA7
}

image create photo tb_tmt -data {
  R0lGODdhFAAUAMIAANnZ2QAngf///wAAAIsAALDE3gAAAAAAACwAAAAAFAAUAAADXgi63B0w
  ykmrvZiKzbvnkDCMokCY6HkKoTd8Xji+J52ibACXu0yqpdlr09oNCsjC0GerFTbJV/FzFCSV
  OdEPdbxip66k9aub3UTXAUAA0O02QsCo/YbN3HXXIDNZDBIAOw==
}

image create photo tb_maint -data {
  R0lGODdhFAAUAMIAANnZ2QAngf///wAAAMvm/wAAAAAAAAAAACwAAAAAFAAUAAADUAi63B0w
  ykmrvZiKzbvn0Cd6oTCc3Tl85aCs5gKDwea+t9y1TjPzPd0G6Lj9ajHcK3a0LQcEwsrVNKFM
  UdhVUPJApbaqN8sRp8gs5BiczlgSADs=
}

image create photo tb_eco -data {
  R0lGODdhFAAUAMIAANnZ2QAngf///wAAADZki4sAAAAAAAAAACwAAAAAFAAUAAADVgi63B0w
  ykmrvZiKzbvn0DaM4lB6oWCK3Lpu6Wi+bhe3uGoHpeujvI9QQCAIQqaiUKlEEo0fphFZKBau
  2CpBe+QloR5pVyfmiJ3i9NQra7tl46E8g0kAADs=
}

image create photo tb_tree -data {
  R0lGODdhFAAUAKEAANnZ2QAngf///6CAUCwAAAAAFAAUAAACRISPmcHtD6OcFIqLs8Zsi4GB
  WheK5kZm4BpywSXC7EC7pXlm6U3HtlwKXnafnnH08tQ8RCEquVk+lT0mlCf9ebaCCqUAADs=
}

image create photo tb_engine -data {
  R0lGODdhFAAUAMIAANnZ2QAngf///7i4uAAAAAAAAAAAAAAAACwAAAAAFAAUAAADUwi63B0w
  ykmrvZiKzcXooAB1Q/mdnveNnLmZpSoGHGGHISvcOKjbwKCQ8BsaibSdDTYIwljHIzQ6hMKW
  JuxA1yRcvVlkDVhydsXjDm9j0/VwGUwCADs=
}

image create photo tb_crosst -data {
  R0lGODdhFAAUAMIAANnZ2QAngf///wAAAIsAAAAAAAAAAAAAACwAAAAAFAAUAAADSQi63B0w
  ykmrvZiKzbvnkDCMo1h+QoiuW1iS5qqyaDilApHvehrILJtk99MZW79g7Xc7Fnc+WssjjPCI
  0Jk0GW1edUmtFJS5JAAAOw==
}

image create photo tb_help -data {
  R0lGODdhEQARAIQAANnZ2QAAAKa/ovD07+vx6uHp4MvayfP289Lf0MPUwazDqLzPuCsrK+bt
  5CEuH2WLXoythpa0kbjMtY2tiAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
  ACwAAAAAEQARAAAFSSAgjkFZjigaCANRGEGqGsdQ3EgsB8mgmIuCgiEDBBoO0k2XgqmEzKIo
  cHtEi9QC5Lq7baWkiJbbjZB3JrB6bTx3JW6VZBJXnUMAOw==
}

image create photo b_bargraph -data {
  R0lGODdhGAAYAMIAANnZ2QAngf///wAAAIsAAAAAAAAAAAAAACwAAAAAGAAYAAADYwi63P4w
  ygmDvThnpnvnXmhxQmmeqBmQaXuuS+DOAqzIwkCjNoDrlhfuxQIOa8dS70ewEJ7NAJSgLCKF
  12qsZLwGg9ob1yv7DpdjM1llVavDPu5gTq/T4ckdXp9aikIUgYITCQA7
}

image create photo b_list -data {
  R0lGODdhGAAYAKEAANnZ2QAngf///wAAACwAAAAAGAAYAAACT4SPqcvtz4KctFZkc8a6SyyE
  4kiKATgM5RqeRyCkgjfNIIu7BizjpA7gqWgS28vHAgqRI2VsSDTumCVnj2qF0qRB6g8DUSjD
  CSVxQ06rEQUAOw==
}
#----------------------------------------------------------------------
if {$png_image_support} {
	image create photo tb_open -data {
		iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABmJLR0QA/wD/AP+gvaeTAAAACXBI
		WXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH1gkWFgcEIFayvAAAAB10RVh0Q29tbWVudABDcmVhdGVk
		IHdpdGggVGhlIEdJTVDvZCVuAAABsElEQVQ4y6WSS2sTURzFf3c6giWktRql7roLqIv5CA1FtBtd
		pC+6cVGQItFvIz6w0l1F+gG6qa0WxFUIgQhu0hJd9arptJ1mHr33uhgbcjsJFjybC//nOf97xJPK
		8q6UcoJzKBQKX188f3Wbf8CVUk5UKo9wnKFu8CTo8GZl7RYXgAsQxyG7e00wBmMMN67fBGB2vmwG
		NY6NXdl+/XKl5AKEYUQQnKQZA99/tJgp3yOKIwQOCGE1x3HCxsanyS6DXjQae/h+ANT7bh4fv4rn
		3bEl9ML3A96/Wx+oeW5hJnsDpRRJEluHbLd/9dF9DYAkSewBWmvSV3UTtVotM6BUmiK9WcceEEUh
		nU5oFXuex4W/ceiSSxwlVmJn5yNvV1dRSmWaNje/kMvlWFicWxOz82WTz+eRUlpFDx/cpVgsMjKS
		50zmqTrFGDBa8WHrM9VqPWXw7OkSxmQ9c3zs02w2EOd8ADB9f4pqtS7d1DuGVutbX42O42RiWmsO
		DnyAIxeg/fsno6MFi8XZVpuY+RsTHB76AL54vLy0tb8vJ9PJA62P44geBobh4ctHWutF/hd/AExB
		ukCW3MYjAAAAAElFTkSuQmCC
	}

	image create photo tb_new -data {
		iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAAZiS0dEAP8A
		/wD/oL2nkwAAAAlwSFlzAAALEgAACxIB0t1+/AAAAAd0SU1FB9gCARYPN9dLZuUAAAAddEVYdENv
		bW1lbnQAQ3JlYXRlZCB3aXRoIFRoZSBHSU1Q72QlbgAAAl1JREFUOMttkr2LVFkQxX9163bPOD2z
		/eH36M4oLLOw2XZgYGKggZGxYGCiYCyCkf+A/4AaLys7sAYKGxjIgmi6GwiCLRiIjs44X08Y5/Xr
		d6sM3useBQsu93KpOpxz6gjA8t/3L4hwx80PO4A7jjHV2KHbWrH57ouVbmvwcbrxOZMwtaI6+1gb
		3Wca2x8i1cDdc2fPH+12eozLyg0sf84w+1dHO/8v2ujt4mjoaOx8AT8lOrMslv8RAcqyPNppd1nf
		WKNMJWY5ml7RyC6CDwGj8+sGANuv9s+kMvutyN/emuueXYsA5o7jlKkkWQlph2BvwEvaS+8RvAaC
		ztIKDmSvFxT8TARwM3BIqSSlErGcIBng9flhCSInA4CZAVCmUcUiGeZKc/Y02eA4iEym3CEbHGNm
		rj8SiVNhLKECMFJKlNagsHk8zAMB0YN7XERAlKDtXQjrYSJhDO9g0qSweXL/HUTxtEk2WCAbLCAS
		AYUw9VIkPIvfShARJASCKM4Rcu+zb+4224MTTHcvAU72epG13cs+Y+t/akjPa4BKgqoSJICAEDEW
		yH2W+NMDkm8hQO/EFZ48eurt1u4/h3qfP9QeWA0QUVVifatOI40jJP2FUegz0j40+3zaavnT/5ZW
		4+GH+d4aBWJQTEJtulBdEWgCXv3IPpLB6mbLACYSBAhBkbpRxquTGmjskQhmjtes454EQVW/a6yy
		UrGZpEcq071efQSIGt9vbm0c6/UOfNv6w/htb28Ro64Oh8VwAlAUxdW/lu/fK4ri573EjSPsTJ44
		MTbfpVReu3H9pgN8BR0XJYkmw1fvAAAAAElFTkSuQmCC
	}

	image create photo tb_save -data {
		iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz
		AAAN1wAADdcBQiibeAAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAALBSURB
		VDiNnZJNaFRXGIafc++5M3ci0URnEk1MVKRotRrswnRMLP4sVVTEVUEp+aNNjVZ01boRKqhIcfAH
		RbNpiyK6EMWAoIJSahS0tmAXhVZDJ4ljmsn8ZOZ6555zXIwksXblC2dxXs55+L73+4Qxhv9qa2/k
		uVa6capnWeKl1qbuaserYKov3/kNGG3qTu14iBTOhNf9Y/NMzSsJvA04eTqRLBaLNUqpCZioFgD8
		lGpDmRKf1fYiEPYnmW+Kh48eAsC27SDiRl5Kz/Nine1dUkqJ61bgeQX6L3z3TlVCWHzZ1U0mnSMa
		jRIEgTx77kzMCoLAkVLieR7GaDzP+7+uAMjlc+RyWcYyY2hjUEpJ+QZP4v7nPE7eBGBW5exyFkYD
		oIxPrKqO7uuLAFhS08q+1ouTISql2LhwD3+nf2Vzcwctjdv5s3gXjQLg9/FrHNhwmcH8Hxzv283a
		ue1oXYZbACoIWBBr4uuPL3Hr0RUuPzlCfWg5taEPAYhYVSTzTznet4ttCw6yZHYLfsmfBAjLolgo
		MH/OYjqXnmfwn2F6731LS2UX66v3MV03kOjrYcu8g8Q/2EAul8W27EmA44QYepEkm8/y0eIVfBU/
		Ry3LOHajk5H0MIm+HtqaTrIpvpN0ZpTBoSShcLicQWpkFDfscuv2HeLxZoaHktTXN9C2+hC/pdbR
		+8t+9rT+QNReSP+DnykUC/Tff0DrqjWkRkahZ+9u875q/6LLyL+eDZA48T2Ul4+KimlkMmOEHXdi
		ClI6uG6EfD478aYwPs7wixRi5epPi9GqSjf17xjStnDDIZyQg2PbhByJbVsESlPyAzzfx/dLeH6J
		2MwZpLPjOWkJIQFqZlUhhMCyBJYQiDcHyncnJJHSRkyLUAoUxhi01pWyobEhOfB8oNEYI6aurTYG
		S7xlAeBIGyGEKQWKpqblj14D6x5TKes4P9MAAAAASUVORK5CYII=
	}

	image create photo tb_close -data {
		iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABHNCSVQICAgIfAhkiAAAAkVJREFU
		OI3FkMtrE1EYxe/NxIJ1ZqVUbB5NH5kkQjuTdFKLNVDBihGKxVK0JY9JddGlf4d/ghtFsBhuC4rY
		jQ+ikFixNpNJMpPGhYIS0NhGJTOTdCa5LiRpm+K6Z/Vdzj2H7/sBcNSCrYFfjNyFJhhtNvArtaqF
		EUKNzr8LoZsvj3WZRyA2PXpw/+EdAAAwtW0M+Fu3Yz0MOzzdTR1Hc3NzxP5wlA/FaRc9Nj9/41QT
		44WWsVcA8ZNkMlUNBCZIlmWmyL0SyC+G4y6P+0ogcJ7c2NisQoiftmLm1uCwDy7JufxJM0Fcnrw4
		SQKApwQhsxKNhbDnrOfS+PgY9S71XikWPr3Q1PpSK9deM5FIYKfTvbpd2fHXNc12ITBBmiBhtVh6
		BznOR62vf1CkvPRaU+uz+/nsvxNIkoRppwttV3bGCbPZyjDDJ3pO93SJ2ZyS/ph+oyn1mU64JtAh
		hFATAKzq9V1s6DowDAMYuwYEGKj/vIMiOt4wEgs9pmln0Md5yXxO1srffxhuD92taqrNYrX6xEx2
		5X8FMMqHloeG+q+OnfNT6U1BEdLp5LdS6bOu62dYliFrNdVmddhZUciuHiqI8OF7fQ77db+fozKC
		qOYlKaUpetDQG8uVX5UJQzd6GXaErGk1u6O/byAjiM8OMIAQz3Ccj8qKOUWS5WRN0YMIoQZCqFFX
		d6eLW8WEKOaU0VEv1Wzi2UMbeH2MrSBvDZR/lt9+/VK6tra21qYtSRKmaXf8T/X3iJwvWAjCFBfS
		4vNOoEejvx7fDFN88/S5AAAAAElFTkSuQmCC
	}

	image create photo tb_finder -data {
		iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABmJLR0QA/wD/AP+gvaeTAAAACXBI
		WXMAAA3XAAAN1wFCKJt4AAAAB3RJTUUH1gERFQ8D2QpgNgAAAdRJREFUOMulk09IFFEcxz+zO+rs
		1LZ26A91CWlJjDCHKDDCDl46SKfAFum4bFDStYvb6kG8qmAsdFssEIo6dtKLrh5EcilhWYglQZCt
		3Z11XJ3Z9zyYs46iS/Q9PX7v+/vwe9/3nrL0rGVKFTsxjkhA4k6KNzSQsjyAvPp0GFEtuUWpqGx8
		HMNIoTQCqAeLQv6HW9RCFwBYHkCe0vvWSPHcBZT//EaKfX+pUOCM0YfarJ3YvZueicEhAM0avqqJ
		r1JAcXYQPxfZpbFUgPX3Q2iAP3QR7VIb5x/0c/b63VMb11531wHto/MA2KV1hG1RTH/h17tXrjnY
		eZ/grXsHEXPu5pPjIZYzM4DEXE1jbQcIxrOuyZqO4s9lCFy7AUdy9blXV7MRNQfzWxo9kqQ6O4GZ
		CFOdnUCPJCkufEUKBymcEwDC9mzYc+Nc7n+BPTd+6NX4j/l8AM7W5j7d2XY3mnoG2fgwSVPPYP0o
		uVVkzcbZ2vRmYBfz8Hc0vaMTazqKHkmiPXxZDzKepZwII0U3gSt5L0BRW+rG9tuwtoKZCHtGDcaz
		BKKfMZOPCXU98gKKS5/Q2zrcYqvRS6vRC0DNqmDlMh5g5fu85zNNATH+XUNGihH+V3vQLbHT+Z4D
		/QAAAABJRU5ErkJggg==
	}

	image create photo tb_bkm -data {
		iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAAZiS0dEAP8A
		/wD/oL2nkwAAAAlwSFlzAAALEgAACxIB0t1+/AAAAAd0SU1FB9gCARYOF/U+d2wAAAAddEVYdENv
		bW1lbnQAQ3JlYXRlZCB3aXRoIFRoZSBHSU1Q72QlbgAAAmNJREFUOMt1k89L1EEYxj/vzOi6a5u7
		m1Ziqf1yo04ZdOlQRNAt+nUQC4pI6tApgiDoD5AOXhLyFoSSkJRBh6AuYqegY9CKSFq7abrrLuq6
		392d6fBdd12o9zTMvD+e53mfEYDx12MXkxM3JqkLRzBsOHH2tI0ciSxEmxO/mxpyWVGBpNY7PuiG
		6LQ2LSnj57rn5y/f5eObEfpv3cfbXEN0keCuAun1adW6s6HLFue7igWHNpENcKdEh8bFbr5UAKVS
		qf34teHq7GIhByoL4bfE9qawxR9E4stE4iuUS6shLz93bCP35QmOCwbAOofDVaEX1pdojFjA0tKT
		RHDgCgBEepI4IDvTqcGdUQDOWqr1gDKCbhL8S8d/QhA5oACstfXyOXBWEQieJJvYByJ1b9lEB6Fw
		b1HEBNQWhe0RCLWhbBQh6g/SbTUsIiAapVvyoJZNlcI2ZKFwO1p5lNZyOCW4cppsotPXIJ4CNKjA
		NxE1bf5FYezFMNoo+gdu833uEEdVN03R64AjO9PFUv6mC9nlUa3KnysN3LbiZ1waTCAIo4/jhKMB
		Dp6boOwyCBDrvsOnd1OupTn/fncsl6poUENw9eksRhu01lwZnCW7kqesD1NUvRR1LzT28ifT7Ka+
		9iyaPZObNQ0E+obmsc5VRBcE6BtaqPpDEJAgZQuL6WYLUKUggFIaqSTK1urEb+Qf/XtrHa6C2tQo
		CFrrukTfKz6a6o7EF91VVm8AjDa/0pmVjlisdXvqP+23uprBGL1YKHiFagPP8wZejY+NeJ63v+a4
		2t+o+cxhTOPPcrl07+GDRw7gLy2eBHy6Hj7jAAAAAElFTkSuQmCC
	}

	image create photo tb_cut -data {
		iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABHNCSVQICAgIfAhkiAAAAzJJREFU
		OI2NkV1sU3UYxp/3f77GtnZuwJaxuAwZa1mHkhCIBgnJWtcOJARLjC4CxuiFMdFEMml2oRFsGaeF
		C+BWI2bD6QU37EaRKOIFZQXm18VG1sWuLhXadevZ6cc5PefvFQ0JMfhev7/fm/d5AACjajijxkY/
		xf+c09HwZ6dj4UUAYABARG1ut3skeibyzpPgaDTyvsfz7Efg1F4TOJ0OY9C/V3T19J5XY6de/y9Y
		jYXf9ni2qv6XAlJDQ6NZE+h6sbKqFRDwDyquzT1fRKOjBx67fCb8hqd36wWfz69o2jLK5WKlJmCM
		/ZFOp5DP3UcgsK/ume5N35yKnvTVfo5FDrl6PJ/7vAPKUjaD9EIKjNjvACACQNkwh+NTU9/5+vsb
		qv8sYm9gn1KdtCcjasQrEWtxud1jA94B+UHmb1RtG/GphF6uVo8BgAAA165eW9i958Xcg2zW29He
		IZlGGVu2eMTZ2ZkjTU81vzY4EJCW81mUKhX8fONGMZ/Pvnd8eGSyJgCAq9//cPuFXc//mUovvLxu
		7XopHr9JBw8eYqm/5lkyOQdZUazrv1zXc/lC8PjwyOWHHD2WtHpyM5OVn7hlbzh6+E1wzvHV2EUI
		gnDPKFu+UCiUenSfAGCCsXc58Ann3AlAtEVRUs6dRcXpgGXZMDUNdR8cA6pVAIBAtMKJTgzZ9lka
		Bw40NjWN7di5s7Guvh5MEJBOJvn09DTdD324gDVr5PUnRtv6QyHumJkhWBaKxSJuxeOr2vLyW/iW
		sdmlcJjf6u7WJySpdElR+EowyMcB+yKw9pLDsW6MyF4JBvm4KPKvJal0c+NGfdHr5ROMzTGT8y6W
		SGBufl40TLOXWxZMwwAj0o4CuSFNywpEmmkYAADbND3zqZRY73TC4vxpJhAtlXUdra2tBiNKdnR2
		rhY0DQJjvz4MSiC6s1Io8M6urlUwNtfW3m6UdB0iUVZ4hYhpmrbrue3bG3r7+lAny/KdREIzKpVX
		LwMZANjP+e1cLnfE7XI19m3bhpbmZvm3u3f1UqkUph8BMcOYCuCwZdstMmP3qrY9PARcebSuccAv
		MaaanPcIREsc+FKw7Y//BYhsZfiE0OfYAAAAAElFTkSuQmCC
	}

	image create photo tb_copy -data {
		iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABmJLR0QA/wD/AP+gvaeTAAAACXBI
		WXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH1gETCToqhryocwAAAK1JREFUOMutkk0KwjAQhZ+QCxXE
		AwgueiB/0IXJIhLjgVwIHkCayZHqpglSJtO0+FaBDC9fPmblvL0C0JCjT4eLYW+ct/1UnLd9qVml
		w+v9ZAd221ZEywXrZoMlyQVd/PyPIFCHQAEAQCFmV5xYloAo4rg/iy/fHzcNwLAE6dUasaKDGrGK
		a00ENWIVAD38ZxnBsKJmvJ1zCIqZ5YDLmIArFAumtlAqKIr9nQGAL0ezaR+0HlviAAAAAElFTkSu
		QmCC
	}

	image create photo tb_paste -data {
		iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABmJLR0QA/wD/AP+gvaeTAAAACXBI
		WXMAAAsRAAALEQF/ZF+RAAAAB3RJTUUH1gQFEjM27p6E1wAAAYtJREFUOMuNk79r02EQxj/33Gua
		SWqlILaCiCiIOImhsV+UdHVUtEIhIOgmdBChf4BBKnSug2vaRZTiFGjtkEJjJNEt4j9QzBIwFKv9
		MaRfTZvYfp/p7rh77u557zUO4dr1G4+B+a7Qk6/Vymv+A5ub1H1gIQ68+XyGtx9WSafTtNttHt27
		xd2rP7prHkwXdxZjR8BCvlAmXyjTPP+U3YEhdrb/8L1RR4IWw5zOzRLndDeLCQDYahRZKq2xUnrH
		9u8Wg4Mn+dnaYKX0nlfzi2w1in1XCN3OVG6UiTsPe5KmcqMcpcFuvlA+0GHp2ymamykS4GPoF21u
		pnj+bObY6pezL26HoxJq9U+YHHchOe6OTMjFxQuXejU4DA+BWq2OScgMmTAZY2PZ/iL2KBwCmUwG
		lyMXMnWmkCck8BNUq1UkYWaYOlOMj0fJJ8jezOLqaCD5vq1kBB6cynoFMyEZURT9JUm4QiCKos5L
		KN5f/QlSlyf/VX5ZBmDk7Lljb6HnNwL8ujINA0NJLnFjDzcHYFcB8qBPAAAAAElFTkSuQmCC
	}

	image create photo tb_gprev -data {
		iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABmJLR0QA/wD/AP+gvaeTAAAAB3RJ
		TUUH1wgGEBoIdCRDswAAAZlJREFUOI3V0b9PGnEYx/H397iT48SJYF1KOISEgYRFOkisSaVQUol0
		6NCUUk20McXNn4mTi4P+GyYdZKrpf3ANUztALnTSdLCJg2mTQut5yLdLayoB16af6clreJ7k+cC/
		jmeAK0AAuPN7/tnjoz1+Iz5d182p6andbC4jgfHbXPn7ajAYHEsmk/dnMg/erVQqawCBQGBokAMI
		gHQ6PaIoiun1eefDodDrzc2toXDYFI9n8zgX7j3Nqz3r9R/tiwnLsj6o5XI55DjOZKv9fac4VzQf
		5fNas2mj+3QA/CPDB/08Go0almWhJBIJ8+u38zcvSqXY4uKS1vxkM+z3Y/gMAAZ5PB43ANRIJHI2
		Ix9WDqvVVce5vFsoFLRWu4WqaQAcVqsn/TwWixnX37Nte6xerxfXN9YPlpdfXZ5+Oe12u1cym8vI
		RqNR6ue2bT+/0Z2UUnNdN12r1bbnF15+Pjp662ZzGdnpdJYGOYD6Z4EQwgXeSylPUqnU8d7+3hPg
		qcfjuRJC9PXrGnsjpVSBFBABmkKIj7f5f55f4EnGQHaRI38AAAAASUVORK5CYII=
	}

	image create photo tb_gnext -data {
		iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABmJLR0QA/wD/AP+gvaeTAAAAB3RJ
		TUUH1wgGEBoIdCRDswAAAc1JREFUOI3d0r9rE3EYx/H3N3cxd9f8lEBNmghCfgwOZg7BetK0iINN
		Z6Wtg10c1NE0ms7uCuriIO1oFSoIgSIitH9AbYxEqI2Nm7Qmsb07vi6JbWNwFXyWB17Dhw88D/zr
		Ubo7AEQAN/ATkF0Pdf0E0DnifwRExifGPsfjMf/OTnPDcZx9wOp6fYAfDwiHw8OR6KmbN+bmMu1O
		64rHo310HGfPMAxjkLfb7XavjQKQyWTiuqFdL83fd+dyudB2Y3tK17VgIBDc0DTPdL9HoyNfkslk
		p16v7ysA+Xz+TKv1Y8Y0TaVa26QwOaUGQyfP1T5VL4H0mebF416rXvZ6fV+z2eyuCyCdThtCCHRd
		x+8PsFn9QGGyoN6+dec0CPcg3937/iyRSKRUgGQyqb99typUVSU2EmNoyMvK6xV7cfH5NyHEsKqq
		ar+PnjcfpFKphtprgACfz8+BZbGwULZcwvWqeLe0XCoXn/b7fPHekmEY79PpdAMA27anxyfG5PLL
		F/bM7NVmpVIpSylHbduePfRrzUqlUrYs64KU0tM7owqgKIoDsL62/ubRwydLmqatCiG2pJTxQ3/8
		24/+gQCQUp4FMsAWsCaEOPib/2fzCyhU1vTKsQR1AAAAAElFTkSuQmCC
	}

	image create photo tb_hsearch -data {
		iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABHNCSVQICAgIfAhkiAAAAkRJREFU
		OI2lktFL01EUxz/3d3/bNKUJaU6dOkmhfJBMMdFkJbJIfKiHIiPoIemxB0GEIh8qSOqpN/+OHnoo
		iIooE6HSStPEbKuZbupmY+63/e7tIZxWth76woF7D5/7veccDvynxPZLc9uRx5Zl+QEMw3jyemz0
		aK48gLHdwLIs/6meAAfqqlFK+f+V/6OCptZ2nbEzaK1/ugsxIKW0bKXuKqUAkKbk1eiL7Du5eWg4
		dLi1ory073zvaXyVFZjSYHEp0qm1Dpw43iWvDPbT0tzI23dT5Be5Hy59/RoEEE2tbZdtpe44XS59
		8cI5VygYZHp6ig9zQer315FMJplfCHH71hDh8CILn0Lcu//Asm0bAzFgKq2Hrw72O2tqqpmZmSUe
		j2VbOthQTyQSYX4hBEAikcAwINDZ4UylLB49fT5s2Ladn5fnIhJdZnV1Jdv/37QcWWZu7iMCjdY6
		3wSwbRvH1jiyej89SyKR2NEonUkDYBrCSCWTGy6PZy/FxSXEYutorUmlFW8mp2wBdHX6ZZG7iJLi
		EuKxddCQ2kghICUa29uvKStzfYfSlWEYN6SUqXQ6fZPfdgZACDEkS8vK9uzz+Xp6z5x0OiTscjlY
		i8W/K8XZifGXI+FQ8JnHWzFZuwNjK0YMh3Re6u4OFFT5qvBWetntduMt9xRKKfo2f8rFmBrl93f4
		ia+vUVtbRyZtU1hQQPDLt2ObBrkYU2t0MPgZITQr0RXC4TDRaBTE1pbnYkRDc4s2TROt9S8BMDE+
		JgByMT8Azog6tOCy8AIAAAAASUVORK5CYII=
	}
}

#----------------------------------------------------------------------

set tb .main.tb
ttk::frame $tb -relief raised -border 1
button $tb.new -image tb_new -command ::file::New
button .main.tb.open -image tb_open -command ::file::Open
button .main.tb.save -image tb_save -command {
  if {[sc_game number] != 0} {
    #busyCursor .
    gameReplace
    # catch {.save.buttons.save invoke}
    #unbusyCursor .
  } else {
    gameAdd
  }
}
button .main.tb.close -image tb_close -command ::file::Close
button .main.tb.finder -image tb_finder -command ::file::finder::Open
menubutton .main.tb.bkm -image tb_bkm -menu .main.tb.bkm.menu
menu .main.tb.bkm.menu
bind $dot_w <Control-b> ::bookmarks::PostMenu
bind .main.tb.bkm <ButtonPress-1> "+.main.tb.bkm configure -relief flat"


ttk::frame .main.tb.space1 -width 12
button .main.tb.cut -image tb_cut -command ::game::Clear
button .main.tb.copy -image tb_copy \
    -command {catch {sc_clipbase copy}; updateBoard}
button .main.tb.paste -image tb_paste \
    -command {catch {sc_clipbase paste}; updateBoard -pgn}
ttk::frame .main.tb.space2 -width 12
button .main.tb.gprev -image tb_gprev -command {::game::LoadNextPrev previous}
button .main.tb.gnext -image tb_gnext -command {::game::LoadNextPrev next}
ttk::frame .main.tb.space3 -width 12
button .main.tb.rfilter -image tb_rfilter -command ::search::filter::reset
button .main.tb.bsearch -image tb_bsearch -command ::search::board
button .main.tb.hsearch -image tb_hsearch -command ::search::header
button .main.tb.msearch -image tb_msearch -command ::search::material
ttk::frame .main.tb.space4 -width 12
button .main.tb.switcher -image tb_switcher -command ::windows::switcher::Open
button .main.tb.glist -image tb_glist -command ::windows::gamelist::Open
button .main.tb.pgn -image tb_pgn -command ::pgn::OpenClose
button .main.tb.tmt -image tb_tmt -command ::tourney::toggle
button .main.tb.maint -image tb_maint -command ::maint::OpenClose
button .main.tb.eco -image tb_eco -command ::windows::eco::OpenClose
button .main.tb.tree -image tb_tree -command ::tree::make
button .main.tb.crosst -image tb_crosst -command toggleCrosstabWin
button .main.tb.engine -image tb_engine -command makeAnalysisWin
button .main.tb.help -image tb_help -command {helpWindow Index}

foreach i {new open save close finder bkm cut copy paste gprev gnext \
      rfilter bsearch hsearch msearch \
      switcher glist pgn tmt maint eco tree crosst engine help} {
  .main.tb.$i configure -takefocus 0 -relief flat -border 1 -anchor n -highlightthickness 0
  bind .main.tb.$i <Any-Enter> "+.main.tb.$i configure -relief groove"
  bind .main.tb.$i <Any-Leave> "+.main.tb.$i configure -relief flat; statusBarRestore %W; break"
}

#pack .main.tb -side top -fill x -before .button

proc configToolbar {} {
  set w .tbconfig
  toplevel $w
  wm title $w "Scid: [tr OptionsToolbar]"
  
  array set ::toolbar_temp [array get ::toolbar]
  pack [ttk::frame $w.f1] -side top -fill x
  foreach i {new open save close finder bkm} {
    checkbutton $w.f1.$i -indicatoron 1 -image tb_$i -height 20 -width 22 \
        -variable toolbar_temp($i) -relief solid -borderwidth 1
    pack $w.f1.$i -side left -ipadx 2 -ipady 2
  }
  pack [ttk::frame $w.f2] -side top -fill x
  foreach i {gprev gnext} {
    checkbutton $w.f2.$i -indicatoron 1 -image tb_$i -height 20 -width 22 \
        -variable toolbar_temp($i) -relief solid -borderwidth 1
    pack $w.f2.$i -side left -ipadx 1 -ipady 1
  }
  pack [ttk::frame $w.f3] -side top -fill x
  foreach i {cut copy paste} {
    checkbutton $w.f3.$i -indicatoron 1 -image tb_$i -height 20 -width 22 \
        -variable toolbar_temp($i) -relief solid -borderwidth 1
    pack $w.f3.$i -side left -ipadx 1 -ipady 1
  }
  pack [ttk::frame $w.f4] -side top -fill x
  foreach i {rfilter bsearch hsearch msearch} {
    checkbutton $w.f4.$i -indicatoron 1 -image tb_$i -height 20 -width 22 \
        -variable toolbar_temp($i) -relief solid -borderwidth 1
    pack $w.f4.$i -side left -ipadx 1 -ipady 1
  }
  pack [ttk::frame $w.f5] -side top -fill x
  foreach i {switcher glist pgn tmt maint eco tree crosst engine} {
    checkbutton $w.f5.$i -indicatoron 1 -image tb_$i -height 20 -width 22 \
        -variable toolbar_temp($i) -relief solid -borderwidth 1
    pack $w.f5.$i -side left -ipadx 1 -ipady 1
  }
  
  addHorizontalRule $w
  pack [ttk::frame $w.b] -side bottom -fill x
  button $w.on -text "+ [::utils::string::Capital $::tr(all)]" -command {
    foreach i [array names toolbar_temp] { set toolbar_temp($i) 1 }
  }
  button $w.off -text "- [::utils::string::Capital $::tr(all)]" -command {
    foreach i [array names toolbar_temp] { set toolbar_temp($i) 0 }
  }
  ttk::button $w.ok -text "OK" -command {
    array set toolbar [array get toolbar_temp]
    catch {grab release .tbconfig}
    destroy .tbconfig
    redrawToolbar
  }
  ttk::button $w.cancel -text $::tr(Cancel) \
      -command "catch {grab release $w}; destroy $w"
  pack $w.cancel $w.ok -side right -padx 2
  pack $w.on $w.off -side left -padx 2
  catch {grab $w}
}

proc redrawToolbar {} {
  global toolbar
  foreach i [winfo children .main.tb] { pack forget $i }
  set seenAny 0
  set seen 0
  foreach i {new open save close finder bkm} {
    if {$toolbar($i)} {
      set seen 1; set seenAny 1
      pack .main.tb.$i -side left -pady 1 -padx 0 -ipadx 0 -pady 0 -ipady 0
    }
  }
  if {$seen} { pack .main.tb.space1 -side left }
  set seen 0
  foreach i {gprev gnext} {
    if {$toolbar($i)} {
      set seen 1; set seenAny 1
      pack .main.tb.$i -side left -pady 1 -padx 0 -ipadx 0 -pady 0 -ipady 0
    }
  }
  if {$seen} { pack .main.tb.space2 -side left }
  set seen 0
  foreach i {cut copy paste} {
    if {$toolbar($i)} {
      set seen 1; set seenAny 1
      pack .main.tb.$i -side left -pady 1 -padx 0 -ipadx 0 -pady 0 -ipady 0
    }
  }
  if {$seen} { pack .main.tb.space3 -side left }
  set seen 0
  foreach i {rfilter bsearch hsearch msearch} {
    if {$toolbar($i)} {
      set seen 1; set seenAny 1
      pack .main.tb.$i -side left -pady 1 -padx 0 -ipadx 0 -pady 0 -ipady 0
    }
  }
  if {$seen} { pack .main.tb.space4 -side left }
  set seen 0
  foreach i {switcher glist pgn tmt maint eco tree crosst engine} {
    if {$toolbar($i)} {
      set seen 1; set seenAny 1
      pack .main.tb.$i -side left -pady 1 -padx 0 -ipadx 0 -pady 0 -ipady 0
    }
  }
  if {$seenAny} {
    grid .main.tb -row 0 -column 0 -columnspan 3 -sticky we
  } else {
    grid forget .main.tb
  }
}

proc setToolbar {x} {
  if {$x} {
    grid .main.tb -row 0 -column 0 -columnspan 3 -sticky we
  } else {
    grid forget .main.tb
  }
}

# Set toolbar help status messages:
foreach {b m} {
  new FileNew open FileOpen finder FileFinder
  save GameReplace close FileClose bkm FileBookmarks
  gprev GamePrev gnext GameNext
  cut GameNew copy EditCopy paste EditPaste
  rfilter SearchReset bsearch SearchCurrent
  hsearch SearchHeader msearch SearchMaterial
  switcher WindowsSwitcher glist WindowsGList pgn WindowsPGN tmt WindowsTmt
  maint WindowsMaint eco WindowsECO tree WindowsTree crosst ToolsCross
  engine ToolsAnalysis
} {
  set helpMessage(.main.tb.$b) $m
  # ::utils::tooltip::Set $tb.$b $m
}
set helpMessage(.main.fbutton.button.addVar) EditAdd
set helpMessage(.main.fbutton.button.trial) EditTrial


image create photo tb_start -data {
  R0lGODdhFAAUAPAAANnZ2VFR+ywAAAAAFAAUAAACPoSPqQGsf5iDT1JoU5hm96Z5kZh123Q6
  ZaqmX+uyKijXs2Szrxnr9HjikUBAVPCHOPJ2oSbyoiFCk9KpFVIAADs=
}

image create photo tb_prev -data {
  R0lGODdhFAAUAPAAANnZ2VFR+ywAAAAAFAAUAAACI4SPqcvtD6MJVAKKI95v++aFS0iO5Mec
  maNqooRaq0XXNl0AADs=
}

image create photo tb_next -data {
  R0lGODdhFAAUAIAAANnZ2VFR+ywAAAAAFAAUAAACI4SPqcvtD1WYEc1bwd1x++eFTUgupCid
  FKOCqItVcUbX9q0UADs=
}

image create photo tb_end -data {
  R0lGODdhFAAUAIAAANnZ2VFR+ywAAAAAFAAUAAACPoSPqcsBztqLEgZ4rnJWZ59Nz4WR2NSR
  hlmKLMeu7kujK/3ao7mretxrpUo+WQpRNN4SoNCJ4oRuRNJodVEAADs=
}

image create photo tb_invar -data {
  R0lGODdhFAAUAKEAANnZ2QAngVFR+wAAACwAAAAAFAAUAAACO4SPqcvtf0JQ0ghBZ6rgYsSB
  mvdFmhGSJRCyp1q2KWyiZ0fb+pHvrZpp4S4LidDDMN5wDiHE9YxKp4sCADs=
}

image create photo tb_outvar -data {
  R0lGODdhFAAUAKEAANnZ2QAngVFR+wAAACwAAAAAFAAUAAACO4SPqcvtf0JQcgkBatLoYh5N
  nWeAIOBdpbiOaRseKQmDs1qzxh1n+v4KnWS01ZCIEf4SuB4EcXxKp9QCADs=
}

image create photo tb_addvar -data {
  R0lGODdhFAAUAKEAANnZ2QAngc4PNAAAACwAAAAAFAAUAAACNoSPqcvtf0JQ0tV0jxBxYq9x
  HZKFJAhk27qmqMq2rlGaJ43a46xslJR7AIMWIORzRCaXzKahAAA7
}

#----------------------------------------------------------------------
if {$png_image_support} {
	image create photo tb_start -data {
		iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABHNCSVQICAgIfAhkiAAAABl0RVh0
		U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAAHaSURBVDiNfVNNaxNRFD3vYzJmkkybBIxf
		qRmtWoooSGkXgiDiQmdR0B/hX5h/0PEfdOfCvdDF4KIUcSEUQZAuVChxNNVWbTJdTMBkMjPXxURs
		58MLDx73nnvuPe/dyzoP1wIAChIru441QsoM034C4JnrWEE6xhkDW310H4yxKB1Mkp+uAVgHwPPi
		Ms85rSqEIp836pVV72gYF+FyWQ3T1oSUm1cvtx/fWVnUGAMVEWQ6MEy7KaR4tbjQWbjYbilRPIFa
		kmw0Dn3DtNNwShPMcSm2blyfP9M63ZC9Xz5qZQX37q5wsH/dMgBRMMLLrXcnO+CCb9+6eW1mdrbG
		vx0OEcUEzx/D88dg7GSlCw01I0FcMs7Xa1UNn/ePEId0TPjfG0PiZQj1UoYg7nb3RiVF0XRVxXd/
		CCp8OiCMtAwBEeHBh4+uc2W+XTnXrLL9wRB6RUWzdiqRcEzHJIwzBADwFqDbu9291525s3qrrnNF
		crzf+RQFQZjXiMjMgetYOyBa/tI7GAz6XhjHhGlyE0A1dcq5k+g61q5h2ksHPw7fTMKohWTgxnl7
		kjuJU5IeiJb6fe8rAFGE40SgjRebIKIMyHWsnyBaBrBdRMDof381NcO0KwB+u46VWao/JyCsQtBj
		QHUAAAAASUVORK5CYII=
	}

	image create photo tb_prev -data {
		iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABHNCSVQICAgIfAhkiAAAABl0RVh0
		U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAAHUSURBVDiNnVPbatRQFF07SZlMNZ1kpjXj
		TMdOphSkFH0QfFDwAxrwC0R/I3/Q+AN+gJ8g5EEqShUV0UdFQTBCpWPbcTpjk5ALyfYl09sk8+CB
		xTmw915r7X3OATNjFrqbWw+6m1tKWVzAjGWYjy0ATwGIZTlScaFNRPREUy89HP/10yzjUpEpB4Zp
		V4jo2ZXF2qN7d2/OS6KQznJJzKfshmnXiOjFcquxcWNjTRYlEa92PqXHXljWgnZCYJh2m4he97pX
		O6ur1+YOjgLIsoTGQhUCTeni+fb7KE7SppQXr4No5/paR2u1dXHvj480Y0RejLEXT8mu6AomwpJh
		2hUA253WYkPXl+hnf4w0H9ppd5MDgcGIYxlZHhRcx4oA3N/dGxz/3h9wrSrBD0J4fgg/mCDKESII
		IkRhfEJ+dgbrIHrT67ZVpaYI/YEPZX4O9QUZAuVDyHeBgA8fP0dZxs2Lt9AD0bvOst5QNVWSRAFf
		v3xPwjgpenAiAO1cwHWsH2C+tftrv394MEiyjBElSQagDeDyBVRdxxqdc3DGyRIRva3X1ZXh8IiZ
		0XQda1TgovgvuI51yMy3h8PRN2ZUinJmEuQkI2a+A+DlfxHkJD4AE4BXlvMPGdb3LcL6lQ4AAAAA
		SUVORK5CYII=
	}


	image create photo tb_next -data {
		iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABHNCSVQICAgIfAhkiAAAABl0RVh0
		U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAAHDSURBVDiNnVNNaxNRFD1vkmiooV0kjQQV
		O4KuKogLIYoKCoqZpXv3+gveP3D+iH9AeOBacSFUQaj1a+JTk1RrWpOQmc5MPt5x0XYaYycBL7x3
		F/ecc++7716QRNpZqT1+NCtOEoIk0sx2XF8I8YTkQ62kOQpjpbL3LFMqLj4QQjy1Hff4/wjg6pXV
		/MqZk7eFEC9tx12ajguSsB23D6AwHcxlLdy7U8XYEHWvMfxYbzZJXtdKtqYFwtrdat6yDgsSAiCB
		nh+j68eoFBewubk1Xn//rQPyplZyAwCyB4SRIVpbPZiUnra2A5TLy5lLmWzx7bv6K9txa1rJF4nA
		IB5gN4xhDAAcqIjDWwA6jHC2vCTOnztd+OQ1ntmOaycCUTRAEMQwM771VKmATrcHT7d2AdzXSv5K
		BIYjA7uy+BeBBLp+jN/9CJXiCQyiCB8+f/Vp6Ggln0/2YPT6zcZ4OmM2Y4nVixesXG4BYRDQ+9L0
		Qd7SSq4lmH1fSh48YaOx6QyGJu/3++Z742cP5A2t5PokZt4oh8vl0rF2e2cb5DWtpPdPlans/Ta0
		2zs/QFa1ko2jAPNGeQ3k5TTyXorZ61yYt85/ANR7LcV/o6ZXAAAAAElFTkSuQmCC
	}

	image create photo tb_end -data {
		iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABHNCSVQICAgIfAhkiAAAABl0RVh0
		U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAAHGSURBVDiNhZJPSxtBGMaf2cxqhCQWa/EP
		Jc1YUFpowVYotCiFghSnJ8Gz38DzfgNH6KmXfgihh8JCr4WeqigtirW2HdEGlSyJMWu20d19PYhh
		N93VB95h4Hmf38zLDCMiJElItaBt612K1w4ZielLvRVvlt4LqViSOTv3+kYA67+Vmzc5/yik6kpr
		ug6AF88e9oyOFqc551+EVIWkHi6kagDIdhomN3gYEkrFwS5umuMbm7/XhFST2rYOYgAA2emXT7jZ
		nQVYZFwGHLst1Jsuhgf6OM8YpfXvP78JqSY7AQgIKB+egCL56OP8rbgY7CtkJsYf9K+ub62EfhAH
		+H6ARtMDwMDAAFylWXv947Vwb6DAxu4X81vbOg4490N43hlSvgQA4O6dHBynih87ux6AnvgNghAj
		Q72xABFQc//h2G1h+HYOXrOJ7Z29UxDNAPgcBdDX1c0AHeIZgz16PGZ0mxwn9Qbp3bIL0CttWytC
		qtgI+fawEflB2Dj3Q6NWq4fl8lEdoCltWxv/HaRtq5U0s5AKh0dO4FSqVRA917b1K6nv2p/oVKoH
		IHqaFr4JsAaiCW1b+0nmh+VPlxsiSqzSzGI+zYvWBT6H38bSaD3bAAAAAElFTkSuQmCC
	}

	image create photo tb_invar -data {
		iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABmJLR0QA/wD/AP+gvaeTAAAAB3RJ
		TUUH1wYaCjgBHgTN1wAAAlJJREFUOI3FkT1ME2EYx//3vndtLdCWmkIRCFekGAJiIhJTI0knjcYV
		jZuDRldJjF9LJwcS3XF07KTGEBTRxEQTEBJ0QaDlaiu0NS13vdLvu/d1glRb4+hvevI8eX55PoD/
		jXAQTYapXIheJoRe59w8BQGtnAtlgQhRcPbUnXTPrKzcrDUVDFx45DEpmfccdvpHh/vtrrYWSBJF
		pWogq+axvpkopbKqQko4s/X2Xq5eQDEZpi5D+zRxemh47ITfarOIqBkGVL2M7YwOk1MMDfZIjAlO
		NZ8PqBvzz34THPWN3/D5vFeP+Y5YP69uFD8urplrkYSR0wvl7o52i5ovI6tX4Jc7aOqn5rb1Tizl
		IgvKvoAwgU/pRdP+Yn5Rjyg7tyihvRKRenfVXGh5dWPP47Qht1eCXqjCJ3c5KSW36ycQGWf+bCZb
		ZIZxJTb7YK6u9rj/0vQ1TS+MHLIQ6IUK2l1tYECgXkCoQJY5Y+9is/frmwEAHHy7WquBCAKKlRos
		FhFgzN38jQDki9NewPwKwLOfGz0+CK1oQLJIkL1OLLxfanxjPT3nn7hFsfqhq9M9IPd1WznniO5o
		cDntkL0ucA4o8ZS5FU3swsQE+VPw4/XUrpUKgVRa/bIZ+V6q1hiskgjOgKrJEI1tG1vReBK8Nq7M
		3V1vmOBgnWDIJrTaXjkcrQG5r8fuaLMjnkhW4/FkHNQ8q7x8mG66Qj1jYzOS2qmFbXbbOYezhaZT
		mW9cKgdjz0PaX2/QwGSYykUlDM5OlgxxJP3mTuGfPY1wIRgMic0qvwAa9wLWla9eZgAAAABJRU5E
		rkJggg==
	}

	image create photo tb_outvar -data {
		iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAAZiS0dEAP8A
		/wD/oL2nkwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB9oCHAw7EDdhKJYAAAI+SURBVDjL
		xVNLaxNhFD3fI5PJJGmiNi1Vq60xECm+wI1aLFhELVkIQn9BUZFu2oUgQZGWFgTrXhBB3AVciBhF
		SVARXVhciBZsO76wYkxiOs10JjOZmc9VIdGKdeVdnnvOuZfLucD/LrIaeOjqRd+COX0alJyCJ+IA
		ZAA6OJ2G413X1u3IlM5OuasabJ88ERHCfi56lG7lQCDQGmqDxCXYXh0VU8NSvmzQWWuOejgyl75X
		/M0gfjmVqx2L9HYnYtJCtQZL1NHulxH2UcicgXMZall1nRvGjBZJ7mVN4vHUYa8zMNJxsCM4v0gh
		qjbCsoXlXFnX7xe9ysuKU/At2lu7NvpLfiusqMXvtGm8hBGzPxSpWjakzzaiLRaczJJO561LUHgn
		JNrJ87Uzn66pS1iUFDjOKG/UC0H2xwJ+lOsUImRAqwrIhvNRTWenGmi34hMDRT6j34bjJZo2IK67
		XuIS3KoHcAqyXAM8sfDrndR09gGpO3lIbJrEJwZEYzM0nEChAFDdhNcmELzZpC+Csl3q+bvfVgAK
		ypKgpGgdj7ktwz3gYBDMAdE8BH110KHNcHf7LQBvPa4kG8UAwCq52fKGvm0Z9qE2qCuW4muVqaEz
		UBdwIwB5UjLZO/s1kUjf+3N3tD8mMT5+tB2cP7N7o1vCPVHph20g8Egz6BfrBauK1OxktvbXKMcv
		9EWhhB67O8NJ+tV1ScV6uMm3Z/Dp6Fh9zb/QNXYyyJj5BpS80iLJwZXM/1Ptu9LP/USQtXB/AkJk
		7Ms2MTbJAAAAAElFTkSuQmCC
	}
}
#----------------------------------------------------------------------

################################################################################
#  Image data for "find best move" training
################################################################################
image create photo tb_lightbulb -data {
  R0lGODlhFAAUAOf7AJB+DJKAD5WCEpGFHpaJGZ2PFZ+QBm2UlaCSJKGTJaaWEnOam6ubGqed
  GaScLHeen6ieG3mgoauhH3yjpKSmE4CkoIGloaaoI6+lLomlooamqbCmL4qmo6qrHLSpKYqp
  rI2pprWqKouqraOvQo+rqLSrRIaur6GsdYuuqq+wLYevsJ6tgrGxJJGtqpitrJOwoZOvra2y
  R5SwrpqvrrO1MpaysJmznp6ysbe4NZm1s723N6ays6C0s7m6OJe3uqi3i6K2tb66Qbu8Opm5
  vJ25tp66t8C/Kp+7uMLAIL2+RMa7TJy8v7+/PaC8uae7uqG9uq26u56+waK+u8DCR6O/vKa+
  wqm+vcbEMaTAvqe/xLC9vsPEQqq/vqjAxcTFQ8vEPMPFSqnBxqzBwMTGTK3Cwa7Dws/HP8fI
  TqzEycnJR7HFxLLGxcnLWLPHxrXJyLvIyb7Iw9PNVLPLz7zJyrbLyr3Ky77LzLjNzNDSXr/M
  zbnOzbrPztLUYLvQz9HUZ7zR0MPP0L3S0b/T0sLS2MXS0sDU08bT08nTzcfU1d/bSdzeOMjV
  1sLX1tjbbtzcWd/aaMnW1+PbW8PY19ncb8rX2M3X0svY2cXa2czZ2uLgVtLY2s3a2+PhV8fc
  29jkXtbkZeHfeuPiYNfbys/c3OPlSMne3ebjWdDd3efkWtHe3+XifePig93ex9Lf4NPg4dTh
  4ubnctfh3NXi4+Xoetji3dvi19bj5OjpdNfk5drk3+zpg97l2tjm5t3m4drn59rp3OHn3O/s
  huDp0Nvo6eTm49zp6uDr2N3q6+Dq5ePq3+Tp7OHs2d7r7OHr5uTr4OTt1N/s7eXs4eDt7ubs
  7uHu7+ft7/HzoOnu8Onw5efw6+rv8uvw8+7y4ezx9Ov02+zz5/Dz4u3y9e7z9vHz8Pv3rPT1
  3u/19/j22fL42fD37PD2+Pb34PL3+fP4+/b49PT5/Pf59vX6/fj69/b7/vn7+Pr8+ff9//v9
  +vj+//z/+/7//P///////////////////yH5BAEKAP8ALAAAAAAUABQAAAimAP8JHEiwoMGD
  RBISOcjQkr6H+sIxJEhEHkSI7/RM/Afp4kVfCxnyuufxYbc9DInIajfPY71jp1Ke2sau3sN7
  9MzJsjTRki1k4NClw6bs16kmE4m44gXJl69DxlwJ2vjP0M5Rp1zJgkRVIKFTZaoYGtVVoAxX
  ZFrswVJW4AMNHw6saPuPTSNVfBrQDRWM3C29bRVlQkUKcNkpY7YkUUD3HwMGjcsGBAA7
}
image create photo tb_backward -data {
  R0lGODlhFAAUAOevAAAfTQAgUAAjWAAmXQA4dQpFfQBQlA9NhwBVmwBgpwVnrgBrrw5rrgBx
  twBxuBZsrx9sqwB4vgB4wAB5wAB7zwB8zwB9zwV+zwSA0Cx5twCE0QCFzgCF1ACG0gCHygCH
  zgCHzwCJzQuG0gCJ1QCK1h+DxACL1wCM1yuCwQCO2ACP0geN1QCP1xeJ0wCR1BaL1ACT2gWS
  2QCV2wCW2wiU2SKN1AGX3AOX2wCa3g2Y2QCc3gOd3hWZ2jmTwwCh4hya2hWc3AOi4hOf4A2h
  4ACl5Q+i4ASm5ACn5gCn6Aml4hqh2CSe3Bmi2imd3Q6l4wCp6TGc2gWo5gGp6AOp6ACq6gmo
  5QCs7ACs7RWn5Aar6gCt7jue20Oc2ACu8FCa0wCv7yql4ACx8z6j0EGh3ACy9Cuo4VWf1h2u
  5w+y7guz8E+i2Taq4iKw6HOduxq07lil2imz6kat3lyn2xy48Si27WOp3UKz5hu9+CC89S25
  71qu2YCnxEq05ku14yO/+GKw12uv4lS352K13DXA9k+87UfH+WXB7GTD71jJ9lfK+aK5yqy3
  yGXJ9HjQ+pbN64TT+ozV+rLO35zZ+6Da+afc+6jd+8PY5bza79TV3K/f+8fe6rzj/crl9s3l
  8dDl9Mfo/+Hj6ebi5tXn8ubn6+zo6u/p6vDt7vDu7u/u8fHu7+/v8vbx8Pfy8fb09fz39///
  ////////////////////////////////////////////////////////////////////////
  ////////////////////////////////////////////////////////////////////////
  ////////////////////////////////////////////////////////////////////////
  ////////////////////////////////////////////////////////////////////////
  /////////////////////////////////yH5BAEKAP8ALAAAAAAUABQAAAj+AP8JHEiwoMGD
  CBMO1NChgwaFBJcYqvRp0yQ+PxRuOJQJUqE7fhJJomQnIaFGeMKEIUNm5aBHZQ7mYJTmi82b
  Nucg+lBQghs0V65okVIlaBcmVvJEKRiCzhMqScQs6oNEyZ5IU7LAmUDQxZkjPRShcvWnDahW
  nYwQYROBoAonekKtOpUKE6tTpjQF8YGlAUEPQ3AE8jSqlCBOqkhZ2qGjyAKCDoTMkHFjzaU4
  MMA4EnXDBpAEBA3QiJGiNAkWpU2cSMEDhEEFUEZwmE179oomCA6W2CKCAoUKFShYeDGGAUIC
  KORwaXEBQw01bx5APJDBDKA6XiAUgDgwwAABALgEix8YEAA7
}
image create photo tb_forward -data {
  R0lGODlhFAAUAOerAAAfTQAgUAAjWAAmXQA4dQpFfQBQlA9NhwBVmwBgpwVnrgBrrw5rrgBx
  twBxuBZsrx9sqwB4vgB4wAB5wAB7zwB8zwB9zwV+zwSA0Cx5twCE0QCFzgCF1ACG0gCHygCH
  zgCHzwCJzQuG0gCJ1QCK1gCK1x+DxCuCwQCN1wCO2ACP0geN1QCP2BeJ0wCR1BaL1AWS2QCU
  2wCV2wCW2wiU2SKN1AGX3ACb3giZ3A2Y2QCc3hWZ2kKPvACg4gCg4xya2hWc3BOf4A2h4ACl
  5ACl5Q+i4ACm5Qqk4QKn5iSe3Cmd3ROk3gum4wCp6TGc2gWo5iWh1gCq6xGm4waq5wCs7QCs
  7hWn5Aar6gCt7zue20Oc2FCa0wCv7y2k2wCx80Gh3ACy9Cuo4TGo4VWf1h2u5w+y7kykzk+i
  2Qu08CKw6FGl0Rq07lil2imz6j+u4zWx5Vyn2xy48Si27WOp3UKz5hu9+CC89S2570q05oOn
  wCO/+Fqy3Guv4o2pwzXA9nC02U+87UfH+Wy/6mXB7GTD71jJ9lfK+WXJ9JLH4LHC0HjQ+r7B
  zp7L4oTT+qHP5ozV+qnU7KbV66rU7ZzZ+6Da+afc+6jd+9TV3K/f+7zj/dLi8cfo/9bn9Ojn
  7Ovn6ujo6+zo6trs+fPr6vDt7u/u8PLv8PHw8vXx8Pbx8fb09v/6+P//////////////////
  ////////////////////////////////////////////////////////////////////////
  ////////////////////////////////////////////////////////////////////////
  ////////////////////////////////////////////////////////////////////////
  ////////////////////////////////////////////////////////////////////////
  /////////////////////////////////yH5BAEKAP8ALAAAAAAUABQAAAj+AP8JHEiwoMGD
  CBMO1NChgwaFBJMMsrQpEyU8PxRuIITpUaA6egxNqkQnISBFdrx4AQNmpZ9GYQ7mOISGi82b
  NuMU+lBQwpoyS7BUoTKFCRYqSO88KRhCThNEfaAgebPIzJEoTa60mUDQBRkikVJ1yqNGlalE
  PIwMSROBoAopPRyNGoXqUqlRpzz98WGlAUEPQm4wAkUq1B5RnzgJuqGjyAKCDoLIgCRJTIwu
  mtzgiDHDBpAEBA3QgIGiRIoULEicPr0DhEEFTkZwmE179golCA6ayCKCAoUKFShYePGFAUIC
  J+BoaXEBQ40zbB5APJBhDJ85WyAUgDgwwAABALgEix8YEAA7
}
image create photo tb_stop -data {
  R0lGODlhFAAUAOedAF0AAGAAAGgAAGwAADYSBD0UBEMVA38IAI4NAKMJAKQJAKMKAKQKAJkP
  AIgUC54SAKMSAKMVAKQVAJEaESk2NagXADA2MzU1MasXAKoZALIXAKsaBrYcADNAPzpAPcwb
  AD8/O8wcAL8gAMMgAK4lENAeANAfAMsiANwgAMwlANQjAMwmAMwmBNElBD1KSssmDc0nA0hI
  RERJR7AuGdImCdcmANInCbouEcwpEdgoAOMlAM8qD8gtCNYqBtEsA9IrC9sqAK01ItYtCOcp
  AL40GNcvBOEtAF9NSFtOS0lTVVZQTlNRT09SUuwsANAzG+UwAMI3JNszBeUxAPAuAN00Bdg1
  D901Btg1Fdw2DeE2A884JuM3AOI4A/QzAOo2AOQ4AOE5BrlBMuo5AMFBMO45ANE+LtBCFuc+
  CvI9APM9AGJfXl5gYfU9APY9APs8AFliZedBDPU/APY/ANpDLe9DB/NDBNdHNO9HC+pIFdRO
  Ie5JEvNKDdhQQdJVLPBRG9pVRvZSE9ZWS/lUCflXEOVeL9FhV/ZcI9dgV9RlXd1nQNhnYNlq
  ZOVqQfpoMPlsOtpybPVwRPpwPN55dfuBVvyIYPqNZfWXdfuWdPidffudf/uhhf6qjv+zl///
  ////////////////////////////////////////////////////////////////////////
  ////////////////////////////////////////////////////////////////////////
  ////////////////////////////////////////////////////////////////////////
  ////////////////////////////////////////////////////////////////////////
  ////////////////////////////////////////////////////////////////////////
  /////////////////////////////////yH5BAEKAP8ALAAAAAAUABQAAAj+AP8JHEiwoMGD
  CBMOXKCAQQKFBIkkwsRpk6U+NxRCYKSpUiNBgyJdypQnIaFJgNqwiROHjRxDlMwc5AGpDpo0
  OHOi2eOIQ0EJd+iQ2VLAgFEDBNyQ8fOloAg9XryAWaOmqpo3XbyIwYOB4IozUqREYbKk7JIk
  U6Q8gZOBYIosRowUkRGjbgwXTeJyqUBwBBUgQHx4AEEYRIchgK1EIKgBS40aMCxcmHyBgo4a
  Oao8IIhASA8VLJAcGX1ECQoVV04Y3GCnhQkbNGLTsFHix5wGB6Hw2fHhQ4gQvp38IYHwwJhF
  gbS8wFHmkKIZECeEQSTpUaEgDiAODDBAAADt4AcCBgQAOw==
}

ttk::frame .main.fbutton
ttk::frame .main.fbutton.button -relief raised -border 1
button .main.fbutton.button.start -image tb_start -command ::move::Start
button .main.fbutton.button.back -image tb_prev -command ::move::Back
button .main.fbutton.button.forward -image tb_next -command ::move::Forward
button .main.fbutton.button.end -image tb_end -command ::move::End
bind .main.fbutton.button.end <Button-$::MB3> ::tactics::findBestMove
ttk::frame .main.fbutton.button.space -width 15

# The go-into-variation button is a menubutton:
menubutton .main.fbutton.button.intoVar -image tb_invar -menu .main.fbutton.button.intoVar.menu -relief raised
menu .main.fbutton.button.intoVar.menu -tearoff 0 -font font_Regular

button .main.fbutton.button.exitVar -image tb_outvar \
    -command {::move::ExitVar }
button .main.fbutton.button.addVar -image tb_addvar \
    -command {sc_var create; updateBoard -pgn -animate}
ttk::frame .main.fbutton.button.space2 -width 15

image create photo tb_flip -data {
  R0lGODdhFAAUAKEAAAAAANDAoKCAUIsAACwAAAAAFAAUAAACXoSPqcHiHJyA0tDXcHS2jT9s
  UyYYEgheY2AKXxaSUPuK6gww3/S66MDJBVK9H7AkHKIiywpAotxFa6ynD8ULpaoOY5YZ69hk
  yuBNh9khz1M1EirD4uDjemtFpyv2/AIAOw==
}

image create photo tb_coords -data {
  R0lGODdhFAAUAKEAANnZ2QAAANDAoKCAUCwAAAAAFAAUAAACR4QRFsItA+FJyrUoUdjIMjwc
  4uKB4gRC1oSmq9aCLxJjM4Wkw11H70YJ6GYjoPF4SiqXTEVTwWE9nZPoEjh6BrPaBA47VRYA
  ADs=
}

image create photo tb_stm -data {
  R0lGODlhFAAUAMIAANDAoKCAUAAAAP///////////////////yH5BAEKAAQALAAAAAAUABQA
  AANHSLHMQjDKRp+8tNkbs+OTF2ygOIKdSHJA67qPIM/Wa8dDntc2TAi6HaTnAwZ5RNxxSAQo
  dchejCZjJlFWKfZHpW2/4LAYmwAAOw==
}

image create photo tb_trial -data {
  R0lGODlhFAAUABEAACH5BAkAAAAALAAAAAAUABQAodnZ2QAAAKCAUIsAAAI8
  hI+pMD0LnYOqGUvjy3WDAAYZZoQiRZYn6n0hl5gyeKSmgOdC3c4yZYLFVkIX
  rWgkUnAK5lIHzUCjSEgBADs=
}

image create photo tb_trial_on -data {
  R0lGODdhFAAUAKEAAP//4IsAAAAAAKCAUCwAAAAAFAAUAAACPISPqRAdC52DqhlL48t1AwEK
  GWaEIkWWJ+p9IZeYMnik5oDnQ93OMmWCxVZCF61oJFJwCuZSB81Ao0hIAQA7
}

image create photo tb_hgame_prev -data {
R0lGODlhEAAQAMZ1ACBKhyFKhiBLhyFLhiFLiCJLhyNLhSRLhSFMhyFMiCNMhyRMhSRMhiJNiSVN
hyZNhSVNiSVOiShPiCtQhC1QgipRhzFRgDRUgTlWgDdaijhfljVgmjRlpDZmpT5on0VqnkRtoz9v
qz9vrEZupEBvrEluokBwrEBxq0FxrElxqEZyrE10pkp1rUt3rk53q1B3q014r0l5s095sEt6s1B6
r017tIh1WFN8sVZ+s1d/s1iAs5p4RpN6U518Sp18S55+TZ9+Tl2Hu1+Hup9/TmCIuaCAT5eBYKCA
UKCAUaCBUaGBUWGKvKODVaOEVaOFVqGGW2aOvqWGWGaPv2qRwGuSwWyTwm2Uwm6Uwm+UwqeNZaqR
aaaciLaddLaedbWfe7ymf7KplMq4lsu4l8u6mMu8nsu9oM69nM6+nc+/ns+/n8+/oNDAn9DAoNHB
oNHBodHCotLDo9PEpdTFptbIqtfJrP///////////////////////////////////////////yH5
BAEKAH8ALAAAAAAQABAAAAfFgH+Cg4SDbG1shX8EAIJIX3GHiYQZGgpMR0mQkoM8GB9YDk1HPV9z
cnFogxYlVFcRALGxD1FFggIrUDVBVVZVv1MGR0d/CS9LMzHKyzNSB8MAI0InJiQiIiEhIihEBj9D
fw0uMhzl5hwdOg5mZ4IIKTAcKjg59Tk3Dm6Tfw8gLTQQAggcUEACm31bKnhgwUBLlideypB5A2eQ
GjATNiyYE4cOlx1AlDgZtCaMEQoLxrCJ08XHMGKFbFwQk4aly2GKFN08EggAOw==
}

image create photo tb_hgame_next -data {
R0lGODlhEAAQAMZsACBKhyFKhiBLhyFLhiFLiCJLhyNLhSRLhSFMhyFMiCNMhyRMhSRMhiJNiSVN
hyZNhSVNiSVOiShPiCtQhC1QgipRhzFRgDRUgTlWgDdaijhfljVgmjRlpDZmpT5on0VqnkRtoz9v
qz9vrEZupEBvrEluokBwrEBxq0FxrElxqEZyrE10pkp1rUt3rk53q1B3q014r0l5s095sEt6s1B6
r017tIh1WFN8sVZ+s1d/s1iAs5p4RpN6U518Sp18S55+TZ9+Tl2Hu1+Hup9/TmCIuaCAT5eBYKCA
UKCAUaCBUaGBUWGKvKODVaOEVaOFVqGGW2aOvqWGWGaPv2qRwGuSwWyTwm2Uwm6Uwm+UwqeNZaqR
aaaciLaddLaedbWfe7ymf7KplMq4lsu4l8u6mMu8nsu9oM69nM6+nc+/ns+/n8+/oNDAn9DAoNHB
oNHBodHCotLDo9PEpdTFptbIqtfJrNDAoNDAoNDAoNDAoNDAoNDAoNDAoNDAoNDAoNDAoNDAoCH5
BAEKAH8ALAAAAAAQABAAAAfEgGxtbH+FhoeGgmxxX0iFAASIf4qMSUdMChoZiGhxcnNfPUdNDlgf
GDyGRVEPAK6uEVdUJRaGR0cGU1W7VlVBNVArAoW3B1IzMcnKM0svCX9DPwZEKCIhISIiJCYnQiMA
Z2YOOh0c5uccMi4Nk24ONznxOTgqHDApCIVsbBIFAwEAIdBoAeKBIThvyJTx8iSLFgYsPFTYYsiJ
EiA7uNCJM2fBhglg1Ni65aNLHDZjFlAwEmbNyCMl46QRc8GGpFswJUkKBAA7
}


#----------------------------------------------------------------------
if {$png_image_support} {
	image create photo tb_flip -data {
		iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABHNCSVQICAgIfAhkiAAAABl0RVh0
		U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAAMLSURBVDiNbZJNaFRXFMf/5777Ms5XJqOT
		z8aYEUFF0xY1ptCQtlDoYkRKFRRBLMWGgjuh+nQj2M1YQVcllFaEkrSlUiklr7OorbZqoTEimmDU
		NvOamGSaaWImmY83mXlzTxfOg1l44O7O+fE/v3OJmeFWNBZfT0RnAbzBzC1EtATQBLMaAPCjZRrl
		mt5TAAbIBURj8XdB9LU3EJRrw0G9OVIPr67BtleR+nchl/ovUwHzR5ZpfBuNxfsBfA6ggZgZ0Vh8
		K4hGQ5FGn8fjQcivozUSRCTkRSTkQ8CrI5Mt4EpitJDNF+/41ui77WKpjhlrnwP2nPvC6w98IDRN
		2LkslFKQgiqN64KF7Zs7Aju2tFOdrkFqhMTtCdXTtUF8Nni95FRURFRXOrhq24KdMq9rbi5E2tpP
		OBW1PpVe3nft1vi9b8yRQs4uQpca9r/9suhobgAAAqCeA5j9QpDT17vrstDkMoCrlmmkLNP4OTl8
		cuf03OKxi5evYX5xBVZqBY5Srkt2E6iXWps+qQ94L3S2N3UBsGpsSyI6+mbP5lJHSxhNYR+kEG4C
		ltW+8I2Bw1m8uL5k5tfvjv9TvD8xXSQQQIBTUWsAsHuFVQC6G6vm/QrgKIDyC8DSMo0ZF+Cc//g9
		DQCUYtwYnVSJ38eegvlVyzQytVNnhh62razkN/ww/MtNAA3uCiACJmeX4ZFA4rcHBODT2uHu/iE/
		ESV7Xtk0ODU91w1AA7AqAEAIIgDobK1Ha2M9PjzQR6Gg7/zGPedGorH47irjiEeX0ppKHX/0ONlL
		RGXLNMrS1ZnNl3DzXpLf6t5EbY0hHNr7mm9kfHrXX5Oz16OxeJ0mpQQRzykFITQioqsAIKvW6NL3
		t+2Z+Uzy7thU5zt9Xf5Q0IuOtgj5/H5feimP9LMsKo4iIQQyC+kCmM8CgKiKo5n5zCVr+OT25Wz+
		/e9++nPpSuJObuzJLOYXc8jZZTATnHKpkllI22Dut0zjIQC4V/gKwBHLNLj6eXQAe4nEMYC3MXOY
		iNIA/mDm05Zp/O3K/R/qul6uO089wQAAAABJRU5ErkJggg==
	}
}
#----------------------------------------------------------------------

##############################

namespace eval ::board {
  
  namespace export sq
  
  # List of square names in order; used by sq procedure.
  variable squareIndex [list a1 b1 c1 d1 e1 f1 g1 h1 a2 b2 c2 d2 e2 f2 g2 h2 \
      a3 b3 c3 d3 e3 f3 g3 h3 a4 b4 c4 d4 e4 f4 g4 h4 \
      a5 b5 c5 d5 e5 f5 g5 h5 a6 b6 c6 d6 e6 f6 g6 h6 \
      a7 b7 c7 d7 e7 f7 g7 h7 a8 b8 c8 d8 e8 f8 g8 h8]
}

# ::board::sq:
#    Given a square name, returns its index as used in board
#    representations, or -1 if the square name is invalid.
#    Examples: [sq h8] == 63; [sq a1] = 0; [sq notASquare] = -1.
#
proc ::board::sq {sqname} {
  variable squareIndex
  return [lsearch -exact $squareIndex $sqname]
}

# ::board::san --
#
#	Convert a square number (0-63) used in board representations
#	to the SAN square name (a1, a2, ..., h8).
#
# Arguments:
#	sqno	square number 0-63.
# Results:
#	Returns square name "a1"-"h8".
#
proc ::board::san {sqno} {
  if {($sqno < 0) || ($sqno > 63)} { return }
  return [format %c%c \
      [expr {($sqno % 8) + [scan a %c]}] \
      [expr {($sqno / 8) + [scan 1 %c]}]]
  
}

# ::board::new
#   Creates a new board in the specified frame.
#   The psize option should be a piece bitmap size supported
#   in Scid (see the boardSizes variable in start.tcl).
#   The showmat parameter adds a frame to display material balance
#
proc ::board::new {w {psize 40} {showmat "nomat"} } {
  if {[winfo exists $w]} { return }
  
  set ::board::_size($w) $psize
  set ::board::_border($w) $::borderwidth
  set ::board::_coords($w) 0
  set ::board::_flip($w) 0
  set ::board::_data($w) [sc_pos board]
  set ::board::_stm($w) 1
  set ::board::_showMarks($w) 0
  set ::board::_mark($w) {}
  set ::board::_drag($w) -1
  set ::board::_showmat($w) 0
  
  if { $showmat != "nomat"} { set ::board::_showmat($w) 1 }
  
  set border $::board::_border($w)
  set bsize [expr {$psize * 8 + $border * 9} ]
  
  
  ttk::frame $w -class Board
  canvas $w.bd -width $bsize -height $bsize -cursor crosshair -background black -borderwidth 0 -highlightthickness 0
  if {[info tclversion] == 8.5} {
    grid anchor $w center
  }
  
  grid $w.bd -row 1 -column 3 -rowspan 8 -columnspan 8
  set bd $w.bd
  
  
  # Create empty board:
  for {set i 0} {$i < 64} {incr i} {
    set xi [expr {$i % 8} ]
    set yi [expr {int($i/8)} ]
    set x1 [expr {$xi * ($psize + $border) + $border +1 } ]
    set y1 [expr {(7 - $yi) * ($psize + $border) + $border +1 } ]
    set x2 [expr {$x1 + $psize }]
    set y2 [expr {$y1 + $psize }]
    
    $bd create rectangle $x1 $y1 $x2 $y2 -tag sq$i -outline ""
  }
  
  # Set up coordinate labels:
  for {set i 1} {$i <= 8} {incr i} {
    ttk::label $w.lrank$i -text [expr {9 - $i}]
    grid $w.lrank$i -row $i -column 2 -sticky e
    ttk::label $w.rrank$i -text [expr {9 - $i}]
    grid $w.rrank$i -row $i -column 11 -sticky w
  }
  foreach i {1 2 3 4 5 6 7 8} file {a b c d e f g h} {
    ttk::label $w.tfile$file -text $file
    grid $w.tfile$file -row 0 -column [expr $i + 2] -sticky s
    ttk::label $w.bfile$file -text $file
    grid $w.bfile$file -row 9 -column [expr $i + 2] -sticky n
  }
  
  # Set up side-to-move icons:
  ttk::frame $w.stmgap -width 3
  ttk::frame $w.stm
  frame $w.wtm -relief solid -borderwidth 1 -background white
  frame $w.btm -relief solid -borderwidth 1 -background black
  grid $w.stmgap -row 1 -column 1
  grid $w.stm -row 2 -column 0 -rowspan 5 -padx 2
  if {$::board::_showmat($w)} {
    canvas $w.mat -width 20 -highlightthickness 0
  }
  
  grid $w.wtm -row 8 -column 0
  grid $w.btm -row 1 -column 0
  if {$::board::_showmat($w)} {
    grid $w.mat -row 1 -column 12 -rowspan 8 -pady 5
  }
  
  ::board::stm $w
  ::board::coords $w
  ::board::resize $w redraw
  if {$::board::_showmat($w)} {
    ::board::material $w
  }
  ::board::update $w
  return $w
}

# ::board::defaultColor
#   Returns the color (the value of the global
#   variable "lite" or "dark") depending on whether the
#   specified square number (0=a1, 1=b1, ..., 63=h8) is
#   a light or dark square.
#
proc ::board::defaultColor {sq} {
  return [expr {($sq + ($sq / 8)) % 2 ? "$::lite" : "$::dark"}]
}

# ::board::size
#   Returns the current board size.
#
proc ::board::size {w} {
  return $::board::_size($w)
}

################################################################################
# Pascal Georges :
# an alias resize function to handle the bug (flip + resize) : when the board was flipped, and the board resized
# its state was incoherent. As this did not occur when the board is not flipped, unflip the board before the
# resizing : should be fixed !
################################################################################
proc ::board::resize2 {w psize} {
  if {$psize == $::board::_size($w)} { return $psize }
  if { ! [ ::board::isFlipped $w ] } {
    ::board::resize $w $psize
  }  else {
    ::board::flip $w
    ::board::resize $w $psize
    ::board::flip $w
  }
}

# ::board::resize
#   Resizes the board. Takes a numeric piece size (which should
#   be in the global boardSizes list variable), or "-1" or "+1".
#   If the size argument is "redraw", the board is redrawn.
#   Returns the new size of the board.
#
proc ::board::resize {w psize} {
  global boardSizes
  
  set oldsize $::board::_size($w)
  if {$psize == $oldsize} { return $oldsize }
  if {$psize == "redraw"} { set psize $oldsize }
  if {$psize == "-1"} {
    set index [lsearch -exact $boardSizes $oldsize]
    if {$index == 0} { return $oldsize }
    incr index -1
    set psize [lindex $boardSizes $index]
  } elseif {$psize == "+1"} {
    set index [lsearch -exact $boardSizes $oldsize]
    incr index
    if {$index == [llength $boardSizes]} { return $oldsize }
    set psize [lindex $boardSizes $index]
  }
  
  # Verify that we have a valid size:
  if {[lsearch -exact $boardSizes $psize] < 0} { return $oldsize }
  
  set border $::board::_border($w)
  set bsize [expr {$psize * 8 + $border * 9} ]
  
  $w.bd configure -width $bsize -height $bsize
  set ::board::_size($w) $psize
  
  # Resize each square:
  for {set i 0} {$i < 64} {incr i} {
    set xi [expr {$i % 8}]
    set yi [expr {int($i/8)}]
    set x1 [expr {$xi * ($psize + $border) + $border }]
    set y1 [expr {(7 - $yi) * ($psize + $border) + $border }]
    set x2 [expr {$x1 + $psize }]
    set y2 [expr {$y1 + $psize }]
    $w.bd coords sq$i $x1 $y1 $x2 $y2
  }
  
  # Resize the side-to-move icons:
  set stmsize [expr {round($psize / 4) + 5}]
  $w.stm configure -width $stmsize
  $w.wtm configure -height $stmsize -width $stmsize
  $w.btm configure -height $stmsize -width $stmsize
  
  # resize the material canvas
  if {$::board::_showmat($w)} {
    $w.mat configure -height [expr $psize * 8]
    $w.mat configure -width 20
    ::board::material $w
  }
  
  ::board::update $w
  
  return $psize
}

# ::board::border
#   Get or set the border width.
#   If the optional argument is missing or the empty string, returns
#   the width of the board.
#   Otherwise, the board sqyare borders are set to the specified width.
#
proc ::board::border {w {border ""}} {
  if {$border == ""} {
    return $::board::_border($w)
  } else {
    set ::board::_border($w) $border
    ::board::resize2 $w redraw
  }
}

# ::board::getSquare
#   Given a board frame and root-window X and Y screen coordinates,
#   returns the square number (0-63) containing that screen location,
#   or -1 if the location is outside the board.
#
proc ::board::getSquare {w x y} {
  if {[winfo containing $x $y] != "$w.bd"} {
    return -1
  }
  set x [expr {$x - [winfo rootx $w.bd]}]
  set y [expr {$y - [winfo rooty $w.bd]}]
  set psize $::board::_size($w)
  set border $::board::_border($w)
  set x [expr {int($x / ($psize+$border))}]
  set y [expr {int($y / ($psize+$border))}]
  
  if {$x < 0  ||  $y < 0  ||  $x > 7  ||  $y > 7} {
    set sq -1
  } else {
    set sq [expr {(7-$y)*8 + $x}]
    if {$::board::_flip($w)} { set sq [expr {63 - $sq}] }
  }
  return $sq
}

# ::board::showMarks
#   Turns on/off the showing of marks (colored squares).
#
proc ::board::showMarks {w value} {
  set ::board::_showMarks($w) $value
}

# ::board::colorSquare
#   Colors the specified square (0-63) of the board.
#   If the color is the empty string, the appropriate
#   color for the square (light or dark) is used.
#
proc ::board::colorSquare {w i {color ""}} {
  if {$i < 0  ||  $i > 63} { return }
  if {$color != ""} {
    $w.bd itemconfigure br$i -state hidden
  } else {
    set color [::board::defaultColor $i]
    set brstate "normal"
    foreach mark $::board::_mark($w) {
      if {[lindex $mark 1] == $i && [lindex $mark 0] == "full"} {
        set color [lindex $mark 3]
        set brstate "hidden"        
      }
    }
    $w.bd itemconfigure br$i -state $brstate
  }
  $w.bd itemconfigure sq$i -fill $color -outline ""  
}

# ::board::midSquare
#   Given a board and square number, returns the canvas X/Y
#   coordinates of the midpoint of that square.
#
proc ::board::midSquare {w sq} {
  set c [$w.bd coords sq$sq]
  #Klimmek: calculation change, because some sizes are odd and then some squares are shifted by 1 pixel
  # set x [expr {([lindex $c 0] + [lindex $c 2]) / 2} ]
  # set y [expr {([lindex $c 1] + [lindex $c 3]) / 2} ]
  set psize $::board::_size($w)
  if { $psize % 2 } { set psize [expr {$psize - 1}] }
  set x [expr {[lindex $c 0] + $psize/2} ]
  set y [expr {[lindex $c 1] + $psize/2} ]
  return [list $x $y]
}


# ::board::setmarks --
#
#	Set the marks for the board:
#	colored squares, arrows, circles, etc.
#
# Arguments:
#	w	A frame containing a board '$win.bd'.
#       cmds    Commands to draw the marks
# Results:
#	Sets ::board::_mark($w) with all the right formatted commands.
#       Marks will be drawn by ::board::update
#	Returns nothing.
#
proc ::board::setmarks {w cmds} {
  set ::board::_mark($w) {}
  foreach {cmd discard} [mark::getEmbeddedCmds $cmds] {
    lset cmd 1 [::board::sq [lindex $cmd 1]]
    set dest [::board::sq [lindex $cmd 2]]
    if {$dest != -1} {lset cmd 2 $dest}
    lappend ::board::_mark($w) $cmd
  }
}

### Namespace ::board::mark

namespace eval ::board::mark {
  namespace import [namespace parent]::sq
  
  # Regular expression constants for
  # matching Scid's embedded commands in PGN files.
  
  variable StartTag {\[%}
  variable ScidKey  {mark|arrow}
  variable Command  {draw}
  variable Type     {full|square|arrow|circle|disk|tux}
  variable Text     {[-+=?!A-Za-z0-9]}
  variable Square   {[a-h][1-8]\M}
  variable Color    {[\w#][^]]*\M}	;# FIXME: too lax for #nnnnnn!
  variable EndTag   {\]}
  
  # Current (non-standard) version:
  variable ScidCmdRegex \
      "$StartTag              # leading tag
  ($ScidKey)\\\ +        # (old) command name + space chars
  ($Square)              # mandatory square (e.g. 'a4')
  (?:\\ +($Square))?     # optional: another (destination) square
  (?:\\ *($Color))?      # optional: color name
  $EndTag                # closing tag
  "
  # Proposed new version, according to the
  # PGN Specification and Implementation Guide (Supplement):
  variable StdCmdRegex \
      "${StartTag}            # leading tag
  ${Command}             # command name
  \\                     # a space character
  (?:(${Type}|$Text),)?  # keyword, e.g. 'arrow' (may be omitted)
  # or single char (indicating type 'text')
  ($Square)              # mandatory square (e.g. 'a4')
  (?:,($Square))?        # optional: (destination) square
  (?:,($Color))?         # optional: color name
  $EndTag                # closing tag
  "

  # ChessBase' syntax for markers and arrows
  variable CBSquare    {csl}
  variable CBarrow     {cal}
  variable CBColor     {[GRY]}
  variable Square      {[a-h][1-8]\M}
  variable sqintern    {[a-h][1-8]}

  variable CBSquareRegex \
     "$StartTag
     ($CBSquare)\\\ +
     ($CBColor)
     ($Square)
     (?:,($CBColor)($Square))?
     $EndTag
     "

  variable CBArrowRegex \
     "$StartTag
     ($CBarrow)\\\ +
     ($CBColor)
     ($sqintern)
     ($sqintern)
     $EndTag
     "
}

# ::board::mark::getEmbeddedCmds --
#
#	Scans a game comment string and extracts embedded commands
#	used by Scid to mark squares or draw arrows.
#
# Arguments:
#	comment     The game comment string, containing
#	            embedded commands, e.g.:
#	            	[%mark e4 green],
#	            	[%arrow c4 f7],
#	            	[%draw e4],
#	            	[%draw circle,f7,blue].
# Results:
#	Returns a list of embedded Scid commands,
#		{command indices ?command indices...?},
#	where 'command' is a list representing the embedded command:
#		'{type square ?arg? color}',
#		e.g. '{circle f7 red}' or '{arrow c4 f7 green}',
#	and 'indices' is a list containing start and end position
#	of the command string within the comment.
#
proc ::board::mark::getEmbeddedCmds {comment} {
  if {$comment == ""} {return}
  variable ScidCmdRegex
  variable StdCmdRegex
  variable CBSquareRegex
  variable CBArrowRegex
  set result {}
  
  # Build regex and search script for embedded commands:
  set regex  ""
  foreach r [list $ScidCmdRegex $StdCmdRegex $CBSquareRegex $CBArrowRegex] {
    if {[string equal $regex ""]} {set regex $r} else {append regex "|$r"}
  }
  set locateScript  {regexp -expanded -indices -start $start \
        $regex $comment indices}
  
  # Loop over all embedded commands contained in comment string:
  
  for {set start 0} {[eval $locateScript]} {incr start} {
    foreach {first last} $indices {}	;# just a multi-assign
    foreach re [list $ScidCmdRegex $StdCmdRegex $CBSquareRegex $CBArrowRegex] {
      # Assing matching subexpressions to variables:
      if {![regexp -expanded $re [string range $comment $first $last] \
            match type arg1 arg2 color]} {
        continue
      }
      # CB uses rotated arguments. Bring them in order
      if {[string equal $type "csl"] || [string equal $type "cal"]} {
         set dummy1 $arg1
         set dummy2 $arg2
         set dummy3 $color
         set color $dummy1
         set arg1  $dummy2
         set arg2  $dummy3
         if {[string equal $type "csl"]} {set type  "full"  }
         if {[string equal $type "cal"]} {set type  "arrow" }
         if {[string equal $color "R"]}  {set color "red"   }
         if {[string equal $color "G"]}  {set color "green" }
         if {[string equal $color "Y"]}  {set color "yellow"}
      }
      # Settings of (default) type and arguments:
      if {[string equal $color ""]}   { set color "red" }
      switch -glob -- $type {
        ""   {set type [expr {[string length $arg2] ? "arrow" : "full"}]}
        mark {set type "fu"	;# new syntax}
        ?    {if {[string length $arg2]} break else {
            set arg2 $type; set type "text"}
        }
      }
      # Construct result list:
      lappend result [list $type $arg1 $arg2 $color]
      lappend result $indices
      set start $last	;# +1 by for-loop
    }
  }
  return $result
}

# ::board::mark::remove --
#
#	Removes a specified mark.
#
# Arguments:
#	win	A frame containing a board '$win.bd'.
#	args	List of one or two squares.
# Results:
#	Appends a dummy mark to the bord's list of marks
#	which causes the add routine to delete all marks for
#	the specified square(s).
#
proc ::board::mark::remove {win args} {
  if {[llength $args] == 2} {
    eval add $win arrow $args nocolor 1
  } else {
    add $win DEL [lindex $args 0] "" nocolor 1
  }
}

# ::board::mark::add --
#
#	Draws arrow or mark on the specified square(s).
#
# Arguments:
#	win		A frame containing a board 'win.bd'.
#	args		What kind of mark:
#	  type  	  Either type id (e.g., square, circle) or
#			    a single character, which is of type 'text'.
#	  square	  Square number 0-63 (0=a1, 1=a2, ...).
#	  ?arg2?	  Optional: additional type-specific parameter.
#	  color 	  Color to use for marking the square (mandatory).
#	  ?new? 	  Optional: whether or not this mark should be
#			    added to the list of marks; defaults to 'true'.
# Results:
#	For a given square, mark type, color, and optional (type-specific)
#	destination arguments, creates the proper canvas object.
#
proc ::board::mark::add {win args} {
  # Rearrange list if "type" is simple character:
  if {[string length [lindex $args 0]] == 1} {
    # ... e.g.,  {c e4 red} --> {text e4 c red}
    set args [linsert $args 1 "text"]
    set args [linsert [lrange $args 1 end] 2 [lindex $args 0]]
  }
  # Add default arguments:
  if {![regexp true|false|1|0 [lindex $args end]]} {
    lappend args "true"
  }
  if {[llength $args] == 4} { set args [linsert $args 2 ""]}
  
  # Here we (should) have: args == <type> <square> ?<arg>? <color> <new>
  foreach {type square dest color new} $args {break}	;# assign
  if {[llength $args] != 5 } { return }
  
  set board $win.bd
  set type  [lindex $args 0]
  
  # Remove existing marks:
  if {$type == "arrow"} {
    $board delete "mark${square}:${dest}" "mark${dest}:${square}"
    if {[string equal $color "nocolor"]} { set type DEL }
  } else {
    $board delete "mark${square}"
    #not needed anymore
    #    ::board::colorSquare $win $square [::board::defaultColor $square]
  }
  
  switch -- $type {
    full    { ::board::colorSquare $win $square $color }
    DEL     { set new 1 }
    default {
      # Find a subroutine to draw the canvas object:
      set drawingScript "Draw[string totitle $type]"
      if {![llength [info procs $drawingScript]]} { return }
      
      # ... and try it:
      if {[catch {eval $drawingScript $board $square $dest $color}]} {
        return
      }
    }
  }
  if {$new} { lappend ::board::_mark($win) [lrange $args 0 end-1] }
}

# ::board::mark::DrawXxxxx --
#
#	Draws specified canvas object,
#	where "Xxxxx" is some required type, e.g. "Circle".
#
# Arguments:
#	pathName	Name of the canvas widget.
#	args		Type-specific arguments, e.g.
#				<square> <color>,
#				<square> <square> <color>,
#				<square> <char> <color>.
# Results:
#	Constructs and evaluates the proper canvas command
#	    "pathName create type coordinates options"
#	for the specified object.
#

# ::board::mark::DrawCircle --
#
proc ::board::mark::DrawCircle {pathName square color} {
  # Some "constants":
  set size 0.6	;# inner (enclosing) box size, 0.0 <  $size < 1.0
  set width 0.1	;# outline around circle, 0.0 < $width < 1.0
  
  set box [GetBox $pathName $square $size]
  lappend pathName create oval [lrange $box 0 3] \
      -tag [list mark circle mark$square p$square]
  if {$width > 0.5} {
    ;# too thick, draw a disk instead
    lappend pathName -fill $color
  } else {
    set width [expr {[lindex $box 4] * $width}]
    if {$width <= 0.0} {set width 1.0}
    lappend pathName -fill "" -outline $color -width $width
  }
  eval $pathName
}

# ::board::mark::DrawDisk --
#
proc ::board::mark::DrawDisk {pathName square color} {
  # Size of the inner (enclosing) box within the square:
  set size 0.6	;# 0.0 <  $size < 1.0 = size of rectangle

  set box [GetBox $pathName $square $size]
  eval $pathName \
      {create oval [lrange $box 0 3]} \
      -fill $color \
      {-tag [list mark disk mark$square p$square]}
}

# ::board::mark::DrawText --
# Pascal Georges : if shadow!="", try to make the text visible even if fg and bg colors are close
proc ::board::mark::DrawText {pathName square char color {size 0} {shadowColor ""}} {
  set box [GetBox $pathName $square 0.8]
  set len [expr {($size > 0) ? $size : int([lindex $box 4])}]
  set x   [lindex $box 5]
  set y   [lindex $box 6]
  $pathName delete text$square mark$square
  if {$shadowColor!=""} {
    eval $pathName \
        create text [expr $x+1] [expr $y+1] -fill $shadowColor \
        {-font [list helvetica $len bold]} \
        {-text [string index $char 0]}     \
        {-anchor c} \
        {-tag  [list mark text text$square mark$square p$square]}
    
  }
  eval $pathName \
      create text $x $y -fill $color     \
      {-font [list helvetica $len bold]} \
      {-text [string index $char 0]}     \
      {-anchor c} \
      {-tag  [list mark text text$square mark$square p$square]}
}

# ::board::mark::DrawArrow --
#
proc ::board::mark::DrawArrow {pathName from to color} {
  if {$from < 0  ||  $from > 63} { return }
  if {$to   < 0  ||  $to   > 63} { return }
  set coord [GetArrowCoords $pathName $from $to]
  eval $pathName \
      {create line $coord} \
      -fill $color -arrow last -width 2 \
      {-tag [list mark arrows "mark${from}:${to}"]}
}

# ::board::mark::DrawRectangle --
# Draws a rectangle surrounding the square
proc ::board::mark::DrawRectangle { pathName square color pattern } {
  if {$square < 0  ||  $square > 63} { puts "error square = $square" ; return }
  set box [::board::mark::GetBox $pathName $square]
  $pathName create rectangle [lindex $box 0] [lindex $box 1] [lindex $box 2] [lindex $box 3] \
      -outline $color -width $::highlightLastMoveWidth -dash $pattern -tag highlightLastMove
}

# ::board::mark::DrawTux --
#
image create photo tux16x16 -data \
    {R0lGODlhEAAQAPUyAAAAABQVFiIcBi0tLTc0Kj4+PkQ3CU9ADVVFD1hJFV1X
      P2pXFWJUKHttLnttOERERVVWWWRjYWlqcYNsGJR5GrSUIK6fXsKdGMCdI8er
      ItCuNtm2KuS6KebAKufBOvjJIfnNM/3TLP/aMP/lM+/We//lQ//jfoGAgJaU
      jpiYmqKipczBmv/wk97e3v//3Ojo6f/96P7+/v///wAAAAAAAAAAAAAAAAAA
      AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEBADIALAAAAAAQABAAAAbm
      QJlMJpMBAAAAQCaTyWQymUwmAwQAAQAAIJPJZDKZTCYDQCInCQAgk8lkMplM
      JgMwOBoHACCTyYAymUwmkwEao5IFAADIZDKZTCaTAVQu2GsAAMhkMplMJgMU
      YrFY7AQAAGQymUwmA6RisVjsFQAAATKZTCYDBF6xWCwWewAAAJlMJjMoYrFY
      LBaDAAAAmUwW+oBWsVgsxlokFgCZTBYChS6oWCxmAn5CHYNMJhOJQiFS7JXS
      iEQjCkAmw3BCow0hAMiMNggAQCYDAAyTAwAASEwEAABAJpPJAAAAAACUAQAA
      gEwmCwIAOw==}
set ::board::mark::tux16x16 tux16x16

image create photo tux32x32 -data \
    {R0lGODlhIAAgAPU0AAAAABANAxERESAaBiwkCDAnCSQkJEM2DEA3GVBBDllJ
      EFNKLG5aFHBbFHpkFnZoMkBAQFBQUGBgYHBwcIBpF4xyGZ+DHZ+GKqmKHq+T
      Lb+hNsynJNSuJtu0J9+6NeW8Kc+wQPnMLPTJMP7QLv/UO//aVf/dYv/ifIiI
      hp+fn6+vr7+/v//lif/ol//rpM/Pz9/f3//22O/u6v/55f///////wAAAAAA
      AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEBADUALAAAAAAgACAAAAb+
      wFqtVqvVarVarQYAAAAAAABQq9VqtVqtVqvVarVarVar1Wq1Wg0AAAAAAAAA
      AKjVarVarVar1YC1Wq1Wq9VqtVqtBgAAAAAAAAAAAGq1Wq1Wq9VqtVqtVqvV
      arVaDQAAAAAAAAAAAABqtVqtVqsBa7VarVar1Wq1Wq0GMMgighdtAgAAALVa
      rVar1Wq1Wq1Wq9VqtVqtBphEUpCUQQUAAAC1Wq1WA9ZqtVqtVqvVarVarVYD
      RBYejwahAgAAgFqtVqvVarVarVar1Wq1Wq1WAxRIIdFolAEAAABArQas1Wq1
      Wq1Wq9VqtVqtVqvVGqPRaDTSAAAAAKBWq9VqtVr+rVar1Wq1Wq1Wq9UMp9Fo
      xJIJAAAAAFir1Wq1Wq1Wq9VqtVqtVqvVABGaqzWj0SYAAAAAqNVqtVqtVqvV
      arVarVarAQQyGo1Go9FgAAAQAAAAarVarVar1Wq1Wq1WqwEAExqNRqPRaDSD
      AAAAAGq1Wq1Wq9VqtVqtVqsBAC8ajUaj0Wg0oAoAAAAAgFqtVqvVarVarVar
      AQACGo1Go9FoNBpNAAAAAIBarVar1Wq1Wq1WqwEAKhqNRqPRaEAajYYCAAAA
      AKBWq9VqtVqtVqvVAAIajUaj0Wg0Go22AgAAAACgVqvVarVarVarAQARGo1G
      o9GANBqNRpMBAAAAAAD+qNVqtVqtVqvVAAAUjUaj0Wg0Go1GowkAAAAAAKjV
      arVarVar1QgUFI1GowFpNBqNRqPRDAZDAAAA1Gq1Wq1Wq9VGo1HpRaPRaDQa
      jUY7iQAAwUMBANRqtVqtVhuFRqPR6LIC0mg0Go1Go5lGiYBlVAEAarVarVar
      jUaj0Wg0KqRoNBqNRqOZRqPRaPQBAGq1Wq1Wq41Go9FoBBxtADIajUaj0Uyj
      0Wg0Gn0YgFqtVqvVRqPRaDQajVw0Go1Go6VGo9FoNBqNOABArVar1Uaj0Qg4
      Go1GoxiNRntFBqPRaDQajT4KAKBWq9Vqo9FoNBqNRiOHASIAAAqj0Wg0CmGW
      AAAAoFar1WoYDlAUGo1Go1FFAAAAAInRaDT6EAAAAABQq9VqNQAAAHB0QqNO
      AQAAAACA0Gi0AQAAAECtVqvVajUgAAAAAAAAAAAAAAAAAAAAAAAAAIBarVar
      1Wq1Wq1WqwEAAAAAAKjVarUaAAAAAAC1Wq1Wq9VqwFqtVqvVarVarVar1Wq1
      Wq1Wq9VqtVqtVqvVarUgADs=
    }
set ::board::mark::tux32x32 tux32x32

proc ::board::mark::DrawTux {pathName square discard} {
  variable tux16x16
  variable tux32x32
  set box [::board::mark::GetBox $pathName $square]
  for {set len [expr {int([lindex $box 4])}]} {$len > 0} {incr len -1} {
    if {[info exists tux${len}x${len}]} break
  }
  if {!$len} return
  $pathName create image [lrange $box 5 6] \
      -image tux${len}x${len} \
      -tag [list mark "mark$square" tux]
}

# ::board::mark::GetArrowCoords --
#
#	Auxiliary function:
#	Similar to '::board::midSquare', but this function returns
#	coordinates of two (optional adjusted) squares.
#
# Arguments:
#	board	A board canvas ('win.bd' for a frame 'win').
#	from	Source square number (0-63).
#	to	Destination square number (0-63).
#	shrink	Optional shrink factor (0.0 - 1.0):
#		  0.0 = no shrink, i.e. just return midpoint coordinates,
#		  1.0 = start and end at edge (unless adjacent squares).
# Results:
#	Returns a list of coodinates {x1 y1 x2 y2} for drawing
#	an arrow "from" --> "to".
#
proc ::board::mark::GetArrowCoords {board from to {shrink 0.6}} {
  if {$shrink < 0.0} {set shrink 0.0}
  if {$shrink > 1.0} {set shrink 1.0}
  
  # Get left, top, right, bottom, length, midpoint_x, midpoint_y:
  set fromXY [GetBox $board $from]
  set toXY   [GetBox $board $to]
  # Get vector (dX,dY) = to(x,y) - from(x,y)
  # (yes, misusing the foreach multiple features)
  foreach {x0 y0} [lrange $fromXY 5 6] {x1 y1} [lrange $toXY 5 6] {break}
  set dX [expr {$x1 - $x0}]
  set dY [expr {$y1 - $y0}]
  
  # Check if we have good coordinates and shrink factor:
  if {($shrink == 0.0) || ($dX == 0.0 && $dY == 0.0)} {
    return [list $x0 $y0 $x1 $y1]
  }
  
  # Solve equation: "midpoint + (lamda * vector) = edge point":
  if {abs($dX) > abs($dY)} {
    set edge [expr {($dX > 0) ? [lindex $fromXY 2] : [lindex $fromXY 0]}]
    set lambda [expr {($edge - $x0) / $dX}]
  } else {
    set edge [expr {($dY > 0) ? [lindex $fromXY 3] : [lindex $fromXY 1]}]
    set lambda [expr {($edge - $y0) / $dY}]
  }
  
  # Check and adjust shrink factor for adjacent squares
  # (i.e. don't make arrows too short):
  set maxShrinkForAdjacent 0.667
  if {$shrink > $maxShrinkForAdjacent} {
    set dFile [expr {($to % 8) - ($from % 8)}]
    set dRank [expr {($from / 8) - ($to / 8)}]
    if {(abs($dFile) <= 1) && (abs($dRank) <= 1)} {
      set shrink $maxShrinkForAdjacent
    }
  }
  
  # Return shrinked line coordinates {x0', y0', x1', y1'}:
  set shrink [expr {$shrink * $lambda}]
  return [list [expr {$x0 + $shrink * $dX}] [expr {$y0 + $shrink * $dY}]\
      [expr {$x1 - $shrink * $dX}] [expr {$y1 - $shrink * $dY}]]
}

# ::board::mark::GetBox --
#
#	Auxiliary function:
#	Get coordinates of an inner box for a specified square.
#
# Arguments:
#	pathName	Name of a canvas widget containing squares.
#	square		Square number (0..63).
#	portion		Portion (length inner box) / (length square)
#			(1.0 means: box == square).
# Results:
#	Returns a list whose elements are upper left and lower right
#	corners, length, and midpoint (x,y) of the inner box.
#
proc ::board::mark::GetBox {pathName square {portion 1.0}} {
  set coord [$pathName coords sq$square]
  set len [expr {[lindex $coord 2] - [lindex $coord 0]}]
  if {$portion < 1.0} {
    set dif [expr {$len * (1.0 -$portion) * 0.5}]
    foreach i {0 1} { lappend box [expr {[lindex $coord $i] + $dif}] }
    foreach i {2 3} { lappend box [expr {[lindex $coord $i] - $dif}] }
  } else {
    set box $coord
  }
  lappend box [expr { [lindex $box 2] - [lindex $box 0]     }]
  lappend box [expr {([lindex $box 0] + [lindex $box 2]) / 2}]
  lappend box [expr {([lindex $box 1] + [lindex $box 3]) / 2}]
  return $box
}

### End of namespace ::board::mark

# ::board::piece {w sq}
#   Given a board and square number, returns the piece type
#   (e for empty, wp for White Pawn, etc) of the square.
proc ::board::piece {w sq} {
  set p [string index $::board::_data($w) $sq]
  return $::board::letterToPiece($p)
}

# ::board::setDragSquare
#   Sets the square from whose piece should be dragged.
#   To drag nothing, the square value should be -1.
#   If the previous value is a valid square (0-63), the
#   piece being dragged is returned to its home square first.
#
proc ::board::setDragSquare {w sq} {
  set oldSq $::board::_drag($w)
  if {$oldSq >= 0  &&  $oldSq <= 63} {
    ::board::drawPiece $w $oldSq [string index $::board::_data($w) $oldSq]
    $w.bd raise arrows
  }
  set ::board::_drag($w) $sq
}

# ::board::dragPiece
#   Drags the piece of the drag-square (as set above) to
#   the specified global (root-window) screen cooordinates.
#
proc ::board::dragPiece {w x y} {
  set sq $::board::_drag($w)
  if {$sq < 0} { return }
  set x [expr {$x - [winfo rootx $w.bd]} ]
  set y [expr {$y - [winfo rooty $w.bd]} ]
  $w.bd coords p$sq $x $y
  $w.bd raise p$sq
}

# ::board::bind
#   Binds the given event on the given square number to
#   the specified action.
#
proc ::board::bind {w sq event action} {
  if {$sq == "all"} {
    for {set i 0} {$i < 64} {incr i} {
      $w.bd bind p$i $event $action
    }
  } else {
    $w.bd bind p$sq $event $action
  }
}

# ::board::drawPiece
#   Draws a piece on a specified square.
#
proc ::board::drawPiece {w sq piece} {
  set psize $::board::_size($w)
  set flip $::board::_flip($w)
  # Compute the XY coordinates for the centre of the square:
  set midpoint [::board::midSquare $w $sq]
  set xc [lindex $midpoint 0]
  set yc [lindex $midpoint 1]
  # Delete any old image for this square, and add the new one:
  $w.bd delete p$sq
  $w.bd create image $xc $yc -image $::board::letterToPiece($piece)$psize -tag p$sq
}

# ::board::clearText
#   Remove all text annotations from the board.
#
proc ::board::clearText {w} {
  $w.bd delete texts
}

# ::board::drawText
#   Draws the specified text on the specified square.
#   Additional arguments are treated as canvas text parameters.
#
proc ::board::drawText {w sq text color args {shadow ""} } {
  mark::DrawText ${w}.bd $sq $text $color \
      [expr {[catch {font actual font_Bold -size} size] ? 11 : $size}] \
      $shadow
  #if {[llength $args] > 0} {
  #  catch {eval $w.bd itemconfigure text$sq $args}
  #}
}

# Highlight last move played by drawing a red rectangle around the two squares
proc  ::board::lastMoveHighlight {w} {
  $w.bd delete highlightLastMove
  if { ! $::highlightLastMove } {return}
  set moveuci [ sc_game info previousMoveUCI ]
  if {[string length $moveuci] >= 4} {
    set moveuci [ string range $moveuci 0 3 ]
    set square1 [ ::board::sq [string range $moveuci 0 1 ] ]
    set square2 [ ::board::sq [string range $moveuci 2 3 ] ]
    ::board::mark::DrawRectangle $w.bd $square1 $::highlightLastMoveColor $::highlightLastMovePattern
    ::board::mark::DrawRectangle $w.bd $square2 $::highlightLastMoveColor $::highlightLastMovePattern
  }
}

# ::board::update
#   Update the board given a 64-character board string as returned
#   by the "sc_pos board" command. If the board string is empty, it
#   defaults to the previous value for this board.
#   If the optional paramater "animate" is 1 and the changes from
#   the previous board state appear to be a valid chess move, the
#   move is animated.
#
proc ::board::update {w {board ""} {animate 0}} {  
  set oldboard $::board::_data($w)
  if {$board == ""} {
    set board $::board::_data($w)
  } else {
    set ::board::_data($w) $board
  }
  set psize $::board::_size($w)
  set flip $::board::_flip($w)
  
  # Cancel any current animation:
  after cancel "::board::_animate $w"
  
  # Remove all marks (incl. arrows) from the board:
  $w.bd delete mark
  
  # Draw each square:
  for {set sq 0} { $sq < 64 } { incr sq } {
    set piece [string index $board $sq]
    # Compute the XY coordinates for the centre of the square:
    set midpoint [::board::midSquare $w $sq]
    set xc [lindex $midpoint 0]
    set yc [lindex $midpoint 1]
    #update every square with color and texture
    set color [::board::defaultColor $sq]
    $w.bd itemconfigure sq$sq -fill $color -outline "" ; #-outline $color
    
    set boc bgd$psize
    if { ($sq + ($sq / 8)) % 2 } { set boc bgl$psize }
    $w.bd delete br$sq
    $w.bd create image $xc $yc -image $boc -tag br$sq
    
    # Delete any old image for this square, and add the new one:
    $w.bd delete p$sq
    $w.bd create image $xc $yc -image $::board::letterToPiece($piece)$psize -tag p$sq
  }
  
  # Update side-to-move icon:
  grid remove $w.wtm $w.btm
  if {$::board::_stm($w)} {
    set side [string index $::board::_data($w) 65]
    if {$side == "w"} { grid configure $w.wtm }
    if {$side == "b"} { grid configure $w.btm }
  }
  
  # Redraw marks and arrows if required:
  if {$::board::_showMarks($w)} {
    foreach mark $::board::_mark($w) {
      set type  [lindex $mark 0]
      if {$type == "full"}    { 
        ::board::colorSquare $w [lindex $mark 1] [lindex $mark 3]
      } else {
        # Find a subroutine to draw the canvas object:
        set drawingScript "mark::Draw[string totitle $type]"
        if {[llength [info procs $drawingScript]]} {
          catch {eval $drawingScript $w.bd [join [lrange $mark 1 3]]}  
        }
      }
    } 
  }
  
  # Redraw last move highlight if mainboard
  if { $w == ".main.board"} {
    ::board::lastMoveHighlight $w
  }
  
  # Redraw material values
  if {$::board::_showmat($w)} {
    # grid remove $w.mat
    if {$::gameInfo(showMaterial)} {
      # grid configure $w.mat
      ::board::material $w
    }
  }
  
  # Animate board changes if requested:
  if {$animate  &&  $board != $oldboard} {
    ::board::animate $w $oldboard $board
  }
}

proc ::board::isFlipped {w} {
  return $::board::_flip($w)
}

# ::board::flip
#   Rotate the board 180 degrees.
#
proc ::board::flip {w {newstate -1}} {
  if {! [info exists ::board::_flip($w)]} { return }
  if {$newstate == $::board::_flip($w)} { return }
  set flip [expr {1 - $::board::_flip($w)} ]
  set ::board::_flip($w) $flip
  
  # Swap squares:
  for {set i 0} {$i < 32} {incr i} {
    set swap [expr {63 - $i}]
    set coords(South) [$w.bd coords sq$i]
    set coords(North) [$w.bd coords sq$swap]
    $w.bd coords sq$i    $coords(North)
    $w.bd coords sq$swap $coords(South)
  }
  
  # Change coordinate labels:
  for {set i 1} {$i <= 8} {incr i} {
    set value [expr {9 - [$w.lrank$i cget -text]} ]
    $w.lrank$i configure -text $value
    $w.rrank$i configure -text $value
  }
  if {$flip} {
    foreach file {a b c d e f g h} newvalue {h g f e d c b a} {
      $w.tfile$file configure -text $newvalue
      $w.bfile$file configure -text $newvalue
      grid configure $w.wtm -row 1
      grid configure $w.btm -row 8
    }
  } else {
    foreach file {a b c d e f g h} {
      $w.tfile$file configure -text $file
      $w.bfile$file configure -text $file
      grid configure $w.wtm -row 8
      grid configure $w.btm -row 1
    }
  }
  ::board::update $w
  return $w
}
################################################################################
# ::board::material
# displays material balance
################################################################################
proc ::board::material {w} {
  set f $w.mat
  
  $f delete material
  
  if {! $::gameInfo(showMaterial)} { return }
  set fen [lindex [sc_pos fen] 0]
  set p 0
  set n 0
  set b 0
  set r 0
  set q 0
  for {set i 0} {$i < [string length $fen]} {incr i} {
    set ch [string index $fen $i]
    switch -- $ch {
      p {incr p -1}
      P {incr p}
      n {incr n -1}
      N {incr n}
      b {incr b -1}
      B {incr b}
      r {incr r -1}
      R {incr r}
      q {incr q -1}
      Q {incr q}
    }
  }
  set sum [expr abs($p) + abs($n) +abs($b) +abs($r) +abs($q) ]
  set rank 0
  addMaterial $q "q" $f $rank $sum
  incr rank [expr abs($q) ]
  addMaterial $r "r" $f $rank $sum
  incr rank [expr abs($r) ]
  addMaterial $b "b" $f $rank $sum
  incr rank [expr abs($b) ]
  addMaterial $n "n" $f $rank $sum
  incr rank [expr abs($n) ]
  addMaterial $p "p" $f $rank $sum
}
################################################################################
#
################################################################################
proc ::board::addMaterial {count piece parent rank sum} {
  if {$count == 0} {return}
  if {$count <0} {
    set col "b"
    set count [expr 0 - $count ]
  } else  {
    set col "w"
  }
  set w [$parent cget -width]
  set h [$parent cget -height]
  set offset [expr ($h - ($sum * 20)) / 2]
  if {$offset <0} { set offset 0 }
  set x [expr $w / 2]
  for {set i 0} {$i<$count} {incr i} {
    set y [expr $rank * 20 +10 + $offset + $i * 20]
    $parent create image $x $y -image $col${piece}20 -tag material
  }
}

################################################################################
#
################################################################################

# ::board::stm
#   Add or remove the side-to-move icon.
#
proc ::board::stm {w} {
  set stm [expr {1 - $::board::_stm($w)} ]
  set ::board::_stm($w) $stm
  if {$stm} {
    grid configure $w.stmgap
    grid configure $w.stm
  } else {
    grid remove $w.stmgap $w.stm $w.wtm $w.btm
  }
  ::board::update $w
}

# ::board::coords
#   Add or remove coordinates around the edge of the board.
# Toggle between 0,1,2.
proc ::board::coords {w} {
  set coords [expr {1 + $::board::_coords($w)} ]
  if { $coords > 2 } { set coords 0 }
  set ::board::_coords($w) $coords
  
  if {$coords == 0 } {
    for {set i 1} {$i <= 8} {incr i} {
      grid configure $w.lrank$i
      grid configure $w.rrank$i
    }
    foreach i {a b c d e f g h} {
      grid configure $w.tfile$i
      grid configure $w.bfile$i
    }
  } elseif {$coords == 1 } {
    for {set i 1} {$i <= 8} {incr i} {
      grid remove $w.lrank$i
      grid remove $w.rrank$i
    }
    foreach i {a b c d e f g h} {
      grid remove $w.tfile$i
      grid remove $w.bfile$i
    }
  } else { #Klimmek: coords == 2 then show left and bottom
    for {set i 1} {$i <= 8} {incr i} {
      grid configure $w.lrank$i
      grid remove $w.rrank$i
    }
    foreach i {a b c d e f g h} {
      grid remove $w.tfile$i
      grid configure $w.bfile$i
    }
  }
}

# ::board::animate
#   Check for board changes that appear to be a valid chess move,
#   and start animating the move if applicable.
#
proc ::board::animate {w oldboard newboard} {
  global animateDelay
  if {$animateDelay <= 0} { return }
  
  # Find which squares differ between the old and new boards:
  set diffcount 0
  set difflist [list]
  for {set i 0} {$i < 64} {incr i} {
    if {[string index $oldboard $i] != [string index $newboard $i]} {
      incr diffcount
      lappend difflist $i
    }
  }
  
  # Check the number of differences could mean a valid move:
  if {$diffcount < 2  ||  $diffcount > 4} { return }
  
  for {set i 0} {$i < $diffcount} {incr i} {
    set sq($i) [lindex $difflist $i]
    set old($i) [string index $oldboard $sq($i)]
    set new($i) [string index $newboard $sq($i)]
  }
  
  set from -1
  set to -1
  set captured -1
  set capturedPiece "."
  
  if {$diffcount == 4} {
    # Check for making/unmaking a castling move:
    set castlingList [list [sq e1] [sq g1] [sq h1] [sq f1] \
        [sq e8] [sq g8] [sq h8] [sq f8] \
        [sq e1] [sq c1] [sq a1] [sq d1] \
        [sq e8] [sq c8] [sq a8] [sq d8]]
    
    foreach {kfrom kto rfrom rto} $castlingList {
      if {[lsort $difflist] == [lsort [list $kfrom $kto $rfrom $rto]]} {
        if {[string tolower [string index $oldboard $kfrom]] == "k"  &&
          [string tolower [string index $oldboard $rfrom]] == "r"  &&
          [string tolower [string index $newboard $kto]] == "k"  &&
          [string tolower [string index $newboard $rto]] == "r"} {
          # A castling move animation.
          # Move the rook back to initial square until animation is complete:
          # TODO: It may look nicer if the rook was animated as well...
          eval $w.bd coords p$rto [::board::midSquare $w $rfrom]
          set from $kfrom
          set to $kto
        } elseif {[string tolower [string index $newboard $kfrom]] == "k"  &&
          [string tolower [string index $newboard $rfrom]] == "r"  &&
          [string tolower [string index $oldboard $kto]] == "k"  &&
          [string tolower [string index $oldboard $rto]] == "r"} {
          # An undo-castling animation. No need to move the rook.
          set from $kto
          set to $kfrom
        }
      }
    }
  }
  
  if {$diffcount == 3} {
    # Three squares are different, so check for an En Passant capture:
    foreach i {0 1 2} {
      foreach j {0 1 2} {
        foreach k {0 1 2} {
          if {$i == $j  ||  $i == $k  ||  $j == $k} { continue }
          # Check for an en passant capture from i to j with the enemy
          # pawn on k:
          if {$old($i) == $new($j) && $old($j) == "." && $new($k) == "."  &&
            (($old($i) == "p" && $old($k) == "P") ||
            ($old($i) == "P" && $old($k) == "p"))} {
            set from $sq($i)
            set to $sq($j)
          }
          # Check for undoing an en-passant capture from j to i with
          # the enemy pawn on k:
          if {$old($i) == $new($j) && $old($k) == "." && $new($i) == "."  &&
            (($old($i) == "p" && $new($k) == "P") ||
            ($old($i) == "P" && $new($k) == "p"))} {
            set from $sq($i)
            set to $sq($j)
            set captured $sq($k)
            set capturedPiece $new($k)
          }
        }
      }
    }
  }
  
  if {$diffcount == 2} {
    # Check for a regular move or capture: one old square should have the
    # same (non-empty) piece as the other new square, and at least one
    # of the old or new squares should be empty.
    
    if {$old(0) != "." && $old(1) != "." && $new(0) != "." && $new(1) != "."} {
      return
    }
    
    foreach i {0 1} {
      foreach j {0 1} {
        if {$i == $j} { continue }
        if {$old($i) == $new($j)  &&  $old($i) != "."} {
          set from $sq($i)
          set to $sq($j)
          set captured $sq($j)
          set capturedPiece $old($j)
        }
        
        # Check for a (white or black) pawn promotion from i to j:
        if {($old($i) == "P"  &&  [string is upper $new($j)]  &&
          $sq($j) >= [sq a8]  &&  $sq($j) <= [sq h8])  ||
          ($old($i) == "p"  &&  [string is lower $new($j)]  &&
          $sq($j) >= [sq a1]  &&  $sq($j) <= [sq h1])} {
          set from $sq($i)
          set to $sq($j)
        }
        
        # Check for undoing a pawn promotion from j to i:
        if {($new($j) == "P"  &&  [string is upper $old($i)]  &&
          $sq($i) >= [sq a8]  &&  $sq($i) <= [sq h8])  ||
          ($new($j) == "p"  &&  [string is lower $old($i)]  &&
          $sq($i) >= [sq a1]  &&  $sq($i) <= [sq h1])} {
          set from $sq($i)
          set to $sq($j)
          set captured $sq($j)
          set capturedPiece $old($j)
        }
      }
    }
  }
  
  # Check that we found a valid-looking move to animate:
  if {$from < 0  ||  $to < 0} { return }
  
  # Redraw the captured piece during the animation if necessary:
  if {$capturedPiece != "."  &&  $captured >= 0} {
    ::board::drawPiece $w $from $capturedPiece
    eval $w.bd coords p$from [::board::midSquare $w $captured]
  }
  
  # Move the animated piece back to its starting point:
  eval $w.bd coords p$to [::board::midSquare $w $from]
  $w.bd raise p$to
  
  # Remove side-to-move icon while animating:
  grid remove $w.wtm $w.btm
  
  # Start the animation:
  set start [clock clicks -milli]
  set ::board::_animate($w,start) $start
  set ::board::_animate($w,end) [expr {$start + $::animateDelay} ]
  set ::board::_animate($w,from) $from
  set ::board::_animate($w,to) $to
  ::board::_animate $w
}

# ::board::_animate
#   Internal procedure for updating a board move animation.
#
proc ::board::_animate {w} {
  if {! [winfo exists $w]} { return }
  set from $::board::_animate($w,from)
  set to $::board::_animate($w,to)
  set start $::board::_animate($w,start)
  set end $::board::_animate($w,end)
  set now [clock clicks -milli]
  if {$now > $end} {
    ::board::update $w
    return
  }
  
  # Compute where the moving piece should be displayed and move it:
  set ratio [expr {double($now - $start) / double($end - $start)} ]
  set fromMid [::board::midSquare $w $from]
  set toMid [::board::midSquare $w $to]
  set fromX [lindex $fromMid 0]
  set fromY [lindex $fromMid 1]
  set toX [lindex $toMid 0]
  set toY [lindex $toMid 1]
  set x [expr {$fromX + round(($toX - $fromX) * $ratio)} ]
  set y [expr {$fromY + round(($toY - $fromY) * $ratio)} ]
  $w.bd coords p$to $x $y
  $w.bd raise p$to
  
  # Schedule another animation update in a few milliseconds:
  after 5 "::board::_animate $w"
}

# Capture board screenshot.
# Based on code from David Easton:
# http://wiki.tcl.tk/9127

set window_image_support 1
if { [catch {package require img::window}] } {
  set window_image_support 0
}

if {!$png_image_support || !$window_image_support} {
  .menu.tools entryconfig [tr ToolsCaptureBoard] -state disabled
  ::splash::add "Capture Current Board is disabled."
}

proc captureWidget { widget image px py } {

  if {![winfo ismapped $widget]} {
    return
  }

  regexp {([0-9]*)x([0-9]*)\+([0-9]*)\+([0-9]*)} [winfo geometry $widget] - w h x y

  incr px $x
  incr py $y

  # Make an image from this widget
  set tempImage [image create photo -format window -data $widget]

  # Copy this image into place on the main image
  $image copy $tempImage -to $px $py
  image delete $tempImage

  foreach child [winfo children $widget] {
    captureWidget $child $image $px $py
  }
}

proc boardToFile { format filepath } {

  set w .main.board
  set board $w.bd

  if { $format == "" } {
    set format png
  }
  set filename $filepath

  # Make the base image based on the board
  ::board::update $w
  update idletask
  set image [image create photo -format window -data $board]

  if { $filename == "" } {
    # set types {{"Image Files" {.$format}}}
    set types {{"All Files" {*}}}
    set filename [tk_getSaveFile -filetypes $types \
                                 -initialfile current_board.$format \
                                 -defaultextension .$format \
                                 -title "Scid: Save Current Board:"]
  }

  if {[llength $filename]} {
    if {[catch {$image write -format $format $filename} result ]} {
      tk_messageBox -type ok -icon error -title "Scid" -message $result
    }
  }
  image delete $image
}


###
### End of file: board.tcl
###
# This file is part of Scid (Shane's Chess Information Database).
#
# Scid 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.
#
# Scid 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 Scid.  If not, see <http://www.gnu.org/licenses/>.

### move.tcl
### Functions for moving within a game.

namespace eval ::move {}

proc ::move::drawVarArrows {} {
  if {! $::showVarArrows || $::autoplayMode} { return 0 }
	if {[winfo exists .coachWin]} { return 0 }
	if {[winfo exists .serGameWin]} { return 0 }
	
	set bDrawArrow 0
  set varList [sc_var list UCI]

	if {$varList != ""} {		
		set move [sc_game info nextMoveUCI]
		if {$move != ""} { set varList [linsert $varList 0 $move] }		
		foreach { move } $varList {
			set bDrawn 0			
			set sq_start [ ::board::sq [ string range $move 0 1 ] ]
			set sq_end [ ::board::sq [ string range $move 2 3 ] ]
		    foreach mark $::board::_mark(.main.board) {
		    	if { [lindex $mark 0] == "arrow" } {
					if {[lindex $mark 1] == $sq_start && [lindex $mark 2] == $sq_end} { 
						set bDrawn 1
						break
					}
				}
			}
			if {! $bDrawn } { set bDrawArrow 1; break }
		}
  }
  
	return $bDrawArrow
}

proc ::move::showVarArrows {} {
   	set move [sc_game info nextMoveUCI]
  	if {$move != ""} {
  		set sq_start [ ::board::sq [ string range $move 0 1 ] ]
		set sq_end [ ::board::sq [ string range $move 2 3 ] ]
	    ::board::mark::add ".main.board" "arrow" $sq_start $sq_end "green"  		
	}
	set varList [sc_var list UCI]  
	foreach { move } $varList {
		set sq_start [ ::board::sq [ string range $move 0 1 ] ]
		set sq_end [ ::board::sq [ string range $move 2 3 ] ]
	    ::board::mark::add ".main.board" "arrow" $sq_start $sq_end "blue"
	}
}

proc ::move::Start {} {
  if {[winfo exists .coachWin]} {
    set ::tacgame::analysisCoach(paused) 1
    .coachWin.fbuttons.resume configure -state normal
  }
  
  sc_move start
  updateBoard
  if {[::move::drawVarArrows]} { ::move::showVarArrows }
}

proc ::move::End {} { 
  sc_move end
  updateBoard
  if {[::move::drawVarArrows]} { ::move::showVarArrows }
}

proc ::move::ExitVar {} {
  sc_var exit; 
  updateBoard -animate; 
  if {[::move::drawVarArrows]} { ::move::showVarArrows }
}

proc ::move::Back {{count 1}} {
  if {[sc_pos isAt start]} { return } 
  if {[sc_pos isAt vstart]} { ::move::ExitVar; return }
  
  ### todo: if playing, remove this move from hash array S.A ??
  
  if {[winfo exists .coachWin]} {
    set ::tacgame::analysisCoach(paused) 1
    .coachWin.fbuttons.resume configure -state normal
    # mess with game clocks ???
  }
  
  sc_move back $count
  
  if {$count == 1} {
    # Do animation and speech:
    updateBoard -animate
    ::utils::sound::AnnounceBack
  } else {
    updateBoard
  }

  if {[::move::drawVarArrows]} { ::move::showVarArrows }
}
################################################################################
# 
################################################################################
proc ::move::Forward {{count 1}} {
  global autoplayMode
  
  if {[sc_pos isAt end]  ||  [sc_pos isAt vend]} { return }
  
  set bArrows [::move::drawVarArrows]
  
  set move [sc_game info next]
  if {$count == 1} {
    if {[sc_var count] != 0 && ! $autoplayMode && $::showVarPopup} {
      ::commenteditor::storeComment
      showVars
      set bArrows $::showVarArrows 
    } else {    
      if {! $bArrows} { sc_move forward }
    }    
    
    # Animate and speak this move:
    updateBoard -animate
    ::utils::sound::AnnounceForward $move
  } else {
    if {! $bArrows} { sc_move forward $count }
    updateBoard
  }
  if {$bArrows} { ::move::showVarArrows }
}

###
###
### main.tcl: Routines for creating and updating the main window.
###

############################################################
# Keyboard move entry:
#   Handles letters, digits and BackSpace/Delete keys.
#   Note that king- and queen-side castling moves are denoted
#   "OK" and "OQ" respectively.
#   The letters n, r, q, k, o and l are promoted to uppercase
#   automatically. A "b" can match to a b-pawn or Bishop move,
#   so in some rare cases, a capital B may be needed for the
#   Bishop move to distinguish it from the pawn move.

set moveEntry(Text) ""
set moveEntry(List) {}

# Bind Alt+letter key to nothing, to stop Alt+letter from
# matching the move entry bindings, so Alt+letter ONLY invokes
# the menus:
foreach key {a b c d e f g h i j k l m n o p q r s t u v w x y z} {
    bind $dot_w <Alt-$key> {
        # nothing
    }
}

proc moveEntry_Clear {} {
    global moveEntry
    set moveEntry(Text) ""
    set moveEntry(List) {}
}

proc moveEntry_Complete {} {
    global moveEntry
    
    if { ! [::fics::playerCanMove] || ! [::reviewgame::playerCanMove] } { ;# not player's turn
        moveEntry_Clear
        return
    }
    
    set len [llength $moveEntry(List)]
    if {$len > 0} {
        if {$moveEntry(AutoExpand)} {
            # Play a bell sound to let the user know the move was accepted already,
            # but only if move announcement is off?
            # bell
        }
        set move [lindex $moveEntry(List) 0]
        if {$move == "OK"} { set move "O-O" }
        if {$move == "OQ"} { set move "O-O-O" }
        set action "replace"
        if {![sc_pos isAt vend]} { set action [confirmReplaceMove] }
        if {$action == "replace"} {
            sc_game undoPoint
            sc_move addSan $move
        } elseif {$action == "var"} {
            sc_game undoPoint
            sc_var create
            sc_move addSan $move
        } elseif {$action == "mainline"} {
            sc_game undoPoint
            sc_var create
            sc_move addSan $move
            sc_var exit
            sc_var promote [expr {[sc_var count] - 1}]
            sc_move forward 1
        }
        
        # Now send the move done to FICS and NOVAG Citrine
        set promoletter ""
        set moveuci [sc_game info previousMoveUCI]
        if { [ string length $moveuci ] == 5 } {
            set promoletter [ string tolower [ string index $moveuci end ] ]
        }
        if { [winfo exists .fics] } {
            if { [::fics::playerCanMove] } {
                if { $promoletter != "" } {
                    ::fics::writechan "promote $promoLetter"
                }
                ::fics::writechan [ string range $moveuci 0 3 ]
            }
        }
        
        if {$::novag::connected} {
            ::novag::addMove "[ string range $moveuci 0 3 ]$promoLetter"
        }
        
        moveEntry_Clear
        updateBoard -pgn -animate
        ::utils::sound::AnnounceNewMove $move
        if {$action == "replace"} { ::tree::doTraining }
    }
}

proc moveEntry_Backspace {} {
    global moveEntry
    set moveEntry(Text) [string range $moveEntry(Text) 0 \
            [expr {[string length $moveEntry(Text)] - 2}]]
    set moveEntry(List) [sc_pos matchMoves $moveEntry(Text) $moveEntry(Coord)]
    updateStatusBar
}

proc moveEntry_Char {ch} {
    global moveEntry
    set oldMoveText $moveEntry(Text)
    set oldMoveList $moveEntry(List)
    append moveEntry(Text) $ch
    set moveEntry(List) [sc_pos matchMoves $moveEntry(Text) $moveEntry(Coord)]
    set len [llength $moveEntry(List)]
    if {$len == 0} {
        # No matching moves, so do not accept this character as input:
        set moveEntry(Text) $oldMoveText
        set moveEntry(List) $oldMoveList
    } elseif {$len == 1} {
        # Exactly one matching move, so make it if AutoExpand is on,
        # or if it equals the move entered. Note the comparison is
        # case insensitive to allow for 'b' to match both pawn and
        # Bishop moves.
        set move [string tolower [lindex $moveEntry(List) 0]]
        
        if {$moveEntry(AutoExpand) > 0  ||
            ![string compare [string tolower $moveEntry(Text)] $move]} {
            moveEntry_Complete
        }
    } elseif {$len == 2} {
        # Check for the special case where the user has entered a b-pawn
        # capture that clashes with a Bishop move (e.g. bxc4 and Bxc4):
        set first [string tolower [lindex $moveEntry(List) 0]]
        set second [string tolower [lindex $moveEntry(List) 1]]
        if {[string equal $first $second]} {
            set moveEntry(List) [list $moveEntry(Text)]
            moveEntry_Complete
        }
    }
    updateStatusBar
}

# preMoveCommand: called before making a move to store text in the comment
#   editor window and EPD windows.
proc preMoveCommand {} {
    # ::commenteditor::storeComment
    storeEpdTexts
}

sc_info preMoveCmd preMoveCommand


# updateTitle:
#   Updates the main Scid window title.
#
proc updateTitle {} {
    set title "Scid - "
    set fname [sc_base filename]
    set fname [file tail $fname]
    append title "$fname ($::tr(game) "
    append title "[::utils::thousands [sc_game number]] / "
    append title "[::utils::thousands [sc_base numGames]])"
    ::setTitle .main $title
}

# updateStatusBar:
#   Updates the main Scid window status bar.
#
proc updateStatusBar {} {
    global statusBar moveEntry
    ::windows::switcher::Refresh
    ::maint::Refresh
    set statusBar "  "
    
    if {$moveEntry(Text) != ""} {
        append statusBar "Enter move: \[" $moveEntry(Text) "\]  "
        foreach thisMove $moveEntry(List) {
            append statusBar $thisMove " "
        }
        return
    }
    
    # Check if translations have not been set up yet:
    if {! [info exists ::tr(Database)]} { return }
    
    # Show "%%" if base is read-only, "XX" if game altered, "--" otherwise:
    if {[sc_base isReadOnly]} {
        append statusBar "%%"
    } elseif {[sc_game altered]} {
        append statusBar "XX"
    } else {
        append statusBar "--"
    }
    
    set current [sc_base current]
    append statusBar "  $::tr(Database)"
    if {$current != [sc_info clipbase]} {
        append statusBar " $current"
    }
    append statusBar ": "
    set fname [sc_base filename]
    set fname [file tail $fname]
    if {$fname == ""} { set fname "<none>" }
    append statusBar $fname
    
    # Show filter count:
    append statusBar "   $::tr(Filter)"
    append statusBar ": [filterText]"
}


proc toggleRotateBoard {} {
    ::board::flip .main.board
}

proc toggleCoords {} {
    global boardCoords
    set coords [expr {1 + $boardCoords} ]
    if { $coords > 2 } { set coords 0 }
    set boardCoords $coords
    ::board::coords .main.board
}

ttk::frame .main.fbutton.button.space3 -width 15
button .main.fbutton.button.flip -image tb_flip -takefocus 0 \
        -command "::board::flip .main.board"

button .main.fbutton.button.coords -image tb_coords -takefocus 0 -command toggleCoords
bind $dot_w <KeyPress-0> toggleCoords

button .main.fbutton.button.stm -image tb_stm -takefocus 0 -command toggleSTM

proc toggleSTM {} {
    global boardSTM
    set boardSTM [expr {1 - $boardSTM} ]
    ::board::stm .main.board
}

image create photo autoplay_off -data {
    R0lGODdhFAAUAKEAANnZ2QAAAFFR+wAAACwAAAAAFAAUAAACMYSPqbvBb4JLsto7D94StowI
    IgOG4ugd55oC6+u98iPXSz0r+Enjcf7jtVyoofGoKAAAOw==
}

image create photo autoplay_on -data {
    R0lGODdhFAAUAKEAAP//4AAAAPoTQAAAACwAAAAAFAAUAAACMYSPqbvBb4JLsto7D94StowI
    IgOG4ugd55oC6+u98iPXSz0r+Enjcf7jtVyoofGoKAAAOw==
}

image create photo engine_on -data {
    R0lGODlhGAAYAOf4AFFOdGdOTQBk9AVi9ItNEVhVfAVt8FVafwRt91ZbgGhZYVdcgZNTEF1a
    gVtghV1ih15iiGNjg2ZmhlJrpDB01mdnhxV8+J9iFV1rm2lpimZqkGpqi2trjG1tjm5uj7Fl
    CnBwkXFxkrZpAXJyk2Z2oDeB6nNzlHR0lXV1lnZ2l3B4pDKI+LBwJTSJ+Xx4lHl5mjaK+nN7
    p356l397mIB8mYF9mpF8ebx6KECS+4KGoYOHooaKpUmZ/IeLplSW+2KU5omMp8qFK4uOqZmN
    jXSUz4yPqo2Qq1Ki/tCKKJKSqFOj/9mLGFSk/5+Tk5WVq1+j+5SXs2Ck/JeXrZWYtGGl/ZiY
    ruGRFFqq/3Sj5JqasGSn/+WUBpycspSfuWet/o2i05+ftqCgt42l0Gqv/2uw/6OiuYyp2aSj
    up+mu3Sx/YGv8KamvPSgDaqmt+iiJZ6qxG+3/3ez/6unuHC4/3i0/6mpv4mx7JOw4e6mH8Op
    iKurwXq6/5ez13u7/328/7Guv7KvwKizzrOwwYa9/YDC/6W40Za76+6uQYe//4HD/7ezxIjA
    /8Kzrpi+7bm1xrq2yIrF/ru3ybO60IvG/7y4yrS70ajA37i8zI7I/7K92LO+2Y/K/7q+zr+8
    zZbK/rvAz5DO/5HP/6XJ7L/D0pnO//zASZnR/sHF1aTO95rS/8LG1pvT/77K2MfI0p3V/8XJ
    2cLK36LV/L7N4aPW/crL1aXX/7zQ6cjN3KbY/83N1/TLeKfa/87O2c/Q2qfe/q7b/dDR26jf
    /9HS3Kng/9LT3avi/8vX5f/Yb7Pl/7Tm/7Xn/7ro/Lvp/b3q/vzhkL/s/8Tt/PnjpMXu/cbv
    /sfw/8jx//7ti8nz/8n2/cr3/9D1/tzw/dbz/sv5/9H2/9f0/9n1/9T5/9r2/9v3/9L8/efz
    /9/4/dr7/uH5/tz9/+j5/93//+n6/+L//er7/+j+/f/9xu/8/en//uv///H+//L///n///7/
    /P///////////////////////////////yH5BAEKAP8ALAAAAAAYABgAAAj+AP8JFJgFzCdH
    fwYqXKgwh5M3sri5s1eOFa1ODBnWCJOkWjVw6tTF2wbrVsaFNYRg8ugNHbpx4LTJonRyIAlM
    ppA9q8at2rdnzZDlwnjSA5FFoHAla7YTaLJfgUyezFCCDqZauIYpe7bs165Vd4QpOpkCAQIL
    POjMGePlCp1FntS8EnQSggELMLSM6bNoUZ8xT5RgaaXnZAQKJXy89YQL16o+dJR84SSnJoQf
    XkgNexYuXLdfnvpIAlPznwYMaoZVI9cOXbpmsQy1Kf1vgQYVw7ylu2dv3jRRVeoAol17RIou
    tyqhqZJERy8gNqzQbmAix4wkRlz868BhSBA30mlDR8jgwcNABSx0WcMTnrhCAh/YOINnrb17
    gfBLzQd//z0b/evZdx988tHX33si6BdNHgcORAAbh9yQRYMKBQAAhScFBAA7
}

image create photo engine_off -data {
    R0lGODlhGAAYAOfyAOYFO+YGQOgINugJPOcKQVFOdOkOPeAUOWdOTeAUPgBk9AVi9LUpUuEX
    P+AXRItNEeIZQM8hTVhVfOIaRdgeTAVt8FVafwRt9+IdS+UeQuQeR2hZYVdcgZNTEN4nUFtg
    hdUrWM8vVuEqTV5iiOEqUmNjg+MtVGZmhlJrpNY2WjB01mdnhxV8+OYwVp9iFd81WV1rm2lp
    iqtNcd82X2pqi2trjMlCdG1tjm5uj7FlCuQ8Y+Y9X3BwkbZpAb5NhWZ2oDeB6nNzlNxGaHR0
    ldNKdoZtj3Z2l6hdnHB4pDKI+LBwJTSJ+Xl5mjaK+nN7p356l+ROb4B8mdpWc4F9mpF8ebx6
    KECS+61wjIKGoYOHoqt1oIaKpUmZ/K12roeLplSW+2KU5omMp8qFK4uOqZmNjXSUz7J+nY2Q
    q9CKKJKSqNmLGJ+Tk5WVq8eAmV+j+8p+n8SDmpSXs2Ck/GGl/ZiYruGRFNZ/mJqasGSn/+WU
    Bpycsq+UxJ+ftqCgt42l0L6Uqmqv/9OLpGuw/6OiuaSjuqamvPSgDaqmt+iiJW+3/3ez/72b
    wXC4/3i0/6mpv4mx7NGYspOw4e6mH8OpiJWv53q6/9absLGuv7KvwKizzrOwwcSnxYa9/YDC
    /5a76+6uQYHD/4jA/8Kzrpi+7bm1xrq2yIrF/ru3ybO60IvG/7y4yqjA37i8zLK92Nmuw7O+
    2Y/K/7q+zr+8zZbK/rvAz5DO/5HP/6XJ7MW91r/D0ueyxPzASZnR/sHF1aTO95rS/5vT/8bG
    3bjM5cfI0p3V/8LK36LV/L7N4crL1aXX/6bY/83N1/TLeM7O2c/Q2qfe/q7b/dDR26jf/9HS
    3NLT3avi/8vX5f/Yb7Pl/7Tm/7Xn/7vp/eLb5/zhkL/s//njpMXu/cbv/sfw/8jx//7ti8nz
    /9bz/tH2/9f0/9n1/9v3/+fz/9/4/eH5/un6/+r7///9xu/8/f//////////////////////
    /////////////////////////////////yH5BAEKAP8ALAAAAAAYABgAAAj+AP8JFHiHDy1S
    lwYqXKgQCxszL3TEi7cuFzJZDBlO6ZPGDoAD7ty9Q1esWcaFU8aMgiTgALd27dKNO6bq5EAn
    sHwV03DAgCtz3rxhW4bxJI4ynWxJe9PyRVBs0DKZFChAgMIVQBqlUiYthQADm6BJA+Zp2Z+W
    B6oONHKhAgs3eBq1zCAoFaWPX3suHOG2iZxGldIKOBJhQloDVa0qLKGiCZdEnWqJEJxXgAab
    I8AA8iVtnIaqaR2g4mPzXwkYjaQFa1FZyqhDpf9JuPFjMmUNt+IUwlR6QE+0gQLxDIHFWRgq
    dU4KPhBBBpYsXg/gqEFGDKLkDA+kFbiCRo0IajdFKGFGThL22FSrPshhqBs8cudjo/23fpf7
    6+j/JRb4wJD98vGdBNpA67X3Xn7bEdiDfd9Mgh5iC/X3SRV35HcSAgVYiF5AADs=
}

image create photo finish_on -data {
    R0lGODlhGAAYAOfwAJbK/np6dkJCOh4qQo62+mZmXsrKyoaGgi5Cbtra2qKinhIWSmJiWkpq
    nlp+utri8p6amiI2UjI+rkJajmJiXiY6VqaiokJiyjpSfuru+iImbl6GxnKe8ra2shIeMiYq
    eprG/mqS5iYufmqG/j5OugoODioyhkpmzkJWsvL2/jpaxsLK6jpKtkpGRlJyrl6C3mJ6/mKG
    znqq/jo2Ni4yqhYSCrrC5jpGsgoOMk5qzl6G3vb6/lJSTlp6xjI6lm6a6sbGwjI6mmKK4mJy
    ylp+2lJuzhoeGjZKdnKC0kpexjY+uuLm9m5uapKOjgYOIk5i3lJm5kpa1tLS0sbS8jI2pnqm
    +jJCttba8m6G1prK/hISDhIaKr6+viYmHgYGBmaK7qLO/kZawurq9oKy/i42qlpyzmqO8lp2
    0maO4kJSvnqi7vr6/jY+ss7O6lpWUlJy0lZ61jY6rjpCshYWDoKCfgoWJtLW8nKa8goKDnae
    9l5+1h4aGm6W6maK4lp61lJiwu7y+io6skJWvm5qaoKq8jI6qoJ+fjo+rg4OFmaG3iIeHlZy
    2rq6tkpiwv7+/j5Gvnai9gYKDt7e3n5+es7Oyubq9tbW1qLS/s7S7jZCslZyzmqK3i5GcmqK
    /jZOdhIWEl561nai/k5m0kZWxvb2+j5KtnKe+gYOFhYWFh4uRoq6/qamoj46NnJyapKSjmqO
    7l5aVjY+qmJ+2mKC2mKG3mqO4nqi9jJCdjY6sgoKEm6W8k5iylZy1kJOuk5mylJqynKa6lZu
    zjo+vtbS0p7K/vLy+kZWvjY+tk5exsK+vg4KCi46rgoOFmKC3mqS6l5+2jY+rjpGtmaK5jZC
    tl6Gyurq+lp21nKa9jI6rnai+s7OzlZy0mqO5kJCPmZmYhIWTra2tkpa2jI2qnqm/hISEiYm
    Ilpy0jpCtrq6ugYKEvb2/j5KulJqznKa7kZWwgICCv//////////////////////////////
    /////////////////////////////////yH5BAEKAP8ALAAAAAAYABgAAAj+AP8JHEiwoMGD
    BbUdgNWthTcFkhAaTDbjFCcX1DY0iOBlUAKJAidFcgAADBhbHCDJqOIJFReJFDyoApMFBIgQ
    OPm0G0etBLqDTeqMuUSMGAEhOmj1QcPNGaQYWoYVTKDsxx1CamoR2ZRhExFaifqEyDbBTUEm
    nvL0efHsmZ8pjnbIgvOsGa0QMvBQIogKGLdZevxY4/UmhSNSoN74qXsNg6GBUt6FmmWtyIkL
    F1RocuQoRZkc5kBJi8FqILhU186wwwJoiesH6jgXC+Zr2zNTewauqvCqSBIknIMLtxOmtqka
    AxkN+ILM3ZArmKKvKMa5mqA0YX7pUjTQEjMzxta1RZtmxUqgP5zFkGBBoteuHgIIlpuVBpqc
    GyyilVrjqFK0TJlAE4soRxxA0CQIjFJIHNBAI4ENjoiRyTJxiBMFFIsgIkVBnzSCSxwgknFI
    G9DQEAcVT4wAwy0UGGTBFo+wAWIcZNQIYiGdjICCER8ZFIAT5xzz4YwgYhNOEOQAIZEruYgg
    jBLHsMHGMcIc800XBoD0jzY8pLPABz6YoAEOc9ChJUEJQNAKAwVM0sGZcMYpp0ABAQA7
}

image create photo finish_off -data {
    R0lGODlhGAAYAOeVAAMDAwYGBgkJCQoKCgsLCwwMDA4ODg8PDxERERISEhQUFBUVFRYWFhkZ
    GRsbGx0dHR8fHyUlJSYmJikpKSwsLC0tLTIyMjMzMzQ0NDc3Nzk5OTs7Oz4+PkBAQEFBQUJC
    QkNDQ0REREZGRkdHR0hISElJSUpKSktLS0xMTE5OTk9PT1BQUFFRUVJSUlNTU1VVVecQOVZW
    VldXV1lZWVtbW1xcXF1dXV5eXl9fX2FhYWJiYmNjY2VlZWZmZmdnZ2hoaGlpaWpqamtra21t
    bW5ubm9vb3BwcHFxcXNzc3R0dHV1dXd3d3h4eHl5eXp6ent7e3x8fH19fX5+fn9/f4CAgIGB
    gYKCgoODg4SEhIWFhYaGhoiIiImJiYqKiouLi4yMjI2NjY6Ojo+Pj5CQkJOTk5SUlJeXl5iY
    mJqampubm5ycnJ6enp+fn6KioqOjo6WlpaampqysrLGxsbOzs7a2trq6ur6+vr+/v8DAwMHB
    wcPDw8TExMbGxsjIyMrKys7OztHR0dLS0tPT09TU1NbW1tjY2Nra2tvb297e3uHh4efn5+rq
    6uvr6+zs7O7u7vLy8vPz8/b29vn5+fr6+v7+/v//////////////////////////////////
    ////////////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////////////
    /////////////////////////////////yH5BAEKAP8ALAAAAAAYABgAAAj+AP8JHEiwoMGD
    Bf9oofFhRI82iBAavJOhQIgiVar0uBBAiCGDMGAMlCLACR4+fNigWfOmzQkGdkISDAlDx4M5
    fPLcuSOmJxkzbarIBKkgTh89euRswZKFixcwY0ImEFTQEIGQcNZ8idLFUZcoWbSEXDNDRkEi
    J9SEnDLlSSBKkqg0CZlFzJsBfwgyMAPGCk0lSCJRigQFxpMpV86smDIwEAA2VpgYARKyRhJK
    IZUMUQKFy5UNA+lQOMOEyJZHikImCkkJ0pEgSaakcTAQToYwRnZoocQbM4zehXDATpNgYJ0J
    XXjYWHJokHOalBrRmIFjSBkIAwkZCGPDhYoTJkypwPjh+wWLFzF8NPFAUIKVGSRQpGABo8Uk
    SotCniAxQkgJLQRJ4cENIYhAQkh7UMLICSCEtAMRShwQSEEK8CCCCDCI0EEJgJDAgQgeBBES
    CDoY5EYD9GWoYQcdXBgCGF6E9JFBToRUwoU4urjDBwnQdBAMBGBwQgklkEBCCUM6EIEfAg01
    UEh/tDCAAxZ8oEEFCCxghUT/OGlIGkfkwIMUdHDZpJlopnlQQAA7
}

image create photo comment_avail -data {
    R0lGODlhEAAQAMZCAAAAAAUDAAgFABkSAxwWBk07FE47FXVTBq58Da98DryFCrmHGMiZNeGvSdmx
    YduzY+SzT+S0Uc+5i+q3UOu4U+q5Vuu5V+S6Zuu6V+G7bOu7Wu27WOy8W+28Xee9Z+y9Xee+bOi+
    bOe/bum/bdvHmuzSne3Tne3Tnu/Xp+/XqPDYqPDZqPbjv/bkwPbnx/fnyPfoyfjqzvjqz/nt1vrt
    1vz26fz26vz37P337P337f779v779/78+P78+f79+v79+/79/P/+/f//////////////////////
    ////////////////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////////////////
    /////////////////////////////////////////////////////////////////////////yH+
    EUNyZWF0ZWQgd2l0aCBHSU1QACH5BAEKAH8ALAAAAAAQABAAAAeAgH+Cg4SFhn8TGhwaFIeDFyYu
    My8nHo4hLDU6Pjo1LCOGFSg3PkCmPzcqFoUfMTymQUFAPTIdrDI9QLGxtLaEGCk4P7qyOSsbhiAs
    Njs/OzYtIo4PJS80MCYOjn8GGREQDQwF238EJAkIAwTbABILCgoHAOQAAgEB8+R/APz6+oEAOw==
}


image create photo comment_unavail -data {
    R0lGODlhEAAQAMZBAAAAAAEAAAMCAAQDAgUDAAUFAwYFAwYFBAgFAAkIBQwLCA0LBhANBQ8ODA8P
    DhQSCxkXEFhQMnVTBmJaPmtfOXJnPpFmB3ZwWaV0CIF5XYB/fYWBc46CWbyFCr6GCrmHGJ2PWZ6Q
    XJmUh6OXbKGZeJ2ajsucNaOhm8+5i9PAlNvMrNLQyeDRnePSleTTmOPVo+XWoeverujet/Dfo+rg
    u+rhxfLktOnk0+/lvOjl2/XouPXpvvbqv/bqwPbtzvnx1vr14P//////////////////////////
    ////////////////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////////////////
    /////////////////////////////////////////////////////////////////////////yH+
    EUNyZWF0ZWQgd2l0aCBHSU1QACH5BAEKAH8ALAAAAAAQABAAAAdxgH+Cg4SFhoeIggoHAAUHiX8D
    FzI7LBMAiAAZPkA/PDMRmIYAODkaKycxIaKFADY1NxsiLyCshAAjOj00JS4UtoQFHC0wJBXAhA4Q
    DwALCQ2JACkmHh4WAZAGKhgYAgzRKB8dHRLItwgEBOatAOuQhIEAOw==
}


#----------------------------------------------------------------------
if {$png_image_support} {
	image create photo autoplay_off -data {
		iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABmJLR0QA/wD/AP+gvaeTAAAAB3RJ
		TUUH1wgGEBoIdCRDswAAAfFJREFUOI3Nkj9oE3Ecxd/vcsmludwvDSbNJdczhcIFHbRdUoQMVWJ1
		FdwciqDGQofQLnZsB0E61HawYokgiGgh/hlEYzvEpCkojWdHDYiXNKRYBxG8RE9zTldKYlB08cEX
		3vI+PL7fL/CPsu3xQQD7AJgAvv0NQBw5EX8XDu/3Eo7RlH6lUa1Wv/4xQBAEvyz3jk9MTg5slbfO
		MDamMRQd+hSNRhuqqnZsRCwTiUQOhfvkzczTFVQqZaQfpI1sNvtW7OmZU5QDG263u5RIJPRWAGOZ
		YDDoAIByRcPaeg7H43H7/Nz8wa4u1+LrTfUyx3Gn8vn84VKpxP0SIEkSBwCsjQXv4lHbrmHn4w65
		NDVlTyaTJ3O55zdWV5+N8zx/2jRNpQ0QCAQcAMCyLATqARUonE4ndF2H3CszqdRNl1bWzj18dH8Y
		wJE2gCiKnAWglO4ZD2rbtebYWKI+ODB468L5i+sAXlg5tnUHLGuHh3rg7fZCr9cxO3vFaJpmYWZm
		Ou33i0UAKiGk0QYIhUIcAFBKYXw3sLx8z3hVLGqjo2dvx2KxPIANQsjn1ivsAiRJcgBAobD2Y/H6
		tS/DR4/dWVpKPQbwkhDyoTXYsUFmJfPk6sLCXZ/XVyCEvO8UtLT7SKZpjgDwAVABvCGENH8X/j/0
		E6ShmjXfUKodAAAAAElFTkSuQmCC
	}

	image create photo autoplay_on -data {
		iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABmJLR0QA/wD/AP+gvaeTAAAAB3RJ
		TUUH1wgGEBoIdCRDswAAAQ9JREFUOI3VkjFKxEAUhr/3Zsi6mS6NW6wJJKnU0lOIeArFTvEe6mFE
		PIOiXY4gLGEL29iNxWyGhMi6nfgzj3kD///NGxj4a8mgz4C9HTJfwGd/sH0zn8/Ts/PTj9/ST4/P
		B13XTQF1XScA93cPiAiCEFYYUkS4ub2mruukaRomgDzPZwAqyuvbC9ZarLFht5ajw+Po+xFQlmXS
		rleICs65GDYbgBoTfcMnRUBRFEm7XqGquNTFm00P2gCKohgBdDDBDMCoIXWONA3lXCijOvJNJqiq
		KgEwxsQJVCMf7/3INwEsl8sIWOwv8CEVwpsa+iaALMsswOXVBdvU+3rFn+i9PwEWW9NBrYi87+D7
		L/oGx9IwzmkU3BMAAAAASUVORK5CYII=
	}

	image create photo engine_on -data {
		iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAABmJLR0QAAAAAAAD5Q7t/AAAACXBI
		WXMAAAsRAAALEQF/ZF+RAAAEoUlEQVRIx7WU328UVRTHv+fOzHbZbru/6Lbd2R/9gQXbgkCXmD5A
		4oM1xmACWqOEVPBB34klmBpMjBiEwD/QBwgaTdkWxV/RYOIDIY0h2FZLC9J2p7s7K1vY3XaXWLo7
		M9cHZsmK26ok3uQkk3vnns8553vOBf7nRasdHD9xbDeAXgDdAILmdgzAKIDIkcMDXz0W4PiJY9sA
		nCYm+uoagkZAlus9rtpagCOdzefiqpq6czvGuKElARw6cnhg7F8DzKgjXl9LdEtneyCWNpTFZSwV
		NCoCgEXkknMdOUIe1jQxeT2+kJxrBtC7VjZU5nwbgNHWjVsX7G5/cT7NExwwVrnEmjzkz2dUafbm
		mBdA92qZiGXfp+vl1miN22+JpnmstDmbXHRPz2dkAGgPedQWnyPDASOa5rFmjxysl3PRlDp7GsAz
		lQCsVBpiom9rZ0dASfPEgygJjBFuzGflwf4eDPb3YHo+IwsCg8AYiBGUNE9s3dwZIEH0meWtDADQ
		621sMqJpQ+GAwRiBlRwR/mKiwMAEBpExMIEZyl1d8TY0GWbHrVqi7lDA71FyfJoxhrnkontKScsA
		QEQgeiAVEeGLyzObAaCzeb3aKjszuRVjKRT0P5lSZ7rXAgTr3A5hZlEvMkaYUtLyYH/PwxYodcJg
		/7MAAA7gzZOX5LagOxNbuJftCjlrAVSvKbIZXdTf4LQuF/RNmmEIAmNERFQicM65wTnXDa7n/ygY
		n1+Zm9U0nfaEa1br0oeA2J3skidUX11zK5nLaAbGe49+3U5EAAEfDzwPAOj78DuAAxwcdpt1yuBk
		PNFY485kczkA6bUAo7F4Yke4LRSYXVjJ2K1S3OWyxyVJhJpMP1cCERFamuq/1zUdBV1Hsahh+4ba
		gBKPpgBcXauLIqmkwnZscHTYrIIoCAJExiAJ7KHIRARGBEkSIYgCBMZQXSWJ25prOm6rUQYgUglQ
		Psk/yqGNDW5fGwZ/UC9XWSRIFhH5e/cD2cV8OwHw1jmn3E57vFDUUCho6NtZt/NO4iYSyo3bRw4P
		VBy08kk+pM7fHHU4nAtv9QR2fnZlYdQgaOvd9rivwRW3SCI451gpaLBKTHytu6G7sKRWJ5QbXgD7
		VhO54mPnb94U3b7lqcCkunz9t9/vx1N5fUlgAhpdoqPNawlsbLR2jE9MJGLR6SYAVdeu/Zyvqqoa
		/+Tcp7vWBACg9z94b7skSacE0eKTg61GcyhUv97lqAGAu9mlvBKLpxLzt5iuFZIrKytvT05eHz74
		xuuh8bEJjI9PKJGhkRZzVP4GIFN0BoC9e/Sd3VardS9j7GnGmB8ADMNI6Lp+NZfLXzz50alvAWDf
		/lcHbTZbbz6Xv993YL/17JlzucjQiONRQMm5YOryqJXAkmmEB0+5BkB7+ZW9Y+Fwl2vm1lxhz0sv
		Ws6eObccGRqxPSoymQCpggmmrQNgNWEGgAKA4vD5C7sA/BQOd9m+vPiNceBg3zoA9yJDI/ZywD8t
		DkAHUCwDGOY+Hz5/4XkAl8LhLsuvv0xWbNNyB9y8rJtlYGaGy2YmVCZk6d/M8PkLYQCXiKguMjTy
		wn8I/vHXn4Y12hGK1zC4AAAAAElFTkSuQmCC
	}

	image create photo engine_off -data {
		iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAAZiS0dEAP8A
		/wD/oL2nkwAAAAlwSFlzAAALEQAACxEBf2RfkQAAAAd0SU1FB9oCHAwWC50uu5UAAAUJSURBVEjH
		vVV/TFNXFP7ufe+V0lqgVFt+tBRFJaEwldYpbjMxuODmcJGBIUoQpiZzW7ZJnLrgzP6YkWlkicnm
		nDrBmSkWUFimc2xZ2I8gMwqoWxSR1haQKgVpEUr7+t7+4JEQtOiWbCc5eS/3vXu+853v3HOB/9hI
		qA9le3dnA8gDkAEgQVp2AGgCYN2xrfTbfwVQtnf3AgDlhLJxM2ISBEN8vE6jjogARLgHvB5nd7fr
		fq+DigLfA6Bkx7bSlqcGkLK2auNm2Z5JTTE43IL9wQgG/TwJAICMFbmocBJp1NDEtut/Ou/1dM4E
		kDcVGzIp86ak5Pn3pkXrA3fcYpcICCE20UQN0Xv7u7nbN1u0ADJCMaET3st18Uk2VbQ+YHeLjkeC
		EwJCxvIRAcHmFh2q6PiALj7JBqA8FAM6XhpC2bj5qSaD77OPZCkfvrDEcOjtFCoGCcNQMAwFy1Aw
		lIJSQFe2bt7s7c8/N3qgNGx+WqqBMGycVN6QDPK0sYmCzS3YVW0/6pae2CnLevGuxnBws4kRBcIy
		DFhmLHjc55tN2em2iOUVGzjFtUatvS9o18YkClLHhQTIMBr0ugfD4uBw8uI+f/0BgV1Rwix7ZVCD
		sk0ZdY030mob29OEPRuXZC64PZ0tfpfxWysFX/LiPs8oGTQm6HVSOz9irPRMmBEdyXQ8CAZcG/a1
		V+7ZpNmo+pSTr9hOitn93LymwyoBBOaVPRzNeouIdV+IlRfn8LLS/e3O+8NDZmNUBADlVAAghODs
		rx02fUyU3Pbs1v55fxxVLxTLZCSrhKSrj3MQeZCUN4j4/Zdi802T/5R5g1t10dHB80Gy2qLClCID
		cNwfGPQYdUpVZ4/HGwDTukVV6DpyQuEbbasQiSmXkJRc4murFg9bVb6t6mIXKw+/KohEmBOriuwf
		8HikUx4SoMnh7HJZ5qoNlKGYppQ7tbHRF5SseJf2DwXBDwNBH1jvw6CKQ68xQXchMkrpZFiK9NkR
		BruzyyWNkJAAVlePnS6cHWlSyBmWUoK8c+9n5i5xGLhFOSx/xcrzV6w8uzCbzU236V+ueW85JYAy
		jGMXzFSZerttFID1SSf553hjcow6dg7cW9dx+ekdCbKizVzgh2/4s/UqF6VUWJXZF8utzGNHjx4L
		1Pw116kpP+nv625Hl/1G745tpcumFBlASfedm03a2kP8mtTb4bKC9ZSvq+DPNGhcjUWV52UcC/Gr
		wqxXR0/GhhWv43IrTyU2Htgy0mVexgJY+ySRIc2SPLT+rpAX5VPhQi0amhMe3nrn62aGZSgIpZ1b
		Tlz66frcIaH+DGTr8ynf8psSQNjly1caCwrX/vI045qcT4s6yY36cjw6g3/4zY+7ZyUlaaerI1UA
		0Dcw6LXb7C7ZwV3xyq4OOQkLrztiyrQUv77e2NrShtbWNru1qmbW2Lh6FIBIjCgAunPXB9lyuTyH
		UrqIUqoHAEEQuoLB4CWPx1u375P95wBgbUH+YYVCkef1eH2FRQXyimPHPdaqmsjJAOPBGUmXyT4O
		zElOMDZteQB87pqcFovFrO641elf/doqWcWx4yPWqhrFZJGJBMA9xhnJwwHIJTABgB9AoPp07VIA
		zRaLWVFf951QVFwYDmDIWlUzjf0H97cIIAggMAFAkNbF6tO1LwFosFjMsmtXrz+2TScGEKXNQakM
		VGI4IjEhE4Qc/7e/+nStBUADIWSGtapmJf4P+xvUwP3l4H0SQwAAAABJRU5ErkJggg==
	}
}

#----------------------------------------------------------------------



	
button .main.fbutton.button.comment -image comment_unavail -command {makeCommentWin}
button .main.fbutton.button.autoplay -image autoplay_off -command toggleAutoplay
button .main.fbutton.button.trial -image tb_trial -command {setTrialMode toggle}
button .main.fbutton.button.hgame_prev -image tb_hgame_prev -command {::game::LoadHistory -1}
button .main.fbutton.button.hgame_next -image tb_hgame_next -command {::game::LoadHistory 1}

foreach i {start back forward end exitVar addVar comment autoplay flip coords stm trial intoVar hgame_prev hgame_next} {
    .main.fbutton.button.$i configure -takefocus 0 -relief flat -border 1 -highlightthickness 0 -anchor n
    bind .main.fbutton.button.$i <Any-Enter> "+.main.fbutton.button.$i configure -relief groove"
    bind .main.fbutton.button.$i <Any-Leave> "+.main.fbutton.button.$i configure -relief flat; statusBarRestore %W; break"
}

pack .main.fbutton.button.start .main.fbutton.button.back .main.fbutton.button.forward .main.fbutton.button.end \
        .main.fbutton.button.space .main.fbutton.button.intoVar .main.fbutton.button.exitVar .main.fbutton.button.addVar .main.fbutton.button.comment .main.fbutton.button.space2 \
        .main.fbutton.button.autoplay .main.fbutton.button.trial .main.fbutton.button.space3 .main.fbutton.button.flip .main.fbutton.button.coords \
        .main.fbutton.button.stm .main.fbutton.button.hgame_prev .main.fbutton.button.hgame_next -side left -pady 1 -padx 0 -ipadx 0 -pady 0 -ipady 0


############################################################
### The board:

proc toggleShowMaterial {} {
    if { $::gameInfo(showMaterial) } {
        grid configure .main.board.mat
    } else  {
        grid remove .main.board.mat
    }
    updateBoard
}

::board::new .main.board $boardSize "showmat"

#.main.board.bd configure -relief solid -border 2
::board::showMarks .main.board 1
if {$boardCoords} {
    ::board::coords .main.board
}
if {$boardSTM} {
    ::board::stm .main.board
}

if { ! $::gameInfo(showMaterial) } {
    grid remove .main.board.mat
}

# .gameInfo is the game information widget:
#
autoscrollframe .main.gameInfoFrame text .main.gameInfo
.main.gameInfo configure -width 20 -height 6 -fg black -bg white -wrap none -state disabled -cursor top_left_arrow -setgrid 1
::htext::init .main.gameInfo

# Right-mouse button menu for gameInfo frame:
menu .main.gameInfo.menu -tearoff 0

.main.gameInfo.menu add checkbutton -label GInfoHideNext \
        -variable gameInfo(hideNextMove) -offvalue 0 -onvalue 1 -command updateBoard

.main.gameInfo.menu add checkbutton -label GInfoMaterial -variable gameInfo(showMaterial) -offvalue 0 -onvalue 1 \
        -command { toggleShowMaterial }

.main.gameInfo.menu add checkbutton -label GInfoFEN \
        -variable gameInfo(showFEN) -offvalue 0 -onvalue 1 -command updateBoard

.main.gameInfo.menu add checkbutton -label GInfoMarks \
        -variable gameInfo(showMarks) -offvalue 0 -onvalue 1 -command updateBoard

.main.gameInfo.menu add checkbutton -label GInfoWrap \
        -variable gameInfo(wrap) -offvalue 0 -onvalue 1 -command updateBoard

.main.gameInfo.menu add checkbutton -label GInfoFullComment \
        -variable gameInfo(fullComment) -offvalue 0 -onvalue 1 -command updateBoard

.main.gameInfo.menu add checkbutton -label GInfoPhotos \
        -variable gameInfo(photos) -offvalue 0 -onvalue 1 \
        -command {updatePlayerPhotos -force}

.main.gameInfo.menu add separator

.main.gameInfo.menu add radiobutton -label GInfoTBNothing \
        -variable gameInfo(showTB) -value 0 -command updateBoard

.main.gameInfo.menu add radiobutton -label GInfoTBResult \
        -variable gameInfo(showTB) -value 1 -command updateBoard

.main.gameInfo.menu add radiobutton -label GInfoTBAll \
        -variable gameInfo(showTB) -value 2 -command updateBoard

.main.gameInfo.menu add separator

.main.gameInfo.menu add command -label GInfoDelete -command {
    catch {sc_game flag delete [sc_game number] invert}
    updateBoard
    ::windows::gamelist::Refresh
}

.main.gameInfo.menu add cascade -label GInfoMark -menu .main.gameInfo.menu.mark
menu .main.gameInfo.menu.mark
foreach flag $maintFlaglist {
    .main.gameInfo.menu.mark add command -label "" -command "
    catch {sc_game flag $flag \[sc_game number\] invert}
    updateBoard
    ::windows::gamelist::Refresh
    "
}

bind .main.gameInfo <ButtonPress-$::MB3> "tk_popup .main.gameInfo.menu %X %Y"
# alternate code that may work better on MacOS ?
# bind .main.gameInfo <ButtonPress-$::MB3> ".main.gameInfo.menu post %X %Y"
bind $dot_w <F9> "tk_popup .main.gameInfo.menu %X %Y"


# setBoard:
#   Resets the squares of the board according to the board string
#   "boardStr" and the piece bitmap size "psize".
#
proc setBoard {board boardStr psize {rotated 0}} {
    for {set i 0} { $i < 64 } { incr i } {
        if {$rotated > 0} {
            set piece [string index $boardStr [expr {63 - $i}]]
        } else {
            set piece [ string index $boardStr $i ]
        }
        $board.$i configure -image $::board::letterToPiece($piece)$psize
    }
}

# updateVarMenus:
#   Updates the menus for moving into or deleting an existing variation.
#   Calls sc_var list and sc_var count to get the list of variations.
#
proc updateVarMenus {} {
    set varList [sc_var list]
    set numVars [sc_var count]
    .main.fbutton.button.intoVar.menu delete 0 end
    .menu.edit.del delete 0 end
    .menu.edit.first delete 0 end
    .menu.edit.main delete 0 end
    # PG: add the move of main line
    if {$numVars > 0} {
        set move [sc_game info nextMove]
        if {$move == ""} { set move "($::tr(empty))" }
        .main.fbutton.button.intoVar.menu add command -label "0: $move" -command "sc_move forward; updateBoard" -underline 0
    }
    for {set i 0} {$i < $numVars} {incr i} {
        set move [lindex $varList $i]
        set state normal
        if {$move == ""} {
            set move "($::tr(empty))"
            set state disabled
        }
        set str "[expr {$i + 1}]: $move"
        set commandStr "sc_var moveInto $i; updateBoard"
        if {$i < 9} {
            .main.fbutton.button.intoVar.menu add command -label $str -command $commandStr \
                    -underline 0
        } else {
            .main.fbutton.button.intoVar.menu add command -label $str -command $commandStr
        }
        set commandStr "sc_var delete $i; updateBoard -pgn"
        .menu.edit.del add command -label $str -command $commandStr
        set commandStr "sc_var first $i; updateBoard -pgn"
        .menu.edit.first add command -label $str -command $commandStr
        set commandStr "sc_var promote $i; updateBoard -pgn"
        .menu.edit.main add command -label $str -command $commandStr \
                -state $state
    }
}
################################################################################
# added by Pascal Georges
# returns a list of num moves from main line following current position
################################################################################
proc getNextMoves { {num 4} } {
    set tmp ""
    set count 0
    while { [sc_game info nextMove] != "" && $count < $num} {
        append tmp " [sc_game info nextMove]"
        sc_move forward
        incr count
    }
    sc_move back $count
    return $tmp
}
################################################################################
# displays a box with main line and variations for easy selection with keyboard
################################################################################
proc showVars {} {
    if {$::autoplayMode == 1} { return }
    
    # No need to display an empty menu
    if {[sc_var count] == 0} {
        return
    }
    
    if {[sc_var count] == 1 &&  [sc_game info nextMove] == ""} {
        # There is only one variation and no main line, so enter it
        sc_var moveInto 0
        updateBoard
        return
    }
    
    sc_info preMoveCmd {}
    
    set w .variations
    if {[winfo exists $w]} { return }
    
    set varList [sc_var list]
    set numVars [sc_var count]
    
    # Present a menu of the possible variations
    toplevel $w
    ::setTitle $w $::tr(Variations)
    setWinLocation $w
    set h [expr $numVars + 1]
    if { $h> 19} { set h 19 }
    listbox $w.lbVar -selectmode browse -height $h -width 20
    pack $w.lbVar -expand yes -fill both -side top
    
    #insert main line
    set move [sc_game info nextMove]
    if {$move == ""} {
        set move "($::tr(empty))"
    } else  {
        $w.lbVar insert end "0: [getNextMoves 5]"
    }
    
    # insert variations
    for {set i 0} {$i < $numVars} {incr i} {
        set move [::trans [lindex $varList $i]]
        if {$move == ""} {
            set move "($::tr(empty))"
        } else  {
            sc_var moveInto $i
            append move [getNextMoves 5]
            sc_var exit
        }
        set str "[expr {$i + 1}]: $move"
        $w.lbVar insert end $str
    }
    $w.lbVar selection set 0
    # bindings
    bind $w <Configure> "recordWinSize $w"
    bind .variations <Return> {catch { event generate .variations <Right> } }
    bind .variations <ButtonRelease-1> {catch { event generate .variations <Right> } }
    bind .variations <Right> {
        sc_info preMoveCmd preMoveCommand
        set cur [.variations.lbVar curselection]
        destroy .variations
        if {$cur == 0} {
            sc_move forward; updateBoard -animate
        } else  {
            sc_var moveInto [expr $cur - 1]; updateBoard -animate
        }
    }
    bind .variations <Up> { set cur [.variations.lbVar curselection] ; .variations.lbVar selection clear $cur
        set sel [expr $cur - 1]
        if {$sel < 0} { set sel 0 }
        .variations.lbVar selection set $sel ; .variations.lbVar see $sel}
    bind .variations <Down> { set cur [.variations.lbVar curselection] ; .variations.lbVar selection clear $cur
        set sel [expr $cur + 1]
        if {$sel >= [.variations.lbVar index end]} { set sel end }
        .variations.lbVar selection set $sel ; .variations.lbVar see $sel}
    bind .variations <Left> { destroy .variations }
    bind .variations <Escape> { catch { event generate .variations <Destroy> } }
    # in order to have the window always on top : this does not really work ...
    bind .variations <Visibility> {
        if { "%s" != "VisibilityUnobscured" } {
            focus .variations
            raise .variations
        }
    }
    bind .variations <FocusOut> {
        focus .variations
        raise .variations
    }
    
    # Needed or the main window loses the focus
    if { $::docking::USE_DOCKING } {
        bind .variations <Destroy> { focus -force .main }
    }
    
    sc_info preMoveCmd preMoveCommand
    
    catch { focus .variations }
    catch { grab $w }
    update
}
################################################################################
#
################################################################################
# V and Z key bindings: move into/out of a variation.
#
bind $dot_w <KeyPress-v> { showVars }
bind $dot_w <KeyPress-z> {.main.fbutton.button.exitVar invoke}

# editMyPlayerNames
#   Present the dialog box for editing the list of player
#   names from whose perspective the board should be shown
#   whenever a game is loaded.
#
proc editMyPlayerNames {} {
    global myPlayerNames
    set w .editMyPlayerNames
    if {[winfo exists $w]} { return }
    toplevel $w
    ::setTitle $w "Scid: [tr OptionsBoardNames]"
    pack [frame $w.b] -side bottom -fill x
    
    autoscrollframe $w.desc text $w.desc.text \
            -foreground black -background gray90 \
            -width 50 -height 8 -wrap word -cursor top_left_arrow
    $w.desc.text insert end [string trim $::tr(MyPlayerNamesDescription)]
    $w.desc.text configure -state disabled
    pack $w.desc -side top -fill x
    autoscrollframe $w.f text $w.f.text \
            -background white -width 50 -height 10 -wrap none
    foreach name $myPlayerNames {
        $w.f.text insert end "\n\"$name\""
    }
    pack $w.f -side top -fill both -expand yes
    button $w.b.white -text $::tr(White) -command {
        .editMyPlayerNames.f.text insert end "\"[sc_game info white]\"\n"
    }
    button $w.b.black -text $::tr(Black) -command {
        .editMyPlayerNames.f.text insert end "\"[sc_game info black]\"\n"
    }
    button $w.b.help -text $::tr(Help) \
            -command {helpWindow Options MyPlayerNames}
    button $w.b.ok -text OK -command editMyPlayerNamesOK
    button $w.b.cancel -text $::tr(Cancel) -command "grab release $w; destroy $w"
    pack $w.b.cancel $w.b.ok -side right -padx 5 -pady 5
    pack $w.b.white $w.b.black $w.b.help -side left -padx 5 -pady 5
    grab $w
}

proc editMyPlayerNamesOK {} {
    global myPlayerNames
    set w .editMyPlayerNames
    set text [string trim [$w.f.text get 1.0 end]]
    set myPlayerNames {}
    foreach name [split $text "\n"] {
        set name [string trim $name]
        if {[string match "\"*\"" $name]} {
            set name [string trim $name "\""]
        }
        if {$name != ""} { lappend myPlayerNames $name }
    }
    grab release $w
    destroy $w
}

# flipBoardForPlayerNames
#   Check if either player in the current game has a name that matches
#   a pattern in the specified list and if so, flip the board if
#   necessary to show from that players perspective.
#
proc flipBoardForPlayerNames {namelist {board .main.board}} {
    set white [sc_game info white]
    set black [sc_game info black]
    foreach pattern $namelist {
        if {[string match $pattern $white]} {
            ::board::flip $board 0
            return
        }
        if {[string match $pattern $black]} {
            ::board::flip $board 1
            return
        }
    }
}

# updateBoard:
#    Updates the main board. Also updates the navigation buttons, disabling
#    those that have no effect at this point in the game.
#    Also ensure all menu settings are up to date.
#    If a parameter "-pgn" is specified, the PGN text is also regenerated.
#    If a parameter "-animate" is specified, board changes are animated.
#
proc updateBoard {args} {
    set pgnNeedsUpdate 0
    set animate 0
    foreach arg $args {
        if {! [string compare $arg "-pgn"]} { set pgnNeedsUpdate 1 }
        if {! [string compare $arg "-animate"]} { set animate 1 }
    }

    if {$pgnNeedsUpdate} { ::pgn::Refresh $pgnNeedsUpdate }

    ::board::resize .main.board $::boardSize
    ::board::setmarks .main.board [sc_pos getComment]
    ::board::update .main.board [sc_pos board] $animate

    after cancel updateNavButtons
    after cancel ::notify::PosChanged

    update idletasks

    after idle updateNavButtons
    after idle ::notify::PosChanged
}

# updateNavButtons:
#    Update the status of each navigation button
#
proc updateNavButtons {} {
    if {[sc_pos isAt start]} {
        .main.fbutton.button.start configure -state disabled
    } else { .main.fbutton.button.start configure -state normal }
    if {[sc_pos isAt end]} {
        .main.fbutton.button.end configure -state disabled
    } else { .main.fbutton.button.end configure -state normal }
    if {[sc_pos isAt vstart]} {
        .main.fbutton.button.back configure -state disabled
    } else { .main.fbutton.button.back configure -state normal }
    if {[sc_pos isAt vend]} {
        .main.fbutton.button.forward configure -state disabled
    } else { .main.fbutton.button.forward configure -state normal }
    # Cannot add a variation to an empty line:
    if {[sc_pos isAt vstart]  &&  [sc_pos isAt vend]} {
        .menu.edit entryconfig [tr EditAdd] -state disabled
        .main.fbutton.button.addVar configure -state disabled
        bind $::dot_w <Control-a> {}
    } else {
        .menu.edit entryconfig [tr EditAdd] -state normal
        .main.fbutton.button.addVar configure -state normal
        bind $::dot_w <Control-a> {sc_var create; updateBoard -pgn}
    }
    if {[sc_var count] == 0} {
        .main.fbutton.button.intoVar configure -state disabled
        .menu.edit entryconfig [tr EditDelete] -state disabled
        .menu.edit entryconfig [tr EditFirst] -state disabled
        .menu.edit entryconfig [tr EditMain] -state disabled
    } else {
        .main.fbutton.button.intoVar configure -state normal
        .menu.edit entryconfig [tr EditDelete] -state normal
        .menu.edit entryconfig [tr EditFirst] -state normal
        .menu.edit entryconfig [tr EditMain] -state normal
    }
    updateVarMenus
    if {[sc_var level] == 0} {
        .main.fbutton.button.exitVar configure -state disabled
    } else {
        .main.fbutton.button.exitVar configure -state normal
    }

    wm withdraw .tooltip
    set comment [sc_pos getComment]
    # remove technical comments, notify only human readable ones
    regsub -all {\[%.*\]} $comment {} comment
    if {$comment != ""} {
         .main.fbutton.button.comment configure -image comment_avail -relief flat
         ::utils::tooltip::Set .main.fbutton.button.comment $comment
    } else {
         .main.fbutton.button.comment configure -image comment_unavail -relief flat
         ::utils::tooltip::UnSet .main.fbutton.button.comment
    }
   .main.fbutton.button.hgame_prev configure -state [::game::Hprev_btnstate]
   .main.fbutton.button.hgame_next configure -state [::game::Hnext_btnstate]
}

# updateGameInfo:
#    Update the game status window .main.gameInfo
#
proc updateGameInfo {} {
    global gameInfo

    .main.gameInfo configure -state normal
    .main.gameInfo delete 0.0 end
    ::htext::display .main.gameInfo [sc_game info -hide $gameInfo(hideNextMove) \
            -material $gameInfo(showMaterial) \
            -cfull $gameInfo(fullComment) \
            -fen $gameInfo(showFEN) -tb $gameInfo(showTB)]
    if {$gameInfo(wrap)} {
        .main.gameInfo configure -wrap word
        .main.gameInfo tag configure wrap -lmargin2 10
        .main.gameInfo tag add wrap 1.0 end
    } else {
        .main.gameInfo configure -wrap none
    }
    .main.gameInfo configure -state disabled
    updatePlayerPhotos
}

# Set up player photos:

image create photo photoW
image create photo photoB
label .main.photoW -background white -image photoW -anchor ne
label .main.photoB -background white -image photoB -anchor ne

# readPhotoFile executed once at startup for each SPF file. Loads SPI file if it exists.
# Otherwise it generates index information and tries to write SPI file to disk (if it can be done)
proc readPhotoFile {fname} {
    global photobegin
    global photosize
    global spffile
    set count 0
    set writespi 0
    
    if {! [regsub {\.spf$} $fname {.spi} spi]} {
        # How does it happend?
        return
    }
    
    # If SPI file was found then just source it and exit
    if { [file readable $spi]} {
        set count [array size spffile]
        source $spi
        set newcount [array size spffile]
        if {[expr $newcount - $count] > 0} {
            ::splash::add "Found [expr $newcount - $count] player photos in [file tail $fname]"
            ::splash::add "Loading information from index file [file tail $spi]"
            return
        }
    }
    
    # Check for the absence of the SPI file and check for the write permissions
    if { ![file exists $spi] && ![catch {open $spi w} fd_spi]} {
        # SPI file will be written to disk by scid
        set writespi 1
    }
    
    if {! [file readable $fname]} { return }
    
    set fd [open $fname]
    while {[gets $fd line] >= 0} {
        # search for the string      photo "Player Name"
        if { [regexp {^photo \"(.*)\" \{$} $line -> name] } {
            set count [expr $count + 1 ]
            set begin [tell $fd]
            # skip data block
            while {1} {
                set end [tell $fd]
                gets $fd line
                if {[regexp {.*\}.*} $line ]} {break}
            }
            set trimname [trimString $name]
            set size [expr $end - $begin ]
            set photobegin($trimname) $begin
            set photosize($trimname) $size
            set spffile($trimname) $fname
            if { $writespi } {
                # writing SPI file to disk
                puts $fd_spi "set \"photobegin($trimname)\" $begin"
                puts $fd_spi "set \"photosize($trimname)\" $size"
                puts $fd_spi "set \"spffile($trimname)\" \"\$fname\""
            }
        }
    }
    if {$count > 0 && $writespi} {
        ::splash::add "Found $count player photos in [file tail $fname]"
        ::splash::add "Index file [file tail $spi] was generated succesfully"
    }
    if {$count > 0 && !$writespi} {
        ::splash::add "Found $count player photos in [file tail $fname]"
        ::splash::add "Could not generate index file [file tail $spi]"
        ::splash::add "Use spf2spi script to generate [file tail $spi] file "
    }
    
    if { $writespi } { close $fd_spi }
    close $fd
}


#convert $data string tolower case and strip the first two blanks.
proc trimString {data} {
    set data [string tolower $data]
    set strindex [string first "\ " $data]
    set data [string replace $data $strindex $strindex]
    set strindex [string first "\ " $data]
    set data [string replace $data $strindex $strindex]
    return $data
}


# retrieve photo from the SPF file using index information
proc getphoto {name} {
    global photobegin
    global photosize
    global spffile
    set data ""
    if {[info exists spffile($name)]} {
        set fd [open $spffile($name)]
        seek $fd $photobegin($name) start
        set data [read $fd $photosize($name) ]
        close $fd
    }
    return $data
}

proc addPhotoAlias {aliasname name} {
    global photobegin
    global photosize
    global spffile
    global droppedaliases
    if {[info exists spffile([trimString $name])]} {
        set photobegin([trimString $aliasname]) $photobegin([trimString $name])
        set photosize([trimString $aliasname]) $photosize([trimString $name])
        set spffile([trimString $aliasname]) $spffile([trimString $name])
    } else {
        set droppedaliases [expr $droppedaliases + 1 ]
    }
}

# photobegin($name) - file offset of the photo for the player $name
# photobegin($name) - size (in bytes) of the photo for the player $name
# spffile($name) - location of the SPF file where photo for the player $name is stored
array set photobegin {}
array set photosize {}
array set spffile {}

# variable droppedaliases counts the number of the dropped aliases.
# Alias is dropped if the player hasn't photo.
set droppedaliases 0

# Directories where Scid searches for the photo files
set photodirs [list $scidDataDir $scidUserDir $scidConfigDir [file join $scidShareDir "photos"]]

# Read all Scid photo (*.spf) files in the Scid data/user/config directories:
foreach dir $photodirs {
    foreach photofile [glob -nocomplain -directory $dir "*.spf"] {
        readPhotoFile $photofile
    }
}

# Read all Scid photo aliases (*.spa)
foreach dir $photodirs {
    foreach spa [glob -nocomplain -directory $dir "*.spa"] {
        if {! [file readable $spa]} { return }
        set count [array size spffile]
        set droppedcount $droppedaliases
        source $spa
        set newcount [array size spffile]
        set newdroppedcount $droppedaliases
        if {[expr $newcount - $count] > 0} {
            ::splash::add "Found [expr $newcount - $count] player aliases in [file tail $spa]"
        }
        if {[expr $newdroppedcount - $droppedcount] > 0} {
            ::splash::add "Dropped [expr $newdroppedcount - $droppedcount] player aliases in [file tail $spa]"
        }
    }
}


set photo(oldWhite) {}
set photo(oldBlack) {}

# Try to change the engine name: ignore version number, try to ignore blanks
proc trimEngineName { engine } {
    global spffile
    set engine [sc_name retrievename $engine]
    
    set engine [string tolower $engine]
    
    if { [string first "deep " $engine] == 0 } {
        # strip "deep "
        set engine [string range $engine 5 end]
    }
    # delete two first blank to make "The King" same as "TheKing"
    # or "Green Light Chess" as "Greenlightchess"
    set strindex [string first "\ " $engine]
    set engine [string replace $engine $strindex $strindex]
    set strindex [string first "\ " $engine]
    set engine [string replace $engine $strindex $strindex]
    set strindex [string first "," $engine]
    set slen [string len $engine]
    if { $strindex == -1 && $slen > 2 } {
        #seems to be a engine name:
        # search until longest name matches an engine name
        set slen [string len $engine]
        for { set strindex $slen} {![info exists spffile([string range $engine 0 $strindex])]\
                    && $strindex > 2 } {set strindex [expr {$strindex - 1}] } { }
        set engine [string range $engine 0 $strindex]
    }
    return $engine
}

# updatePlayerPhotos
#   Updates the player photos in the game information area
#   for the two players of the current game.
#
proc updatePlayerPhotos {{force ""}} {
    global photo
    global spffile
    if {$force == "-force"} {
        # Force update even if it seems unnecessary. This is done
        # when the user selects to show or hide the photos.
        set photo(oldWhite) {}
        set photo(oldBlack) {}
        place forget .main.photoW
        place forget .main.photoB
    }
    if {! $::gameInfo(photos)} { return }
    #get photo from player
    set white [sc_game info white]
    set black [sc_game info black]
    
    catch { set white [trimEngineName $white] }
    catch { set black [trimEngineName $black] }
    
    if {$black != $photo(oldBlack)} {
        set photo(oldBlack) $black
        place forget .main.photoB
        if {[info exists spffile($black)]} {
            image create photo photoB -data [getphoto $black ]
            .main.photoB configure -image photoB -anchor ne
            place .main.photoB -in .main.gameInfo -x -1 -relx 1.0 -anchor ne
            # force to update white, black size could be changed
            set photo(oldWhite) {}
        }
    }
    set distance [expr {[image width photoB] + 2}]
    if { $distance < 10 } { set distance 82 }
    if {$white != $photo(oldWhite)} {
        set photo(oldWhite) $white
        place forget .main.photoW
        if {[info exists spffile($white)]} {
            image create photo photoW -data [getphoto $white ]
            .main.photoW configure -image photoW -anchor ne
            place .main.photoW -in .main.gameInfo -x -$distance -relx 1.0 -anchor ne
        }
    }
    bind .main.photoW <ButtonPress-1> "togglePhotosSize"
    bind .main.photoB <ButtonPress-1> "togglePhotosSize"
    set ::photosMinimized 0
}
################################################################################
# Toggles photo sizes
################################################################################
set photosMinimized 0
proc togglePhotosSize {} {
    set distance [expr {[image width photoB] + 2}]
    if { $distance < 10 } { set distance 82 }
    
    if {$::photosMinimized} {
        set ::photosMinimized 0
        if { [winfo ismapped .main.photoW] } {
            place .main.photoW -in .main.gameInfo -x -$distance -relx 1.0 -relheight 1 -width [image width photoW] -anchor ne
        }
        if { [winfo ismapped .main.photoB] } {
            place .main.photoB -in .main.gameInfo -x -1 -relx 1.0 -relheight 1 -width [image width photoB] -anchor ne
        }
    } else  {
        set ::photosMinimized 1
        if { [winfo ismapped .main.photoW] } {
            place .main.photoW -in .main.gameInfo -x -17 -relx 1.0 -relheight 0.15 -width 15 -anchor ne
        }
        if { [winfo ismapped .main.photoB] } {
            place .main.photoB -in .main.gameInfo -x -1 -relx 1.0  -relheight 0.15 -width 15 -anchor ne
        }
    }
    
}
#########################################################
### Chess move input

# Globals for mouse-based move input:

set selectedSq -1
set bestSq -1

set EMPTY 0
set KING 1
set QUEEN 2
set ROOK 3
set BISHOP 4
set KNIGHT 5
set PAWN 6

################################################################################
#
################################################################################
proc getPromoPiece {} {
    set w .promoWin
    set ::result 2
    toplevel $w
    # wm transient $w .main
    ::setTitle $w "Scid"
    wm resizable $w 0 0
    set col "w"
    if { [sc_pos side] == "black" } { set col "b" }
    ttk::button $w.bq -image ${col}q45 -command "set ::result 2 ; destroy $w"
    ttk::button $w.br -image ${col}r45 -command "set ::result 3 ; destroy $w"
    ttk::button $w.bb -image ${col}b45 -command "set ::result 4 ; destroy $w"
    ttk::button $w.bn -image ${col}n45 -command "set ::result 5 ; destroy $w"
    pack $w.bq $w.br $w.bb $w.bn -side left
    bind $w <Escape> "set ::result 2 ; destroy $w"
    bind $w <Return> "set ::result 2 ; destroy $w"
    update
    catch { grab $w }
    tkwait window $w
    return $::result
}

# confirmReplaceMove:
#   Asks the user what to do when adding a move when a move already
#   exists.
#   Returns a string value:
#      "replace" to replace the move, truncating the game.
#      "var" to add the move as a new variation.
#      "cancel" to do nothing.
#
set addVariationWithoutAsking 0

proc confirmReplaceMove {} {
    global askToReplaceMoves trialMode
    
    # If reviewing a game, enter a var automatically
    if {[winfo exists $::reviewgame::window]} {
        return "var"
    }
    
    if {$::addVariationWithoutAsking} { return "var" }
    
    if {! $askToReplaceMoves} { return "replace" }
    if {$trialMode} { return "replace" }
    
    option add *Dialog.msg.wrapLength 4i interactive
    catch {tk_dialog .dialog "Scid: $::tr(ReplaceMove)?" \
                $::tr(ReplaceMoveMessage) "" 0 \
                $::tr(ReplaceMove) $::tr(NewMainLine) \
                $::tr(AddNewVar) [tr EditTrial] \
                $::tr(Cancel)} answer
    option add *Dialog.msg.wrapLength 3i interactive
    if {$answer == 0} { return "replace" }
    if {$answer == 1} { return "mainline" }
    if {$answer == 2} { return "var" }
    if {$answer == 3} { setTrialMode 1; return "replace" }
    return "cancel"
}

proc addNullMove {} {
    addMove null null
}

# addMove:
#   Adds the move indicated by sq1 and sq2 if it is legal. If the move
#   is a promotion, getPromoPiece will be called to get the promotion
#   piece from the user.
#   If the optional parameter is "-animate", the move will be animated.
#
proc addMove { sq1 sq2 {animate ""}} {
    if { ! [::fics::playerCanMove] || ! [::reviewgame::playerCanMove]} { return } ;# not player's turn
    
    global EMPTY
    set nullmove 0
    if {$sq1 == "null"  &&  $sq2 == "null"} { set nullmove 1 }
    if {!$nullmove  &&  [sc_pos isLegal $sq1 $sq2] == 0} {
        # Illegal move, but if it is King takes king then treat it as
        # entering a null move:
        set board [sc_pos board]
        set k1 [string tolower [string index $board $sq1]]
        set k2 [string tolower [string index $board $sq2]]
        if {$k1 == "k"  &&  $k2 == "k"} { set nullmove 1 } else { return }
    }
    set promo $EMPTY
    if {[sc_pos isPromotion $sq1 $sq2] == 1} {
        # sometimes, addMove is triggered twice
        if { [winfo exists .promoWin] } { return }
        set promo [getPromoPiece]
    }
    
    set promoLetter ""
    switch -- $promo {
        2 { set promoLetter "q"}
        3 { set promoLetter "r"}
        4 { set promoLetter "b"}
        5 { set promoLetter "n"}
        default {set promoLetter ""}
    }
    
    # Autmatically follow the main line if the next move is the same or enter the relevant variation if it exists
    if {! $::annotateMode} {
        set moveUCI [::board::san $sq2][::board::san $sq1]$promoLetter
        set move [sc_game info nextMoveUCI]
        if { [ string compare -nocase $moveUCI $move] == 0 } {
            sc_move forward
            updateBoard
            return
        }
        set varList [sc_var list UCI]
        set i 0
        foreach { move } $varList {
            if { [ string compare -nocase $moveUCI $move] == 0 } {
                sc_var moveInto $i
                updateBoard
                return
            }
            incr i
        }
    }
    
    sc_game undoPoint
    
    set action "replace"
    if {![sc_pos isAt vend]} {
        set action [confirmReplaceMove]
    }
    if {$action == "replace"} {
        # nothing
    } elseif {$action == "mainline" || $action == "var"} {
        # sc_var create stores comments (premovecommand). So avoid comment repetition.
        # Maybe it would be better to void premovecommand for sc_var create
        if {[winfo exists .commentWin]} {
            ::commenteditor::storeComment
            .commentWin.cf.text delete 0.0 end
        }
        sc_var create
    } else {
        # Do not add the move at all:
        return
    }
    
    if {$nullmove} {
        sc_move addSan null
    } else {
        set ::sergame::lastPlayerMoveUci ""
        if {[winfo exists ".serGameWin"]} {
            set ::sergame::lastPlayerMoveUci "[::board::san $sq2][::board::san $sq1]$promoLetter"
        }
        sc_move add $sq1 $sq2 $promo
        set san [sc_game info previous]
        if {$action == "mainline"} {
            sc_var exit
            sc_var promote [expr {[sc_var count] - 1}]
            sc_move forward 1
        }
        after idle [list ::utils::sound::AnnounceNewMove $san]
        
        if {[winfo exists .commentWin]} { .commentWin.cf.text delete 0.0 end }
    }
    
    if {[winfo exists .fics]} {
        
        if { [::fics::playerCanMove] } {
            if { $promo != $EMPTY } {
                ::fics::writechan "promote $promoLetter"
            }
            ::fics::writechan [ string range [sc_game info previousMoveUCI] 0 3 ]
        }
    }
    
    if {$::novag::connected} {
        ::novag::addMove "[::board::san $sq2][::board::san $sq1]$promoLetter"
    }
    
    moveEntry_Clear
    updateBoard -pgn $animate
    
    ::tree::doTraining
    
}

# addSanMove
#   Like addMove above, but takes the move in SAN notation instead of
#   a pair of squares.
#
proc addSanMove {san {animate ""} {noTraining ""}} {
    
    if {! $::annotateMode} {
        set move [sc_game info nextMoveNT]
        if { [ string compare -nocase $san $move] == 0 } {
            sc_move forward
            updateBoard
            return
        }
        set varList [sc_var list]
        set i 0
        foreach { move } $varList {
            if { [ string compare -nocase $san $move] == 0 } {
                sc_var moveInto $i
                updateBoard
                return
            }
            incr i
        }
    }
    
    set action "replace"
    if {![sc_pos isAt vend]} {
        set action [confirmReplaceMove]
    }
    if {$action == "replace"} {
        # nothing
    } elseif {$action == "var" || $action == "mainline"} {
        sc_var create
    } else {
        # Do not add the move at all:
        return
    }
    # if {[winfo exists .commentWin]} { .commentWin.cf.text delete 0.0 end }
    sc_game undoPoint
    sc_move addSan $san
    if {$action == "mainline"} {
        sc_var exit
        sc_var promote [expr {[sc_var count] - 1}]
    }
    moveEntry_Clear
    updateBoard -pgn $animate
    ::utils::sound::AnnounceNewMove $san
    if {$noTraining != "-notraining"} {
        ::tree::doTraining
    }
}

# enterSquare:
#   Called when the mouse pointer enters a board square.
#   Finds the best matching square for a move (if there is a
#   legal move to or from this square), and colors the squares
#   to indicate the suggested move.
#
proc enterSquare { square } {	
    global bestSq bestcolor selectedSq suggestMoves
    if {$selectedSq == -1} {
        set bestSq -1
        if {$suggestMoves} {
            set bestSq [sc_pos bestSquare $square]
            if {$bestSq != -1} {
                ::board::colorSquare .main.board $square $bestcolor
                ::board::colorSquare .main.board $bestSq $bestcolor        
            }
        }
    }
}

# leaveSquare:
#    Called when the mouse pointer leaves a board square.
#    Recolors squares to normal (lite/dark) color.
#
proc leaveSquare { square } {
    global selectedSq bestSq
    if {$selectedSq == -1} {
        ::board::colorSquare .main.board $bestSq
        ::board::colorSquare .main.board $square  
    }
}

# pressSquare:
#    Called when the left mouse button is pressed on a square. Sets
#    that square to be the selected square.
#
proc pressSquare { square } {
    global selectedSq highcolor
    
    if { ![::fics::playerCanMove] || ![::reviewgame::playerCanMove] } { return } ;# not player's turn
    
    # if training with calculations of var is on, just log the event
    if { [winfo exists .calvarWin] } {
        ::calvar::pressSquare $square
        return
    }
    
    if {$selectedSq == -1} {
        set selectedSq $square
        ::board::colorSquare .main.board $square $highcolor
        # Drag this piece if it is the same color as the side to move:
        set c [string index [sc_pos side] 0]  ;# will be "w" or "b"
        set p [string index [::board::piece .main.board $square] 0] ;# "w", "b" or "e"
        if {$c == $p} {
            ::board::setDragSquare .main.board $square
        }
    } else {
        ::board::setDragSquare .main.board -1
        ::board::colorSquare .main.board $selectedSq
        ::board::colorSquare .main.board $square
        if {$square != $selectedSq} {
            addMove $square $selectedSq -animate
        }
        set selectedSq -1
        enterSquare $square
    }
}

# pressSquare2:
#   Called when the middle mouse button is pressed on a square. This
#   makes the suggested best move.
#
proc pressSquare2 { square } {
    if { [winfo exists .fics] } { return } ;# don't use this function with FICS
    
    global selectedSq bestSq
    ::board::colorSquare .main.board $bestSq
    ::board::colorSquare .main.board $square
    addMove $square $bestSq -animate
    enterSquare $square
}

# releaseSquare:
#   Called when the left mouse button is released over a square.
#   If the square is different to that the button was pressed on, it
#   is a dragged move; otherwise it is just selecting this square as
#   part of a move.
#
proc releaseSquare { w x y } {
    
    if { [winfo exists .calvarWin] } { return }
    
    global selectedSq bestSq
    
    ::board::setDragSquare $w -1
    set square [::board::getSquare $w $x $y]
    if {$square < 0} {
        set selectedSq -1
        return
    }
    
    if {$square == $selectedSq} {
        if {$::suggestMoves} {
            # User pressed and released on same square, so make the
            # suggested move if there is one:
            set selectedSq -1
            ::board::colorSquare $w $bestSq
            ::board::colorSquare $w $square
            addMove $square $bestSq -animate
            enterSquare $square
        } else {
            # Current square is the square user pressed the button on,
            # so we do nothing.
        }
    } else {
        # User has dragged to another square, so try to add this as a move:
        addMove $square $selectedSq
        ::board::colorSquare $w $selectedSq
        set selectedSq -1
        ::board::colorSquare $w $square
    }
}


# backSquare:
#    Handles the retracting of a move (when the right mouse button is
#    clicked on a square). Recolors squares to normal color also.
#    If the move is the last in the game or variation, is is removed
#    by truncating the game after retracting the move.
#
proc backSquare {} {
    global selectedSq bestSq
    set lastMoveInLine 0
    if {[sc_pos isAt vend]} {
        set lastMoveInLine 1
    }
    sc_move back
    
    # RMB used to delete the move if it was the last in a line. Removed it as there is no undo.
    # if {[sc_pos isAt vstart] && [sc_var level] != 0} {
    # ::pgn::deleteVar [sc_var number]
    # } elseif {$lastMoveInLine} {
    # sc_game truncate
    # }
    
    set selectedSq -1
    set bestSq -1
    # update the board without -pgn option because of poor performance with long games
    updateBoard -animate
    ::utils::sound::AnnounceBack
}


##
## Auto-playing of moves:
##
set autoplayMode 0

set tempdelay 0
trace variable tempdelay w {::utils::validate::Regexp {^[0-9]*\.?[0-9]*$}}
# ################################################################################
# Set the delay between moves in options menu
################################################################################
proc setAutoplayDelay {} {
    global autoplayDelay tempdelay
    set tempdelay [expr {$autoplayDelay / 1000.0}]
    set w .apdialog
    if { [winfo exists $w] } { focus $w ; return }
    toplevel $w
    ::setTitle $w "Scid"
    wm resizable $w 0 0
    ttk::label $w.label -text $::tr(AnnotateTime:)
    pack $w.label -side top -pady 5 -padx 5
    spinbox $w.spDelay -background white -width 4 -textvariable tempdelay -from 1 -to 300 -increment 1
    pack $w.spDelay -side top -pady 5
    
    set b [ttk::frame $w.buttons]
    pack $b -side top -fill x
    ttk::button $b.cancel -text $::tr(Cancel) -command {
        destroy .apdialog
        focus .
    }
    ttk::button $b.ok -text "OK" -command {
        if {$tempdelay < 0.1} { set tempdelay 0.1 }
        set autoplayDelay [expr {int($tempdelay * 1000)}]
        destroy .apdialog
        focus .
    }
    pack $b.cancel $b.ok -side right -padx 5 -pady 5
    bind $w <Escape> { .apdialog.buttons.cancel invoke }
    bind $w <Return> { .apdialog.buttons.ok invoke }
    focus $w.spDelay
}
################################################################################
#
################################################################################
proc toggleAutoplay { } {
    global autoplayMode autoplayDelay
    if {$autoplayMode == 0} {
        set autoplayMode 1
        # Change the autoplay icon in the main window
        #
        .main.fbutton.button.autoplay configure -image autoplay_on -relief sunken
        # Start with some delay
        # Only to spawn the autoplay on a new thread
        #
        after 500 autoplay
    } else {
        cancelAutoplay
    }
}

################################################################################
#
################################################################################
proc autoplay {} {
    global autoplayDelay autoplayMode annotateMode analysis
    
    # Was autoplay stopped by the user since the last time the timer ran out?
    # If so, silently exit this handler
    #
    if { $autoplayMode == 0 } {
        return
    }
    
    # Add annotation if needed
    #
    if { $annotateMode } {
        addAnnotation
    }
    
    if { $::initialAnalysis } {
        # Stop analyis if it is running
        # We do not want initial super-accuracy
        #
        stopEngineAnalysis 1
        set annotateMode 1
        # First do the book analysis (if this is configured)
        # The latter condition is handled by the operation itself
        set ::wentOutOfBook 0
        bookAnnotation 1
        # Start the engine
        startEngineAnalysis 1 1
    
    # Autoplay comes in two flavours:
    # + It can run through a game, with or witout annotation
    # + It can be annotating just opening sections of games
    # See if such streak ends here and now
    #
    } elseif { [sc_pos isAt end] || ($annotateMode && $::isBatchOpening && ([sc_pos moveNumber] > $::isBatchOpeningMoves)) } {
        
        # Stop the engine
        #
        stopEngineAnalysis 1
        
        # Are we running a batch analysis?
        #
        if { $annotateMode && $::isBatch } {
            # First replace the game we just finished
            #
            set gameNo [sc_game number]
            if { $gameNo != 0 } {
                sc_game save $gameNo
            }
            
            # See if we must advance to the next game
            #
            if { $gameNo < $::batchEnd } {
                incr gameNo
                sc_game load $gameNo
                updateMenuStates
                updateStatusBar
                updateTitle
                updateBoard -pgn
                # First do book analysis
                #
                set ::wentOutOfBook 0
                bookAnnotation 1
                # Start with initial assessment of the position
                #
                set ::initialAnalysis 1
                # Start the engine
                #
                startEngineAnalysis 1 1
            } else {
                # End of batch, stop
                #
                cancelAutoplay
                return
            }
        } else {
            # Not in a batch, just stop
            #
            cancelAutoplay
            return
        }
    } elseif { $annotateMode && $::isAnnotateVar } {
        # A construction to prune empty variations here and now
        # It makes no sense to discover only after some engine
        # time that we entered a dead end.
        #
        set emptyVar 1
        while { $emptyVar } {
            set emptyVar 0
            # Are we at the end of a variation?
            # If so, pop back into the parent
            #
            if { [sc_pos isAt vend] } {
                sc_var exit
                set lastVar [::popAnalysisData]
            } else {
                set lastVar [sc_var count]
            }
            # Is there a subvariation here?
            # If so, enter it after pushing where we are
            #
            if { $lastVar > 0 } {
                incr lastVar -1
                sc_var enter $lastVar
                ::pushAnalysisData $lastVar
                # Check if this line is empty
                # If so, we will pop back immediately in the next run
                #
                if { [sc_pos isAt vstart] && [sc_pos isAt vend] } {
                    set emptyVar 1
                } else {
                    # We are in a new line!
                    # Tell the annotator (he might be interested)
                    #
                    updateBoard -pgn
                    set ::atStartOfLine 1
                }
            } else {
                # Just move ahead following the current line
                #
                ::move::Forward
            }
        }
    } else {
        # Just move ahead following the main line
        #
        ::move::Forward
    }
    
    # Respawn
    #
    after $autoplayDelay autoplay
}
################################################################################
#
################################################################################
proc cancelAutoplay {} {
    global autoplayMode annotateMode annotateModeButtonValue
    set autoplayMode 0
    set annotateMode 0
    set annotateModeButtonValue 0
    after cancel autoplay
    .main.fbutton.button.autoplay configure -image autoplay_off -relief flat
}
################################################################################
#
################################################################################

bind $dot_w <Return> {
    if {[winfo exists .analysisWin1] && $analysis(analyzeMode1)} {
        .analysisWin1.b1.move invoke
    }
}

bind $dot_w <Escape> cancelAutoplay

set trialMode 0

proc setTrialMode {mode} {
    global trialMode
    if {$mode == "toggle"} {
        set mode [expr {1 - $trialMode}]
    }
    if {$mode == $trialMode} { return }
    if {$mode == "update"} { set mode $trialMode }
    
    if {$mode == 1} {
        set trialMode 1
        sc_game push copy
        .main.fbutton.button.trial configure -image tb_trial_on
    } else {
        set trialMode 0
        sc_game pop
        .main.fbutton.button.trial configure -image tb_trial
    }
    updateBoard -pgn
}


###
### Correspondence.tcl: part of Scid.
### Copyright (C) 2008 Alexander Wagner
###
### $Id: correspondence.tcl,v 4.3 2011/02/13 18:12:02 arwagner Exp $
###
### Last change: <Sun, 2011/10/09 13:25:35 arwagner agamemnon>
###
### Add correspondence chess via eMail or external protocol to scid
###
#======================================================================

# http and tdom are required for the Xfcc protocol

#======================================================================
#
# Xfcc interface for scid
#
#======================================================================
namespace eval Xfcc {

	#----------------------------------------------------------------------
	# Header and footer of the SOAP-messages. Linebreaking is imporant
	#
	set SOAPstart {<?xml version="1.0" encoding="utf-8"?>
	<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
	<soap:Body>
	}

	set SOAPend {</soap:Body>
	</soap:Envelope>}
	#
	#----------------------------------------------------------------------

	set xfccrc     ""
	set xfccstate  {}

	# list of server names for config dialog
	set lsrvname   {}

	# when was the last update was retrieved online?
	set lastupdate 0
	set update     0

	array unset xfccsrv
	# entry values for config dialog
	set Oldnum     0
	set Server     ""
	set Username   ""
	set Password   ""
	set URI        ""

	# To pass on directories on windows with a backslash
	set xfccrcfile ""

	# Set up a proper user agent
	# Something like 
	#    Scid/3.7 (x11; Linux i686; rv:Devel 2009) Tcl/Tk 8.5.2
	set useragent "Scid/$::scidVersion ([tk windowingsystem]; $::tcl_platform(os) $::tcl_platform(machine); rv:$scidVersionDate) Tcl/Tk [info patchlevel]"
	
	#----------------------------------------------------------------------
	# Replace XML entities by their normal characters
	#----------------------------------------------------------------------
	proc xmldecrypt {chdata} {

		foreach from {{\&amp;} {\&lt;} {\&gt;} {\&quot;} {\&apos;}}   \
			to {{\&} < > {"} {'}} {                                     ;# '"
				regsub -all $from $chdata $to chdata
		 }   
		 return $chdata
	}

	#----------------------------------------------------------------------
	# Replace normal characters by their XML entities
	#----------------------------------------------------------------------
	proc xmlencrypt {chdata} {

		foreach from {{\&} < > {"} {'}} \
				to {{\&amp;} {\&lt;} {\&gt;} {\&quot;} {\&apos;}} {    ;# '"
				regsub -all $from $chdata $to chdata
		 }   
		 return $chdata
	}


	#----------------------------------------------------------------------
	# Configure Xfcc by means of rewriting the .xfccrc in xml
	#----------------------------------------------------------------------
	proc SaveXfcc {} {
		global ::Xfcc::xfccrc ::Xfcc::xfccrcfile
		# file delete $xfccrcfile
		if {[catch {open $xfccrcfile w} optionF]} {
			puts stderr "$xfccrcfile can not be created"
		} else {
			# devide by 4 as the size function returns all subarray entries
			set size [expr [ array size ::Xfcc::xfccsrv ] / 4]

			puts $optionF "<?xml version=\"1.0\" encoding=\"utf-8\"?>"
			puts $optionF "<xfcc>"
			for {set i 0} {$i < $size } {incr i} {
				if { [regexp {^# } $::Xfcc::xfccsrv($i,0)] && \
					  [regexp {^# } $::Xfcc::xfccsrv($i,1)] && \
					  [regexp {^# } $::Xfcc::xfccsrv($i,2)] && \
					  [regexp {^# } $::Xfcc::xfccsrv($i,3)] } {
					if {$size == 1} {
						puts $optionF "\t<server>"
						puts $optionF "\t\t<name>Server</name>"
						puts $optionF "\t\t<uri>http://</uri>"
						puts $optionF "\t\t<user>User_Name</user>"
						puts $optionF "\t\t<pass>Password</pass>"
						puts $optionF "\t\t<rating>Rating</rating>"
						puts $optionF "\t</server>"
					}
				} else {
					set ::Xfcc::xfccsrv($i,0) [::Xfcc::xmlencrypt $::Xfcc::xfccsrv($i,0) ]
					set ::Xfcc::xfccsrv($i,1) [::Xfcc::xmlencrypt $::Xfcc::xfccsrv($i,1) ]
					set ::Xfcc::xfccsrv($i,2) [::Xfcc::xmlencrypt $::Xfcc::xfccsrv($i,2) ]
					set ::Xfcc::xfccsrv($i,3) [::Xfcc::xmlencrypt $::Xfcc::xfccsrv($i,3) ]
					set ::Xfcc::xfccsrv($i,4) [::Xfcc::xmlencrypt $::Xfcc::xfccsrv($i,4) ]
					puts $optionF "\t<server>"
					puts $optionF "\t\t<name>$::Xfcc::xfccsrv($i,0)</name>"
					puts $optionF "\t\t<uri>$::Xfcc::xfccsrv($i,1)</uri>"
					puts $optionF "\t\t<user>$::Xfcc::xfccsrv($i,2)</user>"
					puts $optionF "\t\t<pass>$::Xfcc::xfccsrv($i,3)</pass>"
					puts $optionF "\t\t<rating>$::Xfcc::xfccsrv($i,4)</rating>"
					puts $optionF "\t</server>"
				}
			}
			puts $optionF "</xfcc>"
			close $optionF
			::Xfcc::ReadConfig $xfccrcfile
		}
	}
	
	#----------------------------------------------------------------------
	# Delete the currently selected server entry
	#----------------------------------------------------------------------
	proc DeleteServer {} {
		# mark a deleted server by # allows the user to manually
		# undelete by removing the # again before hitting ok.
		set ::Xfcc::Server   "# $::Xfcc::xfccsrv($::Xfcc::Oldnum,0)"
		set ::Xfcc::Username "# $::Xfcc::xfccsrv($::Xfcc::Oldnum,2)"
		set ::Xfcc::Password "# $::Xfcc::xfccsrv($::Xfcc::Oldnum,3)"
		set ::Xfcc::Rating   "# $::Xfcc::xfccsrv($::Xfcc::Oldnum,4)"
		set ::Xfcc::URI      "# $::Xfcc::xfccsrv($::Xfcc::Oldnum,1)"
		set ::Xfcc::xfccsrv($::Xfcc::Oldnum) $::Xfcc::Server
		}

	#----------------------------------------------------------------------
	# Add a new, empty server entry to xfccsrv array
	#----------------------------------------------------------------------
	proc AddServer {} {

		set ::Xfcc::xfccsrv($::Xfcc::Oldnum,0) $::Xfcc::Server
		set ::Xfcc::xfccsrv($::Xfcc::Oldnum,2) $::Xfcc::Username
		set ::Xfcc::xfccsrv($::Xfcc::Oldnum,3) $::Xfcc::Password
		set ::Xfcc::xfccsrv($::Xfcc::Oldnum,1) $::Xfcc::URI
		set ::Xfcc::xfccsrv($::Xfcc::Oldnum,4) $::Xfcc::Rating

 		set size [expr [ array size ::Xfcc::xfccsrv ] / 4]

		# increement the list box with a new server entry
		.configXfccSrv.xfccSrvList configure -height [expr $size+2]

 		set ::Xfcc::xfccsrv($size,0) "Unique_ServerName"
 		set ::Xfcc::xfccsrv($size,2) "Your_Login"
 		set ::Xfcc::xfccsrv($size,3) "SeCrEt!"
 		set ::Xfcc::xfccsrv($size,4) "Rating"
 		set ::Xfcc::xfccsrv($size,1) "http://"
 
 		set ::Xfcc::Server    $::Xfcc::xfccsrv($size,0)
 		set ::Xfcc::Username  $::Xfcc::xfccsrv($size,2)
 		set ::Xfcc::Password  $::Xfcc::xfccsrv($size,3)
 		set ::Xfcc::Rating    $::Xfcc::xfccsrv($size,4)
 		set ::Xfcc::URI       $::Xfcc::xfccsrv($size,1)
 
 		lappend ::Xfcc::lsrvname [list $::Xfcc::xfccsrv($size,0)]
 
 		set ::Xfcc::Oldnum    $size
	}

	#----------------------------------------------------------------------
	# Store the current values to the xfccsrv-array
	#----------------------------------------------------------------------
	proc xfccsrvstore {} {

		set number [ .configXfccSrv.xfccSrvList curselection ]
		if {!($number > 0)} {
			set number 0
		}
		set ::Xfcc::xfccsrv($::Xfcc::Oldnum,0) $::Xfcc::Server
		set ::Xfcc::xfccsrv($::Xfcc::Oldnum,2) $::Xfcc::Username
		set ::Xfcc::xfccsrv($::Xfcc::Oldnum,3) $::Xfcc::Password
		set ::Xfcc::xfccsrv($::Xfcc::Oldnum,4) $::Xfcc::Rating
		set ::Xfcc::xfccsrv($::Xfcc::Oldnum,1) $::Xfcc::URI

		set ::Xfcc::Server    $::Xfcc::xfccsrv($number,0)
		set ::Xfcc::Username  $::Xfcc::xfccsrv($number,2)
		set ::Xfcc::Password  $::Xfcc::xfccsrv($number,3)
		set ::Xfcc::Rating    $::Xfcc::xfccsrv($number,4)
		set ::Xfcc::URI       $::Xfcc::xfccsrv($number,1)

		set ::Xfcc::Oldnum    $number
		.configXfccSrv.xfccSrvList selection set $number
	}

	#----------------------------------------------------------------------
	# Configure Xfcc by means of rewriting the .xfccrc in xml
	#----------------------------------------------------------------------
	proc config {configfile} {
		global ::Xfcc::xfccrc ::Xfcc::xfccrcfile

		set xfccrcfile $configfile

		::Xfcc::ReadConfig $xfccrcfile
		set size [expr [array size ::Xfcc::xfccsrv ] / 4]

		set w ".configXfccSrv"
		if {[winfo exists $w]} {
			focus $w
			return
		}

		set number            1
		set ::Xfcc::Oldnum    0
		set ::Xfcc::Server    $::Xfcc::xfccsrv($::Xfcc::Oldnum,0)
		set ::Xfcc::Username  $::Xfcc::xfccsrv($::Xfcc::Oldnum,2)
		set ::Xfcc::Password  $::Xfcc::xfccsrv($::Xfcc::Oldnum,3)
		set ::Xfcc::Rating    $::Xfcc::xfccsrv($::Xfcc::Oldnum,4)
		set ::Xfcc::URI       $::Xfcc::xfccsrv($::Xfcc::Oldnum,1)

		# create the window and buttons
		toplevel $w
		wm title $w "\[$xfccrcfile\]"
		ttk::button $w.bOk     -text OK -command "::Xfcc::xfccsrvstore; ::Xfcc::SaveXfcc; destroy .configXfccSrv"
		ttk::button $w.bAdd    -text  [::tr "GlistAddField"] -command {
			::Xfcc::AddServer
		}

		ttk::button $w.bDelete -text [::tr "GlistDeleteField"] -command {
			::Xfcc::DeleteServer
		}
		ttk::button $w.bCancel -text [::tr "Cancel"] -command "destroy $w"

		listbox $w.xfccSrvList -height [expr [ array size ::Xfcc::xfccsrv ] / 4 + 1] -width 60 -selectmode single -list ::Xfcc::lsrvname
		# select the first entry
		$w.xfccSrvList selection set $::Xfcc::Oldnum

		ttk::label  $w.lxfccSrv   -text [::tr CCDlgServerName]
		ttk::label  $w.lxfccUid   -text [::tr CCDlgLoginName]
		ttk::label  $w.lxfccPas   -text [::tr CCDlgPassword]
		ttk::label  $w.lxfccURI   -text [::tr CCDlgURL]
		ttk::label  $w.lxfccrtype -text [::tr CCDlgRatingType]

		ttk::entry  .configXfccSrv.xfccSrv  -width 60 -textvariable ::Xfcc::Server
		ttk::entry  .configXfccSrv.xfccUid  -width 60 -textvariable ::Xfcc::Username
		ttk::entry  .configXfccSrv.xfccPas  -width 60 -textvariable ::Xfcc::Password
		ttk::entry  .configXfccSrv.xfccURI  -width 60 -textvariable ::Xfcc::URI

		if {$::tcl_version >= 8.5} {
			ttk::combobox .configXfccSrv.xfccrtype -values [sc_info ratings] -width 7 -textvariable ::Xfcc::Rating
		} else {
			eval tk_optionMenu .configXfccSrv.xfccrtype ::Xfcc::Rating [sc_info ratings]
			.configXfccSrv.xfccrtype configure -indicatoron 0 -width 7 -takefocus 1
		}

		# Bind the change of selection to a proper update of variables
		# and internal representation
		bind .configXfccSrv.xfccSrvList <<ListboxSelect>> {
			::Xfcc::xfccsrvstore
		}

		grid $w.xfccSrvList  -sticky e -columnspan 6 -column  0 -row 0 -rowspan $number

		grid $w.lxfccSrv     -sticky e -columnspan 2 -column  0 -row [expr {$number + 1}]
		grid $w.lxfccUid     -sticky e -columnspan 2 -column  0 -row [expr {$number + 2}]
		grid $w.lxfccPas     -sticky e -columnspan 2 -column  0 -row [expr {$number + 3}]
		grid $w.lxfccURI     -sticky e -columnspan 2 -column  0 -row [expr {$number + 4}]
		grid $w.lxfccrtype   -sticky e -columnspan 2 -column  0 -row [expr {$number + 5}]

		grid $w.xfccSrv      -sticky w -columnspan 4 -column  2 -row [expr {$number + 1}]
		grid $w.xfccUid      -sticky w -columnspan 4 -column  2 -row [expr {$number + 2}]
		grid $w.xfccPas      -sticky w -columnspan 4 -column  2 -row [expr {$number + 3}]
		grid $w.xfccURI      -sticky w -columnspan 4 -column  2 -row [expr {$number + 4}]
		grid $w.xfccrtype    -sticky w -columnspan 4 -column  2 -row [expr {$number + 5}]

		# Add the buttons to the window
		grid $w.bOk     -column 2 -row [expr {$number + 6}]
		grid $w.bAdd    -column 3 -row [expr {$number + 6}]
		grid $w.bDelete -column 4 -row [expr {$number + 6}]
		grid $w.bCancel -column 5 -row [expr {$number + 6}]

		bind $w <Escape> "$w.bCancel invoke"
		bind $w <F1> { helpWindow CCXfccSetupDialog}
	}

	#----------------------------------------------------------------------
	# Read xfccrcfile (xml) config file and stores the xml structure as
	# is to the global $xfccrc
	#----------------------------------------------------------------------
	proc ReadConfig {xfccrcfile} {
		global xfccrc

		::CorrespondenceChess::updateConsole "info This is Scids internal Xfcc-interface"
		::CorrespondenceChess::updateConsole "info Using $xfccrcfile..."
		if {[catch {open $xfccrcfile r} optionF]} {
			::CorrespondenceChess::updateConsole "info ERROR: Unable ot open config file $xfccrcfile";
		} else {
			set xfccrc [read $optionF]

			set dom [dom parse $xfccrc]
			set doc [$dom documentElement]
			set aNodes [$doc selectNodes {/xfcc/server}]
			set number   0

			# reset the servernames before reading them in again
			set ::Xfcc::lsrvname {}

			foreach srv $aNodes {
				set name     [$srv selectNodes {string(name)}]
				set uri      [$srv selectNodes {string(uri)}]
				set username [$srv selectNodes {string(user)}]
				set password [$srv selectNodes {string(pass)}]
				set rating   [$srv selectNodes {string(rating)}]

				set ::Xfcc::xfccsrv($number,0) $name
				set ::Xfcc::xfccsrv($number,1) $uri
				set ::Xfcc::xfccsrv($number,2) $username
				set ::Xfcc::xfccsrv($number,3) $password
				set ::Xfcc::xfccsrv($number,4) $rating

				lappend ::Xfcc::lsrvname [list $name ]

				incr number
			}
			close $optionF
		}
	}

	#----------------------------------------------------------------------
	# SOAPError: parses $xml and searches for error messages from the
	# server to report them to the user.
	#----------------------------------------------------------------------
	proc SOAPError {server xml} {
		# Remove the SOAP-Envelope and make all server responses to a
		# common XML format as they use the same error messages anyway.
		regsub -all {.*<soap:Fault>} $xml {<error>} xml
		regsub -all {</soap:Fault>.*} $xml {</error>} xml

		regsub -all {.*<MakeAMoveResponse.*\">} $xml {<error>} xml
		regsub -all {</MakeAMoveResponse>.*} $xml {</error>} xml
		regsub -all {<MakeAMoveResult>} $xml {<faultstring>} xml
		regsub -all {</MakeAMoveResult>} $xml {</faultstring>} xml

		set dom [dom parse $xml]
		set doc [$dom documentElement]

		set aNodes [$doc selectNodes //error]
		foreach game $aNodes {
			set fcode   [$game selectNodes {string(faultcode)}]
			set fstring [$game selectNodes {string(faultstring)}]
			switch -regexp -- $fstring \
			"Success" {
				::CorrespondenceChess::updateConsole "info Processing successfull!"
			} \
			"ServerError" {
				::CorrespondenceChess::updateConsole "info Server Error!"
				set Title "Scid Error"
				set Error "$server reported an unknown error."
				tk_messageBox -icon warning -type ok -parent . \
					-title $Title -message $Error
			} \
			"FeatureUnavailable" {
				::CorrespondenceChess::updateConsole "info Feature unavailable!"
			} \
			"AuthenticationFailed" {
				::CorrespondenceChess::updateConsole "info Authentication failed!"
				set Title "Scid Authentication Failure!"
				set Error "Could not authenticate to the Xfcc-Server.\nPlease check Username and Password for $server."
				tk_messageBox -icon warning -type ok -parent . \
					-title $Title -message $Error
			} \
			"InvalidGameID" {
				::CorrespondenceChess::updateConsole "info Invalid Game-ID!"
			} \
			"NotYourGame" {
				::CorrespondenceChess::updateConsole "info Not your game!"
			} \
			"NotYourTurn" {
				::CorrespondenceChess::updateConsole "info Not your turn!"
			} \
			"InvalidMove" {
				::CorrespondenceChess::updateConsole "info Invalid move!"
			} \
			"InvalidMoveNumber" {
				::CorrespondenceChess::updateConsole "info Invalid move number!"
			} \
			"NoDrawWasOffered" {
				::CorrespondenceChess::updateConsole "info No draw was offered!"
			} \
			"LostOnTime" {
				::CorrespondenceChess::updateConsole "info Lost on time!"
			} \
			"YouAreOnLeave" {
				::CorrespondenceChess::updateConsole "info You are on leave!"
			} \
			"MoveIsAmbigous" {
				::CorrespondenceChess::updateConsole "info Move is ambigous!"
			}
		}
	}

	#----------------------------------------------------------------------
	# Process all servers found in the global xfccrc and store the
	# games in path/.
	#----------------------------------------------------------------------
	proc ProcessAll {path} {
		global xfccrc

		# empty the state array
		set ::Xfcc::xfccstate {}

		set dom [dom parse $xfccrc]
		set doc [$dom documentElement]

		set aNodes [$doc selectNodes {/xfcc/server}]

		foreach srv $aNodes {
			set name     [::Xfcc::xmlencrypt [$srv selectNodes {string(name)}]]
			set uri      [::Xfcc::xmlencrypt [$srv selectNodes {string(uri)} ]]
			set username [::Xfcc::xmlencrypt [$srv selectNodes {string(user)}]]
			set password [::Xfcc::xmlencrypt [$srv selectNodes {string(pass)}]]
			set rating   [$srv selectNodes {string(rating)}]

			if {$rating == ""} {
				set rating "ICCF"
			}

			::CorrespondenceChess::updateConsole "info Processing $username\@$name..."
			set xml [::Xfcc::Receive $uri $username $password]
			::Xfcc::SOAPError $name $xml
			::Xfcc::WritePGN $path $name $rating $xml
			::Xfcc::PrintStatus $path $name $xml
		}
	}

	#----------------------------------------------------------------------
	# Recieve games via XFCC from the web service at uri using username
	# and password provided
	#----------------------------------------------------------------------
	proc Receive {uri username password} {
		# construct the SOAP-message for Xfcc Webservice
		set xmlmessage $::Xfcc::SOAPstart
			# generate the "Get my Games" call
			append xmlmessage {<GetMyGames xmlns="http://www.bennedik.com/webservices/XfccBasic">}
			append xmlmessage "<username>$username</username>"
			append xmlmessage "<password>$password</password>"
			append xmlmessage "</GetMyGames>"
		append xmlmessage $::Xfcc::SOAPend

		# send it to the web service note the space before the charset
		set token [::http::geturl $uri \
						-type "text/xml; charset=\"utf-8\"" \
						-query $xmlmessage]

		# retrieve result
		set xmlresult [::http::data $token]
		::http::cleanup $token

		###---###
		# if {[catch {open "/tmp/xfcc.xml" w} dbg]} {
		# 	::CorrespondenceChess::updateConsole "info ERROR: Unable ot open debug file";
		# } else {
		# 	puts $dbg $xmlresult
		# }
		# close $dbg
		###---###

		return $xmlresult
	}

	#----------------------------------------------------------------------
	# Send move via XFCC to the web service at uri using username
	# and password provided. Gameid is the unique id on the server,
	# move count the current move number, move the move to send in SAN,
	# comment the comment sent to the opponent. The other variables are
	# flags that might be true/false.
	#----------------------------------------------------------------------
	proc SendMove {uri username password gameid movecount move comment \
						resign acceptdraw offerdraw claimdraw} {

		# Encrypt textual entities to conform to XML
		set uri      [::Xfcc::xmlencrypt $uri]
		set username [::Xfcc::xmlencrypt $username]
		set password [::Xfcc::xmlencrypt $password]
		set comment  [::Xfcc::xmlencrypt $comment]

		set xmlmessage $::Xfcc::SOAPstart
			append xmlmessage {<MakeAMove xmlns="http://www.bennedik.com/webservices/XfccBasic">}
			append xmlmessage "<username>$username</username>"
			append xmlmessage "<password>$password</password>"
			append xmlmessage "<gameId>$gameid</gameId>"
			append xmlmessage "<resign>$resign</resign>"
			append xmlmessage "<acceptDraw>$acceptdraw</acceptDraw>"
			append xmlmessage "<movecount>$movecount</movecount>"
			append xmlmessage "<myMove>$move</myMove>"
			append xmlmessage "<offerDraw>$offerdraw</offerDraw>"
			append xmlmessage "<claimDraw>$claimdraw</claimDraw>"
			append xmlmessage "<myMessage>$comment</myMessage>"
			append xmlmessage "</MakeAMove>"
		append xmlmessage $::Xfcc::SOAPend

		# send it to the web service note the space before the charset
		set token [::http::geturl $uri \
						-type "text/xml; charset=\"utf-8\"" \
						-query $xmlmessage]

		# retrieve result
		set xmlresult [::http::data $token]
		::http::cleanup $token
		return $xmlresult
	}

	#----------------------------------------------------------------------
	# Send move to server, extracting login data first from config file
	#----------------------------------------------------------------------
	proc Send {name gameid movecount move comment \
				  resign acceptdraw offerdraw claimdraw} {
		global xfccrc

		set dom [dom parse $xfccrc]
		set doc [$dom documentElement]

		set aNodes [$doc selectNodes {/xfcc/server}]

		foreach srv $aNodes {
			set server   [$srv selectNodes {string(name)}]
			set uri      [$srv selectNodes {string(uri)}] 
			set username [$srv selectNodes {string(user)}]
			set password [$srv selectNodes {string(pass)}]
			
			if {$name == $server} {
				::CorrespondenceChess::updateConsole "info Processing $gameid for $username\@$name..."
				::CorrespondenceChess::updateConsole "info Sending $movecount\. $move \{$comment\}"

				if {$resign == "true"} {
					::CorrespondenceChess::updateConsole "info Resigning..."
				}
				if {$acceptdraw == "true"} {
					::CorrespondenceChess::updateConsole "info Accepting draw..."
				}
				if {$claimdraw == "true"} {
					::CorrespondenceChess::updateConsole "info Claiming draw..."
				}
				if {$offerdraw == "true"} {
					::CorrespondenceChess::updateConsole "info Offering draw..."
				}

				set xml [::Xfcc::SendMove $uri $username $password \
							$gameid $movecount $move $comment \
							$resign $acceptdraw $offerdraw $claimdraw]
				::Xfcc::SOAPError $name $xml
			}
		}
	}

	#----------------------------------------------------------------------
	# Given the name of the Xfcc-Server and the XML-result from the web
	# server a PGN file with a single game is written. name is the name
	# of the server used for generation of the CmailGameID, xml is the
	# result from the web service. rating contains the string that
	# should be used to specify the rating system. It could be
	# something like Rating, Elo, ICCF, USCF, BCF etc. like usual in
	# Scid
	#----------------------------------------------------------------------
	proc WritePGN {path name rating xml} {

		# The following removes the SOAP-Envelope. tDOM does not seem to
		# like it for whatever reason, but it's not needed anyway.
		regsub -all {.*<GetMyGamesResult>} $xml {<GetMyGamesResult>} xml
		regsub -all {</GetMyGamesResult>.*} $xml {</GetMyGamesResult>} xml

		set dom [dom parse $xml]
		set doc [$dom documentElement]

		set aNodes [$doc selectNodes //XfccGame]
		foreach game $aNodes {

			set id           [::Xfcc::xmldecrypt [$game selectNodes {string(id)}]]
			set Event        [::Xfcc::xmldecrypt [$game selectNodes {string(event)}]]
			set Site         [::Xfcc::xmldecrypt [$game selectNodes {string(site)}]]
			set Date         [::Xfcc::xmldecrypt [$game selectNodes {string(eventDate)}]]
			set White        [::Xfcc::xmldecrypt [$game selectNodes {string(white)}]]
			set Black        [::Xfcc::xmldecrypt [$game selectNodes {string(black)}]]
			set WhiteElo     [::Xfcc::xmldecrypt [$game selectNodes {string(whiteElo)}]]
			set BlackElo     [::Xfcc::xmldecrypt [$game selectNodes {string(blackElo)}]]
			set TimeControl  [::Xfcc::xmldecrypt [$game selectNodes {string(timeControl)}]]
			set GameId       [::Xfcc::xmldecrypt [$game selectNodes {string(id)}]]
			set Source       [::Xfcc::xmldecrypt [$game selectNodes {string(gameLink)}]]
			set Round        [::Xfcc::xmldecrypt [$game selectNodes {string(round)}]]
			set Result       [::Xfcc::xmldecrypt [$game selectNodes {string(result)}]]
			set drawOffered  [::Xfcc::xmldecrypt [$game selectNodes {string(drawOffered)}]]
			set setup        [::Xfcc::xmldecrypt [$game selectNodes {string(setup)}]]
			set fen          [::Xfcc::xmldecrypt [$game selectNodes {string(fen)}]]
			set myTurn       [$game selectNodes {string(myTurn)}]
			set moves        [::Xfcc::xmldecrypt [$game selectNodes {string(moves)}]]
			set mess         [::Xfcc::xmldecrypt [$game selectNodes {string(message)}]]

			# These values may not be set, they were first introduced by
			# SchemingMind as extension to Xfcc.  If uppercase settings
			# (usual default) exist: use them and they should take
			# precedence. Note that the PNG header should use upper case
			# by convention
			set whiteCountry [::Xfcc::xmldecrypt [$game selectNodes {string(WhiteCountry)}]]
			set blackCountry [::Xfcc::xmldecrypt [$game selectNodes {string(BlackCountry)}]]
			set whiteIccfID  [::Xfcc::xmldecrypt [$game selectNodes {string(WhiteIccfID)}]]
			set blackIccfID  [::Xfcc::xmldecrypt [$game selectNodes {string(BlackIccfID)}]]
			set whiteFideID  [::Xfcc::xmldecrypt [$game selectNodes {string(WhiteFideID)}]]
			set blackFideID  [::Xfcc::xmldecrypt [$game selectNodes {string(BlackFideID)}]]
			set WhiteNA      [::Xfcc::xmldecrypt [$game selectNodes {string(WhiteNA)}]]
			set BlackNA      [::Xfcc::xmldecrypt [$game selectNodes {string(BlackNA)}]]

			if {$whiteCountry == ""} {
				set whiteCountry [::Xfcc::xmldecrypt [$game selectNodes {string(whiteCountry)}]]
			}
			if {$whiteIccfID == ""} {
				set whiteIccfID  [::Xfcc::xmldecrypt [$game selectNodes {string(whiteIccfID)}]]
			}
			if {$whiteFideID == ""} {
				set whiteFideID  [::Xfcc::xmldecrypt [$game selectNodes {string(whiteFideID)}]]
			}
			if {$blackCountry == ""} {
				set blackCountry [::Xfcc::xmldecrypt [$game selectNodes {string(blackCountry)}]]
			}
			if {$blackIccfID == ""} {
				set blackIccfID  [::Xfcc::xmldecrypt [$game selectNodes {string(blackIccfID)}]]
			}
			if {$blackFideID == ""} {
				set blackFideID  [::Xfcc::xmldecrypt [$game selectNodes {string(blackFideID)}]]
			}
			# White/BlackNA are normally left blank but if the user
			# allwos contain the mail addresses of the player
			if {$WhiteNA == ""} {
				set WhiteNA      [::Xfcc::xmldecrypt [$game selectNodes {string(whiteNA)}]]
			}
			if {$BlackNA == ""} {
				set BlackNA      [::Xfcc::xmldecrypt [$game selectNodes {string(blackNA)}]]
			}
			if {$WhiteNA == ""} {
				set WhiteNA "white@unknown.org"
			}
			if {$BlackNA == ""} {
				set BlackNA "black@unknown.org"
			}


			# get the variant as scid can not handle many of them.
			# a list of all possible tags can be found here:
			# http://wiki.schemingmind.com/PGNVariantValues
			# http://wiki.schemingmind.com/Variants
			set variant         [$game selectNodes {string(variant)}]

			set filename [file nativename [file join $path "$name-$id.pgn"]]
			file delete $filename

			# Drop games that are not "normal" chess as scid can not
			# handle variants. Note that the ICCF does not set the
			# variant flag. Additionally, it is enough to drop variant
			# games from the inbox to get proper playlists.
			if { ($Result == "Cancelled") } {
					::CorrespondenceChess::updateConsole "info $name-$id was cancelled...";
			} elseif {($variant == "chess") || ($variant == "") || ($variant == "randompieces") || ($variant == "upsidedown") || ($variant == "loosers") ||  ($variant == "nocastle")} {
				### --- Istvan --- ###
				### Racing Kings is not possible due to unambigious moves
				### that are ambigious if check is allowed
				### ($variant == "racingkings") ||
				### --- Istvan --- ###

				if {[catch {open $filename w} pgnF]} {
					::CorrespondenceChess::updateConsole "info ERROR: Unable to open config file $filename";
				} else {
					::CorrespondenceChess::updateConsole "info $name-$id..."
					puts $pgnF "\[Event \"$Event\"\]";
					puts $pgnF "\[Site \"$Site\"\]";
					puts $pgnF "\[Date \"$Date\"\]";
					puts $pgnF "\[Round \"$Round\"\]";
					puts $pgnF "\[White \"$White\"\]";
					puts $pgnF "\[Black \"$Black\"\]";
					puts $pgnF "\[White$rating \"$WhiteElo\"\]";
					puts $pgnF "\[Black$rating \"$BlackElo\"\]";
					puts $pgnF "\[TimeControl \"$TimeControl\"\]";
					puts $pgnF "\[GameId \"$GameId\"\]";
					puts $pgnF "\[Source \"$Source\"\]";
					puts $pgnF "\[WhiteNA \"$WhiteNA\"]";
					puts $pgnF "\[BlackNA \"$BlackNA\"]";
					puts $pgnF "\[Mode \"XFCC\"\]";
					puts $pgnF "\[CmailGameName \"$name-$id\"\]";

					if {$whiteCountry != ""} {
						puts $pgnF "\[WhiteCountry \"$whiteCountry\"\]";
					}
					if {$blackCountry != ""} {
						puts $pgnF "\[BlackCountry \"$blackCountry\"\]";
					}
					if {$whiteIccfID > 0} {
						puts $pgnF "\[WhiteIccfID \"$whiteIccfID\"\]";
					}
					if {$blackIccfID > 0} {
						puts $pgnF "\[BlackIccfID \"$blackIccfID\"\]";
					}
					if {$whiteFideID  > 0} {
						puts $pgnF "\[WhiteFideID \"$whiteFideID\"\]";
					}
					if {$blackFideID > 0} {
						puts $pgnF "\[BlackFideID \"$blackFideID\"\]";
					}
					if {$setup == "true"} {
						puts $pgnF "\[FEN \"$fen\"\]";
					}

					# add result to the header
					# Adjudication is handled like normal game results, that
					# is WhiteWins == WhiteWinAdjudicated etc.
					switch -regexp -- $Result \
					"Ongoing" {
						puts $pgnF "\[Result \"*\"\]\n";
					} \
					"AdjudicationPending" {
						puts $pgnF "\[Result \"*\"\]\n";
					} \
					"WhiteWin*" {
						puts $pgnF "\[Result \"1-0\"\]\n";
					} \
					"BlackWin*" {
						puts $pgnF "\[Result \"0-1\"\]\n";
					} \
					"Draw*" {
						puts $pgnF "\[Result \"1/2-1/2\"\]\n";
					} \
					"WhiteDefaulted" {
						puts $pgnF "\[Result \"0-1\"\]\n";
					} \
					"BlackDefaulted" {
						puts $pgnF "\[Result \"1-0\"\]\n";
					} \
					"BothDefaulted" {
						puts $pgnF "\[Result \"1/2-1/2\"\]\n";
					} \
					default {
						puts $pgnF "\[Result \"$Result\"\]\n";
					}

					# Add the game-id as comment before starting the game.
					# This might be helpfull on certain mobile devices, that
					# can not deal with extensive header information, e.g.
					# OpenChess on PalmOS.
					puts $pgnF "{$name-$id}"
					puts $pgnF $moves

					# If the PGN already ends with a comment, do not place
					# the message string afterwards as scid will then
					# discard the comment in the movelist.
					if {[string range $moves end end] != "\}"} {
						if {($myTurn == "true") && ($mess != "")} {
							puts -nonewline $pgnF "\{"
							puts -nonewline $pgnF $mess
							puts $pgnF "\}"
						}
					}
					# If a game has finished and a message is sent allways
					# add it here.
					if {($Result != "Ongoing") && ($mess != "")} {
						puts -nonewline $pgnF "\{"
						puts -nonewline $pgnF $mess
						puts $pgnF "\}"
					}

					# add result at the end
					switch -regexp -- $Result \
					"Ongoing" {
						puts $pgnF "*";
					} \
					"AdjudicationPending" {
						puts $pgnF "*";
					} \
					"WhiteWin*" {
						puts $pgnF "1-0\n";
					}\
					"BlackWin*" {
						puts $pgnF "0-1\n";
					}\
					"Draw*" {
						puts $pgnF "1/2-1/2\n";
					} \
					"WhiteDefaulted" {
						puts $pgnF "\{White Defaultet\} 0-1\n";
					}\
					"BlackDefaulted" {
						puts $pgnF "\{Black Defaultet\} 1-0\n";
					}\
					"BothDefaulted" {
						puts $pgnF "\{Both Defaultet\} 1/2-1/2\n";
					}
					close $pgnF
				}
			}
		}
	}

	#----------------------------------------------------------------------
	# Prints all status flags of the games in xml for server name.
	#----------------------------------------------------------------------
	proc PrintStatus {path name xml} {
		regsub -all {.*<GetMyGamesResult>} $xml {<GetMyGamesResult>} xml
		regsub -all {</GetMyGamesResult>.*} $xml {</GetMyGamesResult>} xml

		set dom [dom parse $xml]
		set doc [$dom documentElement]

		set aNodes [$doc selectNodes //XfccGame]
		foreach game $aNodes {
			set id              [$game selectNodes {string(id)}]
			set myTurn          [$game selectNodes {string(myTurn)}]
			set daysPlayer      [$game selectNodes {string(daysPlayer)}]
			set hoursPlayer     [$game selectNodes {string(hoursPlayer)}]
			set minutesPlayer   [$game selectNodes {string(minutesPlayer)}]
			set daysOpponent    [$game selectNodes {string(daysOpponent)}]
			set hoursOpponent   [$game selectNodes {string(hoursOpponent)}]
			set minutesOpponent [$game selectNodes {string(minutesOpponent)}]
			set drawOffered     [$game selectNodes {string(drawOffered)}]
			set setup           [$game selectNodes {string(setup)}]
			set fen             [$game selectNodes {string(fen)}]
			set variant         [$game selectNodes {string(variant)}]
			set noOpeningBooks  [$game selectNodes {string(noOpeningBooks)}]
			set noDatabases     [$game selectNodes {string(noDatabases)}]
			set noTablebases    [$game selectNodes {string(noTablebases)}]
			set noEngines       [$game selectNodes {string(noEngines)}]
			set Result          [$game selectNodes {string(result)}]
			set TimeControl     [$game selectNodes {string(timeControl)}]
			set mess            [::Xfcc::xmldecrypt [$game selectNodes {string(message)}]]
			set serverinfo      [::Xfcc::xmldecrypt [$game selectNodes {string(serverInfo)}]]

			# Set to official ICCF timing by default
			# as ICCF does not send TimeControl
			set TC "10/50d (?)"
			if { [regexp {\+} $TimeControl] } {
				set TC [split $TimeControl "+"]
				set gametime  [ expr {[lindex $TC 0] / 86400} ]
				set increment [ expr {[lindex $TC 1] / 86400} ]

				set TC $gametime
				append TC "d + "
				append TC $increment
				append TC "d (Fischer)"
			} elseif { [regexp {\/} $TimeControl] } {
				set TC [split $TimeControl "/"]
				set moves   [ expr {[lindex $TC 0]} ]
				set days    [ expr {[lindex $TC 1] / 86400 }]
				set TC $moves
				append TC " / "
				append TC $days
				append TC "d"
				# 10/50 is the official timing for ICCF
				if { ($moves == 10) && ($days == 50) } {
					set TC "$TC (ICCF)"
				}
			}

			set mytime  [expr $daysPlayer*24*60+$hoursPlayer*60+$minutesPlayer]
			set opptime [expr $daysOpponent*24*60+$hoursOpponent*60+$minutesOpponent]

			if {[$game selectNodes {string(hasWhite)}] == "true"} {
				set clockW [format "%2ud %2u:%2u" $daysPlayer $hoursPlayer $minutesPlayer]
				set clockB [format "%2ud %2u:%2u" $daysOpponent $hoursOpponent $minutesOpponent]
			} else {
				set clockB [format "%2ud %2u:%2u" $daysPlayer $hoursPlayer $minutesPlayer]
				set clockW [format "%2ud %2u:%2u" $daysOpponent $hoursOpponent $minutesOpponent]
			}
			lappend ::Xfcc::xfccstate [list \
				"$name-$id" \
				[list "myTurn" $myTurn] \
				[list "clockW" $clockW] \
				[list "clockB" $clockB] \
				[list "drawOffered"  $drawOffered ]\
				[list "setup" $setup] \
				[list "fen" $fen] \
				[list "variant" $variant] \
				[list "noOpeningBooks" $noOpeningBooks] \
				[list "noTablebases" $noTablebases] \
				[list "noDatabases" $noDatabases] \
				[list "noEngines" $noEngines] \
				[list "result" $Result] \
				[list "TimeControl" $TC] \
				[list "message" $mess] \
				[list "mytime" $mytime] \
				[list "opptime" $opptime] \
				[list "serverInfo" $serverinfo] ]
		}

		set filename [scidConfigFile xfccstate]
		file delete $filename

		if {[catch {open $filename w} stateF]} {
			::CorrespondenceChess::updateConsole "info ERROR: Unable to open state file $filename";
		} else {
			puts $stateF "# Scid options file"
			puts $stateF "# State file for correspondence chess"
			puts $stateF "# Version: $::scidVersion, $::scidVersionDate"
			puts $stateF "# This file is generated automatically. Do NOT edit."

			set ::Xfcc::update 1
			set ::Xfcc::lastupdate [clock seconds]
			set curtime [clock format $::Xfcc::lastupdate]
			puts $stateF "#"
			puts $stateF "# Last Update: $curtime"
			puts $stateF "#"
			foreach i { ::Xfcc::lastupdate     \
							::Xfcc::xfccstate } {
				puts $stateF "set $i [list [set $i]]"
			}
		}
		close $stateF

	}

	#- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
	# source the options file to overwrite the above setup
	set scidConfigFiles(xfccstate) "xfccstate.dat"
	if {[catch {source [scidConfigFile xfccstate]} ]} {
	} else {
	  ::splash::add "Xfcc state found and restored."
	}

}

#======================================================================
#
# Correspondence chess menues, dialogs and functions
#
#======================================================================
image create photo tb_CC_Prev -data {
	R0lGODlhGAAYAMZIAAAAAAEBAQMDAwYGBh0dHWB8U2eEWGiFWWmHW2qHW3GOYnKQY3OSZHOTZHWS
	Z3qVbYWfdommfIykgIqmf4qseourfoqteo6qgYute4uue42tf5GqhZSpiZKrh4+ugZCugZCug5Ku
	hZGxgpewjZW0h5m0jJ21kbm+tbu/t73BuL7Cur7Cu7/Du9bZ1dnZ19zd2uLg4OLh4ePi4uTj4+Xk
	4+fn5+no6Orp6erp6uvq6uzq6+zr6+7s7u/s7u/s7/Ds8PHt8PDu8PLv8vPv8vPv8/Tw9PXx9fby
	9v//////////////////////////////////////////////////////////////////////////
	////////////////////////////////////////////////////////////////////////////
	/////////////////////////////////////////////////////////////////////////yH+
	FUNyZWF0ZWQgd2l0aCBUaGUgR0lNUAAh+QQBCgB/ACwAAAAAGAAYAAAHjIB/goOEhYaHiImKi4yN
	jo+LAACQhpKUhAQtHAOXggAvHZOXADAyIwmikAI2OCYSqY4AMjw/JRsGsIwBOUFEJCEOuYoAMz1D
	RyIfEAfCiAA6QEVHGRgXD82VMT5CRkUWFBoTCNiEAC40Ozc1HiAVEQrknicoKSwqKwwMDQsHBfGS
	AAMK7ESwoMGDBAMBADs=
}


image create photo tb_CC_Next -data {
	R0lGODlhGAAYAMZHAAAAAAEBAQMDAwQEBAUFBQYGBggICAoKCl97UmN/VWeEWWeFWGqIXG6LYHOP
	ZXKRY3ORZHaVaH2ZcH+dcYakeIeje4aodoaod4mme4mseYqteouue5Crg42ufY6ufo+tgY+vgI+v
	gZGvgpOzhaOsnpq1kKO6l6a9m7DEprvAuNLU0NTV0dTV0tvb2tvc2eDg3+Hh4OPj4eTk4uno6Onq
	6Ovp6uzr6+7s7u7t7e7u7fDu7/Hv8fDw8PLv8vHw8fPv8/Lw8vPw8/Tw9PXx9fPz8vPz8/by9v//
	////////////////////////////////////////////////////////////////////////////
	////////////////////////////////////////////////////////////////////////////
	/////////////////////////////////////////////////////////////////////////yH+
	FUNyZWF0ZWQgd2l0aCBUaGUgR0lNUAAh+QQBCgB/ACwAAAAAGAAYAAAHjIB/goOEhYaHiImKi4yN
	jo+FAAWTBgcElwQGAJuKAC40OUVEPCgnJiUVDgCLATI6PkA+IyEgFxCriwMtNT9DQxoaGRQMuIsA
	Lz1CRhsaFhHFxis4QL8dGMSPADE7QR4fD9CMACw2NyITCuGMAjAzHA3q4iouEgnx4ikL9+IkCPvi
	/wBCGkiwoMGDBgMBADs=
}

image create photo tb_CC_Send -data {
	R0lGODlhGAAYAKU4AAAAAE8/Cj4+PkNDQ01NTU9PT1NTU3NdEHVfEHxkEWNjY2pqapB0E3Nzc3x8
	fIGBga+NGJWVlaCgoMukHNGoHKysrK6urrm5ueS/Pby8vMbGxsjIyO3TfO3VgO3Vgu3WhNTU1O7W
	he7Yie7Yi+/ZjO/akvDbk/Dcl+Pj4/Tls+Tk5PTmtezs7O3t7e7u7u/v7/Dw8PPz8/T09PX19fb2
	9vj4+Pv7+/39/f///////////////////////////////yH5BAEKAD8ALAAAAAAYABgAAAbjwJ9w
	SCwaj8cAclkErABMJiD1QUCjxmknBLFiiVPSyAPpXrFTUUlELnuXgLjc9OlADnJ51oDr4wAnHx93
	ADQzMigGZ0IALgU4hwAiHIN4Li0oBRaLPwA4KgM3MQAYExQMCQCYBRUbnJ4zKgU2eXIoAxIgrk04
	NrEDNTAvlyyZESAqu2CQM7ECM8QoBA8aKsmvvc0qCwMxxQULGhqxykOwsQo4FwUwBREaDePXvDYq
	6bEgrNUqDtbljJ8aMNOmolmsfv864XDwyZrDh9YcJATQIIPFixgzKuDUqZZHj19CihxJMggAOw==
}

image create photo tb_CC_Retrieve -data {
	R0lGODlhGAAYAMY/AAAAAC0tLT4+PkNDQ01NTU9PT1NTU01nRE1oRGNjY1RxSlh1TWpqalt5UHNz
	c3x8fIGBgYGaeZWVlaCgoKysrK6urqnEp7m5uarHqK3Gq7y8vK7HrK3Iq7DHrrDJsLHJsLLJsLPK
	sbTLsrXOtbnOt8bGxrvQucjIyMnax8nbx9TU1M3ey8/fzOPj4+Tk5Ozs7O3t7e7u7u/v7/Dw8PHx
	8fLy8vPz8/T09PX19fb29vf39/j4+Pv7+/39/f7+/v//////////////////////////////////
	////////////////////////////////////////////////////////////////////////////
	////////////////////////////////////////////////////////////////////////////
	/////////////////////////////////////////////////////////////////////////yH5
	BAEKAEAALAAAAAAYABgAAAf+gECCg4IAhocAhIqLhSkoKBELiYyUQAAgFhwNB5OViwAmGxubnZ6W
	hyQbGKSHppYrHyMeGQ21CKWeACsiIbQNt6aIhisYHb/CuJYGP8w/ProcCgA6OTg3LQa4ADEFP9Y2
	NQAsADMyMTAtBRXaPy4DPeA1NAHm5+kUJ+w4LgU8NDPlzqEbMEFFPkUAfvDYN2BHQBgv0klQ4eIg
	oYQ4MroQgONcRAIQSrioyG7hPgYDbEQswKBEiX0WB2Hcl+DHhQIzCkgo4eAlSYQKXdTcp6IABZEu
	HoyMWaidA28Z97mImvTnxR8P2o3cynXkA6aWHGgYS7as2QTJkKkV5qqt27cEcBUFAgA7
}

image create photo tb_CC_yourmove -data {
	R0lGODlhEgASALMLAPv7+wAAAP+9AJlmM8yZM2ZmZv///5mZM2YzM8zMZv//M////wAAAAAAAAAA
	AAAAACH/C05FVFNDQVBFMi4wAwEJAAAh+QQJFgALACwAAAAAEgASAAAEgnBJiaqdeNakeq8ZdXBe
	iWTIWCYpeWrJUQ3C0B2fNiKKECsqz6s1AAQGB0DKJEo4n86SYqgSCKQKgiJRKMhGB0KCcKABrwWD
	odDSlggDbSFhOFCiV2x63UwIxFJ7c309XlcHe3wUCE6CTmpqBSgVc5AxdJIhC1wGMQeQmZqXC11d
	BxEAIfkECRYACwAsAAAAABIAEgAABH9wSYmqnXjWpHqvGXVwXolkyFgmKXlqyVENwtAdnzYiihAr
	Ks+rNQAEBgdAyiRKOJ/OkmKoEgikCoIiUSjIRgdCgnCgAa8Fg6HQ0pYIA20hYThQoldset1MCMRS
	e3N9Cl4EZF5qfBQIXGpOiooFKAhzijEjiyEHXQeekiGhXZ0RACH5BAkWAAsALAAAAAASABIAAAR9
	cEmJqp141qR6rxl1cF6JZMhYJil5aslRDcLQHZ82IooQKyrPqzUABAYHQMokSjifzpJiqBIIpAqC
	IlEoyEYHQoJwoAGvBYOh0NKWCANtIWE4UKJXbHrdTAjEUntzfV1dBwdeanwUCHuKj2oFKF4jajGV
	kiESl4mRmiGFXhEAIfkECRYACwAsAAAAABIAEgAABH9wSYmqnXjWpHqvGXVwXolkyFgmKXlqyVEN
	wtAdnzYiihArKs+rNQAEBgdAyiRKOJ/OkmKoEgikCoIiUSjIRgdCgnCgAa8Fg6HQ0pYIA20hYThQ
	oldset1MCMRSe3N9Cl4EZF5qfBQIXGpOiooFKAhzijEjiyEHXQeekiGhXZ0RADs=
}

image create photo tb_CC_oppmove -data {
	R0lGODlhGAAYAOevAAAAAAUAAAYAAAYBAAcBAAcCAAcCAQUFBScCACgDASkDASoEATEMBTMNBjMO
	BjQOBhoaGh0dHUsSD3MCAnIDAk4VDXkCACYmJncEAk8WEHYHA4ADAHwFAoEEAYUDAYEFAnkKBIYE
	AW4PDFUbEH0JBCwsLFYcE4QIBIkGAi0tLYUJBHASD34OBoMMBVofEpAIA40KBJAKBJMJBJYIA4oO
	BpcJA5ENBV4kFo4QB4oSCJkLBYYUCpUOBnscFJ8NBYoXCnwdEZ0PBqINBZgTCKMOBqIPBp0SCJcV
	CZYXCo4bDKMUCaYTCYMjFZsZC5IfDoUlFJscDaMZC5gfDpIiD58cDKoXC6wYDa4ZD64aDq4aD6Mg
	DpgnEpsmEaoeE0dHR6IjEJ8mEZspFJEvGZIwGrAiFaArE54tFLMlGawpHrYmGaQwFrcmGqUxFrgn
	GrcoGrcpG1NTU7IwIL1BNb9CNcFCNsBEN2hoaMNEN8REN8NFN75RRsNXSMlbULtiVcxdUM5dUM5e
	UM5fUMxgUc5gUMBnVsNxYMVzYclxZs9zZs11Z9V0Z9Z0Z9d1aNR3aMp7b9d2aNZ3aNd3aM1+cMyG
	eM+HetaHfNqJfdiLfd2Kfd2Lfd6Lfd+LfaysrNmbkNudkd+ckOCdkeKdkeOdkeKekeSekduiltyj
	l9+qoeGroeOroeOtouWsouWtouW3rcfHx///////////////////////////////////////////
	////////////////////////////////////////////////////////////////////////////
	////////////////////////////////////////////////////////////////////////////
	////////////////////////////////////////////////////////////////////////////
	/////////////////////////////////////////////////////yH5BAEKAP8ALAAAAAAYABgA
	AAj+AP8JHEiwoMGDCBMqXMhwIICHEBs6NHBjDBs1YlwUiNAQwAMzhky1alWqUJgGKRYCcFCGEipV
	rFalOjWJCwM4CglsIeQJ1ChSokJ96tRnCgFOCAGMACPpUiZNmzRhslTJkRQTdpI++ZKoEaRIjxgt
	UoToEBQmF14dBOBEyx5BgwYFAvTHDx89TX4cUGsQQBIqcerkwYPnDp05ctAc2bF3LRAkUci8cdNm
	TZozXYzg6JF2bYUcQ5RUwZLlipUlQWy0yGCHr8EBLGjwCFKEiBAfOmKcACHAleuCEBaQUAFDRo0Z
	L1B8wJCgtcISCjRw6BDCwwYLFBB4efX7IBwBEkQgTJiwQkKA1t0RcrJz4cCBC3Z8p1fIvf58ifjz
	69+vPyAAOw==
}

image create photo tb_CC_draw -data {
	R0lGODlhFAAUAPdyAP//////AP8A//8AAAD//wD/AAAA/wAAAP/GGP/OMf/OOf/WWv/GIfe9If/G
	Kf/OQvfGQv/OSv/WY//ee//ehN6lGPe9Kf/GMfe9Mee1Of/OUv/Wa//Wc//ejP/nrcaMEK17EMaU
	Kee1Qv/OWvfOc//We//elLWEIdacKeetOee1Uv/WhKWMWvfWlP/enO/Wpf/ntbV7EL2EGLWEKdal
	Sue9c//epa1zELV7GK1zGJxrGLWMSr2UUsacWtata+e9e/fetYxaEKVrGJRjGK17MbWEOcalc+fG
	lPfWpf/erYxaGJxrKYxjKaVzMa17OZRrMbWEQr2MSqV7Qq2ESsacY6WMa5RjKZxzQq2EUtala5x7
	Utate8ale+/OpYxaIaVzOaV7SntKGIRaMYxjOa2EWrWMY72Ua9athK2Ma961jHNCGIxaMaVzSpRr
	Sq2EY6V7Wr2chKVzUv///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
	AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
	AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
	AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
	AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
	AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
	AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
	AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH/C05FVFNDQVBFMi4wAwEA
	AAAh+QQJFAByACwAAAAAFAAUAAAI8ADlCBxIsKDBgwgTKlwo543DN2QYymnDBYZFi20yGqQCRYqU
	M2nOlCljpotFLm7QvIEjkIKEDRx47MjiwsaWOGQ8JNmZBIjACRoWwCyxooMJF0mOjGnhoukLgRse
	aBjxkkMJCkdtIBnzo0OHFgIjKHgQIehLokZrsulRooRABg4ujC1blcSTGiZsGIkiRqAMBHATKChL
	dQOJLz2OXhkIRscHwHLJamiiggPiDj4GYoEwQ0iMBg4ShIAgIgyNDU7WrCEoRgmGEzlwNLAwJEUG
	NUSKsDg4ZQkDIUIqNFCCwkqVhV6YgAhyQ4cWidCjS08YEAAh+QQFFAByACwAAAAAFAAUAAAI7wDl
	CBxIsKDBgwgTKlzIMOGbh2/INGzDBYZFi20yGqQCRYqUM2nOlCljpotFLm7QvIEjkIKEDRx47Mji
	wsaWOGQ8JNmZBIjACRoWwCyxooMJF0mOjGnhoukLgRseaBjxkkMJCkdtIBnzo0OHFgIjKHgQIehL
	okZrsulRooRABg4ujC1blcSTGiZsGIkiRqAMBHATKChLdQOJLz2OXhkIRscHwHLJamiiggPiDj4G
	YoEwQ0iMBg4ShIAgIgyNDU7WrCEoRgmGEzlwNLAwJEUGNUSKsDg4ZQkDIUIqNFCCwkqVhV6YgAhy
	Q4eWhtCjFwwIADs=
}

image create photo tb_CC_envelope -data {
	R0lGODlhGAAYAKUyAAAAACAgIExIPG5mWHJsWn50ZH94ZIB4ZoF5ZoZ9aIh+aoh/a4uBbJCFb5WJ
	c56dlbmtk8Kyk8Szk8S0lcW1lsm5lsm6mMK/uM+/nNPCntTEoMnIxN7Ko+DOqOzYrfDbs/Xesvbf
	s/nisvrjs/zmtf/ot//ouP/puv/qvf/rwv/tx/3uzfXu7vXx8frz7Pj07fX19fz16v//////////
	/////////////////////////////////////////////yH5BAEKAD8ALAAAAAAYABgAAAarwJ9w
	SCwaj8ikcslsIgEBgHRKXQIusKx2+wAoAbADSwVTqVwq0iDjTYJViNbq9VKNCCNL+1lWFWJmJQQq
	H3pfZSgNAlBUjXtDYCkLKldbljBdRWAMKiBgYmRmaGpsmhsREhJvcXN1d3mPQo19f4GDhbGaiA0E
	WQQKJB4VuUSRkyoGBiUmCR3Dh5wgJyIiJiEcDhjEkKepEhERExMUGhDbkI6NTuvs7e7v8EVBADs=
}

image create photo tb_CC_postal -data {
	R0lGODlhGAAYAIQaAAAAAD4+PkNDQ01NTU9PT1NTU2NjY2pqanNzc3x8fIGBgZWVlaCgoKysrK6u
	rrm5uby8vMbGxsjIyNTU1OTk5O7u7vX19ff39/r6+vv7+////////////////////////yH+EUNy
	ZWF0ZWQgd2l0aCBHSU1QACH5BAEKAB8ALAAAAAAYABgAAAWf4CeOZGmeaKqubOu+IyDPdC2bQKHt
	fO8XgBKgQrBkjJej8oKxEBxBEkBDEViu2KyzIYnGNBZKUYsVMCZdoeZYJTsXE0paCr5SAtqBIkKR
	e0VTR1cHVlcEBwwUYXNfWAYPD0UECxEIEYt/H4EWBpcUEwQNfBYJfYyAYAgTWX1ZpaeaGglxfbW2
	fQmwAAgQvb6/wAaZmjbFNDDIycrLzCwhADs=
}

image create photo tb_CC_book     -data {
	R0lGODlhGAAYAOewAAAAAAEBAAICAAQDAAcGAQsIARURAxYSAxoVAyggBSoiBiwjBi0lBzAmBjEo
	BzkuCDswCD0xCDMzM0E0CEM2CUk7Ck0+CkhISF1LDF5MDUtLS2BODWZSDmlVEWxXD1ZWVm5ZD1hY
	WHJcD3NdEF5eXndgEF9fX3pjEWNjY35lFWdnZ4JpFINqEoVrEoduFYluEm1tbYpwE25uboxxE45y
	E5B0E5F1FHR0dJN3FJR3FpV4FJd5FHh4eJh7FZp8FXp6epx+FZx/GJ5/FX5+fqGCFqODFoGBgaWF
	FqWGGaaGF6OGIYWFhaiIF6qJF6iJHq2MGK+NGK+NG7GPGLCQILOQGLKQHbSSGZCQkLaTGbaUHriU
	GbqWGbuXGpWVlb2ZGpaWlpeXl7+aGsGcGsOdGsSeG8agG8ihG8qjG8ukHM2lHM+nHNGoHKamptSr
	HaioqNatHdiuHduxHq+vr9+0HrGxsda2ROG3JuG4KrW1teK6MeK7M+O8NOO8NuO9OOO9Orq6uuS+
	O+S/P+TAQeTAQ+XCSOXDSsLCwsPDw+fGUufHWMXFxejIW+jJXejKX+nLYurMZ+nNa+rNacvLy+rO
	a+rObevPbs7OzuzSd9LS0u3Ufu3VgO7Whe7Yi9ra2tvb29zc3PDent7e3t/f3+Dg4OHh4eLi4uTk
	5OXl5ebm5urq6uvr6+/v7/Ly8vPz8/n5+f39/f//////////////////////////////////////
	////////////////////////////////////////////////////////////////////////////
	////////////////////////////////////////////////////////////////////////////
	////////////////////////////////////////////////////////////////////////////
	/////////////////////////////////////////////////////yH5BAEKAP8ALAAAAAAYABgA
	AAj+AP8JHEiwoMGDAwEoXMiQIcJ/CSIN0mMnjpoxWjJmFANEwUEAexj1OcPliZAaL17UqNGjhggH
	Bw9QIrSGjJUkPWKkTLmjhIWPWyjxQcMFChEbO1/M2AGCAwCDACgValMGCxMfM1Lq1FHigZEMBQFs
	acQnTRgpRXQkjeEDBAUNV8JCIvTGzJYmQGgkxXECwgcVEggCQCNSjRgqR3YkfdFjRIULgZ4mnIRo
	DkmTKHfSYBFBhYwTkv8BKONID1WrWJO2tRACkIHQAOokumMWrdqkLSZouBEEthpQnDJdqvQoUZ89
	yPfYsZKBhKDXAwls8rChuvXr1TGg4MEk9D8EgUZ8mLjxhY4cRZb+GDokCVOnLnkWeD8Ap8cQU6ZI
	iRLF6lWr/27gAQMTARQ0gRlwcHGEJ6mssgoqoZCiXyk/+MGAdwIBUEAKSkyxhRhgfHKKKq64sgQb
	iwjwEEMr5FBFFl5oMkoqizSAIUIMdeACElE4McBDKzoE5JBEFvlQQAA7
}

image create photo tb_CC_database -data {
	R0lGODlhGAAYAMZnAAAAAAEBAQICAgMDAwUFBQYGBgcHBwgICAwMDA4ODhERERMTExUVFRYWFhkZ
	GRwcHCEhISIiIiUlJScnJy0tLS8vLzIyMjU1NTY2Njw8PEBAQEFBQUREREVFRUZGRkdHR0hISE5O
	Tk9PT1JSUlNTU1RUVFVVVVlZWVtbW1xcXF9fX2JiYmZmZmdnZ2hoaGlpaWpqamtra2xsbG5ubm9v
	b3BwcHFxcXJycnNzc3V1dXd3d3h4eHl5eXp6ent7e3x8fH19fX5+fn9/f4CAgIGBgYODg4WFhYeH
	h4iIiImJiYqKiouLi4yMjI2NjY+Pj5CQkJKSkpSUlJWVlZeXl5iYmJmZmZubm52dnZ6enp+fn6Cg
	oKKioqOjo6SkpKampqenp6urq66urrGxsbq6uru7u7+/v8LCwv//////////////////////////
	/////////////////////////////////////////////////////////////////////////yH5
	BAEKAH8ALAAAAAAYABgAAAf+gH+Cg4SFhoeEFhsHAQEGGBKIhg0fOUxSUE5KQisZCpJ/EwA7WldV
	UU9NSUZEQCkAAIgAUV1ZVlOZS0dFQz87LbGGFjZfW6aoqqxBPTo4IRSGA1y1t7m7vTs5NTAChgJe
	xqepq0TLzTMyAYYB1LhOury+2jI5wYQEWVviyeXMODM0gBly8AMLF2vxstXQIcODvUEFbgyJIoYK
	EmU+fhA5wgIEhIeCCECpMWMIGDNlyIwZE8aFiQsRTID8gwBIFB4oULy4kQOHjBWwRqjoMBMAjiFP
	sPwooQEWABEudqzwWPQJSZMoVbJ0CbPETAUPbubc2fNnUBUKZv5JwCHp0qYpsKBKFSULAIMgJ1Ou
	bFmiAixQsBacsNEzBgmnagshXpwYlOPHkCM7DgQAOw==
}

image create photo tb_CC_tablebase -data {
	R0lGODlhGAAXAMZAAAAAACc/V0dHRzFObEBTaFhYWFNrg1ZuhXNzc2Z7kXKGmI2NjYGTpK6urra2
	tre3t7i4uLm5ubu7u7y8vL6+vr+/v8HBwcLCwsPDw8TExMXFxcbGxsfHx8nJydDQ0NLS0tPT09XV
	1dbW1tfX19jY2NnZ2dra2tvb29zc3N3d3d7e3t/f3+Dg4OHh4eLi4uPj4+Tk5OXl5ebm5ufn5+jo
	6Onp6erq6uvr6+zs7O3t7e7u7u/v7/Dw8PHx8fPz8/X19f//////////////////////////////
	////////////////////////////////////////////////////////////////////////////
	////////////////////////////////////////////////////////////////////////////
	/////////////////////////////////////////////////////////////////////////yH5
	BAEKAEAALAAAAAAYABcAAAfjgECCg4SFhoeIiYUAjI2Oj46LCgUMB5aXlpSXBACLBgUJA6KjoqCj
	AZ2EAJ+hpKOmoqiLCAW1tre4AqmDAA0FHh8gISMlJigqBS0vMTITu4K9BcHDJMYqKwUvMDI0FM9A
	0cIj1SgpKy0F2zQ13rO477e6i74i1SfmLS4wBTM1NzkWvkWzh0+fjAL+cOi4INCXiXsrWBicUeCG
	Qh4ZBNKCB0+eKl8pVEiEEaOfjQI6ePTwsaFhAZEulpnEUWDHyh8cBC4Q4OABhAgSJlCoYEEABg0b
	OHQQCKnpI0VQo0qdSrUqokAAOw==
}

image create photo tb_CC_engine -data {
	R0lGODlhGAAYAOfwAAwMDBAQEBIQEBISEhQSEhQUFBYWFhgYGBoaGhgbGxwaHBwcHB4cHhweHB4e
	HiAgICIiIiQiIiQiJCQkJCgmJigoKCooKCwqLCwsLC4sLiwuLjAsMC4uLjAuMDAwMDAwMjgwODQ0
	NDY0Njg0ODY2Njc2Nzg2ODo4Ojs4Ozw4PDo6Oj04PTs7Ozo9Oj07PTw8PD09Pz88Pz8+P0A/QEFB
	QUFBQ0NAQ0JBQkRARERCQkNDQ0NDRUZDQ0VFRUVFR0dHR0lHR0lJSUpJSktJSUtJS0tLS01LS0xM
	TE9LS01NTU9NTU9NT01PTU5PTlFOTk9PT1FPT1FRUVNRU1NTU1RTVFVTVVdTV1VVVVZVVldVV1dX
	V1lXWVpZWltZWVtbW1xbXF1bW11dXV9dXV9dX2BeYF9fX2BfYGFhYWNhYWVjY2VlZWZlZmdlZWdl
	Z2dnZ2hnaGlnZ2lnaWtpa21pbWxqbG1rbW9rb29sb29tb3FvcXRvcnRydHNzc3V0dnZ0dnV1dXh2
	eHd3d3h3eHl5e3x5eX55enx7fH98f4B+gIKAgoOAg4SChIiChoiEhomGiYqGiIyGiIuIi4yIio6I
	io2KjY6KjI6KkI6Kko+Mj5CMkpCMlpKOlJSQlpaSlpaUlpiUmJiWmJiWmpmWmZqWmpmYm5qYmpqY
	nJyYnJyanp6anp6coKCcoKKeoqCgpKSgpKago6SipqWip6aipqWkp6akpqakqKikpqikqKqmqKyo
	qqyorK6qrK6qrq6ssLCssLCusrGusbCwtLKwtLSwtLSytra0uLi0uLq2urq4vLy4vL66vr66wMC8
	wMK8wMK+wsDBxcLBxcXBxcfBxcfDx8nDx8nFycvFycrGysvHy8rIzM3Hy8/Jzc/Lz9HNz9PP0dXR
	09XR1djU29nV2drY3N3Z3d/b3+Hd4ePf4+Xh4+fj5+nl5+nl6e3p7e/r7+/t8ffz9///////////
	/////////////////////////////////////////////////////yH5BAEKAP8ALAAAAAAYABgA
	AAj+AP8JHDhwT5Z/R0bgIMiwoUASARhcCECRABWHDNMtoYiIC8UABQqcwCiw3Dt3ngIsaIdOnB4D
	FDuQ/Bdr3TlrRPqc00bt0ccAHnQsOMRwTAJl5MR522YtGrMxH0NSzEAw3CxB575149lMmbFaN4SA
	KvCTxUB259QtrQZN2bFhvXTJQtbqRlQeJc1944ZNGrNkxX7twuVK1ahOkSYEMCCDIKBp1J55FUYK
	UapVqD5psgSJDswGDP0sS0bMFyYMCDxQ4nRJUqM1Bz5yICjKWLBeuMbADJCo0iNFhLT8DBBCoLls
	vXLZYoUlwqIAM3ghCsSnzU8HQf4dG7frVmFTdS7RDCLr7E+eOm6iqEBAAcgU47ZWnfq0ydEbAwAC
	3LIDJ00ZL1eIkAQMZAiUziqhcJLJJIy8YkYAawDDxhlgaCHFEyqgUKBAvEhRwhe/GRIILNfQooYY
	W1QBhQ82SKCAQ04UQh0ecqjxXxZSKAEEBgcMEMALDYHDRx5zuIFGGFtMAUURPZBAVgBROFRKHP2V
	0YUVUSDxgw4xiACBAFFi1IQRIdDAxBND7NCCCSR8UEEcMyEkUA4+1LBCAQNYoMEdcRKUwwsnpFDA
	Ai702RAIGzwQZ0AAOw==
}

image create photo tb_CC_delete -data {
	R0lGODlhGAAYAOfyAAAAAAgICA8PDxMTExYWExsbGxwcHB4eGiEhISMjISQkJCYmICkoIyoqIisr
	IzAwJzExLjQ0KzU0MTU1LDc3LTg3NDw8Mj4+Mz8/NEBANUFBNUBAPkFBNkJCN0JCOkNDN0JCQkRD
	OkREOEVEQkVFP0dGPkhHPUlJPElJSUxMSU5NRU5OQE5OQU5ORVFRQ1FRRlJRRlNSRlRURVRUS1VV
	RlRUUVZWR1dWSldXSFdXSldXS1hYSVlZUVpaSltbTVtbUV1cT1xcVV1dVF9fT2BgUmFhU2JhVWJi
	UWVkVmZmVGhoVmlpV2pqWGppXmtrX2xrXW1sXG1sXW5tXW1tYW9vZ3FwYHFxXXFxXnR0Z3V1a3d2
	ZXZ2aXZ2a3h3ZnZ2dnp5aHh4dXp6ZXt7ZXx6aXp6cXt7c3x8bX18a3x8cn19bX59d4B+b4B/bX9/
	dIKCeISEcIWFboWFdoWFe4eGc4uJdoqJfoqKgIyLd46MeI+NeZCPepCPipGRgpGRhZOSfZCQkJKR
	iZOTipSTipWUhJmYgpqYg5iYjpmYk52di5+ei6GfiJ+flqOhiqGhlKOik6OjmqSkk6WllKemjqim
	j6qpk6qpmKyqkqqqnqqqo62sk6ysnK+tl6yspq6to6+unbCvlrGvlrOxm7GxorOypLWzmrOzpbOz
	qLa1m7i2nLi2obe2prm3nbm4nbi3pra2srq4prq4qL27obu6rbu7s728rb69p8C+o8C/scHAtcLB
	r8HBtsTCqcLCt8XErMTDtsPDvsPDw8bFucbFvcjIw8rJvMzLtczLvs3Mv87NwNDOutDPw9HQwdHQ
	wtPRvtLRx9PSytXTwdPTydPT09bVw9bVxNjX0NnYzNnZztrZztvaz9va0dvb1Nzb0t/e0d7e3OLh
	2uLi3+Xk2ebm5urp4+np6Orp5uvq5fHx8PLy7vLy7/T08Pb18vn59/r6+Pv7+vz7+v39/P39/f//
	/////////////////////////////////////////////////////yH+FUNyZWF0ZWQgd2l0aCBU
	aGUgR0lNUAAh+QQBCgD/ACwAAAAAGAAYAAAI/gD/CRw4EIDBgwQTKvwHwIAXcdKA/UFhcCHBgyZe
	gTtXDp05XDdgIFQIYFIsW4ygoElBIgSVYKeihJKkB0BCAJSKJYPWSdCIBBIYHIiRCVAuUJb82BwY
	YFkxat2QcdqjJkgJJFrW1CJ1ipSipQIBWFunDVs4ZdGIqUr1SRGrVah2baIDlmElV+zaqft2LRu0
	Zrts9Zp2TNaYKnUHEPL0yxs5d/DivWOXbpy2W4O6SPFRFwAQP45aVdv2bJgwWrAS4bmD58sTFSRB
	lFnkjJsxZr5A6S7E5kyTDXXDUhBQAcyhOqMuMZqTx0gNCAAcBGdoRYeHBQgKAFBwEACBBg8wpkwH
	EOZHHC6GsrxowyTDERkXaERwMR6OED5uMJFpYcdMByI9WMDCBDLU94MmcszyyAyB9PGfEhww8QET
	BkIihy6iOCEKIjK8ccWEExoYiRy8ZLhhhx9KSCFJcPyAyIUmcughiCveJMYPFmKooYwpfjDEeEng
	6IaOJ87IxAk4TMdQDmlsYUojU5Qi4xIa2CCCkmEZxMMOK2BRBAsnnDCSRVl2191CAQEAOw==
}

image create photo tb_CC_outoftime -data {
	R0lGODlhEAAQAMZJAAAAABcQAR0UASofCzAkDD0uDzIyMj09PUVFRUZGRkhISElJSUpJSmZNGldX
	V2VlZW1tbXR0dKd+KoODg4iIiJiYmMuZNJ6enqysrMircK6urrO0tLW0tOuxPbW2tri3t925b8LC
	wu7AY8nJyczMzM7OzfDMgdHR0tPT0/bLwvTdrOfn5+fo5+vq6+vr6+zr7O3t7O3t7e7t7e3u7e7u
	7e/u7u7v7+/v7+/v8PDw7/Dw8PHx8PHx8fLy8vLy8/Lz8vPz8/T09PX19Pb29vf29/f39/n5+fr5
	+fv7+///////////////////////////////////////////////////////////////////////
	////////////////////////////////////////////////////////////////////////////
	/////////////////////////////////////////////////////////////////////////yH+
	FUNyZWF0ZWQgd2l0aCBUaGUgR0lNUAAh+QQBCgB/ACwAAAAAEAAQAAAHkYB/goOEhYYAiIiGgwAL
	JC8WHRIGAIcUPUM/BSImIBGVhAxCQ0VDAx0dKhkHhAAlQ0ZIRwSoHYmgADlESElIArUASSm4PQ9H
	SEYBDajBw4IAMkGkQxgGFzPNuCM7PkA+OiEINNmDCig2NzUxLTArACnOzxMnLjwQOCwct60JGh4f
	Gyo4IFfoVqV38RYxSqSwYSAAOw==
}

image create photo tb_CC_message -data {
	R0lGODlhDAAQAKUxAAAAACAgIG5mWHJsWn50ZH94ZIB4ZoF5ZoZ9aIh+aoh/a4uBbJCFb5WJc56d
	lbmtk8Kyk8Szk8S0lcW1lsm5lsm6mMK/uM+/nNPCntTEoMnIxN7Ko+DOqOzYrfDbs/Xesvbfs/ni
	svrjs/zmtf/ot//ouP/puv/qvf/rwv/tx/3uzfXu7vXx8frz7Pj07fX19fz16v//////////////
	/////////////////////////////////////////////yH+FUNyZWF0ZWQgd2l0aCBUaGUgR0lN
	UAAh+QQBCgA/ACwAAAAADAAQAAAGbsCfcEgkAo7I4xDgwFQqFMrlARACXgKRp8NpZKq/62iQGiE2
	E/A1JRokSiCJ+tVKkQakktz6SrlSLwUhEHN+gIKEfC8qMGQmEYUsBAwpH5B8KwcpJwoplz8BLwYp
	pCgLiWEWL6usGmBhSUhFs0NBADs=
}

image create photo tb_CC_online -data {
	R0lGODlhIAAQAKU3AAAAAA8PDV1ZT2JeVGRgVmVgVmplW2xoXnBsYnJtY3h1a314bn56cIB9dIF9
	c4qFe4uHfYuHfoyJgY2JgZOOhJeTipiTiZyXjZ+ck6CdlKeimKaim6eknqqnoLGtpLKwq7Oxqrez
	qry5sr67tcTCvcbCusXDvcjFv87Kw9HQzOHf2+Lh3ePh3ejn5Oro4+vq5uzr6O7s6vDu6/Dv7PLw
	7fPy8Pn5+P///////////////////////////////////yH+FUNyZWF0ZWQgd2l0aCBUaGUgR0lN
	UAAh+QQBCgA/ACwAAAAAIAAQAAAGj8CfcEgsGo/IpHLJbDqLAMAv+kxGAZYGoKSlVocAR4jk0pYv
	oonUem0DGqtZpwyQNT42U9e9Brj+gIA0Lw8wWjENGDUtLIGAfQ2Rkg0KCiMgCyoKACkNFCcak5N9
	fFEKEhsJKJscDQwZDgela0kBBREIHrIVDQMGArRfAAEBFgQAEHtfR8Q/AcHL0dLT1EVBADs=
}

image create photo tb_CC_offline -data {
	R0lGODlhIAAQAKU4AAAAAA8PDV1ZT2JeVGRgVmVgVmplW2xoXnBsYt9CHnJtY3h1a314bn56cIB9
	dIF9c4qFe4uHfYuHfoyJgY2JgZOOhJeTipiTiZyXjZ+ck6CdlKeimKaim6eknqqnoLGtpLKwq7Ox
	qrezqry5sr67tcTCvcbCusXDvcjFv87Kw9HQzOHf2+Lh3ePh3ejn5Oro4+vq5uzr6O7s6vDu6/Dv
	7PLw7fPy8Pn5+P///////////////////////////////yH+FUNyZWF0ZWQgd2l0aCBUaGUgR0lN
	UAAh+QQBCgA/ACwAAAAAIAAQAAAGosCfcEgsGo/IpHLJbDoBAGEiIaX+oM4r9OKITqtXUxerBDxE
	pVe3+r2qMSNKtAiFOlg0j3o+bQNmDiA3J2NkAC+ILzUwEDFrYEIAMg4ZNi4tiXMADg4LCyQhDCsL
	cz9tVyoOFSgbnJyadQsTHAoppGxWAB0ODRoPB3WlQwEFEggfwLiRFg4DBgLCRwABARcEXlZfABGF
	WdSQbQHRWeTl5udZQQA7
}

image create photo tb_CC_pluginactive -data {
	R0lGODlhEAAQAKUmAAAAAAEAABgGAz8RCG4eD6MtFrExGLgzGbozGcY3G845G9Y7HclEKcBLMuFC
	IuFFJuJIKeRXO+hvV+l3YOp+aeuEcOyHc+6Vg++fkPGrnsXSyPfNxPfOxvnZ0vbb1PXc1vnc1vnf
	2vrl4fvm4unu6vDz8f//////////////////////////////////////////////////////////
	/////////////////////////////////////////////yH+FUNyZWF0ZWQgd2l0aCBUaGUgR0lN
	UAAh+QQBCgA/ACwAAAAAEAAQAAAGYMCfcEgsGo/IIgCQHC4jC2aSYMF0okspEcARTa4AjYbEzAIW
	3S92Kfx4OvARyBGKFhuMRSJxqSg2CVpCWQEJEBIIGYFZRgKHiYFiJYJCAw8HFAZmSAICEQWUnAJN
	pKVEQQA7
}

image create photo tb_CC_relay -data {
	R0lGODlhFAAUALMAAAAAADMzM2ZmZpmZmczMzP//////////////////////////////////////
	/wAA/yH5BAkAAAUALAAAAAAUABQAAAhgAAsIHEiwoMGDCAsKWMiwocOGAgEUkEhxosWKEicC2Mix
	o0eOBQgAIEByZEmSIlGODGky5cmXKVmqnAlzpcubLXMS0PixZ8eIF4NitFjgodGHCZMqXcq0qdOn
	UKNKNRgQADs=
}

image create photo tb_CC_spacer -data {
	R0lGODlhAQAYAIAAAP///////yH5BAEKAAEALAAAAAABABgAAAIEjI+pVwA7
}

#----------------------------------------------------------------------
# Correspnodence Chess functions
namespace eval CorrespondenceChess {

	# wether the console is already open or not
	set isOpen   0
	
	# default Database
	set CorrBase        [file nativename [file join $scidDataDir "Correspondence.si4"]]

	# incoming PGN files
	set Inbox           [file nativename [file join $scidDataDir "Inbox"]]
	# outgoing PGN files
	set Outbox          [file nativename [file join $scidDataDir "Outbox"]]

	# Connector config for game relay
	set Connector       [file nativename [file join $scidDataDir "connector.xml"]]

	# use internal xfcc-support
	set XfccInternal     1
	set xfccrcfile      [file nativename [file join $scidConfigDir "xfccrc"]]

	# Path for additional functions that should be available in the CC
	# window only. All files from here are sourced once the CC window
	# starts up.
	set PluginPath      [file nativename [file join $scidDataDir "Plugins/Correspondence"]]

	# external fetch  tool (eg. Xfcc)
	set XfccFetchcmd     "./Xfcc-Receive.pl"
	# external send tool (eg. Xfcc)
	set XfccSendcmd      "./Xfcc-Send.pl"

	# confirm before sending moves?
	set XfccConfirm          1

	# Relay games from ICCF: this list contains all MakeAMove-URLs for
	# the games to be relayed
	set RelayGames           {}

	# Show only games where the player has the move?
	set ListOnlyOwnMove      0
	# set sortoptlist        [list "Site, Event, Round, Result, White, Black" "My Time" "Time per Move" "Opponent Time"]
	
	# Sort criteria to use
	set CCOrderClassic       0
	set CCOrderMyTime        1
	set CCOrderTimePerMove   2
	set CCOrderStartDate     3
	set CCOrderOppTime       4

	# Which to use
	set ListOrder          $CCOrderClassic

	# email-programm capable of SMTP auth and attachements
	set mailer           "/usr/bin/nail"
	# mail a bcc of the outgoing mails to this address
	set bccaddr          ""
	# mailermode might be: mailx, mozilla, claws or mailurl
	set mailermode       "mailx"
	# parameter for attaching a file
	set attache          "-a"
	# parameter for the subject line
	set subject          "-s"

	set CorrSlot         -1

	# current number in game list
	set num              0

	# Content of CC windows games list
	set clipboardText    ""

	set glccstart        1
	set glgames          0


	#----------------------------------------------------------------------
	# Fetch a file via http
	#----------------------------------------------------------------------
	proc getPage { url } {
		set token [::http::geturl $url]
		set data [::http::data $token]
		::http::cleanup $token
		return $data
	}

	#----------------------------------------------------------------------
	# Open a File select dialog and returns the file selected
	# $i: title text after "Scid Correspondence Chess: Select "
	# $filespecs: the specs of the file (currently ignored)
	#----------------------------------------------------------------------
	proc chooseFile {i filespecs} {
		set idir [pwd]

		set fullname [tk_getOpenFile -initialdir $idir -title "Scid Correspondence Chess: Select $i"]
		if {$fullname == ""} { return }
	  
		return $fullname
	}

	#----------------------------------------------------------------------
	# Set the default correspondence base to the file selected.
	# Open Database works on that file, but in principle every other
	# DB of the type "Correspondence" can be used by just loading by
	# hand before using the CC features.
	#----------------------------------------------------------------------
	proc chooseCorrBase {} {
		global ::CorrespondenceChess::CorrBase

		set filetype { "Scid databases" {".si4" ".si"} }
		set CorrBase [chooseFile "default correspondence chess DB..." $filetype]
	}

	#----------------------------------------------------------------------
	# Choose the path where to fetch Xfcc-games to. All pgn-files in
	# this path are used as input so this offers a way to incorporate
	# cmail games as well.
	#----------------------------------------------------------------------
	proc chooseInbox    {} {
		global ::CorrespondenceChess::Inbox

		set filetype { "All files" {".*"} }
		set Inbox [file dirname [chooseFile "default correspondence chess Inbox..." $filetype]]
	}

	#----------------------------------------------------------------------
	# In Outbox a pgn-version of the game after the users move is
	# stored. This includes all variations and comments! For
	# incorporation of cmail they need to be stripped.
	#----------------------------------------------------------------------
	proc chooseOutbox   {} {
		global ::CorrespondenceChess::Outbox               \

		set filetype { "All files" {".*"} }
		set Outbox [file dirname [chooseFile "default correspondence chess Outbox..." $filetype]]
	}

	#----------------------------------------------------------------------
	# Xfcc fetching is done by an external utility, currently perl as
	# this eases up XML parsing a lot. Having it natively would be
	# desireable though. On the other hand an external utility could
	# also fetch cmail games or whatever other source as it will be
	# transparent to scid. It just has to write the CmailGameName extra
	# tag within the header to a unique ID.
	#----------------------------------------------------------------------
	proc chooseFetch    {} {
		global ::CorrespondenceChess::XfccFetchcmd

		set filetype { "All files" {".*"} }
		set XfccFetchcmd [chooseFile "default correspondence chess Fetch Tool..." $filetype]
	}

	#----------------------------------------------------------------------
	# Xfcc send utility. Similar to fetch but just the other way round
	# ;)
	#----------------------------------------------------------------------
	proc chooseSend     {} {
		global ::CorrespondenceChess::XfccSendcmd

		set filetype { "All files" {".*"} }
		set XfccSendcmd [chooseFile "default correspondence chess Send Tool..." $filetype]
	}

	#----------------------------------------------------------------------
	# Check for xfccrc
	#----------------------------------------------------------------------
	proc checkXfccrc {} {
		global ::CorrespondenceChess::xfccrcfile

		if {![file exists $xfccrcfile]} {
			if {[catch {open $xfccrcfile w} optionF]} {
				tk_messageBox -title "Scid: Unable to write file" -type ok -icon warning \
					-message "Unable to write options file: $xfccrcfile\n$optionF"
			} else {
				puts $optionF "<?xml version=\"1.0\" encoding=\"utf-8\"?>"
				puts $optionF "<xfcc>"
				puts $optionF "<server>"
				puts $optionF "   <name>ServerName</name>"
				puts $optionF "   <uri>http://</uri>"
				puts $optionF "   <user>UserName</user>"
				puts $optionF "   <pass>PassWord</pass>"
				puts $optionF "</server>"
				puts $optionF "</xfcc>"
				close $optionF
			}
		}
	}
	
	#----------------------------------------------------------------------
	# Check for the default DB, create it if it does not exist.
	#----------------------------------------------------------------------
	proc checkCorrBase {} {
		global ::CorrespondenceChess::CorrBase

		if {![file exists $CorrBase]} {
			set fName [file rootname $CorrBase]
			if {[catch {sc_base create $fName} result]} {
					tk_messageBox -icon warning -type ok -parent . \
						-title "Scid: Unable to create base" -message $result
			}
			# Type 6 == Correspondence chess
			sc_base type [sc_base current] 6
			sc_base close
		}
	}

	#----------------------------------------------------------------------
	# Check for In-/Outbox directories and create them if not avaiable
	#----------------------------------------------------------------------
	proc checkInOutbox {} {
		global scidDataDir ::CorrespondenceChess::Inbox ::CorrespondenceChess::Outbox

		if {[file exists $Inbox]} {
			if {[file isfile $Inbox]} {
				file rename -force $Inbox "$Inbox.bak"
				file mkdir $Inbox
			}
		} else {
			if {[catch { file mkdir "$Inbox" } result]} {
				set ::CorrespondenceChess::Inbox [file nativename [file join $scidDataDir "Inbox"]]
				file mkdir $Inbox
			}
		}

		if {[file exists $Outbox]} {
			if {[file isfile $Outbox]} {
				file rename -force $Outbox "$Outbox.bak"
				file mkdir $Outbox
			}
		} else {
			if {[catch { file mkdir "$Outbox" } result]} {
				set ::CorrespondenceChess::Inbox [file nativename [file join $scidDataDir "Outbox"]]
				file mkdir $Outbox
			}
		}
	}

	#----------------------------------------------------------------------
	# Save the Correspondence Chess options
	#----------------------------------------------------------------------
	proc saveCCoptions {} {
		set optionF ""
		if {[catch {open [scidConfigFile correspondence] w} optionF]} {
			tk_messageBox -title "Scid: Unable to write file" -type ok -icon warning \
				-message "Unable to write options file: [scidConfigFile correspondence]\n$optionF"
		} else {
			# Check all paths etc. exist and contain valid data
			::CorrespondenceChess::checkInOutbox
			::CorrespondenceChess::checkXfccrc
			::CorrespondenceChess::checkCorrBase

			puts $optionF "# Scid options file"
			puts $optionF "# Version: $::scidVersion, $::scidVersionDate"
			puts $optionF "# This file contains commands in the Tcl language format."
			puts $optionF "# If you edit this file, you must preserve valid Tcl"
			puts $optionF "# format or it will not set your Scid options properly."
			puts $optionF ""

			foreach i { ::CorrespondenceChess::CorrBase       \
							::CorrespondenceChess::Inbox          \
							::CorrespondenceChess::Outbox         \
							::CorrespondenceChess::XfccFetchcmd   \
							::CorrespondenceChess::XfccSendcmd    \
							::CorrespondenceChess::mailer         \
							::CorrespondenceChess::bccaddr        \
							::CorrespondenceChess::mailermode     \
							::CorrespondenceChess::attache        \
							::CorrespondenceChess::subject        \
							::CorrespondenceChess::PluginPath     \
							::CorrespondenceChess::Connector      \
							::CorrespondenceChess::RelayGames     \
							::CorrespondenceChess::ListOrder  } {
				set path [set $i]

				puts $optionF "set $i [list [set $i]]"

				# If possible replace absolute path by a relative one to
				# $scidDataDir

				# first get rid of windows path separators as they get
				# interpreted by TCL
				# regsub -all {\\} $::scidDataDir "/" sdd
				# regsub -all {\\}  $path "/" pd

				# if { [regexp $sdd $pd] } {
				#	regsub -all $sdd $pd "scidDataDir" path
				#	# now convert back to nativename
				#	set path [file nativename $path]
				#	puts $optionF "set $i \$$path"
				#} else {
				#	puts $optionF "set $i [list [set $i]]"
				#}

			}
			foreach i { ::CorrespondenceChess::xfccrcfile     \
			} {
				puts $optionF "set $i [list [set $i]]"

				# set path [set $i]
				# regsub -all {\\} $::scidConfigDir "/" sdd
				# regsub -all {\\} $path "/" pd
				# if { [regexp $sdd $pd] } {
				#	regsub -all $sdd $pd "scidDataDir" path
				#	set path [file nativename $path]
				#	puts $optionF "set $i \$$path"
				#} else {
				#	puts $optionF "set $i [list [set $i]]"
				#}

			}
			if {$::CorrespondenceChess::XfccInternal < 0}  {
				puts $optionF {set ::CorrespondenceChess::XfccInternal 0}
			} else {
				puts $optionF "set ::CorrespondenceChess::XfccInternal $::CorrespondenceChess::XfccInternal"
			}
			if {$::CorrespondenceChess::XfccConfirm < 0}  {
				puts $optionF {set ::CorrespondenceChess::XfccConfirm 0}
			} else {
				puts $optionF "set ::CorrespondenceChess::XfccConfirm $::CorrespondenceChess::XfccConfirm"
			}
			if {$::CorrespondenceChess::ListOnlyOwnMove < 0}  {
				puts $optionF {set ::CorrespondenceChess::ListOnlyOwnMove 0}
			} else {
				puts $optionF "set ::CorrespondenceChess::ListOnlyOwnMove $::CorrespondenceChess::ListOnlyOwnMove"
			}

		}
		close $optionF
		set ::statusBar "Correspondence chess options were saved to: [scidConfigFile correspondence]"
	}

	#----------------------------------------------------------------------
	# yset / yview: enable synchronous scrolling of the CC game list, ie.
	# all text widgets involved scroll simultaneously by the same ammount
	# in the vertial direction.
	#----------------------------------------------------------------------
	proc yset {args} {
		set w .ccWindow
		eval [linsert $args 0 $w.bottom.ysc set]
		yview moveto [lindex [$w.bottom.ysc get] 0]
	}

	proc yview {args} {
		set w .ccWindow
		eval [linsert $args 0 $w.bottom.id      yview]
		eval [linsert $args 0 $w.bottom.toMove  yview]
		eval [linsert $args 0 $w.bottom.event   yview]
		eval [linsert $args 0 $w.bottom.site    yview]
		eval [linsert $args 0 $w.bottom.white   yview]
		eval [linsert $args 0 $w.bottom.black   yview]
		eval [linsert $args 0 $w.bottom.clockW  yview]
		eval [linsert $args 0 $w.bottom.clockB  yview]
		eval [linsert $args 0 $w.bottom.var     yview]
		eval [linsert $args 0 $w.bottom.feature yview]
	}

	#----------------------------------------------------------------------
	# Translate the local menu
	#----------------------------------------------------------------------
	proc doConfigMenus { } {
		set lang $::language

		if {! [winfo exists .ccWindow]} { 
			raiseWin .ccWindow
			return
		}

		set m .ccWindow.menu

		foreach idx {0 1} tag {CorrespondenceChess Edit} {
			configMenuText $m $idx $tag $lang
		}
		foreach idx {0 1 3 4 6 7 8 9 10 11 13 14} tag {CCConfigure CCConfigRelay CCRetrieve  CCInbox  CCSend  CCResign  CCClaimDraw CCOfferDraw CCAcceptDraw CCGamePage  CCNewMailGame CCMailMove } {
			configMenuText $m.correspondence $idx $tag $lang
		}
		foreach idx {0 } tag { CCEditCopy } {
			configMenuText $m.edit $idx $tag $lang
		}
	}

	#----------------------------------------------------------------------
	# Call the web page of the game. The URL is extracted from the
	# Source tag that is stored with each game.
	#----------------------------------------------------------------------
	proc CallWWWGame {} {
		::CorrespondenceChess::updateConsole "Calling web page..."
		set Extra  [sc_game tags get Extra]
		set extraTagsList [split $Extra "\n"]
		set source ""
		foreach i $extraTagsList {
			if { [string equal -nocase [lindex $i 0] "Source" ] } {
				set source [string range $i 8 end-1]
				openURL $source
			}
		}
	}

	#----------------------------------------------------------------------
	# Store the relays list, but only those URLs that match
	# iccf-webchess' games page.
	#----------------------------------------------------------------------
	proc RelaysOK { } {
		global ::CorrespondenceChess::RelayGames

		set w .editCCRelays

		if {[catch {open $::CorrespondenceChess::Connector r} connectF]} {
				set Title "Error"
				append Error "$::CorrespondenceChess::Connector\n"
				append Error [::tr CCErrDirNotUsable]
				tk_messageBox -icon warning -type ok -parent . \
					-title $Title -message $Error
				return
		} else {
			set connectxml [read $connectF]

			set dom [dom parse $connectxml]
			set doc [$dom documentElement]
			set aNodes [$doc selectNodes {/connector/server}]
			set number   0
			foreach srv $aNodes {
				set stripforid   [$srv selectNodes {string(stripforid)}]

				set text [string trim [$w.f.text get 1.0 end]]
				set ::CorrespondenceChess::RelayGames {}
				foreach game [split $text "\n"] {
					set game [string trim $game]
					if {[string match "*$stripforid*" $game]} {
						lappend ::CorrespondenceChess::RelayGames $game
					}
				} 
			}
			close $connectF
		}

		::CorrespondenceChess::saveCCoptions
		destroy .editCCRelays
	}

	#----------------------------------------------------------------------
	# Configure the games to be relayed from ICCF Webchess
	#----------------------------------------------------------------------
	proc ConfigureRelay { } {
		global ::CorrespondenceChess::RelayGames

		puts stderr $::CorrespondenceChess::Connector
		if {![file exists $::CorrespondenceChess::Connector]} {
				if {[catch {open $::CorrespondenceChess::Connector w} connectF]} {

				} else {
					puts $connectF "<?xml version=\"1.0\" encoding=\"utf-8\"?>"
					puts $connectF "<connector>";
					puts $connectF "\t<server>";
					puts $connectF "\t\t<name>ICCF</name>";
					puts $connectF "\t\t<stripforid>http://www.iccf-webchess.com/MakeAMove.aspx\?id=</stripforid>";
					puts $connectF "\t\t<pgnbaseurl>http://www.iccf-webchess.com/GetPGN.aspx?id=</pgnbaseurl>";
					puts $connectF "\t\t<cmailprefix>game</cmailprefix>";
					puts $connectF "\t</server>";
					puts $connectF "</connector>";
					close $connectF
				}
		}

		if {[catch {open $::CorrespondenceChess::Connector r} connectF]} {
				set Title "Error"
				append Error "$::CorrespondenceChess::Connector\n"
				append Error [::tr CCErrDirNotUsable]
				tk_messageBox -icon warning -type ok -parent . \
					-title $Title -message $Error
				return
		} else {
			close $connectF
			set w .editCCRelays
			set oldRelays $::CorrespondenceChess::RelayGames

			if {[winfo exists $w]} { return }
			toplevel $w
			::setTitle $w [::tr "CCDlgConfigRelay"]

			autoscrollframe $w.desc text $w.desc.text \
					-background gray90 -foreground black \
					-width 60 -height 7 -wrap word -cursor top_left_arrow
			$w.desc.text insert end [::tr "CCDlgConfigRelayHelp"]
			$w.desc.text configure -state disabled
			pack $w.desc -side top -fill x

			pack [ttk::frame $w.b] -side bottom -fill x
			autoscrollframe $w.f text $w.f.text -width 60 -height 10 -wrap none

			foreach g $::CorrespondenceChess::RelayGames {
				$w.f.text insert end "$g\n"
			}
			pack $w.f -side top -fill both -expand yes

			ttk::button $w.b.ok -text OK -command {
					::CorrespondenceChess::RelaysOK
			}
			ttk::button $w.b.cancel -text $::tr(Cancel) -command "grab release $w; destroy $w"
			pack $w.b.cancel $w.b.ok -side right -padx 5 -pady 5
		}
	}

	#----------------------------------------------------------------------
	# Fetch PGN file of games to be relayed and put them with the
	# proper header tags into Scids inbox for display
	# As parameter use the MakeAMove-URL from ICCF.
	# Currently only relaying from ICCF is supported.
	#----------------------------------------------------------------------
	proc RelayGames { gameurl } {
		global ::CorrespondenceChess::Inbox

		if {[catch {open $::CorrespondenceChess::Connector r} connectF]} {
			::CorrespondenceChess::updateConsole "info ERROR: Unable ot open connector $::CorrespondenceChess::Connector";
		} else {

			set connectxml [read $connectF]

			set dom [dom parse $connectxml]
			set doc [$dom documentElement]
			set aNodes [$doc selectNodes {/connector/server}]
			set number   0
			foreach srv $aNodes {
				set name         [$srv selectNodes {string(name)}]
				set stripforid   [$srv selectNodes {string(stripforid)}]
				set pgnbaseurl   [$srv selectNodes {string(pgnbaseurl)}]
				set cmailprefix  [$srv selectNodes {string(cmailprefix)}]

				if {[regexp "$stripforid" $gameurl]} {

					regsub -all "$stripforid" $gameurl {} gameid

					::CorrespondenceChess::updateConsole "info Fetching $gameid from $name";
					set cmailgamename   "$cmailprefix$gameid"
					set pgnurl          "$pgnbaseurl$gameid"

					# convert from latin-1 to utf-8
					set pgn [encoding convertfrom iso8859-1 [::CorrespondenceChess::getPage $pgnurl ]]

					# split by line endings for insertion of necessary header tags
					set gamelist [split $pgn {
}]

					set filename [file nativename [file join $::CorrespondenceChess::Inbox "$cmailgamename.pgn"]]

					if {[catch {open $filename w} pgnF]} {
						::CorrespondenceChess::updateConsole "info ERROR: Unable to open $filename";
					} else {
						foreach line $gamelist {
							if {[string match "*Result *" $line]} {
								puts $pgnF $line
								puts $pgnF "\[CmailGameName \"$cmailgamename\"\]"
								puts $pgnF "\[Source \"$gameurl\"\]"
								puts $pgnF "\[Mode \"Relay\"\]"
							} else {
								puts $pgnF $line
							}
						}
						close $pgnF
					}
				}

			}
		}
		close $connectF
	}

	#----------------------------------------------------------------------
	# Resize the console window
	#----------------------------------------------------------------------
	proc ConsoleResize {} {
		set w .ccWindow

		# unbind configure event
		bind $w <Configure> {}

		# get old window width and height
		set oldheight $::winHeight($w)
		set oldwidth  $::winWidth($w)

		# get the new window width and height
		set temp [wm geometry $w]
		set n [scan $temp "%dx%d+%d+%d" width height x y]

		if {$height > 0 && $width > 0} {
			if {$height != $oldheight} {
				# resize the table of games
				foreach col {id toMove event site white black clockW clockB var feature} {
					$w.bottom.$col  configure -height $height
				}
				# record the new size
				recordWinSize $w
				# set the windows size to this new size explicitly to
				# avoid flicker
				setWinSize $w
			}
		}
		recordWinSize $w
		# rebind the configure event
		bind $w <Configure> { ::CorrespondenceChess::ConsoleResize }
	}

	#----------------------------------------------------------------------
	# Allow to disable engine analysis in case engines are not allowed
	# for the ongoing game.
	#----------------------------------------------------------------------
	proc EnableEngineAnalysis {on} {
	
		if {$on == 0} {
			set m .menu.tools
			$m entryconfigure 0 -state disabled
			$m entryconfigure 1 -state disabled
			$m entryconfigure 2 -state disabled
			$m entryconfigure 3 -state disabled

			# disable hotkeys, needs to be done for each window
			foreach w { .maintWin .sortWin .playerInfoWin .repWin \
							.fics .metadataWindow .crosstabWin .ecograph \
							.glistWin .plist .statsWin .baseWin .tourney \
							.pgnWin .main .nedit .ccWindow } {
			
				if {[winfo exists $w]} {
					bind $w <Control-A> {}
					bind $w <Control-Shift-2> {}
					bind $w <F2> {}
					bind $w <F3> {}
				}
			}
		} else {
			set m .menu.tools
			$m entryconfigure 0 -state normal
			$m entryconfigure 1 -state normal
			$m entryconfigure 2 -state normal
			$m entryconfigure 3 -state normal

			# disable hotkeys, needs to be done for each window
			foreach w { .maintWin .sortWin .playerInfoWin .repWin \
							.fics .metadataWindow .crosstabWin .ecograph \
							.glistWin .plist .statsWin .baseWin .tourney \
							.pgnWin .main .nedit .ccWindow } {
			
				if {[winfo exists $w]} {
					bind $w <Control-A> makeAnalysisWin
					bind $w <Control-Shift-2> "makeAnalysisWin 2"
					bind $w <F2> "::makeAnalysisWin 1 0"
					bind $w <F3> "::makeAnalysisWin 2 0"
				}
			}
		}
	}

	#----------------------------------------------------------------------
	# Copy the games list as CSV (tab separated) to the clipboard
	#----------------------------------------------------------------------
	proc List2Clipboard {} {
		clipboard clear
		clipboard append $::CorrespondenceChess::clipboardText
	}

	#----------------------------------------------------------------------
	# Generate the Correspondence Chess Window. This Window offers a
	# console displaying whats going on and which game is displayed
	# plus a gmae list containing current games synced in and their
	# status. Xfcc offers quite some information here whereas eMail
	# relies mostly on the user.
	# Additionally this window contains the buttons for easy navigation
	# and in case of Xfcc the special moves availabe (resign etc.)
	#----------------------------------------------------------------------
	proc CCWindow {} {
		global scidDataDir helpMessage

		set w .ccWindow
		if {[winfo exists .ccWindow]} {
			focus .
			destroy .ccWindow
			set ::CorrespondenceChess::isOpen 0
			return
		}
		set ::CorrespondenceChess::isOpen 1

		::createToplevel $w
		::setTitle $w [::tr "CorrespondenceChess"]

		# hook up with scids geometry manager
		setWinLocation $w
		setWinSize $w

		# enable the standard shortcuts
		standardShortcuts $w

		::CorrespondenceChess::EnableEngineAnalysis 0

		# create the menu and add default CC menu items here as well
		menu $w.menu
		::setMenu $w $w.menu
		set m $w.menu
		$w.menu add cascade -label CorrespondenceChess -menu $w.menu.correspondence
		$w.menu add cascade -label Edit                -menu $w.menu.edit
		foreach i {correspondence edit} {
			menu $w.menu.$i -tearoff 0
		}

		$m.correspondence add command -label CCConfigure   -command {::CorrespondenceChess::config}
		set helpMessage($m.correspondence,0) CCConfigure
		$m.correspondence add command -label CCConfigRelay -command {::CorrespondenceChess::ConfigureRelay}
		set helpMessage($m.correspondence,1) CCConfigRelay

		$m.correspondence add separator
		$m.correspondence add command -label CCRetrieve    -command { ::CorrespondenceChess::FetchGames }
		set helpMessage($m.correspondence,3) CCRetrieve

		$m.correspondence add command -label CCInbox       -command { ::CorrespondenceChess::ReadInbox }
		set helpMessage($m.correspondence,4) CCInbox

		$m.correspondence add separator
		$m.correspondence add command -label CCSend        -command {::CorrespondenceChess::SendMove 0 0 0 0}
		set helpMessage($m.correspondence,6) CCSend
		$m.correspondence add command -label CCResign      -command {::CorrespondenceChess::SendMove 1 0 0 0}
		set helpMessage($m.correspondence,7) CCResign
		$m.correspondence add command -label CCClaimDraw   -command {::CorrespondenceChess::SendMove 0 1 0 0}
		set helpMessage($m.correspondence,8) CCClaimDraw
		$m.correspondence add command -label CCOfferDraw   -command {::CorrespondenceChess::SendMove 0 0 1 0}
		set helpMessage($m.correspondence,9) CCOfferDraw
		$m.correspondence add command -label CCAcceptDraw  -command {::CorrespondenceChess::SendMove 0 0 0 1}
		set helpMessage($m.correspondence,10) CCAcceptDraw
		$m.correspondence add command -label CCGamePage    -command {::CorrespondenceChess::CallWWWGame}
		set helpMessage($m.correspondence,11) CCGamePage
		$m.correspondence add separator
		$m.correspondence add command -label CCNewMailGame -command {::CorrespondenceChess::newEMailGame}
		set helpMessage($m.correspondence,13) CCNewMailGame
		$m.correspondence add command -label CCMailMove    -command {::CorrespondenceChess::eMailMove}
		set helpMessage($m.correspondence,14) CCMailMove

		$m.edit add command -label CCEditCopy -accelerator "Ctrl+C" -command { ::CorrespondenceChess::List2Clipboard }

		# Translate the menu
		::CorrespondenceChess::doConfigMenus

		ttk::frame $w.top
		ttk::frame $w.bottom

		pack $w.top -anchor w -expand no
		pack $w.bottom -fill both -expand yes

		ttk::scrollbar $w.top.ysc        -command { .ccWindow.top.console yview }
		text      $w.top.console    -height 3 -width 80 -wrap word -yscrollcommand "$w.top.ysc set"
		ttk::button    $w.top.retrieveCC -image tb_CC_Retrieve        -command {::CorrespondenceChess::FetchGames}
		ttk::button    $w.top.sendCC     -image tb_CC_Send            -command {::CorrespondenceChess::SendMove 0 0 0 0}
		ttk::button    $w.top.delinbox   -image tb_CC_delete          -command {::CorrespondenceChess::EmptyInOutbox}

		ttk::button    $w.top.openDB     -text  [::tr "CCOpenDB"]     -command {::CorrespondenceChess::OpenCorrespondenceDB}
		ttk::button    $w.top.inbox      -text  [::tr "CCInbox"]      -command {::CorrespondenceChess::ReadInbox}

		ttk::button    $w.top.resign     -text  [::tr "CCResign"]     -state disabled -command {::CorrespondenceChess::SendMove 1 0 0 0}
		ttk::button    $w.top.claimDraw  -text  [::tr "CCClaimDraw"]  -state disabled -command {::CorrespondenceChess::SendMove 0 1 0 0}
		ttk::button    $w.top.offerDraw  -text  [::tr "CCOfferDraw"]  -state disabled -command {::CorrespondenceChess::SendMove 0 0 1 0}
		ttk::button    $w.top.acceptDraw -text  [::tr "CCAcceptDraw"] -state disabled -command {::CorrespondenceChess::SendMove 0 0 0 1}

		ttk::button    $w.top.help       -image tb_help -width 24 -command { helpWindow CCIcons }

		ttk::label $w.top.plugins    -image tb_CC_spacer  -takefocus 0
		ttk::label $w.top.onoffline  -image tb_CC_offline -takefocus 0


		::utils::tooltip::Set $w.top.retrieveCC [::tr "CCFetchBtn"]
		::utils::tooltip::Set $w.top.sendCC     [::tr "CCSendBtn"]
		::utils::tooltip::Set $w.top.delinbox   [::tr "CCEmptyBtn"]
		::utils::tooltip::Set $w.top.help       [::tr "CCHelpBtn"]
		::utils::tooltip::Set $w.top.onoffline  [clock format $::Xfcc::lastupdate]

 		grid $w.top.retrieveCC  -stick ewns  -column  0 -row 0
 		grid $w.top.openDB      -stick ew    -column  0 -row 1 -columnspan 2
 		grid $w.top.inbox       -stick ew    -column  0 -row 2 -columnspan 2
 
 		grid $w.top.sendCC      -stick ewns  -column  1 -row 0

		grid $w.top.console                  -column  4 -row 0 -columnspan 8
		grid $w.top.ysc         -stick ns    -column 13 -row 0 
		grid $w.top.help        -stick nsew  -column 14 -row 0 -columnspan 2

		grid $w.top.delinbox    -stick ewns  -column  5 -row 1 -rowspan 2
		grid $w.top.onoffline                -column  6 -row 1
		grid $w.top.plugins                  -column  6 -row 2

		grid $w.top.resign      -stick ew    -column  7 -row 1

		grid $w.top.claimDraw   -stick ew    -column  7 -row 2
		grid $w.top.offerDraw   -stick ew    -column  8 -row 2
		grid $w.top.acceptDraw  -stick ew    -column  9 -row 2

		# build the table in the bottom frame. This table of text widgets has to
		# scroll syncronously!
		ttk::scrollbar $w.bottom.ysc      -command ::CorrespondenceChess::yview

		set height $::winHeight($w)
		set width  $::winWidth($w)

		text $w.bottom.id       -cursor top_left_arrow -font font_Small -height $height -width 15 -setgrid 1 -relief flat -wrap none -yscrollcommand ::CorrespondenceChess::yset
		text $w.bottom.toMove   -cursor top_left_arrow -font font_Small -height $height -width 4  -setgrid 1 -relief flat -wrap none -yscrollcommand ::CorrespondenceChess::yset
		text $w.bottom.event    -cursor top_left_arrow -font font_Small -height $height -width 10 -setgrid 1 -relief flat -wrap none -yscrollcommand ::CorrespondenceChess::yset
		text $w.bottom.site     -cursor top_left_arrow -font font_Small -height $height -width 10 -setgrid 1 -relief flat -wrap none -yscrollcommand ::CorrespondenceChess::yset
		text $w.bottom.white    -cursor top_left_arrow -font font_Small -height $height -width 15 -setgrid 1 -relief flat -wrap none -yscrollcommand ::CorrespondenceChess::yset
		text $w.bottom.black    -cursor top_left_arrow -font font_Small -height $height -width 15 -setgrid 1 -relief flat -wrap none -yscrollcommand ::CorrespondenceChess::yset
		text $w.bottom.clockW   -cursor top_left_arrow -font font_Small -height $height -width 10 -setgrid 1 -relief flat -wrap none -yscrollcommand ::CorrespondenceChess::yset
		text $w.bottom.clockB   -cursor top_left_arrow -font font_Small -height $height -width 10 -setgrid 1 -relief flat -wrap none -yscrollcommand ::CorrespondenceChess::yset
		text $w.bottom.var      -cursor top_left_arrow -font font_Small -height $height -width 3  -setgrid 1 -relief flat -wrap none -yscrollcommand ::CorrespondenceChess::yset
		text $w.bottom.feature  -cursor top_left_arrow -font font_Small -height $height -width 16 -setgrid 1 -relief flat -wrap none -yscrollcommand ::CorrespondenceChess::yset

		grid $w.bottom.id       -column  0 -row 1
		grid $w.bottom.toMove   -column  1 -row 1
		grid $w.bottom.event    -column  2 -row 1
		grid $w.bottom.site     -column  3 -row 1
		grid $w.bottom.white    -column  4 -row 1
		grid $w.bottom.black    -column  5 -row 1
		grid $w.bottom.clockW   -column 15 -row 1
		grid $w.bottom.clockB   -column 16 -row 1
		grid $w.bottom.var      -column 17 -row 1
		grid $w.bottom.feature  -column 18 -row 1
		grid $w.bottom.ysc      -column 19 -row 1 -stick ns

		# Copy games list to clipboard
		bind $w <Control-Insert> { ::CorrespondenceChess::List2Clipboard }
		bind $w <Control-c>      { ::CorrespondenceChess::List2Clipboard }

		# Handle scrolling in the games list by keyboard
		bind $w <Control-Up>     { ::CorrespondenceChess::PrevGame}
		bind $w <Control-Down>   { ::CorrespondenceChess::NextGame}
		bind $w <Up>         { ::CorrespondenceChess::yview scroll -1 units}
		bind $w <Down>       { ::CorrespondenceChess::yview scroll  1 units}
		bind $w <Prior>      { ::CorrespondenceChess::yview scroll -1 pages}
		bind $w <Next>       { ::CorrespondenceChess::yview scroll  1 pages}
		bind $w <MouseWheel> { ::CorrespondenceChess::yview scroll [expr {- (%D / 120)}] units}

		# Help
		bind $w <F1>        { helpWindow Correspondence}
		bind $w "?"         { helpWindow CCIcons}

		bind $w <Configure> { ::CorrespondenceChess::ConsoleResize }
		bind $w <Destroy>   { ::CorrespondenceChess::EnableEngineAnalysis 1
			set ::CorrespondenceChess::isOpen 0 }

		foreach f [glob -nocomplain [file join "$CorrespondenceChess::PluginPath" *]] {
			$w.top.plugins    configure -image tb_CC_pluginactive
			source $f
		}

		::createToplevelFinalize $w
	}

	#--------------------------------------------------------------------------
	# Updates the game list with another event and all data available.
	# This just adds another line at the end of the current list, hence
	# the list has to be emptied if all games are resynced in.
	#--------------------------------------------------------------------------
	proc updateGamelist {id toMove event site date white black clockW \
								clockB var db books tb engines wc bc mess TC \
								lastmove drawoffer } {
		global ::CorrespondenceChess::num
		global ::CorrespondenceChess::clipboardText

		set w .ccWindow

		#----------------------------------------------------------------------
		# Layout for the gamelist: Xfcc offers more information about
		# the ongoing game then eMail, hence more is presented to the
		# user. ToMove and featrues use icons for easy reading.
		# Xfcc:
		# ID | ToMove? | White | Black | Event | Site | ClockW | ClockB # | Var | features
		# eMail:
		# ID |         | White | Black | Event | Site |        |         |     |

		foreach tag {id toMove event site white black clockW clockB var feature} {
			# enable additions
			$w.bottom.$tag      configure -state normal
			# make each line high enough for the icons to be placed
			$w.bottom.$tag      image create end -align center -image tb_CC_spacer
		}

		# Calculate the TimeDiff between the event date and the current
		# date. This diff is used to mark event that have not yet
		# started.
		set TimeDiff [expr [clock seconds] - [clock scan $date -format "%Y.%m.%d"] ]

		if { $::Xfcc::update > 0 } {
			$w.top.onoffline  configure -image tb_CC_online
			::utils::tooltip::Set $w.top.onoffline  [clock format $::Xfcc::lastupdate]
		}

		if {$mess != ""} {
			set curpos [$w.bottom.id index insert]
			$w.bottom.id image create end -align center -image tb_CC_message
			set endpos [$w.bottom.id index insert]

			$w.bottom.id tag add idmsg$id $curpos $endpos
			::utils::tooltip::SetTag $w.bottom.id "$mess" idmsg$id
		}
		# add the game id. Note the \n at the end is necessary!
		set curpos [$w.bottom.id index insert]
		$w.bottom.id      insert end "$id\n"
		set endpos [$w.bottom.id index insert]
		$w.bottom.id tag add id$id $curpos $endpos
		::utils::tooltip::SetTag $w.bottom.id "$id" id$id

		# ToMove may contain a mixture of text for game results plus
		# several icons displayin the current game status.
		if { (($clockW == " 0d  0: 0") || ($clockB == " 0d  0: 0")) && (($toMove == "yes") || ($toMove == "no")) } {
				$w.bottom.toMove image create end -align center -image tb_CC_outoftime
		}

		set text ""
		switch -regexp -- $toMove \
		"1-0" {
			set curpos [$w.bottom.toMove index insert]
			$w.bottom.toMove image create end -align center -image $::board::letterToPiece(K)25
			$w.bottom.toMove  insert end " $toMove"
			set endpos [$w.bottom.toMove index insert]
			set text "$lastmove ($toMove)"
		} \
		"0-1" {
			set curpos [$w.bottom.toMove index insert]
			$w.bottom.toMove image create end -align center -image $::board::letterToPiece(k)25
			$w.bottom.toMove  insert end " $toMove"
			set endpos [$w.bottom.toMove index insert]
			set text "$lastmove ($toMove)"
		} \
		" = " {
			set curpos [$w.bottom.toMove index insert]
			$w.bottom.toMove image create end -align center -image tb_CC_draw
			$w.bottom.toMove  insert end "$toMove"
			set endpos [$w.bottom.toMove index insert]
			set text "$lastmove ($toMove)"
		} \
		"yes" {
			set curpos [$w.bottom.toMove index insert]
			$w.bottom.toMove image create end -align center -image tb_CC_yourmove
			set endpos [$w.bottom.toMove index insert]
			set text "$lastmove"
		} \
		"no"  {
			set curpos [$w.bottom.toMove index insert]
			$w.bottom.toMove image create end -align center -image tb_CC_oppmove
			set endpos [$w.bottom.toMove index insert]
			set text "$lastmove"
		} \
		" ? " {
			set curpos [$w.bottom.toMove index insert]
			$w.bottom.toMove  insert end "$toMove"
			set endpos [$w.bottom.toMove index insert]
			set text "$lastmove"
		} \
		"POS" {
			set curpos [$w.bottom.toMove index insert]
			$w.bottom.toMove image create end -align center -image tb_CC_postal
			set endpos [$w.bottom.toMove index insert]
			set text "$lastmove"
		} \
		"EML" {
			set curpos [$w.bottom.toMove index insert]
			$w.bottom.toMove image create end -align center -image tb_CC_envelope
			set endpos [$w.bottom.toMove index insert]
			set text "$lastmove"
		} \
		"REL" {
			set curpos [$w.bottom.toMove index insert]
			$w.bottom.toMove image create end -align center -image tb_CC_relay
			set endpos [$w.bottom.toMove index insert]
			set text "$lastmove"
		}
		$w.bottom.toMove tag add toMove$id $curpos $endpos
		::utils::tooltip::SetTag $w.bottom.toMove "$text" toMove$id
		$w.bottom.toMove insert end "\n"


		# Add textual information to the edit fields
		set curpos [$w.bottom.event index insert]
		$w.bottom.event   insert end "$event\n"
		set endpos [$w.bottom.event index insert]
		$w.bottom.event tag add event$id $curpos $endpos


		set curpos [$w.bottom.site index insert]
		$w.bottom.site    insert end "$site\n"
		set endpos [$w.bottom.site index insert]
		$w.bottom.site tag add site$id $curpos $endpos
		::utils::tooltip::SetTag $w.bottom.site "$site" site$id

		if {$wc != ""} {
			if {[lsearch [image names] $wc] > -1} {
				$w.bottom.white   image create end -align center -image $wc
				$w.bottom.white   insert end " "
			} else {
				puts stderr "$wc does not exist"
			}
		}
		$w.bottom.white   insert end "$white\n"

		if {$bc != ""} {
			if {[lsearch [image names] $bc] > -1} {
				$w.bottom.black   image create end -align center -image $bc
				$w.bottom.black   insert end " "
			} else {
				puts stderr "$bc does not exist"
			}
		}
		$w.bottom.black   insert end "$black\n"

		$w.bottom.clockW  insert end "$clockW\n"
		$w.bottom.clockB  insert end "$clockB\n"
		$w.bottom.var     insert end "$var\n"

		# Xfcc defines noDB, noTablebase no etc.pp. Hence check for
		# false to display the icons for allowed features.
		if {$db == "false"} {
			$w.bottom.feature image create end -align center -image tb_CC_database
		}
		if {$books == "false"} {
			$w.bottom.feature image create end -align center -image tb_CC_book
		}
		if {$tb == "false"} {
			$w.bottom.feature image create end -align center -image tb_CC_tablebase
		}
		if {!($engines == "true")} {
			$w.bottom.feature image create end -align center -image tb_CC_engine
		}

		$w.bottom.feature insert end "\n"

		# Link the click on each field to jump to this specific game
		# easily, then lock the entry field from changes by the user.
		# SetSelection just sets the global $num to the actual row the
		# user clicked. This has to be a global variable and it has to
		# be passed to the ProcessServerResult mascaraded to prevent
		# from interpretation. See also Scids gamelist.
		foreach tag {id toMove event site white black clockW clockB var feature} {
			bind $w.bottom.$tag <Button-1> {
				::CorrespondenceChess::SetSelection %x %y
				::CorrespondenceChess::ProcessServerResult $::CorrespondenceChess::num
				break }
			# lock the area from changes
			$w.bottom.$tag configure -state disable
		}

		if {$TimeDiff < -1} {
			foreach col {id toMove event site} {
				$w.bottom.$col tag configure $col$id -foreground DarkGray -font font_Bold
			}
			::utils::tooltip::SetTag $w.bottom.event "$event\nTime: $TC\n\nStart: $date" event$id
		} else {
			::utils::tooltip::SetTag $w.bottom.event "$event\nTime: $TC" event$id
		}

		regsub -all "flag_"  $wc "" wc1
		regsub -all "flag_"  $bc "" bc1

		set wc1 [string toupper $wc1]
		set bc1 [string toupper $bc1]

		set ::CorrespondenceChess::clipboardText "$::CorrespondenceChess::clipboardText\n$id\t $event\t$site\t$date\t$white\t$black\t$wc1\t$bc1\t$clockW\t$clockB\t$toMove\t$mess\t$lastmove\t$var\t$db\t$books\t$tb\t$engines\t$TC"
	}

	#----------------------------------------------------------------------
	# Visually highlight line $::CorrespondenceChess::num
	#----------------------------------------------------------------------
	proc SetHighlightedLine {} {
		global ::CorrespondenceChess::num 
		set gamecount $::CorrespondenceChess::glgames

		# remove old highlighting
		foreach col {id toMove event site white black clockW clockB var feature} {
			.ccWindow.bottom.$col tag remove highlight 1.0 end
		}

		# highlight current games line
		foreach col {id toMove event site white black clockW clockB var feature} {
			.ccWindow.bottom.$col tag add highlight $num.0 [expr {$num+1}].0 
			.ccWindow.bottom.$col tag configure highlight -background lightYellow2 -font font_Bold
		}
		updateConsole "info: switched to game $num/$gamecount"
	}

	#----------------------------------------------------------------------
	# Set the global $num to the row the user clicked upon
	#----------------------------------------------------------------------
	proc SetSelection {xcoord ycoord} {
		global ::CorrespondenceChess::num 
		set gamecount $::CorrespondenceChess::glgames

		set num [expr {int([.ccWindow.bottom.id index @$xcoord,$ycoord]) + $::CorrespondenceChess::glccstart - 1 }]

		# Prevent clicking beyond the last game
		if { $num > $gamecount } {
				set num $gamecount
		}

		SetHighlightedLine
	}

	#----------------------------------------------------------------------
	# Empties the gamelist and reset global $num. This should be done
	# once the games are (re)synchronised.
	#----------------------------------------------------------------------
	proc emptyGamelist {} {
		set w .ccWindow
		foreach tag {id toMove event site white black clockW clockB var feature} {
			# unlock the list
			$w.bottom.$tag      configure -state normal
			# delete it
			$w.bottom.$tag      delete 1.0 end
		}
		# reset the number of processed games
		set ::CorrespondenceChess::num 0
		set ::CorrespondenceChess::clipboardText ""

	}

	#----------------------------------------------------------------------
	# Add a line to the status console
	#----------------------------------------------------------------------
	proc updateConsole {line} {
		set t .ccWindow.top.console
		if { [winfo exists $t] } {
			$t insert end "$line\n"
			$t yview moveto 1
		}
	}

	#----------------------------------------------------------------------
	# Opens a config dialog to set the default parameters. Currently
	# they are not stored to scids setup though.
	#----------------------------------------------------------------------
	proc config {} {
		set w .correspondenceChessConfig
		if { [winfo exists $w]} { 
			raiseWin $w
			return
		}
		toplevel $w
		wm title $w [::tr "CCDlgConfigureWindowTitle"]

		set ::CorrespondenceChess::sortoptlist [list \
			[::tr "CCOrderClassicTxt"] \
			[::tr "CCOrderMyTimeTxt"] \
			[::tr "CCOrderTimePerMoveTxt"] \
			[::tr "CCOrderStartDate"] \
			[::tr "CCOrderOppTimeTxt"] \
		]


		ttk::button $w.bOk     -text OK -command {
				::CorrespondenceChess::saveCCoptions
				destroy .correspondenceChessConfig
		}
		ttk::button $w.bCancel -text [::tr "Cancel"] -command "destroy $w"

		ttk::label  $w.lgeneral -text [::tr "CCDlgCGeneraloptions"]
		ttk::label  $w.ldb      -text [::tr "CCDlgDefaultDB"]
		ttk::label  $w.linbox   -text [::tr "CCDlgInbox"]
		ttk::label  $w.loutbox  -text [::tr "CCDlgOutbox"]

		ttk::label  $w.lxfccrc  -text [::tr "CCDlgXfcc"]

		ttk::label  $w.lxfcc    -text [::tr "CCDlgExternalProtocol"]
		ttk::label  $w.lfetch   -text [::tr "CCDlgFetchTool"]
		ttk::label  $w.lsend    -text [::tr "CCDlgSendTool"]
		ttk::label  $w.lsortopt -text [::tr "CCDlgSortOption"]

		ttk::label  $w.lemail   -text [::tr "CCDlgEmailCommunication"]
		ttk::label  $w.lmailx   -text [::tr "CCDlgMailPrg"]
		ttk::label  $w.lbccaddr -text [::tr "CCDlgBCCAddr"]

		ttk::label  $w.lmoderb  -text [::tr "CCDlgMailerMode"]
		ttk::label  $w.lmoderb1 -text [::tr "CCDlgThunderbirdEg"]
		ttk::label  $w.lmoderb2 -text [::tr "CCDlgMailUrlEg"]
		ttk::label  $w.lmoderb3 -text [::tr "CCDlgClawsEg"]
		ttk::label  $w.lmoderb4 -text [::tr "CCDlgmailxEg"]

		ttk::label  $w.lattache -text [::tr "CCDlgAttachementPar"]
		ttk::label  $w.lsubject -text [::tr "CCDlgSubjectPar"]

		ttk::checkbutton $w.internalXfcc -text [::tr "CCDlgInternalXfcc"] \
			-variable ::CorrespondenceChess::XfccInternal

		ttk::checkbutton $w.confirmXfcc -text [::tr "CCDlgConfirmXfcc"] \
			-variable ::CorrespondenceChess::XfccConfirm

		ttk::checkbutton $w.onlyOwnMove -text [::tr "CCDlgListOnlyOwnMove"] \
			-variable ::CorrespondenceChess::ListOnlyOwnMove

		ttk::scrollbar $w.ysc    -command { .correspondenceChessConfig.sortopt yview }
		listbox   $w.sortopt -height 3 -width 60 -exportselection 0 -selectmode single -list ::CorrespondenceChess::sortoptlist -yscrollcommand "$w.ysc set"
		$w.sortopt selection set $::CorrespondenceChess::ListOrder
		bind .correspondenceChessConfig.sortopt <<ListboxSelect>> {
			set ::CorrespondenceChess::ListOrder [ .correspondenceChessConfig.sortopt curselection ]
		}

		ttk::button $w.xfconf  -text [::tr CCConfigure] -command { ::CorrespondenceChess::checkXfccrc
			::Xfcc::config $::CorrespondenceChess::xfccrcfile}

		if {$::CorrespondenceChess::XfccInternal < 0} {
			$w.internalXfcc configure -state disabled
			$w.xfconf       configure -state disabled
		}

		ttk::entry  $w.db      -width 60 -textvariable ::CorrespondenceChess::CorrBase
		ttk::entry  $w.inbox   -width 60 -textvariable ::CorrespondenceChess::Inbox
		ttk::entry  $w.outbox  -width 60 -textvariable ::CorrespondenceChess::Outbox

		ttk::entry  $w.xfccrc  -width 60 -textvariable ::CorrespondenceChess::xfccrcfile
		ttk::entry  $w.fetch   -width 60 -textvariable ::CorrespondenceChess::XfccFetchcmd
		ttk::entry  $w.send    -width 60 -textvariable ::CorrespondenceChess::XfccSendcmd

		ttk::entry  $w.mailx   -width 60 -textvariable ::CorrespondenceChess::mailer
		ttk::entry  $w.bccaddr -width 60 -textvariable ::CorrespondenceChess::bccaddr
		ttk::entry  $w.attache -width 30 -textvariable ::CorrespondenceChess::attache
		ttk::entry  $w.subject -width 30 -textvariable ::CorrespondenceChess::subject

		ttk::radiobutton $w.moderb1 -text "Mozilla"  -value "mozilla" -variable ::CorrespondenceChess::mailermode
		ttk::radiobutton $w.moderb2 -text "Mail-URL" -value "mailurl" -variable ::CorrespondenceChess::mailermode
		ttk::radiobutton $w.moderb3 -text "Claws"    -value "claws"   -variable ::CorrespondenceChess::mailermode
		ttk::radiobutton $w.moderb4 -text "mailx"    -value "mailx"   -variable ::CorrespondenceChess::mailermode

		ttk::button $w.bdb     -text "..." -command {::CorrespondenceChess::chooseCorrBase }
		ttk::button $w.binbox  -text "..." -command {::CorrespondenceChess::chooseInbox    }
		ttk::button $w.boutbox -text "..." -command {::CorrespondenceChess::chooseOutbox   }
		ttk::button $w.bfetch  -text "..." -command {::CorrespondenceChess::chooseFetch    }
		ttk::button $w.bsend   -text "..." -command {::CorrespondenceChess::chooseSend     }

		grid $w.lgeneral                  -column 0 -row  0 -columnspan 3 -pady 10

		grid $w.ldb          -sticky e    -column 0 -row  1
		grid $w.db           -sticky w    -column 1 -row  1 -columnspan 2
		grid $w.bdb          -sticky w    -column 3 -row  1
		grid $w.linbox       -sticky e    -column 0 -row  2
		grid $w.inbox        -sticky w    -column 1 -row  2 -columnspan 2
		grid $w.binbox       -sticky w    -column 3 -row  2
		grid $w.loutbox      -sticky e    -column 0 -row  3
		grid $w.outbox       -sticky w    -column 1 -row  3 -columnspan 2
		grid $w.boutbox      -sticky w    -column 3 -row  3

		grid $w.internalXfcc -sticky w    -column 1 -row  4 -pady 10
		grid $w.xfconf                    -column 2 -row  4 -columnspan 2
		grid $w.lxfccrc      -sticky e    -column 0 -row  4
		grid $w.lxfcc                     -column 0 -row  5 -columnspan 3 -pady 10
		grid $w.xfccrc       -sticky w    -column 1 -row  5 -columnspan 2

		grid $w.lfetch       -sticky e    -column 0 -row  6
		grid $w.fetch        -sticky w    -column 1 -row  6 -columnspan 2
		grid $w.bfetch       -sticky w    -column 3 -row  6
		grid $w.lsend        -sticky e    -column 0 -row  7
		grid $w.send         -sticky w    -column 1 -row  7 -columnspan 2
		grid $w.bsend        -sticky w    -column 3 -row  7


		grid $w.confirmXfcc  -sticky w    -column 1 -row  8
		grid $w.onlyOwnMove  -sticky w    -column 2 -row  8
		grid $w.lsortopt     -sticky e    -column 0 -row  9
		grid $w.sortopt      -sticky w    -column 1 -row  9 -columnspan 2
		grid $w.ysc          -sticky wns  -column 3 -row 9

		grid $w.lemail                    -column 0 -row 10 -columnspan 3 -pady 10

		grid $w.lmailx       -sticky e    -column 0 -row 11
		grid $w.mailx        -sticky w    -column 1 -row 11 -columnspan 2
		grid $w.lbccaddr     -sticky e    -column 0 -row 12
		grid $w.bccaddr      -sticky w    -column 1 -row 12 -columnspan 2

		grid $w.lmoderb      -sticky e    -column 0 -row 13
		grid $w.lmoderb1     -sticky w    -column 2 -row 13 -columnspan 2
		grid $w.lmoderb2     -sticky w    -column 2 -row 14 -columnspan 2
		grid $w.lmoderb3     -sticky w    -column 2 -row 15 -columnspan 2
		grid $w.lmoderb4     -sticky w    -column 2 -row 16 -columnspan 2
		grid $w.moderb1      -sticky w    -column 1 -row 13
		grid $w.moderb2      -sticky w    -column 1 -row 14
		grid $w.moderb3      -sticky w    -column 1 -row 15
		grid $w.moderb4      -sticky w    -column 1 -row 16

		grid $w.lattache     -sticky e    -column 0 -row 18
		grid $w.attache      -sticky w    -column 1 -row 18 -columnspan 2

		grid $w.lsubject     -sticky e    -column 0 -row 19
		grid $w.subject      -sticky w    -column 1 -row 19 -columnspan 2


		# Buttons and ESC-key
		grid $w.bOk          -column 0    -row 20 -pady 10 -columnspan 2
		grid $w.bCancel      -column 1    -row 20 -pady 10
		bind $w <Escape> "$w.bCancel invoke"

		bind $w <F1> { helpWindow CCSetupDialog}
	}

	#----------------------------------------------------------------------
	# startEmailGame: create an empty new game and set the header for
	# to a cmail compatible format with the parameters entered by the
	# user (own and opponent names and mail addresses and unique id)
	#----------------------------------------------------------------------
	proc startEmailGame {ownname ownmail oppname oppmail gameid} {
		global ::CorrespondenceChess::Inbox

		# the following header tags have to be in this form for cmail to
		# recognise the mail as an eMail correspondence game.
		# Additonally scid searched for some of them to retrieve mail
		# addresses automagically and also to recognise this game as
		# eMail and not Xfcc.
		set Event         "Email correspondence game"
		set Site          "NET"
		set Round         "-"
		set CmailGameName "CmailGameName \"$gameid\""
		set WhiteNA       "WhiteNA \"$ownmail\""
		set BlackNA       "BlackNA \"$oppmail\""
		set whiteCountry  "WhiteCountry \"EUR\""
		set blackCountry  "BlackCountry \"EUR\""

		set Mode          "Mode \"EM\""

		set year          [::utils::date::today year]
		set month         [::utils::date::today month]
		set day           [::utils::date::today day]
		set today         "$year.$month.$day"

		# add a new game
		::game::Clear

		# set the header tags
		sc_game tags set -event     $Event
		sc_game tags set -site      $Site
		sc_game tags set -round     $Round
		sc_game tags set -white     $ownname
		sc_game tags set -black     $oppname
		sc_game tags set -date      $today
		sc_game tags set -eventdate $today

		# add cmails extra header tags
		sc_game tags set -extra [list $CmailGameName $WhiteNA $BlackNA $whiteCountry $blackCountry $Mode]

		updateBoard -pgn
		updateTitle
		updateMenuStates

		# Call gameSave with argument 0 to append to the current
		# database. This also gives the Save-dialog for additional user
		# values.
		gameSave 0

		# construct a PGN in Inbox for CC gamelist to work
		set pgnfile "[file join $Inbox $gameid].pgn"
		sc_base export "current" "PGN" $pgnfile -append 0 -comments 0 -variations 0 \
					-space 1 -symbols 0 -indentC 0 -indentV 0 -column 0 -noMarkCodes 0 -convertNullMoves 1

		::CorrespondenceChess::ReadInbox
	}

	#----------------------------------------------------------------------
	# Generate a new email correspondence game in the style of cmail,
	# but with a friendly dialog presented to the user instead of
	# somewhat cryptic command line parameters.
	# This procedure adds a new game to the Correspondence DB and fills
	# in the header appropriately.
	#----------------------------------------------------------------------
	proc newEMailGame {} {
		global ::CorrespondenceChess::CorrSlot

		# Regardless how the user opend this DB, find it! ;)
		::CorrespondenceChess::CheckForCorrDB
		# Only proceed if a correspondence DB is already loaded
		if {$CorrSlot > -1} {
			set w .wnewEMailGame
			if { [winfo exists $w]} { return }
			toplevel $w
			wm title $w [::tr "CCDlgStartEmail"]

			set ownemail   ::CorrespondenceChess::bccaddr
			set ownname    ""
			set oppemail   ""
			set oppname    ""
			set gameid     ""

			ttk::label  $w.lownname -text [::tr CCDlgYourName]
			ttk::label  $w.lownmail -text [::tr CCDlgYourMail]
			ttk::label  $w.loppname -text [::tr CCDlgOpponentName]
			ttk::label  $w.loppmail -text [::tr CCDlgOpponentMail]
			ttk::label  $w.lgameid  -text [::tr CCDlgGameID]

			ttk::entry  $w.ownname -width 40 -textvariable ownname
			ttk::entry  $w.ownmail -width 40 -textvariable $ownemail
			ttk::entry  $w.oppname -width 40 -textvariable oppname
			ttk::entry  $w.oppmail -width 40 -textvariable oppemail
			ttk::entry  $w.gameid  -width 40 -textvariable gameid

			ttk::button $w.bOk     -text OK -command {
				::CorrespondenceChess::startEmailGame \
						[.wnewEMailGame.ownname get] \
						[.wnewEMailGame.ownmail get] \
						[.wnewEMailGame.oppname get] \
						[.wnewEMailGame.oppmail get] \
						[.wnewEMailGame.gameid  get]
				destroy .wnewEMailGame
			}
			ttk::button $w.bCancel -text [::tr "Cancel"] -command "destroy $w"

			grid $w.lownname   -sticky e -column 0 -row 0
			grid $w.lownmail   -sticky e -column 0 -row 1
			grid $w.loppname   -sticky e -column 0 -row 2
			grid $w.loppmail   -sticky e -column 0 -row 3
			grid $w.lgameid    -sticky e -column 0 -row 4

			grid $w.ownname    -sticky w -column 1 -row 0 -columnspan 2
			grid $w.ownmail    -sticky w -column 1 -row 1 -columnspan 2
			grid $w.oppname    -sticky w -column 1 -row 2 -columnspan 2
			grid $w.oppmail    -sticky w -column 1 -row 3 -columnspan 2
			grid $w.gameid     -sticky w -column 1 -row 4 -columnspan 2

			# Buttons and ESC-key
			grid $w.bOk       -column 1 -row  5 -pady 10
			grid $w.bCancel   -column 2 -row  5 -pady 10
			bind $w <Escape> "$w.bCancel invoke"
			bind $w <F1> { helpWindow CCeMailChess}
		}
	}

	#----------------------------------------------------------------------
	# Call an external program via a proper shell
	# open and exec call the external without a shell environment
	# For Windows make sure that the executable uses its short name
	#     catch {set mailer [file attributes $mailer -shortname]}
	# or it resides in a path without spaces
	# For Windows quoting is not possible as usual, < and > are not allowed
	# as textual arguments even if quoted properly.
	#----------------------------------------------------------------------
	proc CallExternal {callstring {param ""}} {
		global windowsOS

		if {$windowsOS} {
			# On Windows, use the "start" command:
			if {[string match $::tcl_platform(os) "Windows NT"]} {
				catch {exec $::env(COMSPEC) /c "$callstring $param" &}
			} else {
				catch {exec start "$callstring $param" &}
			}
		} else {
			# On Unix just call the shell with the converter tool
			catch {exec /bin/sh -c "$callstring $param" &}
		}
	}

	#----------------------------------------------------------------------
	# Check wether a Correspondence Database is loaded. Note that the
	# first one found is used as reference DB for game processing.
	#----------------------------------------------------------------------
	proc CheckForCorrDB {} {
		global ::windows::switcher::base_types
		global ::CorrespondenceChess::Inbox ::CorrespondenceChess::Outbox
		global ::CorrespondenceChess::CorrSlot

		set CorrSlot -1
		if {$CorrSlot < 0} {
			# check for the status window to exist, if not open it
			if {![winfo exists .ccWindow]} {
				::CorrespondenceChess::CCWindow
			}

			# check for In/Outbox to exist and be accessible
			if { [file exists $Inbox] == 0  && ([file isdirectory $Inbox] == 0) } {
				set Title [::tr CCDlgTitNoInbox]
				set Error [::tr CCErrInboxDir]
				append Error "\n   $Inbox\n"
				append Error [::tr CCErrDirNotUsable]
				tk_messageBox -icon warning -type ok -parent . \
					-title $Title -message $Error
				return
			}
			if { ([file exists $Outbox] == 0) && ([file isdirectory $Outbox] == 0) } {
				set Title [::tr CCDlgTitNoOutbox]
				set Error [::tr CCErrOutboxDir]
				append Error "\n   $Outbox\n"
				append Error [::tr CCErrDirNotUsable]
				tk_messageBox -icon warning -type ok -parent . \
					-title $Title -message $Error
				return
			}

			set typeCorr [lsearch $base_types {Correspondence chess} ]
			for {set x 1} {$x <= [ expr [sc_base count]-1 ]} {incr x} {
					set type [sc_base type $x]
					if {$type == $typeCorr} {
						.ccWindow.top.openDB configure -state disabled
						set CorrSlot $x
						break
					}
			}
			if {$CorrSlot < 0} {
				set Title [::tr CCDlgTitNoCCDB]
				set Error [::tr CCErrNoCCDB]
				tk_messageBox -icon warning -type ok -parent . \
					-title $Title -message $Error
			}
		}
	}

	#----------------------------------------------------------------------
	# Opens the DB holding the correspondence games
	#----------------------------------------------------------------------
	proc OpenCorrespondenceDB {} {
		global ::CorrespondenceChess::CorrBase

		## set fName [file rootname $CorrBase]
		set fName $CorrBase

		if {[catch {::file::Open $fName} result]} {
			set err 1
			tk_messageBox -icon warning -type ok -parent . \
				-title "Scid: Error opening file" -message $result
		} else {
			if {[file extension $fName] == ".si3"} {
				# file has been converted to si4
				set CorrBase "[file rootname $CorrBase].si4"
				::CorrespondenceChess::saveCCoptions
			}
			set ::initialDir(base) [file dirname $fName]
		}
		::windows::gamelist::Refresh
		::tree::refresh
		::windows::stats::Refresh
		updateMenuStates
		updateBoard -pgn
		updateTitle
		updateStatusBar

		::CorrespondenceChess::CheckForCorrDB
	}

	#----------------------------------------------------------------------
	# Search for a game by Event, Site, White, Black and CmailGameName
	# This has to result in only one game matching the criteria. 
	# No problem with cmail and Xfcc as GameIDs are unique.
	#----------------------------------------------------------------------
	proc SearchGame {Event Site White Black CmailGameName result refresh} {
		global ::CorrespondenceChess::CorrSlot

		# switch to the Correspondence Games DB
		sc_base switch $CorrSlot
		set move ""

		set sPgnlist {}
		lappend sPgnlist [string trim $CmailGameName]


		# Clear really all filters including potential Tree filters
		# based on current position.  It is imperative to search the
		# whole DB regardless of context to find the game that needs to
		# be updated. Otherwise dupes and unpredictable behaviour will
		# result.
		sc_filter clear

		# Search the header for the game retrieved. Use as much info as
		# possible to get a unique result. In principle $sPgnList should
		# be enough. However searching indexed fields speeds up things
		# a lot in case of large DBs. Also: disregard deleted games,
		# this avoids the necessity to compact a db in case of
		# accidential duplication of a game.
		# -filter 2: Ignore previous searches
		set str [sc_search header \
					-event $Event    \
					-site $Site      \
					-white $White    \
					-black $Black    \
					-pgn $sPgnlist   \
					-fDelete no      \
					-filter 2        \
					-gameNumber [list 1 -1] \
					]

		CorrespondenceChess::updateConsole "info: search [sc_filter count]"

		::windows::gamelist::Refresh
		::windows::stats::Refresh

		# There should be only one result. If so, load it and place the
		# game pointer to the end of the game ::game::Load also handles
		# board rotation if Player Names are set up correctly.
		if {[sc_filter count] == 1} {
			set filternum [sc_filter first]

			# Refresh windows only if necessary
			if {$refresh == 1} {
				# ::game::Load  also checks the dirty flag and asks to
				# save the game in case necessary.
				::game::Load $filternum
			} else {
				sc_game load $filternum
			}

			set Mode [::CorrespondenceChess::CheckMode]

			sc_move end
			# Number of moves in the current DB game
			set mnCorr [expr {[sc_pos moveNumber]-1}]
			set side   [sc_pos side]

			# Number of moves in the new game in Clipbase
			sc_base switch "clipbase"
			sc_move end
			set mnClip [sc_pos moveNumber]

			if {$side == "white"} {
				set plyStart [expr {$mnCorr*2-1}]
			} else {
				set plyStart [expr {$mnCorr*2}]
			}

			set side   [sc_pos side]
			if {$side == "white"} {
				set plyEnd [expr {$mnClip*2-1}]
			} else {
				set plyEnd [expr {$mnClip*2}]
			}

			# Check if the games mainline in DB contains more ply than
			# the game in the clipbase. If so inform the user.
			if {($plyEnd-$plyStart < 2) && ($Mode == "XFCC") && ($result == "*")} {
				set Title [::tr CCDlgDBGameToLong]
				set Error [::tr CCDlgDBGameToLongError]
				tk_messageBox -icon warning -type ok -parent . \
					-title $Title -message "$Error $mnClip (= ply $plyEnd)"
			}

			# Add moves from the relayed games if the mode is not Postal.
			# On mixed ICCF Events also the ICCF server deliveres an
			# empty game via Xfcc, therefore this check is required
			if {$Mode != "Postal"} {

				# Add moves from clipbase to the DB game. This keeps
				# comments, but requires that tries are inserted as variants
				# as it is always appended to the end of the game
				for {set x $plyStart} {$x < $plyEnd} {incr x} {
					set basecomment  ""
					set comment      ""

					sc_base switch "clipbase"

					# move to the beginning of the new part
					sc_move start
					sc_move forward [expr {$x+1}]

					# Get the move in _untranslated_ form...
					set move [sc_game info nextMoveNT]
					# ... move on one ply ...
					sc_move forward
					# ... and get the comment
					set comment [sc_pos getComment]

					# switch to Correspondence DB and add the move and comment
					sc_base switch     $CorrSlot
					sc_move addSan     $move

					# Get the comment stored in the base for comparison
					set basecomment [sc_pos getComment]

					# Some servers keep old comments within the game
					# (SchemingMind) some don't (ICCF). Try to preserve
					# comments inserted by the user as well as add new
					# responses properly.
					set sbasecomment ""
					set scomment     ""

					# Strip of [%ccsnt...] like comments (SchemingMind time stamps)
					regsub -all {\[.*\]} $basecomment   "" sbasecomment
					regsub -all {^\s*}   $sbasecomment  "" sbasecomment
					# Strip of "Name: " to compare original text entered by
					# the user only.
					regsub -all "$White:" $sbasecomment "" sbasecomment
					regsub -all "$Black:" $sbasecomment "" sbasecomment

					# Same for the game delivered by Xfcc
					regsub -all {\[.*\]}  $comment      "" scomment
					regsub -all {^\s*}    $scomment     "" scomment
					regsub -all "$White:" $scomment     "" scomment
					regsub -all "$Black:" $scomment     "" scomment

					# Check what to preserve and which comment to set.
					if { [string length $sbasecomment] == 0} {
						sc_pos setComment "$comment"
					} elseif { [string length $scomment] < [string length $sbasecomment ]} {
						# base contains more text than the one retrieved
						if { [string first $scomment $sbasecomment] < 0 } {
							sc_pos  setComment "$basecomment $comment"
						}
					} else {
						# retrieved game contains more text than the stored
						if { [string first $sbasecomment $scomment] < 0 } {
							sc_pos setComment "$basecomment $comment"
						} else {
							sc_pos setComment "$comment"
						}
					}
				}
				sc_game tags set -result $result
				sc_base switch $CorrSlot
				sc_game save $filternum

				# Only refresh when SearchGame was triggered by the user,
				# otherwise just reload the game but leave the window in
				# state to save considerable amount of time
				if {$refresh == 1} {
					::game::Load $filternum
				} else {
					sc_game load $filternum
				}
			} else {
				# only switch to base for postal games
				sc_base switch $CorrSlot
			}
		} elseif {[sc_filter count] == 0} {
			# No matching game found, add it as a new one
			# Clear the current game first, then just paste the clipboard
			# game as it is. No need to do something as complex as for
			# already existing games above.
			game::Clear
			sc_clipbase paste
			# append the current game without asking and the header
			# supplied
			# gameAdd gets confused here with with an altered game opeing
			# another dialogue besides the save game
			sc_game save 0

			CorrespondenceChess::updateConsole "info: new game added"
		} else {
			if {[winfo exists .glistWin]} {
				raise .glistWin
			} else {
				::windows::gamelist::Open
			}
			set Title [::tr CCDlgDuplicateGame]
			set Error [::tr CCDlgDuplicateGameError]
			tk_messageBox -icon warning -type ok -parent . \
				-title $Title -message $Error
		}
	}

	#----------------------------------------------------------------------
	# If a Correspondence DB is loaded, switch to the clipbase and
	# use the game with the given id to find headers. 
	# PGN file and jump to the game number given. Then extract the
	# header tags and call "SearchGame" to display the game in question
	# to the user.
	#----------------------------------------------------------------------
	proc ProcessServerResult {game} {
		global ::CorrespondenceChess::CorrSlot
		global emailData

		# Regardless how the user opend this DB, find it! ;)
		::CorrespondenceChess::CheckForCorrDB
		# Only proceed if a correspondence DB is already loaded
		if {$CorrSlot > -1} {
			sc_base switch "clipbase"
			sc_game load $game

			# get the header
			set Event  [sc_game tags get Event]
			set Site   [sc_game tags get Site ]
			set White  [sc_game tags get White]
			set Black  [sc_game tags get Black]
			set Extra  [sc_game tags get Extra]
			set result [sc_game tags get Result]
			# CmailGameName is an extra header :(
			set extraTagsList [split $Extra "\n"]

			# ... extract it as it contains the unique ID
			foreach i $extraTagsList {
				if { [string equal -nocase [lindex $i 0] "CmailGameName" ] } {
					set CmailGameName [string range $i 15 end-1]
				}
			}

			# set these variables for email games where they get no
			# values otherwise
			set noENG     "false"
			set drawoffer "false"
			# Search the game in the correspondence DB and display it
			foreach xfccextra $::Xfcc::xfccstate {
				if { [string equal -nocase [lindex $xfccextra 0] "$CmailGameName" ] } {
					foreach i $xfccextra {
						if { [string equal -nocase [lindex $i 0] "noEngines" ] } {
							set noENG [string range $i 10 end]
						}
						if { [string equal -nocase [lindex $i 0] "drawOffered" ] } {
							set drawoffer [string range $i 12 end]
						}
					}
				}
			}
			if {$noENG == "true"} {
				::CorrespondenceChess::EnableEngineAnalysis 0
			} else {
				::CorrespondenceChess::EnableEngineAnalysis 1
			}

			# After this search the windows need to be refreshed to show
			# the current state
			SearchGame $Event $Site $White $Black $CmailGameName $result 1

			set Mode [::CorrespondenceChess::CheckMode]

			# hook up with the old email manager: this implements the
			# manual timestamping required
			if {($Mode == "EM") || ($Mode == "Relay") || ($Mode == "Postal")} {
				set emailData [::tools::email::readOpponentFile]
				set done 0
				set idx  0
				# search through the whole list and check if the current
				# game was already defined to be an email game.
				foreach dataset $emailData {
					if { [lindex $dataset 0] == $CmailGameName} {
						set done 1
						# add the received flag and date
						::tools::email::addSentReceived $idx r
					}
					incr idx
				}
				if {$done < 1} {
					set idx [llength $emailData]
					lappend emailData [list "" "" "" "" ""]
					set emailData [lreplace $emailData $idx $idx \
									  [list "$CmailGameName" "somewhere@somehost.org" "scid game" [sc_filter first] "-- " ]]
					::tools::email::writeOpponentFile $emailData
					::tools::email::refresh
					# add the received flag and date
					::tools::email::addSentReceived $idx r
				}
			}
			# Jump to the end of the game and update the display
			::move::End
			if {$drawoffer == "true"} {
				.ccWindow.top.acceptDraw configure -state normal
				set comment   [sc_pos getComment]
				set drwstr    "- [::tr Draw] -"
				if { [regexp "$drwstr" $comment] } {
				} else {
					sc_pos setComment "$comment $drwstr"
					updateBoard -pgn
				}
			} else {
				.ccWindow.top.acceptDraw configure -state disabled
			}


			# Set some basic info also to the button tooltips
			::utils::tooltip::Set .ccWindow.top.resign     "$CmailGameName: $Event\n$Site\n\n$White - $Black"
			::utils::tooltip::Set .ccWindow.top.claimDraw  "$CmailGameName: $Event\n$Site\n\n$White - $Black"
			::utils::tooltip::Set .ccWindow.top.acceptDraw "$CmailGameName: $Event\n$Site\n\n$White - $Black"
			::utils::tooltip::Set .ccWindow.top.offerDraw  "$CmailGameName: $Event\n$Site\n\n$White - $Black"
		}
	}

	#----------------------------------------------------------------------
	# Checks the mode of the current game and return it (EM or XFCC).
	# Additionally update the button status in the Console window
	# accordingly and update the console itself with $Event, Mode and
	# $Site.
	#----------------------------------------------------------------------
	proc CheckMode {} {
		set Event [sc_game tags get Event]
		set Site  [sc_game tags get Site]
		set Extra [sc_game tags get Extra]
		# CmailGameName is an extra header :(
		set extraTagsList [split $Extra "\n"]

		# ... extract it as it contains the unique ID
		foreach i $extraTagsList {
			if { [string equal -nocase [lindex $i 0] "Mode" ] } {
				set Mode [string range $i 6 end-1]
			}
		}

		set m .menu.play.correspondence

		# do not set state of top.acceptDraw as this is set dynamically
		if {($Mode == "EM") || ($Mode == "Relay") || ($Mode == "Postal")} {
			if {$Mode == "EM"} {
				::CorrespondenceChess::updateConsole "info Event: $Event (eMail-based)"
			} elseif {$Mode == "Relay"} {
				::CorrespondenceChess::updateConsole "info Event: $Event (observed)"
			} elseif {$Mode == "Postal"} {
				::CorrespondenceChess::updateConsole "info Event: $Event (postal)"
			}

			# eMail/postal games: manual handling for resign and draw is
			# needed, no standard way/protocol exists => disable the
			# buttons and menue entries accordingly
			.ccWindow.top.resign     configure -state disabled
			.ccWindow.top.claimDraw  configure -state disabled
			.ccWindow.top.offerDraw  configure -state disabled
			# .ccWindow.top.acceptDraw configure -state disabled

			$m entryconfigure 8 -state disabled
			$m entryconfigure 9 -state disabled
			$m entryconfigure 10 -state disabled
			$m entryconfigure 11 -state disabled
		} else {
			.ccWindow.top.resign     configure -state normal
			.ccWindow.top.claimDraw  configure -state normal
			.ccWindow.top.offerDraw  configure -state normal
			# .ccWindow.top.acceptDraw configure -state normal
			::CorrespondenceChess::updateConsole "info Event: $Event (Xfcc-based)"

			$m entryconfigure 8 -state normal
			$m entryconfigure 9 -state normal
			$m entryconfigure 10 -state normal
			$m entryconfigure 11 -state normal
		}
		::CorrespondenceChess::updateConsole "info Site: $Site"

		return $Mode
	}

	#----------------------------------------------------------------------
	# Search the previous game from the input file in the correspondence DB
	# If at last game already nothing happens
	#----------------------------------------------------------------------
	proc PrevGame {} {
		global ::CorrespondenceChess::CorrSlot ::CorrespondenceChess::num
		set gamecount $::CorrespondenceChess::glgames

		busyCursor .
		# Regardless how the user opend this DB, find it! ;)
		::CorrespondenceChess::CheckForCorrDB
		if {$CorrSlot > -1} {
			if {$num > 1} {
				set num [expr {$num - 1}]
				SetHighlightedLine
				::CorrespondenceChess::ProcessServerResult $::CorrespondenceChess::num
			}
		}
		unbusyCursor .
	}

	#----------------------------------------------------------------------
	# Search the next game from the input file in the correspondence DB
	# If at last game already nothing happens
	#----------------------------------------------------------------------
	proc NextGame {} {
		global ::CorrespondenceChess::CorrSlot ::CorrespondenceChess::num
		set gamecount $::CorrespondenceChess::glgames

		busyCursor .
		# Regardless how the user opend this DB, find it! ;)
		::CorrespondenceChess::CheckForCorrDB
		if {$CorrSlot > -1} {
			if {$num < $gamecount} {
				set num [expr {$num + 1}]
				SetHighlightedLine
				::CorrespondenceChess::ProcessServerResult $::CorrespondenceChess::num
			}
		}
		unbusyCursor .
	}

	#----------------------------------------------------------------------
	# FetchGames: retrieve games via Xfcc
	#----------------------------------------------------------------------
	proc FetchGames {} {
		global ::CorrespondenceChess::Inbox ::CorrespondenceChess::XfccFetchcmd ::CorrespondenceChess::CorrSlot
		busyCursor .

		# Regardless how the user opend this DB, find it! ;)
		::CorrespondenceChess::CheckForCorrDB
		# Only proceed if a correspondence DB is already loaded
		if {$CorrSlot > -1} {
			if {$::CorrespondenceChess::XfccInternal == 1} {
				# use internal Xfcc-handling
				::Xfcc::ReadConfig $::CorrespondenceChess::xfccrcfile
				::Xfcc::ProcessAll $::CorrespondenceChess::Inbox
			} else {
				# call external protocol handler
				if {[file executable "$XfccFetchcmd"]} {
					::CorrespondenceChess::updateConsole "info Calling external fetch tool $XfccFetchcmd..."
					CallExternal "$XfccFetchcmd $Inbox"
				}
			}
			# Fetch games that should be relayed from the ICCF Server
			::CorrespondenceChess::updateConsole "info Fetching relayed games from ICCF..."
			foreach g $::CorrespondenceChess::RelayGames {
				::CorrespondenceChess::RelayGames $g
			}
			# process what was just retrieved
			::CorrespondenceChess::ReadInbox 
		}
		unbusyCursor .
	}

	#----------------------------------------------------------------------
	# EmptyInOutbox: remove all pgn files currently stored in in- and
	# outbox directories to get a fresh fetch
	#----------------------------------------------------------------------
	proc EmptyInOutbox {} {
		global ::CorrespondenceChess::Inbox ::CorrespondenceChess::Outbox
		global windowsOS

		if {$windowsOS} {
			set inpath  "$Inbox\\"
			set outpath "$Outbox\\"
		} else {
			set inpath  "$Inbox/"
			set outpath "$Outbox/"
		}
		set result [tk_dialog .roDialog "Scid: [tr CCDlgDeleteBoxes]" \
				$::tr(CCDlgDeleteBoxesText) "" 1 $::tr(Yes) $::tr(No)]
		if {$result == 0} {
			foreach f [glob -nocomplain [file join $inpath *]] {
				file delete $f
			}
			foreach f [glob -nocomplain [file join $outpath *]] {
				file delete $f
			}
			set filename [scidConfigFile xfccstate]
			file delete $filename

			# clean also status information as they're now invalid!
			set ::Xfcc::xfccstate {}

			::CorrespondenceChess::emptyGamelist
		}

	}

	#----------------------------------------------------------------------
	# ReadInbox: process the inbox game per game by adding them one by
	# one to the clipboard.
	#----------------------------------------------------------------------
	proc ReadInbox {} {
		global ::CorrespondenceChess::Inbox ::CorrespondenceChess::CorrSlot
		global ::CorrespondenceChess::glccstart ::CorrespondenceChess::glgames windowsOS
		global ::Xfcc::lastupdate ::Xfcc::xfccstate

		set pgnopen 0

		busyCursor .

		if {$windowsOS} {
			set inpath  "$Inbox\\"
		} else {
			set inpath  "$Inbox/"
		}

		# Regardless how the user opend this DB, find it! ;)
		::CorrespondenceChess::CheckForCorrDB

		set games 0
		if {$CorrSlot > -1} {

			# extract the number of the last move using Scids internal
			# PGN parser as comments etc. might appear, and this number
			# is not given via Xfcc. Similar for the event date.
			sc_clipbase clear
			sc_base switch "clipbase"
			set game 0
			set gamemoves {}
			foreach f [glob -nocomplain [file join $inpath *]] {
				catch {sc_base import file $f}
				set game [expr {$game + 1}]
				sc_game load $game
				sc_move end
				set number [sc_pos moveNumber]
				set Date   [sc_game tags get Date ]
				set Extra  [sc_game tags get Extra]
				set extraTagsList [split $Extra "\n"]
				foreach i $extraTagsList {
					if { [string equal -nocase [lindex $i 0] "CmailGameName" ] } {
						set CmailGameName [string range $i 15 end-1]
					}
				}
				lappend gamemoves [list $CmailGameName $number $Date]
			}

			# generate a list of games retrieved by Xfcc. Add game-ID and
			# timing to two lists: one holds all games and one holds
			# those the user does not have the move (they may be skipped
			# in display)
			set xfcclist {}
			set filelist {}
			set skiplist {}
			set sortmode "-ascii"

			foreach xfccextra $::Xfcc::xfccstate {
				set CmailGameName [lindex $xfccextra 0]
				set criterion     0
				set timepermove   0
				set mytime        0
				set opptime       0
				set movestoTC     1
				set tincrement    0
				set moves         0
				set myTurn        "false"
				set TimeControl   "10/50"
				set idx           [lsearch -exact -index 0 $gamemoves $CmailGameName]
				set number        [lindex [lindex $gamemoves $idx] 1]
				set Date          [lindex [lindex $gamemoves $idx] 2]
				regsub -all {\.} $Date "" Date

				foreach i $xfccextra {
					if { [string equal -nocase [lindex $i 0] "myTurn" ] } {
						set myTurn [string range $i 7 end]
					}
					if { [string equal -nocase [lindex $i 0] "mytime" ] } {
						set mytime [string range $i 7 end]
					}
					if { [string equal -nocase [lindex $i 0] "opptime" ] } {
						set opptime [string range $i 8 end]
					}
					if { [string equal -nocase [lindex $i 0] "TimeControl" ] } {
						set TCstr [string range $i 13 end]
						# Calculate the moves to the next time control.
						# Makes sense only if no Fischer Clock is used.
						if { [regexp {/} $TCstr ]} {
							set TC [split $TCstr "/"]
							set moves      [ lindex $TC 0]
							set tincrement [ lindex $TC 1]
							regsub -all "d.*" $tincrement "" tincrement
							set movestoTC [ expr {$moves - ($number % $moves)}]
						} else {
							# Fischer Clock
							set moves 1
						}
					}
				}
				set mytime  [expr {int($mytime / 60.0 / 24.0)}]

				# Calculate the time per move till next TC: include also
				# the next time control periode in this calculation
				set timepermove1 [expr {($mytime+$tincrement) / ($movestoTC+$moves)}]
				set timepermove2 [expr {$mytime / $movestoTC}]

				# Time per move is the minimum of the two above
				set timepermove [expr min($timepermove1, $timepermove2)]

				# Define criteria to be added to the list to sort. Classic
				# mode is handled below by resorting the clipbase
				switch -regexp -- $::CorrespondenceChess::ListOrder \
					"$::CorrespondenceChess::CCOrderMyTime" {
						set criterion $mytime
						set sortmode "-integer"
					} \
					"$::CorrespondenceChess::CCOrderOppTime" {
						set criterion $opptime
						set sortmode "-integer"
					} \
					"$::CorrespondenceChess::CCOrderTimePerMove" {
						set criterion $timepermove
						set sortmode "-real"
					} \
					"$::CorrespondenceChess::CCOrderStartDate" {
						set criterion $Date
						set sortmode "-integer"
					}

				if {($myTurn == "false") && ($::CorrespondenceChess::ListOnlyOwnMove == 1) } {
					lappend skiplist [list $CmailGameName $criterion]
				} else {
					lappend filelist [list $CmailGameName $criterion]
				}
					lappend xfcclist [list $CmailGameName]
			}

			# sort file list by mytime, ascending
			set filelist [lsort -index 1 "$sortmode" $filelist]
			set skiplist [lsort -index 1 "$sortmode" $skiplist]

			::CorrespondenceChess::emptyGamelist
			sc_clipbase clear
			sc_base switch "clipbase"

			# Loop over all files and add all game files that are not
			# Xfcc (ie. eMail chess)
			foreach f [glob -nocomplain [file join $inpath *]] {
				set id [file tail $f]
				regsub -all ".pgn" $id "" id
				if { [lsearch $xfcclist "$id"] < 0 } {
					set filelist [concat $id $filelist]
				}
			}

			# import the games on basis of the sorted list created above
			foreach f $filelist {
				set filename "[file join $inpath [lindex $f 0]].pgn"
				if {[catch {sc_base import file $filename} result]} {
					::CorrespondenceChess::updateConsole "info Error retrieving server response from $filename"
				} else {
					# count the games processed successfully
					set games [expr {$games+1}]
				}
			}

			set glgames $games

			# For Classic sorting: sort the clipbase, this is easier
			# to implement than individual sorting upon import.
			if {$::CorrespondenceChess::ListOrder == $::CorrespondenceChess::CCOrderClassic} {
				set sortCriteria "Site, Event, Round, Result, White, Black"
				progressWindow "Scid" "Sorting the database..."
				set err [catch {sc_base sort $sortCriteria \
										{changeProgressWindow "Sorting..."} \
									 } result]
				closeProgressWindow
			}


			if {$glgames > 0} {
				# work through all games processed and fill in the gamelist 
				# in the console window

				for {set game $glccstart} {$game < [expr {$games+1}]} {incr game} {

					set clockW "no update"; set clockB "no update";
					set var "";             set noDB "";
					set noBK "";            set noTB ""; 
					set noENG "";           set mess ""
					set TC "";              set drawoffer "false";
					set wc "";              set bc "";
					set YM " ? ";

					sc_base switch "clipbase"
					sc_game load $game
					# get the header
					set Event  [sc_game tags get Event]
					set Site   [sc_game tags get Site ]
					set Date   [sc_game tags get Date ]
					set White  [sc_game tags get White]
					set Black  [sc_game tags get Black]
					set Result [sc_game tags get Result]
					set Extra  [sc_game tags get Extra]
					# CmailGameName is an extra header :(
					set extraTagsList [split $Extra "\n"]
					foreach i $extraTagsList {
						if { [string equal -nocase [lindex $i 0] "CmailGameName" ] } {
							set CmailGameName [string range $i 15 end-1]
						}
					}
					#
					# Switch to the real database to retrieve locally
					# stored additions like addresses, countries etc.
					# Disable refresh for SearchGame to speed up the list
					# building considerably
					SearchGame $Event $Site $White $Black $CmailGameName $result 0
					sc_base switch $CorrSlot
					set Extra  [sc_game tags get Extra]
					set extraTagsList [split $Extra "\n"]

					# ... extract it as it contains the unique ID
					foreach i $extraTagsList {
						if { [string equal -nocase [lindex $i 0] "CmailGameName" ] } {
							set CmailGameName [string range $i 15 end-1]
						}
						if { [string equal -nocase [lindex $i 0] "Mode" ] } {
							set Mode [string range $i 6 end-1]
						}
						if { [string equal -nocase [lindex $i 0] "whiteCountry" ] } {
							set wc [string range $i 14 end-1]
							set wc [string tolower $wc]
							set wc "flag_$wc"
						}
						if { [string equal -nocase [lindex $i 0] "blackCountry" ] } {
							set bc [string range $i 14 end-1]
							set bc [string tolower $bc]
							set bc "flag_$bc"
						}
						if { [string equal -nocase [lindex $i 0] "WhiteCountry" ] } {
							set wc [string range $i 14 end-1]
							set wc [string tolower $wc]
							set wc "flag_$wc"
						}
						if { [string equal -nocase [lindex $i 0] "BlackCountry" ] } {
							set bc [string range $i 14 end-1]
							set bc [string tolower $bc]
							set bc "flag_$bc"
						}
						if { [string equal -nocase [lindex $i 0] "TimeControl" ] } {
							set TC [string range $i 13 end-1]
						}
					}
					sc_move end
					set number [sc_pos moveNumber]
					set move   [sc_game info previousMoveNT]
					set side   [sc_pos side]

					if {$side == "white"} {
						set number [expr {$number-1}]
						set lastmove "$number...$move"
					} else {
						set lastmove "$number. $move"
					}
					::CorrespondenceChess::updateConsole "info TC (base): $TC..."

					if {$Mode == "EM"} {
						::CorrespondenceChess::updateGamelist $CmailGameName "EML" \
								$Event $Site $Date $White $Black "" "" "" "" $TC "" "" \
								$wc $bc "" "" $lastmove "false"
					} elseif {$Mode == "Relay"} {
						::CorrespondenceChess::updateGamelist $CmailGameName "REL" \
								$Event $Site $Date $White $Black "" "" "" "" $TC "" "" \
								$wc $bc "" "" $lastmove "false"
					} elseif {$Mode == "Postal"} {
						::CorrespondenceChess::updateGamelist $CmailGameName "POS" \
								$Event $Site $Date $White $Black "" "" "" "" $TC "" "" \
								$wc $bc "" "" $lastmove "false"
					} else {
						# actually check the $xfccstate list for the current
						# values. If it is not set (e.g. only inbox processed
						# buy no current retrieval) set some default values.
							foreach xfccextra $::Xfcc::xfccstate {
							if { [string equal -nocase [lindex $xfccextra 0] "$CmailGameName" ] } {
								foreach i $xfccextra {
									if { [string equal -nocase [lindex $i 0] "myTurn" ] } {
										if {[string range $i 7 end] == "true"} {
											set YM "yes"
										} else {
											set YM "no"
										}
									}
									if { [string equal -nocase [lindex $i 0] "clockW" ] } {
										set clockW [string range $i 7 end]
										regsub -all "\{" $clockW "" clockW
										regsub -all "\}" $clockW "" clockW
									}
									if { [string equal -nocase [lindex $i 0] "clockB" ] } {
										set clockB [string range $i 7 end]
										regsub -all "\{" $clockB "" clockB
										regsub -all "\}" $clockB "" clockB
									}
									if { [string equal -nocase [lindex $i 0] "drawOffered" ] } {
										set drawoffer [string range $i 12 end]
									}
									if { [string equal -nocase [lindex $i 0] "variant" ] } {
										set var [string range $i 8 end]
									}
									if { [string equal -nocase [lindex $i 0] "noDatabases" ] } {
										set noDB [string range $i 12 end]
									}
									if { [string equal -nocase [lindex $i 0] "noOpeningBooks" ] } {
										set noBK [string range $i 15 end]
									}
									if { [string equal -nocase [lindex $i 0] "noTablebases" ] } {
										set noTB [string range $i 13 end]
									}
									if { [string equal -nocase [lindex $i 0] "noEngines" ] } {
										set noENG [string range $i 10 end]
									}
									if { [string equal -nocase [lindex $i 0] "TimeControl" ] } {
										set TC [string range $i 13 end-1]
									}
									if { [string equal -nocase [lindex $i 0] "message" ] } {
										set mess [string range $i 9 end-1]
									}
								}
							}
						}
						if {$Result == "1"} {
							set YM "1-0"
						} elseif {$Result == "0"} {
							set YM "0-1"
						} elseif {$Result == "="} {
							set YM " = "
						}
						::CorrespondenceChess::updateConsole "info TC (xfcc): $TC..."
						::CorrespondenceChess::updateGamelist $CmailGameName $YM \
								$Event $Site $Date $White $Black $clockW $clockB $var \
								$noDB $noBK $noTB $noENG $wc $bc $mess $TC $lastmove $drawoffer
					}
				}
				# ::CorrespondenceChess::num is the game currently shown
				set ::CorrespondenceChess::num 0
				# current game is game 0 -> go to game 1 in the list
				::CorrespondenceChess::NextGame
			} else {
				set Title [::tr CCDlgTitNoGames]
				set Error [::tr CCErrInboxDir]
				append Error "\n   $Inbox\n"
				append Error [::tr CCErrNoGames]
				tk_messageBox -icon warning -type ok -parent . \
					-title $Title -message $Error
			}
		}
		unbusyCursor .
	}

	#----------------------------------------------------------------------
	# Send the move to the opponent via eMail
	# This requires an external MTA that is capable of sending a pgn file
	# as attachement (content-type: application/x-chess-pgn). This can be
	# accomplished by nail with proper /etc/mime.types (default on debian).
	# Additionally the program has to handle SMTP-Auth in all its flavours
	# to be of any use in present days.
	# A stripped version of the game is placed in outbox and sent to the
	# opponent. As nail does not handle empty bodies it is sent as text
	# within the body and once attached for easy extraction with mail
	# programs that do not know a thing about piping.
	# After the mail is sent a full featured version of the pgn is placed
	#----------------------------------------------------------------------
	proc eMailMove { } {
		global ::CorrespondenceChess::Outbox \
			::CorrespondenceChess::mailer  ::CorrespondenceChess::mailermode \
			::CorrespondenceChess::attache ::CorrespondenceChess::subject \
			::CorrespondenceChess::bccaddr ::CorrespondenceChess::CorrSlot
		global emailData
		global windowsOS

		busyCursor .

		# Regardless how the user opend this DB, find it! ;)
		::CorrespondenceChess::CheckForCorrDB

		if {$CorrSlot > -1} {
			# move to end to show the location to send AND to get the right
			# side to move, ie. for the extraction of the correct To: address
			::move::End
			set Event  [sc_game tags get Event]
			set Site   [sc_game tags get Site ]
			set Date   [sc_game tags get Date]
			set Round  [sc_game tags get Round]
			set Result [sc_game tags get Result]
			set White  [sc_game tags get White]
			set Black  [sc_game tags get Black]
			set Extra  [sc_game tags get Extra]
			set Extra  [sc_game tags get Extra]
			set extraTagsList [split $Extra "\n"]

			foreach i $extraTagsList {
				if { [string equal -nocase [lindex $i 0] "CmailGameName" ] } {
					set CmailGameName [string range $i 15 end-1]
				}
				if { [string equal -nocase [lindex $i 0] "WhiteNA" ] } {
					set WhiteNA [string range $i 9 end-1]
				}
				if { [string equal -nocase [lindex $i 0] "BlackNA" ] } {
					set BlackNA [string range $i 9 end-1]
				}
			}

			# construct a PGN in Outbox, stripped bare of comments and variations
			set pgnfile "[file join $Outbox $CmailGameName].pgn"

			sc_base export "current" "PGN" $pgnfile -append 0 -comments 0 -variations 0 \
						-space 1 -symbols 0 -indentC 0 -indentV 0 -column 0 -noMarkCodes 0 -convertNullMoves 1

			# sc_game pgn -gameNumber $i -width 70 -tags 0 -variations 0 -comments 0]

			# try to handle some obscure problem that the file is not
			# existent yet when calling the mailer
			while {! [file exists $pgnfile]} {
				after 1500 puts "waiting..."
			}
			# send the game to the side to move
			set toMove  [sc_pos side]

			if {$toMove == "white"} {
				set to   $WhiteNA
				set from $BlackNA
			} else {
				set from $WhiteNA
				set to   $BlackNA
			}

			# get rid of spaces in names by using Windows internal real names
			if {$windowsOS} {
				catch {set mailer [file attributes $mailer -shortname]}
			}

			set title   "scid mail 1 game ($CmailGameName)"
			set body    "Final FEN: "
			append body [sc_pos fen]
			append body "\n\n"
			append body "Move List: "
			append body [sc_game moves]
			append body "\n\n"

			# Check what calling convention to use:
			# - mailx  : something like mailx, mutt, nail or whatever via
			#            commandline. This sends the mail without further
			#            intervention by the user
			# - mozilla: call a mozilla or descendent like icedove or
			#            thunderbird. This syntax is found somewhere in the
			#            developers docs and almost entirely undocumented
			# - mailurl: the same syntax as for mailto:-links in webpages
			#            (rfc 2368). This calling convention is supported by
			#            evolution
			# -claws   : Claws mailer, seems to be almost mailurl, but needs
			#            a parameter for attachements
			switch -regexp -- $::CorrespondenceChess::mailermode \
			"mailx" {
				set callstring "$mailer $subject \"$title\" -b $bccaddr $attache \"$pgnfile\" $to <\"$pgnfile\""
			} \
			"mozilla" {
				if {$windowsOS} {
					set callstring "$mailer -compose subject='$title',bcc=$bccaddr,attachment='file:///$pgnfile',to=$to,body=$body"
				} else {
					set callstring "$mailer -compose subject='$title',bcc=$bccaddr,attachment='file://$pgnfile',to='$to',body='$body'"
				}
			} \
			"mailurl" {
				set callstring "$mailer \'mailto:\<$to\>?bcc=$bccaddr\&subject=$title\&attach=$pgnfile\&body=$body\'"
			} \
			"claws" {
				set callstring "$mailer --compose \'mailto:$to?subject=$title&cc=$bccaddr&body=$body\' --attach \"$pgnfile\""
			}
			::CorrespondenceChess::updateConsole "info Calling eMail program: $mailer..."
			CallExternal $callstring

			# Save the game once the move is sent
			set num [sc_game number]
			sc_game save $num

			# Hook up with email manager: search the game in its internal
			# list and add the send flag automatically.
			set done 0
			set idx  0
			foreach dataset $emailData {
				if { [lindex $dataset 0] == $CmailGameName} {
					set done 1
					# add the sent flag and date
					::tools::email::addSentReceived $idx s
				}
				incr idx
			}
		}

		unbusyCursor .
	}

	#----------------------------------------------------------------------
	# Send the move to the opponent via XFCC or eMail
	#----------------------------------------------------------------------
	proc SendMove {resign claimDraw offerDraw acceptDraw } {
		global ::CorrespondenceChess::Outbox
		global ::CorrespondenceChess::XfccSendcmd
		global ::CorrespondenceChess::CorrSlot
		global ::CorrespondenceChess::XfccConfirm 
		global ::CorrespondenceChess::num

		busyCursor .

		::CorrespondenceChess::CheckForCorrDB
		if {$CorrSlot > -1} {
			sc_move end

			set Extra [sc_game tags get Extra]
			set extraTagsList [split $Extra "\n"]

			# ... extract it as it contains the unique ID
			foreach i $extraTagsList {
				if { [string equal -nocase [lindex $i 0] "CmailGameName" ] } {
					set CmailGameName [string range $i 15 end-1]
				}
				if { [string equal -nocase [lindex $i 0] "WhiteAddress" ] } {
					set WhiteAdr [split [string range $i 14 end-1] ";"]
					set WhiteAdr [split [string range $i 14 end-1] ";"]
				}
				if { [string equal -nocase [lindex $i 0] "BlackAddress" ] } {
					set BlackAdr [string range $i 14 end-1]
					set BlackAdr [split [string range $i 14 end-1] ";"]
				}
			}

			set pgnfile "[file join $Outbox $CmailGameName].pgn"

			set IdList    [split $CmailGameName "-"]
			set name      [lindex $IdList 0]
			set gameid    [lindex $IdList 1]
			set movecount [sc_pos moveNumber]
			set move      [sc_game info previousMoveNT]
			set comment   [sc_pos getComment]
			set Event     [sc_game tags get Event]

			# Throw away everything in [] as often as it exists
			# This matches [%ccsnt] as well as scid marker codes
			regsub -all {\[[^\]]*\]} $comment {} comment

			# moveNumber gives the number of the next full move. This is
			# one to high in case of playing black. Note that for this
			# ply it is _white_ to move!
			if {[sc_pos side] == "white"} {
					set movecount [expr {$movecount-1}]
			}

			# Mark the ID background:
			# yellow while sending in progress,
			# green if the move was sent in the
			# current session (ie. without update)
			.ccWindow.bottom.id tag add hlsent$CmailGameName $num.0 [expr {$num+1}].0 
			.ccWindow.bottom.id tag configure hlsent$CmailGameName -background yellow -font font_Bold

			set DlgBoxText "[::tr CCDlgConfirmMoveText]\n\n$name-$gameid:\n\t$movecount. $move\n\t{$comment}"
			if {$resign == 1} {
				set DlgBoxText "$DlgBoxText\n\n[::tr CCResign]"
			} elseif {$acceptDraw == 1} {
				set DlgBoxText "$DlgBoxText\n\n[::tr CCAcceptDraw]"
			} elseif {$offerDraw  == 1} {
				set DlgBoxText "$DlgBoxText\n\n[::tr CCofferDraw]"
			} elseif {$claimDraw  == 1} {
				set DlgBoxText "$DlgBoxText\n\n[::tr CCClaimDraw]"
			}

			set result 0
			if {$::CorrespondenceChess::XfccConfirm == 1} {
				set result [tk_dialog .roDialog "Scid: [tr CCDlgConfirmMove]" \
						$DlgBoxText "" 1 $::tr(Yes) $::tr(No)]
			}
			if {$result == 0} {
				# Go to the last move is important to send the comment for
				# the last move only not the comment for the current game
				# position!

				# If Event = "Email correspondence game"
				# treat it as cmail game that is send by mail, otherwise it is
				# Xfcc and sent accordingly
				set Mode [::CorrespondenceChess::CheckMode]
				if {$Mode == "EM"} {
					eMailMove
				} elseif {$Mode == "XFCC"} {

					if {$::CorrespondenceChess::XfccInternal == 1} {
						# use internal Xfcc-handling
						::Xfcc::ReadConfig $::CorrespondenceChess::xfccrcfile
						::Xfcc::Send $name $gameid $movecount $move $comment \
								$resign $acceptDraw $offerDraw $claimDraw
					} else {
						if {[file executable "$XfccSendcmd"]} {
							set callstring "$XfccSendcmd $Outbox $name $gameid $movecount $move \"$comment\" $resign $claimDraw $offerDraw $acceptDraw &"

							::CorrespondenceChess::updateConsole "info Spawning external send tool $XfccSendcmd..."
							CallExternal $callstring
						}
					}
				} elseif {$Mode == "Postal"} {
					# produce a postcard
				}

				# Save the game once the move is sent
				sc_game save [sc_game number]

				# setting "noMarkCodes" to 1 would drop the timing comments
				# inserted e.g. by SchemingMind. Do not overwrite eMail based
				# games as the mailer might not have sent them and most
				# mailers load the file right before transmission.
				if {!(($Mode == "EM") || ($Mode == "Relay"))} {
					sc_base export "current" "PGN" $pgnfile -append 0 -comments 1 -variations 1 \
								-space 1 -symbols 1 -indentC 0 -indentV 0 -column 0 -noMarkCodes 0 -convertNullMoves 1
				}

				# Everything done, set background to green
				.ccWindow.bottom.id tag configure hlsent$CmailGameName -background green -font font_Bold
			} else {
				# mark games with unconfirmed moves in gray:
				.ccWindow.bottom.id tag configure hlsent$CmailGameName -background gray -font font_Small
			}
		}
		unbusyCursor .
	}

	#- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
	# source the options file to overwrite the above setup

	set scidConfigFiles(correspondence) "correspondence.dat"
	if {[catch {source [scidConfigFile correspondence]} ]} {
	  #::splash::add "Unable to find the options file: [file tail $optionsFile]"
	} else {
	  ::splash::add "Correspondence Chess configuration was found and loaded."
	}

	if {[catch { package require http }]} {
	  ::splash::add "http package not found, disabling internal Xfcc support"
		set XfccInternal -1
	} else {
		::http::config -useragent $::Xfcc::useragent
	}

	if {[catch {package require tdom}]} {
		::splash::add "tDOM package not found, disabling internal Xfcc support"
		set XfccInternal -1
	}

	::CorrespondenceChess::checkInOutbox
	::CorrespondenceChess::checkXfccrc
	::CorrespondenceChess::checkCorrBase
	#- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
}


###
### End of file: Correspondence.tcl
###

# Text for menu names and status bar help messages in English.
# Part of Scid (Shane's Chess Information Database).
#
# Instructions for adding a new language:
#
# (1) Choose a letter code for the language. Currently assigned codes are:
#      E=English, D=Deutsch, F=Francais, S=Spanish, B=Brasil Portuguese,
#      P=Polish, N=Nederlands, W=Swedish, O=Norsk, C=Czech, H=Hungarian,
#      Y=Serbian.
#
# (2) Edit the code below that has the lines "addLanguage ..." and add your
#     new language. The final digit in each line is the index of the
#     letter to underline in the menu, counting from 0 as the first letter.
#
# (3) Copy the section of English menu and help message details below (all
#     the commands that start "menuText E ..." or "helpMsg E ..." or
#     "translate E ...") and change all the "E" letters to the letter you
#     assigned for the new language.
#
# (4) Write the translations. This involves changing anything "in quotes"
#     or {in braces} for the menuText, helpMsg and translate commands.
#
#     A menu command has the format:
#         menuText L tag "Name..." underline {HelpMessage...}
#
#     A status bar help message for a button has the format:
#         helpMsg L tag {HelpMessage...}
#
#     A general word or message translation has the format:
#         translate L tag {message...}
#
#     where "L" is the language letter, "tag" is the name of the menu entry
#     or the button widget name, and "underline" is the index of the letter
#     to underline, counting from zero as the first letter. Two menu entries
#     that appear in the same menu should have a different underlined letter.
#     If in doubt, just make them all "0" and I'll assign sensible underlined
#     letters when your translations are incorporated into Scid.
#
# Additions, corrections? Email: sgh@users.sourceforge.net


addLanguage E English 0

proc setLanguage_E {} {

# File menu:
menuText E File "File" 0
menuText E FileNew "New..." 0 {Create a new Scid database}
menuText E FileOpen "Open..." 0 {Open an existing Scid database}
menuText E FileClose "Close" 0 {Close the active Scid database}
menuText E FileFinder "Finder" 0 {Open the File Finder window}
menuText E FileBookmarks "Bookmarks" 0 {Bookmarks menu (shortcut: Ctrl+B)}
menuText E FileBookmarksAdd "Add Bookmark" 0 \
  {Bookmark the current database game and position}
menuText E FileBookmarksFile "File Bookmark" 0 \
  {File a bookmark for the current game and position}
menuText E FileBookmarksEdit "Edit Bookmarks..." 0 \
  {Edit the bookmarks menus}
menuText E FileBookmarksList "Display Folders as Single List" 0 \
  {Display bookmark folders as a single list, not submenus}
menuText E FileBookmarksSub "Display Folders as Submenus" 0 \
  {Display bookmark folders as submenus, not a single list}
menuText E FileMaint "Maintenance" 0 {Scid database maintenance tools}
menuText E FileMaintWin "Maintenance Window" 0 \
  {Open/close the Scid database maintenance window}
menuText E FileMaintCompact "Compact Database..." 0 \
  {Compact database files, removing deleted games and unused names}
menuText E FileMaintClass "ECO-Classify Games..." 2 \
  {Recompute the ECO code of all games}
menuText E FileMaintSort "Sort Database..." 0 \
  {Sort all games in the database}
menuText E FileMaintDelete "Delete Twin Games..." 0 \
  {Find twin games and set them to be deleted}
menuText E FileMaintTwin "Twin Checker Window" 0 \
  {Open/update the Twin checker window}
menuText E FileMaintName "Name Spelling" 0 {Name editing and spelling tools}
menuText E FileMaintNameEditor "Name Editor" 0 \
  {Open/close the name editor window}
menuText E FileMaintNamePlayer "Spellcheck Player Names..." 11 \
  {Spellcheck player names using the spellcheck file}
menuText E FileMaintNameEvent "Spellcheck Event Names..." 11 \
  {Spellcheck event names using the spellcheck file}
menuText E FileMaintNameSite "Spellcheck Site Names..." 11 \
  {Spellcheck site names using the spellcheck file}
menuText E FileMaintNameRound "Spellcheck Round Names..." 11 \
  {Spellcheck round names using the spellcheck file}
menuText E FileReadOnly "Read-only..." 0 \
  {Treat the current database as read-only, preventing changes}
menuText E FileSwitch "Switch to Database" 0 \
  {Switch to a different opened database}
menuText E FileExit "Exit" 1 {Exit Scid}
menuText E FileMaintFixBase "Repair base" 0 {Try to repair a corrupted base}
  
# Edit menu:
menuText E Edit "Edit" 0
menuText E EditAdd "Add Variation" 0 {Add a variation at this move in the game}
menuText E EditDelete "Delete Variation" 0 {Delete a variation for this move}
menuText E EditFirst "Make First Variation" 5 \
  {Promote a variation to be first in the list}
menuText E EditMain "Promote Variation to Main Line" 21 \
  {Promote a variation to be the main line}
menuText E EditTrial "Try Variation" 0 \
  {Start/stop trial mode, for testing an idea on the board}
menuText E EditStrip "Strip" 2 {Strip comments or variations from this game}
menuText E EditUndo "Undo" 0 {Undo last game change}
menuText E EditStripComments "Comments" 0 \
  {Strip all comments and annotations from this game}
menuText E EditStripVars "Variations" 0 {Strip all variations from this game}
menuText E EditStripBegin "Moves from the beginning" 1 \
  {Strip moves from the beginning of the game}
menuText E EditStripEnd "Moves to the end" 0 \
  {Strip moves to the end of the game}
menuText E EditReset "Empty Clipbase" 0 \
  {Reset the clipbase to be completely empty}
menuText E EditCopy "Copy This Game to Clipbase" 0 \
  {Copy this game to the Clipbase database}
menuText E EditPaste "Paste Last Clipbase Game" 0 \
  {Paste the active Clipbase game here}
menuText E EditPastePGN "Paste Clipboard text as PGN game..." 18 \
  {Interpret the clipboard text as a game in PGN notation and paste it here}
menuText E EditSetup "Setup Start Board..." 0 \
  {Set the start position for this game}
menuText E EditCopyBoard "Copy Position" 6 \
  {Copy the current board in FEN notation to the text selection (clipboard)}
menuText E EditPasteBoard "Paste Start Board" 12 \
  {Set the start board from the current text selection (clipboard)}

# Game menu:
menuText E Game "Game" 0
menuText E GameNew "New Game" 0 \
  {Reset to an empty game, discarding any changes}
menuText E GameFirst "Load First Game" 5 {Load the first filtered game}
menuText E GamePrev "Load Previous Game" 5 {Load the previous filtered game}
menuText E GameReload "Re-Load Current Game" 3 \
  {Reload this game, discarding any changes made}
menuText E GameNext "Load Next Game" 7 {Load the next filtered game}
menuText E GameLast "Load Last Game" 8 {Load the last filtered game}
menuText E GameRandom "Load Random Game" 8 {Load a random filtered game}
menuText E GameNumber "Load Game Number..." 5 \
  {Load a game by entering its number}
menuText E GameReplace "Save: Replace game..." 6 \
  {Save this game, replacing the old version}
menuText E GameAdd "Save: Add New Game..." 6 \
  {Save this game as a new game in the database}
menuText E GameDeepest "Identify Opening" 0 \
  {Goto the deepest game position listed in the ECO book}
menuText E GameGotoMove "Goto Move Number..." 5 \
  {Go to a specified move number in the current game}
menuText E GameNovelty "Find Novelty..." 7 \
  {Find the first move of this game that has not played before}

# Search Menu:
menuText E Search "Search" 0
menuText E SearchReset "Reset Filter" 0 {Reset the filter so all games are included}
menuText E SearchNegate "Negate Filter" 0 {Negate the filter to only include excluded games}
menuText E SearchCurrent "Current Board..." 0 {Search for the current board position}
menuText E SearchHeader "Header..." 0 {Search by Header (player, event, etc) information}
menuText E SearchMaterial "Material/Pattern..." 0 {Search for material or board patterns}
menuText E SearchUsing "Using Search File..." 0 {Search using a SearchOptions file}

# Windows menu:
menuText E Windows "Windows" 0
menuText E WindowsComment "Comment Editor" 0 {Open/close the comment editor}
menuText E WindowsGList "Game List" 0 {Open/close the game list window}
menuText E WindowsPGN "PGN Window" 0 \
  {Open/close the PGN (game notation) window}
menuText E WindowsPList "Player Finder" 2 {Open/close the player finder}
menuText E WindowsTmt "Tournament Finder" 2 {Open/close the tournament finder}
menuText E WindowsSwitcher "Database switcher" 0 \
  {Open/close the Database Switcher window}
menuText E WindowsMaint "Maintenance Window" 0 \
  {Open/close the Maintenance window}
menuText E WindowsECO "ECO Browser" 0 {Open/close the ECO Browser window}
menuText E WindowsRepertoire "Repertoire Editor" 0 \
  {Open/close the opening repertoire editor}
menuText E WindowsStats "Statistics Window" 0 \
  {Open/close the filter statistics window}
menuText E WindowsTree "Tree Window" 0 {Open/close the Tree window}
menuText E WindowsTB "Endgame Tablebase Window" 1 {Open/close the Tablebase window}
menuText E WindowsBook "Book Window" 0 {Open/close the Book window}
menuText E WindowsCorrChess "Correspondence Window" 0 {Open/close the Correspondence window}

# Tools menu:
menuText E Tools "Tools" 0
menuText E ToolsAnalysis "Analysis Engine..." 0 \
  {Start/stop a chess analysis engine}
menuText E ToolsAnalysis2 "Analysis Engine #2..." 17 \
  {Start/stop the 2nd chess analysis engine}
menuText E ToolsCross "Crosstable" 0 {Show tournament crosstable for this game}
menuText E ToolsEmail "Email Manager" 0 {Open/close the email chess manager window}
menuText E ToolsFilterGraph "Rel. Filter Graph" 12 {Open/close the filter graph window for relative values}
menuText E ToolsAbsFilterGraph "Abs. Filter Graph" 7 {Open/close the filter graph window for absolute values}
menuText E ToolsOpReport "Opening Report" 0 {Generate an opening report for the current position}
menuText E ToolsOpenBaseAsTree "Open base as tree..." 0   {Open a base and use it in Tree window}
menuText E ToolsOpenRecentBaseAsTree "Open recent base as tree" 0   {Open a recent base and use it in Tree window}
menuText E ToolsTracker "Piece Tracker"  6 {Open the Piece Tracker window}
menuText E ToolsTraining "Training"  0 {Training tools (tactics, openings,...) }
menuText E ToolsTacticalGame "Tactical game"  0 {Play a game with tactics}
menuText E ToolsSeriousGame "Serious game"  0 {Play a serious game}
menuText E ToolsTrainOpenings "Openings"  0 {Train with a repertoire}
menuText E ToolsTrainReviewGame "Review game"  0 {Guess moves played in a game}
menuText E ToolsTrainTactics "Tactics"  0 {Solve tactics}
menuText E ToolsTrainCalvar "Calculation of variations"  0 {Calculation of variations training}
menuText E ToolsTrainFindBestMove "Find best move"  0 {Find best move}
menuText E ToolsTrainFics "Play on FICS"  0 {Play on freechess.org}
menuText E ToolsBookTuning "Book tuning" 0 {Book tuning}
menuText E ToolsConnectHardware "Connect Hardware" 8 {Connect external hardware}
menuText E ToolsConnectHardwareConfigure "Configure..." 0 {Configure external hardware and connection}
menuText E ToolsConnectHardwareNovagCitrineConnect "Connect Novag Citrine" 8 {Connect Novag Citrine with Scid}
menuText E ToolsConnectHardwareInputEngineConnect "Connect Input Engine" 8 {Connect Input Engine (e.g. DGT board) with Scid}

menuText E ToolsPInfo "Player Information"  0 \
  {Open/update the Player Information window}
menuText E ToolsPlayerReport "Player Report..." 3 \
  {Generate a player report}
menuText E ToolsRating "Rating Graph" 0 \
  {Graph the rating history of the current game players}
menuText E ToolsScore "Score Graph" 0 {Show the score graph window}
menuText E ToolsExpCurrent "Export Current Game" 8 \
  {Write current game to a text file}
menuText E ToolsExpCurrentPGN "Export Game to PGN File..." 15 \
  {Write current game to a PGN file}
menuText E ToolsExpCurrentHTML "Export Game to HTML File..." 15 \
  {Write current game to a HTML file}
menuText E ToolsExpCurrentHTMLJS "Export Game to HTML and JavaScript File..." 15 {Write current game to a HTML and JavaScript file}  
menuText E ToolsExpCurrentLaTeX "Export Game to LaTeX File..." 15 \
  {Write current game to a LaTeX file}
menuText E ToolsExpFilter "Export All Filter Games" 1 \
  {Write all filtered games to a text file}
menuText E ToolsExpFilterPGN "Export Filter to PGN File..." 17 \
  {Write all filtered games to a PGN file}
menuText E ToolsExpFilterHTML "Export Filter to HTML File..." 17 \
  {Write all filtered games to a HTML file}
menuText E ToolsExpFilterHTMLJS "Export Filter to HTML and JavaScript File..." 17 {Write all filtered games to a HTML and JavaScript file}  
menuText E ToolsExpFilterLaTeX "Export Filter to LaTeX File..." 17 \
  {Write all filtered games to a LaTeX file}
menuText E ToolsImportOne "Import One PGN Game..." 0 \
  {Import a game from PGN text}
menuText E ToolsImportFile "Import File of PGN Games..." 7 {Import games from a PGN file}
menuText E ToolsStartEngine1 "Start engine 1" 13  {Start engine 1}
menuText E ToolsStartEngine2 "Start engine 2" 13  {Start engine 2}
menuText E ToolsCaptureBoard "Capture Current Board..." 5  {Save the current board as an image.}

# Play menue
menuText E Play "Play" 0

# --- Correspondence Chess
menuText E CorrespondenceChess "Correspondence Chess" 0 {Functions for eMail and Xfcc based correspondence chess}
menuText E CCConfigure "Configure..." 0 {Configure external tools and general setup}
menuText E CCConfigRelay "Observe games..." 10 {Configure games to be observed}
menuText E CCOpenDB "Open Database..." 0 {Open the default Correspondence database}
menuText E CCRetrieve "Retrieve Games" 0 {Retrieve games via external (Xfcc-)helper}
menuText E CCInbox "Process Inbox" 8 {Process all files in scids Inbox}
menuText E CCSend "Send Move" 0 {Send your move via eMail or external (Xfcc-)helper}

menuText E CCResign "Resign" 1 {Resign (not via eMail)}
menuText E CCClaimDraw "Claim Draw" 6 {Send move and claim a draw (not via eMail)}
menuText E CCOfferDraw "Offer Draw" 1 {Send move and offer a draw (not via eMail)}
menuText E CCAcceptDraw "Accept Draw" 0 {Accept a draw offer (not via eMail)}

menuText E CCNewMailGame "New eMail Game..." 2 {Start a new eMail game}
menuText E CCMailMove "Mail Move..." 0 {Send the move via eMail to the opponent}
menuText E CCGamePage "Game Page..." 0 {Call up the game via the web browser}

# menu in cc window:
menuText E CCEditCopy "Copy Gamelist to Clipbase" 0 {Copy the games as CSV list to clipbase}

#  B    GHiJKL    Q  TUV XYZ

# Options menu:
menuText E Options "Options" 0
menuText E OptionsBoard "Chessboard" 0 {Chess board appearance options}
menuText E OptionsBoardSize "Size" 0 {Change the board size}
menuText E OptionsBoardPieces "Piece Style" 6 {Change the board piece style}
menuText E OptionsBoardColors "Colors..." 0 {Change board colors}
#Klimmek
menuText E OptionsBoardGraphics "Squares..." 0 {Select textures for squares}
translate E OptionsBGW {Select texture for squares}
translate E OptionsBoardGraphicsText {Select graphic files for white and black squares:}
menuText E OptionsBoardNames "My Player Names..." 0 {Edit my player names}
menuText E OptionsExport "Exporting" 0 {Change text export options}
menuText E OptionsFonts "Fonts" 0 {Change fonts}
menuText E OptionsFontsRegular "Regular" 0 {Change the regular font}
menuText E OptionsFontsMenu "Menu" 0 {Change the menu font}
menuText E OptionsFontsSmall "Small" 0 {Change the small font}
menuText E OptionsFontsTiny "Tiny" 0 {Change the tiny font}
menuText E OptionsFontsFixed "Fixed" 0 {Change the fixed-width font}
menuText E OptionsGInfo "Game Information" 0 {Game information options}
menuText E OptionsLanguage "Language" 0 {Select menu language}
menuText E OptionsMovesTranslatePieces "Translate pieces" 0 {Translate first letter of pieces}
menuText E OptionsMovesHighlightLastMove "Highlight last move" 0 {Highlight last move}
menuText E OptionsMovesHighlightLastMoveDisplay "Show" 0 {Display last move Highlight}
menuText E OptionsMovesHighlightLastMoveWidth "Width" 0 {Thickness of line}
menuText E OptionsMovesHighlightLastMoveColor "Color" 0 {Color of line}
menuText E OptionsMoves "Moves" 0 {Move entry options}
menuText E OptionsMovesAsk "Ask Before Replacing Moves" 0 \
  {Ask before overwriting any existing moves}
menuText E OptionsMovesAnimate "Animation Time" 1 \
  {Set the amount of time used to animate moves}
menuText E OptionsMovesDelay "Autoplay Time Delay..." 1 \
  {Set the time delay for autoplay mode}
menuText E OptionsMovesCoord "Coordinate Move Entry" 0 \
  {Accept coordinate-style move entry (e.g. "g1f3")}
menuText E OptionsMovesSuggest "Show Suggested Moves" 0 \
  {Turn on/off move suggestion}
menuText E OptionsShowVarPopup "Show variations window" 0 {Turn on/off the display of a variations window}  
menuText E OptionsMovesSpace "Add spaces after move number" 0 {Add spaces after move number}  
menuText E OptionsMovesKey "Keyboard Completion" 0 \
  {Turn on/off keyboard move auto-completion}
menuText E OptionsMovesShowVarArrows "Show Arrows for Variations" 0 {Turn on/off arrows showing moves in variations}
menuText E OptionsNumbers "Number Format" 0 {Select the number format}
menuText E OptionsStartup "Startup" 3 {Select windows to open at startup}
menuText E OptionsTheme "Theme" 0 {Change look of interface}
menuText E OptionsWindows "Windows" 0 {Window options}
menuText E OptionsWindowsIconify "Auto-Iconify" 5 \
  {Iconify all windows when the main window is iconified}
menuText E OptionsWindowsRaise "Auto-Raise" 5 \
  {Raise certain windows (e.g. progress bars) whenever they are obscured}
menuText E OptionsSounds "Sounds..." 2 {Configure move announcement sounds}
menuText E OptionsWindowsDock "Dock windows" 0 {Dock windows (needs restart)}
menuText E OptionsWindowsSaveLayout "Save layout" 0 {Save layout}
menuText E OptionsWindowsRestoreLayout "Restore layout" 0 {Restore layout}
menuText E OptionsWindowsShowGameInfo "Show game info" 0 {Show game info}
menuText E OptionsWindowsAutoLoadLayout "Auto load first layout" 0 {Auto load first layout at startup}
menuText E OptionsToolbar "Toolbar..." 0 {Configure the main window toolbar}
menuText E OptionsECO "Load ECO File..." 7 {Load the ECO classification file}
menuText E OptionsSpell "Load Spellcheck File..." 11 \
  {Load the Scid spellcheck file}
menuText E OptionsTable "Tablebase Directory..." 10 \
  {Select a tablebase file; all tablebases in its directory will be used}
menuText E OptionsRecent "Recent Files..." 0 {Change the number of recent files displayed in the File menu}
menuText E OptionsBooksDir "Books directory..." 0 {Sets the opening books directory}
menuText E OptionsTacticsBasesDir "Bases directory..." 0 {Sets the tactics (training) bases directory}
menuText E OptionsSave "Save Options" 0 "Save all settable options to the file $::optionsFile"
menuText E OptionsAutoSave "Auto-Save Options on Exit" 0 \
  {Auto-save all options when exiting Scid}

# Help menu:
menuText E Help "Help" 0
menuText E HelpContents "Contents" 0 {Show the help contents page}
menuText E HelpIndex "Index" 0 {Show the help index page}
menuText E HelpGuide "Quick Guide" 0 {Show the quick guide help page}
menuText E HelpHints "Hints" 0 {Show the hints help page}
menuText E HelpContact "Contact Info" 1 {Show the contact information help page}
menuText E HelpTip "Tip of the Day" 0 {Show a useful Scid tip}
menuText E HelpStartup "Startup Window" 0 {Show the startup window}
menuText E HelpAbout "About Scid" 0 {Information about Scid}

# Game info box popup menu:
menuText E GInfoHideNext "Hide Next Move" 0
menuText E GInfoMaterial "Show Material Values" 0
menuText E GInfoFEN "Show FEN" 5
menuText E GInfoMarks "Show Colored Squares and Arrows" 5
menuText E GInfoWrap "Wrap Long Lines" 0
menuText E GInfoFullComment "Show Full Comment" 10
menuText E GInfoPhotos "Show Photos" 5
menuText E GInfoTBNothing "Tablebases: Nothing" 12
menuText E GInfoTBResult "Tablebases: Result Only" 12
menuText E GInfoTBAll "Tablebases: Result and Best Moves" 19
menuText E GInfoDelete "(Un)Delete This Game" 4
menuText E GInfoMark "(Un)Mark This Game" 4
menuText E GInfoInformant "Configure informant values" 0

# Main window buttons:
helpMsg E .main.fbutton.button.start {Go to start of game  (key: Home)}
helpMsg E .main.fbutton.button.end {Go to end of game  (key: End)}
helpMsg E .main.fbutton.button.back {Go back one move  (key: LeftArrow)}
helpMsg E .main.fbutton.button.forward {Go forward one move  (key: RightArrow)}
helpMsg E .main.fbutton.button.intoVar {Move into a variation  (key: v)}
helpMsg E .main.fbutton.button.exitVar {Leave the current variation  (key: z)}
helpMsg E .main.fbutton.button.flip {Rotate board  (key: .)}
helpMsg E .main.fbutton.button.coords {Turn board coordinates on or off  (key: 0)}
helpMsg E .main.fbutton.button.stm {Turn the side-to-move icon on or off}
helpMsg E .main.fbutton.button.autoplay {Autoplay moves  (key: Ctrl+Z)}

# General buttons:
translate E Back {Back}
translate E Browse {Browse}
translate E Cancel {Cancel}
translate E Continue {Continue}
translate E Clear {Clear}
translate E Close {Close}
translate E Contents {Contents}
translate E Defaults {Defaults}
translate E Delete {Delete}
translate E Graph {Graph}
translate E Help {Help}
translate E Import {Import}
translate E Index {Index}
translate E LoadGame {Load Game}
translate E BrowseGame {Browse Game}
translate E MergeGame {Merge Game}
translate E MergeGames {Merge Games}
translate E Preview {Preview}
translate E Revert {Revert}
translate E Save {Save}
translate E Search {Search}
translate E Stop {Stop}
translate E Store {Store}
translate E Update {Update}
translate E ChangeOrient {Change window orientation}
translate E ShowIcons {Show Icons}
translate E None {None}
translate E First {First}
translate E Current {Current}
translate E Last {Last}

# General messages:
translate E game {game}
translate E games {games}
translate E move {move}
translate E moves {moves}
translate E all {all}
translate E Yes {Yes}
translate E No {No}
translate E Both {Both}
translate E King {King}
translate E Queen {Queen}
translate E Rook {Rook}
translate E Bishop {Bishop}
translate E Knight {Knight}
translate E Pawn {Pawn}
translate E White {White}
translate E Black {Black}
translate E Player {Player}
translate E Rating {Rating}
translate E RatingDiff {Rating difference (White - Black)}
translate E AverageRating {Average Rating}
translate E Event {Event}
translate E Site {Site}
translate E Country {Country}
translate E IgnoreColors {Ignore colors}
translate E Date {Date}
translate E EventDate {Event date}
translate E Decade {Decade}
translate E Year {Year}
translate E Month {Month}
translate E Months {January February March April May June July August September October November December}
translate E Days {Sun Mon Tue Wed Thu Fri Sat}
translate E YearToToday {Year to today}
translate E Result {Result}
translate E Round {Round}
translate E Length {Length}
translate E ECOCode {ECO code}
translate E ECO {ECO}
translate E Deleted {Deleted}
translate E SearchResults {Search Results}
translate E OpeningTheDatabase {Opening database}
translate E Database {Database}
translate E Filter {Filter}
translate E noGames {no games}
translate E allGames {all games}
translate E empty {empty}
translate E clipbase {clipbase}
translate E score {score}
translate E StartPos {Start position}
translate E Total {Total}
translate E readonly {read-only}

# Standard error messages:
translate E ErrNotOpen {This is not an open database.}
translate E ErrReadOnly {This database is read-only; it cannot be altered.}
translate E ErrSearchInterrupted {Search was interrupted; results are incomplete.}

# Game information:
translate E twin {twin}
translate E deleted {deleted}
translate E comment {comment}
translate E hidden {hidden}
translate E LastMove {Last move}
translate E NextMove {Next}
translate E GameStart {Start of game}
translate E LineStart {Start of line}
translate E GameEnd {End of game}
translate E LineEnd {End of line}

# Player information:
translate E PInfoAll {Results for <b>all</b> games}
translate E PInfoFilter {Results for <b>filter</b> games}
translate E PInfoAgainst {Results against}
translate E PInfoMostWhite {Most common openings as White}
translate E PInfoMostBlack {Most common openings as Black}
translate E PInfoRating {Rating history}
translate E PInfoBio {Biography}
translate E PInfoEditRatings {Edit Ratings}

# Tablebase information:
translate E Draw {Draw}
translate E stalemate {stalemate}
translate E withAllMoves {with all moves}
translate E withAllButOneMove {with all but one move}
translate E with {with}
translate E only {only}
translate E lose {lose}
translate E loses {loses}
translate E allOthersLose {all others lose}
translate E matesIn {mates in}
translate E hasCheckmated {has checkmated}
translate E longest {longest}
translate E WinningMoves {Winning moves}
translate E DrawingMoves {Drawing moves}
translate E LosingMoves {Losing moves}
translate E UnknownMoves {Unknown-result moves}

# Tip of the day:
translate E Tip {Tip}
translate E TipAtStartup {Tip at startup}

# Tree window menus:
menuText E TreeFile "File" 0
menuText E TreeFileFillWithBase "Fill Cache with base" 0 {Fill the cache file with all games in current base}
menuText E TreeFileFillWithGame "Fill Cache with game" 0 {Fill the cache file with current game in current base}
menuText E TreeFileSetCacheSize "Cache size" 0 {Set the cache size}
menuText E TreeFileCacheInfo "Cache info" 0 {Get info on cache usage}
menuText E TreeFileSave "Save Cache File" 0 {Save the tree cache (.stc) file}
menuText E TreeFileFill "Fill Cache File" 0 \
  {Fill the cache file with common opening positions}
menuText E TreeFileBest "Best Games List" 0 {Show the best tree games list}
menuText E TreeFileGraph "Graph Window" 0 {Show the graph for this tree branch}
menuText E TreeFileCopy "Copy Tree Text to Clipboard" 1 \
  {Copy the tree statisctics to the clipboard}
menuText E TreeFileClose "Close Tree Window" 0 {Close the tree window}
menuText E TreeMask "Mask" 0
menuText E TreeMaskNew "New" 0 {New mask}
menuText E TreeMaskOpen "Open" 0 {Open mask}
menuText E TreeMaskOpenRecent "Open recent" 0 {Open recent mask}
menuText E TreeMaskSave "Save" 0 {Save mask}
menuText E TreeMaskClose "Close" 0 {Close mask}
menuText E TreeMaskFillWithGame "Fill with game" 0 {Fill mask with game}
menuText E TreeMaskFillWithBase "Fill with base" 0 {Fill mask with all games in base}
menuText E TreeMaskInfo "Info" 0 {Show statistics for current mask}
menuText E TreeMaskDisplay "Display mask map" 0 {Show mask data in a tree form}
menuText E TreeMaskSearch "Search" 0 {Search in current mask}
menuText E TreeSort "Sort" 0
menuText E TreeSortAlpha "Alphabetical" 0
menuText E TreeSortECO "ECO Code" 0
menuText E TreeSortFreq "Frequency" 0
menuText E TreeSortScore "Score" 0
menuText E TreeOpt "Options" 0
menuText E TreeOptSlowmode "slow mode" 0 {Slow mode for updates (high accuracy)}
menuText E TreeOptFastmode "Fast mode" 0 {Fast mode for updates (no move transposition)}
menuText E TreeOptFastAndSlowmode "Fast and slow mode" 0 {Fast mode then slow mode for updates}
menuText E TreeOptStartStop "Auto refreshing" 0 {Toggles automatic refreshing of the tree window}
menuText E TreeOptLock "Lock" 0 {Lock/unlock the tree to the current database}
menuText E TreeOptTraining "Training" 0 {Turn on/off tree training mode}
menuText E TreeOptAutosave "Auto-Save Cache File" 0 \
  {Auto-save the cache file when closing the tree window}
menuText E TreeHelp "Help" 0
menuText E TreeHelpTree "Tree Help" 0
menuText E TreeHelpIndex "Help Index" 0
translate E SaveCache {Save Cache}
translate E Training {Training}
translate E LockTree {Lock}
translate E TreeLocked {locked}
translate E TreeBest {Best}
translate E TreeBestGames {Best Tree Games}
# Note: the next message is the tree window title row. After editing it,
# check the tree window to make sure it lines up with the actual columns.
translate E TreeTitleRow \
  {    Move   ECO       Frequency    Score  AvElo Perf AvYear %Draws}
translate E TreeTotal {TOTAL}
translate E DoYouWantToSaveFirst {Do you want to save first}
translate E AddToMask {Add to Mask}
translate E RemoveFromMask {Remove from Mask}
translate E AddThisMoveToMask {Add this move to Mask}
translate E SearchMask {Search in Mask}
translate E DisplayMask {Display Mask}
translate E Nag {Nag code}
translate E Marker {Marker}
translate E Include {Include}
translate E Exclude {Exclude}
translate E MainLine {Main line}
translate E Bookmark {Bookmark}
translate E NewLine {New line}
translate E ToBeVerified {To be verified}
translate E ToTrain {To train}
translate E Dubious {Dubious}
translate E ToRemove {To remove}
translate E NoMarker {No marker}
translate E ColorMarker {Color}
translate E WhiteMark {White}
translate E GreenMark {Green}
translate E YellowMark {Yellow}
translate E BlueMark {Blue}
translate E RedMark {Red}
translate E CommentMove {Comment move}
translate E CommentPosition {Comment position}
translate E AddMoveToMaskFirst {Add move to mask first}
translate E OpenAMaskFileFirst {Open a mask file first}
translate E Positions {Positions}
translate E Moves {Moves}

# Finder window:
menuText E FinderFile "File" 0
menuText E FinderFileSubdirs "Look in Subdirectories" 0
menuText E FinderFileClose "Close File Finder" 0
menuText E FinderSort "Sort" 0
menuText E FinderSortType "Type" 0
menuText E FinderSortSize "Size" 0
menuText E FinderSortMod "Modified" 0
menuText E FinderSortName "Name" 0
menuText E FinderSortPath "Path" 0
menuText E FinderTypes "Types" 0
menuText E FinderTypesScid "Scid Databases" 0
menuText E FinderTypesOld "Old-Format Scid Databases" 0
menuText E FinderTypesPGN "PGN Files" 0
menuText E FinderTypesEPD "EPD Files" 0
menuText E FinderTypesRep "Repertoire Files" 0
menuText E FinderHelp "Help" 0
menuText E FinderHelpFinder "File Finder Help" 0
menuText E FinderHelpIndex "Help Index" 0
translate E FileFinder {File Finder}
translate E FinderDir {Directory}
translate E FinderDirs {Directories}
translate E FinderFiles {Files}
translate E FinderUpDir {up}
translate E FinderCtxOpen {Open}
translate E FinderCtxBackup {Backup}
translate E FinderCtxCopy {Copy}
translate E FinderCtxMove {Move}
translate E FinderCtxDelete {Delete}
 
# Player finder:
menuText E PListFile "File" 0
menuText E PListFileUpdate "Update" 0
menuText E PListFileClose "Close Player Finder" 0
menuText E PListSort "Sort" 0
menuText E PListSortName "Name" 0
menuText E PListSortElo "Elo" 0
menuText E PListSortGames "Games" 0
menuText E PListSortOldest "Oldest" 0
menuText E PListSortNewest "Newest" 2

# Tournament finder:
menuText E TmtFile "File" 0
menuText E TmtFileUpdate "Update" 0
menuText E TmtFileClose "Close Tournament Finder" 0
menuText E TmtSort "Sort" 0
menuText E TmtSortDate "Date" 0
menuText E TmtSortPlayers "Players" 0
menuText E TmtSortGames "Games" 0
menuText E TmtSortElo "Elo" 0
menuText E TmtSortSite "Site" 0
menuText E TmtSortEvent "Event" 1
menuText E TmtSortWinner "Winner" 0
translate E TmtLimit "List Limit"
translate E TmtMeanElo "Mean Elo"
translate E TmtNone "No matching tournaments were found."

# Graph windows:
menuText E GraphFile "File" 0
menuText E GraphFileColor "Save as Color PostScript..." 8
menuText E GraphFileGrey "Save as Greyscale PostScript..." 8
menuText E GraphFileClose "Close Window" 6
menuText E GraphOptions "Options" 0
menuText E GraphOptionsWhite "White" 0
menuText E GraphOptionsBlack "Black" 0
menuText E GraphOptionsBoth "Both" 1
menuText E GraphOptionsPInfo "Player Info player" 0
translate E GraphFilterTitle "Filter Graph: frequency per 1000 games"
translate E GraphAbsFilterTitle "Filter Graph: frequency of the games"
translate E ConfigureFilter "Configure X-Axes for Year, Rating and Moves"
translate E FilterEstimate "Estimate"
translate E TitleFilterGraph "Scid: Filter Graph"

# Analysis window:
translate E AddVariation {Add Variation}
translate E AddAllVariations {Add All Variations}
translate E AddMove {Add Move}
translate E Annotate {Annotate}
translate E ShowAnalysisBoard {Show analysis board}
translate E ShowInfo {Show engine info}
translate E FinishGame {Finish game}
translate E StopEngine {Stop engine}
translate E StartEngine {Start engine}
translate E LockEngine {Lock engine to current position}
translate E AnalysisCommand {Analysis Command}
translate E PreviousChoices {Previous Choices}
translate E AnnotateTime {Set the time between moves in seconds}
translate E AnnotateWhich {Add variations}
translate E AnnotateAll {For moves by both sides}
translate E AnnotateAllMoves {Annotate all moves}
translate E AnnotateWhite {For White moves only}
translate E AnnotateBlack {For Black moves only}
translate E AnnotateBlundersOnly {When game move is a blunder}
translate E AnnotateBlundersOnlyScoreChange {Analysis reports blunder, with score change from/to: }
translate E BlundersThreshold {Threshold}
translate E ScoreAllMoves {Score all moves}
translate E LowPriority {Low CPU Priority}
translate E ClickHereToSeeMoves {Click here to see moves}
translate E ConfigureInformant {Configure Informant}
translate E Informant!? {Interesting move}
translate E Informant? {Poor move}
translate E Informant?? {Blunder}
translate E Informant?! {Dubious move}
translate E Informant+= {White has a slight advantage}
translate E Informant+/- {White has a moderate advantage}
translate E Informant+- {White has a decisive advantage}
translate E Informant++- {The game is considered won}
  
# Book window
translate E Book {Book}
translate E OtherBookMoves {Opponent's book}
translate E OtherBookMovesTooltip {Moves to which the opponent has a reply}

# Analysis Engine open dialog:
translate E EngineList {Analysis Engine List}
translate E EngineName {Name}
translate E EngineCmd {Command}
translate E EngineArgs {Parameters}
translate E EngineDir {Directory}
translate E EngineElo {Elo}
translate E EngineTime {Date}
translate E EngineNew {New}
translate E EngineEdit {Edit}
translate E EngineRequired {Fields in bold are required; others are optional}

# Stats window menus:
menuText E StatsFile "File" 0
menuText E StatsFilePrint "Print to File..." 0
menuText E StatsFileClose "Close Window" 0
menuText E StatsOpt "Options" 0

# PGN window menus:
menuText E PgnFile "File" 0
menuText E PgnFileCopy "Copy Game to Clipboard" 0
menuText E PgnFilePrint "Print to File..." 0
menuText E PgnFileClose "Close PGN Window" 10
menuText E PgnOpt "Display" 0
menuText E PgnOptColor "Color Display" 0
menuText E PgnOptShort "Short (3-line) Header" 0
menuText E PgnOptSymbols "Symbolic Annotations" 1
menuText E PgnOptIndentC "Indent Comments" 0
menuText E PgnOptIndentV "Indent Variations" 7
menuText E PgnOptColumn "Column Style (one move per line)" 1
menuText E PgnOptSpace "Space after Move Numbers" 1
menuText E PgnOptStripMarks "Strip out Colored Square/Arrow Codes" 1
menuText E PgnOptBoldMainLine "Use Bold Text for Main Line Moves" 4
menuText E PgnColor "Colors" 0
menuText E PgnColorHeader "Header..." 0
menuText E PgnColorAnno "Annotations..." 0
menuText E PgnColorComments "Comments..." 0
menuText E PgnColorVars "Variations..." 0
menuText E PgnColorBackground "Background..." 0
menuText E PgnColorMain "Main line..." 0
menuText E PgnColorCurrent "Current move background..." 1
menuText E PgnColorNextMove "Next move background..." 0
menuText E PgnHelp "Help" 0
menuText E PgnHelpPgn "PGN Help" 0
menuText E PgnHelpIndex "Index" 0
translate E PgnWindowTitle {Notation - game %u}

# Crosstable window menus:
menuText E CrosstabFile "File" 0
menuText E CrosstabFileText "Print to Text File..." 9
menuText E CrosstabFileHtml "Print to HTML File..." 9
menuText E CrosstabFileLaTeX "Print to LaTeX File..." 9
menuText E CrosstabFileClose "Close Crosstable Window" 0
menuText E CrosstabEdit "Edit" 0
menuText E CrosstabEditEvent "Event" 0
menuText E CrosstabEditSite "Site" 0
menuText E CrosstabEditDate "Date" 0
menuText E CrosstabOpt "Display" 0
menuText E CrosstabOptAll "All-play-all" 0
menuText E CrosstabOptSwiss "Swiss" 0
menuText E CrosstabOptKnockout "Knockout" 0
menuText E CrosstabOptAuto "Auto" 1
menuText E CrosstabOptAges "Ages in Years" 8
menuText E CrosstabOptNats "Nationalities" 0
menuText E CrosstabOptRatings "Ratings" 0
menuText E CrosstabOptTitles "Titles" 0
menuText E CrosstabOptBreaks "Tie-Break Scores" 4
menuText E CrosstabOptDeleted "Include Deleted Games" 8
menuText E CrosstabOptColors "Colors (Swiss table only)" 0
menuText E CrosstabOptColumnNumbers "Numbered Columns (All-play-all table only)" 2
menuText E CrosstabOptGroup "Group Scores" 0
menuText E CrosstabSort "Sort" 0
menuText E CrosstabSortName "Name" 0
menuText E CrosstabSortRating "Rating" 0
menuText E CrosstabSortScore "Score" 0
menuText E CrosstabColor "Color" 0
menuText E CrosstabColorPlain "Plain Text" 0
menuText E CrosstabColorHyper "Hypertext" 0
menuText E CrosstabHelp "Help" 0
menuText E CrosstabHelpCross "Crosstable Help" 0
menuText E CrosstabHelpIndex "Help Index" 0
translate E SetFilter {Set Filter}
translate E AddToFilter {Add to Filter}
translate E Swiss {Swiss}
translate E Category {Category}

# Opening report window menus:
menuText E OprepFile "File" 0
menuText E OprepFileText "Print to Text File..." 9
menuText E OprepFileHtml "Print to HTML File..." 9
menuText E OprepFileLaTeX "Print to LaTeX File..." 9
menuText E OprepFileOptions "Options..." 0
menuText E OprepFileClose "Close Report Window" 0
menuText E OprepFavorites "Favorites" 1
menuText E OprepFavoritesAdd "Add Report..." 0
menuText E OprepFavoritesEdit "Edit Report Favorites..." 0
menuText E OprepFavoritesGenerate "Generate Reports..." 0
menuText E OprepHelp "Help" 0
menuText E OprepHelpReport "Opening Report Help" 0
menuText E OprepHelpIndex "Help Index" 0

# Repertoire editor:
menuText E RepFile "File" 0
menuText E RepFileNew "New" 0
menuText E RepFileOpen "Open..." 0
menuText E RepFileSave "Save..." 0
menuText E RepFileSaveAs "Save As..." 5
menuText E RepFileClose "Close Window" 0
menuText E RepEdit "Edit" 0
menuText E RepEditGroup "Add Group" 4
menuText E RepEditInclude "Add Include Line" 4
menuText E RepEditExclude "Add Exclude Line" 4
menuText E RepView "View" 0
menuText E RepViewExpand "Expand All Groups" 0
menuText E RepViewCollapse "Collapse All Groups" 0
menuText E RepSearch "Search" 0
menuText E RepSearchAll "All of Repertoire..." 0
menuText E RepSearchDisplayed "Displayed Lines Only..." 0
menuText E RepHelp "Help" 0
menuText E RepHelpRep "Repertoire Help" 0
menuText E RepHelpIndex "Help Index" 0
translate E RepSearch "Repertoire Search"
translate E RepIncludedLines "included lines"
translate E RepExcludedLines "excluded lines"
translate E RepCloseDialog {This repertoire has unsaved changes.

Do you really want to continue and discard the changes you have made?
}

# Header search:
translate E HeaderSearch {Header Search}
translate E EndSideToMove {Side to move at end of game}
translate E GamesWithNoECO {Games with no ECO?}
translate E GameLength {Game length}
translate E FindGamesWith {Find games with flags}
translate E StdStart {Non-standard start}
translate E Promotions {Promotions}
translate E Comments {Comments}
translate E Variations {Variations}
translate E Annotations {Annotations}
translate E DeleteFlag {Delete flag}
translate E WhiteOpFlag {White opening}
translate E BlackOpFlag {Black opening}
translate E MiddlegameFlag {Middlegame}
translate E EndgameFlag {Endgame}
translate E NoveltyFlag {Novelty}
translate E PawnFlag {Pawn structure}
translate E TacticsFlag {Tactics}
translate E QsideFlag {Queenside play}
translate E KsideFlag {Kingside play}
translate E BrilliancyFlag {Brilliancy}
translate E BlunderFlag {Blunder}
translate E UserFlag {User}
translate E PgnContains {PGN contains text}
translate E Annotator {Annotator}
translate E Cmnts {Annotated games only}

# Game list window:
translate E GlistNumber {Number}
translate E GlistWhite {White}
translate E GlistBlack {Black}
translate E GlistWElo {W-Elo}
translate E GlistBElo {B-Elo}
translate E GlistEvent {Event}
translate E GlistSite {Site}
translate E GlistRound {Round}
translate E GlistDate {Date}
translate E GlistYear {Year}
translate E GlistEDate {EventDate}
translate E GlistResult {Result}
translate E GlistLength {Length}
translate E GlistCountry {Country}
translate E GlistECO {ECO}
translate E GlistOpening {Opening}
translate E GlistEndMaterial {End-Material}
translate E GlistDeleted {Deleted}
translate E GlistFlags {Flags}
translate E GlistVars {Variations}
translate E GlistComments {Comments}
translate E GlistAnnos {Annotations}
translate E GlistStart {Start}
translate E GlistGameNumber {Game number}
translate E GlistAverageElo {Average Elo}
translate E GlistRating {Rating}
translate E GlistFindText {Find text}
translate E GlistMoveField {Move}
translate E GlistEditField {Configure}
translate E GlistAddField {Add}
translate E GlistDeleteField {Remove}
translate E GlistWidth {Width}
translate E GlistAlign {Align}
translate E GlistAlignL {Align: left}
translate E GlistAlignR {Align: right}
translate E GlistAlignC {Align: center}
translate E GlistColor {Color}
translate E GlistSep {Separator}
translate E GlistCurrentSep {-- Current --}
translate E GlistNewSort {New}
translate E GlistAddToSort {Add}


# base sorting
translate E GsortSort {Sort...}
translate E GsortDate {Date}
translate E GsortYear {Year}
translate E GsortEvent {Event}
translate E GsortSite {Site}
translate E GsortRound {Round}
translate E GsortWhiteName {White Name}
translate E GsortBlackName {Black Name}
translate E GsortECO {ECO}
translate E GsortResult {Result}
translate E GsortMoveCount {Move Count}
translate E GsortAverageElo {Average Elo}
translate E GsortCountry {Country}
translate E GsortDeleted {Deleted}
translate E GsortEventDate {Event Date}
translate E GsortWhiteElo {White Elo}
translate E GsortBlackElo {Black Elo}
translate E GsortComments {Comments}
translate E GsortVariations {Variations}
translate E GsortNAGs {NAGs}
translate E GsortAscending {Ascending}
translate E GsortDescending {Descending}
translate E GsortAdd {Add}
translate E GsortStore {Store}
translate E GsortLoad {Load}

# menu shown with right mouse button down on game list. 
translate E GlistRemoveThisGameFromFilter  {Remove this game from Filter}
translate E GlistRemoveGameAndAboveFromFilter  {Remove game (and all above it) from Filter}
translate E GlistRemoveGameAndBelowFromFilter  {Remove game (and all below it) from Filter}
translate E GlistDeleteGame {(Un)Delete this game} 
translate E GlistDeleteAllGames {Delete all games in filter} 
translate E GlistUndeleteAllGames {Undelete all games in filter}  
translate E GlistMergeGameInBase {Merge Game in other database}

# Maintenance window:
translate E DatabaseName {Database Name:}
translate E TypeIcon {Type Icon:}
translate E NumOfGames {Games:}
translate E NumDeletedGames {Deleted games:}
translate E NumFilterGames {Games in filter:}
translate E YearRange {Year range:}
translate E RatingRange {Rating range:}
translate E Description {Description}
translate E Flag {Flag}
translate E CustomFlags {Custom flags}
translate E DeleteCurrent {Delete current game}
translate E DeleteFilter {Delete filter games}
translate E DeleteAll {Delete all games}
translate E UndeleteCurrent {Undelete current game}
translate E UndeleteFilter {Undelete filter games}
translate E UndeleteAll {Undelete all games}
translate E DeleteTwins {Delete twin games}
translate E MarkCurrent {Mark current game}
translate E MarkFilter {Mark filter games}
translate E MarkAll {Mark all games}
translate E UnmarkCurrent {Unmark current game}
translate E UnmarkFilter {Unmark filter games}
translate E UnmarkAll {Unmark all games}
translate E Spellchecking {Spell-checking}
translate E Players {Players}
translate E Events {Events}
translate E Sites {Sites}
translate E Rounds {Rounds}
translate E DatabaseOps {Database operations}
translate E ReclassifyGames {ECO-classify games}
translate E CompactDatabase {Compact database}
translate E SortDatabase {Sort database}
translate E AddEloRatings {Add Elo ratings}
translate E AutoloadGame {Autoload game number}
translate E StripTags {Strip PGN tags}
translate E StripTag {Strip tag}
translate E Cleaner {Cleaner}
translate E CleanerHelp {
The Scid Cleaner will perform all the maintenance actions you select from the list below, on the current database.

Current settings in the ECO classification and twin deletion dialogs will apply if you select those functions.
}
translate E CleanerConfirm {
Once Cleaner maintenance is started, it cannot be interrupted!

This may take a long time on a large database, depending on the functions you have selected and their current settings.

Are you sure you want to commence the maintenance functions you selected?
}
# Twinchecker
translate E TwinCheckUndelete {to flip; "u" undeletes both)}
translate E TwinCheckprevPair {Previous pair}
translate E TwinChecknextPair {Next pair}
translate E TwinChecker {Scid: Twin game checker}
translate E TwinCheckTournament {Games in tournament:}
translate E TwinCheckNoTwin {No twin  }
translate E TwinCheckNoTwinfound {No twin was detected for this game.\nTo show twins using this window, you must first use the "Delete twin games..." function. }
translate E TwinCheckTag {Share tags...}
translate E TwinCheckFound1 {Scid found $result twin games}
translate E TwinCheckFound2 { and set their delete flags}
translate E TwinCheckNoDelete {There are no games in this database to delete.}
translate E TwinCriteria1 { Your settings for finding twin games are potentially likely to\ncause non-twin games with similar moves to be marked as twins.}
translate E TwinCriteria2 {It is recommended that if you select "No" for "same moves", you should select "Yes" for the colors, event, site, round, year and month settings.\nDo you want to continue and delete twins anyway? }
translate E TwinCriteria3 {It is recommended that you specify "Yes" for at least two of the "same site", "same round" and "same year" settings.\nDo you want to continue and delete twins anyway?}
translate E TwinCriteriaConfirm {Scid: Confirm twin settings}
translate E TwinChangeTag "Change the following game tags:\n\n"
translate E AllocRatingDescription "This command will use the current spellcheck file to add Elo ratings to games in this database. Wherever a player has no current rating but his/her rating at the time of the game is listed in the spellcheck file, that rating will be added."
translate E RatingOverride "Overwrite existing non-zero ratings?"
translate E AddRatings "Add ratings to:"
translate E AddedRatings {Scid added $r Elo ratings in $g games.}

#Bookmark editor
translate E NewSubmenu "New submenu"

# Comment editor:
translate E AnnotationSymbols  {Annotation Symbols:}
translate E Comment {Comment:}
translate E InsertMark {Insert mark}
translate E InsertMarkHelp {
Insert/remove mark: Select color, type, square.
Insert/remove arrow: Right-click two squares.
}

# Nag buttons in comment editor:
translate E GoodMove {Good move}
translate E PoorMove {Poor move}
translate E ExcellentMove {Excellent move}
translate E Blunder {Blunder}
translate E InterestingMove {Interesting move}
translate E DubiousMove {Dubious move}
translate E WhiteDecisiveAdvantage {White has a decisive advantage}
translate E BlackDecisiveAdvantage {Black has a decisive advantage}
translate E WhiteClearAdvantage {White has a clear advantage}
translate E BlackClearAdvantage {Black has a clear advantage}
translate E WhiteSlightAdvantage {White has a slight advantage}
translate E BlackSlightAdvantage {Black has a slight advantage}
translate E Equality {Equality}
translate E Unclear {Unclear}
translate E Diagram {Diagram}

# Board search:
translate E BoardSearch {Board Search}
translate E FilterOperation {Operation on current filter:}
translate E FilterAnd {AND (Restrict filter)}
translate E FilterOr {OR (Add to filter)}
translate E FilterIgnore {IGNORE (Reset filter)}
translate E SearchType {Search type:}
translate E SearchBoardExact {Exact position (all pieces on same squares)}
translate E SearchBoardPawns {Pawns (same material, all pawns on same squares)}
translate E SearchBoardFiles {Files (same material, all pawns on same files)}
translate E SearchBoardAny {Any (same material, pawns and pieces anywhere)}
translate E SearchInRefDatabase { Search in reference database }
translate E LookInVars {Look in variations}

# Material search:
translate E MaterialSearch {Material Search}
translate E Material {Material}
translate E Patterns {Patterns}
translate E Zero {Zero}
translate E Any {Any}
translate E CurrentBoard {Current Board}
translate E CommonEndings {Common Endings}
translate E CommonPatterns {Common Patterns}
translate E MaterialDiff {Material difference}
translate E squares {squares}
translate E SameColor {Same color}
translate E OppColor {Opposite color}
translate E Either {Either}
translate E MoveNumberRange {Move number range}
translate E MatchForAtLeast {Match for at least}
translate E HalfMoves {half-moves}

# Common endings in material search:
translate E EndingPawns {Pawn endings}
translate E EndingRookVsPawns {Rook vs. Pawn(s)}
translate E EndingRookPawnVsRook {Rook and 1 Pawn vs. Rook}
translate E EndingRookPawnsVsRook {Rook and Pawn(s) vs. Rook}
translate E EndingRooks {Rook vs. Rook endings}
translate E EndingRooksPassedA {Rook vs. Rook endings with a passed a-pawn}
translate E EndingRooksDouble {Double Rook endings}
translate E EndingBishops {Bishop vs. Bishop endings}
translate E EndingBishopVsKnight {Bishop vs. Knight endings}
translate E EndingKnights {Knight vs. Knight endings}
translate E EndingQueens {Queen vs. Queen endings}
translate E EndingQueenPawnVsQueen {Queen and 1 Pawn vs. Queen}
translate E BishopPairVsKnightPair {Two Bishops vs. Two Knights middlegame}

# Common patterns in material search:
translate E PatternWhiteIQP {White IQP}
translate E PatternWhiteIQPBreakE6 {White IQP: d4-d5 break vs. e6}
translate E PatternWhiteIQPBreakC6 {White IQP: d4-d5 break vs. c6}
translate E PatternBlackIQP {Black IQP}
translate E PatternWhiteBlackIQP {White IQP vs. Black IQP}
translate E PatternCoupleC3D4 {White c3+d4 Isolated Pawn Couple}
translate E PatternHangingC5D5 {Black Hanging Pawns on c5 and d5}
translate E PatternMaroczy {Maroczy Center (with Pawns on c4 and e4)}
translate E PatternRookSacC3 {Rook Sacrifice on c3}
translate E PatternKc1Kg8 {O-O-O vs. O-O (Kc1 vs. Kg8)}
translate E PatternKg1Kc8 {O-O vs. O-O-O (Kg1 vs. Kc8)}
translate E PatternLightFian {Light-Square Fianchettos (Bishop-g2 vs. Bishop-b7)}
translate E PatternDarkFian {Dark-Square Fianchettos (Bishop-b2 vs. Bishop-g7)}
translate E PatternFourFian {Four Fianchettos (Bishops on b2,g2,b7,g7)}

# Game saving:
translate E Today {Today}
translate E ClassifyGame {Classify game}

# Setup position:
translate E EmptyBoard {Empty board}
translate E InitialBoard {Initial board}
translate E SideToMove {Side to move}
translate E MoveNumber {Move number}
translate E Castling {Castling}
translate E EnPassantFile {En Passant file}
translate E ClearFen {Clear FEN}
translate E PasteFen {Paste FEN}

translate E SaveAndContinue {Save and continue}
translate E DiscardChangesAndContinue {Discard changes\nand continue}
translate E GoBack {Go back}

# Replace move dialog:
translate E ReplaceMove {Replace move}
translate E AddNewVar {Add new variation}
translate E NewMainLine {New Main Line}
translate E ReplaceMoveMessage {A move already exists here.

You can replace it, discarding all moves after it, or add your move as a new variation.

(You can avoid seeing this message in future by turning off the "Ask before replacing moves" option in the Options:Moves menu.)}

# Make database read-only dialog:
translate E ReadOnlyDialog {If you make this database read-only, no changes will be permitted.
No games can be saved or replaced, and no delete flags can be altered.
Any sorting or ECO-classification results will be temporary.

You can easily make the database writable again, by closing and reopening it.

Do you really want to make this database read-only?}

# Clear game dialog:
translate E ClearGameDialog {This game has been altered.

Do you really want to continue and discard the changes made to it?
}

# Exit dialog:
translate E ExitDialog {Do you really want to exit Scid?}
translate E ExitUnsaved {The following databases have unsaved game changes. If you exit now, these changes will be lost.}

# Import window:
translate E PasteCurrentGame {Paste current game}
translate E ImportHelp1 {Enter or paste a PGN-format game in the frame above.}
translate E ImportHelp2 {Any errors importing the game will be displayed here.}
translate E OverwriteExistingMoves {Overwrite existing moves ?}

# ECO Browser:
translate E ECOAllSections {all ECO sections}
translate E ECOSection {ECO section}
translate E ECOSummary {Summary for}
translate E ECOFrequency {Frequency of subcodes for}

# Opening Report:
translate E OprepTitle {Opening Report}
translate E OprepReport {Report}
translate E OprepGenerated {Generated by}
translate E OprepStatsHist {Statistics and History}
translate E OprepStats {Statistics}
translate E OprepStatAll {All report games}
translate E OprepStatBoth {Both rated}
translate E OprepStatSince {Since}
translate E OprepOldest {Oldest games}
translate E OprepNewest {Newest games}
translate E OprepPopular {Current popularity}
translate E OprepFreqAll {Frequency in all years:   }
translate E OprepFreq1   {In the  1 year  to today: }
translate E OprepFreq5   {In the  5 years to today: }
translate E OprepFreq10  {In the 10 years to today: }
translate E OprepEvery {once every %u games}
translate E OprepUp {up %u%s from all years}
translate E OprepDown {down %u%s from all years}
translate E OprepSame {no change from all years}
translate E OprepMostFrequent {Most frequent players}
translate E OprepMostFrequentOpponents {Most frequent opponents}
translate E OprepRatingsPerf {Ratings and Performance}
translate E OprepAvgPerf {Average ratings and performance}
translate E OprepWRating {White rating}
translate E OprepBRating {Black rating}
translate E OprepWPerf {White performance}
translate E OprepBPerf {Black performance}
translate E OprepHighRating {Games with highest average rating}
translate E OprepTrends {Result Trends}
translate E OprepResults {Result lengths and frequencies}
translate E OprepLength {Game length}
translate E OprepFrequency {Frequency}
translate E OprepWWins {White wins: }
translate E OprepBWins {Black wins: }
translate E OprepDraws {Draws:      }
translate E OprepWholeDB {whole database}
translate E OprepShortest {Shortest wins}
translate E OprepMovesThemes {Moves and Themes}
translate E OprepMoveOrders {Move orders reaching the report position}
translate E OprepMoveOrdersOne \
  {There was only one move order reaching this position:}
translate E OprepMoveOrdersAll \
  {There were %u move orders reaching this position:}
translate E OprepMoveOrdersMany \
  {There were %u move orders reaching this position. The top %u are:}
translate E OprepMovesFrom {Moves from the report position}
translate E OprepMostFrequentEcoCodes {Most frequent ECO codes}
translate E OprepThemes {Positional Themes}
translate E OprepThemeDescription {Frequency of themes in the first %u moves of each game}
translate E OprepThemeSameCastling {Same-side castling}
translate E OprepThemeOppCastling {Opposite castling}
translate E OprepThemeNoCastling {Both Kings uncastled}
translate E OprepThemeKPawnStorm {Kingside pawn storm}
translate E OprepThemeQueenswap {Queens exchanged}
translate E OprepThemeWIQP {White Isolated Queen Pawn}
translate E OprepThemeBIQP {Black Isolated Queen Pawn}
translate E OprepThemeWP567 {White Pawn on 5/6/7th rank}
translate E OprepThemeBP234 {Black Pawn on 2/3/4th rank}
translate E OprepThemeOpenCDE {Open c/d/e file}
translate E OprepTheme1BishopPair {Only one side has Bishop pair}
translate E OprepEndgames {Endgames}
translate E OprepReportGames {Report games}
translate E OprepAllGames    {All games}
translate E OprepEndClass {Material at the end of each game}
translate E OprepTheoryTable {Theory Table}
translate E OprepTableComment {Generated from the %u highest-rated games.}
translate E OprepExtraMoves {Extra note moves in theory table}
translate E OprepMaxGames {Maximum games in theory table}
translate E OprepViewHTML {View HTML}
translate E OprepViewLaTeX {View LaTeX}

# Player Report:
translate E PReportTitle {Player Report}
translate E PReportColorWhite {with the White pieces}
translate E PReportColorBlack {with the Black pieces}
translate E PReportMoves {after %s}
translate E PReportOpenings {Openings}
translate E PReportClipbase {Empty clipbase and copy matching games to it}

# Piece Tracker window:
translate E TrackerSelectSingle {Left mouse button selects this piece.}
translate E TrackerSelectPair {Left mouse button selects this piece; right button also selects its sibling.}
translate E TrackerSelectPawn {Left mouse button selects this pawn; right button selects all 8 pawns.}
translate E TrackerStat {Statistic}
translate E TrackerGames {% games with move to square}
translate E TrackerTime {% time on each square}
translate E TrackerMoves {Moves}
translate E TrackerMovesStart {Enter the move number where tracking should begin.}
translate E TrackerMovesStop {Enter the move number where tracking should stop.}

# Game selection dialogs:
translate E SelectAllGames {All games in the database}
translate E SelectFilterGames {Only games in the filter}
translate E SelectTournamentGames {Only games in the current tournament}
translate E SelectOlderGames {Only older games}

# Delete Twins window:
translate E TwinsNote {To be twins, two games must at least have the same two players, and criteria you can set below. When a pair of twins is found, the shorter game is deleted. Hint: it is best to spellcheck the database before deleting twins, since it improves twin detection. }
translate E TwinsCriteria {Criteria: Twin games must have...}
translate E TwinsWhich {Examine which games}
translate E TwinsColors {Same player colors?}
translate E TwinsEvent {Same event?}
translate E TwinsSite {Same site?}
translate E TwinsRound {Same round?}
translate E TwinsYear {Same year?}
translate E TwinsMonth {Same month?}
translate E TwinsDay {Same day?}
translate E TwinsResult {Same result?}
translate E TwinsECO {Same ECO code?}
translate E TwinsMoves {Same moves?}
translate E TwinsPlayers {Comparing player names:}
translate E TwinsPlayersExact {Exact match}
translate E TwinsPlayersPrefix {First 4 letters only}
translate E TwinsWhen {When deleting twin games}
translate E TwinsSkipShort {Ignore all games under 5 moves long?}
translate E TwinsUndelete {Undelete all games first?}
translate E TwinsSetFilter {Set filter to all deleted twin games?}
translate E TwinsComments {Always keep games with comments?}
translate E TwinsVars {Always keep games with variations?}
translate E TwinsDeleteWhich {Delete which game:}
translate E TwinsDeleteShorter {Shorter game}
translate E TwinsDeleteOlder {Smaller game number}
translate E TwinsDeleteNewer {Larger game number}
translate E TwinsDelete {Delete games}

# Name editor window:
translate E NameEditType {Type of name to edit}
translate E NameEditSelect {Games to edit}
translate E NameEditReplace {Replace}
translate E NameEditWith {with}
translate E NameEditMatches {Matches: Press Ctrl+1 to Ctrl+9 to select}

# Check games window:
translate E CheckGames {Check games}
translate E CheckGamesWhich {Check games}
translate E CheckAll {All games}
translate E CheckSelectFilterGames {Only games in filter}

# Classify window:
translate E Classify {Classify}
translate E ClassifyWhich {ECO-Classify which games}
translate E ClassifyAll {All games (overwrite old ECO codes)}
translate E ClassifyYear {All games played in the last year}
translate E ClassifyMonth {All games played in the last month}
translate E ClassifyNew {Only games with no ECO code yet}
translate E ClassifyCodes {ECO Codes to use}
translate E ClassifyBasic {Basic codes only ("B12", ...)}
translate E ClassifyExtended {Scid extensions ("B12j", ...)}

# Compaction:
translate E NameFile {Name file}
translate E GameFile {Game file}
translate E Names {Names}
translate E Unused {Unused}
translate E SizeKb {Size (kb)}
translate E CurrentState {Current State}
translate E AfterCompaction {After compaction}
translate E CompactNames {Compact name file}
translate E CompactGames {Compact game file}
translate E NoUnusedNames "There are no unused names, so the name file is already fully compacted."
translate E NoUnusedGames "The game file is already fully compacted."
translate E NameFileCompacted {The name file for the database "[file tail [sc_base filename]]" was compacted.}
translate E GameFileCompacted {The game file for the database "[file tail [sc_base filename]]" was compacted.}

# Sorting:
translate E SortCriteria {Criteria}
translate E AddCriteria {Add criteria}
translate E CommonSorts {Common sorts}
translate E Sort {Sort}

# Exporting:
translate E AddToExistingFile {Add games to an existing file?}
translate E ExportComments {Export comments?}
translate E ExportVariations {Export variations?}
translate E IndentComments {Indent comments?}
translate E IndentVariations {Indent variations?}
translate E ExportColumnStyle {Column style (one move per line)?}
translate E ExportSymbolStyle {Symbolic annotation style:}
translate E ExportStripMarks {Strip square/arrow mark codes from comments?}

# Goto game/move dialogs:
translate E LoadGameNumber {Enter the game number to load:}
translate E GotoMoveNumber {Goto move number:}

# Copy games dialog:
translate E CopyGames {Copy games}
translate E CopyConfirm {
 Do you really want to copy
 the [::utils::thousands $nGamesToCopy] filtered games
 in the database "$fromName"
 to the database "$targetName"?
}
translate E CopyErr {Cannot copy games}
translate E CopyErrSource {the source database}
translate E CopyErrTarget {the target database}
translate E CopyErrNoGames {has no games in its filter}
translate E CopyErrReadOnly {is read-only}
translate E CopyErrNotOpen {is not open}

# Colors:
translate E LightSquares {Light squares}
translate E DarkSquares {Dark squares}
translate E SelectedSquares {Selected squares}
translate E SuggestedSquares {Suggested move squares}
translate E WhitePieces {White pieces}
translate E BlackPieces {Black pieces}
translate E WhiteBorder {White border}
translate E BlackBorder {Black border}

# Novelty window:
translate E FindNovelty {Find Novelty}
translate E Novelty {Novelty}
translate E NoveltyInterrupt {Novelty search interrupted}
translate E NoveltyNone {No novelty was found for this game}
translate E NoveltyHelp {
Scid will find the first move of the current game that reaches a position not found in the selected database or in the ECO openings book.
}

# Sounds configuration:
translate E SoundsFolder {Sound Files Folder}
translate E SoundsFolderHelp {The folder should contain the files King.wav, a.wav, 1.wav, etc}
translate E SoundsAnnounceOptions {Move Announcement Options}
translate E SoundsAnnounceNew {Announce new moves as they are made}
translate E SoundsAnnounceForward {Announce moves when moving forward one move}
translate E SoundsAnnounceBack {Announce when retracting or moving back one move}

# Upgrading databases:
translate E Upgrading {Upgrading}
translate E ConfirmOpenNew {
This is an old-format (Scid 3) database that cannot be opened in Scid 4, but a new-format (Scid 4) version has already been created.

Do you want to open the new-format version of the database?
}
translate E ConfirmUpgrade {
This is an old-format (Scid 3) database. A new-format version of the database must be created before it can be used in Scid 4.

Upgrading will create a new version of the database and after that remove the original files.

This may take a while, but it only needs to be done one time. You can cancel if it takes too long.

Do you want to upgrade this database now?
}

# Recent files options:
translate E RecentFilesMenu {Number of recent files in File menu}
translate E RecentFilesExtra {Number of recent files in extra submenu}

# My Player Names options:
translate E MyPlayerNamesDescription {
Enter a list of preferred player names below, one name per line. Wildcards (e.g. "?" for any single character, "*" for any sequence of characters) are permitted.

Every time a game with a player in the list is loaded, the main window chessboard will be rotated if necessary to show the game from that players perspective.
}

#Coach
translate E showblunderexists {show blunder exists}
translate E showblundervalue {show blunder value}
translate E showscore {show score}
translate E coachgame {coach game}
translate E configurecoachgame {Configure tactical game}
translate E configuregame {Game configuration}
translate E Phalanxengine {Phalanx engine}
translate E Coachengine {Coach engine}
translate E difficulty {difficulty}
translate E hard {hard}
translate E easy {easy}
translate E Playwith {Play with}
translate E white {white}
translate E black {black}
translate E both {both}
translate E Play {Play}
translate E Noblunder {No blunder}
translate E blunder {blunder}
translate E Noinfo {-- No info --}
translate E PhalanxOrTogaMissing {Phalanx or Toga not found}
translate E moveblunderthreshold {move is a blunder if loss is greater than}
translate E limitanalysis {limit engine analysis time}
translate E seconds {seconds}
translate E Abort {Abort}
translate E Resume {Resume}
translate E OutOfOpening {Out of opening}
translate E NotFollowedLine {You did not follow the line}
translate E DoYouWantContinue {Do you want yo continue ?}
translate E CoachIsWatching {Coach is watching}
translate E Ponder {Permanent thinking}
translate E LimitELO {Limit ELO strength}
translate E DubiousMovePlayedTakeBack {Dubious move played, do you want to take back ?}
translate E WeakMovePlayedTakeBack {Weak move played, do you want to take back ?}
translate E BadMovePlayedTakeBack {Bad move played, do you want to take back ?}
translate E Iresign {I resign}
translate E yourmoveisnotgood {your move is not good}
translate E EndOfVar {End of variation}
translate E Openingtrainer {Opening trainer}
translate E DisplayCM {Display candidate moves}
translate E DisplayCMValue {Display candidate moves value}
translate E DisplayOpeningStats {Show statistics}
translate E ShowReport {Show report}
translate E NumberOfGoodMovesPlayed {good moves played}
translate E NumberOfDubiousMovesPlayed {dubious moves played}
translate E NumberOfMovesPlayedNotInRepertoire {moves played not in repertoire}
translate E NumberOfTimesPositionEncountered {times position encountered}
translate E PlayerBestMove  {Allow only best moves}
translate E OpponentBestMove {Opponent plays best moves}
translate E OnlyFlaggedLines {Only flagged lines}
translate E resetStats {Reset statistics}
translate E Repertoiretrainingconfiguration {Repertoire training configuration}
translate E Loadingrepertoire {Loading repertoire}
translate E Movesloaded {Moves loaded}
translate E Repertoirenotfound {Repertoire not found}
translate E Openfirstrepertoirewithtype {Open first a repertoire database with icon/type set to the right side}
translate E Movenotinrepertoire {Move not in repertoire}
translate E PositionsInRepertoire {Positions in repertoire}
translate E PositionsNotPlayed {Positions not played}
translate E PositionsPlayed {Positions played}
translate E Success {Success}
translate E DubiousMoves {Dubious moves}
translate E OutOfRepertoire {OutOfRepertoire}
translate E ConfigureTactics {Configure tactics}
translate E ResetScores {Reset scores}
translate E LoadingBase {Loading base}
translate E Tactics {Tactics}
translate E ShowSolution {Show solution}
translate E NextExercise {Next exercise}
translate E PrevExercise {Previous exercise}
translate E StopTraining {Stop training}
translate E Next {Next}
translate E ResettingScore {Resetting score}
translate E LoadingGame {Loading game}
translate E MateFound {Mate found}
translate E BestSolutionNotFound {Best solution NOT found !}
translate E MateNotFound {Mate not found}
translate E ShorterMateExists {Shorter mate exists}
translate E ScorePlayed {Score played}
translate E Expected {expected}
translate E ChooseTrainingBase {Choose training base}
translate E Thinking {Thinking}
translate E AnalyzeDone {Analyze done}
translate E WinWonGame {Win won game}
translate E Lines {Lines}
translate E ConfigureUCIengine {Configure UCI engine}
translate E SpecificOpening {Specific opening}
translate E StartNewGame {Start new game}
translate E FixedLevel {Fixed level}
translate E Opening {Opening}
translate E RandomLevel {Random level}
translate E StartFromCurrentPosition {Start from current position}
translate E FixedDepth {Fixed depth}
translate E Nodes {Nodes}
translate E Depth {Depth}
translate E Time {Time} 
translate E SecondsPerMove {Seconds per move}
translate E Engine {Engine}
translate E TimeMode {Time mode}
translate E TimeBonus {Time + bonus}
translate E TimeMin {min}
translate E TimeSec {sec}
translate E AllExercisesDone {All exercises done}
translate E MoveOutOfBook {Move out of book}
translate E LastBookMove {Last book move}
translate E AnnotateSeveralGames {Annotate several games\nfrom current to :}
translate E FindOpeningErrors {Find opening errors}
translate E MarkTacticalExercises {Mark tactical exercises}
translate E UseBook {Use book}
translate E MultiPV {Multiple variations}
translate E Hash {Hash memory}
translate E OwnBook {Use engine book}
translate E BookFile {Opening book}
translate E AnnotateVariations {Annotate variations}
translate E ShortAnnotations {Short annotations}
translate E addAnnotatorTag {Add annotator tag}
translate E AddScoreToShortAnnotations {Add score to annotations}
translate E Export {Export}
translate E BookPartiallyLoaded {Book partially loaded}
translate E Calvar {Calculation of variations}
translate E ConfigureCalvar {Configuration}
# Opening names used in tacgame.tcl
translate E Reti {Reti}
translate E English {English}
translate E d4Nf6Miscellaneous {1.d4 Nf6 Miscellaneous}
translate E Trompowsky {Trompowsky}
translate E Budapest {Budapest}
translate E OldIndian {Old Indian}
translate E BenkoGambit {Benko Gambit}
translate E ModernBenoni {Modern Benoni}
translate E DutchDefence {Dutch Defence}
translate E Scandinavian {Scandinavian}
translate E AlekhineDefence {Alekhine Defence}
translate E Pirc {Pirc}
translate E CaroKann {Caro-Kann}
translate E CaroKannAdvance {Caro-Kann Advance}
translate E Sicilian {Sicilian}
translate E SicilianAlapin {Sicilian Alapin}
translate E SicilianClosed {Sicilian Closed}
translate E SicilianRauzer {Sicilian Rauzer}
translate E SicilianDragon {Sicilian Dragon}
translate E SicilianScheveningen {Sicilian Scheveningen}
translate E SicilianNajdorf {Sicilian Najdorf}
translate E OpenGame {Open Game}
translate E Vienna {Vienna}
translate E KingsGambit {King's Gambit}
translate E RussianGame {Russian Game}
translate E ItalianTwoKnights {Italian/Two Knights}
translate E Spanish {Spanish}
translate E SpanishExchange {Spanish Exchange}
translate E SpanishOpen {Spanish Open}
translate E SpanishClosed {Spanish Closed}
translate E FrenchDefence {French Defence}
translate E FrenchAdvance {French Advance}
translate E FrenchTarrasch {French Tarrasch}
translate E FrenchWinawer {French Winawer}
translate E FrenchExchange {French Exchange}
translate E QueensPawn {Queen's Pawn}
translate E Slav {Slav}
translate E QGA {QGA}
translate E QGD {QGD}
translate E QGDExchange {QGD Exchange}
translate E SemiSlav {Semi-Slav}
translate E QGDwithBg5 {QGD with Bg5}
translate E QGDOrthodox {QGD Orthodox}
translate E Grunfeld {Grünfeld}
translate E GrunfeldExchange {Grünfeld Exchange}
translate E GrunfeldRussian {Grünfeld Russian}
translate E Catalan {Catalan}
translate E CatalanOpen {Catalan Open}
translate E CatalanClosed {Catalan Closed}
translate E QueensIndian {Queen's Indian}
translate E NimzoIndian {Nimzo-Indian}
translate E NimzoIndianClassical {Nimzo-Indian Classical}
translate E NimzoIndianRubinstein {Nimzo-Indian Rubinstein}
translate E KingsIndian {King's Indian}
translate E KingsIndianSamisch {King's Indian Sämisch}
translate E KingsIndianMainLine {King's Indian Main Line}

# FICS
translate E ConfigureFics {Configure FICS}
translate E FICSGuest {Login as Guest}
translate E FICSServerPort {Server port}
translate E FICSServerAddress {IP Address}
translate E FICSRefresh {Refresh}
translate E FICSTimesealPort {Timeseal port}
translate E FICSSilence {Console filter}
translate E FICSOffers {Offers}
translate E FICSConsole {Console}
translate E FICSGames {Games}
translate E FICSUnobserve {Stop observing game}
translate E FICSProfile {Display your history and profile}
translate E FICSRelayedGames {Relayed games}
translate E FICSFindOpponent {Find opponent}
translate E FICSTakeback {Takeback}
translate E FICSTakeback2 {Takeback 2}
translate E FICSInitTime {Initial time (min)}
translate E FICSIncrement {Increment (sec)}
translate E FICSRatedGame {Rated Game}
translate E FICSAutoColour {automatic}
translate E FICSManualConfirm {confirm manually}
translate E FICSFilterFormula {Filter with formula}
translate E FICSIssueSeek {Issue seek}
translate E FICSChallenge {Challenge}
translate E FICSAccept {accept}
translate E FICSDecline {decline}
translate E FICSColour {Colour}
translate E FICSSend {send}
translate E FICSConnect {Connect}
translate E FICSdefaultuservars {Use default variables}
translate E FICSObserveconfirm {Do you want to observe game}

# Game review
translate E GameReview {Game review}
translate E GameReviewTimeExtended {Time extended}
translate E GameReviewMargin {Error margin}
translate E GameReviewAutoContinue {Auto continue when move is correct}
translate E GameReviewReCalculate {Use extended time}
translate E GameReviewAnalyzingMovePlayedDuringTheGame {Analyzing move played during the game}
translate E GameReviewAnalyzingThePosition {Analyzing the position}
translate E GameReviewEnterYourMove {Enter your move}
translate E GameReviewCheckingYourMove {Checking your move}
translate E GameReviewYourMoveWasAnalyzed {Your move was analyzed}
translate E GameReviewYouPlayedSameMove {You played the same move as in match}
translate E GameReviewScoreOfYourMove {Score of your move}
translate E GameReviewGameMoveScore {Game move's score}
translate E GameReviewEngineScore {Engine's score}
translate E GameReviewYouPlayedLikeTheEngine {You played as good as engine's}
translate E GameReviewNotEngineMoveButGoodMove {Not the engine move, but is also a good move}
translate E GameReviewMoveNotGood {This move is not good, score is}
translate E GameReviewMovesPlayedLike {Moves played like}
translate E GameReviewMovesPlayedEngine {Moves played like engine}

# Correspondence Chess Dialogs:
translate E CCDlgConfigureWindowTitle {Configure Correspondence Chess}
translate E CCDlgCGeneraloptions {General Options}
translate E CCDlgDefaultDB {Default Database:}
translate E CCDlgInbox {Inbox (path):}
translate E CCDlgOutbox {Outbox (path):}
translate E CCDlgXfcc {Xfcc Configuration:}
translate E CCDlgExternalProtocol {External Protocol Handler (e.g. Xfcc)}
translate E CCDlgFetchTool {Fetch Tool:}
translate E CCDlgSendTool {Send Tool:}
translate E CCDlgEmailCommunication {eMail Communication}
translate E CCDlgMailPrg {Mail program:}
translate E CCDlgBCCAddr {(B)CC Address:}
translate E CCDlgMailerMode {Mode:}
translate E CCDlgThunderbirdEg {e.g. Thunderbird, Mozilla Mail, Icedove...}
translate E CCDlgMailUrlEg {e.g. Evolution}
translate E CCDlgClawsEg {e.g Sylpheed Claws}
translate E CCDlgmailxEg {e.g. mailx, mutt, nail...}
translate E CCDlgAttachementPar {Attachment parameter:}
translate E CCDlgInternalXfcc {Use internal Xfcc support}
translate E CCDlgConfirmXfcc {Confirm moves}
translate E CCDlgSubjectPar {Subject parameter:}
translate E CCDlgDeleteBoxes {Empty In-/Outbox}
translate E CCDlgDeleteBoxesText {Do you really want to empty your In- and Outbox folders for Correspondence Chess?\nThis requires a new sync to show the last state of your games.}
translate E CCDlgConfirmMove {Confirm move}
translate E CCDlgConfirmMoveText {If you confirm, the following move and comment will be sent to the server:}
translate E CCDlgDBGameToLong {Inconsistent Mainline}
translate E CCDlgDBGameToLongError {The mainline in your database is longer than the game in your Inbox. If the Inbox contains current games, i.e. right after a sync, some moves were added to the mainline in the database erroneously.

In this case please shorten the mainline to (at max) move
}


translate E CCDlgStartEmail {Start new eMail game}
translate E CCDlgYourName {Your Name:}
translate E CCDlgYourMail {Your eMail Address:}
translate E CCDlgOpponentName {Opponents Name:}
translate E CCDlgOpponentMail {Opponents eMail Address:}
translate E CCDlgGameID {Game ID (unique):}

translate E CCDlgTitNoOutbox {Scid: Correspondence Chess Outbox}
translate E CCDlgTitNoInbox {Scid: Correspondence Chess Inbox}
translate E CCDlgTitNoGames {Scid: No Correspondence Chess Games}
translate E CCErrInboxDir {Correspondence Chess inbox directory:}
translate E CCErrOutboxDir {Correspondence Chess outbox directory:}
translate E CCErrDirNotUsable {does not exist or is not accessible!\nPlease check and correct the settings.}
translate E CCErrNoGames {does not contain any games!\nPlease fetch them first.}

translate E CCDlgTitNoCCDB {Scid: No Correspondence Database}
translate E CCErrNoCCDB {No Database of type 'Correspondence' is opened. Please open one before using correspondence chess functions.}

translate E CCFetchBtn {Fetch games from the server and process the Inbox}
translate E CCPrevBtn {Goto previous game}
translate E CCNextBtn {Goto next game}
translate E CCSendBtn {Send move}
translate E CCEmptyBtn {Empty In- and Outbox}
translate E CCHelpBtn {Help on icons and status indicators.\nFor general Help press F1!}

translate E CCDlgServerName {Server Name:}
translate E CCDlgLoginName  {Login Name:}
translate E CCDlgPassword   {Password:}
translate E CCDlgURL        {Xfcc-URL:}
translate E CCDlgRatingType {Rating Type:}

translate E CCDlgDuplicateGame {Non-unique game ID}
translate E CCDlgDuplicateGameError {This game exists more than once in your database. Please delete all duplicates and compact your game file (File/Maintenance/Compact Database).}

translate E CCDlgSortOption {Sorting:}
translate E CCDlgListOnlyOwnMove {Only games I have the move}
translate E CCOrderClassicTxt {Site, Event, Round, Result, White, Black}
translate E CCOrderMyTimeTxt {My Clock}
translate E CCOrderTimePerMoveTxt {Time per move till next time control}
translate E CCOrderStartDate {Start date}
translate E CCOrderOppTimeTxt {Opponents Clock}

translate E CCDlgConfigRelay {Observe games}
translate E CCDlgConfigRelayHelp {Go to the games page on http://www.iccf-webchess.com and display the game to be observed.  If you see the chessboard copy the URL from your browser to the list below. One URL per line only!\nExample: http://www.iccf-webchess.com/MakeAMove.aspx?id=266452}

# Connect Hardware dialogs
translate E ExtHWConfigConnection {Configure external hardware}
translate E ExtHWPort {Port}
translate E ExtHWEngineCmd {Engine command}
translate E ExtHWEngineParam {Engine parameter}
translate E ExtHWShowButton {Show button}
translate E ExtHWHardware {Hardware}
translate E ExtHWNovag {Novag Citrine}
translate E ExtHWInputEngine {Input Engine}
translate E ExtHWNoBoard {No board}
translate E NovagReferee {Referee}

# Input Engine dialogs
translate E IEConsole {Input Engine Console}
translate E IESending {Moves sent for}
translate E IESynchronise {Synchronise}
translate E IERotate  {Rotate}
translate E IEUnableToStart {Unable to start Input Engine:}


# Calculation of Variations
translate E DoneWithPosition {Done with position}

translate E Board {Board}
translate E showGameInfo {Show game info}
translate E autoResizeBoard {Automatic resize of board}
translate E DockTop {Move to top}
translate E DockBottom {Move to bottom}
translate E DockLeft {Move to left}
translate E DockRight {Move to right}
translate E Undock {Undock}

# Switcher window
translate E ChangeIcon {Change icon...}

}
# end of english.tcl
# catalan.tcl:
# Catalan translation for Scid
# Contributed by Natalia Pares Vives (natalia%paresvives.net)
# Date: 2009-04-07
# Version: 1


addLanguage K Catal 2 

proc setLanguage_K {} {

# File menu:
menuText K File "Arxiu" 0
menuText K FileNew "Nova..." 0 {Crea una nova base de dades Scid buida}
menuText K FileOpen "Obrir..." 1 {Obre una base de dades Scid existent}
menuText K FileClose "Tancar" 0 {Tanca la base de dades Scid activa}
menuText K FileFinder "Visor..." 0 {Obre la finestra del visor d'arxius}
menuText K FileBookmarks "Partides preferides" 0 {Seleccionar partides preferides (Ctrl+B)}
menuText K FileBookmarksAdd "Afegir" 0 \
  {Marca la partida i posici actual de la base de dades}
menuText K FileBookmarksFile "Arxivar" 8 \
  {Arxiva un marcador de la partida i posici actuals}
menuText K FileBookmarksEdit "Editar partides preferides..." 0 \
  {Edita els mens de les partides preferides}
menuText K FileBookmarksList "Mostrar partides preferides" 0 \
  {Mostra les carpetes preferides a una sola llista, sense submens}
menuText K FileBookmarksSub "Mostrar partides marcades amb submens" 0 \
  {Mostrar les carpetes preferides com submens, no a una sola llista}
menuText K FileMaint "Manteniment" 0 \
  {Eines de manteniment de bases de dades Scid}
menuText K FileMaintWin "Finestra de manteniment" 0 \
  {Obre/tanca la finestra de manteniment de bases de dades Scid}
menuText K FileMaintCompact "Compactar base de dades..." 0 \
  {Compacta els arxius de la base de dades, treient-hi partides esborrades i noms sense utilitzar}
menuText K FileMaintClass "Classificar partides per ECO..." 24 \
  {Recalcula el codi ECO de totes les partides}
menuText K FileMaintSort "Ordenar base de dades..." 0 \
  {Ordena totes les partides de la base de dades}
menuText K FileMaintDelete "Esborrar partides duplicades..." 0 \
  {Cerca partides duplicades i les marca per ser esborrades}
menuText K FileMaintTwin "Finestra d'inspecci de duplicades" 11 \
  {Obre/actualiza la finestra d'inspecci de duplicades}
menuText K FileMaintName "Ortografia de noms" 0 {Eines d'ortografia i edici de noms}
menuText K FileMaintNameEditor "Finestra d'edici de noms" 22 \
  {Obre/tanca la finestra d'edici de noms}
menuText K FileMaintNamePlayer "Comprovaci ortogrfica de noms de jugadors..." 39 \
  {Comprovaci ortogrfica de jugadors fent servir un arxiu de comprovaci ortogrfica}
menuText K FileMaintNameEvent "Comprovaci ortogrfica de noms de torneigs..." 39 \
  {Comprovaci ortogrfica de torneigs fent servir l'arxiu de comprovaci ortogrfica}
menuText K FileMaintNameSite "Comprovaci ortogrfica de noms de llocs..." 39 \
  {Comprovaci ortogrfica de llocs fent servir l'arxiu de comprovaci ortogrfica}
menuText K FileMaintNameRound "Comprovaci ortogrfica de rondes..." 28 \
  {Comprovaci ortogrfica de rondes fent servir l'arxiu de comprovaci ortogrfica}
menuText K FileReadOnly "Noms de lectura..." 5 \
  {Tracta la actual base de dades com noms de lectura, prevenint canvis}
menuText K FileSwitch "Canviar de base de dades" 0 \
  {Canvia a una base de dades oberta diferent}
menuText K FileExit "Sortir" 0 {Sortir de Scid}
menuText K FileMaintFixBase "Arreglar base corrupta" 0 {Intenta arreglar una base corrupta}

# Edit menu:
menuText K Edit "Editar" 0
menuText K EditAdd "Afegir variant" 0 \
  {Afegeix una variant amb aquesta jugada a la partida}
menuText K EditDelete "Esborrar variant" 0 {Esborra la variant d'aquesta jugada}
menuText K EditFirst "Convertir a primera variant" 0 \
  {Fa que una variant sigui la primera a la llista}
menuText K EditMain "Variant a lnia principal" 0 \
   {Promou una variant per a que sigui la lnia principal}
menuText K EditTrial "Provar variant" 1 \
  {Inicia/Atura el mode de prova, per a verificar una idea a l'escaquer}
menuText K EditStrip "Eliminar" 2 \
  {Eliminar comentaris o variants d'aquesta partida}
# ====== TODO To be translated ======
menuText K EditUndo "Undo" 0 {Undo last game change}
menuText K EditStripComments "Comentaris" 0 \
  {Treu tots els comentaris i variants d'aquesta partida}
menuText K EditStripVars "Variants" 0 {Treu totes les variants d'aquesta partida}
menuText K EditStripBegin "Jugades des del comenament" 1 \
  {Treu els moviments des del comenament de la partida}
menuText K EditStripEnd "Jugades fins el final" 0 \
  {Treu els moviments fins el final de la partida}
menuText K EditReset "Posa a zero la base de treball" 0 \
  {Posa a zero la base de treball (clipbase) per deixar-la completament buda}
menuText K EditCopy "Copiar aquesta partida a la base de treball" 1 \
  {Copia aquesta partida a la base de treball (clipbase)}
menuText K EditPaste "Pegar l'ltima partida de la base de treball" 2 \
  {Pega al final de la base actual la partida activa de la base de treball (clipbase)}
menuText K EditPastePGN "Pega el text del Clipboard com una partida PGN..." 10 \
  {Interpreta el text de la base de treball (clipbase) com una partida en notaci PGN i la pega}
menuText K EditSetup "Iniciar posici a l'escaquer..." 26 \
  {Inicia una posici a l'escaquer amb la posici de la partida}
menuText K EditCopyBoard "Copiar posici" 8 \
  {Copia l'escaquer actual en notaci FEN a la selecci de text (clipboard)}
menuText K EditPasteBoard "Pegar escaquer inicial" 6 \
  {Posa l'escaquer inicial des de la selecci de text actual (clipboard)}

# Game menu:
menuText K Game "Partida" 0
menuText K GameNew "Nova partida" 0 \
  {Nova partida, descarta canvis de la partida actual}
menuText K GameFirst "Cargar primera partida" 7 {Carga la primera partida filtrada}
menuText K GamePrev "Cargar partida anterior" 16 {Carga la anterior partida filtrada}
menuText K GameReload "Recargar partida actual" 0 \
  {Torna a carregar aquesta partida, descartant qualsevol canvi introdut}
menuText K GameNext "Carga seguent partida " 7 {Carga la seguent partida filtrada}
menuText K GameLast "Cargar ltima partida" 9 {Carga la ltima partida filtrada}
menuText K GameRandom "Cargar partida aleatria" 16 {Carga aleatriamente una partida filtrada}
menuText K GameNumber "Cargar partida nmero..." 3 \
  {Carga una partida possant el seu nmero}
menuText K GameReplace "Salvar: Reemplaa la partida..." 10 \
  {Salva aquesta partida, reemplaant la versi anterior}
menuText K GameAdd "Salvar: Afegir nova partida..." 9 \
  {Enregistra aquesta partida com una nova partida a la base de dades}
menuText K GameDeepest "Identificar obertura" 1 \
  {Va a la posici ms avanada de la partida d'acord amb el llibre ECO}
menuText K GameGotoMove "Anar a la jugada nmero..." 6 \
  {Anar al nmero de jugada especificat dins la partida actual}
menuText K GameNovelty "Trovar Novetat..." 12 \
  {Cerca la primera jugada d'aquesta partida que no s'ha jugat abans}

# Search Menu:
menuText K Search "Cercar" 0
menuText K SearchReset "Posar a zero el filtre" 0 \
  {Posa a zero el filtre per incloure-hi totes les partides}
menuText K SearchNegate "Invertir filtre" 0 \
  {Inverteix el filtre per incloure noms les partides prviament excloses}
menuText K SearchCurrent "Escaquer actual..." 0 \
  {Cerca per la posici actual de l'escaquer}
menuText K SearchHeader "Encapalament..." 0 \
  {Cerca per la informaci de l'encapalament (jugador, torneig, etc)}
menuText K SearchMaterial "Material/Patr..." 0 \
  {Cerca a l'escaquer per material o patr}
menuText K SearchUsing "Fer servir arxiu de recerca..." 0 \
  {Cerca fent servir un arxiu d'opcions de recerca}

# Windows menu:
menuText K Windows "Finestres" 0
menuText K WindowsComment "Editor de comentaris" 0 \
  {Obre/tanca l'editor de comentaris}
menuText K WindowsGList "Llistat de partides" 0 \
  {Obre/tanca la  finestra de llistat de partides}
menuText K WindowsPGN "Finestra PGN" 8 \
  {Obre/tanca la finestra PGN (notaci de partida)}
menuText K WindowsPList "Cercador de jugadors" 2 {Obre/tanca el cercador de jugadors}
menuText K WindowsTmt "Visor de Torneigs" 9 {Obre/tanca el visor de torneigs}
menuText K WindowsSwitcher "Bescanviador de bases de dades" 0 \
  {Obre/tanca la finestra del bescanviador de bases de dades}
menuText K WindowsMaint "Finestra de manteniment" 11 \
  {Obre/tanca la finestra de manteniment}
menuText K WindowsECO "Cercador ECO" 0 {Obre/tanca la finestra del cercador ECO}
menuText K WindowsRepertoire "Editor del repertori" 10 \
  {Obrir/tancar l'editor del repertori d'obertures}
menuText K WindowsStats "Finestra d'estadstiques" 12 \
  {Obre/tanca la finestra d'estadstiques del filtre}
menuText K WindowsTree "Finestra de l'rbre d'Obertures" 6 {Obre/tanca la finestra de l'rbre d'Obertures (Book)}
menuText K WindowsTB "Finestra de Taules de Finals (TBs)" 8 \
  {Obre/tanca la finestra de TBs}
menuText K WindowsBook "Finestra de Llibres d'Obertures" 0 {Obrir/Tancar la finestra de Llibres d'Obertures (Book)}
menuText K WindowsCorrChess "Finestra d'Escacs Postal" 0 {Obrir/Tancar la Finestra d'Escacs Postal}

# Tools menu:
menuText K Tools "Eines" 0
menuText K ToolsAnalysis "Motor d'anlisi..." 0 \
  {Inicia/Atura un motor d'anlisi d'escacs}
menuText K ToolsAnalysis2 "Motor d'anlisi #2..." 18 \
  {Inicia/Atura el segon motor d'anlisi d'escacs}
menuText K ToolsCross "Quadre" 0 {Mostra el Quadre del torneig per aquesta partida}
menuText K ToolsEmail "Gestor d'Emails" 0 \
  {Obre/tanca la finestra del Gestor d'Emails}
menuText K ToolsFilterGraph "Filtre Grfic Rel." 7 \
  {Obre/tanca la finestra del filtre grfic per valors relatius}
menuText K ToolsAbsFilterGraph "Filtre grfic Abs." 7 {Obrir/Tancar la finestra de filtre grfic per valors absoluts}
menuText K ToolsOpReport "Informe d'obertura" 1 \
  {Crea un informe de l'obertura per la posici actual}
menuText K ToolsOpenBaseAsTree "Obrir base com arbre" 0   {Obrir una base i utilitzar-la a la Finestre Arbre (Tree)}
menuText K ToolsOpenRecentBaseAsTree "Obrir base recent com arbre" 0   {Obre una base recent i la utilitza a la Finestra Arbre (Tree)} 
menuText K ToolsTracker "Rastrejadorr de peces"  14 {Obre la finestra del rastrejador de peces}
menuText K ToolsTraining "Entrenament"  0 {Entrenament (tctica, obertures,...}
menuText K ToolsTacticalGame "Partida Tctica"  0 {Jugar una partida tctica}
menuText K ToolsSeriousGame "Partida seriosa"  0 {Jugar una partida seriosa}
menuText K ToolsTrainOpenings "Obertures"  0 {Entrenament amb un repertori}
# ====== TODO To be translated ======
menuText K ToolsTrainReviewGame "Review game"  0 {Guess moves played in a game}
menuText K ToolsTrainTactics "Tctica"  0 {Resoldre problemes de tctica}
menuText K ToolsTrainCalvar "Clcul de variants"  0 {Clcul de variants}
menuText K ToolsTrainFindBestMove "Trobar la millor jugada"  0 {Cerca la millor jugada}
menuText K ToolsTrainFics "Jugar a Internet"  0 {Jugar a freechess.org}
menuText K ToolsBookTuning "Ajustar Llibre d'obertures" 0 {Ajustar Llibre (Book)}
menuText K ToolsConnectHardware "Connectar maquinari" 0 {Connectar maquinari extern}
menuText K ToolsConnectHardwareConfigure "Configuraci" 1 {Configuraci}
menuText K ToolsConnectHardwareNovagCitrineConnect "Connectar Novag" 0 {Connectar Novag}
menuText K ToolsConnectHardwareInputEngineConnect "Connectar dispositiu d'entrada" 0 {Connectar dispositiu d'entrada (com el de DGT) a Scid}
menuText K ToolsPInfo "Informaci del Jugador" 16 \
  {Obrir/actualitzar la finestra d'Informaci del Jugador}
menuText K ToolsPlayerReport "Informe del jugador..." 3 \
  {Crea un informe sobre un jugador}
menuText K ToolsRating "Grfic de l'Elo" 0 \
  {Grfic del historial Elo dels jugadors de la partida actual}
menuText K ToolsScore "Grfic de puntuaci" 1 \
  {Mostra la finestra del grfic de puntuaci}
menuText K ToolsExpCurrent "Exportar la partida actual" 0 \
  {Escriu la partida actual a un arxiu de text}
menuText K ToolsExpCurrentPGN "Exportar la partida a un arxiu PGN..." 33 \
  {Escriu la partida actual a un arxiu PGN}
menuText K ToolsExpCurrentHTML "Exportar la partida a un arxiu HTML..." 33 \
  {Escriu la partida actual a un arxiu HTML}
menuText K ToolsExpCurrentHTMLJS "Exportar la partida a un arxiu HTML i JavaScript..." 15 {Escriu la partida actual a un arxiu HTML i JavaScript} 
menuText K ToolsExpCurrentLaTeX "Exportar la partida a un arxiu LaTeX..." 33 \
  {Escriu la partida actual a un arxiu LaTeX}
menuText K ToolsExpFilter "Exportar totes les partides filtrades" 1 \
  {Escriu totes les partides filtrades a un arxiu de text}
menuText K ToolsExpFilterPGN "Exportar filtre a un arxiu PGN..." 29 \
  {Escriu totes les partides filtrades a un arxiu PGN}
menuText K ToolsExpFilterHTML "Exportar filtre a un arxiu HTML..." 29 \
  {Escriu totes les partides filtrades a un arxiu HTML}
menuText K ToolsExpFilterHTMLJS "Exportar filtre a un arxiu HTML i JavaScript..." 17 {Escriu totes les partides filtrades a un arxiu HTML i JavaScript}  
menuText K ToolsExpFilterLaTeX "Exportar filtre a un arxiu LaTeX..." 29 \
  {Escriu totes les partides filtrades a un arxiu LaTeX}
menuText K ToolsImportOne "Importar una partida PGN..." 0 \
  {Importa una partida de un text PGN}
menuText K ToolsImportFile "Importar un arxiu de partides PGN..." 2 \
  {Importa partides de un arxiu PGN}
menuText K ToolsStartEngine1 "Iniciar motor 1" 0  {Iniciar motor 1}
menuText K ToolsStartEngine2 "Iniciar motor 2" 0  {Iniciar Motor 2}
# ====== TODO To be translated ======
menuText K ToolsCaptureBoard "Capture Current Board..." 0  {Save the current board as an image.}
menuText K Play "Jugar" 0
menuText K CorrespondenceChess "Escacs Postal" 0 {Funcions d'Escacs Postal per a eMail i Xfcc}
menuText K CCConfigure "Configurar..." 0 {Configurar eines externes i Parmetres Generals}
# ====== TODO To be translated ======
menuText K CCConfigRelay "Configure observations..." 10 {Configure games to be observed}
menuText K CCOpenDB "Obrir base de dades..." 0 {Obrir la base per defecte d'Escac Postal}
menuText K CCRetrieve "Recuperar partides" 0 {Recuperar partides via programari extern (Xfcc)}
menuText K CCInbox "Processa Bstia D'Entrada" 0 {Processar tots els registres de la bstia d'entrada (Inbox) d'Scid }
menuText K CCSend "Enviar jugada" 0 {Envia la teva jugada via EMail o amb programari extern (Xfcc)}
menuText K CCResign "Abandonar" 0 {Abandonar}
menuText K CCClaimDraw "Reclamar taules" 0 {Enviar un jugada i reclamar taules}
menuText K CCOfferDraw "Oferir taules" 0 {Enviar un jugada i oferir taules}
menuText K CCAcceptDraw "Acceptar taules" 0 {Acceptar un oferiment de taules}
menuText K CCNewMailGame "Nova partida per email..." 0 {Iniciar una nova partida eMail}
menuText K CCMailMove "Enviar jugada via email..." 0 {Envia la jugada via EMail al contrari}
menuText K CCGamePage "Pgina de la partida..." 0 {Obrir la partida al navegador}
# ====== TODO To be translated ======
menuText K CCEditCopy "Copy Gamelist to Clipbase" 0 {Copy the games as CSV list to clipbase}

# Options menu:
menuText K Options "Opcions" 0
menuText K OptionsBoard "Escaquer" 0 {Opcions sobre l'aspecte de l'escaquer}
menuText K OptionsBoardSize "Tamany de l'escaquer" 0 {Canvia el tamany de l'escaquer}
menuText K OptionsBoardPieces "Estil de peces" 10 \
  {Canvia l'estil de les peces de l'escaquer}
menuText K OptionsBoardColors "Colors..." 0 {Canvia els colors de l'escaquer}
menuText K OptionsBoardGraphics "Casselles..." 0 {Escollir textures per les casselles}
translate K OptionsBGW {Escollir textura per les casselles}
translate K OptionsBoardGraphicsText {Escollir arxiu grfic per casselles blanques i negres}
menuText K OptionsBoardNames "Els meus noms..." 0 {Edita els noms en que pot aparixer un jugador}
menuText K OptionsExport "Exportaci" 0 {Canvia les opciones d'exportaci de text}
menuText K OptionsFonts "Fonts" 0 {Canvia les fonts}
menuText K OptionsFontsRegular "Habitual" 0 {Canvia la font habitual}
menuText K OptionsFontsMenu "Men" 0 {Canvia la font del men}
menuText K OptionsFontsSmall "Petita" 0 {Canvia la font petita}
# ====== TODO To be translated ======
menuText K OptionsFontsTiny "Tiny" 0 {Change the tiny font}
menuText K OptionsFontsFixed "Fixa" 0 {Canvia la amplada de la font a fixa}
menuText K OptionsGInfo "Informaci de la partida" 0 {Informaci de la partida}
menuText K OptionsLanguage "Llenguatge" 0 {Selecciona el llenguatge del programa}
menuText K OptionsMovesTranslatePieces "Tradueix peces" 0 {Tradueix la primera lletra de les peces}
# ====== TODO To be translated ======
menuText K OptionsMovesHighlightLastMove "Highlight last move" 0 {Highlight last move}
# ====== TODO To be translated ======
menuText K OptionsMovesHighlightLastMoveDisplay "Show" 0 {Display last move Highlight}
# ====== TODO To be translated ======
menuText K OptionsMovesHighlightLastMoveWidth "Width" 0 {Thickness of line}
# ====== TODO To be translated ======
menuText K OptionsMovesHighlightLastMoveColor "Color" 0 {Color of line}
menuText K OptionsMoves "Jugades" 0 {Opcions d'entrada de jugades}
menuText K OptionsMovesAsk "Preguntar abans de substituir jugades" 0 \
  {Pregunta abans de sobreescriure qualsevol jugada existent}
menuText K OptionsMovesAnimate "Velocitat d'animaci" 1 \
  {Posa el temps d'animaci entre jugades}
menuText K OptionsMovesDelay "Retard de la jugada automtica..." 0 \
  {Posa el temps de retard per la modalitat de autojugada}
menuText K OptionsMovesCoord "Entrada de jugades per coordenades" 0 \
  {Accepta entrada de jugades pel sistema de "coordenades" ("g1f3")}
menuText K OptionsMovesSuggest "Mostrar suggeriments" 20 \
  {Activa/desactiva el suggeriment de jugades}
menuText K OptionsShowVarPopup "Mostrar finestra de variants" 0 {Activar/Desactivar la finestra de variants}
menuText K OptionsMovesSpace "Afegir espai desprs del nmero de jugada" 0 {Afegir espai desprs del nmero de jugada}  
menuText K OptionsMovesKey "Teclat Intelligent" 0 \
{Activa/desactiva la funci d'autocompletat intelligent de jugades amb teclat}
# ====== TODO To be translated ======
menuText K OptionsMovesShowVarArrows "Show Arrows for Variations" 0 {Turn on/off arrows showing moves in variations}
menuText K OptionsNumbers "Format de nmeros" 11 {Selecciona el format de nmeros}
menuText K OptionsStartup "Inici" 3 {Seleccionar les finestres que s'obren al comenar}
menuText K OptionsTheme "Tema" 0 {Canviar l'aspecte del programari}
menuText K OptionsWindows "Finestres" 0 {Opcions de finestra}
menuText K OptionsWindowsIconify "Autominimitzar" 4 \
  {Minimitza totes les finestres quan la finestra principal es minimitzada}
menuText K OptionsWindowsRaise "Posar automticamente en primer pla" 0 \
  {Fa visibles algunes finestres (ex. barres de progrs) quan estiguin cobertes}
menuText K OptionsSounds "Sons..." 2 {Configura el so d'anunci de les jugades}
menuText K OptionsWindowsDock "Bloqueja finestres" 0 {Bloqueja i agrupa finestres}
menuText K OptionsWindowsSaveLayout "Salvar disposici" 0 {Salvar disposici}
menuText K OptionsWindowsRestoreLayout "Restaurar disposici" 0 {Restaurar disposici}
menuText K OptionsWindowsShowGameInfo "Mostrar informaci de la partida" 0 {Mostrar informaci de la partida}
menuText K OptionsWindowsAutoLoadLayout "Auto cargar primera disposici" 0 {Autocargar primera disposici en comenar}
menuText K OptionsToolbar "Barra d'eines de la finestra principal" 9 \
  {Mostra/amaga la barra d'eines de la finestra principal}
menuText K OptionsECO "Cargar arxiu ECO..." 7 \
  {Cargar l'arxiu de clasificaci ECO}
menuText K OptionsSpell "Cargar arxiu de comprovaci ortogrfica..." 2 \
  {Carga l'arxiu de comprovaci ortogrfica Scid}
menuText K OptionsTable "Directori de les TB...(Taules de finals)" 19 \
  {Selecciona el directori de finals; s'utilitzaran totes les TB d'aquest directori}
menuText K OptionsRecent "Arxius recents..." 9 \
  {Canvia el nombre d'arxius recentes que es mostren al men Arxiu}
menuText K OptionsBooksDir "Carpeta de llibres d'obertures..." 0 {Fixa la carpeta d'els llibres d'obertures (Books)}
menuText K OptionsTacticsBasesDir "Carpeta de bases de dades..." 0 {Fixa la carpeta de la base d'entrenament tctic}
menuText K OptionsSave "Salvar opcions" 0 \
  {Salva totes les opcions a l'arxiu $::optionsFile}
menuText K OptionsAutoSave "Autoguardar opcions en sortir" 0 \
  {Guarda automticament totes les opcions quan es surt de Scid}

# Help menu:
menuText K Help "Ajut" 1
menuText K HelpContents "Continguts" 0 {Mostra la pgina de continguts de l'ajut}
menuText K HelpIndex "Index" 0 {Mostra la pgina ndex de l'ajut}
menuText K HelpGuide "Guia rpida" 0 {Mostra la pgina guia rpida de l'ajut}
menuText K HelpHints "Suggeriments" 1 {Mostra la pgina de suggeriments de l'ajut}
menuText K HelpContact "Informaci de contacte" 15 \
  {Mostra la pgina d'informaci de contacte de l'ajut}
menuText K HelpTip "Suggeriment del dia" 0 {Mostra un prctic suggerimentent de Scid}
menuText K HelpStartup "Finestra d'inici" 0 {Mostra la finestra d'inici}
menuText K HelpAbout "Al voltant de Scid" 10 {Informaci al voltant de Scid}

# Game info box popup menu:
menuText K GInfoHideNext "Ocultar segent jugada" 0
menuText K GInfoMaterial "Mostrar valor del material" 0
menuText K GInfoFEN "Mostrar FEN" 8
menuText K GInfoMarks "Mostrar casselles i fletxes de colors" 29
menuText K GInfoWrap "Dividir lnies llargues" 0
menuText K GInfoFullComment "Mostrar comentaris complets" 8
menuText K GInfoPhotos "Mostrar fotografies" 5
menuText K GInfoTBNothing "TBs: res" 5
menuText K GInfoTBResult  "TBs: noms resultat" 10
menuText K GInfoTBAll "TBs: resultat i millor jugada" 23
menuText K GInfoDelete "(No)Esborrar aquesta partida" 4
menuText K GInfoMark "(No)Marcar aquesta partida" 4
menuText K GInfoInformant "Configurar valors d'informaci" 0

# Main window buttons:
helpMsg K .main.fbutton.button.start {Anar al comenament de la partida  (Tecla: Inici)}
helpMsg K .main.fbutton.button.end {Anar al final de la partida  (Tecla: Fi)}
helpMsg K .main.fbutton.button.back {Anar enrera una jugada  (Tecla: Fletxa esquerra)}
helpMsg K .main.fbutton.button.forward {Anar endavant una jugada  (Tecla: Fletxa dreta)}
helpMsg K .main.fbutton.button.intoVar {Moure's a dins d'una variant  (Tecla rpida: v)}
helpMsg K .main.fbutton.button.exitVar {Sortir de la variant actual  (Tecla rpida: z)}
helpMsg K .main.fbutton.button.flip {Girar escaquer  (Tecla rpida: .)}
helpMsg K .main.fbutton.button.coords {Posar/treure les coordenades de l'escaquer  (Tecla rpida: 0)}
helpMsg K .main.fbutton.button.stm {Activa/Desactiva la icona de Torn de Joc}
helpMsg K .main.fbutton.button.autoplay {Autojugada dels moviments  (Tecla: Ctrl+Z)}

# General buttons:
translate K Back {Enrera}
translate K Browse {Mirar}
translate K Cancel {Cancellar}
translate K Continue {Continuar}
translate K Clear {Netejar}
translate K Close {Tancar}
translate K Contents {Continguts}
translate K Defaults {Per defecte}
translate K Delete {Esborrar}
translate K Graph {Grfic}
translate K Help {Ajut}
translate K Import {Importar}
translate K Index {ndex}
translate K LoadGame {Cargar partida}
translate K BrowseGame {Mirar partida}
translate K MergeGame {Incorporar partida}
translate K MergeGames {Barrejar o fusionar partides}
translate K Preview {Vista prvia}
translate K Revert {Retrocedir}
translate K Save {Salvar}
translate K Search {Cercar}
translate K Stop {Aturar}
translate K Store {Enregistrar}
translate K Update {Actualitzar}
translate K ChangeOrient {Canviar l'orientaci de la finestra}
translate K ShowIcons {Mostra Icones} 
translate K None {Cap}
translate K First {Primera}
translate K Current {Actual}
translate K Last {ltima}

# General messages:
translate K game {partida}
translate K games {partides}
translate K move {jugada}
translate K moves {jugades}
translate K all {tod}
translate K Yes {S}
translate K No {No}
translate K Both {Ambdos}
translate K King {Rei}
translate K Queen {Dama}
translate K Rook {Torre}
translate K Bishop {Alfil}
translate K Knight {Cavall}
translate K Pawn {Pe}
translate K White {Blanques}
translate K Black {Negres}
translate K Player {Jugador}
translate K Rating {Elo}
translate K RatingDiff {Diferncia d'Elo (Blanques - Negres)}
translate K AverageRating {Elo promig}
translate K Event {Torneig}
translate K Site {Lloc}
translate K Country {Pais}
translate K IgnoreColors {Ignorar colors}
translate K Date {Data}
translate K EventDate {Data del torneig}
translate K Decade {Dcada}
translate K Year {Any}
translate K Month {Mes}
translate K Months {gener febrer mar abril maig juny juliol agost setembre octubre novembre desembre}
translate K Days {diu dil dim dic dij div dis}
translate K YearToToday {Any fins avui}
translate K Result {Resultat}
translate K Round {Ronda}
translate K Length {Longitut}
translate K ECOCode {Codi ECO}
translate K ECO {ECO}
translate K Deleted {Esborrar}
translate K SearchResults {Cercar resultats}
translate K OpeningTheDatabase {Obrint base de dades}
translate K Database {Base de dades}
translate K Filter {Filtre}
translate K noGames {no hi ha partides}
translate K allGames {totes les partides}
translate K empty {buida}
translate K clipbase {clipbase}
translate K score {puntuaci}
translate K StartPos {Posici inicial}
translate K Total {Total}
translate K readonly {noms de lectura}

# Standard error messages:
translate K ErrNotOpen {La base de dades no est oberta.}
translate K ErrReadOnly {Aquesta base de dades es noms de lectura; no pot ser modificada.}
translate K ErrSearchInterrupted {Recerca aturada; els resultats den ser incomplets.}

# Game information:
translate K twin {doble}
translate K deleted {esborrades}
translate K comment {comentari}
translate K hidden {ocult}
translate K LastMove {ltima jugada}
translate K NextMove {Seguent}
translate K GameStart {Inici de partida}
translate K LineStart {Inici de lnia}
translate K GameEnd {Final de partida}
translate K LineEnd {Final de lnia}

# Player information:
translate K PInfoAll {Resultats per <b>totes</b> les partides}
translate K PInfoFilter {Resultats per les partides <b>filtrades</b>}
translate K PInfoAgainst {Resultats en contra}
translate K PInfoMostWhite {Obertures ms comuns amb Blanques}
translate K PInfoMostBlack {Obertures ms comuns amb Negres}
translate K PInfoRating {Historial de classificaci}
translate K PInfoBio {Biografia}
translate K PInfoEditRatings {Editar elos}

# Tablebase information:
translate K Draw {Taules}
translate K stalemate {Ofegat}
translate K withAllMoves {amb totes les jugades}
translate K withAllButOneMove {amb totes les jugades menys una}
translate K with {amb}
translate K only {noms}
translate K lose {maneres de perdre}
translate K loses {fa perdre}
translate K allOthersLose {tots les dems perden}
translate K matesIn {mat a}
translate K hasCheckmated {escac i mat}
translate K longest {el mat ms llarg}
translate K WinningMoves {Jugades guanyadores}
translate K DrawingMoves {Jugades per taules}
translate K LosingMoves {Jugades perdedores}
translate K UnknownMoves {Jugades de resultat desconegut}

# Tip of the day:
translate K Tip {Suggeriment}
translate K TipAtStartup {Suggeriment en comenar}

# Tree window mens:
menuText K TreeFile "Arxiu" 0
menuText K TreeFileFillWithBase "Omplir memria cau amb base" 0 {Omplir la memria cau amb totes les partides de la base actual}
menuText K TreeFileFillWithGame "Omplir memria cau amb partida" 0 {Omple la memria cau amb la partida actual de la base actual}
menuText K TreeFileSetCacheSize "Tamany de memria cau" 0 {Estableix el tamany del memria cau}
menuText K TreeFileCacheInfo "Informaci de memria cau" 0 {Informaci i s de la memria cau}
menuText K TreeFileSave "Salvar arxiu memria cau" 0 \
  {Salva l'arxiu memria cau de l'arbre (.stc)}
menuText K TreeFileFill "Construir arbre a la memria cau" 2 \
  {Construir arxiu memria cau amb posiciones d'obertura comunes}
menuText K TreeFileBest "Llista de millors partides" 9 {Mostra la llista de l'arbre amb les millors partides}
menuText K TreeFileGraph "Finestra grfica de l'arbre" 0 \
  {Mostra un grfic per aquesta branca de l'arbre}
menuText K TreeFileCopy "Copiar text de l'arbre al clipboard" 1 \
  {Copiar text de l'arbre al clipboard}
menuText K TreeFileClose "Tancar finestra de l'arbre" 0 \
  {Tancar finestra de l'arbre}
menuText K TreeMask "Mscara" 0
menuText K TreeMaskNew "Nova" 0 {Nova mscara}
menuText K TreeMaskOpen "Obrir" 0 {Obrir mscara}
# ====== TODO To be translated ======
menuText K TreeMaskOpenRecent "Open recent" 0 {Open recent mask}
menuText K TreeMaskSave "Salvar" 0 {Salvar mscara}
menuText K TreeMaskClose "Tancar" 0 {Tancar mscara}
menuText K TreeMaskFillWithGame "Omplir amb partida" 0 {Omple la mscara amb la partida}
menuText K TreeMaskFillWithBase "Omplir amb base" 0 {Omple la mscara amb totes les partides de la base}
menuText K TreeMaskInfo "Info" 0 {Mostra estadstiques per la mscara actual}
# ====== TODO To be translated ======
menuText K TreeMaskDisplay "Display mask map" 0 {Show mask data in a tree form}
# ====== TODO To be translated ======
menuText K TreeMaskSearch "Search" 0 {Search in current mask}
menuText K TreeSort "Ordenar" 0
menuText K TreeSortAlpha "Alfabticament" 0
menuText K TreeSortECO "Per codi ECO" 11
menuText K TreeSortFreq "Per freqencia" 4
menuText K TreeSortScore "Per puntuaci" 4
menuText K TreeOpt "Opcions" 1
menuText K TreeOptSlowmode "Mode Lent" 0 {Jugada lenta per actualitzacions (Alta qualitat)}
menuText K TreeOptFastmode "Mode Rpid" 0 {Jugada rpida per actualitzacions (no trasllada jugades)}
menuText K TreeOptFastAndSlowmode "Mode Rpid i Lent" 0 {Jugada rpida i mode lent per actualitzacions}
menuText K TreeOptStartStop "Auto actualitzat" 0 {Actualizat automtic de la finestra de l'arbre}
menuText K TreeOptLock "Bloquejar" 1 {Bloqueja/desbloqueja l'arbre de la base de dades actual}
menuText K TreeOptTraining "Entrenament" 2 {Activa/desactiva el mode d'entrenament de l'arbre}
menuText K TreeOptAutosave "Autoguardar arxiu memria cau" 0 \
  {Salvar automticamente l'arxiu memria cau quan es tanca la finestra de l'arbre}
menuText K TreeHelp "Ajut" 1
menuText K TreeHelpTree "Ajut de l'arbre" 4
menuText K TreeHelpIndex "ndex de l'ajut" 0
translate K SaveCache {Salvar memria cau}
translate K Training {Entrenament}
translate K LockTree {Bloquejar}
translate K TreeLocked {Bloquejat}
translate K TreeBest {Millor}
translate K TreeBestGames {Millors partides de l'arbre}
# Note: the next message is the tree window title row. After editing it,
# check the tree window to make sure it lines up with the actual columns.
translate K TreeTitleRow \
  {    Movim. ECO       Freqencia   Puntu. EloPm Perf AnyPm %Taules}
translate K TreeTotal {TOTAL}
translate K DoYouWantToSaveFirst {Vols salvar-ho abans}
translate K AddToMask {Afegir a mscara}
translate K RemoveFromMask {Elimina des de la mscara}
translate K AddThisMoveToMask {Afegir aquesta jugada a la Mscara}
# ====== TODO To be translated ======
translate K SearchMask {Search in Mask}
# ====== TODO To be translated ======
translate K DisplayMask {Display Mask}
translate K Nag {Codi Nag}
translate K Marker {Marcador}
translate K Include {Incloure}
translate K Exclude {Excloure}
translate K MainLine {Lnia principal}
translate K Bookmark {Preferida}
translate K NewLine {Lnia nova}
translate K ToBeVerified {Per a verificar}
translate K ToTrain {Per a entrenar}
translate K Dubious {Dubts}
translate K ToRemove {Per a treure}
translate K NoMarker {Sense marcador}
translate K ColorMarker {Color}
translate K WhiteMark {Blanc}
translate K GreenMark {Verd}
translate K YellowMark {Groc}
translate K BlueMark {Blau}
translate K RedMark {Vermell}
translate K CommentMove {Comentar jugada}
translate K CommentPosition {Comentar posici}
translate K AddMoveToMaskFirst {Afegir primer la jugada a la mscara}
translate K OpenAMaskFileFirst {Obrir primer un arxiu de mscara}
translate K Positions {Posicions}
translate K Moves {Jugades}

# Finder window:
menuText K FinderFile "Arxiu" 0
menuText K FinderFileSubdirs "Mirar als subdirectoris" 0
menuText K FinderFileClose "Tanca el visor d'Arxius" 0
menuText K FinderSort "Ordenar" 0
menuText K FinderSortType "Tipus" 0
menuText K FinderSortSize "Tamany" 0
menuText K FinderSortMod "Modificat" 0
menuText K FinderSortName "Nom" 0
menuText K FinderSortPath "Cam" 0
menuText K FinderTypes "Tipus" 0
menuText K FinderTypesScid "Bases de dades Scid" 0
menuText K FinderTypesOld "Bases de dades Scid en format antic" 12
menuText K FinderTypesPGN "Arxius PGN" 9
menuText K FinderTypesEPD "Arxius EPD (llibre)" 0
menuText K FinderTypesRep "Arxius de Repertori" 12
menuText K FinderHelp "Ajut" 1
menuText K FinderHelpFinder "Ajut del visor d'Arxius" 0
menuText K FinderHelpIndex "ndex de l'ajut" 0
translate K FileFinder {Visor d'Arxius}
translate K FinderDir {Directori}
translate K FinderDirs {Directoris}
translate K FinderFiles {Arxius}
translate K FinderUpDir {amunt}
translate K FinderCtxOpen {Obrir}
translate K FinderCtxBackup {Cpia de seguretat (Backup)}
translate K FinderCtxCopy {Cpia}
translate K FinderCtxMove {Jugada}
translate K FinderCtxDelete {Esborrar}

# Player finder:
menuText K PListFile "Arxiu" 0
menuText K PListFileUpdate "Actualitzar" 0
menuText K PListFileClose "Tanca el Cercador de Jugadors" 0
menuText K PListSort "Ordenar" 0
menuText K PListSortName "Nom" 0
menuText K PListSortElo "Elo" 0
menuText K PListSortGames "Partides" 0
menuText K PListSortOldest "Ms antiga" 10
menuText K PListSortNewest "Ms nova" 4

# Tournament finder:
menuText K TmtFile "Arxiu" 0
menuText K TmtFileUpdate "Actualitzar" 0
menuText K TmtFileClose "Tanca el Visor de Torneigs" 0
menuText K TmtSort "Ordenar" 0
menuText K TmtSortDate "Data" 0
menuText K TmtSortPlayers "Jugadors" 0
menuText K TmtSortGames "Partides" 0
menuText K TmtSortElo "Elo" 0
menuText K TmtSortSite "Lloc" 0
menuText K TmtSortEvent "Torneig" 1
menuText K TmtSortWinner "Guanyador" 0
translate K TmtLimit "Lmit de llista"
translate K TmtMeanElo "Promig d'Elo inferior"
translate K TmtNone "No s'han trovat torneig que coincideixin."

# Graph windows:
menuText K GraphFile "Arxiu" 0
menuText K GraphFileColor "Guardar com Postscript Color..." 24
menuText K GraphFileGrey "Guardar com Postscript escala de grisos..." 34
menuText K GraphFileClose "Tancar finestra" 7
menuText K GraphOptions "Opcions" 0
menuText K GraphOptionsWhite "Blanques" 0
menuText K GraphOptionsBlack "Negres" 0
menuText K GraphOptionsBoth "Ambdos" 0
menuText K GraphOptionsPInfo "Opcions informaci jugador" 0
translate K GraphFilterTitle "Filtre grfic: freqencia per 1000 partides"
translate K GraphAbsFilterTitle "Filtre grfic: freqencia de les partides"
translate K ConfigureFilter {Configurar Eix-X per Any, Rating i Jugades}
translate K FilterEstimate "Estimar"
translate K TitleFilterGraph "Scid: Filtre Grfic"

# Analysis window:
translate K AddVariation {Afegir variant}
translate K AddAllVariations {Afegir totes les variants}
translate K AddMove {Afegir jugada}
translate K Annotate {Anotar}
translate K ShowAnalysisBoard {Mostrar escaquer d'anlisi}
translate K ShowInfo {Mostra info del motor}
translate K FinishGame {Finalitzar partida}
translate K StopEngine {Parar motor}
translate K StartEngine {Iniciar motor}
translate K LockEngine {Bloqueja motor en la posici actual}
translate K AnalysisCommand {Direcci d'anlisi}
translate K PreviousChoices {Eleccions prvies}
translate K AnnotateTime {Posar el temps entre jugades a segons}
translate K AnnotateWhich {Afegir variants}
translate K AnnotateAll {Per a jugades dels dos bndols}
translate K AnnotateAllMoves {Anotar totes les jugades}
translate K AnnotateWhite {Noms per jugades de les Blanques}
translate K AnnotateBlack {Noms per jugades de les Negres}
translate K AnnotateBlundersOnly {Quan la jugada de la partida es un error}
translate K AnnotateBlundersOnlyScoreChange {Anlisi informant d'errors, amb canvi de puntuaci des de: }
translate K BlundersThreshold {Marge d'error }
# TODO: Translate
translate K ScoreAllMoves {Score all moves}
translate K LowPriority {Baixa prioritat del processador}
translate K ClickHereToSeeMoves {Clic aqu per veure les jugades}
translate K ConfigureInformant {Configurar informacions}
translate K Informant!? {Jugada interesant}
translate K Informant? {Jugada dolenta}
translate K Informant?? {Desastrosa}
translate K Informant?! {Jugada dubtosa}
translate K Informant+= {Les Blanques tenen un lleuger avantatge}
translate K Informant+/- {Les Blanques tenen avantatge}
translate K Informant+- {Les Blanques tenen un avantatge decisiu}
translate K Informant++- {La partida es considerada com guanyada}
translate K Book {Llibre}
translate K OtherBookMoves {Altres jugades del llibre}
translate K OtherBookMovesTooltip {Jugades a les que el contrari te una respuesta}

# Analysis Engine open dialog:
translate K EngineList {Llista de Motors d'Anlisi}
translate K EngineName {Nom}
translate K EngineCmd {Ordre}
translate K EngineArgs {Parmetres}
translate K EngineDir {Directori}
translate K EngineElo {Elo}
translate K EngineTime {Data}
translate K EngineNew {Nova}
translate K EngineEdit {Editar}
translate K EngineRequired {Els camps en negreta son obligatoris; la resta opcionals}

# Stats window mens:
menuText K StatsFile "Arxiu" 0
menuText K StatsFilePrint "Imprimir a arxiu..." 0
menuText K StatsFileClose "Tancar finestra" 0
menuText K StatsOpt "Opcions" 0

# PGN window mens:
menuText K PgnFile "Arxiu" 0
menuText K PgnFileCopy "Copiar partida al portapapers" 0
menuText K PgnFilePrint "Imprimir a arxiu..." 0
menuText K PgnFileClose "Tancar finestra PGN" 0
menuText K PgnOpt "Presentaci" 0
menuText K PgnOptColor "Color de la presentaci" 0
menuText K PgnOptShort "Encapalament petit (3 lnies)" 13
menuText K PgnOptSymbols "Anotacions simbliques" 0
menuText K PgnOptIndentC "Sangria a comentaris" 0
menuText K PgnOptIndentV "Sangria a variants" 11
menuText K PgnOptColumn "Estil de columna (un jugada per lnia)" 1
menuText K PgnOptSpace "Espai desprs del nmero del jugada" 0
menuText K PgnOptStripMarks "Treure codis de color a cassella/fletxa" 3
menuText K PgnOptBoldMainLine "Utilitzar text en negreta per les jugades principals" 4
menuText K PgnColor "Colors" 1
menuText K PgnColorHeader "Encapalament..." 0
menuText K PgnColorAnno "Annotacions..." 0
menuText K PgnColorComments "Comentaris..." 0
menuText K PgnColorVars "Variants..." 0
menuText K PgnColorBackground "Fons..." 0
menuText K PgnColorMain "Lnia principal..." 0
menuText K PgnColorCurrent "Color de fons de l'ltima jugada..." 1
menuText K PgnColorNextMove "Color de fons de la prxima jugada..." 0
menuText K PgnHelp "Ajut" 1
menuText K PgnHelpPgn "Ajut de PGN" 9
menuText K PgnHelpIndex "ndex de l'ajut" 0
translate K PgnWindowTitle {Planilla - partida %u}

# Crosstable window mens:
menuText K CrosstabFile "Arxiu" 0
menuText K CrosstabFileText "Imprimir a arxiu text..." 20
menuText K CrosstabFileHtml "Imprimir a arxiu HTML..." 20
menuText K CrosstabFileLaTeX "Imprimir a arxiu LaTeX..." 20
menuText K CrosstabFileClose "Tancar finestra de graella" 0
menuText K CrosstabEdit "Editar" 0
menuText K CrosstabEditEvent "Torneig" 0
menuText K CrosstabEditSite "Lloc" 0
menuText K CrosstabEditDate "Data" 0
menuText K CrosstabOpt "Presentaci" 0
menuText K CrosstabOptAll "Tots contra tots" 0
menuText K CrosstabOptSwiss "Sus" 0
menuText K CrosstabOptKnockout "Eliminatria directa" 0
menuText K CrosstabOptAuto "Auto" 0
menuText K CrosstabOptAges "Edat en anys" 1
menuText K CrosstabOptNats "Nacionalitats" 0
menuText K CrosstabOptRatings "Elo" 0
menuText K CrosstabOptTitles "Ttols" 0
menuText K CrosstabOptBreaks "Puntuacions de desempat" 0
menuText K CrosstabOptDeleted "Incluore partides esborrades" 17
menuText K CrosstabOptColors "Colors (noms a la taula d'un Sus)" 0
menuText K CrosstabOptColumnNumbers "Columnes numerades (Noms en la taula tots contra tots)" 11
menuText K CrosstabOptGroup "Grups de classificaci" 0
menuText K CrosstabSort "Ordenar" 0
menuText K CrosstabSortName "Per nom" 4
menuText K CrosstabSortRating "Per Elo" 4
menuText K CrosstabSortScore "Per puntuaci" 4
menuText K CrosstabColor "Color" 2
menuText K CrosstabColorPlain "Text simple" 0
menuText K CrosstabColorHyper "Hipertext" 0
menuText K CrosstabHelp "Ajut" 1
menuText K CrosstabHelpCross "Ajut de Classificaci" 9
menuText K CrosstabHelpIndex "ndex de l'ajut" 0
translate K SetFilter {Posar filtre}
translate K AddToFilter {Afegir al filtre}
translate K Swiss {Sus}
translate K Category {Categora}

# Opening report window mens:
menuText K OprepFile "Arxiu" 0
menuText K OprepFileText "Imprimir a arxiu text..." 20
menuText K OprepFileHtml "Imprimir a arxiu HTML..." 20
menuText K OprepFileLaTeX "Imprimir a arxiu LaTeX..." 20
menuText K OprepFileOptions "Opcions..." 0
menuText K OprepFileClose "Tancar finestra de l'informe d'obertura" 0
menuText K OprepFavorites "Preferits" 1
menuText K OprepFavoritesAdd "Afegir informe..." 0
menuText K OprepFavoritesEdit "Editar informe preferit..." 0
menuText K OprepFavoritesGenerate "Generar informe..." 0
menuText K OprepHelp "Ajut" 1
menuText K OprepHelpReport "Ajut de l'informe de l'obertura" 11
menuText K OprepHelpIndex "ndex de l'ajut" 0

# Repertoire editor:
menuText K RepFile "Arxiu" 0
menuText K RepFileNew "Nova" 0
menuText K RepFileOpen "Obrir..." 0
menuText K RepFileSave "Salvar..." 0
menuText K RepFileSaveAs "Salvar com..." 1
menuText K RepFileClose "Tancar finestra" 0
menuText K RepEdit "Editar" 0
menuText K RepEditGroup "Afegir grup" 7
menuText K RepEditInclude "Afegir lnia inclossa" 13
menuText K RepEditExclude "Afegir lnia exclossa" 13
menuText K RepView "Veure" 0
menuText K RepViewExpand "Expandir tots els grups" 0
menuText K RepViewCollapse "Collapsar tots els grups" 0
menuText K RepSearch "Cercar" 0
menuText K RepSearchAll "Tot el repertori..." 0
menuText K RepSearchDisplayed "Noms les lnies mostrades..." 16
menuText K RepHelp "Ajut" 1
menuText K RepHelpRep "Ajut del repertori" 10
menuText K RepHelpIndex "ndex de l'ajut" 0
translate K RepSearch "Recerca del repertori"
translate K RepIncludedLines "Lnies inclosses"
translate K RepExcludedLines "Lnies exclosses"
translate K RepCloseDialog {Aquest repertori te canvis no enregistrats.

Realment vols continuar i descartar els canvis que has fet?
}

# Header search:
translate K HeaderSearch {Recerca per encapalament}
translate K EndSideToMove {Bndol a moure ver al final de la partida}
translate K GamesWithNoECO {Partides sense ECO?}
translate K GameLength {Duraci:}
translate K FindGamesWith {Trobar partides amb}
translate K StdStart {Inici estandar}
translate K Promotions {Promocions}
translate K Comments {Comentaris}
translate K Variations {Variants}
translate K Annotations {Annotacions}
translate K DeleteFlag {Marques d'esborrat}
translate K WhiteOpFlag {Obertura de les blanques}
translate K BlackOpFlag {Obertura de les negres}
translate K MiddlegameFlag {Mig joc}
translate K EndgameFlag {Finals}
translate K NoveltyFlag {Novetat}
translate K PawnFlag {Estructura de peons}
translate K TacticsFlag {Tctiques}
translate K QsideFlag {Joc de flanc de dama}
translate K KsideFlag {Joc de flanc de rei}
translate K BrilliancyFlag {Genialitat}
translate K BlunderFlag {Error}
translate K UserFlag {Usuari}
translate K PgnContains {PGN cont text}
# ====== TODO To be translated ======
translate K Annotator {Annotator}
# ====== TODO To be translated ======
translate K Cmnts {Annotated games only}

# Game list window:
translate K GlistNumber {Nmero}
translate K GlistWhite {Blanques}
translate K GlistBlack {Negres}
translate K GlistWElo {Elo-B}
translate K GlistBElo {Elo-N}
translate K GlistEvent {Torneig}
translate K GlistSite {Lloc}
translate K GlistRound {Ronda}
translate K GlistDate {Data}
translate K GlistYear {Any}
translate K GlistEDate {Torneig-Data}
translate K GlistResult {Resultat}
translate K GlistLength {Longitud}
translate K GlistCountry {Pais}
translate K GlistECO {ECO}
translate K GlistOpening {Obertura}
translate K GlistEndMaterial {Material final}
translate K GlistDeleted {Esborrat}
translate K GlistFlags {Senyal}
translate K GlistVars {Variants}
translate K GlistComments {Comentaris}
translate K GlistAnnos {Annotacions}
translate K GlistStart {Inici}
translate K GlistGameNumber {Nmero de partida}
# ====== TODO To be translated ======
translate K GlistAverageElo {Average Elo}
# ====== TODO To be translated ======
translate K GlistRating {Rating}
translate K GlistFindText {Trovar text}
translate K GlistMoveField {Jugada}
translate K GlistEditField {Configurar}
translate K GlistAddField {Afegir}
translate K GlistDeleteField {Treure}
translate K GlistWidth {Amplada}
translate K GlistAlign {Alinear}
# ====== TODO To be translated ======
translate K GlistAlignL {Align: left}
# ====== TODO To be translated ======
translate K GlistAlignR {Align: right}
# ====== TODO To be translated ======
translate K GlistAlignC {Align: center}
translate K GlistColor {Color}
translate K GlistSep {Separador}
# ====== TODO To be translated ======
translate K GlistCurrentSep {-- Current --}
# ====== TODO To be translated ======
translate K GlistNewSort {New}
# ====== TODO To be translated ======
translate K GlistAddToSort {Add}
# ====== TODO To be translated ======
translate K GsortSort {Sort...}
# ====== TODO To be translated ======
translate K GsortDate {Date}
# ====== TODO To be translated ======
translate K GsortYear {Year}
# ====== TODO To be translated ======
translate K GsortEvent {Event}
# ====== TODO To be translated ======
translate K GsortSite {Site}
# ====== TODO To be translated ======
translate K GsortRound {Round}
# ====== TODO To be translated ======
translate K GsortWhiteName {White Name}
# ====== TODO To be translated ======
translate K GsortBlackName {Black Name}
# ====== TODO To be translated ======
translate K GsortECO {ECO}
# ====== TODO To be translated ======
translate K GsortResult {Result}
# ====== TODO To be translated ======
translate K GsortMoveCount {Move Count}
# ====== TODO To be translated ======
translate K GsortAverageElo {Average Elo}
# ====== TODO To be translated ======
translate K GsortCountry {Country}
# ====== TODO To be translated ======
translate K GsortDeleted {Deleted}
# ====== TODO To be translated ======
translate K GsortEventDate {Event Date}
# ====== TODO To be translated ======
translate K GsortWhiteElo {White Elo}
# ====== TODO To be translated ======
translate K GsortBlackElo {Black Elo}
# ====== TODO To be translated ======
translate K GsortComments {Comments}
# ====== TODO To be translated ======
translate K GsortVariations {Variations}
# ====== TODO To be translated ======
translate K GsortNAGs {NAGs}
# ====== TODO To be translated ======
translate K GsortAscending {Ascending}
# ====== TODO To be translated ======
translate K GsortDescending {Descending}
# ====== TODO To be translated ======
translate K GsortAdd {Add}
# ====== TODO To be translated ======
translate K GsortStore {Store}
# ====== TODO To be translated ======
translate K GsortLoad {Load}
translate K GlistRemoveThisGameFromFilter  {Treu aquesta partida del Filtre}
translate K GlistRemoveGameAndAboveFromFilter  {Treu aquesta partida i totes les de sobre del Filtre}
translate K GlistRemoveGameAndBelowFromFilter  {Treu aquesta partida i totes les de sota del Filtre}
translate K GlistDeleteGame {Elimina/Recupera aquesta partida de la base} 
translate K GlistDeleteAllGames {Elimina totes les partides de la base que hi son al Filtre} 
translate K GlistUndeleteAllGames {Recupera totes les partides esborrades de la base que hi son al filtre} 
translate K GlistMergeGameInBase {Barreja la partida a una altra base} 

# Maintenance window:
translate K DatabaseName {Nom de la base:}
translate K TypeIcon {Tipus d'icona:}
translate K NumOfGames {Partides:}
translate K NumDeletedGames {Partides esborrades:}
translate K NumFilterGames {Partides al filtre:}
translate K YearRange {Rang d'anys:}
translate K RatingRange {Rang d'Elo:}
translate K Description {Descripci}
translate K Flag {Marca}
# ====== TODO To be translated ======
translate K CustomFlags {Custom flags}
translate K DeleteCurrent {Esborrar partida actual}
translate K DeleteFilter {Esborrar partides filtrades}
translate K DeleteAll {Esborrar totes les partides}
translate K UndeleteCurrent {No esborrar partida actual}
translate K UndeleteFilter {No esborrar partides filtrades}
translate K UndeleteAll {No esborrar totes les partides}
translate K DeleteTwins {Esborrar partides duplicades}
translate K MarkCurrent {Marcar partida actual}
translate K MarkFilter {Marcar partides filtrades}
translate K MarkAll {Marcar totes les partides}
translate K UnmarkCurrent {No marcar partida actual}
translate K UnmarkFilter {No marcar partides filtrades}
translate K UnmarkAll {No marcar totes les partides}
translate K Spellchecking {Revisi ortogrfica}
translate K Players {Jugadors}
translate K Events {Torneigs}
translate K Sites {Llocs}
translate K Rounds {Rondes}
translate K DatabaseOps {Operacions amb la base de dades}
translate K ReclassifyGames {Reclassificar partides per ECO...}
translate K CompactDatabase {Compactar base de dades}
translate K SortDatabase {Ordenar base de dades}
translate K AddEloRatings {Afegir classificaci Elo}
translate K AutoloadGame {Autocargar nmero de partida}
translate K StripTags {Treure etiquetes PGN}
translate K StripTag {Treure etiquetes}
translate K Cleaner {MultiEines}
translate K CleanerHelp {
Scid executar, a l'actual base de dades, totes les accions de manteniment
que seleccionis de la segent llista.

S'aplicar l'estat actual a la classificaci ECO i al dileg d'esborrat de
duplicades si selecciones aquestes funcions.
}
translate K CleanerConfirm {
Un cop la MultiEina de manteniment comena no pot ser aturada!

En una base de dades gran pot trigar molt de temps, depenent de les funcions que s'hagi seleccionat i el seu estat actual.

N'ests segur/a de voler comenar les funcions de manteniment que has escollit?
}
translate K TwinCheckUndelete {Prem "u" per no esborrar-ne cap (undelete)}
translate K TwinCheckprevPair {Parella previa}
translate K TwinChecknextPair {Prxima Parella}
translate K TwinChecker {Scid: Verificar partides duplicades}
translate K TwinCheckTournament {Partides d'un torneig:}
translate K TwinCheckNoTwin {No duplicada  }
translate K TwinCheckNoTwinfound {No s'han trovat duplicades per aquesta partida.\nper mostrar duplicades amb aquesta finestra fes servir la funci "Esborrar partides duplicades..." }
translate K TwinCheckTag {Compartir etiquetes...}
translate K TwinCheckFound1 {Scid ha trobat $result partides duplicades}
translate K TwinCheckFound2 {i les marca com esborrades}
translate K TwinCheckNoDelete {No hi ha partides en aquesta base per esborrar.}
translate K TwinCriteria1 {Els teus parmetres per cercar duplicades potencialment poden fer que partides diferents amb jugades similars siguin marcades com a duplicades.}
translate K TwinCriteria2 {Es recomenable que escolleixis "No" per "algunes jugades", hauries d'escollir "S"  pels parmetres colors, torneigs, lloc, ronda, any i mes.\nVols continuar, malgrat aix, i esborrar les partides duplicades?}
translate K TwinCriteria3 {Es recomenable que especifiquis "S" per al menys dos parmetres de "mateix lloc", "mateixa ronda" i "mateix any".\nVols continuar, malgrat aix, i esborrar duplicades?}
translate K TwinCriteriaConfirm {Scid: Confirmar parmetres per partides duplicades}
translate K TwinChangeTag "Canviar les sigents etiquetes de les:\n\n partides"
translate K AllocRatingDescription "Aquesta ordre far servir l'arxiu actual SpellCheck per afegir puntuacions ELO i partides a la base. On un jugador no tingui Elo per si el tingui al llistat d'Spellcheck, se li afegir l'Elo."
translate K RatingOverride "Sobre-escriure Elos existents no buits?"
translate K AddRatings "Afegir Elos a:"
translate K AddedRatings {Scid ha afegit $r ratings Elo a $g partides.}
translate K NewSubmenu "Nou submen"

# Comment editor:
translate K AnnotationSymbols  {Smbols d'annotaci:}
translate K Comment {Comentari:}
translate K InsertMark {Insertar marca}
translate K InsertMarkHelp {
Insertar/treure marca: Selecciona color, tipus, cassella.
Insertar/treure fletxa: Bot dret sobre dos casselles.
}

# Nag buttons in comment editor:
translate K GoodMove {Bona jugada}
translate K PoorMove {Mala jugada}
translate K ExcellentMove {Jugada excelent}
translate K Blunder {Error}
translate K InterestingMove {Jugada interessant}
translate K DubiousMove {Jugada dubtosa}
translate K WhiteDecisiveAdvantage {Les blanque tenen avantatge decisiu}
translate K BlackDecisiveAdvantage {Les negres tenen avantatge decisiu}
translate K WhiteClearAdvantage {Les blanques tenen clar avantatge}
translate K BlackClearAdvantage {Les negres tenen clar avantatge}
translate K WhiteSlightAdvantage {Les blanques tenen lleuger avantatge}
translate K BlackSlightAdvantage {Les negres tenen lleuger avantatge}
translate K Equality {Igualtat}
translate K Unclear {Poc clar}
translate K Diagram {Diagrama}

# Board search:
translate K BoardSearch {Escaquer de recerca}
translate K FilterOperation {Operaci al filtre actual:}
translate K FilterAnd {Y (Restringir filtre)}
translate K FilterOr {O (Afegir al filtre)}
translate K FilterIgnore {IGNORAR (Posar a zero el filtre)}
translate K SearchType {Tipus de recerca:}
translate K SearchBoardExact {Posici exacta (totes les peces a les mateixes casselles)}
translate K SearchBoardPawns {Peons (igual material, tots els peons a les mateixes casselles)}
translate K SearchBoardFiles {Columnes (igual material, tots els peons a les mateixes columnes)}
translate K SearchBoardAny {Qualsevol (igual material, peons i peces a qualsevol lloc)}
translate K SearchInRefDatabase { Cerca a la base }
translate K LookInVars {Mirar a les variants}

# Material search:
translate K MaterialSearch {Cerca per Material}
translate K Material {Material}
translate K Patterns {Patrons}
translate K Zero {Zero}
translate K Any {Qualsevol}
translate K CurrentBoard {Escaquer Actual}
translate K CommonEndings {Finals comuns}
translate K CommonPatterns {Patrons comuns}
translate K MaterialDiff {Diferencia de material}
translate K squares {casselles}
translate K SameColor {Igual color}
translate K OppColor {Color contrari}
translate K Either {Qualsevol}
translate K MoveNumberRange {Rang de nombre de jugades}
translate K MatchForAtLeast {Coincideix quan menys}
translate K HalfMoves {mitges jugades}

# Common endings in material search:
translate K EndingPawns {Finals de peons}
translate K EndingRookVsPawns {Torre vs. pe(ns)}
translate K EndingRookPawnVsRook {Torre i 1 pe vs. torre}
translate K EndingRookPawnsVsRook {Torre i pe(ns) vs. torre}
translate K EndingRooks {Finals de torre vs. torre}
translate K EndingRooksPassedA {Finals de torre vs. torre amb pe passat}
translate K EndingRooksDouble {Finals de dues torres}
translate K EndingBishops {Finals d'alfil vs. alfil}
translate K EndingBishopVsKnight {Finals d'alfil vs. cavall}
translate K EndingKnights {Finals de cavall vs. cavall}
translate K EndingQueens {Finals de dama vs. dama}
translate K EndingQueenPawnVsQueen {Dama i 1 pe vs. dama}
translate K BishopPairVsKnightPair {Mig joc de dos alfils vs. dos cavalls}

# Common patterns in material search:
translate K PatternWhiteIQP {PDA blanc}
translate K PatternWhiteIQPBreakE6 {PDA blanc: d4-d5 ruptura vs. e6}
translate K PatternWhiteIQPBreakC6 {PDA blanc: d4-d5 ruptura vs. c6}
translate K PatternBlackIQP {PDA negre}
translate K PatternWhiteBlackIQP {PDA blanc vs. PDA negre}
translate K PatternCoupleC3D4 {Parella de peons allats blancs c3+d4}
translate K PatternHangingC5D5 {Peons suspessos negres a c5 i d5}
translate K PatternMaroczy {Centre Maroczy (amb peons a c4 i e4)}
translate K PatternRookSacC3 {Sacrifici de torre a c3}
translate K PatternKc1Kg8 {O-O-O vs. O-O (Rc1 vs. Rg8)}
translate K PatternKg1Kc8 {O-O vs. O-O-O (Rg1 vs. Rc8)}
translate K PatternLightFian {Fianchettos de casselles blanques (Alfil-g2 vs. Alfil-b7)}
translate K PatternDarkFian {Fianchettos de casselles negres (Alfil-b2 vs. Alfil-g7)}
translate K PatternFourFian {Quatre Fianchettos (Alfils a b2,g2,b7,g7)}

# Game saving:
translate K Today {Avui}
translate K ClassifyGame {Classificar partida}

# Setup position:
translate K EmptyBoard {Escaquer buit}
translate K InitialBoard {Escaquer inicial}
translate K SideToMove {Bndol que mou}
translate K MoveNumber {Jugada nmero}
translate K Castling {Enroc}
translate K EnPassantFile {Columna al pas}
translate K ClearFen {Treure FEN}
translate K PasteFen {Pegar FEN}
translate K SaveAndContinue {Salvar (enregistrar) i continuar}
translate K DiscardChangesAndContinue {Descartar \n canvis i continuar}
translate K GoBack {Tornar enrera}

# Replace move dialog:
translate K ReplaceMove {Substituir jugada}
translate K AddNewVar {Afegir nova variant}
translate K NewMainLine {Nova Lnia Principal}
translate K ReplaceMoveMessage {Ja existeix una jugada.

Pots substituir-la, descartant totes les jugades posteriors, o afegir-la com una nova variant.

(Pots evitar seguir veient aquest missatge en el futur desactivant l'opci "Preguntar abans de substituir moviments" al men Opcions: Jugades.)}

# Make database read-only dialog:
translate K ReadOnlyDialog {Si fas que aquesta base de dades sigui noms de lectura no es permetran fer canvis. No es podran salvar o substituir partides, i no es podra alterar les senyals d'esborrat. Qualsevol ordenaci o classificaci per ECO ser temporal.

Pots altra cop fer de forma fcil la base de dades d'escriptura tancant-la i obrint-la.

Realment vols fer que aquesta base de dades sigui noms de lectura?}

# Clear game dialog:
translate K ClearGameDialog {Aquesta partida ha estat modificada.

Realment vols continuar i eliminar els canvis fets?
}

# Exit dialog:
translate K ExitDialog {Vols sortir d'Scid?}
translate K ExitUnsaved {La seguent base de dades te canvis a partides no salvades. Si surts ara es perdran aquests canvis.}

# Import window:
translate K PasteCurrentGame {Pegar partida actual}
translate K ImportHelp1 \
  {Introduir o pegar una partida en format PGN al marc superior.}
translate K ImportHelp2 \
  {Qualsevol error important la partida es mostrar aqu.}
translate K OverwriteExistingMoves {SobreEscriure jugades existents?}

# ECO Browser:
translate K ECOAllSections {totes les divisions ECO}
translate K ECOSection {divisi ECO}
translate K ECOSummary {Resum de}
translate K ECOFrequency {Freqencia dels subcodis per}

# Opening Report:
translate K OprepTitle {Informe de l'obertura}
translate K OprepReport {Informe}
translate K OprepGenerated {Generat per}
translate K OprepStatsHist {Estadstiques e Historia}
translate K OprepStats {Estadstiques}
translate K OprepStatAll {Totes les partides referides}
translate K OprepStatBoth {Ambdues amb Elo}
translate K OprepStatSince {Des de}
translate K OprepOldest {Partides ms antigues}
translate K OprepNewest {Partides ms noves}
translate K OprepPopular {Popularitat actual}
translate K OprepFreqAll {Freqencia a tots els anys: }
translate K OprepFreq1   {Des de l'ltim any fins avui:     }
translate K OprepFreq5   {En els ltims 5 anys fins avui:   }
translate K OprepFreq10  {En els ltimos 10 anys fins avui:  }
translate K OprepEvery {un cop cada %u partides}
translate K OprepUp {puja un %u%s respecte al total d'anys}
translate K OprepDown {baixa un %u%s respecte al total d'anys}
translate K OprepSame {no hi han canvis respecte al total d'anys}
translate K OprepMostFrequent {Jugadors ms freqents}
translate K OprepMostFrequentOpponents {Rivals ms freqentes}
translate K OprepRatingsPerf {Elo i Rendiment}
translate K OprepAvgPerf {Promig Elo i rendiment}
translate K OprepWRating {Elo de les blanques}
translate K OprepBRating {Elo de les negres}
translate K OprepWPerf {Rendiment de les blanques}
translate K OprepBPerf {Rendiment de les negres}
translate K OprepHighRating {Partida amb el promig d'Elo ms gran}
translate K OprepTrends {Tendencies de Resultats}
translate K OprepResults {Resultat de duracions i freqencies}
translate K OprepLength {Duraci de la partida}
translate K OprepFrequency {Freqencia}
translate K OprepWWins {Blanques guanyen: }
translate K OprepBWins {Negres guanyen:  }
translate K OprepDraws {Taules:        }
translate K OprepWholeDB {al conjunt de la base de dades}
translate K OprepShortest {Victries ms curtes}
translate K OprepMovesThemes {Jugades i temes}
translate K OprepMoveOrders {Lnies de jugades que arriben a la posici de l'informe}
translate K OprepMoveOrdersOne \
  {Noms hi ha una lnia de jugades que arriba fins aquesta posici:}
translate K OprepMoveOrdersAll \
  {Hi han %u lnies que arriben a aquesta posici:}
translate K OprepMoveOrdersMany \
  {Hi han %u lnies que arriben a aquesta posici. Les %u ms comuns son:}
translate K OprepMovesFrom {Jugades des de la posici de l'informe}
translate K OprepMostFrequentEcoCodes {Obertures ms freqents}
translate K OprepThemes {Temes Posicionals}
translate K OprepThemeDescription {Freqencia dels temes a les primeres %u jugades de cada partida}
translate K OprepThemeSameCastling {Enroc al mateix flanc}
translate K OprepThemeOppCastling {Enrocs a flancs diferents}
translate K OprepThemeNoCastling {El dos Reis sense enrocar}
translate K OprepThemeKPawnStorm {Avalantxa dels peons del Rei}
translate K OprepThemeQueenswap {Canvi de Dames}
translate K OprepThemeWIQP {Pe de dama allat de les blanques}
translate K OprepThemeBIQP {Pen de dama allat de les negres}
translate K OprepThemeWP567 {Peons blancs a 5/6/7 fila}
translate K OprepThemeBP234 {Peons negres a 2/3/4 fila}
translate K OprepThemeOpenCDE {Columnes c/d/e obertes}
translate K OprepTheme1BishopPair {Un bndol te parella d'alfils}
translate K OprepEndgames {Finals}
translate K OprepReportGames {Informe de partides}
translate K OprepAllGames {Totes les partides}
translate K OprepEndClass {Tipus de finales d'acord a l'ltima posici de les partides}
translate K OprepTheoryTable {Taula de Teoria}
translate K OprepTableComment {Generada a partir de les %u partides amb millor Elo.}
translate K OprepExtraMoves {Annotaci extra de moviments a la taula de teoria}
translate K OprepMaxGames {Mxim de partides a la taula de teoria}
translate K OprepViewHTML {Veure HTML}
translate K OprepViewLaTeX {Veure LaTeX}

# Player Report:
translate K PReportTitle {Informe del jugador}
translate K PReportColorWhite {amb les peces blanques}
translate K PReportColorBlack {amb les peces negres}
translate K PReportMoves {%s desprs}
translate K PReportOpenings {Obertures}
translate K PReportClipbase {Buidar el portapapers i copiar les partides}

# Piece Tracker window:
translate K TrackerSelectSingle {El bot esquerra selecciona la pea.}
translate K TrackerSelectPair {El bot esquerra selecciona la pea; el botn dret tamb selecciona la germana.}
translate K TrackerSelectPawn {El bot esquerra selecciona el pe; el bot dret selecciona els 8 peons.}
translate K TrackerStat {Estadstica}
translate K TrackerGames {% de partides amb jugada a aquesta cassella}
translate K TrackerTime {% de temps cap aquesta cassella}
translate K TrackerMoves {Jugades}
translate K TrackerMovesStart {Escriu el nmero de la jugada des d'on comenar la recerca.}
translate K TrackerMovesStop {Escriu el nmero de la jugada on s'ha d'aturar la recerca.}

# Game selection dialogs:
translate K SelectAllGames {Totes les partides de la base de dades}
translate K SelectFilterGames {Noms les partides filtrades}
translate K SelectTournamentGames {Noms les partides de l'actual torneig}
translate K SelectOlderGames {Noms partides antigues}

# Delete Twins window:
translate K TwinsNote {Per a ser duplicades, dos partides han de tenir quan menys els mateixos dos jugadors i els criteris que fixis a sota. Quan es troba un parell de duplicades, es borra la partida ms curta. Suggeriment: es millor fer la correcci ortogrfica de la base de dades abans d'iniciar l'esborrat de duplicades, per que millora la seva detecci.}
translate K TwinsCriteria {Criteris: Les partides duplicades han de tenir...}
translate K TwinsWhich {Partides a examinar}
translate K TwinsColors {Jugadors amb igual color?}
translate K TwinsEvent {Mateix torneig?}
translate K TwinsSite {Mateix lloc?}
translate K TwinsRound {Mateixa ronda?}
translate K TwinsYear {Mateix any?}
translate K TwinsMonth {Mateix mes?}
translate K TwinsDay {Mateix da?}
translate K TwinsResult {Mateix resultat?}
translate K TwinsECO {Mateix codi ECO?}
translate K TwinsMoves {Mateixes jugades?}
translate K TwinsPlayers {Comparant noms de jugadors:}
translate K TwinsPlayersExact {Trobo exactes}
translate K TwinsPlayersPrefix {Noms les primeres 4 lletres}
translate K TwinsWhen {Quan es borren partides duplicades}
translate K TwinsSkipShort {Ignorar totes les partides amb menys de 5 jugades?}
translate K TwinsUndelete {Treure en primer lloc marques d'esborrat?}
translate K TwinsSetFilter {Posar al filtre totes les partides esborrades?}
translate K TwinsComments {Saltar sempre partides amb comentaris?}
translate K TwinsVars {Saltar sempre partides amb variants?}
translate K TwinsDeleteWhich {Quina partida esborrar:}
translate K TwinsDeleteShorter {Partida ms curta}
translate K TwinsDeleteOlder {Nmero de partida ms petit}
translate K TwinsDeleteNewer {Nmero de partida ms gran}
translate K TwinsDelete {Esborrar partides}

# Name editor window:
translate K NameEditType {Tipus de dada a editar}
translate K NameEditSelect {Partides a editar}
translate K NameEditReplace {Reemplaar}
translate K NameEditWith {amb}
translate K NameEditMatches {Ja hi son: Presionar Ctrl+1 a Ctrl+9 per seleccionar-ne}
# ====== TODO To be translated ======
translate K CheckGames {Check games}
# ====== TODO To be translated ======
translate K CheckGamesWhich {Check games}
# ====== TODO To be translated ======
translate K CheckAll {All games}
# ====== TODO To be translated ======
translate K CheckSelectFilterGames {Only games in filter}

# Classify window:
translate K Classify {Classificar}
translate K ClassifyWhich {Classificar per codi ECO}
translate K ClassifyAll {Totes les partides (sobreescriure codi ECO)}
translate K ClassifyYear {Totes les partides jugades a l'ltim any}
translate K ClassifyMonth {Totes les partides jugades a l'ltim mes}
translate K ClassifyNew {Noms les partides sense codi ECO}
translate K ClassifyCodes {Codi ECO a utilitzar}
translate K ClassifyBasic {Noms codi bsic ("B12", ...)}
translate K ClassifyExtended {Extensions Scid ("B12j", ...)}

# Compaction:
translate K NameFile {Arxiu de noms}
translate K GameFile {Arxiu de partides}
translate K Names {Noms}
translate K Unused {No utilitzat}
translate K SizeKb {Tamany (kb)}
translate K CurrentState {Estat actual}
translate K AfterCompaction {Desprs de la compactaci}
translate K CompactNames {Compactar arxiu de noms}
translate K CompactGames {Compactar arxiu de partides}
translate K NoUnusedNames "No hi han noms sense utilitzar, per tant l'arxiu de noms ja est compactat."
translate K NoUnusedGames "L'arxiu ja est totalment compactat."
translate K NameFileCompacted {L'arxiu de noms per la base de dades "[file tail [sc_base filename]]" ha estat compactat.}
translate K GameFileCompacted {L'arxiu de partides de la base de dades "[file tail [sc_base filename]]" ha estat compactada.}

# Sorting:
translate K SortCriteria {Criteri}
translate K AddCriteria {Afegir criteri}
translate K CommonSorts {Ordenacions habituals}
translate K Sort {Ordenar}

# Exporting:
translate K AddToExistingFile {Afegir partides a un arxiu existent?}
translate K ExportComments {Exportar comentaris?}
translate K ExportVariations {Exportar variants?}
translate K IndentComments {Sangrar comentaris?}
translate K IndentVariations {Sangrar variants?}
translate K ExportColumnStyle {Estil de columna (una jugada per lnia)?}
translate K ExportSymbolStyle {Estil d'anotaci simblica:}
translate K ExportStripMarks {Treure marca de codis de cassella/fletxa dels comentaris?}

# Goto game/move dialogs:
translate K LoadGameNumber {Entra el nmero de la partida a carregar:}
translate K GotoMoveNumber {Anar a la jugada nmero:}

# Copy games dialog:
translate K CopyGames {Copiar partides}
translate K CopyConfirm {
 Realment vols copiar les [::utils::thousands $nGamesToCopy] partides fitrades
 de la base de dades "$fromName"
 a la base de dades "$targetName"?
}
translate K CopyErr {No es poden copiar les partides}
translate K CopyErrSource {la base de dades font}
translate K CopyErrTarget {la base de dades de desti}
translate K CopyErrNoGames {no te partides al filtre}
translate K CopyErrReadOnly {es de noms lectura}
translate K CopyErrNotOpen {no est oberta}

# Colors:
translate K LightSquares {Casselles blanques}
translate K DarkSquares {Casselles negres}
translate K SelectedSquares {Casselles seleccionades}
translate K SuggestedSquares {Casselles de jugada suggerida}
translate K WhitePieces {Peces blanques}
translate K BlackPieces {Peces negres}
translate K WhiteBorder {Vora blanques}
translate K BlackBorder {Vora negres}

# Novelty window:
translate K FindNovelty {Trobar Novetat}
translate K Novelty {Novetat}
translate K NoveltyInterrupt {Recerca de novetat interrompuda}
translate K NoveltyNone {Cap novetat trobada en aquesta partida}
translate K NoveltyHelp {
Scid trobar la primera jugada de l'actual partida que representi una posici no existent a la base de dades seleccionada o al llibre d'obertures ECO.
}

# Sounds configuration:
translate K SoundsFolder {Directori d'arxius de so}
translate K SoundsFolderHelp {El directori ha de tenir els arxius King.wav, a.wav, 1.wav, etc}
translate K SoundsAnnounceOptions {Opcions d'anunci de jugades}
translate K SoundsAnnounceNew {Anunciar noves jugades quan estiguin fetes}
translate K SoundsAnnounceForward {Anunciar jugades quan avancem una jugada}
translate K SoundsAnnounceBack {Anunciar jugada quan rectifiquem o retrocedim una jugada}

# Upgrading databases:
translate K Upgrading {Actualitzaci}
translate K ConfirmOpenNew {
Aquest es un format de base de dades antico (Scid 3) que no es pot obrir amb Scid 4, pero ja s'ha creat una versin en el format nou (Scid 4).

Vols abrir la versi de format nou de la base de dades?
}
translate K ConfirmUpgrade {
Aquesta es una base de dades en un format antic (Scid 3). S'ha de crear una versi amb el nou format abans de poder utilitzar-la a Scid 4.

L'actualitzaci crear una nova versi de la base de dades.

Pot trigar temps, pero noms cal fer-ho un cop. Pots cancelar si triga massa temps.

Vols actualitzar aquesta base de dades ara?
}

# Recent files options:
translate K RecentFilesMenu {Nombre d'arxius recents al men Arxiu}
translate K RecentFilesExtra {Nombre d'arxius recents al submen extra}

# My Player Names options:
translate K MyPlayerNamesDescription {
Escriu una llista de noms alternatius per jugador, un nom per cada lnia. Es permeten comodins (per exemple "?" per un caracter, "*" per varis caracters).

Cada cop que es carregui una partida amb un jugador de la llista es girar l'escaquer, si fos necessari, per veure la partida des de la perspectiva del jugador.
}
translate K showblunderexists {Mostrar ficada de pota}
translate K showblundervalue {Mostrar valor de la ficada de pota}
translate K showscore {Mostrar marcador}
translate K coachgame {Entrenador}
translate K configurecoachgame {Configurar entrenador}
translate K configuregame {Configuraci de partida}
translate K Phalanxengine {Motor Phalanx}
translate K Coachengine {Motor entrenador}
translate K difficulty {Dificultat}
translate K hard {Dur}
translate K easy {Fcil}
translate K Playwith {Juga amb}
translate K white {blanques}
translate K black {negres}
translate K both {ambdos}
translate K Play {Jugar}
translate K Noblunder {Sense errors}
translate K blunder {Ficades de pota}
translate K Noinfo {-- Sense informaci --}
translate K PhalanxOrTogaMissing {No es troben ni Phalanx ni Toga}
translate K moveblunderthreshold {La jugada es un error si la prdua de puntuaci es ms gran que }
translate K limitanalysis {Temps lmit per l'anlisi del motor}
translate K seconds {segons}
translate K Abort {Abortar}
translate K Resume {Reanudar}
translate K OutOfOpening {Fora de l'obertura}
translate K NotFollowedLine {No segueixes la lnia}
translate K DoYouWantContinue {Vols continuar?}
translate K CoachIsWatching {Entrenador}
translate K Ponder {Pensar sempre (motor)}
translate K LimitELO {Limitar fora ELO}
translate K DubiousMovePlayedTakeBack {Jugada dubtosa, vols rectificar?}
translate K WeakMovePlayedTakeBack {Jugada fluixa, vols rectificar?}
translate K BadMovePlayedTakeBack {Jugada dolenta, vols rectificar?}
translate K Iresign {Abandono}
translate K yourmoveisnotgood {la teva jugada es dolenta}
translate K EndOfVar {Fi de la variant}
translate K Openingtrainer {Entrenador d'obertures}
translate K DisplayCM {Mostra jugades possibles}
translate K DisplayCMValue {Mostra valor de les jugades possibles}
translate K DisplayOpeningStats {Mostra estadstiques}
translate K ShowReport {Mostra informe}
translate K NumberOfGoodMovesPlayed {jugades bones fetes}
translate K NumberOfDubiousMovesPlayed {jugades dubtoses fetes}
translate K NumberOfMovesPlayedNotInRepertoire {jugades fetes fora del repertori}
translate K NumberOfTimesPositionEncountered {vegades trobada la posici}
translate K PlayerBestMove  {Permet nicament les millors jugades}
translate K OpponentBestMove {El contrari juga les millors jugades}
translate K OnlyFlaggedLines {Noms lnies marcades}
translate K resetStats {Reinicia estadstiques}
translate K Repertoiretrainingconfiguration {Configuraci del repertori d'entrenament}
translate K Loadingrepertoire {Carregant repertori}
translate K Movesloaded {Jugades carregades}
translate K Repertoirenotfound {Repertori no trobat}
translate K Openfirstrepertoirewithtype {Obrir primer una base amb una icona/tipus de repertori al costat dret}
translate K Movenotinrepertoire {La jugada no est al repertori}
translate K PositionsInRepertoire {Posicions al repertori}
translate K PositionsNotPlayed {Posicions no jugades}
translate K PositionsPlayed {Posicions jugades}
translate K Success {Exits}
translate K DubiousMoves {Jugades dubtoses}
translate K OutOfRepertoire {Fora de repertori}
translate K ConfigureTactics {Configurar tctica}
translate K ResetScores {Reiniciar marcadors (puntuacions)}
translate K LoadingBase {Cargant base}
translate K Tactics {Tctica}
translate K ShowSolution {Mostrar resposta}
# ====== TODO To be translated ======
translate K NextExercise {Next exercise}
# ====== TODO To be translated ======
translate K PrevExercise {previous exercise}
# ====== TODO To be translated ======
translate K StopTraining {Stop training}
translate K Next {Segent}
translate K ResettingScore {Reiniciant marcador}
translate K LoadingGame {Cargant partida}
translate K MateFound {Trobat mat}
translate K BestSolutionNotFound { NO s'ha trobat la millor resposta!}
translate K MateNotFound {Mat no trobat}
translate K ShorterMateExists {Existeix un mat ms curt}
translate K ScorePlayed {Marcador jugat}
translate K Expected {Esperat}
translate K ChooseTrainingBase {Escollir base d'entrenament}
translate K Thinking {Pensant}
translate K AnalyzeDone {Anlisi fet}
translate K WinWonGame {Guanya la partida guanyada}
translate K Lines {Lnies}
translate K ConfigureUCIengine {Configurar motor UCI}
translate K SpecificOpening {Obertura especfica}
translate K StartNewGame {Iniciar nova partida}
translate K FixedLevel {Nivell fix}
translate K Opening {Obrint}
translate K RandomLevel {Nivell aleatori}
translate K StartFromCurrentPosition {Iniciar des de la posici actual}
translate K FixedDepth {Profunditat fixe}
translate K Nodes {Nodes} 
translate K Depth {Profunditat}
translate K Time {Temps} 
translate K SecondsPerMove {Segons per jugada}
translate K Engine {Motor}
translate K TimeMode {Mode de temps}
translate K TimeBonus {Temps + bonus}
translate K TimeMin {min}
translate K TimeSec {seg}
translate K AllExercisesDone {Tots els exercicis fets}
translate K MoveOutOfBook {Jugada fora del llibre}
translate K LastBookMove {ltima jugada del llibre}
translate K AnnotateSeveralGames {Anotar les partides\ndes de l'actual fins la partida: }
translate K FindOpeningErrors {Trobar errors als primers }
translate K MarkTacticalExercises {Marca exercicis tctics}
translate K UseBook {Utilitzar llibre d'obertures}
translate K MultiPV {Mltiples Variants}
translate K Hash {Memria Hash}
translate K OwnBook {Utilitzar el llibre del motor}
translate K BookFile {Llibre d'obertures}
translate K AnnotateVariations {Anotar variants}
translate K ShortAnnotations {Anotacions curtes}
translate K addAnnotatorTag {Afegir etiqueta d'anotador}
translate K AddScoreToShortAnnotations {Afegir puntuaci per anotaciones curtes}
translate K Export {Exportar}
translate K BookPartiallyLoaded {Llibre carregat parcialment}
translate K Calvar {Clcul de variants}
translate K ConfigureCalvar {Configuraci}
translate K Reti {Obertura Reti}
translate K English {Obertura anglesa}
translate K d4Nf6Miscellaneous {1.d4 Cf6 varis}
translate K Trompowsky {Obertura Trompowsky}
translate K Budapest {Gambit Budapest}
translate K OldIndian {Defensa India Antiga}
translate K BenkoGambit {Gambit Benko}
translate K ModernBenoni {Defensa Benoni Moderna}
translate K DutchDefence {Defensa Holandesa}
translate K Scandinavian {Defensa Escandinava}
translate K AlekhineDefence {Defensa Alekhine}
translate K Pirc {Defensa Pirc}
translate K CaroKann {Defensa Caro-Kann}
translate K CaroKannAdvance {Defensa Caro-Kann, Variant de l'avanament}
translate K Sicilian {Defensa Siciliana}
translate K SicilianAlapin {Defensa Siciliana, Variant Alapin}
translate K SicilianClosed {Defensa Siciliana, Variant Tancada}
translate K SicilianRauzer {Defensa Siciliana, Variant Rauzer}
translate K SicilianDragon {Defensa Siciliana, Variant del Drag}
translate K SicilianScheveningen {Defensa Siciliana, Variant Scheveningen}
translate K SicilianNajdorf {Defensa Siciliana, Variant Najdorf}
translate K OpenGame {Obertura Oberta}
translate K Vienna {Obertura Vienesa}
translate K KingsGambit {Gambit de Rei}
translate K RussianGame {Partida Rusa}
translate K ItalianTwoKnights {Obertura Italiana, Variant dels Dos Cavalls}
translate K Spanish {Obertura Espanyola}
translate K SpanishExchange {Obertura Espanyola, Variant del canvi}
translate K SpanishOpen {Obertura Espanyola}
translate K SpanishClosed {Obertura Espanyola, Variant tancada}
translate K FrenchDefence {Defensa Francesa}
translate K FrenchAdvance {Defensa Francesa, Variant de l'Avanament}
translate K FrenchTarrasch {Defensa Francesa, Variant Tarrasch}
translate K FrenchWinawer {Defensa Francesa, Variant Winawer}
translate K FrenchExchange {Defensa Francesa, Variant del canvi}
translate K QueensPawn {Obertura de Pe de Dama}
translate K Slav {Defensa Eslava}
translate K QGA {Gambit de Dama Acceptat}
translate K QGD {Gambit de Dama Declinat}
translate K QGDExchange {Gambit de Dama Declinat, Variant del Canvi}
translate K SemiSlav {Defensa Semi-Eslava del Gambit de Dama Declinat}
translate K QGDwithBg5 {Gambit de Dama Declinat amb Ag5}
translate K QGDOrthodox {Gambit de Dama Declinat,  Defensa Ortodoxa}
translate K Grunfeld {Defensa Grnfeld}
translate K GrunfeldExchange {Variant del canvi de la Defensa Grnfeld }
translate K GrunfeldRussian {Variant Rusa de la Defensa Grnfeld}
translate K Catalan {Catalana}
translate K CatalanOpen {Obertura Catalana}
translate K CatalanClosed {Obertura Catalana, Variant Tancada}
translate K QueensIndian {Defensa India de Dama}
translate K NimzoIndian {Obertura Nimzo-India}
translate K NimzoIndianClassical {Obertura Nimzo-India Clssica}
translate K NimzoIndianRubinstein {Variante Rubinstein de la Nimzo-India}
translate K KingsIndian {India de Rei}
translate K KingsIndianSamisch {Atac Smish de la India de Reiy}
translate K KingsIndianMainLine {Linia Principal India de Rei}
translate K ConfigureFics {Configurar FICS}
translate K FICSGuest {Autentificaci com convidat}
translate K FICSServerPort {Port del servidor}
# ====== TODO To be translated ======
translate K FICSServerAddress {IP Address}
# ====== TODO To be translated ======
translate K FICSRefresh {Refresh}
translate K FICSTimesealPort {Port Timeseal}
translate K FICSSilence {Silenci}
translate K FICSOffers {Ofertes}
translate K FICSConsole {Consola}
translate K FICSGames {Partides}
translate K FICSUnobserve {Atura l'observaci d'una partida}
translate K FICSProfile {Mostra la teva histria i perfil}
translate K FICSRelayedGames {Partides ajornades}
translate K FICSFindOpponent {Cercar contrari}
translate K FICSTakeback {Retrocedeix}
translate K FICSTakeback2 {Retrocedeix 2}
translate K FICSInitTime {Temps inicial (min)}
translate K FICSIncrement {Increment (seg)}
translate K FICSRatedGame {Partida amb rating}
translate K FICSAutoColour {automtic}
translate K FICSManualConfirm {confirma manualment}
translate K FICSFilterFormula {Filtrar amb frmula}
translate K FICSIssueSeek {Panell de desafiaments}
translate K FICSChallenge {Desafiar}
translate K FICSAccept {acceptar}
translate K FICSDecline {refusar}
translate K FICSColour {Color}
translate K FICSSend {enviar}
translate K FICSConnect {Connectar}
translate K FICSdefaultuservars {Utilitza valors per defecte}
translate K FICSObserveconfirm {Vols observar la partida}
# ====== TODO To be translated ======
translate K GameReview {Game review}
# ====== TODO To be translated ======
translate K GameReviewTimeExtended {Time extended}
# ====== TODO To be translated ======
translate K GameReviewMargin {Error margin}
# ====== TODO To be translated ======
translate K GameReviewAutoContinue {Auto continue when move is correct}
# ====== TODO To be translated ======
translate K GameReviewReCalculate {Use extended time}
# ====== TODO To be translated ======
translate K GameReviewAnalyzingMovePlayedDuringTheGame {Analyzing move played during the game}
# ====== TODO To be translated ======
translate K GameReviewAnalyzingThePosition {Analyzing the position}
# ====== TODO To be translated ======
translate K GameReviewEnterYourMove {Enter your move}
# ====== TODO To be translated ======
translate K GameReviewCheckingYourMove {Checking your move}
# ====== TODO To be translated ======
translate K GameReviewYourMoveWasAnalyzed {Your move was analyzed}
# ====== TODO To be translated ======
translate K GameReviewYouPlayedSameMove {You played the same move as in match}
# ====== TODO To be translated ======
translate K GameReviewScoreOfYourMove {Score of your move}
# ====== TODO To be translated ======
translate K GameReviewGameMoveScore {Game move's score}
# ====== TODO To be translated ======
translate K GameReviewEngineScore {Engine's score}
# ====== TODO To be translated ======
translate K GameReviewYouPlayedLikeTheEngine {You played like the engine}
# ====== TODO To be translated ======
translate K GameReviewNotEngineMoveButGoodMove {Not the engine move, but is also a good move}
# ====== TODO To be translated ======
translate K GameReviewMoveNotGood {This move is not good, score is}
# ====== TODO To be translated ======
translate K GameReviewMovesPlayedLike {Moves played like}
# ====== TODO To be translated ======
translate K GameReviewMovesPlayedEngine {Moves played like engine}
translate K CCDlgConfigureWindowTitle {Configurar Escacs Postals}
translate K CCDlgCGeneraloptions {Opcions Generals}
translate K CCDlgDefaultDB {Base per defecte:}
translate K CCDlgInbox {Entrant (Carpeta):}
translate K CCDlgOutbox {Sortint (carpeta):}
translate K CCDlgXfcc {Configuraci Xfcc:}
translate K CCDlgExternalProtocol {Protocol Extern de procs (ex. Xfcc)}
translate K CCDlgFetchTool {Eina de recuperaci:}
translate K CCDlgSendTool {Eina de tramessa:}
translate K CCDlgEmailCommunication {Comunicaci Email}
translate K CCDlgMailPrg {Programa de correu:}
translate K CCDlgBCCAddr {(B)CC Adrea:}
translate K CCDlgMailerMode {Mode:}
translate K CCDlgThunderbirdEg {p.ex. Thunderbird, Mozilla Mail, Icedove...}
translate K CCDlgMailUrlEg {p.ex. Evolution}
translate K CCDlgClawsEg {p.ex. Sylpheed Claws}
translate K CCDlgmailxEg {p.ex. mailx, mutt, nail...}
translate K CCDlgAttachementPar {Adjunt:}
translate K CCDlgInternalXfcc {Utilitzar suport intern Xfcc}
# ====== TODO To be translated ======
translate K CCDlgConfirmXfcc {Confirma jugades}
translate K CCDlgSubjectPar {Assumpte:}
# ====== TODO To be translated ======
translate K CCDlgDeleteBoxes {Buida Entrant/Sortint}
# ====== TODO To be translated ======
translate K CCDlgDeleteBoxesText {Realment vols buidar les teves carpetes d'Entrada i Sortida d'Escacs per Correspondncia? Aix requereix una nova sincronitzaci per mostrar l'estat actual de les teves partides}
# ====== TODO To be translated ======
translate K CCDlgConfirmMove {Confirma jugada}
# ====== TODO To be translated ======
translate K CCDlgConfirmMoveText {Si ho confirmes, la propera jugada i comentari ser enviada al servidor:}
# ====== TODO To be translated ======
translate K CCDlgDBGameToLong {Lnia principal inconsistent}
# ====== TODO To be translated ======
translate K CCDlgDBGameToLongError {la lnia principal a la teva base es ms llarga que la de la partida de la Bstia d'Entrada. Si la Btia d'Entrada cont partides actuals, p.ex. desprs d'una sincronitzaci, vol dir que s'han afegit jugades a la base errniament.\nEn aquest cas escura la lnia principal fins a (max) jugada\n}
translate K CCDlgStartEmail {Iniciar nova partida Email}
translate K CCDlgYourName {El teu nom:}
translate K CCDlgYourMail {La teva adrea Email:}
translate K CCDlgOpponentName {Nom del Contrari:}
translate K CCDlgOpponentMail {Direcci Email del Contrari:}
translate K CCDlgGameID {Partida ID (nica):}
translate K CCDlgTitNoOutbox {Scid: Sortida del Correu d'Escacs}
translate K CCDlgTitNoInbox {Scid: Entrada del Correu d'Escacs}
translate K CCDlgTitNoGames {Scid: No hi han Partides d'Escacs Postal}
translate K CCErrInboxDir {Carpeta d'entrada del Correu d'Escacs (Entrant):}
translate K CCErrOutboxDir {Carpeta de sortida del Correu d'Escacs (Sortint):}
translate K CCErrDirNotUsable {No existeix o no es accessible!\nSi-us-plau, verifica els parmetres.}
translate K CCErrNoGames {No cont cap partida!\nSi-us-plau, posa'n primer.}
translate K CCDlgTitNoCCDB {Scid: No es una Base d'Escacs Postals}
translate K CCErrNoCCDB {No hi ha una Base de tipus 'Correu' oberta. Si-us-plau, obre'n una abans d'utilitzar funcions d'escacs postals.}
translate K CCFetchBtn {Baixar partides des del servidor i processar correu entrant}
translate K CCPrevBtn {Anar a partida anterior}
translate K CCNextBtn {Anar a partida segent }
translate K CCSendBtn {Enviar jugada}
translate K CCEmptyBtn {Correus entrants i sortints buits}
translate K CCHelpBtn {Ajut a icones e indicadors d'estatus. \n Per ajut general prmer F1!}
translate K CCDlgServerName {Nom del servidor:}
translate K CCDlgLoginName  {Nom de registre:}
translate K CCDlgPassword   {Contrasenya:}
translate K CCDlgURL        {Xfcc-URL:}
translate K CCDlgRatingType {Tipus de puntuaci (Rating):}
translate K CCDlgDuplicateGame {ID de partida no nic}
translate K CCDlgDuplicateGameError {Aquesta partida existeix ms d'un cop a la base. Si-us-plau esborra totes les duplicades i compacta el fitxer de partides (Arxiu/Manteniment/Compactar Base).}
# ====== TODO To be translated ======
translate K CCDlgSortOption {Sorting:}
# ====== TODO To be translated ======
translate K CCDlgListOnlyOwnMove {Only games I have the move}
# ====== TODO To be translated ======
translate K CCOrderClassicTxt {Site, Event, Round, Result, White, Black}
# ====== TODO To be translated ======
translate K CCOrderMyTimeTxt {My Clock}
# ====== TODO To be translated ======
translate K CCOrderTimePerMoveTxt {Time per move till next time control}
# ====== TODO To be translated ======
translate K CCOrderStartDate {Start date}
# ====== TODO To be translated ======
translate K CCOrderOppTimeTxt {Opponents Clock}
# ====== TODO To be translated ======
translate K CCDlgConfigRelay {Configure ICCF observations}
# ====== TODO To be translated ======
translate K CCDlgConfigRelayHelp {Go to the games page on http://www.iccf-webchess.com and display the game to be observed.  If you see the chessboard copy the URL from your browser to the list below. One URL per line only!\nExample: http://www.iccf-webchess.com/MakeAMove.aspx?id=266452}
translate K ExtHWConfigConnection {Configurar maquinari extern}
translate K ExtHWPort {Port}
translate K ExtHWEngineCmd {Lnia d'ordres del motor}
translate K ExtHWEngineParam {Parmetre del motor}
translate K ExtHWShowButton {Mostrar bot}
translate K ExtHWHardware {Maquinari}
translate K ExtHWNovag {Novag Citrine}
translate K ExtHWInputEngine {Motor d'entrada}
translate K ExtHWNoBoard {Sense escaquer}
translate K NovagReferee {rbitre}

# Input Engine dialogs
translate K IEConsole {Consola d'entrada del motor}
translate K IESending {Jugades enviades per}
translate K IESynchronise {Sincronitzar}
translate K IERotate  {Rotar}
translate K IEUnableToStart {Impossible comenar amb el motor d'entrada:}
translate K DoneWithPosition {Fet amb la posici}
translate K Board {Escaquer}
translate K showGameInfo {Mostrar informaci de la partida}
translate K autoResizeBoard {Tamany automtic de l'escaquer}
translate K DockTop {Moure amunt}
translate K DockBottom {Moure abaix}
translate K DockLeft {Moure a l'esquerra}
translate K DockRight {Moure a la dreta}
translate K Undock {Finestra flotant}
# ====== TODO To be translated ======
translate K ChangeIcon {Change icon...}

}
# end of catalan.tcl






























# czech.tcl: Czech menus and help for Scid.
# Contributed by Pavel Hank, Vlastimil Babula and Milan Zamazal.
# Untranslated messages are marked with a "***" comment.

addLanguage C Czech 0 iso-8859-2

proc setLanguage_C {} {

# File menu:
menuText C File "Soubor" 0
menuText C FileNew "Nov..." 0 {Vytvoit novou Scid databzi}
menuText C FileOpen "Otevt..." 0 {Otevt existujc Scid databzi}
menuText C FileClose "Zavt" 0 {Zavt aktivn Scid databzi}
menuText C FileFinder "Vyhledva" 2 {Otevt okno vyhledvae soubor}
menuText C FileBookmarks "Zloky" 2 {Menu zloek (klvesa: Ctrl+B)}
menuText C FileBookmarksAdd "Pidat zloku" 0 \
  {Zloka aktuln pozice a partie z databze}
menuText C FileBookmarksFile "Zaadit zloku" 0 \
  {Zaadit zloku pro aktuln partii a pozici}
menuText C FileBookmarksEdit "Editovat zloky..." 0 \
  {Editovat menu zloek}
menuText C FileBookmarksList "Zobrazit sloky jako jedin seznam" 0 \
  {Zobrazit sloky se zlokami jako jedin seznam, bez podnabdek}
menuText C FileBookmarksSub "Zobrazit sloky jako podnabdky" 9 \
  {Zobrazit zlokov sloky jako podnabdky, ne jako jedin seznam}
menuText C FileMaint "drba" 2 {Nstroje pro drbu databze Scidu}
menuText C FileMaintWin "Okno drby" 0 \
  {Otevt/zavt okno pro drbu Scid databze}
menuText C FileMaintCompact "Zhutnn databze..." 13 \
  {Zhutnn databzovch soubor, odstrann vymazanch parti a nepouvanch jmen}
menuText C FileMaintClass "ECO klasifikace parti..." 0 \
  {Pepotn ECO kd vech parti}
menuText C FileMaintSort "Setdit databzi..." 0 \
  {Setdit vechny partie v databzi}
menuText C FileMaintDelete "Vymazn zdvojench parti..." 0 \
  {Hledat zdvojen partie a oznait je pro vymazn}
menuText C FileMaintTwin "Kontrola zdvojench parti" 0 \
  {Otevt/aktualizovat okno pro kontrolu zdvojench parti}
menuText C FileMaintName "Jmna" 0 {Editace jmen a kontrola pravopisu}
menuText C FileMaintNameEditor "Editor jmen" 0 \
  {Otevt/zavt editor jmen}
menuText C FileMaintNamePlayer "Kontrola pravopisu hr..." 19 \
  {Kontrola pravopisu jmen hr s vyuitm souboru pro kontrolu pravopisu}
menuText C FileMaintNameEvent "Kontrola pravopisu turnaj..." 19 \
  {Kontrola pravopisu nzv turnaj s vyuitm souboru pro kontrolu pravopisu}
menuText C FileMaintNameSite "Kontrola pravopisu mst..." 19 \
  {Kontrola pravopisu mst turnaj s vyuitm souboru pro kontrolu pravopisu}
menuText C FileMaintNameRound "Kontrola pravopisu kol..." 19 \
  {Kontrola pravopisu kol s vyuitm souboru pro kontrolu pravopisu}
menuText C FileReadOnly "Pouze pro ten..." 0 \
  {Nastavit aktuln databzi jako jen ke ten, a zabrnit tak zmnm}
menuText C FileSwitch "Pepnout se do databze" 15 \
  {Pepnout se do jin oteven databze}
menuText C FileExit "Ukonit" 0 {Ukonit Scid}
menuText C FileMaintFixBase "Opravit pokozenou databzi" 0 {Pokusit se opravit pokozenou databzi}

# Edit menu:
menuText C Edit "Editace" 0
menuText C EditAdd "Pidat variantu" 0 {Pidat variantu k tomuto tahu v partii}
menuText C EditDelete "Vymazat variantu" 0 {Vymazat variantu k tomuto tahu}
menuText C EditFirst "Zaadit jako prvn variantu" 0 \
  {Zaadit variantu na prvn msto v seznamu variant}
menuText C EditMain "Povit stvajc variantu na hlavn" 30 \
  {Povit stvajc variantu na hlavn variantu}
menuText C EditTrial "Zkusit variantu" 1 \
    {Spustit/Ukonit zkuebn md pro testovn mylenky na achovnici}
menuText C EditStrip "Odstranit" 0 {Odstranit komente nebo varianty z tto partie}
menuText C EditUndo "Vzt zpt" 0 {Vzt zpt posledn zmnu v partii}
menuText C EditStripComments "Komente" 0 \
  {Odstranit vechny poznmky a anotace z tto partie}
menuText C EditStripVars "Varianty" 0 {Odstranit vechny varianty z tto partie}
menuText C EditStripBegin "Tahy ze zatku" 5 \
  {Odstranit tahy ze zatku partie}
menuText C EditStripEnd "Tahy do konce" 5 \
  {Odstranit tahy do konce partie}
menuText C EditReset "Vyprzdnit schrnku" 11 \
  {Kompletn vyprzdnn databze schrnka}
menuText C EditCopy "Zkoprovat tuto partii do schrnky" 23 \
  {Zkoprovat tuto parti do databze schrnka}
menuText C EditPaste "Vloit posledn partii ze schrnky" 24 \
  {Vloit aktivn partii z databze schrnka}
menuText C EditPastePGN "Vloit text ze schrnky jako PGN..." 10 \
  {Interpretovat text schrnky jako partii v PGN notaci a vloit ji sem}
menuText C EditSetup "Nastavit vchoz pozici..." 0 \
  {Nastavit vchoz pozici pro tuto partii}
menuText C EditCopyBoard "Koprovat pozici" 4 \
  {Koprovat aktuln pozici ve FEN notaci do textovho vbru (do clipboardu)}
menuText C EditPasteBoard "Vloit poten pozici" 1 \
  {Nastavit poten pozici z aktulnho textovho vbru (z clipboardu)}

# Game menu:
menuText C Game "Partie" 0
menuText C GameNew "Nov partie" 0 \
  {Nastavit novou partii, vechny proveden zmny budou ztraceny}
menuText C GameFirst "Nathnout prvn partii" 10 {Nathnout prvn partii z filtrovanch parti}
menuText C GamePrev "Nathnout pedchoz partii" 13 {Nathnout pedchoz partii z filtrovanch parti}
menuText C GameReload "Znovunathnout aktuln partii" 0 \
  {Znovunataen aktuln partie, vechny doposud proveden zmny budou ztraceny}
menuText C GameNext "Nathnout nsledujc partii" 14 {Nathnout nsledujc partii z filtrovanch parti}
menuText C GameLast "Nathnout posledn partii" 11 {Nathnout posledn partii z filtrovanch parti}
menuText C GameRandom "Nathnout partii nhodn" 1 {Nathnout nhodn vybranou partii z filtru}
menuText C GameNumber "Nathnout partii slo..." 19 \
  {Nathnout partii slo...}
menuText C GameReplace "Uloit: pepsn partie..." 0 \
  {Uloit tuto partii - pepe pvodn verzi}
menuText C GameAdd "Uloit: pidn nov partie..." 1 \
  {Uloit tuto partii jako novou partii v databzi}
menuText C GameDeepest "Identifikace zahjen" 0 \
  {Pejt na koncovou pozici z ECO knihovny, kter odpovd zvolenmu zahjen}
menuText C GameGotoMove "Pejt na tah slo..." 10 \
  {Pejt v aktuln partii do pozice udan slem tahu}
menuText C GameNovelty "Hledat novinku..." 0 \
  {Hledat prvn tah tto partie, kter doposud nebyl hrn}

# Search Menu:
menuText C Search "Hledat" 0
menuText C SearchReset "Vyistit filtr" 0 {Vyistit filtr - vybrny budou vechny partie}
menuText C SearchNegate "Negace filtru" 0 {Negace filtru -  vybrny budou pouze partie vyat pedchzejcm filtrem}
menuText C SearchCurrent "Aktuln pozice..." 0 {Hledat aktuln pozici}
menuText C SearchHeader "Hlavika..." 0 {Hledat podle hlaviky partie (hr, turnaj apod.)}
menuText C SearchMaterial "Materil/Vzor..." 0 {Hledat podle materilu nebo podle vzoru}
menuText C SearchUsing "Hledat pomoc souboru voleb..." 14 {Hledat s pouitm voleb zapsanch v souboru}

# Windows menu:
menuText C Windows "Okna" 0
menuText C WindowsComment "Editor koment" 0 {Otevt/zavt editor koment}
menuText C WindowsGList "Seznam parti" 2 {Otevt/zavt okno se seznamem parti}
menuText C WindowsPGN "Okno PGN" 5 {Otevt/zavt okno PGN}
menuText C WindowsPList "Vyhledva hr" 11 {Otevt/zavt okno vyhledvae hr}
menuText C WindowsTmt "Vyhledva turnaj" 11 {Otevt/zavt okno vyhledvae turnaj}
menuText C WindowsSwitcher "Vbr databze" 0 {Otevt/zavt okno pro vbr databz}
menuText C WindowsMaint "Okno drby" 6 {Otevt/zavt okno drby}
menuText C WindowsECO "ECO prohle" 1 {Otevt/zavt okno ECO prohlee}
menuText C WindowsRepertoire "Editor repertoru" 7 {Otevt/zavt editor repertoru zahjen}
menuText C WindowsStats "Statistick okno" 0 {Otevt/zavt statistick okno filtru}
menuText C WindowsTree "Stromov okno" 4 {Otevt/zavt stromov okno}
menuText C WindowsTB "Okno tabulky koncovek" 13 {Otevt/zavt okno tabulek koncovek}
menuText C WindowsBook "Okno knihovny zahjen" 0 {Otevt/zavt okno knihovny zahjen}
menuText C WindowsCorrChess "Korespondenn okno" 0 {Otevt/zavt okno knihovny zahjen}

# Tools menu:
menuText C Tools "Nstroje" 3
menuText C ToolsAnalysis "Program pro analzu..." 0 \
  {Spustit/zastavit achov program pro analzu pozice}
menuText C ToolsAnalysis2 "Program pro analzu #2..." 20 \
  {Spustit/zastavit druh achov program pro analzu pozice}
menuText C ToolsCross "Turnajov tabulka" 0 {Ukzat turnajovou tabulku pro tuto partii}
menuText C ToolsEmail "Email manaer" 1 \
  {Otevt/zavt okno emailovho manaera}
menuText C ToolsFilterGraph "Graf filtru" 0 \
  {Otevt/zavt okno grafu filtru}
menuText C ToolsAbsFilterGraph "Abs. graf filtru" 7 {Otevt/zavt okno grafu filtru s absolutnmi hodnotami}
menuText C ToolsOpReport "Profil zahjen" 7 \
  {Generovat profil zahjen pro aktuln pozic}
menuText C ToolsOpenBaseAsTree "Otevt databzi jako strom" 0   {Otevt databzi a pout ji ve stromovm okn}
menuText C ToolsOpenRecentBaseAsTree "Otevt nedvnou databzi jako strom" 0   {Otevt nedvnou databzi a pout ji ve stromovm okn}
menuText C ToolsTracker "Stopa figur"  0 {Otevt okno stopae figur}
menuText C ToolsTraining "Trnink"  0 {Trninkov nstroje (taktika, zahjen,...) }
menuText C ToolsTacticalGame "Taktick partie"  0 {Hrt partii s taktickm zamenm}
menuText C ToolsSeriousGame "Vn partie"  0 {Hrt vnou partii}
menuText C ToolsTrainOpenings "Zahjen"  0 {Trnovat s repertorem zahjen}
menuText C ToolsTrainReviewGame "Projt partii"  0 {Hdat tahy sehran v partii}
menuText C ToolsTrainTactics "Taktika"  0 {eit taktick koly}
menuText C ToolsTrainCalvar "Propoet variant"  0 {Trnink propotu variant}
menuText C ToolsTrainFindBestMove "Nalzt nejlep tah"  0 {Nalzt nejlep tah}
menuText C ToolsTrainFics "Hrt na internetu"  0 {Hrt na freechess.org}
menuText C ToolsBookTuning "Ladn knihovny zahjen" 0 {Ladn knihovny zahjen}
menuText C ToolsConnectHardware "Pipojit hardware" 0 {Pipojit extern hardware}
menuText C ToolsConnectHardwareConfigure "Konfigurovat..." 0 {Konfigurovat extern hardware a pipojen}
menuText C ToolsConnectHardwareNovagCitrineConnect "Pipojit Novag Citrine" 0 {Pipojit Novag Citrine}
menuText C ToolsConnectHardwareInputEngineConnect "Pipojit vstupn pstroj" 0 {Pipojit vstupn pstroj (nap. DGT)}
menuText C ToolsPInfo "Informace o hrch"  0 \
  {Otevt/aktualizovat okno s informacemi o hrch}
menuText C ToolsPlayerReport "Profil hre..." 7 \
  {Generovat profil hre}
menuText C ToolsRating "Graf ratingu" 5 \
  {Zobrazit graf vvoje ratingu hr aktuln partie}
menuText C ToolsScore "Graf skre" 6  {Zobrazit okno grafu skre}
menuText C ToolsExpCurrent "Export aktuln partie" 7 \
  {Zapsat aktuln partii do textovho souboru}
menuText C ToolsExpCurrentPGN "Export partie do PGN souboru..." 17 \
  {Zapsat aktuln partii do PGN souboru}
menuText C ToolsExpCurrentHTML "Export partie do HTML souboru..." 17 \
  {Zapsat aktuln partii do HTML souboru}
menuText C ToolsExpCurrentHTMLJS "Exportovat partii do souboru HTML s JavaScriptem..." 15 {Uloit aktuln partii do souboru s HTML a JavaScriptem}  
menuText C ToolsExpCurrentLaTeX "Export partie do LaTeX souboru..." 17 \
  {Zapsat aktuln partii do LaTeX souboru}
menuText C ToolsExpFilter "Export filtrovanch parti" 7 \
  {Zapsat vechny filtrovan partie do textovho souboru}
menuText C ToolsExpFilterPGN "Export filtrovanch parti do PGN souboru..." 30 \
  {Zapsat vechny filtrovan partie do PGN souboru}
menuText C ToolsExpFilterHTML "Export filtrovanch parti do HTML souboru..." 30 \
  {Zapsat vechny filtrovan partie do HTML souboru}
menuText C ToolsExpFilterHTMLJS "Exportovat filtr do souboru HTML s JavaScriptem..." 17 {Uloit vechny vyfiltrovan partie do souboru HTML s JavaScriptem}  
menuText C ToolsExpFilterLaTeX "Export filtrovanch parti do LaTeX souboru..." 30 \
  {Zapsat vechny filtrovan partie do LaTeX souboru}
menuText C ToolsImportOne "Import jedn PGN partie..." 7 \
  {Importovat partii z PGN zpisu}
menuText C ToolsImportFile "Import souboru PGN parti..." 10 \
  {Importovat partie z PGN souboru}
menuText C ToolsStartEngine1 "Spustit hern program 1" 0  {Spustit hern program 1}
menuText C ToolsStartEngine2 "Spustit hern program 2" 0  {Spustit hern program 2}
menuText C ToolsCaptureBoard "Uloit aktuln achovnici..." 0  {Uloit aktuln achovnici jako obrzek.}
menuText C Play "Hra" 0
menuText C CorrespondenceChess "Korespondenn ach" 0 {Funkce pro korespondenn ach zaloen na e-mailu a Xfcc}
menuText C CCConfigure "Konfigurovat..." 0 {Konfigurovat extern nstroje a obecn nastaven}
menuText C CCConfigRelay "Konfigurovat sledovn..." 10 {Konfigurovat partie ke sledovn}
menuText C CCOpenDB "Otevt databzi..." 0 {Otevt vchoz korespondenn databzi}
menuText C CCRetrieve "Sthnout partie" 0 {Sthnout partie s pomoc externho (Xfcc-)nstroje}
menuText C CCInbox "Zpracovat pchoz schrnku" 0 {Zpracovat vechny soubory v pchoz schrnce scidu}
menuText C CCSend "Poslat tah" 0 {Poslat tah prostednictvm e-mailu nebo externho (Xfcc-)nstroje}
menuText C CCResign "Vzdt" 0 {Vzdt (nikoliv prostednictvm e-mailu)}
menuText C CCClaimDraw "Reklamovat remzu" 0 {Poslat tah a reklamovat remzu (nikoliv prostednictvm e-mailu)}
menuText C CCOfferDraw "Nabdnout remzu" 0 {Odeslat tah a nabdnout remzu (nikoliv prostednictvm e-mailu)}
menuText C CCAcceptDraw "Pijmout remzu" 0 {Pijmout nabdku remzy (nikoliv prostednictvm e-mailu)}
menuText C CCNewMailGame "Nov e-mailov partie..." 0 {Zat novou e-mailovou partii}
menuText C CCMailMove "Mailovat tah..." 0 {Odeslat tah soupei prostednictvm e-mailu}
menuText C CCGamePage "Strnka partie..." 0 {Vyvolat partii pomoc webovho prohlee}
menuText C CCEditCopy "Zkoprovat seznam parti do schrnky" 0 {Zkoprovat partie jako CVS seznam do schrnky}

# Options menu:
menuText C Options "Volby" 0
menuText C OptionsBoard "achovnice" 1 {Volby zobrazen achovnice}
menuText C OptionsBoardSize "Velikost achovnice" 0 {Zmnit velikost achovnice}
menuText C OptionsBoardPieces "Styl figur" 0 \
  {Zmnit styl zobrazen figur}
menuText C OptionsBoardColors "Barvy..." 0 {Zmnit barvy achovnice}
menuText C OptionsBoardGraphics "Pole..." 0 {Vybrat vzorek pro pole}
translate C OptionsBGW {Vybrat vzorek pro pole}
translate C OptionsBoardGraphicsText {Vybrat grafick soubory pro bl a ern pole:}
menuText C OptionsBoardNames "Jmna mch hr..." 0 {Editovat jmna mch hr}
menuText C OptionsExport "Volby exportu" 7 {Zmnit volby pro textov export}
menuText C OptionsFonts "Fonty" 2 {Zmnit fonty}
menuText C OptionsFontsRegular "Zkladn" 0 {Zmnit zkladn font}
menuText C OptionsFontsMenu "Menu" 1 {Zmnit font pro menu}
menuText C OptionsFontsSmall "Mal" 0 {Zmnit mal font}
# ====== TODO To be translated ======
menuText C OptionsFontsTiny "Tiny" 0 {Change the tiny font}
menuText C OptionsFontsFixed "Fixn" 0 {Zmnit font fixn ky}
menuText C OptionsGInfo "Informace o partii" 0 {Volby pro informace o partii}
menuText C OptionsLanguage "Jazyk" 0 {Vybrat jazyk menu}
menuText C OptionsMovesTranslatePieces "Pekldat figury" 0 {Pekldat prvn psmena figur}
menuText C OptionsMovesHighlightLastMove "Zvrazovat posledn tah" 0 {Zvrazovat posledn tah}
menuText C OptionsMovesHighlightLastMoveDisplay "Ukzat" 0 {Zobrazit zvraznn posledn tah}
menuText C OptionsMovesHighlightLastMoveWidth "ka" 0 {Tlouka ry}
menuText C OptionsMovesHighlightLastMoveColor "Barva" 0 {Barva ry}
menuText C OptionsMoves "Tahy" 0 {Volby pro zadvn tah}
menuText C OptionsMovesAsk "Ptt se ped nahrazenm tah" 0 \
  {Ptt se vdy ped pepsnm existujcho tahu}
menuText C OptionsMovesAnimate "as animace" 4 \
  {Nastavit as pouit na animaci tah}
menuText C OptionsMovesDelay "Prodleva pi automatickm pehrvn..." 1 \
  {Nastavit asovou prodlevu pi automatickm pehrvn}
menuText C OptionsMovesCoord "Souadnicov zadvn tah" 0 \
  {Povolit zadvn tah pomoc souadnic (nap. "g1f3")}
menuText C OptionsMovesSuggest "Ukzat navrhovan tahy" 0 \
  {Zapnout/vypnout zobrazovn navrhovanch tah}
menuText C OptionsShowVarPopup "Zobrazit okno variant" 0 {Zapnout/vypnout zobrazen okna variant}  
menuText C OptionsMovesSpace "Pidat mezeru za slo tahu" 0 {Pidat mezeru za slo tahu}  
menuText C OptionsMovesKey "Klvesnicov doplovn" 13 \
  {Zapnout/vypnout automatick doplovn tah zadvanch klvesnic}
menuText C OptionsMovesShowVarArrows "Zobrazit ipky pro varianty" 0 {Zapnout/vypnout zobrazovn ipek ukazujcch tahy variant}
menuText C OptionsNumbers "Formt sel" 0 {Zvolit formt sel}
menuText C OptionsStartup "Pi sputn" 4 {Zvolit okna, kter se otevou pi sputn}
menuText C OptionsTheme "Tma" 0 {Zmnit vzhled uivatelskho rozhran}
menuText C OptionsWindows "Okna" 0 {Volby oken}
menuText C OptionsWindowsIconify "Automatick minimalizace" 12 \
   {Minimalizovat vechna okna pi minimalizovn hlavnho okna}
menuText C OptionsWindowsRaise "Automaticky do poped" 15 \
  {Dt do poped jist okna, jsou-li zakryt}
menuText C OptionsSounds "Zvuky..." 2 {Konfigurovat zvuky oznamujc tah}
menuText C OptionsWindowsDock "Zaparkovat okna" 0 {Zaparkovat okna}
menuText C OptionsWindowsSaveLayout "Uloit rozloen" 0 {Uloit rozloen}
menuText C OptionsWindowsRestoreLayout "Obnovit rozloen" 0 {Obnovit rozloen}
menuText C OptionsWindowsShowGameInfo "Ukzat informace o partii" 0 {Ukzat informace o partii}
menuText C OptionsWindowsAutoLoadLayout "Automaticky nathnout prvn rozloen" 0 {Automaticky na zatku nathnout prvn rozloen}
menuText C OptionsToolbar "Nstrojov lita..." 11 \
  {Konfigurovat nstrojovou litu hlavnho okna}
menuText C OptionsECO "Nathnout ECO soubor..." 10 {Nathnout soubor s klasifikac ECO}
menuText C OptionsSpell "Nathnout soubor pro kontrolu pravopisu..." 21 \
  {Nathnout soubor Scidu pro kontrolu pravopisu}
menuText C OptionsTable "Adres pro tabulky koncovek..." 14 \
  {Vybrat soubor s tabulkami koncovek; vechny tabulky koncovek v jeho adresi budou pouity}
menuText C OptionsRecent "Nedvn soubory..." 0 \
  {Zmnit poet nedvnch soubor zobrazovanch v menu Soubor}
menuText C OptionsBooksDir "Adres knihoven zahjen..." 0 {Nastaven adrese knihoven zahjen}
menuText C OptionsTacticsBasesDir "Adres databz..." 0 {Nastaven adres taktickch (trninkovch) databz}
menuText C OptionsSave "Uloit volby" 0 \
  "Uloit vechny nastaviteln volby do souboru $::optionsFile"
menuText C OptionsAutoSave "Automaticky ukldat volby pi ukonen" 20 \
  {Automaticky ukldat vechny volby pi ukonen Scidu}

# Help menu:
menuText C Help "Npovda" 0
menuText C HelpContents "Obsah" 0 {Zobrazit strnku npovdy s obsahem}
menuText C HelpIndex "Index" 0 {Zobrazit strnku npovdy s indexem}
menuText C HelpGuide "Rychl prvodce" 7 {Zobrazit strnku npovdy s rychlm prvodcem}
menuText C HelpHints "Rady" 0 {Zobrazit strnku npovdy s radami}
menuText C HelpContact "Kontakt" 0 {Zobrazit strnku npovdy s kontaktnmi informacemi}
menuText C HelpTip "Tip dne" 4 {Zobrazit uiten tip Scidu}
menuText C HelpStartup "Startovac okno" 0 {Zobrazit startovac okno}
menuText C HelpAbout "O aplikaci Scid" 2 {Informace o aplikaci Scid}

# Game info box popup menu:
menuText C GInfoHideNext "Skrt nsledujc tah" 0
menuText C GInfoMaterial "Ukzat hodnoty materilu" 15
menuText C GInfoFEN "Ukzat FEN" 7
menuText C GInfoMarks "Zobrazovat barevn pole a ipky" 11
menuText C GInfoWrap "Zalamovat dlouh dky" 0
menuText C GInfoFullComment "Zobrazit pln koment" 15
menuText C GInfoPhotos "Zobrazit fotky" 10
menuText C GInfoTBNothing "Tabulky koncovek: nic" 19
menuText C GInfoTBResult "Tabulky koncovek: jen vsledek" 23
menuText C GInfoTBAll "Tabulky koncovek: vsledek a nejlep tahy" 39
menuText C GInfoDelete "Vymazat/Nemazat tuto partii" 0
menuText C GInfoMark "Oznait/Odznait tuto partii" 0
menuText C GInfoInformant "Konfigurovat informtorov hodnoty" 0

# Main window buttons:
helpMsg C .main.fbutton.button.start {Jdi na zatek partie  (klvesa: Home)}
helpMsg C .main.fbutton.button.end {Jdi na konec partie  (klvesa: End)}
helpMsg C .main.fbutton.button.back {Jdi o jeden tah nazpt  (klvesa: ipkaVlevo)}
helpMsg C .main.fbutton.button.forward {Jdi o jeden tah dopedu  (klvesa: ipkaVpravo)}
helpMsg C .main.fbutton.button.intoVar {Sko do varianty  (klvesov zkratka: v)}
helpMsg C .main.fbutton.button.exitVar {Opus aktuln variantu  (klvesov zkratka: z)}
helpMsg C .main.fbutton.button.flip {Oto achovnici  (klvesov zkratka: .)}
helpMsg C .main.fbutton.button.coords {Zapnout/Vypnout zobrazovn souadnic achovnice  (klvesov zkratka: 0)}
helpMsg C .main.fbutton.button.stm {Zapnout/Vypnout zobrazovn ikony strany, kter je na tahu}
helpMsg C .main.fbutton.button.autoplay {Automatick pehrvn tah  (klvesa: Ctrl+Z)}

# General buttons:
translate C Back {Zpt}
translate C Browse {Prohlet}
translate C Cancel {Zruit}
translate C Continue {Pokraovat}
translate C Clear {Vyistit}
translate C Close {Zavt}
translate C Contents {Obsah}
translate C Defaults {Pedvolen}
translate C Delete {Vymazat}
translate C Graph {Graf}
translate C Help {Npovda}
translate C Import {Import}
translate C Index {Index}
translate C LoadGame {Nathnout partii}
translate C BrowseGame {Prohldnout partii}
translate C MergeGame {Pipojit partii}
translate C MergeGames {Pipojit partie}
translate C Preview {Nhled}
translate C Revert {Vrtit se}
translate C Save {Uloit}
translate C Search {Hledat}
translate C Stop {Stop}
translate C Store {Uschovat}
translate C Update {Aktualizovat}
translate C ChangeOrient {Zmnit orientaci okna}
translate C ShowIcons {Zobrazit ikony}
translate C None {Nic}
translate C First {Prvn}
translate C Current {Aktuln}
translate C Last {Posledn}

# General messages:
translate C game {partie}
translate C games {partie}
translate C move {tah}
translate C moves {tahy}
translate C all {ve}
translate C Yes {Ano}
translate C No {Ne}
translate C Both {Oba}
translate C King {Krl}
translate C Queen {Dma}
translate C Rook {V}
translate C Bishop {Stelec}
translate C Knight {Jezdec}
translate C Pawn {Pec}
translate C White {Bl}
translate C Black {ern}
translate C Player {Hr}
translate C Rating {Rating}
translate C RatingDiff {Rozdl v ratingu (Bl - ern)}
translate C AverageRating {Prmrn rating}
translate C Event {Turnaj}
translate C Site {Msto}
translate C Country {Zem}
translate C IgnoreColors {Ignorovat barvy}
translate C Date {Datum}
translate C EventDate {Datum turnaje}
translate C Decade {Dekda}
translate C Year {Rok}
translate C Month {Msc}
translate C Months {Leden nor Bezen Duben Kvten erven ervenec Srpen Z jen Listopad Prosinec}
translate C Days {Ned Pon te St tv Pt Sob}
translate C YearToToday {Rok zpt}
translate C Result {Vsledek}
translate C Round {Kolo}
translate C Length {Dlka}
translate C ECOCode {ECO kd}
translate C ECO {ECO}
translate C Deleted {Vymazn(a)}
translate C SearchResults {Hledat vsledky}
translate C OpeningTheDatabase {Databze zahjen}
translate C Database {Databze}
translate C Filter {Filtr}
translate C noGames {dn partie}
translate C allGames {vechny partie}
translate C empty {przdn}
translate C clipbase {schrnka}
translate C score {skre}
translate C StartPos {Poten pozice}
translate C Total {Celkem}
translate C readonly {jen ke ten}

# Standard error messages:
translate C ErrNotOpen {To nen oteven databze.}
translate C ErrReadOnly {Tato databze je jen ke ten; neme bt zmnna.}
translate C ErrSearchInterrupted {Hledn bylo perueno; vsledky nejsou kompletn.}

# Game information:
translate C twin {zdvojen}
translate C deleted {vymazan}
translate C comment {koment}
translate C hidden {skryt}
translate C LastMove {Posledn tah}
translate C NextMove {Nsledujc tah}
translate C GameStart {Zatek partie}
translate C LineStart {Zatek srie tah}
translate C GameEnd {Konec partie}
translate C LineEnd {Konec srie tah}

# Player information:
translate C PInfoAll {Vsledky <b>vech</b> parti}
translate C PInfoFilter {Vsledky <b>filtrovanch</b> parti}
translate C PInfoAgainst {Vsledky proti}
translate C PInfoMostWhite {Nejastj zahjen za bl}
translate C PInfoMostBlack {Nejastj zahjen za ern}
translate C PInfoRating {Historie ratingu}
translate C PInfoBio {Biografie}
translate C PInfoEditRatings {Editovat ratingy}

# Tablebase information:
translate C Draw {Remza}
translate C stalemate {pat}
translate C withAllMoves {se vemi tahy}
translate C withAllButOneMove {se vemi tahy krom poslednho}
translate C with {s}
translate C only {jen}
translate C lose {prohrt}
translate C loses {prohrv}
translate C allOthersLose {vechny ostatn prohrvaj}
translate C matesIn {matuje bhem}
translate C hasCheckmated {zmatoval}
translate C longest {nejdel}
translate C WinningMoves {vyhrvajc tahy}
translate C DrawingMoves {remizujc tahy}
translate C LosingMoves {prohrvajc tahy}
translate C UnknownMoves {tahy s neznmm vsledkem}

# Tip of the day:
translate C Tip {Tip}
translate C TipAtStartup {Tip pi sputn}

# Tree window menus:
menuText C TreeFile "Soubor" 0
menuText C TreeFileFillWithBase "Naplnit cache z databze" 0 {Naplnit cachovac soubor vemi partiemi z aktuln databze}
menuText C TreeFileFillWithGame "Naplnit cache parti" 0 {Naplnit cachovac soubor aktuln parti z aktuln databze}
menuText C TreeFileSetCacheSize "Velikost cache" 0 {Nastavit velikost cache}
menuText C TreeFileCacheInfo "Informace o cache" 0 {Zskat informaci o vyuit cache}
menuText C TreeFileSave "Uloit cache soubor" 0 \
  {Uloit stromov cache (.stc) soubor}
menuText C TreeFileFill "Naplnit cache soubor" 0 \
  {Naplnit cache soubor nejbnjmi pozicemi zahjen}
menuText C TreeFileBest "Seznam nejlepch parti" 0 {Zobrazit seznam nejlepch parti  stromu}
menuText C TreeFileGraph "Okno grafu" 0 {Zobrazit graf pro tuto vtev stromu}
menuText C TreeFileCopy "Koprovat text stromu do clipboardu" 0 \
  {Koprovat stromov statistiky do textovho vbru}
menuText C TreeFileClose "Zavt stromov okno" 0 {Zavt stromov okno}
menuText C TreeMask "Maska" 0
menuText C TreeMaskNew "Nov" 0 {Nov maska}
menuText C TreeMaskOpen "Otevt" 0 {Otevt masku}
menuText C TreeMaskOpenRecent "Otevt nedvnou" 0 {Otevt nedvnou masku}
menuText C TreeMaskSave "Uloit" 0 {Uloit masku}
menuText C TreeMaskClose "Zavt" 0 {Uzavt masku}
menuText C TreeMaskFillWithGame "Naplnit parti" 0 {Naplnit masku parti}
menuText C TreeMaskFillWithBase "Naplnit databz" 0 {Naplnit masku vemi partiemi z databze}
menuText C TreeMaskInfo "Informace" 0 {Ukzat statistiku aktuln masky}
menuText C TreeMaskDisplay "Ukzat mapu masky" 0 {Ukzat data masky ve form stromu}
menuText C TreeMaskSearch "Hledat" 0 {Hledat v aktuln masce}
menuText C TreeSort "adit" 2
menuText C TreeSortAlpha "Abecedn" 0
menuText C TreeSortECO "ECO kd" 0
menuText C TreeSortFreq "Frekvence" 0
menuText C TreeSortScore "Skre" 0
menuText C TreeOpt "Volby" 0
menuText C TreeOptSlowmode "Pomal reim" 0 {Pomal reim aktualizace (vysok pesnost)}
menuText C TreeOptFastmode "Rychl reim" 0 {Rychl reim aktualizace (beze zmny poad tah)}
menuText C TreeOptFastAndSlowmode "Rychl a pomal reim" 0 {Rychl reim a potom pomal reim aktualizace}
menuText C TreeOptStartStop "Automatick aktualizace" 0 {Pepnout automatick aktualizace stromovho okna}
menuText C TreeOptLock "Zamknout" 0 {Zamknout/Odemknout strom k aktuln databzi}
menuText C TreeOptTraining "Trnink" 0 {Zapnout/Vypnout stromov trninkov md}
menuText C TreeOptAutosave "Automatick ukldn cache souboru" 0 \
  {Automatick ukldn cache souboru pi uzaven stromovho okna}
menuText C TreeHelp "Npovda" 0
menuText C TreeHelpTree "Npovda - Strom" 11
menuText C TreeHelpIndex "Index npovdy" 0
translate C SaveCache {Uloit cache}
translate C Training {Trnink}
translate C LockTree {Zamknout}
translate C TreeLocked {Zamknuto}
translate C TreeBest {Nejlep}
translate C TreeBestGames {Nejlep partie stromu}
# Note: the next message is the tree window title row. After editing it,
# check the tree window to make sure it lines up with the actual columns.
translate C TreeTitleRow \
  {    Tah    ECO       Frekvence    Skre  PrElo Perf  PrRok %remz}
translate C TreeTotal {CELKEM}
translate C DoYouWantToSaveFirst {Chcete nejprve uloit}
translate C AddToMask {Pidat do masky}
translate C RemoveFromMask {Odstranit z masky}
translate C AddThisMoveToMask {Pidat tento tah do masky}
translate C SearchMask {Hledat v masce}
translate C DisplayMask {Zobrazit masku}
translate C Nag {Nag kd}
translate C Marker {Znaka}
translate C Include {Zahrnout}
translate C Exclude {Vylouit}
translate C MainLine {Hlavn varianta}
translate C Bookmark {Zloka}
translate C NewLine {Nov varianta}
translate C ToBeVerified {K proven}
translate C ToTrain {Trnovat}
translate C Dubious {Pochybn}
translate C ToRemove {Odstranit}
translate C NoMarker {dn znaka}
translate C ColorMarker {Barva}
translate C WhiteMark {Bl}
translate C GreenMark {Zelen}
translate C YellowMark {lut}
translate C BlueMark {Modr}
translate C RedMark {erven}
translate C CommentMove {Okomentovat tah}
translate C CommentPosition {Okomentovat pozici}
translate C AddMoveToMaskFirst {Nejprve pidejte tah do masky}
translate C OpenAMaskFileFirst {Nejprve otevete soubor masky}
translate C Positions {Pozice}
translate C Moves {Tahy}

# Finder window:
menuText C FinderFile "Soubor" 0
menuText C FinderFileSubdirs "Hledat v podadresch" 0
menuText C FinderFileClose "Zavt vyhledva soubor" 0
menuText C FinderSort "adit" 2
menuText C FinderSortType "Typ" 0
menuText C FinderSortSize "Velikost" 0
menuText C FinderSortMod "Zmnno" 0
menuText C FinderSortName "Jmno" 0
menuText C FinderSortPath "Cesta" 0
menuText C FinderTypes "Typy" 0
menuText C FinderTypesScid "Databze Scidu" 0
menuText C FinderTypesOld "Databze Scidu starho formtu" 15
menuText C FinderTypesPGN "PGN soubory" 0
menuText C FinderTypesEPD "EPD soubory" 0
menuText C FinderTypesRep "Repertorov soubory" 0
menuText C FinderHelp "Npovda" 0
menuText C FinderHelpFinder "Npovda - Vyhledva soubor" 11
menuText C FinderHelpIndex "Index npovdy" 0
translate C FileFinder {Vyhledva soubor}
translate C FinderDir {Adres}
translate C FinderDirs {Adrese}
translate C FinderFiles {Soubory}
translate C FinderUpDir {nahoru}
translate C FinderCtxOpen {Otevt}
translate C FinderCtxBackup {Zlohovat}
translate C FinderCtxCopy {Koprovat}
translate C FinderCtxMove {Pesunout}
translate C FinderCtxDelete {Smazat}

# Player finder:
menuText C PListFile "Soubor" 0
menuText C PListFileUpdate "Aktualizovat" 0
menuText C PListFileClose "Zavt vyhledva hr" 0
menuText C PListSort "adit" 2
menuText C PListSortName "Jmno" 0
menuText C PListSortElo "ELO" 0
menuText C PListSortGames "Partie" 0
menuText C PListSortOldest "Nejstar" 3
menuText C PListSortNewest "Nejnovj" 3

# Tournament finder:
menuText C TmtFile "Soubor" 0
menuText C TmtFileUpdate "Aktualizovat" 0
menuText C TmtFileClose "Zavt vyhledva soubor" 0
menuText C TmtSort "adit" 2
menuText C TmtSortDate "Datum" 0
menuText C TmtSortPlayers "Hri" 0
menuText C TmtSortGames "Partie" 0
menuText C TmtSortElo "ELO" 0
menuText C TmtSortSite "Msto" 0
menuText C TmtSortEvent "Turnaj" 0
menuText C TmtSortWinner "Vtz" 0
translate C TmtLimit "Limit seznamu"
translate C TmtMeanElo "Prmrn ELO"
translate C TmtNone "dn odpovdajc turnaje nebyly nalezeny."

# Graph windows:
menuText C GraphFile "Soubor" 0
menuText C GraphFileColor "Uloit jako barevn Postscript..." 12
menuText C GraphFileGrey "Uloit jako ernobl Postscript..." 13
menuText C GraphFileClose "Zavt okno" 0
menuText C GraphOptions "Volby" 0
menuText C GraphOptionsWhite "Bl" 0
menuText C GraphOptionsBlack "ern" 1
menuText C GraphOptionsBoth "Oba" 0
menuText C GraphOptionsPInfo "Informace o hri" 0
translate C GraphFilterTitle "Graf filtru: etnost na 1000 parti"
translate C GraphAbsFilterTitle "Graf filtru: etnost parti"
translate C ConfigureFilter {Konfigurovat x-souadnici pro rok, rating a tahy}
translate C FilterEstimate "Odhadnout"
translate C TitleFilterGraph "Scid: Graf filtru"

# Analysis window:
translate C AddVariation {Pidat variantu}
translate C AddAllVariations {Pidat vechny varianty}
translate C AddMove {Pidat tah}
translate C Annotate {Anotace}
translate C ShowAnalysisBoard {Ukzat achovnici analzy}
translate C ShowInfo {Ukzat informaci o hernm programu}
translate C FinishGame {Ukonit partii}
translate C StopEngine {Zastavit hern program}
translate C StartEngine {Spustit hern program}
translate C LockEngine {Uzamt hern program v aktuln pozici}
translate C AnalysisCommand {Program pro analzu}
translate C PreviousChoices {Pedchoz vybran programy}
translate C AnnotateTime {Nastavit as mezi tahy v sekundch}
translate C AnnotateWhich {Pidat varianty}
translate C AnnotateAll {Pro tahy obou stran}
translate C AnnotateAllMoves {Anotovat vechny tahy}
translate C AnnotateWhite {Pouze pro tahy blho}
translate C AnnotateBlack {Pouze pro tahy ernho}
translate C AnnotateBlundersOnly {Jestlie tah v partii je evidentn hrub chyba}
translate C AnnotateBlundersOnlyScoreChange {Analza ukazuje hrubou chybu, jestlie se skre zmn z/na: }
translate C BlundersThreshold {Hranice}
# TODO: Translate
translate C ScoreAllMoves {Score all moves}
translate C LowPriority {Nzk priorita procesoru}
translate C ClickHereToSeeMoves {Kliknte sem pro zobrazen tah}
translate C ConfigureInformant {Konfigurovat informtor}
translate C Informant!? {Zajmav tah}
translate C Informant? {Slab tah}
translate C Informant?? {Hrub chyba}
translate C Informant?! {Pochybn tah}
translate C Informant+= {Bl m malou vhodu}
translate C Informant+/- {Bl m stedn vhodu}
translate C Informant+- {Bl m rozhodujc vhodu}
translate C Informant++- {Partie je povaovna za vyhranou}
translate C Book {Knihovna zahjen}
translate C OtherBookMoves {Soupeova knihovna zahjen}
translate C OtherBookMovesTooltip {Tahy, na kter m soupe odpov}
# Analysis Engine open dialog:
translate C EngineList {Seznam hernch program pro analzu}
translate C EngineName {Jmno}
translate C EngineCmd {Pkaz}
translate C EngineArgs {Parametry}
translate C EngineDir {Adres}
translate C EngineElo {ELO}
translate C EngineTime {Datum}
translate C EngineNew {Nov}
translate C EngineEdit {Editace}
translate C EngineRequired {Tun vyznaen poloky jsou povinn; ostatn jsou voliteln}

# Stats window menus:
menuText C StatsFile "Soubor" 0
menuText C StatsFilePrint "Vytisknout do souboru..." 0
menuText C StatsFileClose "Zavt okno" 0
menuText C StatsOpt "Volby" 0

# PGN window menus:
menuText C PgnFile "Soubor" 0
menuText C PgnFileCopy "Koprovat partii do clipboardu" 0
menuText C PgnFilePrint "Vytisknout do souboru..." 0
menuText C PgnFileClose "Zavt okno PGN" 0
menuText C PgnOpt "Zobrazit" 0
menuText C PgnOptColor "Barevn zobrazen" 0
menuText C PgnOptShort "Krtk (tdkov) hlavika" 20
menuText C PgnOptSymbols "Symbolick anotace" 0
menuText C PgnOptIndentC "Odsazovat komente" 10
menuText C PgnOptIndentV "Odsazovat varianty" 10
menuText C PgnOptColumn "Sloupcov styl (jeden tah na dek)" 1
menuText C PgnOptSpace "Mezera za slem tahu" 0
menuText C PgnOptStripMarks "Odstranit kdy barevnch pol a ipek" 0
menuText C PgnOptBoldMainLine "Pout tun text pro tahy hlavn varianty" 4
menuText C PgnColor "Barvy" 0
menuText C PgnColorHeader "Hlavika..." 0
menuText C PgnColorAnno "Anotace..." 0
menuText C PgnColorComments "Komente..." 0
menuText C PgnColorVars "Varianty..." 0
menuText C PgnColorBackground "Pozad..." 0
menuText C PgnColorMain "Hlavn varianta..." 0
menuText C PgnColorCurrent "Pozad aktulnho tahu..." 1
menuText C PgnColorNextMove "Pozad ptho tahu..." 0
menuText C PgnHelp "Npovda" 0
menuText C PgnHelpPgn "Npovda - Okno PGN " 16
menuText C PgnHelpIndex "Index npovdy" 0
translate C PgnWindowTitle {Zpis partie - partie %u}

# Crosstable window menus:
menuText C CrosstabFile "Soubor" 0
menuText C CrosstabFileText "Vytisknout do textovho souboru..." 14
menuText C CrosstabFileHtml "Vytisknout do HTML souboru..." 14
menuText C CrosstabFileLaTeX "Vytisknout do LaTeX souboru..." 14
menuText C CrosstabFileClose "Zavt okno turnajov tabulky" 0
menuText C CrosstabEdit "Editovat" 0
menuText C CrosstabEditEvent "Turnaj" 0
menuText C CrosstabEditSite "Msto" 0
menuText C CrosstabEditDate "Datum" 0
menuText C CrosstabOpt "Zobrazit" 0
menuText C CrosstabOptAll "Kad s kadm" 0
menuText C CrosstabOptSwiss "vcarsk systm" 3
menuText C CrosstabOptKnockout "Vyazovac" 4
menuText C CrosstabOptAuto "Auto" 0
menuText C CrosstabOptAges "Vk" 0
menuText C CrosstabOptNats "Nrodnost" 0
menuText C CrosstabOptRatings "Rating" 0
menuText C CrosstabOptTitles "Titul" 0
menuText C CrosstabOptBreaks "Vsledky tie-breaku" 10
menuText C CrosstabOptDeleted "Vetn vymazanch parti" 9
menuText C CrosstabOptColors "Barvy (jen pro vcarsk systm)" 0
menuText C CrosstabOptColumnNumbers "slovan sloupce (jen v tabulkch 'kad s kadm')" 3
menuText C CrosstabOptGroup "Skupiny podle skre" 0
menuText C CrosstabSort "adit" 2
menuText C CrosstabSortName "Jmno" 0
menuText C CrosstabSortRating "Rating" 0
menuText C CrosstabSortScore "Skre" 0
menuText C CrosstabColor "Barvy" 0
menuText C CrosstabColorPlain "Prost text" 0
menuText C CrosstabColorHyper "Hypertext" 0
menuText C CrosstabHelp "Npovda" 0
menuText C CrosstabHelpCross "Npovda - Turnajovou tabulku" 11
menuText C CrosstabHelpIndex "Index npovdy" 0
translate C SetFilter {Nastavit filtr}
translate C AddToFilter {Pidat do filtru}
translate C Swiss {vcarsk systm}
translate C Category {Kategorie}

# Opening report window menus:
menuText C OprepFile "Soubor" 0
menuText C OprepFileText "Vytisknout do textovho souboru..." 14
menuText C OprepFileHtml "Vytisknout do HTML souboru..." 14
menuText C OprepFileLaTeX "Vytisknout do LaTeX souboru..." 14
menuText C OprepFileOptions "Volby" 0
menuText C OprepFileClose "Zavt okno s profilem" 0
menuText C OprepFavorites "Oblben" 0
menuText C OprepFavoritesAdd "Pidat profil..." 0
menuText C OprepFavoritesEdit "Editovat oblben profily..." 0
menuText C OprepFavoritesGenerate "Generovat profil..." 0
menuText C OprepHelp "Npovda" 0
menuText C OprepHelpReport "Npovda - Profil zahjen" 11
menuText C OprepHelpIndex "Index npovdy" 11

# Repertoire editor:
menuText C RepFile "Soubor" 0
menuText C RepFileNew "Nov" 0
menuText C RepFileOpen "Otevt..." 0
menuText C RepFileSave "Uloit..." 0
menuText C RepFileSaveAs "Uloit jako..." 7
menuText C RepFileClose "Zavt okno" 0
menuText C RepEdit "Editace" 0
menuText C RepEditGroup "Pidat skupinu" 0
menuText C RepEditInclude "Zahrnout variantu" 0
menuText C RepEditExclude "Vylouit variantu" 0
menuText C RepView "Zobrazit" 0
menuText C RepViewExpand "Rozbalit vechny skupiny" 0
menuText C RepViewCollapse "Sbalit vechny skupiny" 0
menuText C RepSearch "Hledat" 0
menuText C RepSearchAll "Veker repertor..." 0
menuText C RepSearchDisplayed "Pouze zobrazen varianty..." 0
menuText C RepHelp "Npovda" 0
menuText C RepHelpRep "Npovda - Repertor" 11
menuText C RepHelpIndex "Index npovdy" 0
translate C RepSearch "Repertorov vyhledvn"
translate C RepIncludedLines "zahrnut varianty"
translate C RepExcludedLines "vylouen varianty"
translate C RepCloseDialog {Tento repertor obsahuje neuloen zmny.

Opravdu chcete pokraovat a zruit vechny zmny, kter jste uinili?
}

# Header search:
translate C HeaderSearch {Hledat podle hlaviky}
translate C EndSideToMove {Strana na tahu na konci hry}
translate C GamesWithNoECO {Partie bez ECO?}
translate C GameLength {Dlka Partie}
translate C FindGamesWith {Najt partie s pznaky}
translate C StdStart {Nestandardn start}
translate C Promotions {Promny}
translate C Comments {Komente}
translate C Variations {Varianty}
translate C Annotations {Anotace}
translate C DeleteFlag {Mazac pznak}
translate C WhiteOpFlag {Zahjen blho}
translate C BlackOpFlag {Zahjen ernho}
translate C MiddlegameFlag {Stedn hra}
translate C EndgameFlag {Koncovka}
translate C NoveltyFlag {Novinka}
translate C PawnFlag {Pcov struktura}
translate C TacticsFlag {Taktika}
translate C QsideFlag {Hra na dmskm kdle}
translate C KsideFlag {Hra na krlovskm kdle}
translate C BrilliancyFlag {Velmi siln tah}
translate C BlunderFlag {Hrub chyba}
translate C UserFlag {Uivatel}
translate C PgnContains {PGN obsahuje text}
# ====== TODO To be translated ======
translate C Annotator {Annotator}
# ====== TODO To be translated ======
translate C Cmnts {Annotated games only}

# Game list window:
translate C GlistNumber {slo}
translate C GlistWhite {Bl}
translate C GlistBlack {ern}
translate C GlistWElo {B-ELO}
translate C GlistBElo {-ELO}
translate C GlistEvent {Turnaj}
translate C GlistSite {Msto}
translate C GlistRound {Kolo}
translate C GlistDate {Datum}
translate C GlistYear {Rok}
translate C GlistEDate {Datum turnaje}
translate C GlistResult {Vsledek}
translate C GlistLength {Dlka}
translate C GlistCountry {Zem}
translate C GlistECO {ECO}
translate C GlistOpening {Zahjen}
translate C GlistEndMaterial {Materil na konci}
translate C GlistDeleted {Vymazn(a)}
translate C GlistFlags {Pznak}
translate C GlistVars {Varianty}
translate C GlistComments {Komente}
translate C GlistAnnos {Anotace}
translate C GlistStart {Poten pozice}
translate C GlistGameNumber {slo partie}
# ====== TODO To be translated ======
translate C GlistAverageElo {Average Elo}
# ====== TODO To be translated ======
translate C GlistRating {Rating}
translate C GlistFindText {Hledat text}
translate C GlistMoveField {Pesunout}
translate C GlistEditField {Konfigurovat}
translate C GlistAddField {Pidat}
translate C GlistDeleteField {Odebrat}
translate C GlistWidth {ka}
translate C GlistAlign {Zarovnat}
# ====== TODO To be translated ======
translate C GlistAlignL {Align: left}
# ====== TODO To be translated ======
translate C GlistAlignR {Align: right}
# ====== TODO To be translated ======
translate C GlistAlignC {Align: center}
translate C GlistColor {Barva}
translate C GlistSep {Oddlova}
# ====== TODO To be translated ======
translate C GlistCurrentSep {-- Current --}
# ====== TODO To be translated ======
translate C GlistNewSort {New}
# ====== TODO To be translated ======
translate C GlistAddToSort {Add}
# ====== TODO To be translated ======
translate C GsortSort {Sort...}
# ====== TODO To be translated ======
translate C GsortDate {Date}
# ====== TODO To be translated ======
translate C GsortYear {Year}
# ====== TODO To be translated ======
translate C GsortEvent {Event}
# ====== TODO To be translated ======
translate C GsortSite {Site}
# ====== TODO To be translated ======
translate C GsortRound {Round}
# ====== TODO To be translated ======
translate C GsortWhiteName {White Name}
# ====== TODO To be translated ======
translate C GsortBlackName {Black Name}
# ====== TODO To be translated ======
translate C GsortECO {ECO}
# ====== TODO To be translated ======
translate C GsortResult {Result}
# ====== TODO To be translated ======
translate C GsortMoveCount {Move Count}
# ====== TODO To be translated ======
translate C GsortAverageElo {Average Elo}
# ====== TODO To be translated ======
translate C GsortCountry {Country}
# ====== TODO To be translated ======
translate C GsortDeleted {Deleted}
# ====== TODO To be translated ======
translate C GsortEventDate {Event Date}
# ====== TODO To be translated ======
translate C GsortWhiteElo {White Elo}
# ====== TODO To be translated ======
translate C GsortBlackElo {Black Elo}
# ====== TODO To be translated ======
translate C GsortComments {Comments}
# ====== TODO To be translated ======
translate C GsortVariations {Variations}
# ====== TODO To be translated ======
translate C GsortNAGs {NAGs}
# ====== TODO To be translated ======
translate C GsortAscending {Ascending}
# ====== TODO To be translated ======
translate C GsortDescending {Descending}
# ====== TODO To be translated ======
translate C GsortAdd {Add}
# ====== TODO To be translated ======
translate C GsortStore {Store}
# ====== TODO To be translated ======
translate C GsortLoad {Load}
translate C GlistRemoveThisGameFromFilter  {Odstranit tuto partii z filtru}
translate C GlistRemoveGameAndAboveFromFilter  {Odstranit partii (a vechny nad n) z filtru}
translate C GlistRemoveGameAndBelowFromFilter  {Odstranit partii (a vechny pod n) z filtru}
translate C GlistDeleteGame {Smazat/obnovit tuto partii} 
translate C GlistDeleteAllGames {Smazat vechny partii obsaen ve filtru} 
translate C GlistUndeleteAllGames {Obnovit vechny smazan partie obsaen ve filtru} 
translate C GlistMergeGameInBase {Pipojit partii z jin databze} 

# Maintenance window:
translate C DatabaseName {Jmno databze:}
translate C TypeIcon {Symbol:}
translate C NumOfGames {Partie:}
translate C NumDeletedGames {Vymazan partie:}
translate C NumFilterGames {Partie ve filtru:}
translate C YearRange {Rozsah rok:}
translate C RatingRange {Rozsah ratingu:}
translate C Description {Popis}
translate C Flag {Pznak}
translate C CustomFlags {Uivatelsk pznaky}
translate C DeleteCurrent {Vymazat aktuln partii}
translate C DeleteFilter {Vymazat filtrovan partie}
translate C DeleteAll {Vymazat vechny partie}
translate C UndeleteCurrent {Obnovit aktuln partie po vymazn}
translate C UndeleteFilter {Obnovit filtrovan partie po vymazn}
translate C UndeleteAll {Obnovit vechny partie po vymazn}
translate C DeleteTwins {Vymazat zdvojen partie}
translate C MarkCurrent {Oznait aktivn partii}
translate C MarkFilter {Oznait filtrovan partie}
translate C MarkAll {Oznait vechny partie}
translate C UnmarkCurrent {Odznait aktuln partii}
translate C UnmarkFilter {Odznait filtrovan partie}
translate C UnmarkAll {Odznait vechny partie}
translate C Spellchecking {Kontrola pravopisu}
translate C Players {Hri}
translate C Events {Turnaje}
translate C Sites {Msta}
translate C Rounds {Kola}
translate C DatabaseOps {Databzov operace}
translate C ReclassifyGames {ECO klasifikace parti}
translate C CompactDatabase {Zhutnit databzi}
translate C SortDatabase {adit databzi}
translate C AddEloRatings {Pidat ELO rating}
translate C AutoloadGame {Automaticky otevrat partii .}
translate C StripTags {Odstranit PGN znaky}
translate C StripTag {Odstranit znaku}
translate C Cleaner {itn databze}
translate C CleanerHelp {
    itnm databze Scid provede u aktuln databze vechny drbsk akce, kter zvolte v seznamu.

    Pokud zvolte ECO klasifikaci a mazn zdvojench parti pouij se aktuln nastaven z pslunch dialog.
}
translate C CleanerConfirm {
Jakmile je itn jednou sputno, neme ji bt perueno!

Tato akce me pro velk databze trvat dlouhou dobu v zvislosti na funkcch, kter jste zvolili, a v zvislosti na jejich stvajcm nastaven.

Jste si jisti, e chcete zat s drbskmi funkcemi, kter jste zvolili?
}
# ====== TODO To be translated ======
translate C TwinCheckUndelete {to flip; "u" undeletes both)}
translate C TwinCheckprevPair {Pedchoz dvojice}
translate C TwinChecknextPair {Nsledujc dvojice}
translate C TwinChecker {Scid: Kontrola zdvojench parti}
translate C TwinCheckTournament {Partie turnaje:}
translate C TwinCheckNoTwin {dn duplicita  }
translate C TwinCheckNoTwinfound {Pro tuto partii nebyla nalezena dn zdvojen partie.\nPro zobrazen zdvojench parti v tomto okn muste nejprve pout funkci "Smazat zdvojen partie...". }
translate C TwinCheckTag {Sdlet znaky...}
translate C TwinCheckFound1 {Scid nael $result zdvojench parti}
translate C TwinCheckFound2 { a nastavil jim pznak smazn}
translate C TwinCheckNoDelete {V tto databzi nejsou dn partie ke smazn.}
translate C TwinCriteria1 { Vae nastaven pro hledn zdvojench parti mohou zpsobit oznaen\nnezdvojench parti s podobnmi tahy jako zdvojen partie.}
translate C TwinCriteria2 {Pokud pro "stejn tahy" uvedete "Ne", doporuuje se uvst "Ano" pro barvu, udlost, msto, kolo, rok a msc.\Chcete pesto pokraovat a smazat zdvojen partie? }
translate C TwinCriteria3 {Doporuuje se uvst "Ano" pro alespo dv z nastaven "stejn msto", "stejn kolo" a "stejn rok".\nChcete pesto pokraovat a smazat zdvojen partie?}
translate C TwinCriteriaConfirm {Scid: Potvrdit nastaven dvojic}
translate C TwinChangeTag "Zmnit nsledujc tagy partie:\n\n"
translate C AllocRatingDescription "Tento pkaz pouije aktuln soubor kontroly peklep pro pidn Elo rating do parti v tto databzi. Pokud njak hr nem aktuln rating, ale jeho rating z doby sehrn partie je uveden v souboru kontroly peklep, bude tento jeho rating pidn."
translate C RatingOverride "Pepsat stvajc nenulov ratingy?"
translate C AddRatings "Pidat ratingy do:"
translate C AddedRatings {Scid pidal $r Elo rating v $g partich.}
translate C NewSubmenu "Nov podmenu"

# Comment editor:
translate C AnnotationSymbols  {Anotan symboly:}
translate C Comment {Koment:}
translate C InsertMark {Vloit znaku}
translate C InsertMarkHelp {
Vloit/odstranit znaky: Vyberte barvu, typ, pole.
Vloit/odstranit ipku: Kliknte pravm tlatkem na dv pole.
}

# Nag buttons in comment editor:
translate C GoodMove {Dobr tah}
translate C PoorMove {Slab tah}
translate C ExcellentMove {Vborn tah}
translate C Blunder {Hrub chyba}
translate C InterestingMove {Zajmav tah}
translate C DubiousMove {Pochybn tah}
translate C WhiteDecisiveAdvantage {Bl m rozhodujc vhodu}
translate C BlackDecisiveAdvantage {ern m rozhodujc vhodu}
translate C WhiteClearAdvantage {Bl m jasnou vhodu}
translate C BlackClearAdvantage {ern m jasnou vhodu}
translate C WhiteSlightAdvantage {Bl m malou vhodu}
translate C BlackSlightAdvantage {ern m malou vhodu}
translate C Equality {Rovn ance}
translate C Unclear {Nejasn pozice}
translate C Diagram {Diagram}

# Board search:
translate C BoardSearch {Hledat pozici}
translate C FilterOperation {Operace s aktulnm filtrem:}
translate C FilterAnd {A (Omezit filtr)}
translate C FilterOr {NEBO (Pidat k filtru)}
translate C FilterIgnore {IGNOROVAT (Ignoruj filtr)}
translate C SearchType {Typ hledn:}
translate C SearchBoardExact {Pesn pozice (vechny figury na stejnch polch)}
translate C SearchBoardPawns {Pci (tent materil, vichni pci na stejnch polch)}
translate C SearchBoardFiles {Sloupce (tent materil, vichni pci na stejnch sloupcch)}
translate C SearchBoardAny {Jakkoliv (tent materil, pci a figury kdekoliv)}
translate C SearchInRefDatabase { Hledat v databzi }
translate C LookInVars {Dvat se do variant}

# Material search:
translate C MaterialSearch {Hledat materil}
translate C Material {Materil}
translate C Patterns {Vzory}
translate C Zero {Nic}
translate C Any {Cokoliv}
translate C CurrentBoard {Aktuln pozice}
translate C CommonEndings {Typick koncovky}
translate C CommonPatterns {Typick vzory}
translate C MaterialDiff {Rozdl v materilu}
translate C squares {pole}
translate C SameColor {Stejnobarevn}
translate C OppColor {Nestejnobarevn}
translate C Either {Oboj}
translate C MoveNumberRange {Rozsah tah}
translate C MatchForAtLeast {Shoda pro minimln}
translate C HalfMoves {pltah}

# Common endings in material search:
translate C EndingPawns {Pcov koncovky}
translate C EndingRookVsPawns {V proti pcm}
translate C EndingRookPawnVsRook {V a 1 pec proti vi}
translate C EndingRookPawnsVsRook {V a pci proti vi}
translate C EndingRooks {Vov koncovky}
translate C EndingRooksPassedA {Vov koncovky s volnm a-pcem}
translate C EndingRooksDouble {tyvov koncovky}
translate C EndingBishops {Stelcov koncovky}
translate C EndingBishopVsKnight {Koncovky stelce proti jezdci}
translate C EndingKnights {Jezdcov koncovky}
translate C EndingQueens {Dmsk koncovky}
translate C EndingQueenPawnVsQueen {Dma a 1 pec proti dm}
translate C BishopPairVsKnightPair {Dvojice stelc proti dvojici jezdc ve stedn he}

# Common patterns in material search:
translate C PatternWhiteIQP {Bl dmsk izolovan pec}
translate C PatternWhiteIQPBreakE6 {Bl dmsk izolovan pec: prlom d4-d5 proti e6}
translate C PatternWhiteIQPBreakC6 {Bl dmsk izolovan pec: prlom d4-d5 proti c6}
translate C PatternBlackIQP {ern dmsk izolovan pec}
translate C PatternWhiteBlackIQP {Bl dmsk izolovan pec proti ernmu dmskmu izolovanmu pci}
translate C PatternCoupleC3D4 {Pr blch izolovanch pc c3+d4}
translate C PatternHangingC5D5 {ern visc pci na c5 a d5}
translate C PatternMaroczy {Maroczyho centrum (s pci na c4 a e4)}
translate C PatternRookSacC3 {Ob ve na c3}
translate C PatternKc1Kg8 {O-O-O proti O-O (Kc1 proti Kg8)}
translate C PatternKg1Kc8 {O-O proti O-O-O (Kg1 proti Kc8)}
translate C PatternLightFian {Fianchetta na blch polch (stelec g2 proti stelci b7)}
translate C PatternDarkFian {Fianchetta na ernch polch (stelec b2 proti stelci g7)}
translate C PatternFourFian {tyi fianchetta (stelci na b2,g2,b7,g7)}

# Game saving:
translate C Today {Dnes}
translate C ClassifyGame {Klasifikovat partii}

# Setup position:
translate C EmptyBoard {Vyprzdnit achovnici}
translate C InitialBoard {Vchoz pozice}
translate C SideToMove {Na tahu je}
translate C MoveNumber {slo tahu}
translate C Castling {Roda}
translate C EnPassantFile {En Passant sloupec}
translate C ClearFen {Vyistit FEN}
translate C PasteFen {Vloit FEN}
translate C SaveAndContinue {Uloit a pokraovat}
translate C DiscardChangesAndContinue {Zruit zmny\na pokraovat}
translate C GoBack {Jt zpt}

# Replace move dialog:
translate C ReplaceMove {Nahradit tah}
translate C AddNewVar {Pidat novou variantu}
translate C NewMainLine {Nov hlavn varianta}
translate C ReplaceMoveMessage {Zde ji existuje tah.

Mete ho nahradit, a zruit tak i vechny nsledujc tahy, nebo mete v tah pidat jako novou variantu.

(Zobrazen tto zprvy mete v budoucnu potlait pepnutm volby "Ptt se ped nahrazenm tah" v menu Volby:Tahy.)}

# Make database read-only dialog:
translate C ReadOnlyDialog {Pokud databzi nastavte jako jen ke ten, nebudou povoleny dn zmny.
dn partie nebude mono uloit ani pepsat a dn mazac pznak nebude mono zmnit.
Vechny vsledky operace azen i ECO klasifikace budou pouze doasn.

Databzi mete uinit opt zapisovatelnou pomoc jejho zaven a optovnho oteven.

Pejete si skuten nastavit tuto databzi jako jen ke ten?}

# Clear game dialog:
translate C ClearGameDialog {Tato partie byla zmnna.

Skuten chcete pokraovat a zruit zmny, kter jste v n uinili?
}

# Exit dialog:
translate C ExitDialog {Opravdu si pejete ukonit Scid?}
translate C ExitUnsaved {Nsledujc databze obsahuj partie s neuloenmi zmnami. Pokud nyn skonte, budou tyto zmny ztraceny.}

# Import window:
translate C PasteCurrentGame {Vloit aktuln partii}
translate C ImportHelp1 {Zapsat nebo vloit partii ve formtu PGN do rmce nahoe.}
translate C ImportHelp2 {Jakkoli chyby pi importu partie budou zobrazeny zde.}
translate C OverwriteExistingMoves {Pepsat stvajc tahy?}

# ECO Browser:
translate C ECOAllSections {vechny ECO sekce}
translate C ECOSection {ECO sekce}
translate C ECOSummary {Souhrn pro}
translate C ECOFrequency {Frekvence subkd pro}

# Opening Report:
translate C OprepTitle {Profil zahjen}
translate C OprepReport {Profil}
translate C OprepGenerated {Generovn}
translate C OprepStatsHist {Statistika a historie}
translate C OprepStats {Statistika}
translate C OprepStatAll {Vechny partie profilu}
translate C OprepStatBoth {Oba ratingovan}
translate C OprepStatSince {Od}
translate C OprepOldest {Nejstar partie}
translate C OprepNewest {Nejnovj partie}
translate C OprepPopular {Stvajc popularita}
translate C OprepFreqAll {Frekvence za vechny roky: }
translate C OprepFreq1   {Bhem poslednho roku:     }
translate C OprepFreq5   {Bhem poslednch 5 let:    }
translate C OprepFreq10  {Bhem poslednch 10 let:   }
translate C OprepEvery {jednou z %u parti}
translate C OprepUp {vce o %u%s v porovnn se vemi roky}
translate C OprepDown {mn o %u%s v porovnn se vemi roky}
translate C OprepSame {dn zmna pi porovnn se vemi roky}
translate C OprepMostFrequent {Nejastj hri}
translate C OprepMostFrequentOpponents {Nejastj soupei}
translate C OprepRatingsPerf {Ratingy a performance}
translate C OprepAvgPerf {Prmrn ratingy a performance}
translate C OprepWRating {Rating bl}
translate C OprepBRating {Rating ern}
translate C OprepWPerf {Performance bl}
translate C OprepBPerf {Performance ern}
translate C OprepHighRating {Partie s nejvym prmrnm ratingem}
translate C OprepTrends {Vsledkov trend}
translate C OprepResults {Dlka parti a frekvence}
translate C OprepLength {Dlka parti}
translate C OprepFrequency {Frekvence}
translate C OprepWWins {Vhry bl: }
translate C OprepBWins {Vhry ern: }
translate C OprepDraws {Remzy:      }
translate C OprepWholeDB {cel databze}
translate C OprepShortest {Nejkrat vhry}
translate C OprepMovesThemes {Tahy a tmata}
translate C OprepMoveOrders {Posloupnosti tah vedouc k profilovan pozici}
translate C OprepMoveOrdersOne \
  {Nalezena pouze jedna posloupnost tah vedoucch k tto pozici:}
translate C OprepMoveOrdersAll \
  {Nalezeno %u posloupnost tah vedoucch k tto pozici:}
translate C OprepMoveOrdersMany \
  {Nalezeno %u posloupnost tah vedoucch k tto pozici. Prvnch %u jsou:}
translate C OprepMovesFrom {Tahy z profilovan pozice}
translate C OprepMostFrequentEcoCodes {Nejastj ECO kdy}
translate C OprepThemes {Pozin tmata}
translate C OprepThemeDescription {Frekvence tmat v prvnch %u tazch kad partie}
translate C OprepThemeSameCastling {Rody na stejnou stranu}
translate C OprepThemeOppCastling {Rody na rzn strany}
translate C OprepThemeNoCastling {Ob strany bez rody}
translate C OprepThemeKPawnStorm {Pcov tok na krlovskm kdle}
translate C OprepThemeQueenswap {Vymnn dmy}
translate C OprepThemeWIQP {Bl izolovan dmsk pec}
translate C OprepThemeBIQP {ern izolovan dmsk pec}
translate C OprepThemeWP567 {Bl pec na 5., 6. nebo 7. ad}
translate C OprepThemeBP234 {ern pec na 2., 3. nebo 4. ad}
translate C OprepThemeOpenCDE {Oteven sloupec C, D nebo E}
translate C OprepTheme1BishopPair {Jedna strana m dvojici stelc}
translate C OprepEndgames {Koncovky}
translate C OprepReportGames {Profilovan partie}
translate C OprepAllGames {Vechny partie}
translate C OprepEndClass {Materilu na konci kad partie}
translate C OprepTheoryTable {Tabulka teorie}
translate C OprepTableComment {Generovno z %u parti s nejvym prmrnm ratingem.}
translate C OprepExtraMoves {Extra poznmkov tahy v tabulce teorie}
translate C OprepMaxGames {Maximum tah v tabulce teorie}
translate C OprepViewHTML {Zobrazit HTML}
translate C OprepViewLaTeX {Zobrazit LaTeX}

# Player Report:
translate C PReportTitle {Profil hre}
translate C PReportColorWhite {blmi figurami}
translate C PReportColorBlack {ernmi figurami}
translate C PReportMoves {po %s}
translate C PReportOpenings {Zahjen}
translate C PReportClipbase {Vyprzdnit schrnku a zkoprovat do n odpovdajc partie}

# Piece Tracker window:
translate C TrackerSelectSingle {Levm tlatkem myi se tato figura vybere.}
translate C TrackerSelectPair {Levm tlatkem se tato figura vybere; pravm se vyberou ob stejn figury.}
translate C TrackerSelectPawn {Levm tlatkem se vybere tento pec; pravm se vybere vech 8 pc.}
translate C TrackerStat {Statistika}
translate C TrackerGames {% parti s tahem na pole}
translate C TrackerTime {% asu na kadm poli}
translate C TrackerMoves {Tahy}
translate C TrackerMovesStart {Vlote slo tahu, kterm m stopovn zat.}
translate C TrackerMovesStop {Vlote slo tahu, kterm m stopovn skonit.}

# Game selection dialogs:
translate C SelectAllGames {Vechny partie v databzi}
translate C SelectFilterGames {Jen filtrovan partie}
translate C SelectTournamentGames {Jen partie z aktulnho turnaje}
translate C SelectOlderGames {Jen star partie}

# Delete Twins window:
translate C TwinsNote {Aby byly dv partie vyhodnoceny jako zdvojen, mus bt hrny tmi dvma hri a dle mus splovat kritria, kter nastavte ne. Pokud jsou nalezeny zdvojen partie, pak je krat z nich vymazna. Rada: je vhodn provst ped vymaznm zdvojench parti kontrolu pravopisu, nebo to zdokonal detekci zdvojench parti.}
translate C TwinsCriteria {Kritria: Zdvojen partie mus mt...}
translate C TwinsWhich {Jak partie prozkoumat}
translate C TwinsColors {Tyt barvy u hr?}
translate C TwinsEvent {Tent turnaj?}
translate C TwinsSite {Tot msto?}
translate C TwinsRound {Tot kolo?}
translate C TwinsYear {Tent rok?}
translate C TwinsMonth {Tent msc?}
translate C TwinsDay {Tent den?}
translate C TwinsResult {Tent vsledek?}
translate C TwinsECO {Tent ECO kd?}
translate C TwinsMoves {Tyt tahy?}
translate C TwinsPlayers {Porovnn jmen:}
translate C TwinsPlayersExact {Pesn shoda}
translate C TwinsPlayersPrefix {Jen prvn 4 znaky}
translate C TwinsWhen {Pokud se budou mazat zdvojen partie}
translate C TwinsSkipShort {Ignorovat vechny partie krat ne 5 tah?}
translate C TwinsUndelete {Obnovit nejprve vechny partie?}
translate C TwinsSetFilter {Nastavit filtr na vechny vymazan zdvojen partie?}
translate C TwinsComments {Vdy zachovat partie s komenti?}
translate C TwinsVars {Vdy zachovat partie s variantami?}
translate C TwinsDeleteWhich {Kterou partii vymazat:}
translate C TwinsDeleteShorter {Krat partii}
translate C TwinsDeleteOlder {Partii s nim slem}
translate C TwinsDeleteNewer {Partii s vym slem}
translate C TwinsDelete {Vymazat partie}

# Name editor window:
translate C NameEditType {Typ jmna pro editaci}
translate C NameEditSelect {Partie k editaci}
translate C NameEditReplace {Nahradit}
translate C NameEditWith {}
translate C NameEditMatches {Shoduje se: Stiskni Ctrl+1 a Ctrl+9 pro vbr}
# ====== TODO To be translated ======
translate C CheckGames {Check games}
# ====== TODO To be translated ======
translate C CheckGamesWhich {Check games}
# ====== TODO To be translated ======
translate C CheckAll {All games}
# ====== TODO To be translated ======
translate C CheckSelectFilterGames {Only games in filter}

# Classify window:
translate C Classify {Klasifikace}
translate C ClassifyWhich {ECO klasifikace kterch parti}
translate C ClassifyAll {Vechny partie (pepsat star ECO kdy)}
translate C ClassifyYear {Vechny partie hran za posledn rok}
translate C ClassifyMonth {Vechny partie hran za posledn msc}
translate C ClassifyNew {Jen partie, kter jsou zatm bez ECO kdu}
translate C ClassifyCodes {Pout tyto ECO kdy}
translate C ClassifyBasic {Jen zkladn kdy ("B12", ...)}
translate C ClassifyExtended {Rozen Scidu  ("B12j", ...)}

# Compaction:
translate C NameFile {Jmenn soubor}
translate C GameFile {Partiov soubor}
translate C Names {Jmna}
translate C Unused {Nepouito}
translate C SizeKb {Velikost (kb)}
translate C CurrentState {Aktuln stav}
translate C AfterCompaction {Po zhutn}
translate C CompactNames {Zhustit jmenn soubor}
translate C CompactGames {Zhustit partiov soubor}
translate C NoUnusedNames "Nejsou dn nevyuit jmna, take jmenn soubor je ji pln zhutn."
translate C NoUnusedGames "Partiov soubor je ji pln zhutn."
translate C NameFileCompacted {Jmenn soubor pro databzi "[file tail [sc_base filename]]" byl zhutn.}
translate C GameFileCompacted {Partiov soubor pro databzi "[file tail [sc_base filename]]" byl zhutn.}

# Sorting:
translate C SortCriteria {Kritria}
translate C AddCriteria {Pidat kritria}
translate C CommonSorts {Bn azen}
translate C Sort {Setdit}

# Exporting:
translate C AddToExistingFile {Pidat partie do existujcho souboru?}
translate C ExportComments {Exportovat komente?}
translate C ExportVariations {Exportovat varianty?}
translate C IndentComments {Odsazovat komente?}
translate C IndentVariations {Odsazovat varianty?}
translate C ExportColumnStyle {Sloupcov styl (jeden tah na dek)?}
translate C ExportSymbolStyle {Styl pro symbolick anotace:}
translate C ExportStripMarks {Odstranit kdov znaky pol/ipek z koment?}

# Goto game/move dialogs:
translate C LoadGameNumber {Vlote slo partie:}
translate C GotoMoveNumber {Pejt na tah slo:}

# Copy games dialog:
translate C CopyGames {Koprovat partie}
translate C CopyConfirm {
 Skuten chcete koprovat
 [::utils::thousands $nGamesToCopy] filtrovanch parti
 z databze "$fromName"
 do databze "$targetName"?
}
translate C CopyErr {Nelze zkoprovat partie}
translate C CopyErrSource {zdrojov databze}
translate C CopyErrTarget {clov databze}
translate C CopyErrNoGames {nem dn partie ve filtru}
translate C CopyErrReadOnly {je pouze ke ten}
translate C CopyErrNotOpen {nen otevena}

# Colors:
translate C LightSquares {Bl pole}
translate C DarkSquares {ern pole}
translate C SelectedSquares {Vybran pole}
translate C SuggestedSquares {Pole navrhovanch tah}
translate C WhitePieces {Bl figury}
translate C BlackPieces {ern figury}
translate C WhiteBorder {Obrys blch figur}
translate C BlackBorder {Obrys ernch figur}

# Novelty window:
translate C FindNovelty {Hledat novinku}
translate C Novelty {Novinka}
translate C NoveltyInterrupt {Hledn novinky perueno}
translate C NoveltyNone {V tto partii nebyla nalezena dn novinka}
translate C NoveltyHelp {
Scid bude hledat prvn tah aktuln partie, kter doshne pozice, kter se nevyskytla ve vybran databzi ani v knihovn zahjen ECO.
}

# Sounds configuration:
translate C SoundsFolder {Adres se zvukovmi soubory}
translate C SoundsFolderHelp {Adres by ml obsahovat soubory King.wav, a.wav, 1.wav, atd.}
translate C SoundsAnnounceOptions {Volby oznamovn tahu}
translate C SoundsAnnounceNew {Oznamovat tahy pi jejich proveden}
translate C SoundsAnnounceForward {Oznamovat tahy pi posunu o tah vped}
translate C SoundsAnnounceBack {Oznamovat pi vzet tahu zpt nebo posunu o tah zpt}

# Upgrading databases:
translate C Upgrading {Upgrade}
translate C ConfirmOpenNew {
Toto je star formt (Scid 3) databze, jen nen mono otevt ve Scidu 4. Verze s novm formtem (Scid 4) pitom ji byla vytvoena.

Chcete otevt verzi s novm formtem datbze?
}
translate C ConfirmUpgrade {
Toto je star formt (Scid 3) databze. K oteven ve Scidu 4 je nutno databzi nejprve zkonvertovat do novho formtu.

Upgrade vytvo novou verzi databze.

Tento kon me zabrat trochu asu, ale je teba jej provst pouze jednou. Mete ho peruit, pokud bude trvat pli dlouho.

Chcete tuto databzi upgradovat nyn?
}

# Recent files options:
translate C RecentFilesMenu {Poet nedvnch soubor v menu Soubor}
translate C RecentFilesExtra {Poet nedvnch soubor v extra podmenu}

# My Player Names options:
translate C MyPlayerNamesDescription {
Oteve seznam se jmny preferovanch hr, kad jmno na jeden dek. Zstupn znaky (tj. "?" pro jakkoliv jeden znak, "*" pro jakoukoliv sekvenci znak) jsou povoleny.

Vdy, kdy se nathne partie hre uvedenho v seznamu, achovnice v hlavnm okn se oto, jestlie je to nutn k zobrazen partie z perspektivy tohoto hre.
}
translate C showblunderexists {ukzat ptomnost hrub chyby}
translate C showblundervalue {ukzat hodnotu hrub chyby}
translate C showscore {ukzat skre}
translate C coachgame {kouovac partie}
translate C configurecoachgame {konfigurovat kouovac partii}
translate C configuregame {Konfigurace partie}
translate C Phalanxengine {Hern program phalanx}
translate C Coachengine {Kouovac hern program}
translate C difficulty {obtnost}
translate C hard {nron}
translate C easy {snadn}
translate C Playwith {Hrt s}
translate C white {bl}
translate C black {ern}
translate C both {oba}
translate C Play {Hrt}
translate C Noblunder {dn hrub chyba}
translate C blunder {hrub chyba}
translate C Noinfo {-- dn informace --}
translate C PhalanxOrTogaMissing {Phalanx nebo Toga nenalezen}
translate C moveblunderthreshold {chyba je hrub, jestlie ztrta je vt ne}
translate C limitanalysis {omezit as analzy hernho programu}
translate C seconds {sekund}
translate C Abort {Peruit}
translate C Resume {Pokraovat}
# ====== TODO To be translated ======
translate C OutOfOpening {Out of opening}
translate C NotFollowedLine {Nensledoval jste variantu}
translate C DoYouWantContinue {Chcete pokraovat?}
translate C CoachIsWatching {Kou sleduje}
translate C Ponder {Neustl pemlen}
translate C LimitELO {Omezit slu ELO}
translate C DubiousMovePlayedTakeBack {Byl zahrn pochybn tah, chcete ho vrtit?}
translate C WeakMovePlayedTakeBack {Byl zahrn slab tah, chcete ho vrtit?}
translate C BadMovePlayedTakeBack {Byl zahrn patn tah, chcete ho vrtit?}
translate C Iresign {Vzdvm}
translate C yourmoveisnotgood {v tah nen dobr}
translate C EndOfVar {Konec varianty}
translate C Openingtrainer {Trenr zahjen}
translate C DisplayCM {Zobrazit mon vhodn tahy}
translate C DisplayCMValue {Zobrazit hodnut monch vhodnch tah}
translate C DisplayOpeningStats {Ukzat statistiku}
translate C ShowReport {Ukzat report}
translate C NumberOfGoodMovesPlayed {dobrch odehranch tah}
translate C NumberOfDubiousMovesPlayed {pochybnch odehranch tah}
translate C NumberOfMovesPlayedNotInRepertoire {odehranch tah, kter nejsou v repertoru}
translate C NumberOfTimesPositionEncountered {vskyt pozice}
translate C PlayerBestMove  {Dovolit pouze nejlep tahy}
translate C OpponentBestMove {Soupe hraje nejlep tahy}
translate C OnlyFlaggedLines {Pouze oznaen varianty}
translate C resetStats {Smazat statistiku}
translate C Repertoiretrainingconfiguration {Konfigurace trninku repertoru}
translate C Loadingrepertoire {Natahuji repertor}
translate C Movesloaded {Tahy nataeny}
translate C Repertoirenotfound {Repertor nenalezen}
translate C Openfirstrepertoirewithtype {Otevt prvn databzi repertoru s ikonou/typem nastavenou pro sprvnou stranu}
translate C Movenotinrepertoire {Tah nen v repertoru}
translate C PositionsInRepertoire {Pozice v repertoru}
translate C PositionsNotPlayed {Nehran pozice}
translate C PositionsPlayed {Hran pozice}
translate C Success {spch}
translate C DubiousMoves {Pochybn tahy}
translate C OutOfRepertoire {Mimo repertor}
translate C ConfigureTactics {Konfigurovat taktiku}
translate C ResetScores {Smazat skre}
translate C LoadingBase {Natahuji databzi}
translate C Tactics {Taktika}
translate C ShowSolution {Ukzat een}
translate C NextExercise {Dal cvien}
translate C PrevExercise {pedchoz cvien}
translate C StopTraining {Ukonit trnink}
translate C Next {Dal}
translate C ResettingScore {Mau skre}
translate C LoadingGame {Natahuji partii}
translate C MateFound {Mat nalezen}
translate C BestSolutionNotFound {Nejlep een nenalezeno!}
translate C MateNotFound {Mat nenalezen}
translate C ShorterMateExists {Existuje rychlej mat}
translate C ScorePlayed {Odehran skre}
# ====== TODO To be translated ======
translate C Expected {expected}
translate C ChooseTrainingBase {Vybrat trninkovou databzi}
translate C Thinking {Pemlm}
translate C AnalyzeDone {Analza hotova}
translate C WinWonGame {Vyhrt vyhranou partii}
translate C Lines {Varianty}
translate C ConfigureUCIengine {Konfigurovat nstroj UCI}
translate C SpecificOpening {Vybran zahjen}
translate C StartNewGame {Zat novou hru}
translate C FixedLevel {Pevn rove}
translate C Opening {Zahjen}
translate C RandomLevel {Nhodn rove}
translate C StartFromCurrentPosition {Zat z aktuln pozice}
translate C FixedDepth {Pevn hloubka}
translate C Nodes {Uzly} 
translate C Depth {Hloubka}
translate C Time {as} 
translate C SecondsPerMove {Sekund na tah}
translate C Engine {Hern program}
translate C TimeMode {Reim asu}
translate C TimeBonus {as + bonus}
translate C TimeMin {min}
translate C TimeSec {s}
translate C AllExercisesDone {Vechna cvien hotova}
translate C MoveOutOfBook {Tah mimo knihovnu zahjen}
translate C LastBookMove {Posledn tah z knihovny zahjen}
translate C AnnotateSeveralGames {Anotovat nkolik parti\od aktuln do:}
translate C FindOpeningErrors {Najt chyby v zahjen}
translate C MarkTacticalExercises {Oznait taktick cvien}
translate C UseBook {Pouvat knihovnu zahjen}
translate C MultiPV {Nkolik variant}
translate C Hash {Hashovac pam}
translate C OwnBook {Pout knihovnu zahjen hernho programu}
translate C BookFile {Knihovna zahjen}
translate C AnnotateVariations {Anotovat varianty}
translate C ShortAnnotations {Krtk anotace}
translate C addAnnotatorTag {Pidat znaku anottora}
translate C AddScoreToShortAnnotations {Pidat skre ke krtkm anotacm}
translate C Export {Export}
translate C BookPartiallyLoaded {Knihovna zahjen sten nataena}
translate C Calvar {Propoet variant}
translate C ConfigureCalvar {Konfigurace}
translate C Reti {Rtiho}
translate C English {Anglick}
translate C d4Nf6Miscellaneous {1.d4 Nf6 rzn}
translate C Trompowsky {Opoenskho hra}
translate C Budapest {Budapesk gambit}
translate C OldIndian {Staroindick}
translate C BenkoGambit {Volsk gambit}
translate C ModernBenoni {Modern Benoni}
translate C DutchDefence {Holandsk}
translate C Scandinavian {Skandinvsk}
translate C AlekhineDefence {Aljechinova}
translate C Pirc {Pircova}
translate C CaroKann {Caro-Kann}
translate C CaroKannAdvance {Caro-Kann, zaven systm}
translate C Sicilian {Sicilsk}
translate C SicilianAlapin {Sicilsk, Alapinova varianta}
translate C SicilianClosed {Zaven sicilsk}
translate C SicilianRauzer {Sicilsk, Rauzerv tok}
translate C SicilianDragon {Sicilsk, dra varianta}
translate C SicilianScheveningen {Sicilsk, scheveningsk varianta}
translate C SicilianNajdorf {Sicilsk, Najdorfova varianta}
translate C OpenGame {Oteven hra}
translate C Vienna {Vdesk}
translate C KingsGambit {Krlovsk gambit}
translate C RussianGame {Rusk}
translate C ItalianTwoKnights {Italsk/Hra dvou jezdc v obran}
translate C Spanish {panlsk}
translate C SpanishExchange {Vmnn panlsk}
translate C SpanishOpen {Oteven panlsk}
translate C SpanishClosed {Zaven panlsk}
translate C FrenchDefence {Francouzsk}
translate C FrenchAdvance {Francouzsk, Steinitzv systm}
translate C FrenchTarrasch {Francouzsk, Tarraschv systm}
translate C FrenchWinawer {Francouzsk, Nimcoviv systm}
translate C FrenchExchange {Francouzsk, vmnn varianta}
translate C QueensPawn {Dmskm pcem}
translate C Slav {Slovansk}
translate C QGA {Pijat dmsk gambit}
translate C QGD {Odmtnut dmsk gambit}
translate C QGDExchange {Vmnn dmsk gambit}
translate C SemiSlav {Poloslovansk}
translate C QGDwithBg5 {Dmsk gambit se Sg5}
translate C QGDOrthodox {Ortodoxn dmsk gambit}
translate C Grunfeld {Grnfeldova indick}
# ====== TODO To be translated ======
translate C GrunfeldExchange {Grnfeld Exchange}
# ====== TODO To be translated ======
translate C GrunfeldRussian {Grnfeld Russian}
translate C Catalan {Katalnsk}
# ====== TODO To be translated ======
translate C CatalanOpen {Catalan Open}
# ====== TODO To be translated ======
translate C CatalanClosed {Catalan Closed}
translate C QueensIndian {Dmsk indick}
translate C NimzoIndian {Nimcoviova indick}
translate C NimzoIndianClassical {Nimcoviova indick, klasick systm}
translate C NimzoIndianRubinstein {Nimcoviova indick, Rubinsteinv systm}
translate C KingsIndian {Krlovsk indick}
translate C KingsIndianSamisch {Krlovsk indick, Smischv tok}
translate C KingsIndianMainLine {Krlovsk indick, hlavn varianta}
translate C ConfigureFics {Konfigurovat FICS}
translate C FICSGuest {Pihlsit jako host}
translate C FICSServerPort {Port serveru}
translate C FICSServerAddress {IP adresa}
translate C FICSRefresh {Obnovit}
translate C FICSTimesealPort {Port timesealu}
translate C FICSSilence {Ticho}
translate C FICSOffers {Nabdky}
translate C FICSConsole {Konzola}
translate C FICSGames {Hry}
translate C FICSUnobserve {Ukonit sledovn partie}
translate C FICSProfile {Zobrazit vai historii a profil}
# ====== TODO To be translated ======
translate C FICSRelayedGames {Relayed games}
translate C FICSFindOpponent {Najt soupee}
translate C FICSTakeback {Vrtit tah}
translate C FICSTakeback2 {Vrtit tah 2}
translate C FICSInitTime {Poten as (min)}
translate C FICSIncrement {Inkrement (s)}
translate C FICSRatedGame {Partie zapotan do ratingu}
translate C FICSAutoColour {automatick}
translate C FICSManualConfirm {potvrdit run}
translate C FICSFilterFormula {Filtrovat formul}
# ====== TODO To be translated ======
translate C FICSIssueSeek {Issue seek}
# ====== TODO To be translated ======
translate C FICSChallenge {Challenge}
# ====== TODO To be translated ======
translate C FICSAccept {accept}
# ====== TODO To be translated ======
translate C FICSDecline {decline}
translate C FICSColour {Barva}
# ====== TODO To be translated ======
translate C FICSSend {send}
translate C FICSConnect {Pipojit}
translate C FICSdefaultuservars {Pout vchoz promnn}
translate C FICSObserveconfirm {Chcete sledovat partii}
translate C GameReview {Prohlen partie}
translate C GameReviewTimeExtended {as prodlouen}
# ====== TODO To be translated ======
translate C GameReviewMargin {Error margin}
translate C GameReviewAutoContinue {Automaticky pokraovat, je-li tah sprvn}
# ====== TODO To be translated ======
translate C GameReviewReCalculate {Use extended time}
translate C GameReviewAnalyzingMovePlayedDuringTheGame {Analyzuji tahy sehran v partii}
translate C GameReviewAnalyzingThePosition {Analyzuji pozici}
translate C GameReviewEnterYourMove {Zadejte v tah}
translate C GameReviewCheckingYourMove {Kontroluji v tah}
translate C GameReviewYourMoveWasAnalyzed {V tah by zanalyzovn}
translate C GameReviewYouPlayedSameMove {Hrl jste ten sam tah jako v partii}
translate C GameReviewScoreOfYourMove {Skre vaho tahu}
translate C GameReviewGameMoveScore {Skre tahu v partii}
translate C GameReviewEngineScore {Skre hernho programu}
translate C GameReviewYouPlayedLikeTheEngine {Hrl jste jako hern program}
translate C GameReviewNotEngineMoveButGoodMove {Nen to tah hernho programu, ale je to tak dobr tah}
translate C GameReviewMoveNotGood {Tento tah nen dobr, skre je}
translate C GameReviewMovesPlayedLike {Tahy hran jako}
translate C GameReviewMovesPlayedEngine {Tahy hran jako hernm programem}
translate C CCDlgConfigureWindowTitle {Konfigurovat korespondenn ach}
translate C CCDlgCGeneraloptions {Obecn nastaven}
translate C CCDlgDefaultDB {Vchoz databze:}
translate C CCDlgInbox {Pchoz schrnka (cesta):}
translate C CCDlgOutbox {Odchoz schrnka (cesta):}
translate C CCDlgXfcc {Konfigurace Xfcc:}
translate C CCDlgExternalProtocol {Extern nstroj pro protokoly (nap. Xfcc)}
translate C CCDlgFetchTool {Stahovac nstroj:}
translate C CCDlgSendTool {Odeslac nstroj:}
translate C CCDlgEmailCommunication {E-mailov komunikace}
translate C CCDlgMailPrg {E-mailov program:}
translate C CCDlgBCCAddr {(B)CC adresa:}
translate C CCDlgMailerMode {Reim:}
translate C CCDlgThunderbirdEg {nap. Thunderbird, Mozilla Mail, Icedove...}
translate C CCDlgMailUrlEg {nap. Evolution}
translate C CCDlgClawsEg {nap. Sylpheed Claws}
translate C CCDlgmailxEg {nap. mailx, mutt, nail...}
translate C CCDlgAttachementPar {Parametr plohy:}
translate C CCDlgInternalXfcc {Pout vystavnou podporu Xfcc}
translate C CCDlgConfirmXfcc {Potvrdit tahy}
translate C CCDlgSubjectPar {Pedmt:}
translate C CCDlgDeleteBoxes {Przdn pchoz/odchoz schrnka}
translate C CCDlgDeleteBoxesText {Opravdu chcete vyprzdnit pchoz a odchoz schrnky pro koresponden ach? To vyaduje novou synchronizaci, aby mohl bt zobrazen posledn stav vaich parti.}
translate C CCDlgConfirmMove {Potvrdit tah}
translate C CCDlgConfirmMoveText {Pokud potvrdte, nsledujc tah a koment bude zasln na server:}
translate C CCDlgDBGameToLong {Nekonzistentn hlavn varianta}
translate C CCDlgDBGameToLongError {Hlavn varianta v databzi je del ne partie v pchoz schrnce. Jestlie pchoz schrnka obsahuje aktuln partie, tj. erstv po synchronizaci, nkter tahy byly do hlavn varianty v databzi pidny chybn.\nV takovm ppad prosm zkrate hlavn variantu do (max.) tahu\n}
translate C CCDlgStartEmail {Zat novou e-mailovou partii}
translate C CCDlgYourName {Vae jmna:}
translate C CCDlgYourMail {Vae e-mailov adresa:}
translate C CCDlgOpponentName {Jmno soupee:}
translate C CCDlgOpponentMail {E-mailov adresa soupee:}
translate C CCDlgGameID {Identifiktor partie (jednoznan):}
translate C CCDlgTitNoOutbox {Scid: Odchoz schrnka korespondennho achu}
translate C CCDlgTitNoInbox {Scid: Pchoz schrnka korespondennho achu}
translate C CCDlgTitNoGames {Scid: dn korespondenn partie}
translate C CCErrInboxDir {Adres pchoz schrnky korespondennho achu:}
translate C CCErrOutboxDir {Adres odchoz schrnky korespondennho achu:}
translate C CCErrDirNotUsable {neexistuje nebo nen pstupn!\nProsm zkontrolujte a opravte nastaven.}
translate C CCErrNoGames {neobsahuje dn partie!\nNejprve je prosm sthnte.}
translate C CCDlgTitNoCCDB {Scid: dn korespondenn databze.}
translate C CCErrNoCCDB {dn korespondenn databze nen otevena. Prosm otevete njakou ne budete pouvat funkce korespondennho achu.}
translate C CCFetchBtn {Sthnout partie ze serveru a zpracovat pchoz schrnku}
translate C CCPrevBtn {Jt na pedchoz partii}
translate C CCNextBtn {Jt na nsledujc partii}
translate C CCSendBtn {Poslat tah}
translate C CCEmptyBtn {Vyprzdnit pchoz a odchoz schrnku}
translate C CCHelpBtn {Npovda k ikonm a stavovm indiktorm.\nPro obecnou npovdu stisknte F1!}
translate C CCDlgServerName {Jmno serveru:}
translate C CCDlgLoginName  {Pihlaovac jmno:}
translate C CCDlgPassword   {Heslo:}
translate C CCDlgURL        {URL Xfcc:}
translate C CCDlgRatingType {Typ ratingu:}
translate C CCDlgDuplicateGame {Nejednoznan identifiktor partie}
translate C CCDlgDuplicateGameError {Tato partie se v databzi vyskytuje vce ne jednou. Prosm smate vechny duplikty a soubor parti zhutnte (Soubor/drba/Zhutnit databzi).}
translate C CCDlgSortOption {Tdn:}
# ====== TODO To be translated ======
translate C CCDlgListOnlyOwnMove {Only games I have the move}
translate C CCOrderClassicTxt {Msto, udlost, kolo, vsledek, bl, ern}
translate C CCOrderMyTimeTxt {M hodiny}
translate C CCOrderTimePerMoveTxt {as na kad tah do pt asov kontroly}
translate C CCOrderStartDate {Poten datum}
translate C CCOrderOppTimeTxt {Soupeovy hodiny}
translate C CCDlgConfigRelay {Konfigurovat sledovn ICCF}
translate C CCDlgConfigRelayHelp {Bte na strnku parti na http://www.iccf-webchess.com a zobrazte partii, kter m bt sledovna. Pokud vidte achovnici, zkoprujte URL z prohlee do seznamu ne. Pouze jedin URL na kadm dku!\nPklad: http://www.iccf-webchess.com/MakeAMove.aspx?id=266452}
translate C ExtHWConfigConnection {Konfigurovat extern hardware}
translate C ExtHWPort {Port}
translate C ExtHWEngineCmd {Pkaz hernho programu}
translate C ExtHWEngineParam {Parametr hernho programu}
translate C ExtHWShowButton {Ukzat tlatko}
translate C ExtHWHardware {Hardware}
translate C ExtHWNovag {Novag Citrine}
translate C ExtHWInputEngine {Vstupn pstroj}
translate C ExtHWNoBoard {dn achovnice}
# ====== TODO To be translated ======
translate C NovagReferee {Referee}
translate C IEConsole {Konzola vstupnho pstroje}
# ====== TODO To be translated ======
translate C IESending {Moves sent for}
translate C IESynchronise {Synchronizovat}
translate C IERotate  {Otoit}
translate C IEUnableToStart {Nemohu spustit vstupn pstroj:}
# ====== TODO To be translated ======
translate C DoneWithPosition {Done with position}
translate C Board {achovnice}
translate C showGameInfo {Ukzat informace o partii}
translate C autoResizeBoard {Automatick zmna velikosti achovnice}
translate C DockTop {Pesunout nahoru}
translate C DockBottom {Pesunout dol}
translate C DockLeft {Pesunout doleva}
translate C DockRight {Pesunout doprava}
# ====== TODO To be translated ======
translate C Undock {Undock}
translate C ChangeIcon {Zmnit ikonu...}
}


############################################################
#
# Czech help pages:


#############
### Contents:

set helpTitle(C,Contents) "Obsah"
set helpText(C,Contents) {<h1>Obsah npovdy Scidu</h1>

<h4>Start a veobecn npovda</h4>
<ul>
<li><a Guide><b>Rychl prvodce</b> pouvnm Scidu</a> <red>(tte
 nejprve)</red></li>
<li><a Hints><b>Rady</b> na zefektivnn prce se Scidem</a></li>
<li><a MainWindow><b>Hlavn okno</b> Scidu</a></li>
<li><a Menus><b>Menu</b> Scidu</a> <red>(aktualizovno!)</red></li>
<li><a Moves>Zadvn <b>tah</b></a></li>
<li><a Searches><b>Vyhledvn</b> Scidem</a></li>
<li><a Clipbase>Pouit databze <b>schrnka</b></a></li>
<li><a Annotating><b>Anotace parti</b></a></li>
</ul>

<h4>Ostatn okna Scidu</h4>
<ul>
<li><a Analysis><b>Analytick</b> okno</a></li>
<li><a Comment>Okno <b>editoru koment</b></a></li>
<li><a Crosstable>Okno <b>turnajov tabulky</b></a></li>
<li><a Switcher>Okno <b>vbru databze</b></a></li>
<li><a Email>Okno <b>emailovho</b> manaera</a></li>
<li><a Finder>Okno <b>vyhledvae soubor</b></a></li>
<li><a GameList>Okno <b>seznamu parti</b></a></li>
<li><a Import>Okno <b>importu parti</b></a></li>
<li><a Reports><b>Profily</b></a> <red>(aktualizovno!)</red></li>
<li><a PGN>Okno <b>PGN</b> (text partie)</a></li>
<li><a PTracker><b>Stopa figur</b></a></li>
<li><a PList>Okno <b>vyhledvae hr</b></a></li>
<li><a PInfo>Okno <b>informac o hri</b></a></li>
<li><a Repertoire>Okno <b>editoru repertoru</b></a></li>
<li><a Tmt>Okno <b>vyhledvae turnaj</b></a></li>
<li><a Tree><b>Stromov</b> okno</a></li>
<li><a Graphs>Okno <b>graf</b></a></li>
<li><a TB>Pouit <b>tabulek koncovek</b></a>
 <red>(aktualizovno!)</red></li>
</ul>

<h4>Ostatn pomocn programy a informace</h4>
<ul>
<li><a Bookmarks><b>Zloky</b></a></li>
<li><a Cmdline>Volby z pkazovho dku</a></li>
<li><a Compact><b>Zhutnn</b> databze</a></li>
<li><a Maintenance>Nstroje <b>drby databze</b></a></li>
<li><a ECO>Klasifikace zahjen <b>ECO</b></a></li>
<li><a EPD>Soubory <b>EPD</b></a></li>
<li><a Export><b>Export</b> parti do textovch soubor</a>
 <red>(aktualizovno!)</red></li>
<li><a Flags><b>Pznaky</b> u parti</a></li>
<li><a LaTeX>Pouit <b>LaTeXu</b> se Scidem</a></li>
<li><a Options><b>Volby</b> a preference</a> <red>(aktualizovno!)</red></li>
<li><a Sorting><b>Tdn</b> databze</a></li>
<li><a Pgnscid><b>Pgnscid</b>: konverze soubor PGN</a></li>
<li><a NAGs>Standardn <b>NAG</b> numerick hodnocen</a></li>
<li><a Formats><b>Formt soubor</b> Scidu</a></li>
<li><a Author>Kontaktn informace</a></li>
</ul>

<p><footer>(Aktualizovno: Scid 3.5, Prosinec 2003)</footer></p>
}


###############
### Topic Index

set helpTitle(C,Index) "Index npovdy Scidu"
set helpText(C,Index) {<h1>Index npovdy Scidu</h1>

<h3>A</h3>
<ul>
<li><a Analysis>Analytick</a> okno</li>
<li><a Annotating>Anotace parti</a></li>
<li><a NAGs>Anotan symboly</a></li>
<li><a MainWindow Autoplay>Automatick pehrvn</a></li>
<li><a Author>Autor, kontaktovn</a></li>
</ul>

<h3></h3>
<ul>
<li><a Maintenance Cleaner>itn</a></li>
</ul>

<h3>D</h3>
<ul>
<li><a Compact>Databze, zhutnn</a></li>
<li><a Formats>Databze, formty soubor</a></li>
<li><a Maintenance>Databze, drba</a></li>
<li><a Sorting>Databze, tdn</a></li>
<li><a Switcher>Databze</a>, okno vbru</li>
</ul>

<h3>E</h3>
<ul>
<li><a ECO Browser>ECO prohle</a>, okno</li>
<li><a ECO Codes>ECO, systm kd </a></li>
<li><a ECO>ECO, klasifikace zahjen </a></li>
<li><a Menus Edit>Editace, menu</a></li>
<li><a Email>Emailov manaer</a>, okno</li>
<li><a EPD>EPD soubory</a></li>
<li><a Export>Export parti do textovch soubor</a></li>
</ul>

<h3>F</h3>
<ul>
<li><a Searches Filtr>Filtr</a></li>
<li><a Export>Filtr, exportovn</a></li>
<li><a Graphs Filtr>Filtr, graf</a></li>
<li><a Options Fonts>Fonty</a></li>
</ul>

<h3>G</h3>
<ul>
<li><a Graphs>Graf, okna</a></li>
</ul>

<h3>H</h3>
<ul>
<li><a Searches Header>Hlavika, vyhledvn</a></li>
<li><a MainWindow>Hlavn okno</a></li>
<li><a Menus Search>Hledat, menu</a></li>
<li><a PList>Hr</a>, okno vyhledvae</li>
<li><a PInfo>Hr</a>, okno informac</li>
<li><a Reports Player>Hr</a>, okno profilu</li>
</ul>

<h3>I</h3>
<ul>
<li><a Import>Import</a>, okno</li>
</ul>

<h3>J</h3>
<ul>
<li><a Maintenance Editing>Jmna, editace</a></li>
<li><a Maintenance Spellcheck>Jmna, kontrola pravopisu</a></li>
</ul>

<h3>K</h3>
<ul>
<li><a Comment>Koment</a>, okno editoru</li>
<li><a Compact>Zhutnn databze</a></li>
<li><a Author>Kontaktn informace</a></li>
</ul>

<h3>L</h3>
<ul>
<li><a LaTeX>LaTeX</a>, vstupn formt</li>
</ul>

<h3>M</h3>
<ul>
<li><a Maintenance Twins>Mazn zdvojench parti</a></li>
<li><a Analysis List>Motory</a>, seznam</li>
<li><a Searches Material>Materil/vzor, vyhledvn</a></li>
<li><a Menus>Menu</a></li>
</ul>

<h3>N</h3>
<ul>
<li><a Menus Help>Npovda, menu</a></li>
<li><a Menus Tools>Nstroje, menu</a></li>
<li><a Tree Best>Nejlep partie</a>, okno</li>
<li><a NAGs>NAG anotan hodnoty</a></li>
<li><a Annotating Null>Nulov tahy</a></li>
</ul>

<h3>O</h3>
<ul>
<li><a Contents>Obsah</a></li>
<li><a Menus Windows>Okna, menu</a></li>
</ul>

<h3>P</h3>
<ul>
<li><a Menus Game>Partie, menu</a></li>
<li><a GameList>Partie</a>, okno seznamu</li>
<li><a Flags>Partie, pznaky</a></li>
<li><a Searches Board>Pozice, vyhledvn</a></li>
<li><a Maintenance Spellcheck>Pravopis jmen, kontrola</a></li>
<li><a GameList Browsing>Prohlen parti</a></li>
<li><a Cmdline>Pkazov dek, volby</a></li>
<li><a GameList Browsing>Pipojovn parti</a></li>
<li><a Flags>Pznaky</a></li>
<li><a PGN>PGN</a>, okno</li>
<li><a Pgnscid>Pgnscid</a></li>
</ul>

<h3>R</h3>
<ul>
<li><a Hints>Rady</a></li>
<li><a Guide>Rychl prvodce pouvnm Scidu</a></li>
<li><a Graphs Rating>Rating, graf</a></li>
<li><a Repertoire>Repertor, editor</a></li>
</ul>

<h3>S</h3>
<ul>
<li><a Clipbase>Schrnka</a></li>
<li><a Formats>Soubor, formty</a></li>
<li><a Menus File>Soubor, menu</a></li>
<li><a Finder>Soubor, vyhledva</a></li>
<li><a PTracker>Stopa figur</a>, okno</li>
<li><a Tree>Stromov okno</a></li>
</ul>

<h3>T</h3>
<ul>
<li><a TB>Tabulky koncovek</a></li>
<li><a Moves>Tahy, zadvn</a></li>
<li><a Sorting>Tdn databze</a></li>
<li><a Crosstable>Turnajov tabulka</a>, okno</li>
<li><a Tmt>Turnaj, vyhledva</a></li>
</ul>

<h3>U</h3>
<ul>
<li><a Maintenance>drba, nstroje</a></li>
</ul>

<h3>V</h3>
<ul>
<li><a Options>Volby</a></li>
<li><a Switcher>Vbr databze</a>, okno</li>
<li><a Searches Filter>Vyhledvac filtr</a></li>
<li><a Searches>Vyhledvn</a></li>
<li><a Annotating Vars>Varianty</a></li>
</ul>

<h3>Z</h3>
<ul>
<li><a Moves>Zadvn tah</a></li>
<li><a ECO>Zahjen, klasifikace (ECO)</a></li>
<li><a Reports Opening>Zahjen</a>, okno profilu</a>
<li><a Repertoire>Zahjen, repertory</a></li>
<li><a Bookmarks>Zloky</a></li>
<li><a Maintenance Twins>Zdvojen (duplicitn) partie</a></li>
<li><a Moves Trial>Zkuebn md</a></li>
</ul>

<p><footer>(Aktualizovno: Scid 3.5, nor 2003)</footer></p>
}


################
### Quick guide:

set helpTitle(C,Guide) "Rychl prvodce pouvnm Scidu"
set helpText(C,Guide) {<h1>Rychl prvodce pouvnm Scidu</h1>
<p>
Scid je achov databzov aplikace; mete s n prohlet databze achovch
parti, partie editovat a pouitm rznch kritri partie <a Searches>vyhledvat</a>.
</p>
<p>
Scid pouv svj vlastn <a Formats>formt dat</a>, sestvajc ze t soubor,
kter je velmi kompaktn a rychl, ale me bt obousmrn konvertovn mezi
standardnm PGN (Portable Game Notation) formtem.
<a PGN>Okno PGN</a> Scidu zobrazuje zpis aktuln partie v PGN formtu.
</p>
<p>
Scid mete pout k pidn partie do databze, tahy lze zadvat klvesnic i
my. Pro dal informace se podvejte na strnky npovdy o
<a Moves>zadvn tah</a>.
</p>
<p>
Scid mete tak pout jako prohle <a PGN>PGN</a> soubor, bu vloenm PGN
notace do okna <a Import>Importu</a> Scidu nebo otevenm PGN souboru ve Scidu.
Avak PGN soubory nemohou bt ve Scidu editovny (jsou oteveny jen ke ten),
jsou nron na pam a pomaleji se otevraj. Z tchto dvod se doporuuje
velk PGN soubory nejprve zkonvertovat do formtu Scidu pouitm pomocnho
programu <a Pgnscid>pgnscid</a>.
</p>
<p>
<a MainWindow>Hlavn okno</a> Scidu (s grafickou achovnic) zobrazuje detaily
aktuln partie a databze. Kdykoliv mete mt oteveny a tyi databze
souasn (s <a Clipbase>databz schrnka</a> pt) a kad z nich bude mt svou
aktuln partii.
(Partie slo 0 indikuje zadvn partie, kter nen soust
aktuln databze).
Mezi otevenmi databzemi lze pepnat v
<a Menus File>menu Soubor</a>.
</p>
<p>
Pro vce informac si prosm pette ostatn strnky npovdy v 
<a Index>indexu npovdy</a>.
</p>
<p>
Jestlie chcete kontaktovat autora Scidu, jdte na strnku s
<a Author>kontaktnmi informacemi</a>.
</p>

<p><footer>(Aktualizovno: Scid 3.1, Prosinec 2001)</footer></p>
}


###############
### Hints page:

set helpTitle(C,Hints) "Rady k pouvn"
set helpText(C,Hints) {<h1>Rady k pouvn</h1>
<p>
Tato strnka obsahuje ve form otzek a odpovd uiten rady, kter vm
pomohou Scid lpe pouvat. Jestlie s programem Scid teprve zante, pette
si prosm nejdve <a Guide>rychlho prvodce</a>.
Vtina informac na tto strnce je probrna detailn na dalch strnkch
npovdy, viz <a Index>index</a>.
Jestlie chcete pispt na tuto stnku njakou svoj uitenou radou, polete ji
<a  Author>autorovi Scidu</a>. </p>

<h4>Mohu spustit Scid pmo se zvolenou databz?</h4>
<p>
Ano, na pkazov dek sta pidat databze, PGN soubory nebo
<a EPD>EPD soubory</a>. Nap.
<ul>
<li> <b>scid  mybase  games.pgn.gz</b> </li>
</ul>
oteve databzi ve formtu Scidu <b>mybase</b> a rovn PGN soubor komprimovan
Gzipem <b>games.pgn.gz</b>.
</p>

<h4>Existuje jednodu monost jak zmnit velikost achovnice ne pouitm menu
Volby?</h4>
<p>
Ano, pouijte klvesovou zkratku <b>Control+Shift+ipkaVlevo</b> pro zmenen achovnice
a <b>Control+Shift+ipkaVpravo</b> pro zvten.
</p>

<h4>Pi trninku si pehrvm partii, a tm pdem nechci, aby Scid zobrazoval
nsledujc tah v informan zn partie pod achovnic. Je mon ho
skrt?</h4>
<p>
Nsledujc tah lze skrt tak, e v informan zn partie stisknte
<b>prav</b> tlatko myi a z menu, kter se objev, vyberete
<b>Skrt nsledujc tah</b>.
</p>

<h4>Jak mohu vidt ECO kd zahjen pro aktuln pozici?</h4>
<p>
Jestlie byl nahrn klasifikan soubor ECO (<b>scid.eco</b>), ECO kd je
zobrazen na poslednm dku informan zny, pod achovnic v
<a MainWindow>hlavnm okn</a>. <br>
Strnka npovdy <a ECO>ECO kdu</a> vysvtluje, jak nahrt
klasifikan soubor ECO a uloit nastaven tak, aby se nahrl  pi kadm
sputn Scidu. </p>

<h4>Zadvm partii a jsem okolo 30. tahu, ale najednou zjistm, e 10. tah jsem
zadal patn. Jak ho mohu opravit, abych neztratil nsledujc tahy?</h4>
<p>
Mete pout okno <a Import>importu</a>; pro dal informace se podvejte na
strnku npovdy o <a Moves Mistakes>zadvn tah</a>.
</p>

<h4>Jak zkopruji partie z jedn databze do druh?</h4>
<p>
Pouijte <a Switcher>okno vbru databze</a>; petaenm ze zdrojov databze
do clov databze zkoprujete vechny partie z <a Searches Filter>filtru</a>
zdrojov databze.
</p>

<h4>Kdykoliv kdy zadvm tah, kde u njak existuje, objev se dialogov okno
"Nahradit tah?". Jak tomu mohu zabrnit?</h4>
<p>
Vypnte volbu <b>Ptt se ped nahrazenm tah</b> v menu
<menu>Volby: Tahy</menu>. Nebo si zvyknte na vrcen tahu zptky pouvat
prav tlatko myi, tak vlastn dojde k odstrann tahu z partie, je-li to jej
posledn tah.
</p>

<h4>Jak zmnm v Okn seznamu parti ku sloupc?</h4>
<p>
Kliknte levm nebo pravm tlatkem myi na kad titulek sloupce.
</p>

<h4>Jak mohu pout okno stromu s vbrem parti, ne s celou databz?</h4>
<p>
Pouijte <a Clipbase>databzi schrnka</a>. Nastavte filtr databze tak, aby
obsahoval partie, kter chcete pout pro strom, a zkoprujte je pomoc okna
<a Switcher>vbru databze</a> do databze schrnka.  Pak v databzi schrnka
otevete okno stromu.
</p>

<h4>Pro velk databze je strom pomal. Jak ho urychlm?</h4>
<p>
Pro pro dal pouit daj stromu asto ukldejte cache stromu. Dal
detaily najdete na strnkch npovdy <a Tree>stromu</a>, v sekci o cache.
</p>

<h4>Jak mohu pmo editovat PGN zpis partie?</h4>
<p>
K editaci aktuln partie nemete pout okno <a PGN>PGN</a>, ale mete
editovat jej PGN zpis pouitm okna <a Import>importu partie</a>.  Otevete ho
(klvesov zkratka <b>Control+Shift+I</b>) a zvolte
<b>Vloit aktuln partii</b>, pak mete partii editovat a nakonec zvolte
<b>Import</b>.
</p>

<h4>Moje databze obsahuje rzn tvary jmen nkterch hr. Jak je mohu vechny
opravit?</h4>
<p>
Pouitm pkaz v menu <menu>Soubor: drba</menu> mete editovat
individuln jmna hr nebo opravit vechna jmna v databzi. tte strnku
<a Maintenance Editing>drba</a>.
</p>

<h4>Mm oteveny dv databze: prvn s mmi vlastnmi partiemi a druhou velkou s
velmistrovskmi partiemi. Jak porovnm jednu z mch parti s tmi ve velk
databzi?</h4>
<p>
Ve velk databzi si otevete <a Tree>okno stromu</a> a zvolte
<term>Zamknout</term>, aby jste zamknuli strom k tto databzi. Potom se
pepnte do druh databze a strom bude dle pokraovat v zobrazovn daj pro
velkou databzi.
</p>

<p><footer>(Aktualizovno: Scid 2.6, Srpen 2001)</footer></p>
}


################
### Main window:

set helpTitle(C,MainWindow) "Hlavn okno Scidu"
set helpText(C,MainWindow) {<h1>Hlavn okno Scidu</h1>
<p>
Hlavn okno Scidu zobrazuje achovnici s aktuln pozic aktivn partie a
informace o tto partii a o oteven databzi. Jednotliv strnky npovdy
popisuj <a Menus>menu</a> hlavnho okna a <a Moves>zpsoby zadvn tah</a>.
</p>

<h3>Tlatka navigace v partii</h3>
<p>
Navigan tlatka nad achovnic maj tyto vznamy, zleva doprava:
<ul>
<li> <button tb_start> Jdi na zatek partie. </li>
<li> <button tb_prev> Jdi o jeden tah nazpt. </li>
<li> <button tb_next> Jdi o jeden tah dopedu. </li>
<li> <button tb_end> Jdi na konec partie. </li>
<li> <button tb_invar> Sko do varianty. </li>
<li> <button tb_outvar> Opus aktuln variantu. </li>
<li> <button tb_addvar> Pidej variantu k tomuto tahu v partii. </li>
<li> <button autoplay_off> Spus/Ukoni automatick pehrvn tah (viz
 ne). </li>
<li> <button tb_trial> Spus/Ukoni <a Moves Trial>zkuebn md</a>. </li>
<li> <button tb_flip> Oto achovnici. </li>
<li> <button tb_coords>  Zapni/Vypni zobrazovn souadnic achovnice. </li>
</ul>

<h4><name Autoplay>Automatick pehrvn</name></h4>
<p>
V reimu automatickho pehrvn Scid automaticky pehrv smrem dopedu
aktuln partii, dokud nedojde na jej konec. asov interval mezi tahy lze
nastavit z menu <menu>Volby: Tahy</menu>, pi uloen voleb je uloen do
vaeho souboru voleb.
</p>
<p>
Reim automatickho pehrvn spout nebo ukonuje klvesov zkratka
<b>Control+Z</b>, ukonit ho lze rovn klvesou <b>Escape</b>.
</p>
<p>
Jestlie spustte reim automatickho pehrvn pi otevenm
<a Analysis>analytickm okn</a>, partie se bude
<term>komentovat</term>: ped provedenm kadho tahu bude jako nov varianta
pidna analza programu a jeho hodnocen. Podrobnosti se dotete na strnce
npovdy o <a Analysis>analytickm okn</a>.
</p>

<h3>Informan zna partie</h3>
<p>
Oblast pod achovnic zobrazujc informace o partii se nazv
<term>informan zna partie</term>.
Jej prvn ti dky zobrazuj jmna hr,
vsledek, datum a msto.
tvrt dek indikuje souasnou pozici partie a
nsledujc tah.
</p>
<p>
Pt dek zobrazuje <a ECO>ECO</a> (Encyclopedia of Chess Openings, tj.
Encyklopedie achovch zahjen) kd aktuln pozice, jestlie se tato pozice
nalz v pouvanm ECO souboru.
</p>
<p>
Pravm tlatkem mete v informan zn partie aktivovat menu, kde lze nap.
skrt nsledujc tah (uiten pi trninku, kdy hdte jednotliv tahy
partie) a smazat nebo obnovit aktuln partii. Toto menu lze aktivovat i bez
myi stisknutm funkn klvesy <b>[F9]</b>.
</p>

<h4>Tabulky koncovek (tablebases)</h4>
<p>
Kdykoliv aktuln pozice doshne materiln konfiguraci nalezenou v databzovm
souboru tabulek koncovek, informan zna partie rovn zobrazuje jej
hodnocen podle tto tabulky. Detaily hledejte na strnce npovdy o
<a TB>tabulkch koncovek</a>.
</p>

<h3>Stavov lita</h3>
<p>
Stavov lita zobrazuje informace o aktuln databzi. Prvn pole indikuje stav
partie: <b>XX</b> znamen, e partie byla zmnna, ale jet neuloena, zatmco
<b>--</b> znamen, e zmnna nebyla, a <b>%%</b> indikuje, e databze je jen
ke ten (ned se zmnit).
</p>
<p>
Jestlie chcete, aby databze byla otevena jen ke ten, nastavte
adekvtn pstupov prva k jejm souborm, minimln aspo k jejmu indexovmu
souboru, nap. na pkazovm dku zadejte
<b>chmod a-w myfile.si3</b>
a tato databze pak bude Scidem otevena jen ke ten.
</p>
<p>
Stavov lita rovn zobrazuje, kolik parti je aktuln ve
<a Searches Filter>filtru</a>.
</p>

<p><footer>(Aktualizovno: Scid 3.1, Prosinec 2001)</footer></p>
}


######################
### Menus help screen:

set helpTitle(C,Menus) "Menu"
set helpText(C,Menus) {<h1>Menu Scidu</h1>

<h3><name File>Soubor</name></h3>
<ul>
<li><menu>Nov</menu>: Vytvo novou databzi.</li>
<li><menu>Otevt</menu>: Oteve existujc databzi.</li>
<li><menu>Zavt</menu>: Zave aktuln databzi.</li>
<li><menu>Vyhledva</menu>: Oteve <a Finder>Vyhledva soubor</a>.</li>
<li><menu>Zloky</menu>: <a Bookmarks>Zloky</a> a jejich funkce.</li>
<li><menu>drba</menu>: Funkce <a Maintenance>drby</a> databze.</li>
<ul>
  <li><menu>Okno drby</menu>: Otevr/Zavr okno drby databze.</li>
  <li><menu>Vymazn zdvojench parti</menu>: Nalezne v databzi
      <a Maintenance Twins>zdvojen</a> partie.</li>
  <li><menu>ECO klasifikace partie</menu>: Pepot
      <a ECO>ECO kdy</a> vech parti v databzi.</li>
  <li><menu>Editor jmen</menu>: Nahrad vechny vskyty jmna hre, msta
      turnaje a kola.</li>
</ul>
<li><menu>Pouze pro ten</menu>: Nastav aktuln databzi jen ke ten.</li>
<li><menu>Base 1/2/3/4/5</menu>: Tmito pkazy lze pepnat a mezi tymi
    aktivnmi databzemi a <a Clipbase>databz schrnka</a>.</li>
<li><menu>Ukonit</menu>: Ukon program Scid.</li>
</ul>

<h3><name Edit>Editace</name></h3>
<ul>
<li><menu>Pidat variantu</menu>: Pid novou przdnou variantu k nsledujcmu
    tahu nebo k poslednmu, jestlie za nm u dn jin tah nensleduje.</li>
<li><menu>Vymazat variantu</menu>: Zobraz submenu variant k aktulnmu (tj.
    nsledujcmu) tahu, kter lze vymazat.</li>
<li><menu>Zaadit jako prvn variantu</menu>: Zaad vybranou variantu k
    aktulnmu tahu na prvn msto.</li>
<li><menu>Povit stvajc variantu na hlavn</menu>: Pov vybranou variantu
    na hlavn vmnou se souasnou hlavn variantou.</li>
<li><menu>Zkusit variantu</menu>: Spust <a Moves Trial>zkuebn md</a> pro
    testovn varianty bez zsahu do aktuln partie.</li>
<li><menu>Odstranit</menu>: Odstran z aktuln partie vechny komente nebo
    varianty.</li>
<br>
<li><menu>Vyprzdnit schrnku</menu>: Vyprzdn
    <a Clipbase>databzi schrnka</a>, take neobsahuje dn partie.</li>
<li><menu>Zkoprovat tuto partii do schrnky</menu>: Zkopruje aktuln partii
    do <a Clipbase>databze schrnka</a>.</li>
<li><menu>Vloit posledn partii ze schrnky</menu>: Vlo aktivn partii z
    <a Clipbase>databze schrnka</a> do aktuln databze.</li>
<br>
<li><menu>Nastavit vchoz pozici</menu>: Nastav vchoz pozici aktuln
    partie.</li>
<li><menu>Vloit poten pozici</menu>: Vlo poten pozici z
    aktulnho vybranho textu (v clipboardu).</li>
</ul>

<h3><name Game>Partie</name></h3>
<ul>
<li><menu>Nov partie</menu>: Nastav aktuln partii do poten pozice a
    zru vechny jej neuloen zmny.</li>
<li><menu>Nathnout prvn/pedchoz/nsledujc/posledn partii</menu>: Nathne
    prvn/pedchoz/nsledujc/posledn partii do
    <a Searches Filter>filtru</a>.</li>
<li><menu>Znovunathnout aktuln partii</menu>: Znovunathne aktuln partii a
    zru vechny jej neuloen zmny.</li>
<li><menu>Nathnout partii slo</menu>: Nathne z aktuln databze partii
    danho sla.</li>
<br>
<li><menu>Uloit: pepsn partie</menu>: Ulo aktuln partii pepsnm jej
    originln verze v databzi</li>
<li><menu>Uloit: pidn nov partie</menu>: Ulo aktuln partii jako novou
    partii pidnm na konec databze.</li>
<br>
<li><menu>Identifikace zahjen</menu>: Najde nejhlub pozici z aktuln
    partie, kter se jet nachz v ECO souboru.</li>
<li><menu>Pejt na tah slo</menu>: Pejde na specifikovan tah aktuln
    partie.</li>
<li><menu>Hledat novinku</menu>: Najde prvn tah aktuln partie, kter se jet
    pedtm nehrl. </li>
</ul>

<h3><name Search>Hledat</name></h3>
<ul>
<li><menu>Vyistit filter</menu>: Vyist <a Searches Filter>filter</a>,
    take obsahuje vechny partie.</li>
<li><menu>Negace filtru</menu>: Invertuje filtr tak, e obsahuje jen partie,
    kter neobsahoval.</li>
<br>
<li><menu>Aktuln pozice</menu>: Vyhledv
    <a Searches Board>aktuln pozici</a> na achovnici.</li>
<li><menu>Hlavika: Vyhledv podle informac v
    <a Searches Header>hlavice</a>, nap. podle jmen hr.</li>
<li><menu>Materil/Vzor</menu>: Vyhledv podle
    <a Searches Material>materilu</a> nebo vzor.</li>
<br>
<li><menu>Hledat pomoc souboru voleb</menu>: Vyhledv pouitm
    <a Searches Settings>nastaven</a> ze souboru vyhledvacch voleb.</li>
</ul>

<h3><name Windows>Okna</name></h3>
<ul>
<li><menu>Editor koment</menu>: Otevr/Zavr okno
    <a Comment>editoru koment</a>.</li>
<li><menu>Seznam parti</menu>: Otevr/Zavr
    <a GameList>okno seznamu parti</a>.</li>
<li><menu>Okno PGN</menu>: Otevr/Zavr
    <a PGN>okno PGN</a>.</li>
<li><menu>Vyhledva turnaj</menu>: Otevr/Zavr okno
    <a Tmt>vyhledvae turnaj</a>.</li>
<br>
<li><menu>Vbr databze</menu>: Otevr/Zavr okno
    <a Switcher>vbru databze</a>, kde se lze pepnout do jin databze nebo
    jednodue koprovat partie mezi databzemi.</li>
<li><menu>Okno drby</menu>: Otevr/Zavr okno
    <a Maintenance>drby</a> databze.</li>
<br>
<li><menu>ECO prohle</menu>: Otevr/Zavr okno
    <a ECO browser>ECO prohlee</a>.</li>
<li><menu>Editor repertoru</menu>: Otevr/Zavr
    <a Repertoire>editor repertoru</a>.</li>
<li><menu>Statistick okno</menu>: Otevr/Zavr
    <term>Statistick okno filtru</term>, kter zobrazuje pehled vher/proher
    parti ve <a Searches Filter>filtru</a>.</li>
<li><menu>Stromov okno</menu>: Otevr/Zavr
    <a Tree>stromov okno</a>.</li>
<li><menu>Okno tabulky koncovek</menu>: Otevr/Zavr okno, kter zobrazuje
    informace z <a TB>tabulek koncovek</a>.</li>
</ul>

<h3><name Tools>Nstroje</name></h3>
<ul>
<li><menu>Program pro analzu</menu>: Spout/Zastavuje achov program pro
    analzu pozice, kter zobrazuje v
    <a Analysis>analytickm okn</a> hodnocen souasn pozice.</li>
<li><menu>Program pro analzu #2</menu>: Spout/Zastavuje druh achov program
    pro analzu pozice.</li>
<li><menu>Turnajov tabulka</menu>: Zkonstruuje a zobraz
    <a Crosstable>turnajovou tabulku</a> pro aktuln partii.</li>
<li><menu>Email manaer</menu>: Otevr/Zavr okno
    <a Email>emailovho manaera</a> pro sprvu korespondennch parti hranch
    emailem.</li>
<br>
<li><menu>Profil zahjen</menu>: Generuje
    <a Reports Opening>profil zahjen</a> pro aktuln pozic.</li>
<li><menu>Stopa figur</menu>: Otevr okno
    <a PTracker>stopae figur</a>.</li>
<br>
<li><menu>Informace o hrch</menu>: Zobraz
    <a PInfo>informace o hrch</a> aktuln partie.</li>
<li><menu>Graf ratingu </menu>: Zobraz
    <a Graphs Rating>graf ratingu</a>.</li>
<li><menu>Graf skre</menu>: Zobraz
    <a Graphs Score>graf skre</a>.</li>
<br>
<li><menu>Export aktuln partie</menu>: Zape aktuln partii do textovho
    souboru ve formtu PGN, HTML nebo LaTeX. tte strnku npovdy o
    <a Export>exportu</a>.</li>
<li><menu>Export filtrovanch parti</menu>: Zape vechny partie ve
    vyhledvacm <a Searches Filter>filtru</a> do textovho souboru ve formtu
    PGN, HTML nebo LaTeX. tte strnku npovdy o <a Export>exportu</a>.</li>
<br>
<li><menu>Import jedn PGN partie</menu>: Oteve <a Import>okno Importu</a> pro
    zadvn partie nebo jej vloen v <a PGN>PGN formtu</a>.</li>
<li><menu>Import souboru PGN parti</menu>: Importuje cel soubor parti
    v PGN formtu do aktuln databze.</li>
</ul>

<h3><name Options>Volby</name></h3>
<p>
Toto menu poskytuje pkazy pro nastaven takka vech konfigurovatelnch voleb
Scidu. Pkaz <menu>Uloit volby</menu> ulo aktuln nastaven voleb do
souboru "<b>~/.scid/scidrc</b>" (nebo <b>scid.opt</b> v adresi Scidu pro
uivatele Windows); tento soubor se nat pi kadm startu Scidu.
</p>

<h3><name Help>Npovda</name></h3>
<p>
Toto menu obsahuje funkce npovdy a pstup k oknu tip dne nebo k startovacmu
oknu, kter poskytuje informace o souborech, kter Scid naetl pi startu.
</p>

<p><footer>(Aktualizovno: Scid 3.5, nor 2003)</footer></p>
}


########################
### Entering moves help:

set helpTitle(C,Moves) "Zadvn tah"
set helpText(C,Moves) {<h1>Zadvn tah</h1>
<p>
Ve Scidu mete zadvat tahy partie pouitm myi nebo klvesnice. Kdy pohnete
my na njak pole achovnice, toto pole spolu s dalm zmn barvu, jestlie
existuje z tohoto nebo na toto pole mon tah. Jedn se o
<term>navrhovan tah</term>. Chcete-li zadat tento tah, jednodue kliknte
<term>levm</term> tlatkem myi. Jestlie vs navrhovn tah ru, mete ho
vypnout v menu Volby.
</p>
<p>
Jestlie chcete zadat jin tah ne navrhovan, mete pout <term>lev</term>
tlatko myi; stisknte tlatko na jednom poli a uvolnte na druhm.
</p>
<p>
Jestlie upednostujete zadvat tahy dvma kliknutm myi ped jejm taenm
se stisknutm tlatkem, mete pout <term>prostedn</term> tlatko;
kliknte na jedno pole a pak na druh.
</p>

<h4>Vrcen tahu zpt</h4>
<p>
Chcete-li vrtit posledn tah zpt, kliknte pravm tlatkem myi. Vrtte se
tak jeden tah nazpt a tah se smae, jestlie byl posledn v partii nebo ve
variant.
</p>

<h4>Nhrada pvodnch tah</h4>
<p>
Kdy zadte tah v takovm mst partie, kde u njak tah existuje, Scid zobraz
dialogov okno, zda opravdu chcete nahradit pvodn tah (pvodn tah a vechny
tahy za nm budou ztraceny) nebo chcete pidat nov tah jako variantu. Nkterm
lidem me toto dialogov okno vadit, protoe vdy chtj nahradit pvodn tahy,
z tohoto dvodu to lze v menu <menu>Volby: Tahy</menu> volbou
"<i>Ptt se ped nahrazenm tah</i>" vypnout.
</p>

<h4><name Trial>Zkuebn md</name></h4>
<p>
Jestlie studujete partii a dojdete do pozice, kde chcete zkusit alternativn
variantu beze zmny partie, vyberte z menu <menu>Editace</menu> pkaz
<b>Zkusit variantu</b> pro sputn zkuebnho mdu. V tomto mdu mete zadvat
tahy a jinak doasn mnit partii, po ukonen zkuebnho mdu se pak vrtte do
pozice, kde jste tento md spustili.</p>

<h3><name Mistakes>Oprava chyb</name></h3>
<p>
Kdy zadvte partii a najednou uvidte chybn tah nkolik tah dv, je mon
chybu opravit bez ztrty nsledujcch, ji zadanch tah. Jedinm zpsobem je
editace PGN reprezentace partie: otevete okno <a Import>Importu</a>, zadejte
"Vloit aktuln partii", opravte chybn tah a zadejte "Import".
</p>

<h3>Zadvn tah z klvesnice</h3>
<p>
Pro zadvn tah z klvesnice jednodue stisknte odpovdajc klvesy psmene
a slice. Vimnte si, e akceptovateln tahy mus bt v
<term>SAN notaci</term>, <i>bez</i> symbol bran (x) a promny (=). Pi zadvn
se nerozliuje velikost psmen, take nap. msto Nf3 mete zadat [n][f][3] --
pette si ale poznmku ne o konfliktech u pcovch tah.
</p>
<p>
Aby nedochzelo k problmm, notace pro krtkou a dlouhou rodu je [O][K] resp.
[O][Q] msto bnch oznaen O-O a O-O-O.
</p>
<p>
Pi zadvn tah stavov lita ukazuje adekvtn mon tahy. Kdykoliv mete
stiskem [space] vybrat ze seznamu prvn tah a pidat ho tak do partie. Chcete-li
smazat njak znak, stisknte [Backspace] nebo [Delete].
</p>
<p>
<b>Vimnte si</b>, e pi malch psmenech se nejprve navrhuj tahy pci,
take [b] me odpovdat pci nebo stelci (Bishop), ale v ppad konfliktu
muste pro tah stelcem pout velk psmeno [B].</p>

<h4>Doplovn tah</h4>
<p>
V menu Volby mete zapnout nebo vypnout automatick
<term>doplovn tah</term>. Pi zapnutm doplovn tah je tah zahrn,
jakmile jste zadali dostatek informac pro jeho rozeznn mezi ostatnmi monmi
tahmi. Nap. pi zapnutm doplovn sta pro tah <b>Jf3</b> v poten pozici
zadat [n][f] msto [n][f][3].</p>

<h3><name Null>Zadvn nulovch tah</name></h3>
<p>
<a Annotating Null>Nulov</a> (przdn) tahy mohou bt uiten ve variantch,
 kde
chcete peskoit tah jedn strany. Nulov tah mete zadat my vzetm jednoho
krle druhm krlem nebo klvesnic zadnm "<b>--</b>" (tj. dvakrt stisknout
tlatko mnus).</p>

<h3>Zadvn bnch anotanch symbol</h3>
<p>
Rovn mete v hlavnm okn s pomoc klvesnice zadvat bn
<a NAGs>anotan symboly</a>, bez nutnosti pout okno
<a Comment>editoru koment</a>. Nsledujc seznam ukazuje,kter symboly mete
zadat a jejich klvesov zkratky:
<ul>
<li> !  : [!][Return]</li>
<li> ?  : [?][Return] </li>
<li> !? : [!][?][Return] </li>
<li> ?! : [?][!][Return] </li>
<li> !! : [!][!][Return] </li>
<li> ?? : [?][?][Return] </li>
<li> </li>
<li> +- : [+][-] </li>
<li> +/-: [+][/] </li>
<li> += : [+][=] </li>
<li> =  : [=][Return] </li>
<li> -+ : [-][+] </li>
<li> -/+: [-][/] </li>
<li> =+ : [=][+] </li>
</ul>

<p><footer>(Aktualizovno: Scid 3.4, ervenec 2002)</footer></p>
}


#########################
### Searches help screen:

set helpTitle(C,Searches) "Vyhledvn"
set helpText(C,Searches) {<h1>Vyhledvn Scidem</h1>
<p>
Scid me v databzi vyhledvat podle rznch typ. Ti hlavn typy vyhledvn
 jsou:
<ul>
<li><b>1)</b> podle aktuln pozice na achovnici, </li>
<li><b>2)</b> podle specifikovanch vzor materilu nebo figur, a </li>
<li><b>3)</b> podle informac v hlavice jako nap. hri, vsledek, datum.
 </li>
</ul>
<p>
K tmto tem typm vyhledvn navc existuje automatick vyhledvac md zvan
<a Tree>Okno stromu</a>, kter je objasnn zvlṻ.
</p>

<h3><name Filter>Vyhledvac filtr</name></h3>
<p>
Vyhledvn ve Scidu jsou zaloeny na pojmu <term>filtr</term>. Filtr
reprezentuje podmnoinu aktuln databze: v kadm okamiku je kad partie bu
ve filtru obsaena nebo z filtru vyata.
</p>
<p>
U kadho typu vyhledvn mete vyhledvn omezit na existujc filtr, pidat
k existujcmu filtru nebo filtr ignorovat a prohledat tak celou databzi.
</p>
<p>
Mete rovn vechny partie jedn databze obsaen ve filtru zkoprovat do
jin databze pouitm okna <a Switcher>vbru databze</a>.
</p>
<p>
Pi vyhledvn podle pozice, podle materilu/vzoru nebo pi
<a Tree>stromovch</a> vyhledvnch se slo tahu prvn odpovdajc pozice
kad odpovdajc partie zapamatuje, take pi nahrn kad partie bude
automaticky zobrazena odpovdajc pozice.
</p>
<p>
<b>Vimnte si</b>, e vyhledvn probh jen v hlavn variant kad partie, ne
v ostatnch variantch. </p>

<h3><name Board>Vyhledvn podle aktuln pozice</name></h3>
<p>
Tento zpsob vyhledvn nalezne partie, kter obsahuj aktuln zobrazenou
pozici, pi ignorovn prv rody a bran mimochodem (<i>en passant</i>).
</p>
<p>
Existuj tyi typy vyhledvn podle pozice. Vechny tyi vyaduj tent
materil a shodu u strany, kter m bt na tahu. Tyto typy jsou:
<ul>
<li> [1] pesn pozice (vechny figury na stejnch polch), </li>
<li> [2] pci (vichni pci na stejnch polch, figury mohou bt kdekoliv),
     </li>
<li> [3] sloupce (vichni pci na stejnch sloupcch, figury mohou bt
     kdekoliv), a </li>
<li> [4] materil (pci a figury mohou bt kdekoliv). </li>
</ul>
<p>
Vyhledvn podle pc je uiten pi studiu zahjen podle pcov struktury,
vyhledvn podle ad a materilu je zase uiten pro nalezen podobnch pozic
v koncovce.
</p>
<p>
Chcete-li hledat libovolnou pozici, mete si pozici nejprve nastavit na
achovnici (z menu <menu>Editace: Nastavit vchoz pozici</menu>) a potom
spustit jej vyhledvn. </p>
<p>
Vbrem <b>Dvat se do variant</b> mete poadovat vyhledvn i ve variantch
(msto jen v hlavn variant partie), ale to me vyhledvn znan zpomalit,
je-li databze velk a obsahuje mnoho parti s variantami.
</p>

<h3><name Material>Vyhledvn podle materilu/vzoru</name></h3>
<p>
Tento zpsob vyhledvn je vhodn pro hledn tmat z koncovek a stedn hry.
Mete specifikovat minimln a maximln poet jednotlivch kamen a hledat
vzory jako nap. stelec na f7 nebo pec na f sloupci.
</p>
<p>
Je peddefinovno mnostv bnch materilnch sestav a vzor, jako nap.
koncovky v proti pci nebo dmsk izolovan pec.
</p>
<p>
<b>Rada:</b><br>
Rychlost vyhledvn podle vzoru se me iroce liit. Nastavenm inteligentnch
omezen mete vyhledvac as redukovat. Nap. jestlie pi hledn koncovky
nastavte minimln slo tahu na 20, vechny partie konc pod 20 tah mohou
bt peskoeny.
</p>

<h3><name Header>Vyhledvn podle hlaviky</name></h3>
<p>
Tento zpsob vyhledvn me bt pouit na hledn takovch aspekt partie,
kter jsou uloeny v jej hlavice (jako datum, vsledek, jmna, pznaky a
ratingy), take nevyaduje dn dekdovn tah.
</p>
<p>
Aby partie vyhovovala vyhledvn podle hlaviky, mus vyhovovat <b>vechna</b>
pole, kter jste specifikovali.
</p>
<p>
Pi vyhledvn podle pol jmen (Bl, ern, Turnaj, Msto a Kolo) vyhovuje
jakkoliv text obsahujc zadan jmno, pitom se nerozliuje velikost psmen a
ignoruj se mezery. </p>
<p>
Pro tato pole jmen mete pouvat bn zstupn znaky (<b>?</b> reprezentujc
jeden jakkoliv znak a <b>*</b> reprezentujc nulu nebo vce znak) a provdt
vyhledvn s rozliovnm velikosti psmen uzavenm hledanho textu do
uvozovek.  Nap. vyhledvn Msto <b>USA</b> najde americk msta a tak
<b>Lausanne SUI</b>, co pravdpodobn nen to, eho jste chtli doshnout! Ale
vyhledvn Msto <b>"*USA"</b> (nezapomete pout uvozovky) opravdu najde jen
msta ve Spojench Sttech. </p>
<p>
Jestlie hledte jednotlivho hre (nebo dvojici soupe) jako Bl nebo ern
a nezle na tom, jakmi barvami hrli, zvolte <b>Ignorovat barvy</b>.
</p>
<p>
Konen, vyhledvn podle hlaviky me bt pouito na nalezen jakhokoliv
textu (pi rozliovn velikosti psmen a bez pouit zstupnch znak)v PGN
reprezentaci kad partie. Mete zadat a ti textov etzce, kter se vechny
mus objevit v partii, aby partie vyhovovala.
Tento zpsob vyhledvn je velmi uiten pro hledn v komentch nebo
zvltnch poznmek (jako nap. <b>prohra na as</b> nebo <b>Komenttor</b>),
nebo pro sekvenci tah jako <b>Sxh7+</b> a <b>Kxh7</b> pro pijatou ob stelce
na h7.
Avak tento typ vyhledvn me bt <i>velmi</i> pomal, protoe vechny
partie, vyhovujc ostatnm kritrium, mus bt dekdovny a prohledny na
vskyt tchto textovch etzc.
Proto je dobrou ideou tato vyhledvn co nejvc omezit.
Zde jsou njak pklady.
Hledte-li partie s promnou pce na v, zadejte <b>=V</b> a rovn nastavte
pznak <b>Promny</b> na Ano. Hledte-li text, kter by se mohl objevit v
komentch, nastavte pznak <b>Komente</b> na Ano.
Hledte-li tahy <b>Sxh7+</b> a <b>Kxh7</b>, budete mon nap. chtt vyhledvn
omezit na partie s vsledkem 1-0 a nejmn s 40 pltahy, nebo nejprve provst
vyhledvn podle materilu/vzoru, kde bl stelec thnul na h7.
</p>

<h3><name Settings>Uloen vyhledvacch nastaven</name></h3>
<p>
Okna vyhledvn podle materilu/vzoru a podle hlaviky poskytuj tlatko
<term>Uloit</term>. To vm dovoluje uloit svoje aktuln nastaven vyhledvn
pro pozdj pouit, kter se ulo do <term>souboru vyhledvacch voleb</term>
(SearchOption, ppona .sso).
Chcete-li provdt vyhledvn pouitm dve uloenho souboru vyhledvacch
voleb (.sso), z menu <menu>Hledat</menu> vyberte <menu>Hledat pomoc souboru
voleb</menu>.
</p>

<h3>Vyhledvac asy a peskoen partie</h3>
<p>
Vtina vyhledvn produkuje zprvu indikujc spotebovan as a poet parti,
kter byly <term>peskoeny</term>. Peskoen partie je takov partie, kter
me bt z vyhledvn vyata na zklad informac uloench v indexu, bez
dekdovn jakhokoliv jejho tahu. Pro vce informac se podvejte na strnku
npovdy o <a Formats>formtech soubor</a>.
</p>

<p><footer>(Aktualizovno: Scid 3.0, Listopad 2001)</footer></p>
}


##################
### Clipbase help:

set helpTitle(C,Clipbase) "Schrnka"
set helpText(C,Clipbase) {<h1>Databze schrnka</h1>
<p>
K databzm, kter mte oteven, Scid navc poskytuje databzi
<term>schrnka</term>, kter je stejn jako ostatn databze krom toho, e
existuje jen v pamti a nem dn soubory pro trval uloen.
</p>
<p>
Tato schrnka je uiten jako doasn databze, pro sjednocovn vsledk
vyhledvn ve vce ne jedn databzi nebo jako samostatn databze pro
zpracovn vsledk vyhledvn.
</p>
<p>
Pedpokldejme nap., e se chcete pipravit na soupee a prohledali jste
databzi, take <a Searches Filter>filtr</a> obsahuje jen partie, kde soupe
hrl blma.
Tyto partie mete zkoprovat do schrnky (taenm z jejich databze do schrnky
v okn <a Switcher>vbru databze</a>), pepnout se do databze schrnka a
otevenm <a Tree>okna stromu</a> prozkoumat repertor tohoto hre. </p>
<p>
Vimnte si, e partie ve filtru z jedn databze mete pmo zkoprovat do
jin oteven databze (bez pouit schrnky jako zprostedkujcho msta)
pouitm okna <a Switcher>vbru databze</a>.
</p>
<p>
Vimnte si, e schrnka <i>neme</i> bt zavena; nachzte-li se ve schrnce,
pkaz <menu>Soubor: Zavt</menu> je ekvivalentn pkazu
<menu>Editace: Vyprzdnit schrnku</menu>, kter vyprzdn schrnku.
</p>
<p>
Velikost schrnky je trvale omezena 20,000 partiemi, protoe existuje jen v
pamti.
</p>

<p><footer>(Aktualizovno: Scid 2.5, erven 2001)</footer></p>
}

#################################
### Variations and comments help:

set helpTitle(C,Annotating) "Anotace parti"
set helpText(C,Annotating) {<h1>Anotace parti</h1>
<p>
Scid vm umouje k partii pidat poznmky. Jsou ti typy anotac, kter mete
pidat za tah: symboly, koment a varianty.
</p>

<h3>Symboly a komente</h3>
<p>
Symboly se pouvaj pro indikaci hodnocen pozice (jako nap. "+-" nebo "=")
nebo k oznaen dobrch ("!") a patnch ("?") tah, zatmco koment me bt
libovoln text. Chcete-li k partii pidat symboly, pouijte okno
<a Comment>Editoru koment</a>.
Je zde tak strnka npovdy se seznamem
<a NAGs>standardnch symbolickch hodnot</a>. </p>
<p>
Uvdomte si, e kad tah me mt vce ne jeden anotan symbol, ale pouze
jeden koment. Koment ped prvnm tahem partie je zobrazen jako text ped
zatkem partie.
</p>

<h3><name Vars>Varianty</name></h3>
<p>
<term>Varianta</term> tahu je alternativn posloupnost tah v uritm mst
partie. Varianty mohou obsahovat komente a dokonce rekurzivn mohou mt
podvarianty. Pro vytvoen, navigaci a editaci variant lze pout tlatka nad
achovnic se symbolem "<b>V</b>" a pkazy v menu <menu>Edit</menu>.
</p>

<h4>Klvesov zkratky</h4>
<p>
Kdy m tah varianty, jsou zobrazeny v informan zn partie. Prvn bude
oznaena <b>v1</b>, druh <b>v2</b> atd.
Kliknutm na variantu mete do n skoit nebo stisknte "<b>v</b>" nsledovan
slem varianty. (Jestlie k tahu existuje jen jedna varianta, jednoduch stisk
<b>v</b> do n sko.)
Chcete-li variantu opustit, mete pout klvesovou zkratku "<b>z</b>".
</p>

<h3><name Null>Nulov tahy</name></h3>
<p>
Nkdy mete shledat uitenm ve variant peskoit tah jedn strany. Nap.
mete chtt pidat do varianty tah 14.Sd3 a poukzat, e hroz 15.Sxh7+ Kxh7
16.Jg5+ s tokem. To mete udlat provedenm <term>nulovho tahu</term>, v
pkladu ve mezi 14.Sd3 a 15.Sxh7+. Nulov tah je zobrazen jako  "<b>--</b>"
a me bt zadn pouitm myi provedenm nemonho tahu vzet jednoho krle
druhm nebo z klvesnice zadnm "<b>--</b>" (dv znamnka mnus).
</p>
<p>
Uvdomte si, e nulov tahy nejsou soust PGN standardu, take jestlie
exportujete partie s nulovmi tahy do PGN souboru, Scid poskytne (krom jinch
voleb exportu) volbu uchovat nulov tahy nebo je zkonvertovat na komente pro
kompatibilitu s jinm softwarem.
Pro vce detail tte strnku npovdy o <a Export>exportovn</a>.
</p>

<p><footer>(Aktualizovno: Scid 3.4, ervenec 2002)</footer></p>
}

###############################
### Comment editor window help:

set helpTitle(C,Comment) "Okno editoru koment"
set helpText(C,Comment) {<h1>Okno editoru koment</h1>
<p>
Okno editoru koment umouje pidvat nebo editovat komente a symbolick
anotan znaky k tahm aktivn partie.
</p>

<h3>Anotan symboly</h3>
<p>
Scid pouv pro anotan symboly <a Author Related>PGN standard</a> spolu s
<a NAGs>NAG (numeric annotation glyph)</a> anotanmi hodnotami. Nkter z vtiny
bnch znak (jako "!" nebo "+-") jsou zobrazeny jako znaky a pro rychl pouit
je pro n v okn editoru koment tlatko. Pro ostatn symboly mete zadat
odpovdajc  numerickou NAG hodnotu, kter je slo od 1 do 255.
Nap. NAG hodnota 36 znamen  "Bl m iniciativu" a bude v
<a PGN>PGN zpisu</a> partie zobrazena jako "$36".
</p>
<p>
Pette si strnku npovdy o <a NAGs>NAG hodnotch</a> definovanch
PGN standardem.
</p>
<p>
<b>Rada:</b> Bn hodnotc symboly k tahm (!, ?, !!, ??, !? and ?!)
mete zadat v hlavnm okn, bez pouit okna editoru koment, stiskem
odpovdajcho znaku nsledovanho klvesou [Return].
To je velmi uiten, zvlt pi <a Moves>zadvn tah</a> z klvesnice.
</p>

<h3>Komente</h3>
<p>
Komente mete editovat zpisem v poskytovan textov oblasti a pouitm
tlatek Vyistit, Vrtit se a Uschovat.
K schov komente nen poteba neustle pouvat tlatko Uschovat; koment
je automaticky uschovn, kdykoliv pejdete k jin pozici partie.</p>

<h3>Barevn znaen pol</h3>
<p>
Pouitm specilnho vloenho pkazu, kter se me objevit kdekoliv v
komenti, mete libovolnou barvou barevn oznait libovoln pole achovnice.
Formt tohoto pkazu je:
</p>
<ul>
<li><b>[%mark square color]</b><li>
</ul>
<p>
kde <b>square</b> (tj. pole) je oznaen pole jako nap. d4 a <b>color</b> (tj.
barva) je libovoln znm jmno barvy (jako nap. red, blue4, darkGreen,
lightSteelBlue atd.) nebo RGB kd (znak <b>#</b> nsledovan estic
hexadecimlnch slic, jako nap. #a0b0c8). Jestlie color je vynechno,
pouije se implicitn <red>red</red>.
</p>
<p>
Koment me obsahovat libovoln poet tchto pkaz, ale kad mus mt sv
vlastn <b>[%mark ...]</b> oznaen. Nap. text komente
</p>
<p>
  Nyn je d6 [%mark d6] slab a me bt napadeno jezdcem z b5.
  [%mark b5 #000070]
</p>
<p>
ozna d6 <red>erven</red> a b5 tmavomodrou barvou
<darkblue>#000070</darkblue>.
</p>

<h3>Kreslen ipek</h3>
<p>
Pouitm specilnho komentovacho pkazu podobnmu pedchozmu mete
nakreslit ipku z jednoho pole k druhmu. Formt tohoto pkazu je:
</p>
<ul>
<li><b>[%arrow fromSquare toSquare color]</b><li>
</ul>
<p>
kde <b>fromSquare</b> (tj. z pole) a <b>toSquare</b> (tj. na pole) jsou oznaen
pol jako nap. d4 a <b>color</b> (tj. barva) je libovoln znm jmno barvy
(nap. red, blue4 atd.) nebo RGB kd (nap. #a0b0c8). Jestlie color je
vynechno, pouije se implicitn <red>red</red>.
</p>
<p>
Nap. text komente
</p>
<p>
  Jezdec c3 a stelec c4 kontroluj slab pole d5.
  [%arrow c3 d5 red] [%arrow c4 d5 blue]
</p>
<p>
nakresl ervenou ipku z c3 na d5 a modrou z c4 na d5.
</p>

<p><footer>(Aktualizovno: Scid 3.2, nor 2002)</footer></p>
}

###########################
### Crosstable window help:

set helpTitle(C,Crosstable) "Okno turnajov tabulky"
set helpText(C,Crosstable) {<h1>Okno turnajov tabulky</h1>
<p>
Okno turnajov tabulky zobrazuje turnajovou tabulku pro aktuln partii.
Kdykoliv zvolte aktualizaci tohoto okna (stiskem tlatka Aktualizovat nebo
stiskem klvesy <b>Return</b> v okn turnajov tabulky nebo klvesovou zkratkou
<b>Control+Shift+X</b> v <a MainWindow>hlavnm okn</a> nebo v
<a GameList>okn seznamu parti</a>), Scid vyhled vechny partie toho turnaje,
z kterho je aktuln partie.
</p>
<p>
Partie se povauje ze stejnho turnaje jako je aktuln partie, jestlie se
hrla v <b>asovm intervalu maximln t msc</b> od aktuln partie a m
<b>pesn stejn speciln oznaen Event</b> (turnaj) a <b>Site</b> (msto).
</p>
<p>
Kliknutm levm tlatkem myi na kterkoliv vsledek v tabulce lze nathnout
odpovdajc partii.
Pomoc tlatka <b>Pidat do filtru</b> v okn turnajov tabulky mete vechny
partie turnaje pidat do <a Searches Filter>filtru</a>.
</p>

<h4>Menu okna turnajov tabulky</h4>
<p>
Menu <menu>Soubor</menu> umouje tisk aktuln tabulky do textovho, LaTeX
nebo HTML souboru.
</p>
<p>
Menu <menu>Zobrazit</menu> umouje vybrat formt tabulky:
<b>Kad s kadm</b>, <b>vcarsk systm</b> nebo <b>Vyazovac</b> nebo
<b>Auto</b>.
</p>
<p>
Formt kad s kadm (pro kruhov turnaje) je omezen potem 30 hr, ale
vcarsk systm (pro turnaje s mnoha hri) me zobrazit a 200 hr a a 20
kol. Formt <b>auto</b>, kter pro kad turnaj automaticky vybere nejlep
formt, je nastaven implicitn.
</p>
<p>
Uvdomte si, e Scid pouv k pprav tabulky vcarskho systmu speciln
oznaen <b>Round</b> (Kolo) kad partie, take v turnajov tabulce vcarskho
systmu neuvidte dn partie, jestlie jeho partie nebudou mt numerick
oznaen kol: 1, 2, 3, atd.
</p>
<p>
Menu Zobrazit vm rovn umouje pizpsobit si prezentovan daje pidnm
nebo odebrnm rating, zem a titul hr. Mete rovn zvolit, zda maj bt
v tabulce indikovny barvy (jen pro vcarsk systm).
</p>
<p>
Volba <b>Skupiny podle skre</b> ovlivuje zobrazen tabulky jen tehdy, kdy
jsou hri seazeni podle bod: mezi skupiny hr se stejnm potem bod je pro
lep pehlednost vloen przdn dek.
</p>
<p>
Menu <menu>adit</menu> umouje seadit hre podle jmna, ratingu nebo podle
skre; implicitn jsou azeni podle skre.
</p>
<p>
Menu <menu>Barvy</menu> umouje zapnout nebo vypnout barevn (hypertextov)
zobrazovn. Protoe vak formtovn a zobrazen velk tabulky v hypertextu
me trvat velmi dlouho, volbou <b>Prost text</b> pro velk turnaje uette
spoustu asu.
Avak v textovm mdu nelze klikat na hre i partie.
</p>

<h4>Duplicitn partie v tabulce</h4>
<p>
Abyste dostali v turnajov tabulce sprvn vsledky, je poteba oznait k
vmazu duplicitn partie a partie mus mt shodn tvary jmen hr, turnaj a
mst.
Pro dal npovdu o mazn duplicitnch parti a editaci (nebo kontrole
pravopisu) jmen hr, turnaj, mst tte strnku
<a Maintenance>drby databze</a>.
</p>

<p><footer>(Aktualizovno: Scid 3.1, Prosinec 2001)</footer></p>
}


###########################
### Database switcher help:

set helpTitle(C,Switcher) "Vbr databze"
set helpText(C,Switcher) {<h1>Okno vbru databze</h1>
<p>
Okno vbru databze poskytuje pohled, kter umouje jednodue se pepnat a
koprovat partie mezi databzemi.
Je zobrazeno jmno, stav <a Searches Filter>filtru</a> a graficky typ ikony
kad databze, aktivn databze je zvraznna lutm pozadm.
</p>
<p>
Okno vbru databze mete otevt z menu <menu>Okna</menu> nebo jeho
klvesovou zkratkou: <b>Control+D</b>.
</p>
<p>
Chcete-li zkoprovat vechny filtrovan partie jedn databze do druh,
thnte stisknutm levm tlatkem myi od zdrojov databze do clov. Jestlie
partie mohou bt zkoprovny, uvidte potvrzovac dialog (jestlie clov
databze nen <a Clipbase>schrnka</a>), jestlie partie nemohou bt
zkoprovny, uvidte chybovou zprvu.
</p>
<p>
Stisk pravho tlatka myi nad databz vyvol vyskakovac menu
tkajc se tto databze, z kterho lze zmnit typ ikony databze nebo
resetovat jej <a Searches Filter>filtr</a>. Toto menu lze rovn pout ke
zmn orientace okna (vertikln nebo horizontln), co je uiten pro
men obrazovky.
</p>

<p><footer>(Aktualizovno: Scid 3.1, Prosinec 2001)</footer></p>
}


############################
### File Finder window help:

set helpTitle(C,Finder) "Okno vyhledvae soubor"
set helpText(C,Finder) {<h1>Okno vyhledvae soubor</h1>
<p>
<term>Vyhledva soubor</term> vm pomh pi hledn soubor vech typ, kter
lze ve Scidu pout: databz, <a PGN>PGN</a> soubor, <a EPD>EPD</a> soubor a
<a Repertoire>repertorovch</a> soubor.
</p>
<p>
Vyhledva zobrazuje o kadm souboru uiten informace jako jeho velikost
(tte ne) a datum posledn modifikace. Kterkoliv zobrazen soubor lze
otevt jeho vybrnm jednoduchm kliknutm levm tlatkem myi.
</p>

<h3>Hledn v podadresch</h3>
<p>
Jestlie chcete nalzt vechny soubory ve vech podadresch souasnho
adrese, zapnte volbu <b>Hledat v podadresch</b>. Takto bude Scid
rekurzivn hledat ve vech podadresch soubory, kter lze ve Scidu otevt.
Pro mnoho podadres to me trvat velmi dlouho, take nen vhodn to provdt
pro adres blzko koenovho adrese souborovho systmu. Vyhledvn soubor
lze zastavit tlatkem <b>Stop</b>.
</p>

<h3>Velikost souboru</h3>
<p>
Vznam velikosti souboru zobrazen vyhledvaem zvis na typu souboru. Pro
databze Scidu a PGN soubory znamen poet parti. Pro EPD soubory znamen poet
pozic. Pro repertorov soubory znamen poet (zahrnutm nebo vylouench)
variant.
</p>
<p>
Pro vechny typy soubor krom databzi Scidu je velikost souboru
odhad vytvoen prohldnutm jen prvnch 64 kilobyt souboru, take velikost
soubor vtch ne 64 kb nemus bt sprvn. Odhadnut velikosti jsou zobrazeny
se znakem tilda (~), indikujc tak, e nejsou pesn.
</p>

<p><footer>(Aktualizovno: Scid 2.7, Z 2001)</footer></p>
}

##################################
### Tournament Finder window help:

set helpTitle(C,Tmt) "Okno vyhledvae turnaj"
set helpText(C,Tmt) {<h1>Okno vyhledvae turnaj</h1>
<p>
<term>Vyhledva turnaj</term> vm umouje najt turnaje v aktuln databzi.
Prochz vechny partie databze a ovuje daje o nalezench turnajch.
Vimnte si, e dv partie se povauj za partie ze stejnho turnaje, jestlie
maj stejn speciln oznaen Event (Turnaj), stejn speciln oznaen Site
(Msto) a hrly se v asovm intervalu maximln t msc od sebe.
</p>
<p>
Editac pol pod seznamem turnaj a nslednm stiskem tlatka
<b>Aktualizovat</b> mete seznam omezit potem hr a parti, datumem,
prmrnm Elo ratingem a zem.
</p>
<p>
Zobrazen seznam me bt setdn podle data, potem hr, potem parti,
prmrnm Elo ratingem, mstem, turnajem nebo pjmenm vtze. Kategorii
vyberte z menu <menu>adit</menu> nebo kliknte na titulek poadovanho sloupce.
</p>
<p>
Chcete-li nathnout prvn partii libovolnho zobrazenho turnaje, sta kliknout
levm tlatkem myi, kdy je dek poadovanho turnaje zvraznn. Tak dojde
rovn k aktualizaci okna <a Crosstable>turnajov tabulky</a>, je-li oteveno.
Jestlie msto toho kliknete pravm tlatkem myi, partie se nathne a okno
turnajov tabulky se oteve, i kdy bylo zaveno.
</p>
<p>
Pro urychlen procesu vyhledvn turnaj je dobrou ideou nastavit docela mal
asov rozsah (jako nanejve nkolik let) nebo vybrat uritou zemi (jejm
tznakovm standardnm kdem). To znan zredukuje poet parti, kter Scid
mus vzt do vahy pi zformovn turnaj z parti v databzi.
</p>

<p><footer>(Aktualizovno: Scid 3.3, Duben 2002)</footer></p>
}

#########################
### GameList window help:

set helpTitle(C,GameList) "Okno seznamu parti"
set helpText(C,GameList) {<h1>Okno seznamu parti</h1>
<p>
Okno seznamu parti zobrazuje jednodkov souhrn informac pro kadou partii
obsaenou v aktulnm <term>filtru</term>.
</p>

<h3>Navigace v seznamu parti</h3>
<p>
V seznamu parti se mete pohybovat pomoc posuvn lity nebo pouitm ty
tlatek pod seznamem. V seznamu se lze pohybovat rovn pomoc klvesnice, a to
klvesami [Home], [End], [Page Up], [Page Down] a ipkami.
</p>
<p>
Pouitm oknka <b>Hledat text</b> lze vyhledvat nsledujc partii v seznamu,
kter obsahuje v poli Bl, ern, Turnaj nebo Msto jist text.
</p>

<h3>Akce s partiemi v seznamu</h3>
<p>
Nathnout partii ze seznamu lze dvojklikem levho tlatka na partii.
Kliknutm prostednho tlatka myi se zobraz poten tahy partie; to me
bt uiten na kontrolu zahjen partie ped jejm nataenm.
</p>
<p>
Prav tlatko myi vyvol pro vybranou partii menu, v kterm mete prohldnout
nebo pipojit partii (viz ne), smazat (nebo obnovit) partii nebo ji vyjmout z
filtru.
Uvdomte si, e smazan partie jen zapne jej mazac pznak; partie zstane a
do <a Compact>zhutnn</a> v databzi.
</p>

<h3>Konfigurace seznamu parti</h3>
<p>
Ke konfiguraci seznamu parti kliknte levm nebo pravm tlatkem myi na
titulku sloupce. Mete tak zmnit ku sloupce, pidat nebo odebrat sloupce a
zmnit bravu pro kad sloupec.
</p>
<p>
Chcete-li jen zmnit velikost sloupce, lze pout klvesovou zkratku; pidrenm
klvesy <b>Control</b> (nebo <b>Shift</b>) a souasnm stiskem levho tlatka
myi na titulku sloupce ho zte a stiskem pravho tlatka rozte.
</p>

<h3>Zmna velikosti seznamu parti</h3>
<p>
Velikost okna seznamu parti se zape do souboru voleb pi kadm uloen
voleb.
Take chcete-li, aby seznam parti zobrazoval implicitn 10 parti, zmte
velikost okna seznamu parti a zadejte pkaz <menu>Uloit volby</menu> z menu
<menu>Volby</menu>.
</p>

<h3><name Browsing>Prohlen a pipojovn parti</name></h3>
<p>
Menu vyvolan pravm tlatkem myi v seznamu parti (a tak jin okna jako
okno <a Reports Opening>profilu zahjen</a> a
<a Tree Best>seznam nejlepch parti</a> v okn <a Tree>stromu</a>) poskytuje
vbr nataen, prohldnut a pipojen partie.
</p>
<p>
Pi volb <term>Prohldnout partii</term> jsou tahy vybran partie (bez
koment nebo variant) zobrazovny v samostatnm okn. To je uiten cesta k
prohldnut jin partie bez ovlivnn aktuln nataen partie.
</p>
<p>
Volba <term>Pipojit partii</term> poskytuje zpsob k pipojen vybran partie
jako varianty k aktuln partii. Scid nalezne nejhlub msto, kde se vybran
partie li od aktuln partie (pehozen tah se berou v vahu), a v tto
pozici pid vybranou partii jako variantu. Mete rovn zmnit poet pidanch
tah vybran partie podle toho, jestli chcete pipojit celou partii nebo jen
jej zahjen.
</p>

<p><footer>(Aktualizovno: Scid 3.2, nor 2002)</footer></p>
}


#######################
### Import window help:

set helpTitle(C,Import) "Okno importu parti"
set helpText(C,Import) {<h1>Okno importu parti</h1>
<p>
Okno importu Scidu vm poskytuje jednoduch zpsob ke vkldn partie v
<a PGN>PGN formtu</a> z jin aplikace nebo okna do Scidu.
</p>
<p>
Velk bl rmec v okn je msto, kam zapete nebo vlote text partie v PGN
formtu, ed rmec pod poskytuje zptnou vazbu vech chyb a varovn.
</p>

<h3>Editace aktuln partie prostednictvm okna importu</h3>
<p>
Okno importu lze rovn pout jako ikovn prostedek k proveden nkolika mlo
zmn v aktuln partii: mete vloit aktuln partii do okna importu (pouitm
tlatka <b>Vloit aktuln partii</b>), editovat jej text a po skonen
kliknout <b>Import</b>.
</p>

<h3>Speciln oznaen PGN v okn importu</h3>
<p>
Scid oekv ped vemi tahmi speciln hlavikov oznaen PGN jako nap.
<ul>
<li> <b>[Result "*"]</b>, </li>
</ul>
ale klidn mete vloit partii jako
<ul>
<li> <b>1.e4 e5 2.Sc4 Sc5 3.Dh5?! Jf6?? 4.Dxf7# 1-0</b> </li>
</ul>
bez vech specilnch hlavikovch oznaen a Scid ji importuje.
</p>

<h3>Pouvn PGN soubor ve Scidu</h3>
<p>
Jestlie chcete ve Scidu pouvat formt soubor PGN, ale nechcete ho nejprve
zkonvertovat pouitm <a Pgnscid>pgnscid</a>, existuj zde dv cesty.
</p>
<p>
Za prv mete importovat partie v souboru do existujc databze pouitm
pkazu menu <menu>Nstroje: Import souboru PGN parti...</menu>.
</p>
<p>
Alternativou je oteven PGN souboru pmo ve Scidu. Avak soubory formtu PGN
jsou oteveny pouze ke ten a spotebovvaj vce pamti ne porovnateln
databze Scidu, take to lze doporuit jen pro relativn mal PGN soubory.
</p>

<p><footer>(Aktualizovno: Scid 2.5, erven 2001)</footer></p>
}

###################
### Exporting help:

set helpTitle(C,Export) "Export parti"
set helpText(C,Export) {<h1>Export parti</h1>
<p>
K exportu aktuln partie nebo vech parti v aktulnm filtru do textovho
souboru mete pout pkazy v menu <menu>Nstroje</menu>.
</p>
<p>
Textov soubor je k dispozici ve tech formtech: <a PGN>PGN</a> (portable game
notation), HTML (pro webov strnky) a LaTeX (populrn szec systm).
</p>
<p>
Pi exportovn si mete vybrat, zda-li chcete vytvoit nov soubor nebo pidat
partie k existujcmu souboru parti exportovanch Scidem.
</p>

<h3>Diagramy</h3>
<p>
Pi exportu v HTML nebo LaTeX formtu Scid automaticky pid diagram, kdykoliv
se v partii objev diagramov <a NAGs>nag</a> ("D") nebo <a Comment>koment</a>
zanajc znakem "#".
</p>

<h3><name Null>Nulov tahy v PGN exportu</name></h3>
<p>
Scid umouje ukldat do partie <a Annotating Null>nulov (przdn) tahy</a>,
protoe mohou bt uiten pi anotaci parti variantami.
Avak  PGN standard pojem nulov tah neobsahuje. Take exportujete-li partie
Scidu s nulovmi tahy do PGN souboru, ostatn PGN tec software nebude schopen
nulov tahy pest.
</p>
<p>
K een tohoto problmu Scid poskytuje pi exportu parti do PGN formtu navc
volbu <b>Convert null moves to comments</b>.
Chcete-li vytvoit PGN soubor, kter me pout jin software, tuto volbu
zapnte a varianty obsahujc nulov tah budou konvertovny na komente. Avak
chcete-li vytvoit PGN soubor, kter me bt pozdji importovn zpt do Scidu
se zachovanmi nulovmi tahmi, ponechte tuto volbu vypnutou.
</p>

<h3>HTML export</h3>
<p>
Scid me exportovat partie do HTML souboru. Aby se zobrazily diagramy, je
potebovat, aby obrzky diagram (distribuovan spolen se Scidem v adresi
"<b>bitmaps/</b>") byly v podadresi <b>bitmaps/</b> pod adresem, kde se
nachz HTML soubor.
</p>

<h3>LaTeX export</h3>
<p>
Scid me exportovat partie do LaTeX souboru.
Partie jsou szeny ve dvou sloupcch na stranu a tahy jsou v symbolick
algebraick notaci.
</p>
<p>
Pro vce informac tte strnku npovdy <a LaTeX>Pouit LaTeXu se Scidem</a>.
</p>

<p><footer>(Aktualizovno: Scid 3.4, ervenec 2002)</footer></p>
}

###############
### LaTeX help:

set helpTitle(C,LaTeX) "Scid a LaTeX"
set helpText(C,LaTeX) {<h1>Pouit LaTeXu se Scidem</h1>
<p>
Scid me partie a profily zahjen ukldat do soubor v LaTeX formtu. LaTeX
je rozen TeXu, populrnho szecho systmu.
</p>
<p>
Chcete-li szet LaTeX soubory vytvoen Scidem, muste mt (samozejm) LaTeX a
muste mt nainstalovan balk achovch font "chess12". Tento balk font
obvykle nen soust standardn instalace LaTeXu, take klidn mete mt LaTeX
a nemuste mt achov fonty.
</p>
<p>
Pro informace o staen a instalaci achovch font navtivte strnku
<url http://scid.sourceforge.net/latex.html>Pouit LaTeXu se Scidem</url>
na <url http://scid.sourceforge.net/>webov strnce Scidu</url>.
</p>

<p><footer>(Aktualizovno: Scid 2.5, erven 2001)</footer></p>
}

####################
### PGN window help:

set helpTitle(C,PGN) "Okno PGN"
set helpText(C,PGN) {<h1>Okno PGN</h1>
<p>
Okno PGN Scidu zobrazuje obsah aktuln partie ve standardn PGN reprezentaci. V
zpisu tah jsou komente {ve sloench zvorkch} a varianty (v zvorkch).
</p>

<h3>PGN formt</h3>
<p>
PGN (Portable Game Notation) je obecn standard pro penos achovch parti mezi
potaovmi programy.
PGN partie se skld ze dvou sekc. Prvn je hlavika, kter obsahuje speciln
oznaen jako nap.
<b>[White "Kasparov, Gary"]</b>
a
<b>[Result "1/2-1/2"]</b>.
</p>
<p>
Druh sekce obsahuje skuten tahy partie ve standardn algebraick notaci
(standard algebraic notation, SAN) spolen se vemi variantami,
<a NAGs>anotanmi symboly</a> a <a Comment>komenti</a>.
</p>

<h3>Akce v okn PGN</h3>
<p>
Okno PGN mete pout k navigaci v partii: kliknutm levm tlatkem myi na
tah skote do pozice po tomto tahu. Kliknutm levm tlatkem myi na koment
spustte jeho editaci.
Navigan klvesy (tj. ipky) (a klvesy <b>v</b> a <b>z</b> pro skok do a z
varianty) umouj navigaci v partii jako v hlavnm okn.
</p>

<h3>Volby zobrazen PGN</h3>
<p>
Menu okna PGN obsahuj volby, kter ovlivuj vzhled okna PGN. Scid me
zobrazit partii barevn nebo jako obyejn text -- viz menu
<menu>Zobrazit</menu> v okn PGN.
Barevn zobrazen se snadnji te a dovoluje vm vbr tah a koment pouitm
myi, ale je mnohem pomalej na aktualizaci. Pro velmi dlouh partie budete
mon chtt zvolit zobrazen jako obyejn text.
</p>
<p>
Pro vt itelnost mete rovn zmnit formt koment a
variant volbou jejich odsazovn na nov dek.
</p>
<p>
Volby zobrazen PGN a velikost okna PGN se ulo do souboru voleb vdy, kdy
zadte pkaz <b>Uloit volby</b> z menu <menu>Volby</menu> v hlavnm okn.
</p>

<p><footer>(Aktualizovno: Scid 3.1, Prosinec 2001)</footer></p>
}


#######################
### Piece Tracker help:

set helpTitle(C,PTracker) "Stopa figur"
set helpText(C,PTracker) {<h1>Okno stopae figur</h1>
<p>
<term>Stopa figur</term> je nstroj, kter zaznamenv pohyb jednotliv figury
ve vech partich v aktulnm filtru a generuje "stopu", kter zobrazuje, jak
asto bylo kad pole figurou navtveno.
</p>
<p>
Chcete-li pout stopae figur, nejprve se ujistte, e filtr obsahuje ty
partie, o kter mte zjem, jako nap. partie, ve kterch se vyskytla urit
pozice zahjen, nebo vechny partie jistho hre blmi figurami. Potom
vyberte figuru, kterou chcete stopovat a nastavte dal stopovac volby; jsou
vysvtleny ne. Pak stisknte tlatko <b>Aktualizovat</b>.
</p>
<p>
Informace o pohybu stopovan figury jsou zobrazeny dvma zpsoby: grafickou
"stopou" a textovm seznamem s jednm dkem daj pro jednotliv pole.
</p>

<h3>Vbr stopovan figury</h3>
<p>
achov figury jsou zobrazeny pod grafem stopy na svch potenm pozicch.
Jednotlivou figuru (jako nap. blho jezdce b1 nebo ernho pce d7) lze
vybrat levm tlatkem myi a vechny figury stejnho typu a barvy (jako nap.
vechny bl pce nebo ob ern ve) lze vybrat pravm tlatkem myi.
</p>

<h3>Ostatn volby stopae figur</h3>
<p>
Rozsah tah uruje, odkud m zat a kde m skonit stopovn v kad partii.
Implicitn rozsah 1-20 (znamenajc konec stopovn po 20. tahu ernho) je
vhodn pro studium motiv zahjen, ale (nap.) rozsah jako 15-35 bude lep pro
sledovn trend stedn hry.
</p>
<p>
Stopaem lze generovat dva typy statistik:
<ul>
<li> <b>% games with move to square</b>: zobrazuje podl parti ve filtru, kter
 obsahuj
     tah stopovan figury na kad pole. To je implicitn a vtinou
     nejvhodnj volba.
<li> <b>% time in each square</b>: zobrazuje podl asu, kter stopovan
     figura strvila na kadm poli.
</ul>
</p>

<h3>Rady</h3>
<p>
Existuj (aspo) ti dobr pouit pro stopae figur: pprava zahjen, motivy
stedn hry a pprava na hre.
</p>
<p>
Pro ppravu zahjen pouvejte stopae figur spolen s otevenm
<a Tree>stromem</a>. Stopovnm figur mete zjistit trendy v aktulnm zahjen
jako nap. obvykl postupy pc, pedsunut jezdcov posty a kam se nejastji
rozmisuj stelci. Mete shledat uitenm nastavit rozsah tah tak, aby
zanal aktulnm tahem partie, take tahy k dosaen aktuln pozice nebudou ve
statistice zahrnuty.
</p>
<p>
Pro motivy stedn hry me bt stopa figur uiten tehdy, kdy filtr byl
nastaven tak, e obsahuje urit rozsah ECO (pouitm
<a Searches Header>Vyhledvn podle hlaviky</a>) nebo i vzor jako nap. bl
izolovan dmsk pec (White IQP) (pouitm
<a Searches Material>Vyhledvn podle materilu/vzoru</a>). Nastavte njak
vhodn (nap. 20-40) rozsah tah a ze "stopy" figur mete vidt nap. postupy
pc v pozdn stedn he nebo ran koncovce.
</p>
<p>
Pro ppravu na hre pouijte <a Searches Header>Vyhledvn podle hlaviky</a>
nebo <a PInfo>Okno informac o hri</a>, abyste nali vechny partie jistho
hre jednou barvou. Pak me bt stopa figur uiten k vyptrn nap. toho,
jak pravdpodobn soupe fianchetuje stelce, rouje nadlouho nebo stav pcov
kln d5 nebo e5.
</p>

<p><footer>(Aktualizovno: Scid 3.3, Duben 2002)</footer></p>
}


###########################
### Repertoire editor help:

set helpTitle(C,Repertoire) "Editor repertoru"
set helpText(C,Repertoire) {<h1>Okno editoru repertoru</h1>
<p>
Editor repertoru vm umouje vytvoit, prohlet a editovat
<term>repertorov</term> soubory. Repertorov soubor (.sor) je seznam pozic
zahjen, kterch chcete doshnout nebo kterm se chcete vyhnout, a lze ho
pout ke sprv vaich preferovanch pozic zahjen a tak k vyhledvn v
databzch ve Scidu.
</p>

<h3>Repertorov skupiny a varianty</h3>
<p>
Repertor obsahuje dva typy element: <term>skupiny</term> a
<term>varianty</term>. Skupiny vlastn nejsou st vaeho repertoru; pouvaj
se jen k jeho uspodn stejn jako adrese k uspodn soubor na disku
potae.
</p>
<p>
Varianty v repertoru jsou dvou typ: <term>zahrnut</term> varianty, kter
reprezentuj pozice zahjen, kter vs zajmaj a kterch chcete doshnout, a
<term>vylouen</term> varianty, kter nemte zjem hrt a chcete se jim
vyhnout.
Nap. hrajete-li ernma pijat dmsk gambit (1.d4 d5 2.c4 dxc4) a po 3.e4
hrajete vechny tahy krom 3...Jf6, budete mt 1.d4 d5 2.c4 dxc4 3.e4 jako
zahrnutou variantu a 1.d4 d5 2.c4 dxc4 3.e4 Nf6 jako vylouenou variantu.
</p>

<h3>Komente a poznmky</h3>
<p>
Kad skupina nebo varianta me mt k sob pipojen koment. Existuj dva
typy: krtk (jednodkov) komente jsou zobrazeny (erven) v hierarchii
repertoru vedle tah skupiny nebo varianty, zatmco dlouh (vcedkov)
koment se zobraz, jen kdy je skupina nebo varianta vybrna.
</p>

<h3>Pouit okna editoru repertoru</h3>
<p>
<b>Lev</b> strana okna zobrazuje hierarchii repertoru. Kliknutm na ikonu
sloky mete rozbalit nebo sbalit skupinu a kliknutm na tahy skupiny nebo
varianty ji vybrat a prohldnout si jej koment.
Zahrnut varianty jsou oznaeny modrou zakrtvac ikonou a vylouen varianty
maj erven kek.
</p>
<p>
Jestlie m varianta nebo skupina krtk koment, je zobrazen za tahmi.
Jestlie m dlouh koment, je indikovn <b><red>**</red></b> za tahmi. Skupiny
maj za svmi tahmi v zvorkch slo, kter uruje poet variant (zahrnutch
nebo vylouench), kter skupiny obsahuj.
</p>
<p>
Kliknut pravm tlatkem myi na skupinu nebo variantu vyvol pro ni menu
funkc, jako nap. jej vmaz nebo zmnu jejho stavu (zahrnut/vylouen).
</p>
<p>
<b>Prav</b> strana okna obsahuje ti rmce. Prvn rmec je seznam tah aktuln
vybran varianty nebo skupiny. Kliknutm levho tlatka myi na nj mete
vloit tyto tahy do okna <a Import>importu</a>, co je uiten k nastaven
aktuln partie tak, aby zanala touto variantou repertoru.
Druh rmec obsahuje krtk koment k variant nebo skupin a tet rmec
obsahuje jej dlouh koment.
</p>

<h3>Pidvn skupin a variant do repertoru</h3>
<p>
Chcete-li do okna pidat variantu nebo skupinu, udlejte na achovnici v hlavnm
okn jej tahy a pak pouitm menu <menu>Editace</menu> v editoru repertoru ji
pidejte jako skupinu, zahrnutou variantu nebo vylouenou variantu.
</p>
<p>
Chcete-li smazat skupinu nebo variantu, kliknte na ni pravm tlatkem myi a z
menu, kter se objev, vyberte poadovan pkaz.
</p>

<h3><name Search>Vyhledvn v databzch pouitm repertorovch
 soubor</name></h3>
<p>
Menu <menu>Hledat</menu> v editoru repertoru vm umouje vyhledvat v aktuln
databzi pouitm repertoru. V kad partii se budou vyhledvat pozice z
repertoru a partie bude vyhovovat, jen kdy nalezen <i>nejhlub</i>
repertorov pozice je v <i>zahrnut</i> variant.
</p>
<p>
Mete si zvolit mezi vyhledvnm pouitm celho repertoru nebo pouze
pouitm zobrazench variant. Vyhledvn pouitm pouze zobrazench variant je
uiten, kdy chcete pout jen st repertoru. Nap. repertor me mt na
nejvy rovni dv hlavn skupiny, jednu pro 1.e4 a druhou pro 1.d4. Jestlie
vs zajmaj jen varianty po 1.e4, jednodue sbalte vtev 1.d4 a potom
vyhledvejte pouze pouitm zobrazench variant.
</p>

<h3>Rady navc</h3>
<p>
Repertorov soubor je skvl pro nalezen novch parti pro v systm
zahjen. Nap. kdykoliv zskte nov PGN soubor pro pipojen k va hlavn
databzi (jako nap. vynikajc tdenn PGN soubor z
<url http://www.chesscenter.com/twic/>The Week In Chess</url>),
otevete tento PGN soubor ve Scidu a provete repertorov vyhledvn.
Prohldnutm filtrovanch parti pak zjistte vechny nov partie, kter jsou ve
vaem repertoru.
</p>
<p>
Mon budete chtt mt dva repertorov soubory: jeden pro ern a
druh pro bl, take budete moct vyhledvat pouitm kadho souboru zvlṻ.
</p>
<p>
Repertorov soubor lze otevt z pkazov dky, nap.: <br>
<b>scid mybase white.sor</b>
</p>
<p>
Repertorov soubor(.sor) mete editovat v libovolnm textovm editoru, bute
vak opatrn, abyste zachovali jeho formt nebo jinak ho nebude mon nathnout
nebo pout k vyhledvn.
</p>

<p><footer>(Aktualizovno: Scid 2.6, Srpen 2001)</footer></p>
}

#####################
### Tree window help:

set helpTitle(C,Tree) "Stromov okno"
set helpText(C,Tree) {<h1>Stromov okno</h1>
<p>
<term>Stromov</term> okno zobrazuje informace o vech tazch zahranch v
aktuln pozici v partich databze. Ve stromovm mdu je okno stromu
aktualizovno automaticky, kdykoliv se v hlavnm okn zmn pozice na
achovnici. Pro velk databze to me bt pomal.
</p>
<p>
Vimnte si, e kdykoliv je stromov okno aktualizovno,
<a Searches Filter>filtr</a> je znovu nastaven tak, e zahrnuje jen partie,
kter obsahuj aktuln pozici.
</p>
<p>
Kliknut levm tlatkem myi na tah ve stromovm okn pid tento tah do
partie.
</p>

<h3>Obsah stromovho okna</h3>
<p>
Stromov okno zobrazuje <a ECO>ECO kd</a> (je-li njak), frekvenci (jednak
 jako poet
parti, jednak procento) a skre kadho tahu.
<term>Skre</term> je vdy potno z perspektivy <b>blho</b>, take 100%
znamen sam vhry blho a 0% znamen sam vhry ernho.
</p>
<p>
Tahy v okn stromu mohou bt azeny podle tahu (abecedn), ECO kdu, frekvence
nebo skre. Pouitm menu <menu>adit</menu> mete metodu azen zmnit.
</p>

<h3><name Best>Okno nejlepch parti</name></h3>
<p>
Stromov okno m tlatko a v souborovm menu pkaz pro oteven okna
<term>nejlepch parti</term>, kter zobrazuje seznam nejcennjch parti v
aktuln zobrazen vtvi stromu.
Partie jsou azeny podle prmrnho ratingu a tento seznam mete omezit tak,
aby zobrazoval jen partie s uritm vsledkem.
</p>

<h3><name Graph>Okno grafu stromu</name></h3>
<p>
Tlatka stromovho okna zahrnuj tlatko oznaen <term>Graf</term>, kter
vyvolv grafick zobrazen relativn spnosti kadho tahu hranho v aktuln
pozici.
Zobrazeny jsou vechny tahy, kter se hrly nejmn v 1% parti a
nejmn 5 krt.
Procentn skre jsou vdy z perspektivy blho, i kdy je na
tahu ern.
</p>
<p>
V grafu stromu je nakreslena erven ra zobrazujc prmrnou spnost ze
vech parti obsahujc aktuln pozici a oblast mezi 50 a 55% (kde le
oekvan spnost standardnch zahjen) je kvli snadnjmu porovnn tah
zobrazena mode. Vimnte si, e na mistrovsk rovni bl obyejn dosahuj
spnosti okolo 55%.
</p>

<h3><name Lock>Zamknut okna stromu</name></h3>
<p>
Tlatko <term>Zamknout</term> ve stromovm okn me bt pouito k zamknut
stromu k aktuln databzi. To znamen, e strom bude nadle pouvat tuto
databzi, i kdy se pepnete do jin oteven databze. To je uiten, kdy
chcete pout velkou databzi jako referenn pi pehrvn partie z jin
databze: jednodue otevete strom pro referenn databzi, zamknte ho a potom
se pepnte do druh databze.
</p>

<h3><name Training>Trnink</name></h3>
<p>
Kdy aktivujete tlatko <term>Trnink</term>, vdy, kdy zahrajete svj
tah, Scid nhodn provede tah.
Tah, kter Scid zvol, zvis na databzov statistice tak, e tah zahran v 80%
parti databze bude Scidem zvolen s 80% pravdpodobnost.
Dobrm zpsobem, jak si otestovat znalosti svho repertoru zahjen, je zapnout
tuto funkci, potom skrt (nebo minimalizovat) stromov okno a hrt zahjen
proti velk databzi.
</p>

<h3>Pouit stromu s otevenmi EPD soubory</h3>
<p>
Pro kad oteven <a EPD>EPD soubor</a> stromov okno obsahuje jeden sloupec
 navc, kter
zobrazuje krtk (ptiznakov) souhrn obsahu EPD souboru pro kadou pozici,
dosaenou tahy v seznamu.
</p>
<p>
Souhrn me bt hodnocen, kd zahjen nebo navren tah; bude to obsah prvnho
EPD pole nalezenho v nsledujcm seznamu: <b>ce, eco, nic, pv, pm, bm, id</b>
nebo jen prvn EPD pole, jestlie vechny z uvedench chyb.
</p>
<p>
Pro popis EPD pol si pette strnku npovdy o <a EPD>EPD souborech</a>.
Vimnte si, e jestlie je souhrn z <b>ce</b> pole, je zobrazen z dvodu lep 
itelnosti jako hodnocen v pcch z perspektivy blho (radji ne skre 
v setinch pc z perspektivy strany, kter je na tahu, jako je jeho vlastn 
formt uloen v EPD souboru).
</p>

<h3>Pouvn cache pro rychlej vsledky</h3>
<p>
Scid pouv cache pro stromov vyhledvac vsledky pro pozice, kterm odpovd
nejvce parti. Jestlie se ve stromovm mdu posunete v partii o tah dopedu a
zpt, aktualizace okna stromu se provede tm okamit, jestlie vyhledvan
pozice je v cache.
</p>
<p>
Okno stromu obsahuje v souborovm menu pkaz <term>Uloit cache soubor</term>.
Kdy ho zadte, aktuln obsah stromov cache v pamti se zape do souboru (s
pponou <b>.stc</b>) a dojde tak ke zrychlen budoucho pouit tto databze
ve stromovm mdu.
</p>
<p>
Pkaz <term>Naplnit cache soubor</term> v souborovm menu okna
stromu napln cache soubor daji pro mnoho pozic zahjen.
Provede se stromov vyhledvn pro asi 100 nejbnjch pozic zahjen a pot
se ulo cache soubor.
</p>
<p>
Uvdomte si, e stromov cache (.stc) soubor je cel nadbyten; mete
ho smazat bez toho, aby jste ovlivnili danou databzi, a ve skutenosti je
Scidem smazn vdy, kdy se objev operace, po kter by zstal neaktuln --
nap. pidn nebo nahrazen partie nebo tdn databze.
</p>

<p><footer>(Aktualizovno: Scid 3.0, Listopad 2001)</footer></p>
}



####################
### Compaction help:

set helpTitle(C,Compact) "Zhutnn databze"
set helpText(C,Compact) {<h1>Zhutnn databze</h1>
<p>
<term>Zhutnn</term> databze je specifick typ <a Maintenance>drby</a>,
kterm se databze uchovv co mon nejmen a nejvkonnj.
Zhutnn databze znamen odstrann vechno nevyuitho prostoru v jejch
souborech.
Existuj dva druhy zhutnn: jmennho souboru a partiovho
souboru.
</p>

<h3>Zhutnn jmennho souboru</h3>
<p>
asem mon zjistte, e databze zan obsahovat mnostv jmen hr, turnaj,
mst a kol, kter u nejsou v dn partii pouita. To se asto stane po
kontrole pravopisu jmen. Nepouit jmna v jmennm souboru zbyten zabraj
msto a mohou zpomalit vyhledvn podle jmen.
Zhutnn jmennho souboru odstran vechny jmna, kter nejsou pouita v
dn partii.
</p>

<h3>Zhutnn partiovho souboru</h3>
<p>
Kdykoliv je partie nahrazena nebo smazna, zstane v partiovm souboru
(nejvt ze t soubor tvoc databzi Scidu) zbyten voln msto.
Zhutnn partiovho souboru odstran vechno zbyten voln msto, nesmazan
partie ponech v databzi. Uvdomte si, e tato operace je nevratn: po
zhutnn jsou smazan partie navdy pry!
</p>
<p>
Zhutnn partiovho souboru se doporuuje tak po <a Sorting>tdn</a>
databze, aby se udrel stav partiovho souboru konzistentn se setdnm
indexovm souborem.
</p>

<p><footer>(Aktualizovno: Scid 2.5, erven 2001)</footer></p>
}


####################################
### Database maintenance tools help:

set helpTitle(C,Maintenance) "drba databze"
set helpText(C,Maintenance) {<h1>drba databze</h1>
<p>
Scid poskytuje mnostv nstroj pro drbu databze, jsou dostupn z menu Scidu
<a Menus File>Soubor</a>. <a Compact>Zhutnn</a> databze a
<a Sorting>tdc</a> funkce jsou vysvtleny na samostatnch strnkch
npovdy.
</p>

<h3>Okno drby</h3>
<p>
Vtinu drby databze ve formtu Scidu lze provst z okna drby, kter mete
otevt z menu <menu>Soubor: drba</menu> nebo z menu <menu>Okna</menu> nebo
pouitm klvesov zkratky <b>Ctrl+M</b>.
</p>
<p>
Toto okno mete pout k drb <a Flags>pznak parti</a>, kontrole
pravopisu jmen, <a Compact>zhutnn</a> nebo <a Sorting>tdn</a>
databze. Vimnte si, e vechny operace, kter nejsou pro aktuln databzi
dostupn (nap. protoe je jen ke ten nebo je PGN soubor), budou zobrazeny
edou barvou.
</p>

<h3><name Twins>Mazn zdvojench parti</name></h3>
<p>
Menu <menu>Soubor: drba</menu> obsahuje pkaz
<menu>Vymazn zdvojench parti...</menu> pro detekci dalch kopi (dvojnk)
parti v databzi.
Tento pkaz nalezne vechny pry parti, kter jsou dvojnky, a pro kad pr
nastav pznak krat partie na smazan a pznak del partie ponech na
nesmazan.
Dv partie jsou pokldny za dvojnky, jestlie se jejich hri (a libovoln
jin speciln oznaen, kter mete voliteln specifikovat) pesn shoduj.
</p>
<p>
Jestlie specifikujete volbu "tyt tahy", kad pr parti mus mt stejn
aktuln tahy a do dlky krat partie (nebo do 60. tahu kterkoliv), aby byli
partie pokldny za dvojnky.
</p>
<p>
Jestlie jste provedli mazn dvojnk, je dobrou mylenkou ovit si, jestlie
kad smazan partie je opravdu kopi druh partie.
To mete jednodue provst, jestlie v dialogovm okn mazn zdvojench parti
vyberete volbu "<b>Nastavit filtr na vechny vymazan zdvojen partie</b>".
Filtr budu potom obsahovat vechny smazan partie.
Mete si je prohldnout (pouitm klves <b>p</b> a <b>n</b>) pouitm okna
<term>kontroly zdvojench parti</term> (dostupn z menu drby nebo pouitm
klvesov zkratky <b>Ctrl+Shift+T</b>) a ovit si, e partie jsou smazan,
protoe jsou skuten dvojnky jin partie.
</p>

<h3><name Editing>Editace jmen hr, turnaj, mst a kol</name></h3>
<p>
Ve va databzi mete najt patn napsan jmna a chcete je opravit.
To mete provst ve Scidu pouitm okna <term>editoru jmen</term> (klvesov
zkratka: <b>Control+Shift+N</b>), dostupnho z podmenu
<menu>Soubor: drba</menu>.
</p>
<p>
Kad jedinen jmno je uloeno v jmennm souboru jen jednou,
take jeho zmna vlastn zmn vechny jeho vskyty.
</p>

<h3><name Spellcheck>Kontrola pravopisu jmen</name></h3>
<p>
Scid se distribuuje spolen se souborem <term>pro kontrolu pravopisu</term>
pojmenovanm <b>spelling.ssp</b>, pouvanm pro opravu jmen hr, turnaj,
mst a kol.
Scid se pokou nahrt soubor pro kontrolu pravopisu pi kadm startu; jestlie
se nenathne, mete ho nathnout z menu <menu>Volby</menu>.
</p>
<p>
Kdy u je soubor pro kontrolu pravopisu nataen, mete ho pout pro databze
ve formtu Scidu prostednictvm pkaz pro kontrolu pravopisu v menu
<menu>Soubor: drba</menu> nebo z okna drby.
</p>
<p>
Kdy kontrolujete pravopis jmen databze, Scid produkuje seznam korekc, kter
mete ped jejich vlastnm provedenm editovat, take mete odstranit vechny
korekce, kter provst nechcete.
</p>
<p>
Kontrola pravopisu je zvlṻ uiten pro standardizaci databze, aby vechny
pklady jednotlivho jmna mli stejn tvar.
Nap. se standardnm souborem pro kontrolu pravopisu by byla jmna "Kramnik,V.",
"Vladimir Kramnik", and "V. Kramnik" opravena na "Kramnik, Vladimir".
</p>
<p>
Soubor pro kontrolu pravopisu m jedno pouit navc: kdy je nataen, jeho
daje o hrch jsou pouity k rozen okna <a PInfo>informac o hri</a> a
 okna
<a Crosstable>turnajov tabulky</a>: pro kadho hre obsaenho v souboru pro
kontrolu pravopisu uvidte jeho mistrovsk titul FIDE (<b>gm</b> = mezinrodn
velmistr, <b>im</b> = mezinrodn mistr atd.) a jeho zemi. Soubor
<b>spelling.ssp</b>, distribuovan spolen se Scidem, obsahuje pes 6500
silnch hr minulosti a ptomnosti.
</p>

<h3><name Ratings>Pidn Elo rating do parti</name></h3>
<p>
Tlatko "Pidat Elo ratingy..." v okn drby zpsob, e Scid vyhled v
aktuln databzi partie, v kterch hr nem rating, ale soubor pro kontrolu
pravopisu jeho rating k datu partie obsahuje. Scid vechny takov ratingy
automaticky pid. To je velmi uiten pro databze mistrovskch parti, kter
maj mlo rating.
</p>
<p>
Soubor pro kontrolu pravopisu "spelling.ssp", dodvan spolen se Scidem,
neobsahuje informace o Elo ratingch potebnch pro tuto funkci, ale jeho vt
verze s nzvem "ratings.ssp" je dostupn na <a Author>webov strnce Scidu</a>.
</p>

<h3><name Cleaner>itn databze</name></h3>
<p>
<term>itn databze</term> (dostupn z okna drby) je nstroj pro vykonvn
vce operac drby databze narz. Mete si vybrat, kter operace chcete
provst, a Scid je s aktuln databz provede bez nutnosti uivatelskho
zsahu. To je zvlṻ uiten pro drbu velkch databz.
</p>

<h3>Vbr automaticky otevran partie</h3>
<p>
<term>Automaticky otevran</term> partie databze je partie, kter se
automaticky nathne pi kadm oteven databze. Chcete-li zmnit automaticky
otevranou partii databze, pouijte tlatko  "Automaticky otevrat partii
slo...". Jestlie chcete, aby se nathla vdy posledn partie databze (bez
ohledu na skuten poet parti v databzi), nastavte ji na velmi vysok slo
nap. 9999999.
</p>

<p><footer>(Aktualizovno: Scid 3.1, Prosinec 2001)</footer></p>
}

#################
### Sorting help:

set helpTitle(C,Sorting) "Tdn databze"
set helpText(C,Sorting) {<h1>Tdn databze</h1>
<p>
<term>Tdc</term> funkce td vechny partie v databzi. Mete si vybrat
mnostv tdcch kritri.
Kdy jsou dv partie rovnocenn podle prvnho kritria, jsou setdny podle
druhho kritria atd. </p>

<h3>Tdc kritria</h3>
<p>
Dostupn tdc kritria jsou:
</p>
<ul>
<li> Datum (nejstar partie prvn)
<li> Rok (stejn jako datum, ale pouije se jen rok)
<li> Jmno turnaje
<li> Jmno msta
<li> Zem (posledn 3 psmena jmna msta)
<li> Jmno kola
<li> Jmno blho
<li> Rating (prmr ratingu blho a ernho, nejvy prvn)
<li> Jmno ernho
<li> Vsledek (vhry blho, remzy a pak vhry ernho)
<li> Dlka (poet kompletnch tah v partii)
<li> ECO (<a ECO>kd Encyklopedie achovch zahjen</a>)
</ul>

<h3>Vsledky tdn</h3>
<p>
Kdy tdte databzi Scidu, kter nen jen ke ten, vsledky tdn jsou
uloeny, take poad parti v databzi je trvale zmnno. Jestlie chcete, aby
setdn bylo jen doasn, pouitm pkazu menu <b>Soubor: Pouze pro ten</b>
nastavte nejprve databzi jen ke ten.
</p>
<p>
Kdy tdte databzi, kter je jen ke ten nebo je skuten PGN soubor,
vsledky tdn nemohou bt uloeny, take po zaven souboru bude setdn
poad parti ztraceno.
</p>
<p>
Vimnte si, e tdn databze znovu nastav
<a Searches Filter>vyhledvac filtr</a> tak, e obsahuje vechny partie.
</p>

<h3>Dleit poznmka k tdn databz:</h3>
<p>
Pi tdn databze je zmnn indexov soubor, ale partiov soubor nikoliv. To
znamen, e tdn databze zanech zznamy v partiovm souboru pomchan
vzhledem k indexovmu souboru. To me vznamn <b>zpomalit</b> <a
 Tree>stromov</a>
vyhledvn, <a Searches>vyhledvn</a> podle pozice a podle materilu/vzoru,
 take abyste
udreli dobr vyhledvac vsledky, mli byste po setdn databze
reorganizovat partiov soubor jeho <a Compact>zhutnnm</a>.
</p>

<p><footer>(Aktualizovno: Scid 2.5, erven 2001)</footer></p>
}

###############
### Flags help:

set helpTitle(C,Flags) "Pznaky partie"
set helpText(C,Flags) {<h1>Pznaky partie</h1>
<p>
<term>Pznak</term> je indiktor njakch achovch charakteristik, kter me
bt zapnut nebo vypnut pro kadou partii v databzi.
Ve Scidu existuje 13 uivatel nastavitelnch pznak, kter mete pmo
nastavit pro kadou partii. Z nich jen mazac pznak m speciln vznam:
partie se zapnutm mazacm pznakem jsou oznaeny k vmazu a pi
<a Compact>zhutnn</a> databze budou odstranny.
</p>
<p>
12 ostatnch uivatelem nastavitelnch pznak a jejich symboly jsou:
</p>

<ul>
<li>Zahjen blho (W)</li>
<li>Zahjen ernho (B)</li>
<li>Stedn hra (M)</li>
<li>Koncovka (E)</li>
<li>Novinka (N)</li>
<li>Pcov struktura (P)</li>
<li>Taktika (T)</li>
<li>Hra na dmskm kdle (Q)</li>
<li>Hra na krlovsk kdle (K)</li>
<li>Velmi siln tah (!)</li>
<li>Hrub chyba (?)</li>
<li>Uivatel (U)</li>
</ul>

<p>
Pznak me bt nastaven pro aktuln partii, pro vechny partie filtru nebo
pro vechny partie databze pouitm okna <a Maintenance>drby</a>.
</p>
<p>
Mete pout <a Searches Header>vyhledvn podle hlaviky</a> pro nalezen
vech parti v databzi, kter maj konkrtn pznak zapnut nebo vypnut, nebo
pout pznaky jako st komplexnjch vyhledvn.
</p>
<p>
Protoe vechny uivatelem nastaviteln pznaky (krom mazacho pznaku)
nemaj pro Scid dn vznam, mete je pouvat pro jakkoliv el, vhodn pro
vae poteby. Nap. mete pout pznak hry na krlovskm kdle (K) pro
pcov toky na krlovsk kdle nebo pro tok na krlovskm kdle tkmi
figurami nebo dokonce pro koncovky se vemi pci na krlovskm kdle.
</p>

<p><footer>(Aktualizovno: Scid 3.0, Listopad 2001)</footer></p>
}

#########################
### Analysis window help:

set helpTitle(C,Analysis) "Analytick okno"
set helpText(C,Analysis) {<h1>Analytick okno</h1>
<p>
Analytick okno ve Scidu zobrazuje analzu achovho programu
(oznaovanho jako <term>motor</term>) souasn pozice na achovnici. Pi kad
zmn na achovnici posl Scid motoru novou pozici a zobrazuje jeho hodnocen
tto pozice.
</p>
<p>
Skre zobrazen v tomto analytickm okn je vdy z perspektivy
blho, take negativn skre indikuje lep pozici ernho.
Spodn rmec v tomto okn (s posuvnkem) zobrazuje historii hodnocen tto
pozice produkovan motorem, take si mete prohldnout, jak se hodnocen
mnila.
</p>
<p>
Chcete-li pidat nejlep tah vybran motorem jako nov tah aktuln partie,
stisknte tlatko <b>Pidat tah</b>.
</p>

<h3><name List>Seznam analytickch motor</name></h3>
<p>
Scid si udruje seznam pouvanch motor, spolu s odhadem jejich Elo ratingu
(jestli njak mte) a datem jejich poslednho pouit. Seznam motor lze
setdit podle jmna, Elo ratingu nebo data.
Chcete-li do seznamu pidat nov motor nebo editovat detaily existujcho
motoru, stisknte tlatko <b>Nov</b> nebo <b>Editace</b>.
</p>

<h3><name Start>Pkazy a adrese motor</name></h3>
<p>
Pro kad motor muste specifikovat jeho spustiteln soubor a adres, kde m
bt Scidem sputn.
</p>
<p>
Dvodem vtiny problm se startem motor je vbr adrese, v kterm m bt
motor sputn. Nkter motory vyaduj ke svmu dnmu startu ve svm
startovacm adresi existenci inicializanho souboru nebo souboru knihoven
zahjen.
Jin motory (jako Crafty) zapisuj do adrese, kde byly sputny, tzv. logovac
soubory, take je nutn je spustit v takovch adresch, kde mte pstupov
prvo zpisu.
Jestlie nastaven adrese pro motor je ".", Scid nastartuje tento motor v
aktulnm adresi.
</p>
<p>
Take jestlie njak motor, kter by ml ve Scidu skvle pracovat, nelze
nastartovat, zkuste zmnit nastaven jeho adrese. Chcete-li zabrnit vzniku
logovacch soubor v mnoha rznch adresch, doporuuji vm spoutt motory v
adresi uivatelskch soubor Scidu (tj. tam, kde se nachz soubor
<b>scid.exe</b> pro Windows nebo v adresi <b>~/.scid/</b> pro Unix); v
dialogovm okn pro editaci detail motoru je tlatko oznaen
<b>scid.exe dir</b> pro Windows nebo <b>~/.scid</b> pro Unix, kterm mete
nastavit spoutn motoru v tomto adresi.
</p>

<h3>Trnink</h3>
<p>
Tlatkem <b>Trnink</b> mete proti analytickmu motoru hrt. as na kad tah
je pevn dan a v trninkovm mdu nejsou zobrazeny vsledky analzy.
</p>

<h3>Anotace partie</h3>
<p>
Tlatko <b>Pidat variantu</b> v analytickm okn pid do partie aktuln
skre a nejlep pokraovn za ob strany jako novou variantu.
</p>
<p>
Anotaci srie tah (i cel partie) mete provst automaticky stiskem tlatka
<b>Anotace</b>. Budete dotzni na urit nastaven anotace a potom se spust
reim automatickho pehrvn.
V reimu automatickho pehrvn pi otevenm analytickm okn je pro kadou
pozici (pehranou v automatickm reimu) samoinn pidna varianta obsahujc
skre a nejlep pokraovn za ob strany.
Anotovny jsou pouze pozice od aktuln pozice do konce partie (nebo dokud
neukonte reim automatickho pehrvn), take pesunem do pozice ze stedn
hry ped sputnm reimu automatickho pehrvn mete peskoit anotaci
zahjen.
</p>
<p>
Chcete-li kdykoliv anotaci ukonit, sta jen ukonit reim automatickho
pehrvn, nap. stiskem klvesy <b>Escape</b> v hlavnm okn.
</p>
<p>
Vimnte si, e pro zjednoduen je tlatko <b>Anotace</b> pstupn jen v okn
analytickho motoru 1. Jestlie spustte motor jako analytick motor 2, nebudete
ho moci pout k anotaci partie.
</p>

<h3>Analytick achovnice</h3>
<p>
Stisk tlatka ikony achovnice v analytickm okn zobraz nebo skryje
analytickou achovnici, kter zobrazuje pozici na konci aktuln nejlep
varianty hry nalezenou motorem. Funguje to pro vtinu motor kompatibilnch se
Scidem, ale nemus pro vechny; zle to na tom, jakou notaci tah motor
pouv.
</p>

<h3>Priorita motoru</h3>
<p>
Jestlie motor vyuv pli mnoho asu CPU (tj. procesoru) a negativn
tak ovlivuje pouvn Scidu nebo jinch aplikac, me pomoct zapnut
tlatka <b>Nzk CPU priorita</b>; tm dte motoru nzkou prioritu pi
plnovn CPU. </p>

<h3>Detaily rozhran</h3>
<p>
Abyste mohli pouvat analytick okno, budete potebovat achov program, kter
podporuje <term>WinBoard/Xboard</term> protokol.
</p>
<p>
Scid posl motoru pi jeho startu pkazy <b>xboard</b>, <b>post</b> a
<b>protover 2</b> a jestlie motor svou odpovd indikuje, e je podporuje, Scid
pouije pro efektivnj komunikaci s motorem pkazy <b>setboard</b> a
<b>analyze</b>.
Jestlie motor nepodporuje pkaz <b>setboard</b>, nebude schopen poskytovat
analzu dn partie, kter zan s nestandardn poten pozic.
</p>
<p>
Programm, kter nepodporuj pkaz <b>analyze</b>, Scid pi kad zmn pozice
posl nsledujc pkazy: <b>new</b> a <b>force</b>, tm se pesune do partie
do aktuln pozice a pak <b>go</b>.
</p>
<p>
J pouvm a doporuuji pro analytick okno Scidu znamenit achov freeware
program <term>Crafty</term> od Boba Hyatta, ale se Scidem bylo spn pouito
mnoho dalch WinBoard nebo XBoard kompatibilnch program. Ne je seznam
webovch strnek pro staen nkolika motor.
</p>
<p>
Crafty:
<url ftp://ftp.cis.uab.edu/pub/hyatt/>ftp://ftp.cis.uab.edu/pub/hyatt/</url>
</p>
<p>
Yace:
<url http://home1.stofanet.dk/moq/>http://home1.stofanet.dk/moq/</url>
</p>
<p>
Phalanx:
<url
 ftp://ftp.math.muni.cz/pub/math/people/Dobes/>ftp://ftp.math.muni.cz/pub/math/people/Dobes/</url>
</p>
<p>
Comet:
<url
 http://members.aol.com/utuerke/comet/>http://members.aol.com/utuerke/comet/</url>
</p>
<p>
Gnuchess:
<url
 http://www.gnu.org/software/chess/chess.html>http://www.gnu.org/software/chess/chess.html</url>
</p>
<p>
The Crazy Bishop:
<url http://remi.coulom.free.fr/>http://remi.coulom.free.fr/</url>
</p>

<p><footer>(Aktualizovno: Scid 3.4, Z 2002)</footer></p>
}

###################
### EPD files help:

set helpTitle(C,EPD) "EPD soubory"
set helpText(C,EPD) {<h1>EPD soubory</h1>
<p>
EPD (extended position description, tj. rozen popisova pozice) soubor je
kolekce pozic, kde kad pozice m njak doprovodn text. Jako <a PGN>PGN</a>,
je to obecn standard pro achov informace.
</p>
<p>
EPD soubor m poet definovanch <term>opkd (opcodes)</term> (pol), kter
jsou uloeny v souboru oddleny stednkem(<b>;</b>), ale v okn EPD Scidu jsou
kvli jednodu editaci zobrazeny na samostatnch dcch.
Stednk uvnit EPD pole je uloen Scidem jako "<b>\s</b>", aby byl odlien od
znaku konce pole.
Kad pozice a k n asociovan opkdy jsou uloeny na jedn dce v EPD
souboru.
</p>
<p>
Standardn EPD opkdy zahrnuj:
<ul>
<li> <b>acd</b> analytick poet: hloubka vyhledvn.</li>
<li> <b>acn</b> analytick poet: poet uzl (nodes) vyhledvn.</li>
<li> <b>acs</b> analytick poet: doba vyhledvn v sekundch.</li>
<li> <b>bm</b> nejlep tahy: tah(y) ocenn() nejlpe z njakho dvodu.</li>
<li> <b>ce</b> setinopcov hodnocen: hodnocen v setinch pc z perspektivy
     <b>strany, kter je na tahu</b> -- vimnte si rozdlu proti oknu analzy,
     kter zobrazuje hodnocen v pcch z perspektivy blho.</li>
<li> <b>cX</b> koment (kde <b>X</b> je slo, 0-9).</li>
<li> <b>eco</b> kd zahjen podle <a ECO>ECO</a> systmu.</li>
<li> <b>id</b> jedinen identifikace pro tuto pozici.</li>
<li> <b>nic</b> kd zahjen podle <i>New In Chess</i> systmu.</li>
<li> <b>pm</b> pedpokldan tah: prvn tah PV.</li>
<li> <b>pv</b> pedpokldan varianta: varianta nejlep hry.</li>
</ul>

<p>
EPD soubory maj mnoho pouit: Scid pouv EPD soubor ke klasifikaci parti
podle systmu <a ECO>Encyklopedie achovch zahjen</a> (Encyclopedia of Chess
Openings, ECO) a vy sami si mete vytvoit EPD soubor pro v repertor
zahjen pidnm koment k pozicm, kter se ve vaich partich pravideln
vyskytuj.
</p>
<p>
Vytvoit nov EPD soubor nebo otevt u existujc mete pkazy
<menu>Nov</menu> a <menu>Otevt</menu> z menu <menu>Soubor</menu>. Kdykoliv
me bt oteveno nejve tyi EPD soubory.
</p>

<h3>EPD okna</h3>
<p>
Pro kad oteven EPD soubor uvidte jedno okno, kter zobrazuje text k
aktuln pozici. Chcete-li uloit zmny v textu k pozici, nen poteba
stisknout tlatko Uloit; text bude uloen vdy, kdy se pesunete k jin
pozici v partii.
</p>

<h3>Navigace v EPD souborech</h3>
<p>
Chcete-li si prohldnout pozice v EPD souboru, pouijte pkazy
<menu>Next position</menu> a <menu>Previous position</menu> z menu
<menu>Tools</menu> v EPD okn nebo pouijte klvesov zkratky
<b>Ctrl+ipkaDol</b> a <b>Ctrl+ipkaNahoru</b>.
Tyto pkazy zpsob pesun na nsledujc/pedchzejc pozici v souboru spolu
s odstrannm aktuln partie a nastavenm jej poten pozice.
</p>

<h3>Odstrann EPD pol</h3>
<p>
EPD soubory, kter naleznete na Internetu, mohou obsahovat pole, kter vs
nezajmaj a mohou tak zbyten zabrat mnoho msta v souboru.
Nap. EPD soubor hodnocen achovho programu me mt pole ce, acd, acn, pm, pv
a id, ale mon budete potebovat jen pole ce a pv.
</p>
<p>
EPD opkd mete odstranit ze vech pozic v EPD souboru pouitm pkazu
<menu>Strip out EPD field</menu> z menu <menu>Tools</menu> v EPD okn.
</p>

<h3>Stavov lita EPD okna</h3>
<p>
Stavov lita kadho EPD okna ukazuje:
<ul>
<li>- status souboru (<b>--</b> znamen nezmnn, <b>XX</b> znamen zmnn
      a <b>%%</b> znamen jen ke ten); </li>
<li>- jmno souboru; </li>
<li>- poet pozic v souboru; </li>
<li>- legln tahy z aktuln pozici vedouc do jin pozice v tomto EPD
      souboru.</li>
</ul>

<p><footer>(Aktualizovno: Scid 2.5, erven 2001)</footer></p>
}

######################
### Email window help:

set helpTitle(C,Email) "Emailov okno"
set helpText(C,Email) {<h1>Emailov okno</h1>
<p>
Okno emailovho manaera Scidu vm poskytuje prostedky ke sprv
korespondennch parti hranch emailem.
Jestlie nehrajete achy pes email, nebude vs to zajmat.
Ale jestlie hrajete korespondenn partie pes email, mete emailov zprvy
poslat pmo ze Scidu!
</p>
<p>
Pouit emailovho manaera:
<ul>
<li><b>1)</b> Vytvote v databzi partii(e) pro vaeho soupee. </li>
<li><b>2)</b> V okn emailovho manaera zvolte <b>Add</b> a zadejte daje o
vaem soupei: jmno, emailov adresa a sla parti v databzi. </li>
<li><b>3)</b> V emailovm okn zvolte <b>Send email</b> vdy, kdy jste pidali
tahy do partie() a chcete odeslat zprvu. </li>
</ul>

<p>
Pi odesln emailov zprvy Scid vygeneruje zprvu s parti v PGN formtu
<b>bez</b> jakchkoliv koment, anotac a variant, protoe obvykle nebudete
chtt, aby soupe vidl vae analzy.
Ped odeslnm mete zprvu editovat pidnm podmnnch tah nebo jinho
textu.
</p>
<p>
Pro kadho soupee mete mt libovoln poet parti; nejastji jednu nebo
dv. Uvdomte si, e Scid nekontroluje zmny sel parti, take po zadan daj
o vaem soupei dvejte pozor, abyste databzi vaich emailovch parti
netdili ani v n nemazali dn partie, protoe tak by dolo k peuspodn
parti a sla parti pro kadho soupee by byla patn.
</p>

<h3>Omezen</h3>
<p>
Scid dosud nedisponuje dnou funkc kontroly vaich emailovch poada, take
je stle nutn pidvat tahy vaeho soupee do partie manuln.</p>

<h3>Konfigurace</h3>
<p>
Kopie vech emailovch zprv odeslanch Scidem je uloena v souboru
<b>~/.scid/scidmail.log</b>. Jestlie chcete, aby byly uloeny v jinm souboru,
budete muset editovat soubor <b>tcl/start.tcl</b> a rekompilovat Scid.
</p>
<p>
Scid me poslat zprvy pouitm SMTP serveru nebo pkazu sendmail. Ke
specifikaci va volby pouijte tlatko <b>Settings</b> v okn emailovho
manaera.
</p>
<p>
Scid ukld daje o soupech z databze vaich emailovch parti v
souboru se stejnm jmnem jako tato databze a pponou "<b>.sem</b>".
</p>

<p><footer>(Aktualizovno: Scid 3.0, Listopad 2001)</footer></p>
}

########################
### Reports help:

set helpTitle(C,Reports) "Profily"
set helpText(C,Reports) {<h1>Profily</h1>
<p>
<term>Profil</term> ve Scidu je dokument obsahujc informace o urit pozici nebo uritm hri. Existuj dva typy profil, kter me Scid generovat: profil zahjen a profil hre.
</p>

<h3><name Opening>Profily zahjen</name></h3>
<p>
Scid me vytvoit <term>profil zahjen</term>, kter zobrazuje zajmav
informace o pozici zahjen. Chcete-li vytvoit profil zahjen, nejprve se
ujistte, e zobrazen pozice je ta, pro kterou profil chcete, a potom zvolte
<b>Profil zahjen</b> z menu <b>Nstroje</b>.
</p>
<p>
Okno <term>profilu zahjen</term> zobrazuje vsledek profilu vygenerovanho
Scidem. Menu <b>Soubor</b> obsahuje pkazy pro uloen (vytitn) profilu do
textovho souboru, do HTML souboru nebo <a LaTeX>LaTeX</a> souboru.
</p>
<p>
Prvn sekce profilu prezentuj informace na partich, kter doshly pozice
profilu, a na tazch hranch od tto pozice. Lze zde vidt, jestli se zahjen
stv vce populrnm, jestli m mnoho krtkch remz a jak poad tah
(transpozice) se pouvaj k jej dosaen.
</p>
<p>
Sekce pozinch tmat zobrazuje  frekvenci uritch bnch pozinch tmat v profilovanch partich. K tomu se pouije prvnch 20 tah kad partie (tedy prvnch 40 pozic kad partie po poten pozici). Partie se zapote jako partie obsahujc urit tma, jestlie obsahuje dan tma alespo ve 4 pozicch v prvnch 20 tazch partie. Tak se zabrn ovlivnn vsledku krtkm vskytem tmat (jako nap. izolovan dmsk pec, kter je okamit vzat).
</p>
<p>
Posledn a nejvt st profilu je tabulka teorie. Pi ukldn profilu do
souboru si mete vybrat mezi uloenm jen tabulky teorie, kompaktnm profilem
bez tabulky teorie nebo celm profilem.
</p>
<p>
Skoro vechny sekce profilu mohou bt zapnuty nebo vypnuty nebo upraveny
prostednictvm voleb profilu zahjen, take si mete profil pizpsobit
tak, aby zobrazoval jen informace, kter vs zajmaj.
</p>
<p>
Vtina informac v profilu zahjen, kter jsou zobrazeny barevn, vyvolaj
pi vbru levm tlatkem myi njakou akci. Napklad pi kliknut na
referenci partie dojde k jej nataen, pi kliknut na pozin motiv dojde k
nastaven filtru tak, e bude obsahovat jen partie profilu, ve kterch se tento
motiv vyskytl.
</p>

<h4>Oblben</h4>
<p>
Menu <menu>Oblben</menu> v okn profilu umouje udrovat sbrku oblbench pozic profilu zahjen a jednodue generovat profil zahjen pro vechny tyto pozice. Vbrem "Add Report..." z menu Oblben pidte aktuln pozici jako oblbenou profilovanou pozici; budete vyzvni k zadn jmna, kter bude pouito jako jmno souboru pi generovn oblbench profil.
</p>
<p>
Chcete-li generovat profil pro kad oblben profil pi pouit aktuln databze, zvolte z menu Oblben "Generovat profil...". Objev se dialogov okno, kter Vm umon specifikovat typ a formt profilu a adres, kde budou uloeny soubory profil. Podle formtu, kter jste zvolili, bude ke kadmu souboru profilu pidna vhodn ppona (nap. ".html" pro HTML formt).
</p>

<h3><name Player>Profily hr</name></h3>
<p>
<term>Profil hre</term> je velmi podobn profilu zahjen, ale obsahuje informace o partich jednoho hre blmi nebo ernmi figurami. Profil hre mete generovat z menu Nstroje nebo z okna <a PInfo>Informac o hri</a>.
</p>
<p>
Profil hre me bt generovn bu pro vechny partie danho hre danmi figurami nebo jen pro podmnoinu tch parti, kter doshly aktuln pozici na achovnici v hlavnm okn.
</p>


<h3>Omezen</h3>
<p>
Pro vtinu dat generovanch profilem existuje limit 2000 parti, take
jestlie se pozice profilu vyskytuje ve vce ne 2000 partich, njak vsledky
mohou bt trochu nesprvn.
</p>
<p>
Rovn pro tabulku teorie existuje limit 500 parti. Jestlie se pozice profilu
vyskytuje ve vce ne 500 partich, jen 500 parti s nejvym prmrnm Elo
ratingem se pouije ke generovn tabulky teorie. Poet parti pouitch ke
generovn tabulky teorie mete upravit ve volbch Profilu zahjen.
</p>

<p><footer>(Aktualizovno: Scid 3.5, nor 2003)</footer></p>
}


#####################
### Player List help:

set helpTitle(C,PList) "Okno vyhledvae hr"
set helpText(C,PList) {<h1>Okno vyhledvae hr</h1>
<p>
Okno <term> vyhledvae hr</term> zobrazuje seznam jmen
hr v aktuln databzi. Vbrem hre se oteve okno
<a PInfo>informac o hri</a> s podrobnjmi informacemi o tomto hri.
</p>
<p>
Zobrazuje se pt sloupc, kter zobrazuj jmno kadho hre, jeho nejvy
rating, poet jeho parti a rok jeho nejstar a nejnovj partie.
Chcete-li setdit seznam podle nkterho sloupce, kliknte na jeho titulek
nahoe v seznamu.
</p>
<p>
Obsah seznamu mete filtrovat pomoc ovldn dole pod seznamem. Mete zmnit
limit seznamu, zadat bez ohledu na velikost psmen pedponu jmna hre (jako
teba "ada" pro vyhledn "Adams") a omezit rozsah Elo ratingu a potu parti.
</p>

<p><footer>(Aktualizovno: Scid 3.4, ervenec 2002)</footer></p>
}

#####################
### Player Info help:

set helpTitle(C,PInfo) "Okno informac o hri"
set helpText(C,PInfo) {<h1>Okno informac o hri</h1>
<p>
Okno <term>informac o hri</term> se oteve nebo aktualizuje vdy, kdy
kliknete levm tlatkem myi na jmno hre v informan zn partie (pod
achovnic) nebo v okn <a Crosstable>turnajov tabulky</a>.
</p>
<p>
Okno zobrazuje (doufm) uiten informace o hri, zejmna jejich spnost
blma a ernma, oblben zahjen (podle <a ECO>kdu ECO</a>) a historii
ratingu.
</p>
<p>
Vechna zobrazen procenta jsou oekvan vsledek (mra spnosti) z
perspektivy hre -- take vy procento je vdy lep pro hre, nezvisle na
tom, je-li bl i ern.
</p>
<p>
Stiskem tlatka <a Graphs Rating>Graf ratingu</a> mete vidt graf historie
ratingu hre.
</p>
<p>
Kliknutm levm tlatkem myi na libovoln erven slo nastavte
<a Searches Filter>filtr</a> na ty partie, kter dan slo reprezentuje.
</p>

<p><footer>(Aktualizovno: Scid 2.5, erven 2001)</footer></p>
}

################
### Graphs help:

set helpTitle(C,Graphs) "Okna graf"
set helpText(C,Graphs) {<h1>Okna graf</h1>
<p>
Scid m nkolik oken, kter zobrazuj informace graficky.
Jsou vysvtleny ne.
</p>

<h3><name Filter>Okno grafu filtru</name></h3>
<p>
Okno <term>grafu filtru</term> zobrazuje trendy parti v aktulnm filtru ve
srovnn s celou databz, a to podle podle data nebo podle Elo ratingu. Nap.
kdy mte oteven <a Tree>strom</a>, okno grafu je uiten jako nstroj
zobrazujc, jak se mnila popularita aktuln pozice zahjen v poslednch
letech nebo dekdch nebo jestli je zvlt oblben mezi hri s vtm
ratingem jako velmistry.
Kad bod grafu reprezentuje pro jednotliv rozsah data nebo Elo ratingu poet
parti ve filtru na 1000 parti v cel databzi.
</p>
<p>
Pi kreslen grafu filtru podle ratingu, Scid pouv pro kadou partii prmrn
(stedn) rating. Odhady rating (jako nap. ty z pravopisnho souboru) se
nepouij. Jestlie jeden hr partie rating m, ale jeho soupe nikoliv, pak se
a do hranice 2200 Elo pedpokld, e soupe m stejn rating.
Nap. jestlie jeden hr m 2500 Elo a soupe nem dn rating, stedn rating
je (2500+2200)/2=2350.
</p>

<h3><name Rating>Okno grafu ratingu</name></h3>
<p>
Okno <term>grafu ratingu</term> zobrazuje historii ratingu jednoho nebo obou
hr aktuln partie.
Pro jednoho hre mete graf vyvolat stiskem tlatka <b>Graf ratingu</b> v
okn <a PInfo>informac o hri</a> nebo pro oba hre aktuln partie vbrem
<b>Graf ratingu</b> z menu <menu>Nstroje</menu>.
</p>

<h3><name Score>Okno grafu skre</name></h3>
<p>
Okno <term>grafu skre</term> zobrazuje numerick hodnocen (skre) uloen v
komentch aktuln partie jako graf.
Kliknutm levm tlatkem myi kdekoliv v grafu skre se mete dostat do
korespondujc pozice partie.
</p>
<p>
Jsou rozeznvny dva druhy hodnotcch koment: ty, kter produkuje
<a Analysis>analytick</a> okno Scidu (kter maj formt
<ul>
<li><b>1.e4 {"+0.25 ...."}</b></li>
</ul>
a jsou brny vdy z perspektivy blho) a ty, kter jsou produkovny Craftyho
anotanm pkazem (kter maj formt
<ul>
<li><b>1.e4 ({9:+0.25} ....)</b></li>
</ul>
a jsou rovn brny vdy z perspektivy blho).
</p>

<h3><name Tree>Okno grafu stromu</name></h3>
<p>
Okno <term>grafu stromu</term> je dostupn ze stromovho okna. Zobrazuje
spnost nejpopulrnjch tah v aktuln pozici. Vce informac naleznete na
strnce npovdy <a Tree Graph>stromu</a>.
</p>

<p><footer>(Aktualizovno: Scid 3.3, Duben 2002)</footer></p>
}

####################
### Tablebases help:

set helpTitle(C,TB) "Tabulky koncovek"
set helpText(C,TB) {<h1>Tabulky koncovek</h1>

<p>
<term>Tabulka koncovek</term> (tablebase) je soubor obsahujc  pesn informace
o vsledku vech pozic s uritm materilem, jako nap. krl a v proti krli a
pci. Byly generovny tabulky vech koncovek s materilem a do pti kamen
(brno i s krli) a jsou rovn k dispozici i nkter estikamenov tabulky
koncovek.
</p>
<p>
Scid me pouvat tabulky koncovek v Nalimovov formtu, kter vyuvaj mnoh
modernch achov motory. Tyto tabulky vtinou kon pponou <b>.nbw.emd</b>
nebo <b>.nbb.emd</b>. Ve Scidu mohou bt pouity vechny 3, 4 a 5 kamenov
Nalimovovy tabulky koncovek.
</p>

<h3>Pouit tabulek koncovek ve Scidu</h3>
<p>
Chcete-li pouvat ve Scidu tabulky koncovek, sta nastavit jejich adres
vbrem <b>Adres pro tabulky koncovek ...</b> z menu <menu>Volby</menu>.
Mete vybrat a 4 adrese, kde jsou vae tabulky koncovek uloeny.
Stiskem tlatka <b>...</b> napravo mete vybrat soubor a tm urit, e m bt
pouit adres tohoto souboru.
</p>
<p>
Kdy doshnete pozice, kter je nalezen v souboru tabulky koncovek, informan
zna partie (pod achovnic) zobraz informace z tabulky. Mnostv zobrazench
informac mete konfigurovat kliknutm pravho tlatka myi v tto zn nebo
vbrem <b>Informace o partii</b> z menu <menu>Volby</menu>. Volba "vsledek a
nejlep tahy" dv nejuitenj informace, ale je velmi asto pomalej ne
volba "jen vsledek".
</p>

<h3>Okno tabulky koncovek</h3>
<p>
Z tabulky koncovek mete zskat jet vce informac o aktuln pozici
otevenm <term>okna tabulky koncovek</term> (menu <menu>Okna</menu>, klvesov
zkratka: Ctrl+=). Toto okno zobrazuje vsledek s precizn hrou na vechny mon
tahy v aktuln pozici.
</p>
<p>
Toto okno m dv hlavn sti. Souhrnn rmec (nalevo) zobrazuje, kter tabulky
koncovek Scid nalezl na vaem potai a pehled pro kadou tabulku. Vsledkov
rmec (napravo) zobrazuje optimln vsledky pro vechny tahy v aktuln pozici
v hlavnm okn.
</p>

<h4>Souhrnn rmec</h4>
<p>
Horn st souhrnnho rmce vm umouje vbr konkrtn tabulky koncovek.
Tabulky, kter mte k dispozici, jsou zobrazeny mode a ty, kter jsou
nedostupn, jsou zobrazeny ed, ale mete vybrat libovolnou tabulku.
Doln st souhrnnho rmce zobrazuje pehled informac pro zvolenou tabulku
koncovek. (Jet ne vechny tabulky maj ve Scidu uloen pehled).
</p>
<p>
Pehled zahrnuje frekvenci (poet parti na milin, kter doshly pozice s tmto
materilem, spoteno z databze tm 600,000 mistrovskch parti), nejdel mat
za ob strany a poet vzjemnch (nebo "recipronch") zugzwang. Vzjemn
zugwang je takov pozice, kde bl pi svm tahu remizuje a ern pi svm tahu
prohraje nebo kde ta strana, kter je na tahu, prohrv.
</p>
<p>
Pro nkter tabulky koncovek se vzjemnmi zugzwangy pehled zahrnuje tak vet
vech zugzwangovch pozic nebo jejich vbr. pln vet pro kadou tabulku
koncovek nen provediteln, protoe nkter tabulky maj tisce vzjemnch
zugzwang.
</p>
<p>
Stiskem tlatka <b>Random</b> mete nastavit nhodnou pozici ze zvolen
tabulky koncovek.
</p>

<h4>Vsledkov rmec</h4>
<p>
Vsledkov rmec je aktualizovn kdykoliv se zmn pozice na achovnici v
hlavnm okn. Prvn dek ukazuje kolik tah vyhrv (+), remizuje (=), prohrv
(-) nebo m neznm vsledek(?). Zbytek rmce udv podrobnj seznam vsledk,
v poad od nejkratch k nejdelm vhrm, potom remzy a  nakonec od
nejdelch k nejkratm prohrm. Vechny vzdlenosti jsou potny k matu.
</p>

<h4>Vsledkov achovnice</h4>
<p>
V pozici obsaen v tabulkch koncovek je asto uiten, jak by byl vsledek,
kdyby vechny kameny v aktuln pozici byly na svch souasnch mstech, ale
pozice jedn urit figury by byla jin.
Nap. mete chtt rozhodnout, jak blzko mus bt krl k volnmu pci, aby
urit pozice byla vyhran nebo remzov. V knihch koncovek je tato informace
asto nazvna jako <i>vtzn zna</i> nebo <i>remzov zna</i> figury v
pozici.
</p>
<p>
Tuto informaci mete zjistit ve Scidu stiskem tlatka s obrzkem
achovnice, v okn tabulky koncovek se pot zobraz
<term>vsledkov achovnice</term>.
Stisknete-li lev tlatko myi na kterkoliv figue na tto achovnici, na
kadm przdnm poli se nakresl symbol urujc jak by byl vsledek (pi tahu
stejn strany jako v pozici v hlavnm okn), kdyby vybran figura byla na
takovm poli.
</p>
<p>
Je pt druh symbol, kter pole me mt:
bl <b>#</b> znamen vhru blho;
ern <b>#</b> znamen vhru ernho;
modr <b>=</b> znamen, e pozice je remzov;
erven <b>X</b> znamen, e pozice je ilegln (kvli sousedcm krlm nebo
protoe strana na tahu dv ach); a
erven <b>?</b> znamen, e vsledek nen znm, protoe potebn soubor tabulek
koncovek nen k dispozici.
</p>

<h3>Obstarn soubor tabulek koncovek</h3>
<p>
Pro pomoc ohledn vyhledn soubor tabulek koncovek na internetu tte
<a Author Related>pbuzn odkazy</a>.
</p>

<p><footer>(Aktualizovno: Scid 3.4, Z 2002)</footer></p>
}

###################
### Bookmarks help:

set helpTitle(C,Bookmarks) "Zloky"
set helpText(C,Bookmarks) {<h1>Zloky</h1>
<p>
Scid vm umouje pro snadn budouc pstup pout pro dleit partie
<term>zloky</term>. Menu zloek je dostupn z menu <menu>Soubor</menu>, z
nstrojov lity nebo prostednictvm klvesov zkratky <B>Ctrl+B</b>.
</p>
<p>
Kdy z menu Zloky vyberete zaloenou partii, Scid, jestlie je to nutn,
oteve jej databzi, nalezne tuto partii a pesune se do t pozice v partii, v
kter byla zaloena.
</p>
<p>
Zloky mohou bt pouity jen pro databze ve formtu Scidu (ne pro PGN soubory
nebo pro databzi schrnka).
</p>
<p>
Pi tdn nebo zhutnn databze obsahujc zaloenou partii se detaily
zloky mohou stt zastaralmi. Kdy se tak stane, pi vbru takov zloky
Scid vyhled v databzi nejlpe odpovdajc partii (srovnnm jmen hr,
msta, atd.), take zaloen partie by mla i tak bt nataena. Avak jestlie
se zmn detaily zaloen partie, je mon, e detailm zloky bude lpe
odpovdat jin partie a bude nataena msto n. Take je dobrou mylenkou znovu
zaloit partii, jestlie edituje jej hre, msto, vsledek, kolo nebo rok.
</p>

<h3>Editace zloek</h3>
<p>
Pomoc editoru zloek mete zmnit text menu zobrazen pro kadou zaloenou
partii a pidat sloku ke kategorizaci zloek.
</p>

<h3>Rady</h3>
<p>
Zloky mete pouvat pro rychl pstup k databzm, kter asto pouvte, a
to tak, e z kad databze si zalote partii. Dalm dobrm pouitm zloek
je pidvn dleitch parti pi studiu jednotlivch achovch zahjen.
</p>
<p>
Menu zloek obsahuje poloku pro kontrolu zobrazovn sloek zloek: mohou bt
zobrazovny jako podmenu (uiten pi velkm potu zloek) nebo jako jedin
seznam.
</p>

<p><footer>(Aktualizovno: Scid 3.0, Listopad 2001)</footer></p>
}

##############################
### Command-line options help:

set helpTitle(C,Cmdline) "Volby pkazovho dku"
set helpText(C,Cmdline) {<h1>Volby pkazovho dku</h1>
<p>
Kdy spoutte Scid z shellu nebo z konsole, mete specifikovat rzn volby
pkazovho dku. Mete zadat databzi ve formtu Scidu (s nebo bez ppony
souboru jako nap. ".si3") a PGN soubor, kter se maj otevt, nap. pkaz:
<ul>
<li>scid mybase newgames.pgn</li>
</ul>
spust Scid a oteve databzi Scidu pojmenovanou mybase a PGN soubor pojmenovan
newgames.pgn.
</p>
<p>
Jsou zde tak voliteln argumenty slouc ke kontrole soubor, kter m Scid
prohledat a pout pi svm startu. Volbou <b>-xtb</b> (nebo <b>-xt</b>) mete
vypnout pouvn <a TB>tabulek koncovek</a>, volbou <b>-xeco</b> nebo
<b>-xe</b> mete zruit natahovn souboru
<a ECO>klasifikace zahjen ECO</a> a volbou <b>-xspell</b> nebo <b>-xs</b>
mete zruit natahovn <a Maintenance Spellcheck>pravopisnho souboru</a>.
Zrove existuje volba <b>-fast</b> nebo <b>-f</b>, kter dl vechno, co ti
pedchoz volby dohromady, take pkaz <b>scid -f</b> je ekvivalentn pkazu
<b>scid -xeco -xspell -xtb</b>.
</p>

<p><footer>(Aktualizovno: Scid 3.1, Listopad 2001)</footer></p>
}

#################
### Pgnscid help:

set helpTitle(C,Pgnscid) "Pgnscid"
set helpText(C,Pgnscid) {<h1>Pgnscid</h1>
<p>
<term>Pgnscid</term> je separtn program, kter je poteba ke konverzi PGN
(portable game notation) soubor na databze Scidu.
</p>
<p>
Chcete-li zkonvertovat soubor pojmenovan <i>myfile.pgn</i>, jednodue zadejte:
<ul>
<li> <b>pgnscid myfile.pgn</b> </li>
</ul>
a databze Scidu (skldajc se z <i>myfile.si3</i>, <i>myfile.sg3</i>
a <i>myfile.sn3</i>) bude vytvoena.
Veker chyby a varovn budou zapsny do souboru <i>myfile.err</i>.
</p>
<p>
Chcete-li, aby databze byla vytvoena v jinm adresi nebo mla jin jmno,
mete jmno databze pidat do pkazovho dku, nap.:
<ul>
<li> <b>pgnscid myfile.pgn mybase</b> </li>
</ul>
vytvo databzi skldajc se ze soubor <i>mybase.si3</i>,
<i>mybase.sg3</i> a <i>mybase.sn3</i>.
</p>
<p>
Vimnte si, e pgnscid (a scid) me st PGN soubory komprimovan Gzipem
(t.j. <b>mybase.pgn.gz</b>) pmo, take mte-li velk PGN soubor k ueten
msta komprimovan Gzipem, nen poteba ho nejprve dekomprimovat.
</p>

<h3>Volby</h3>
<p>
Pgnscid akceptuje ped jmnem souboru dva voliteln parametry: <b>-f</b> a
<b>-x</b>.
</p>
<p>
Pouitm parametru <b>-f</b> dojde k nsilnmu pepsan existujc databze;
implicitn pgnscid neprovede konverzi na databzi, kter u existuje.
</p>
<p>
Parametr <b>-x</b> zpsob, e pgnscid bude ignorovat vechen text mezi
partiemi.
Implicitn je text mezi partiemi uloen jako pedpartiov koment k partii,
kter nsleduje. Tato volba ovlivuje jen text mezi partiemi; standardn
komente uvnit kad partie jsou i tak zkonvertovny a uloeny.
</p>

<h3>Formtovn jmen hr</h3>
<p>
Aby se zredukoval poet vcensobnho pravopisu jmen, kter odkazuj na stejnho
hre, pgnscid provd nkter zkladn formtovn jmen hr. Nap. poet
mezer za kadou rkou je standardizovn na jednu, vechny mezery na zatku a
na konci jmna jsou odstranny a teka na konci jmna je odstranna.
Holandsk pedpony jako "van den" a "Van Der" jsou rovn normalizovny tak, e
maj velk psmeno V a mal d.
</p>
<p>
Jmna hr, turnaj, mst a kol lze ve Scidu editovat (a dokonce kontrolovat
jejich pravopis); detaily najdete na strnce npovdy
<a Maintenance Editing>drba</a>.
</p>

<p><footer>(Aktualizovno: Scid 2.5, erven 2001)</footer></p>
}


######################
### File formats help:

set helpTitle(C,Formats) "Formty soubor"
set helpText(C,Formats) {<h1>Formty soubor Scidu</h1>
<p>
Databze Scidu se skldaj ze t zkladnch soubor: Indexov soubor, Jmenn
soubor a Partiov soubor. Vechny maj dvoupsmennou pponu zanajc na "s":
".si" pro indexov (index) soubory, ".sn" pro jmenn (name) soubory a ".sg" pro
partiov (game) soubory.
</p>

<h3>Indexov (.si) soubor</h3>
<p>
Tento soubor obsahuje popis databze a mal zznam pevn velikosti pro kadou
partii. Souasn velikost je 41 byt na partii. 28 byt z tto velikosti jsou
zkladn informace jako nap. vsledek, datum, identifikan sla jmen hr,
turnaje, msta (skuten jmna jsou v Jmennm souboru), atd.
</p>
<p>
Zbvajcch 13 byt obsahuje nadbyten, ale uiten informace o partii, kter
se pouvaj k urychlen vyhledvn podle pozice, materilu a vzoru. Pro vce
informac tte ne sekci <a Formats Fast>Rychl vyhledvn</a>.
</p>

<h3>Jmenn (.sn) soubor</h3>
<p>
Tento soubor obsahuje vechny jmna hr, turnaj, mst a kol pouitch v
databzi. Kad jmno je uloeno jen jednou, i kdy se vyskytuje ve vce
partich. Jmenn soubor je obvykle nejmen ze t zkladnch soubor v
databzi.
</p>

<h3>Partiov (.sg) soubor</h3>
<p>
Tento soubor obsahuje skuten tahy, varianty a komente kad partie.
Formt kdovn tah je velmi sporn: vtina tah zabr pouze jeden byte
msta.
</p>
<p>
Kdy je partie nahrazena, je jej nov verze uloena na <i>konec</i> partiovho
souboru, take asem me dojt k nahromadn zbyten nepouitho msta.
Databzi mete navrtit do jej minimln velikosti jejm
<a Compact>zhutnnm</a>.
</p>

<h3>Ostatn soubory Scidu</h3>
<p>
<a EPD>EPD</a> soubor (ppona: ".epd") obsahuje mnostv achovch pozic,
kadou s textovm komentem.
Formt EPD souboru je popsn v <a Author Related>PGN standardu</a>.
</p>
<p>
V emailovm (ppona: ".sem") souboru pro databzi jsou uloeny detaily
oponent, kterm poslte emailov zprvy.
</p>
<p>
Soubor vyhledvacch voleb (ppona: ".sso") obsahuje nastaven pro vyhledvn
podle <a Searches Header>hlaviky</a> nebo podle
<a Searches Material>materilu/vzoru</a>.
</p>

<h3><name Fast>Rychl vyhledvn ve Scidu</name></h3>
<p>
Jak bylo eeno ve, indexov soubor uchovv nkter nadbyten, ale uiten
informace o kad partii za elem urychlen vyhledvn podle pozice nebo podle
materilu.
</p>
<p>
Nap. je uloen materil konen pozice. Jestlie hledte vov a pcov
koncovky, pak vechny partie, kter kon s dmou, stelcem nebo jezdcem na
achovnici (a nemaj dn promny pc) budou rychle peskoeny.
</p>
<p>
Dal uiten informace, kter je uloena, je poad, s jakou pci opoutj
sv poten postaven (bu svm tahem nebo vzetm). To se pouije k urychlen
stromovch vyhledvn nebo vyhledvn podle pesn pozice, zvlt pak pro
pozice zahjen. Nap. hledte-li poten pozici francouzsk obrany (1.e4 e6),
kad partie zanajc 1.e4 c5 nebo 1.d4 atd. bude peskoena, ale partie
zanajc 1.e4 e5 bude teba jet prohledat.
</p>

<p><footer>(Aktualizovno: Scid 2.5, erven 2001)</footer></p>
}

###########################
### Options and Fonts help:

set helpTitle(C,Options) "Volby"
set helpText(C,Options) {<h1>Volby a preference</h1>
<p>
Mnoho voleb a preferenc Scidu (jako nap. velikost achovnice, barvy, fonty a
implicitn nastaven) mete nastavit v menu <menu>Volby</menu>.
Kdy z menu Volby zvolte <b>Uloit volby</b>, tato nastaven (a jet dal,
jako nap. posledn adres, z kterho se nathla databze a velikosti nkterch
oken) jsou uloeny do souboru voleb.
Tento soubor voleb se nate pi kadm sputn Scidu.
</p>
<p>
Jestlie pouvte Windows, soubor voleb je <b>scid.opt</b> v adresi, kde se
nachz spustiteln soubor Scidu <b>scid.exe</b>. Pro uivatele unixovch
operanch  systm (jako nap. Solaris nebo Linux) je soubor voleb
<b>~/.scid/scidrc</b>.
</p>

<h3><name MyPlayerNames>Nastaven jmen vaich hr</name></h3>
<p>
Me bt takov jmno hre (nebo nkolik jmen), pro kter byste chtli, aby kdykoliv se nathne jeho partie, achovnice v hlavnm okn byla zobrazena z perspektivy tohoto hre. Pouitm <b>Jmna mch hr...</b> z menu <menu>Volby/achovnice</menu> mete konfigurovat seznam takovch jmen. V dialogovm okn, kter se objev, zadejte na kad dek jedno jmno hre. Zstupn znaky ("<b>?</b>" pro pesn jeden znak a "<b>*</b>" pro sekvenci nula nebo vce znak) mohou bt pouity.
</p>

<h3><name Fonts>Nastaven font</name></h3>
<p>
Scid m ti zkladn fonty, kter pouv ve vtin svch oken, a vechny z
nich si mete pizpsobit. Nazvaj se <b>zkladn</b>, <b>mal</b> a
<b>fixn</b>.
</p>
<p>
Fixn font mus mt pevnou ku fontu (neproporcionln). Pouv se pro okna
<a Tree>stromu</a> a <a Crosstable>turnajov tabulky</a>.
</p>

<p><footer>(Aktualizovno: Scid 3.5, nor 2003)</footer></p>
}

####################
### NAG values help:

set helpTitle(C,NAGs) "NAG hodnoty"
set helpText(C,NAGs) {<h1>Standardn NAG hodnoty</h1>
<p>
Standardn NAG (Numeric Annotation Glyph, tj. numerick anotan piktograf)
hodnoty definovan v <a Author Related>PGN standardu</a> jsou:
</p>
<cyan>
<ul>
<li>  1   siln tah (!) </li>
<li>  2   patn tah (?) </li>
<li>  3   velmi siln tah (!!) </li>
<li>  4   hrub chyba (??) </li>
<li>  5   zajmav tah (!?) </li>
<li>  6   pochybn tah (?!) </li>
<li>  7   vynucen tah </li>
<li>  8   jedin tah; dn rozumn alternativy </li>
<li>  9   nejhor tah </li>
<li> 10   remzov pozice (=) </li>
<li> 11   vyrovnan ance, klidn pozice (=) </li>
<li> 12   vyrovnan ance, iv pozice (=) </li>
<li> 13   nejasn pozice (~) </li>
<li> 14   bl m malou vhodu (+=) </li>
<li> 15   ern m malou vhodu (=+) </li>
<li> 16   bl m vhodu (+/-) </li>
<li> 17   ern m vhodu (-/+) </li>
<li> 18   bl m rozhodujc vhodu (+-) </li>
<li> 19   ern m rozhodujc vhodu (-+) </li>
<li> 20   bl m drtivou vhodu (+-) </li>
<li> 21   ern m drtivou vhodu (-+) </li>
<li> 22   bl je v nevhod tahu (zugzwang) </li>
<li> 23   ern je v nevhod tahu (zugzwang) </li>
<li> 24   bl m malou prostorovou pevahu </li>
<li> 25   ern m malou prostorovou pevahu </li>
<li> 26   bl m prostorovou pevahu </li>
<li> 27   ern m prostorovou pevahu </li>
<li> 28   bl m rozhodujc prostorovou pevahu </li>
<li> 29   ern m rozhodujc prostorovou pevahu </li>
<li> 30   bl m mal nskok ve vvinu </li>
<li> 31   ern m mal nskok ve vvinu </li>
<li> 32   bl m nskok ve vvinu </li>
<li> 33   ern m nskok ve vvinu </li>
<li> 34   bl m rozhodujc nskok ve vvinu </li>
<li> 35   ern m rozhodujc nskok ve vvinu </li>
<li> 36   bl m iniciativu </li>
<li> 37   ern m iniciativu </li>
<li> 38   bl m trvalou iniciativu </li>
<li> 39   ern m trvalou iniciativu </li>
<li> 40   bl m tok </li>
<li> 41   ern m tok </li>
<li> 42   bl m nedostatenou kompenzaci za materiln jmu </li>
<li> 43   ern m nedostatenou kompenzaci za materiln jmu </li>
<li> 44   bl m dostatenou kompenzaci za materiln jmu </li>
<li> 45   ern m dostatenou kompenzaci za materiln jmu </li>
<li> 46   bl m vce ne adekvtn kompenzaci za materiln jmu </li>
<li> 47   ern m vce ne adekvtn kompenzaci za materiln jmu </li>
<li> 48   bl s malou vhodou kontroluje centrum </li>
<li> 49   ern s malou vhodou kontroluje centrum </li>
<li> 50   bl s vhodou kontroluje centrum </li>
<li> 51   ern s vhodou kontroluje centrum </li>
<li> 52   bl s rozhodujc vhodou kontroluje centrum </li>
<li> 53   ern s rozhodujc vhodou kontroluje centrum </li>
<li> 54   bl s malou vhodou kontroluje krlovsk kdlo </li>
<li> 55   ern s malou vhodou kontroluje krlovsk kdlo </li>
<li> 56   bl s vhodou kontroluje krlovsk kdlo </li>
<li> 57   ern s vhodou kontroluje krlovsk kdlo </li>
<li> 58   bl s rozhodujc vhodou kontroluje krlovsk kdlo </li>
<li> 59   ern s rozhodujc vhodou kontroluje krlovsk kdlo </li>
<li> 60   bl s malou vhodou kontroluje dmsk kdlo </li>
<li> 61   ern s malou vhodou kontroluje dmsk kdlo </li>
<li> 62   bl s vhodou kontroluje dmsk kdlo </li>
<li> 63   ern s vhodou kontroluje dmsk kdlo </li>
<li> 64   bl s rozhodujc vhodou kontroluje dmsk kdlo </li>
<li> 65   ern s rozhodujc vhodou kontroluje dmsk kdlo </li>
<li> 66   bl m slabou prvn adu </li>
<li> 67   ern m slabou prvn adu </li>
<li> 68   bl m dobe chrnnou prvn adu </li>
<li> 69   ern m dobe chrnnou prvn adu </li>
<li> 70   bl m patn chrnnho krle </li>
<li> 71   ern m patn chrnnho krle </li>
<li> 72   bl m dobe chrnnho krle </li>
<li> 73   ern m dobe chrnnho krle </li>
<li> 74   bl m patn postavenho krle </li>
<li> 75   ern m slab postavenho krle </li>
<li> 76   bl m dobe postavenho krle </li>
<li> 77   ern m dobe postavenho krle </li>
<li> 78   bl m velmi patnou pcovou strukturu </li>
<li> 79   ern m velmi patnou pcovou strukturu </li>
<li> 80   bl m patnou pcovou strukturu </li>
<li> 81   ern m patnou pcovou strukturu </li>
<li> 82   bl m dobrou pcovou strukturu </li>
<li> 83   ern m dobrou pcovou strukturu </li>
<li> 84   bl m velmi dobrou pcovou strukturu </li>
<li> 85   ern m velmi dobrou pcovou strukturu </li>
<li> 86   bl m patn postavenho jezdce </li>
<li> 87   ern m patn postavenho jezdce </li>
<li> 88   bl m dobe postavenho jezdce </li>
<li> 89   ern m dobe postavenho jezdce </li>
<li> 90   bl m patn postavenho stelce </li>
<li> 91   ern m patn postavenho stelce </li>
<li> 92   bl m dobe postavenho stelce </li>
<li> 93   ern m dobe postavenho stelce </li>
<li> 94   bl m patn postavenou v </li>
<li> 95   ern m patn postavenou v </li>
<li> 96   bl m dobe postavenou v </li>
<li> 97   ern m dobe postavenou v </li>
<li> 98   bl m patn postavenou dmu </li>
<li> 99   ern m patn postavenou dmu </li>
<li>100   bl m dobe postavenou dmu </li>
<li>101   ern m dobe postavenou dmu </li>
<li>102   bl m patnou souhru figur </li>
<li>103   ern m patnou souhru figur </li>
<li>104   bl m dobrou souhru figur </li>
<li>105   ern m dobrou souhru figur </li>
<li>106   bl sehrl zahjen velmi slab </li>
<li>107   ern sehrl zahjen velmi slab </li>
<li>108   bl sehrl zahjen slab </li>
<li>109   ern sehrl zahjen slab </li>
<li>110   bl sehrl zahjen dobe </li>
<li>111   ern sehrl zahjen dobe </li>
<li>112   bl sehrl zahjen velmi dobe </li>
<li>113   ern sehrl zahjen velmi dobe </li>
<li>114   bl sehrl stedn hru velmi slab </li>
<li>115   ern sehrl stedn hru velmi slab </li>
<li>116   bl sehrl stedn hru slab </li>
<li>117   ern sehrl stedn hru slab </li>
<li>118   bl sehrl stedn hru dobe </li>
<li>119   ern sehrl stedn hru dobe </li>
<li>120   bl sehrl stedn hru velmi dobe </li>
<li>121   ern sehrl stedn hru velmi dobe </li>
<li>122   bl sehrl koncovku velmi slab </li>
<li>123   ern sehrl koncovku velmi slab </li>
<li>124   bl sehrl koncovku slab </li>
<li>125   ern sehrl koncovku slab </li>
<li>126   bl sehrl koncovku dobe </li>
<li>127   ern sehrl koncovku dobe </li>
<li>128   bl sehrl koncovku velmi dobe </li>
<li>129   ern sehrl koncovku velmi dobe </li>
<li>130   bl m mrnou protihru </li>
<li>131   ern m mrnou protihru </li>
<li>132   bl m protihru </li>
<li>133   ern m protihru </li>
<li>134   bl m rozhodujc protihru </li>
<li>135   ern m rozhodujc protihru </li>
<li>136   bl m asovou tse </li>
<li>137   ern m asovou tse </li>
<li>138   bl m obrovskou asovou tse </li>
<li>139   ern m obrovskou asovou tse </li>
</ul>
</cyan>

<p>
Ostatn pedloen NAG hodnoty pro symboly publikac achovho Informtoru
(Chess Informant) obsahuj:
</p>
<cyan>
<ul>
<li>140   s mylenkou ... </li>
<li>141   nameno proti ... </li>
<li>142   lep tah </li>
<li>143   hor tah </li>
<li>144   rovnocenn tah </li>
<li>145   poznmka redakce ("RR") </li>
<li>146   novinka ("N") </li>
<li>147   slab bod </li>
<li>148   koncovka </li>
<li>149   sloupec; ada </li>
<li>150   diagonla </li>
<li>151   bl m dvojici stelc </li>
<li>152   ern m dvojici stelc </li>
<li>153   rznobarevn stelci </li>
<li>154   stejnobarevn stelci </li>
</ul>
</cyan>

<p>
Ostatn navren hodnoty jsou:
</p>
<cyan>
<ul>
<li>190   atd. </li>
<li>191   zdvojen pci </li>
<li>192   izolovan pci </li>
<li>193   spojen pci </li>
<li>194   visc pci </li>
<li>195   opodn pec </li>
</ul>
</cyan>

<p>
Symboly definovan Scidem pro jeho vlastn pouit jsou:
</p>
<cyan>
<ul>
<li>201   Diagram ("D", nkdy oznaovan "#") </li>
</ul>
</cyan>

<p><footer>(Aktualizovno: Scid 2.5, erven 2001)</footer></p>
}

##############
### ECO guide:

set helpTitle(C,ECO) "ECO prvodce"
set helpText(C,ECO) {<h1>Klasifikace zahjen ECO</h1>
<p>
Scid me klasifikovat achov partie podle klasifikace achovch zahjen
<b>ECO</b> (Encyclopedia of Chess Openings, tj. Encyklopedie achovch
zahjen).
Standardn ECO kd se skld z psmene (A..E) nsledovanho dvma slicemi,
take existuje 500 rozdlnch standardnch ECO kd.
</p>

<h3>Rozen ECO systmu podporovan Scidem</h3>
<p>
ECO systm je velmi omezen a nedostaten pro modern partie: nkter z 500
kd se skoro vbec nevyskytuj, zatmco nkter se vyskytuj velmi asto. Pro
zlepen tto situace Scid umouje voliteln rozen zkladnch ECO kd:
kad kd me bt rozen psmenem (a..z), dal rozen (slic, 1..4)
jsou mon, ale jet nejsou pouity ve standardnm ECO souboru Scidu.
Take rozen ECO kd Scidu vypad asi jako "<b>A41e</b>" nebo "<b>E99b2</b>".
Mnoho nejbnjch ECO kd z modernch mistrovskch parti maj rozen
definovan v ECO souboru Scidu.
</p>

<h3><name Browser>Okno ECO prohlee</name></h3>
<p>
Okno <term>ECO prohlee</term> vm zobrazuje pozice, kter jsou pouvny ke
klasifikaci kadho ECO kdu a etnost a spnost ECO kd v aktuln databzi.
</p>
<p>
Horn pole zobrazuje etnost kadho ECO kdu v aktuln databzi. Lita v grafu
m ti seky: nejni (nejsvtlej barva) je poet vher blho, prostedn je
poet remz a nejvy (nejtmav) je poet vher ernho. To vm umouje
rychle zjistit charakteristiky zahjen: nap. jestli bl skruj velmi dobe
nebo jestli jsou velmi ast remzy.
</p>
<p>
Chcete-li jt do hlub ECO rovn, kliknte levm tlatkem myi na litu v
grafu (nebo zadejte korespondujc psmeno nebo slici). Chcete-li jt zpt do
vy rovn, kliknte pravm tlatkem myi kamkoliv v grafu nebo stisknte
klvesu lev ipky (nebo Delete nebo Backspace).
</p>
<p>
Doln pole zobrazuje pozice, kter obsahuje jednotliv ECO kd, podle ECO
souboru, kter jste nathli.
</p>

<h3>Nataen ECO souboru Scidu</h3>
<p>
ECO soubor distribuovan spolen se Scidem se jmenuje <b>scid.eco</b> a Scid se
ho pokou pi svm startu nathnout.
Jestlie ho Scid neme najt, bude poteba, aby byla mon ECO klasifikace,
udlat nsledujc:
<ul>
<li>(a) Ve Scidu, pouijte pkaz menu
        <menu>Volby: Nathnout ECO
        soubor...</menu> a vyberte soubor <b>scid.eco</b>. </li>
<li>(b) Ulote volby (z menu <menu>Volby</menu>). </li>
</ul>
Pot, co to provedete, ECO soubor bude nataen pi kadm sputn Scidu.
</p>

<h3><name Codes>Systm kd ECO</name></h3>
<p>
Zkladn struktura ECO systmu je:
</p>
<p>
<b><blue><run updateEcoWin A>A</run></blue></b>
   1.d4 Jf6 2...;  1.d4 ...;  1.c4;  1.rzn
<ul>
<li>  <b>A0</b>  1.<i>rzn</i>
      (<b>A02-A03</b> 1.f4: <i>Birdovo zahjen</i>,
      <b>A04-A09</b>  1.Jf3: <i>Rtiho, Krlovsk indick tok</i>) </li>
<li>  <b>A1</b>  1.c4 ...: <i>Anglick</i> </li>
<li>  <b>A2</b>  1.c4 e5: <i>Anglick krlovsk</i> </li>
<li>  <b>A3</b>  1.c4 c5: <i>Anglick symetrick</i> </li>
<li>  <b>A4</b>  1.d4 ...: <i>Dmskm pcem</i> </li>
<li>  <b>A5</b>  1.d4 Jf6 2.c4 ..: <i>Indick obrana</i> </li>
<li>  <b>A6</b>  1.d4 Nf6 2.c4 c5 3.d5 e6: <i>Modern Benoni</i> </li>
<li>  <b>A7</b>  A6 + 4.Jc3 exd5 5.cxd5 d6 6.e4 g6 7.Jf3 </li>
<li>  <b>A8</b>  1.d4 f5: <i>Holandsk obrana</i> </li>
<li>  <b>A9</b>  1.d4 f5 2.c4 e6: <i>Holandsk obrana</i> </li>
</ul>

<p>
<b><blue><run updateEcoWin B>B</run></blue></b>
   1.e4 c5;  1.e4 c6;  1.e4 d6;  1.e4 <i>rzn</i>
<ul>
<li>  <b>B0</b>  1.e4 ...
      (<b>B02-B05</b>  1.e4 Jf6: <i>Alechinova obrana</i>;
      <b>B07-B09</b>  1.e4 d6: <i>Pircova</i>) </li>
<li>  <b>B1</b>  1.e4 c6: <i>Caro-Kann</i> </li>
<li>  <b>B2</b>  1.e4 c5: <i>Sicilsk obrana</i> </li>
<li>  <b>B3</b>  1.e4 c5 2.Jf3 Jc6: <i>Sicilsk</i> </li>
<li>  <b>B4</b>  1.e4 c5 2.Jf3 e6: <i>Sicilsk</i> </li>
<li>  <b>B5</b>  1.e4 c5 2.Jf3 d6: <i>Sicilsk</i> </li>
<li>  <b>B6</b>  B5 + 3.d4 cxd4 4.Jxd4 Jf6 5.Jc3 Jc6 </li>
<li>  <b>B7</b>  B5 + 4.Jxd4 Jf6 5.Jc3 g6: <i>Sicilsk dra</i> </li>
<li>  <b>B8</b>  B5 + 4.Nxd4 Nf6 5.Nc3 e6: <i>Sicilsk Scheveningen</i> </li>
<li>  <b>B9</b>  B5 + 4.Nxd4 Nf6 5.Nc3 a6: <i>Sicilsk Najdorf</i> </li>
</ul>

<p>
<b><blue><run updateEcoWin C>C</run></blue></b>
   1.e4 e5;  1.e4 e6
<ul>
<li>  <b>C0</b>  1.e4 e6: <i>Francouzsk obrana</i> </li>
<li>  <b>C1</b>  1.e4 e6 2.d4 d5 3.Jc3: <i>Francouzsk, Winawer/klasick</i>
  </li>
<li>  <b>C2</b>  1.e4 e5: <i>Oteven hra</i> </li>
<li>  <b>C3</b>  1.e4 e5 2.f4: <i>Krlovsk gambit</i> </li>
<li>  <b>C4</b>  1.e4 e5 2.Jf3: <i>Oteven hra</i> </li>
<li>  <b>C5</b>  1.e4 e5 2.Jf3 Jc6 3.Sc4: <i>Italsk; Hra dvou jezdc</i> </li>
<li>  <b>C6</b>  1.e4 e5 2.Jf3 Jc6 3.Sb5: <i>panlsk</i> </li>
<li>  <b>C7</b>  1.e4 e5 2.Jf3 Jc6 3.Sb5 a6 4.Sa4: <i>panlsk</i> </li>
<li>  <b>C8</b>  C7 + 4...Jf6 5.O-O: <i>panlsk, zaven a oteven</i>
      (<b>C80-C83</b>  5.O-O Jxe4: <i>panlsk, oteven systm</i>;
      <b>C84-C89</b>  5.O-O Se7: <i>panlsk, zaven systm</i>) </li>
<li>  <b>C9</b>  C8 + 5...Se7 6.Ve1 b5 7.Sb3 d6: <i>panlsk, zaven</i> </li>
</ul>

<p>
<b><blue><run updateEcoWin D>D</run></blue></b>
   1.d4 d5; 1.d4 Jf6 2.c4 g6 s 3...d5
<ul>
<li>  <b>D0</b>  1.d4 d5: <i>Dmskm pcem</i> </li>
<li>  <b>D1</b>  1.d4 d5 2.c4 c6: <i>Slovansk obrana</i> </li>
<li>  <b>D2</b>  1.d4 d5 2.c4 dxc4: <i>Dmsk gambit pijat</i> </li>
<li>  <b>D3</b>  1.d4 d5 2.c4 e6: <i>Dmsk gambit odmtnut</i> </li>
<li>  <b>D4</b>  D3 + 3.Jc3 Jf6 4.Jf3 c5/c6: <i>Semi-Tarraschova;
  Poloslovansk</i>  </li>
<li>  <b>D5</b>  D3 + 3.Jc3 Jf6 4.Sg5: <i>Dmsk gambit odmtnut klasick</i>
 </li>
<li>  <b>D6</b>  D5 + 4...Se7 5.e3 O-O 6.Jf3 Jbd7: <i>Dmsk gambit
 odmtnut  ortodoxn</i> </li>
<li>  <b>D7</b>  1.d4 Jf6 2.c4 g6 s 3...d5: <i>Grunfeldova obrana</i> </li>
<li>  <b>D8</b>  1.d4 Jf6 2.c4 g6 3.Jc3 d5: <i>Grunfeldova</i> </li>
<li>  <b>D9</b>  1.d4 Jf6 2.c4 g6 3.Jc3 d5 4.Jf3: <i>Grunfeldova</i> </li>
</ul>

<p>
<b><blue><run updateEcoWin E>E</run></blue></b>
   1.d4 Jf6 2.c4 e6; 1.d4 Jf6 2.c4 g6 </li>
<ul>
<li>  <b>E0</b>  1.d4 Jf6 2.c4 e6: <i>Katalnsk, atd.</i> </li>
<li>  <b>E1</b>  1.d4 Jf6 2.c4 e6 3.Jf3 (b6): <i>Dmsk indick, atd.</i> </li>
<li>  <b>E2</b>  1.d4 Jf6 2.c4 e6 3.Jc3 (Sb4): <i>Nimcoviova indick, atd.</i>
 </li>
<li>  <b>E3</b>  E2 + 4.Sg5 nebo 4.Dc2: <i>Nimcoviova indick</i> </li>
<li>  <b>E4</b>  E2 + 4.e3: <i>Nimcoviova indick, Rubinstein</i> </li>
<li>  <b>E5</b>  E4 + 4...O-O 5.Jf3: <i>Nimcoviova indick, hlavn varianta</i>
 </li>
<li>  <b>E6</b>  1.d4 Jf6 2.c4 g6: <i>Krlovsk indick</i> </li>
<li>  <b>E7</b>  1.d4 Jf6 2.c4 g6 3.Jc3 Sg7 4.e4: <i>Krlovsk indick</i> </li>
<li>  <b>E8</b>  E7 + 4...d6 5.f3: <i>Krlovsk indick, Samisch</i> </li>
<li>  <b>E9</b>  E7 + 4...d6 5.Jf3: <i>Krlovsk indick, hlavn
 varianty</i> </li>
</ul>

<p><footer>(Aktualizovno: Scid 2.5, erven 2001)</footer></p>
}

#################
### Contact info:


set helpTitle(C,Author) "Kontaktn informace"
set helpText(C,Author) {<h1>Kontaktn informace</h1>
<p>
Webov strnka Scidu je: <br>
<b><url http://scid.sourceforge.net/>http://scid.sourceforge.net/</url></b>
</p>
<p>
Mete si tam sthnout posledn verzi Scidu a k dispozici jsou i jin soubory.
</p>
<p>
Veker komente, dotazy, nvrhy a informace o chybch poslejte prosm autorovi
Scidu, Shaneovi Hudsonovi, na emailovou adresu:<br>
<b>sgh@users.sourceforge.net</b>
</p>

<h3><name Related>Pbuzn odkazy</name></h3>
<p>
Jestlie se vm Scid lb, mon vs budou zajmat nsledujc webov strnky:
</p>
<ul>
<li><url http://www.tim-mann.org/chess.html>http://www.tim_mann.org/chess.html</url> --
Domovsk strnka programu Tima Manna <b>xboard & winboard</b>, kter lze pout ke
ten PGN a jako rozhran pro internetov achov servery. Jeho strnka obsahuje
rovn dobr informace o Crafty, GNUchess a dalch voln iitelnch achovch
programech. </li>

<li><url ftp://ftp.cis.uab.edu/pub/hyatt/>ftp://ftp.cis.uab.edu/pub/hyatt/</url> --
siln achy hrajc program Crafty. Podadres pojmenovan <b>TB</b> obsahuje mnoho
soubor tabulek koncovek (tablebase) v Nalimovov formtu, kter lze pout v
nkolika achovch programech a rovn ve Scidu.</li>

<li><url http://www.chesscenter.com/twic/>http://www.chesscenter.com/twic/</url> --
TWIC (the week in chess), znamenit tdenn zpravodaj mezinrodnch achovch
parti dostupn v PGN formtu.</li>

<li><url http://scid.sourceforge.net/doc/standard.txt>http://scid.sourceforge.net/doc/standard.txt</url> --
<b>PGN Standard</b>, vytvoen Stevenem J. Edwardsem v roce 1994. Tento text
vysvtluje detailn formty PGN a EPD.</li> </ul>

<p><footer>(Aktualizovno: Scid 2.6, Srpen 2001)</footer></p>
}

# end of czech.tcl











































































### deutsch.tcl:
#  German language support for Scid.
#  Contributors: Bernhard Bialas, Jrgen Clos et al.
#  Untranslated messages are marked with a "***" comment.
#
#  Hinweis (aus tcl/lang/english.tcl):
#
# (4) [...]
#
#     A menu command has the format:
#         menuText L tag "Name..." underline {HelpMessage...}
#
#     [...]
#
#     where "L" is the language letter, "tag" is the name of the menu entry
#     or the button widget name, and "underline" is the index of the letter
#     to underline, counting from zero as the first letter. Two menu entries
#     that appear in the same menu should have a different underlined letter.

addLanguage D Deutsch 0 iso8859-1

proc setLanguage_D {} {

# File menu:
menuText D File "Datei" 0
menuText D FileNew "Neu..." 0 {Neue Scid-Datenbank anlegen}
menuText D FileOpen "ffnen..." 0 {Existierende Scid-Datenbank ffnen}
menuText D FileClose "Schlieen" 0 {Aktive Scid-Datenbank schlieen}
menuText D FileFinder "Finder" 0 {Dateifinderfenster ffnen}
menuText D FileBookmarks "Lesezeichen" 0 {Lesezeichenmen (Tasten: Strg+B)}
menuText D FileBookmarksAdd "Lesezeichen zur Liste hinzufgen" 0 \
  {Lesezeichen fr die aktuelle Partie und Datenbank}
menuText D FileBookmarksFile "Lesezeichen hinzufgen in Verzeichnis" 26 \
  {Lesezeichen fr die aktuelle Stellung und Partie zum Verzeichnis hinzufgen}
menuText D FileBookmarksEdit "Lesezeichen editieren..." 12 \
  {Lesezeichen bearbeiten}
menuText D FileBookmarksList "Listenansicht" 1 \
  {Lesezeichen als Liste zeigen, ohne Unterverzeichnisse}
menuText D FileBookmarksSub "Verzeichnisansicht" 3 \
  {Lesezeichen in Verzeichnissen zeigen, nicht als Gesamtliste}
menuText D FileMaint "Wartung" 0 {Das Scid-Datenbankwartungsfenster}
menuText D FileMaintWin "Wartungfenster" 0 \
  {Datenbank-Wartungsfenster ffnen/schlieen}
menuText D FileMaintCompact "Datenbank komprimieren..." 10 \
  {Datenbank komprimieren, gelschte Spiele und unbenutzte Namen entfernen}
menuText D FileMaintClass "Partien ECO-klassifizieren..." 8 \
{Neuklassifizierung aller Partien nach dem ECO-Code}
menuText D FileMaintSort "Sortieren..." 0 \
  {Alle Partien in der aktuellen Datenbank sortieren}
menuText D FileMaintDelete "Dubletten lschen..." 0 \
  {Dubletten finden und Lschkennzeichen setzen}
menuText D FileMaintTwin "Dubletten prfen" 10 \
  {Dublettenfenster ffnen/erneuern}
menuText D FileMaintName "Namen" 0 \
  {Namenseditor und Rechtschreibprfung}
menuText D FileMaintNameEditor "Namenseditor" 0 \
  {Namenseditorfenster ffnen/schlieen}
menuText D FileMaintNamePlayer "Schreibkorrektur Spieler..." 17 \
  {Schreibkorrektur der Spielernamen mit Hilfe der .ssp-Datei}
menuText D FileMaintNameEvent "Schreibkorrektur Ereignis..." 17 \
  {Schreibkorrektur der Ereignisse mit Hilfe der .ssp-Datei}
menuText D FileMaintNameSite "Schreibkorrektur Ort..." 17 \
  {Schreibkorrektur der Orte mit Hilfe der .ssp-Datei}
menuText D FileMaintNameRound "Schreibkorrektur Runde..." 17 \
  {Schreibkorrektur der Runden mit Hilfe der .ssp-Datei}
menuText D FileReadOnly "Schreibschutz..." 3 \
  {Datenbank als schreibgeschtzt behandeln, nderungen verhindern}
menuText D FileSwitch "Datenbank wechseln" 0 \
  {Zu einer anderen geffneten Datenbank umschalten}
menuText D FileExit "Ende" 0 {Scid beenden}
menuText D FileMaintFixBase "Inkonsistenzen beseitigen" 0 {Versuche eine inkonsistente Datenbank zu reparieren}

# Edit menu:
menuText D Edit "Bearbeiten" 0
menuText D EditAdd "Variante hinzufgen" 0 \
  {Fge zu diesem Zug eine Variante hinzu}
menuText D EditDelete "Variante lschen" 9 \
  {Lsche eine Variante zu diesen Zug}
menuText D EditFirst "Als erste Variante setzen" 4 \
  {Variante an erste Stelle in der Liste setzten}
menuText D EditMain "Variante als Partiefortsetzung" 13 \
  {Variante zur Partiefolge machen (und umgekehrt)}
menuText D EditTrial "Variante testen" 9 \
  {Testmodus starten/stoppen, um eine Idee am Brett auszuprobieren}
menuText D EditStrip "Entfernen" 1 \
   {Kommentare oder Varianten aus der Partie entfernen}
menuText D EditUndo "Rckgngig" 0 {Macht die letzte nderung rckgngig}
menuText D EditStripComments "Kommentare" 0 \
  {Alle Kommentare und Kommentarzeichen aus dieser Partie entfernen}
menuText D EditStripVars "Varianten" 0 \
  {Alle Varianten aus der Partie entfernen}
menuText D EditStripBegin "Zge ab Anfang" 8 \
  {Entferne Zge ab Partieanfang}
menuText D EditStripEnd "Zge bis Ende" 9 \
  {Entferne Zge bis Partieende}
menuText D EditReset "Ablage leeren" 0 \
   {Inhalt der Ablage-Datenbank lschen}
menuText D EditCopy "Partie in Ablage kopieren" 17 \
  {Diese Partie in die Ablage-Datenbank kopieren}
menuText D EditPaste "Partie aus Ablage einfgen" 19 \
  {Aktive Partie aus der Ablage hier einfgen}
menuText D EditPastePGN "PGN-Partie aus Ablage einfgen..." 1 \
  {Interpretiere den Inhalt der Zwischenablage als PGN-Notation und fge ihn hier ein}
menuText D EditSetup "Stellungseingabe..." 0 \
  {Neue Stellung eingeben (FEN oder manuell)}
menuText D EditCopyBoard "Stellung kopieren" 10 \
  {Aktuelle Brettposition in die Zwischenablage kopieren (im FEN-Format)}
menuText D EditPasteBoard "Stellung einfgen" 12 \
  {Stellung aus der Zwischenablage (im FEN-Format) einfgen}

# Game menu:
menuText D Game "Partie" 0
menuText D GameNew "Neue Partie" 5 \
  {Neue Partie beginnen, dabei alle nderungen verwerfen}
menuText D GameFirst "Erste Partie laden" 0 {Erste Partie im Filter laden}
menuText D GamePrev "Vorherige Partie laden" 0 \
  {Vorherige Partie im Filter laden}
menuText D GameReload "Partie wiederladen" 7 \
  {Diese Partie erneut laden, dabei alle nderungen verwerfen}
menuText D GameNext "Nchste Partie laden" 0 {Nchste Partie im Filter laden}
menuText D GameLast "Letzte Partie laden" 0 {Letzte Partie im Filter laden}
menuText D GameRandom "Zufllige Partie laden" 1 \
  {Zufllig ausgewhlte Partie im Filter laden}
menuText D GameNumber "Lade Partie Nummer..." 14 \
  {Partie durch Angabe der Nummer laden}
menuText D GameReplace "Partie ersetzen..." 8 \
  {Diese Partie sichern, dabei alte Version berschreiben}
menuText D GameAdd "Partie speichern..." 7 \
  {Diese Partie als neue Partie in der Datenbank sichern}
menuText D GameDeepest "Erffnung identifizieren" 10 \
  {Zur Position der lngstmglichen Zugfolge nach ECO-Klassifikation gehen}
menuText D GameGotoMove "Zugnummer..." 0 \
  {Zur angegebenen Zugnummer in der aktuellen Partie gehen}
menuText D GameNovelty "Finde Neuerung..." 0 \
  {Ersten Zug dieser Partie finden, der vorher noch nie gespielt wurde}

# Search menu:
menuText D Search "Suchen" 0
menuText D SearchReset "Filter zurcksetzen" 0 \
  {Alle Partien in den Filter einschlieen}
menuText D SearchNegate "Filter invertieren" 7 \
  {Alle ausgeschlossenen Partien in den Filter nehmen}
menuText D SearchCurrent "Brett..." 0 \
  {Aktuelle Brettposition suchen}
menuText D SearchHeader "Partiedaten..." 0 \
  {Partiedaten (Spieler, Turnier etc.) suchen}
menuText D SearchMaterial "Material/Muster..." 0 \
  {Nach Material- oder Stellungsmustern suchen}
menuText D SearchUsing "Mit Suchoptionsdatei..." 4 \
  {Mit Suchoptionsdatei suchen}

# Windows menu:
menuText D Windows "Fenster" 0
menuText D WindowsComment "Kommentareditor" 0 {Kommentareditor ffnen/schlieen}
menuText D WindowsGList "Partieliste" 6 {Partieliste ffnen/schlieen}
menuText D WindowsPGN "PGN-Fenster" 0 {PGN-Fenster (Partienotation) ffnen/schlieen}
menuText D WindowsPList "Spielersuche" 0 {Spielerfinder ffnen/schlieen}
menuText D WindowsTmt "Turniersuche" 0 {Turnierfinder ffnen/schlieen}
menuText D WindowsSwitcher "Datenbank-Umschalter" 0 \
  {Datenbank-Umschalter ffnen/schlieen}
menuText D WindowsMaint "Wartungsfenster" 0 {(Datenbank-)Wartungsfenster ffnen/schlieen}
menuText D WindowsECO "ECO-Auswertung" 0 {ECO-Auswertung ffnen/schlieen}
menuText D WindowsRepertoire "Repertoire-Editor" 0 {Erffnungsrepertoire-Editor ffnen/schlieen}
menuText D WindowsStats "Statistik" 4 {Filterstatistik ffnen/schlieen}
menuText D WindowsTree "Zugbaum" 0 {Zugbaum ffnen/schlieen}
menuText D WindowsTB "Endspieltabellen..." 1 {Endspieltabellen ffnen/schlieen}
menuText D WindowsBook "Buchfenster" 0 {Buchfenster ffnen/schlieen}
menuText D WindowsCorrChess "Fernschachfenster" 0 {ffnet/schliet das Fernschachfenster}

# Tools menu:
menuText D Tools "Werkzeuge" 0
menuText D ToolsAnalysis "Analyse-Engine..." 0 \
  {Schachanalyse-Programm starten/beenden}
menuText D ToolsAnalysis2 "Analyse-Engine #2..." 16 \
  {Schachanalyse-Programm Nr.2 starten/beenden}
menuText D ToolsCross "Kreuztabelle" 0 {Kreuztabelle fr diese Partie anzeigen}
menuText D ToolsEmail "E-Mail-Manager" 7 \
  {E-Mail-Manager ffnen/schlieen}
menuText D ToolsFilterGraph "Rel. Filtergrafik" 0 \
  {Filtergrafik mit relativen Werten ffnen/schlieen}
menuText D ToolsAbsFilterGraph "Abs. Filtergrafik" 11 \
  {Filtergrafik mit absoluten Werten ffnen/schlieen}
menuText D ToolsOpReport "Erffnungsbericht" 0 \
  {Ausfhrliche Erffnungsbersicht fr die aktuelle Position erstellen}
menuText D ToolsOpenBaseAsTree "ffne DB als Baum" 0   {ffne DB und verwende sie im Zugbaum-Fenster}
menuText D ToolsOpenRecentBaseAsTree "Letzte DB als Baum" 0   {ffne zuletzt verwendete DB im Zugbaum-Fenster}
menuText D ToolsTracker "Figurenverteilung"  7 \
  {Figurenverteilungsfenster ffnen}
menuText D ToolsTraining "Training"  0 {Trainingswerkzeuge (Taktik, Erffnungen,...) }
menuText D ToolsTacticalGame "Trainingspartie"  0 {Trainingspartie spielen}
menuText D ToolsSeriousGame "Ernste Partie"  0 {Ernste Partie spielen}
menuText D ToolsTrainOpenings "Erffnungen"  0 {Erffnungsrepertoire trainieren}
menuText D ToolsTrainReviewGame "Partie nachspielen"  0 {Finden von Zgen wie in vorgegebener Partie}
menuText D ToolsTrainTactics "Taktik"  0 {Taktische Stellungen lsen}
menuText D ToolsTrainCalvar "Varianten berechnen"  0 {Training zum Berechnen von Varianten}
menuText D ToolsTrainFindBestMove "Besten Zug finden"  0 {Find best move}
menuText D ToolsTrainFics "Internetpartie (FICS)"  0 {Internetpartie auf freechess.org}
menuText D ToolsBookTuning "Buch abstimmen" 0 {Buch abstimmen}
menuText D ToolsConnectHardware "Hardware verbinden" 0 {Externe Hardware mit Scid verbinden}
menuText D ToolsConnectHardwareConfigure "Konfigurieren..." 0 {Hardware und Verbindung konfigurieren}
menuText D ToolsConnectHardwareNovagCitrineConnect "Novag Citrine verbinden" 0 {Novag Citrine mit Scid verbinden}
menuText D ToolsConnectHardwareInputEngineConnect "Input Engine verbinden" 0 {Input Engine (z.B. DGT Brett) mit Scid verbinden}
menuText D ToolsPInfo "Spielerinformation"  0 \
  {Spielerinformation ffnen/schlieen}
menuText D ToolsPlayerReport "Spielerbericht..." 7 \
  {Erzeuge einen Spielerbericht}
menuText D ToolsRating "ELO-Zahl-Verlauf" 4 \
  {Wertungsverlauf beider Spieler grafisch darstellen}
menuText D ToolsScore "Partiebewertungsgraph" 0 {Partie-Bewertungsgraph zeigen}
menuText D ToolsExpCurrent "Partie exportieren" 8 \
  {Aktuelle Partie in eine Textdatei schreiben}
menuText D ToolsExpCurrentPGN "Partie in PGN-Datei exportieren..." 10 \
  {Aktuelle Partie in eine PGN-Datei schreiben}
menuText D ToolsExpCurrentHTML "Partie in HTML-Datei exportieren..." 10 \
  {Aktuelle Partie in eine HTML-Datei schreiben}
menuText D ToolsExpCurrentHTMLJS "Partie in HTML/JavaScript-Datei exportieren..." 15 {Aktuelle Partie wird in eine HTML und JavaScript Datei exportiert.}  
menuText D ToolsExpCurrentLaTeX "Partie in LaTeX-Datei exportieren..." 10 \
  {Aktuelle Partie in eine LaTeX-Datei schreiben}
menuText D ToolsExpFilter "Alles im Filter exportieren" 16 \
  {Alle Partien im Filter in eine Textdatei schreiben}
menuText D ToolsExpFilterPGN "Filter in PGN-Datei exportieren..." 10 \
  {Alle Partien im Filter in eine PGN-Datei schreiben}
menuText D ToolsExpFilterHTML "Filter in HTML-Datei exportieren..." 10 \
  {Alle Partien im Filter in eine HTML-Datei schreiben}
menuText D ToolsExpFilterHTMLJS "Filter in HTML/JavaScript exportieren..." 17 {Alle Partien im Filter werden in eine HTML und JavaScript Datei exportiert.}  
menuText D ToolsExpFilterLaTeX "Filter in LaTeX-Datei exportieren..." 10 \
  {Alle Partien im Filter in eine LaTeX-Datei schreiben}
menuText D ToolsImportOne "Eine PGN-Partie importieren..." 16 \
  {Eine Partie im PGN-Format eingeben oder einfgen}
menuText D ToolsImportFile "PGN-Partien importieren..." 0 \
  {Partien aus einer PGN-Datei lesen}
menuText D ToolsStartEngine1 "Starte Engine1" 0  {Starte Analyse von Analyse-Engine1}
menuText D ToolsStartEngine2 "Starte Engine2" 0  {Starte Analyse von Analyse-Engine2}
menuText D ToolsCaptureBoard "Brettfoto..." 0  {Aktuelles Brett als Bild speichern.}
#-----AW------
###  BC   GHIJKL  O Q  TUV XY 
menuText D Play "Spielen" 0 {Partien spielen}
menuText D CorrespondenceChess "Fernschach" 0 {Funktionen fr eMail und Xfcc basiertes Fernschach}
menuText D CCConfigure "Einstellungen..." 0 {Generelle Einstellungen und externe Werkzeuge}
menuText D CCConfigRelay "Beobachtete Partien..." 10 {Configure games to be observed}
menuText D CCOpenDB "Datenbank ffnen..." 0 {ffnet die Standarddatenbank fr Fernschachpartien}
menuText D CCRetrieve "Partien synchronisieren" 0 {Synchronisiert Partien mit dem Posteingang und mittels (Xfcc-)Hilfsprogramm}
menuText D CCInbox "Posteingang synchronisieren" 12 {Synchronisiert alle Partien im Posteingang}
menuText D CCSend "Zug senden" 0 {Verschickt den letzten Zug via eMail oder exterem (Xfcc-)Hilfsprogramm}
menuText D CCResign "Aufgeben" 0 {Partie aufgeben (funktioniert nicht via eMail)}
menuText D CCClaimDraw "Remis erklren" 1 {Zug senden und Partie Remis erklren (funktioniert nicht via eMail)}
menuText D CCOfferDraw "Remis anbieten" 0 {Zug senden und Remis anbieten (funktioniert nicht via eMail)}
menuText D CCAcceptDraw "Remis annehmen" 10 {Remis annehmen (funktioniert nicht via eMail)}
menuText D CCNewMailGame "Neue eMail Partie..." 0 {Beginnt eine neue Partie via eMail}
menuText D CCMailMove "Zug per eMail senden..." 9 {Verschickt den letzten Zug per eMail}
menuText D CCGamePage "Partieseite (WWW)..." 13 {Ruft die Webseite der Partie auf}
menuText D CCEditCopy "Partieliste in Ablage" 0 {Kopiert die Parieliste als CSV in die Zwischenablage}
#-----AW------

# Options menu:
menuText D Options "Optionen" 0
menuText D OptionsBoard "Schachbrett" 6 {Schachbrettoptionen}
menuText D OptionsBoardSize "Brettgre" 0 {Brettgre ndern}
menuText D OptionsBoardPieces "Figurensatz" 2 {Figurensatz wechseln}
menuText D OptionsBoardColors "Farben..." 0 {Brettfarben ndern}
#Klimmek
menuText D OptionsBoardGraphics "Brettfelder..." 3 {Grafik fr Brettfelder auswhlen}
translate D OptionsBGW {Grafikdatei fr Felder auswhlen}
translate D OptionsBoardGraphicsText {Grafikdateien fr helle und dunkle Felder auswhlen:}
menuText D OptionsBoardNames "Meine Spielernamen..." 0 {Editiere meine Spielernamen}
menuText D OptionsExport "Export" 1 {Textausgabeoptionen ndern}
menuText D OptionsFonts "Schriftarten" 3 {Schriftart wechseln}
menuText D OptionsFontsRegular "Normal" 0 {Standardzeichensatz}
menuText D OptionsFontsMenu "Men" 0 {Schriftart fr Mens}
menuText D OptionsFontsSmall "Klein" 0 {Kleine Zeichen}
menuText D OptionsFontsTiny "Winzig" 0 {Kleinster Font}
menuText D OptionsFontsFixed "Fest" 0 {Schriftart mit fester Breite (nicht-proportional)}
menuText D OptionsGInfo "Partieinformation" 0 {Optionen fr Informationsbereich}
menuText D OptionsLanguage "Sprache" 0 {Sprache whlen}
menuText D OptionsMovesTranslatePieces "Figurennamen bersetzen" 0 {bersetze den ersten Buchstaben der Figurenbezeichnung}
menuText D OptionsMovesHighlightLastMove "Letzen Zug hervorheben" 0 {Rahmt Start- und Zielfeld des letzten Zuges farbig ein}
menuText D OptionsMovesHighlightLastMoveDisplay "Anzeigen" 0 {Hervorhebung des letzen Zuges anzeigen}
menuText D OptionsMovesHighlightLastMoveWidth "Dicke" 0 {Dicke der Linie}
menuText D OptionsMovesHighlightLastMoveColor "Farbe" 0 {Farbe der Linie}
menuText D OptionsMoves "Zge" 0 {Zugeingabeoptionen}
menuText D OptionsMovesAsk "Fragen vor Ersetzen" 0 \
  {Vor berschreiben existierender Zge nachfragen}
menuText D OptionsMovesAnimate "Animation" 0 \
  {Zeit fr Zuganimation einstellen}
menuText D OptionsMovesDelay "Autom. Vorspielen..." 7 \
  {Zeit fr automatisches Vorspielen einstellen}
menuText D OptionsMovesCoord "Tastatureingabe" 0 \
  {Zugeingabe ber Koordinaten ("g1f3") akzeptieren}
menuText D OptionsMovesSuggest "Zugvorschlag zeigen" 0 \
  {Zugvorschlag ein-/ausschalten}
menuText D OptionsShowVarPopup "Variantenfenster zeigen" 0 { Anzeige des Variantenauswahlfensters ein/ausschalten}  
menuText D OptionsMovesSpace "Leerzeichen nach Zugnummer einfgen" 0 {Leerzeichen nach Zugnummer einfgen}  
menuText D OptionsMovesKey "Autom. Zugergnzung" 10 \
  {Automatische Zugergnzung ein-/ausschalten}
menuText D OptionsMovesShowVarArrows "Pfeile fr Varianten anzeigen" 0 {Zeige Pfeile in Varianten an: ja/nein}
menuText D OptionsNumbers "Zahlenformat" 5 {Zahlenformat whlen}
menuText D OptionsStartup "Autostart" 1 {Fenster zum ffnen bei Start auswhlen}
menuText D OptionsTheme "Design" 0 {Verndert das Aussehen der Oberflche}
menuText D OptionsWindows "Fenster" 6 {Fenster-Optionen}
menuText D OptionsWindowsIconify "Autom. minimieren" 7 \
  {Alle Fenster mit dem Hauptfenster minimieren}
menuText D OptionsWindowsRaise "Autom. Verwaltung" 7 \
  {Bestimmte Fenster (z.B. Zustandsleiste) bei Bedarf ffnen}
menuText D OptionsSounds "Tne..." 0 {Tne fr Zugankndigung einstellen} ;# *** Hmm, :-|
menuText D OptionsWindowsDock "Fenster docken" 0 {Fenster docken}
menuText D OptionsWindowsSaveLayout "Save layout" 0 {Save layout}
menuText D OptionsWindowsRestoreLayout "Restore layout" 0 {Restore layout}
menuText D OptionsWindowsShowGameInfo "Partieinformationen" 0 {Partieinformation anzeigen}
menuText D OptionsWindowsAutoLoadLayout "Automatisch laden: 1. Layout" 0 {Ldt das erste definierte Layout automatisch beim Programmstart}
menuText D OptionsToolbar "Werkzeugleiste" 0 {Werkzeug- bzw. Symbolleiste Ein/Aus}
menuText D OptionsECO "ECO-Datei laden..." 0 {ECO-Klassifikationsdatei laden}
menuText D OptionsSpell "Schreibkorrekturdatei laden..." 7 \
  {Datei fr Scid-Rechtschreibprfung laden}
menuText D OptionsTable "Endspieltabellenverzeichnis..." 16 \
  {Eine Endspieltabellendatei whlen (und damit alle Tabellen in diesem Verzeichnis)}
menuText D OptionsRecent "Aktuelle Dateien..." 9 \
  {Anzahl der aktuellen Dateien im Dateimen ndern}
menuText D OptionsBooksDir "Buchverzeichnis..." 0 {Erffnungsbuchverzeichnis einstellen}
menuText D OptionsTacticsBasesDir "Bases Verzeichnis..." 0 {Verzeichnis fr taktische Trainingsdatenbanken einstellen}
menuText D OptionsSave "Optionen speichern" 0 \
  "Alle einstellbaren Optionen in der Datei $::optionsFile sichern"
menuText D OptionsAutoSave "Autom. speichern bei Beenden" 0 \
  {Alle Optionen beim Beenden von Scid automatisch speichern}

# Help menu:
menuText D Help "Hilfe" 0
menuText D HelpContents "Inhalt" 0 {Gehe zum Inhaltsverzeichnis}
menuText D HelpIndex "Index" 4 {Gehe zum Hilfeindex}
menuText D HelpGuide "Kurzanleitung" 4 {Ein Scid-Schnelldurchgang}
menuText D HelpHints "Hinweise" 0 {Die Scid-Kurztips}
menuText D HelpContact "Kontaktinformation" 0 {Hilfe zur Kontaktinformation}
menuText D HelpTip "Tagestip" 0 {Zeigt einen ntzlichen Tip an}
menuText D HelpStartup "Startfenster" 0 {Startfenster zeigen}
menuText D HelpAbout "ber Scid" 0 {Informationen zu Scid}

# Game info box popup menu:
menuText D GInfoHideNext "Nchsten Zug verstecken" 13
menuText D GInfoMaterial "Materialwerte zeigen" 0
menuText D GInfoFEN "FEN zeigen" 0
menuText D GInfoMarks "Gefrbte Felder und Pfeile zeigen" 0
menuText D GInfoWrap "Umbruch bei langen Zeilen" 0
menuText D GInfoFullComment "Vollstndigen Kommentar zeigen" 14
menuText D GInfoPhotos "Fotos zeigen" 1
menuText D GInfoTBNothing "Endspieltabellen: nichts" 18
menuText D GInfoTBResult "Endspieltabellen: nur Ergebnis" 22
menuText D GInfoTBAll "Endspieltabellen: Ergebnis und bester Zug" 31
menuText D GInfoDelete "(Ent)Lsche diese Partie" 5
menuText D GInfoMark "(Un)Markiere diese Partie" 4
menuText D GInfoInformant "Informatorwerte konfigurieren" 0

# Main window buttons:
helpMsg D .main.fbutton.button.start {Gehe zum Partieanfang  (Taste: Pos 1)}
helpMsg D .main.fbutton.button.end {Gehe zum Partieende  (Taste: Ende)}
helpMsg D .main.fbutton.button.back {Gehe einen Zug zurck  (Taste: LinksPfeil)}
helpMsg D .main.fbutton.button.forward {Gehe einen Zug vor  (Taste: RechtsPfeil)}
helpMsg D .main.fbutton.button.intoVar {Gehe in Variante  (Taste: v)}
helpMsg D .main.fbutton.button.exitVar {Verlasse Variante  (Taste: z)}
helpMsg D .main.fbutton.button.flip {Brett drehen  (Taste: .)}
helpMsg D .main.fbutton.button.coords {Brettkoordinaten AN oder AUS  (Taste: 0)}
helpMsg D .main.fbutton.button.stm {Anzeige "Wer ist am Zug" an oder aus}
helpMsg D .main.fbutton.button.autoplay {Automatisches Vorspielen  (Taste: Strg+Z)}

# General buttons:
translate D Back {Zurck}
translate D Browse {Blttern}
translate D Cancel {Abbrechen}
translate D Continue {Weiter}
translate D Clear {Leeren}
translate D Close {Schlieen}
translate D Contents {Inhalt}
translate D Defaults {Standard}
translate D Delete {Lsche}
translate D Graph {Grafik}
translate D Help {Hilfe}
translate D Import {Importieren}
translate D Index {Index}
translate D LoadGame {Partie laden}
translate D BrowseGame {Partie betrachten}
translate D MergeGame {Partie zusammenfgen}
translate D MergeGames {Partien kombinieren}
translate D Preview {Vorschau} ;# Voransicht!? (KDE)
translate D Revert {Umkehren}
translate D Save {Speichern}
translate D Search {Suchen}
translate D Stop {Halt}
translate D Store {Speichern}
translate D Update {Aktualisieren}
translate D ChangeOrient {Fensterausrichtung ndern}
translate D ShowIcons {Symbole anzeigen}
translate D None {Keine}
translate D First {Erste}
translate D Current {Aktuelle}
translate D Last {Letzte}

# General messages:
translate D game {Partie}
translate D games {Partien}
translate D move {Zug}
translate D moves {Zge}
translate D all {Alle}
translate D Yes {Ja}
translate D No {Nein}
translate D Both {Beide}
translate D King {Knig}
translate D Queen {Dame}
translate D Rook {Turm}
translate D Bishop {Lufer}
translate D Knight {Springer}
translate D Pawn {Bauer}
translate D White {Wei}
translate D Black {Schwarz}
translate D Player {Spieler}
translate D Rating {Elo}
translate D RatingDiff {Elo-Differenz (Wei - Schwarz)}
translate D AverageRating {Elo-Durchschnitt}
translate D Event {Turnier}
translate D Site {Ort}
translate D Country {Land}
translate D IgnoreColors {Farben ignorieren}
translate D Date {Datum}
translate D EventDate {Turnierdatum}
translate D Decade {Dekade}
translate D Year {Jahr}
translate D Month {Monat}
translate D Months {Januar Februar Mrz April Mai Juni Juli August September Oktober November Dezember}
translate D Days {Son Mon Die Mit Don Fre Sam}
translate D YearToToday {Ein Jahr zurck}
translate D Result {Ergebnis}
translate D Round {Runde}
translate D Length {Lnge}
translate D ECOCode {ECO-Code}
translate D ECO {ECO}
translate D Deleted {Gelscht}
translate D SearchResults {Suchergebnisse}
translate D OpeningTheDatabase {Datenbank ffnen}
translate D Database {Datenbank}
translate D Filter {Filter}
translate D noGames {keine Partien}
translate D allGames {alle Partien}
translate D empty {leer}
translate D clipbase {Ablage}
translate D score {Punkte}
translate D StartPos {Stellung}
translate D Total {Summe}
translate D readonly {schreibgeschtzt}

# Standard error messages:
translate D ErrNotOpen {Dies ist keine geffnete Datenbank.}
translate D ErrReadOnly \
  {Diese Datenbank ist schreibgeschtzt; sie kann nicht gendert werden.}
translate D ErrSearchInterrupted \
  {Suche wurde unterbrochen; Ergebnisse sind unvollstndig.}

# Game information:
translate D twin {Dublette}
translate D deleted {gelscht}
translate D comment {Kommentar}
translate D hidden {versteckt}
translate D LastMove {letzter Zug}
translate D NextMove {nchster Zug}
translate D GameStart {Partieanfang}
translate D LineStart {Beginn der Zugfolge}
translate D GameEnd {Partieende}
translate D LineEnd {Ende der Zugfolge}

# Player information:
translate D PInfoAll {Ergebnisse fr <b>alle</b> Spiele}
translate D PInfoFilter {Ergebnisse fr <b>Filter</b>-Spiele}
translate D PInfoAgainst {Ergebnisse gegen}
translate D PInfoMostWhite {Hufigste Erffnungen als Weier}
translate D PInfoMostBlack {Hufigste Erffnungen als Schwarzer}
translate D PInfoRating {ELO-Historie}
translate D PInfoBio {Biographie}
translate D PInfoEditRatings {Editiere Ratings}

# Tablebase information:
translate D Draw {Remis}
translate D stalemate {Patt}
translate D withAllMoves {mit allen Zgen}
translate D withAllButOneMove {mit allen auer einem Zug}
translate D with {mit}
translate D only {nur}
translate D lose {verlieren}
translate D loses {verliert}
translate D allOthersLose {alle anderen verlieren}
translate D matesIn {setzt Matt in}
translate D hasCheckmated {hat Matt gesetzt}
translate D longest {lngste}
translate D WinningMoves {Gewinnzge}
translate D DrawingMoves {Remiszge}
translate D LosingMoves {Verlustzge}
translate D UnknownMoves {Zge mit unbekanntem Resultat}

# Tip of the day:
translate D Tip {Tip}
translate D TipAtStartup {Tip beim Starten}

# Tree window menus:
menuText D TreeFile "Datei" 0
menuText D TreeFileFillWithBase "Cache mit Datenbank fllen" 0 {Die Cache-Datei wird mit allen Partien der aktuellen Datenbank befllt.}
menuText D TreeFileFillWithGame "Cache mit Partie fllen" 0 {Die Cache-Datei wird mit der aktuellen Partien befllt.}
menuText D TreeFileSetCacheSize "Cache Gre" 0 {Cachegre auswhlen.}
menuText D TreeFileCacheInfo "Cache info" 0 {Info ber Cachenutzung anzeigen.}
menuText D TreeFileSave "Cache-Datei sichern" 12 \
  {Speichere die Zugbaum-Cache-Datei (.stc)}
menuText D TreeFileFill "Cache-Datei fllen" 12 \
  {Flle die Cache-Datei mit hufigen Erffnungspositionen}
menuText D TreeFileBest "Beste Partien" 0 \
  {Zeige die Liste bester Partien im Baum}
menuText D TreeFileGraph "Grafikfenster" 0 \
  {Zeige die Grafik fr diesen Ast}
menuText D TreeFileCopy "Kopiere Baumfenster in Zwischenablage" 0 \
  {Kopiere die Zugbaum-Statistik in die Zwischenablage}
menuText D TreeFileClose "Baumfenster schlieen" 12 {Schliee Zugbaum}
menuText D TreeMask "Maskieren" 0
menuText D TreeMaskNew "Neu" 0 {Neue Maske anlegen}
menuText D TreeMaskOpen "ffnen" 0 {Maske ffnen}
menuText D TreeMaskOpenRecent "Aktuelle Masken" 0 {Zuletzt geffnete Masken erneut laden}
menuText D TreeMaskSave "Speichern" 0 {Maske speichern}
menuText D TreeMaskClose "Schlieen" 0 {Maske schlieen}
menuText D TreeMaskFillWithGame "Mit aktueller Partie fllen" 0 {Maske mit der aktuellen Partie fllen}
menuText D TreeMaskFillWithBase "Mit Datenbank fllen" 0 {Maske mit Datenbankpartien fllen}
menuText D TreeMaskInfo "Info" 0 {Statistik fr die aktuelle Maske anzeigen}
menuText D TreeMaskDisplay "Maske als Baum" 0 {Zeigt den Inhalt der aktuellen Maske als Zugbaum}
menuText D TreeMaskSearch "Suchen" 0 {Suchen innerhalb der aktuellen Maske}
menuText D TreeSort "Sortieren" 0
menuText D TreeSortAlpha "Alphabetisch" 0
menuText D TreeSortECO "ECO-Code" 0
menuText D TreeSortFreq "Hufigkeit" 0
menuText D TreeSortScore "Punkte" 0
menuText D TreeOpt "Optionen" 0
menuText D TreeOptSlowmode "Grndliche Suche" 0 {Update mit hoher Genauigkeit, langsamer}
menuText D TreeOptFastmode "Schneller Modus" 0 {Schnelles Update (ignoriert Zugumstellungen)}
menuText D TreeOptFastAndSlowmode "Grndlicher und Schneller Modus" 0 {Zunchst schneller Updatemodus, dann nacharbeit im grndlichen Modus}
menuText D TreeOptStartStop "Automatisch aktualisieren" 0 {Schaltet das automatische aktualisieren ein/aus}
menuText D TreeOptLock "Anbinden" 0 \
  {Zugbaum an aktive Datenbank anbinden(/lsen)}
menuText D TreeOptTraining "Training" 0 {Trainingsmodus ein-/ausschalten}
menuText D TreeOptAutosave "Autom. Cache-Datei sichern" 4 \
  {Beim Schlieen des Zugbaums automatisch Cache-Datei sichern}
menuText D TreeHelp "Hilfe" 0
menuText D TreeHelpTree "Zugbaumhilfe" 0
menuText D TreeHelpIndex "Index" 0
translate D SaveCache {Cache sichern}
translate D Training {Training}
translate D LockTree {Anbinden}
translate D TreeLocked {angebunden}
translate D TreeBest {Beste}
translate D TreeBestGames {Beste Zugbaumpartien}
# Note: the next message is the tree window title row. After editing it,
# check the tree window to make sure it lines up with the actual columns.
translate D TreeTitleRow \
  {    Zug    ECO       Hufigkeit    Pkte   Elo  Erflg Jahr %Remis}
translate D TreeTotal {SUMME}
translate D DoYouWantToSaveFirst {Soll zuerst gespeichert werden}
translate D AddToMask {Zur Maske hinzufgen}
translate D RemoveFromMask {Entferne von Maske}
translate D AddThisMoveToMask {Diesen Zug zur Maske hinzufgen}
translate D SearchMask {Suche in einer Maske}
translate D DisplayMask {Maske als Zugbaum}
translate D Nag {NAG Code}
translate D Marker {Marker}
translate D Include {Einbezogene Variante}
translate D Exclude {Ausgeschlossene Variante}
translate D MainLine {Hauptvariante}
translate D Bookmark {Lesezeichen}
translate D NewLine {Neue Variante}
translate D ToBeVerified {berprfen}
translate D ToTrain {Trainieren}
translate D Dubious {Zweifelhaft}
translate D ToRemove {Entfernen}
translate D NoMarker {Keine Markierung}
translate D ColorMarker {Farbe}
translate D WhiteMark {Wei}
translate D GreenMark {Grn}
translate D YellowMark {Gelb}
translate D BlueMark {Blau}
translate D RedMark {Rot}
translate D CommentMove {Zug kommentieren}
translate D CommentPosition {Position kommentieren}
translate D AddMoveToMaskFirst {Zug zuerst zur Maske hinzufngen}
translate D OpenAMaskFileFirst {Zunchst Maske ffnen}
translate D Positions {Positionen}
translate D Moves {Zge}

# Finder window:
menuText D FinderFile "Datei" 0
menuText D FinderFileSubdirs "Unterverzeichnisse beachten" 0
menuText D FinderFileClose "Dateifinder schlieen" 0
menuText D FinderSort "Sortieren" 0
menuText D FinderSortType "Typ" 0
menuText D FinderSortSize "Gre" 0
menuText D FinderSortMod "Modifiziert" 0
menuText D FinderSortName "Namen" 0
menuText D FinderSortPath "Pfad" 0
menuText D FinderTypes "Typen" 0
menuText D FinderTypesScid "Scid-Datenbanken" 0
menuText D FinderTypesOld "Datenbanken im alten Format" 0
menuText D FinderTypesPGN "PGN-Dateien" 0
menuText D FinderTypesEPD "EPD-Dateien" 0
menuText D FinderTypesRep "Repertoiredateien" 0
menuText D FinderHelp "Hilfe" 0
menuText D FinderHelpFinder "Dateifinderhilfe" 0
menuText D FinderHelpIndex "Index" 0
translate D FileFinder {Dateifinder}
translate D FinderDir {Verzeichnis}
translate D FinderDirs {Verzeichnisse}
translate D FinderFiles {Dateien}
translate D FinderUpDir {hoch}
translate D FinderCtxOpen {ffnen}
translate D FinderCtxBackup {Sicherungskopie}
translate D FinderCtxCopy {Kopieren}
translate D FinderCtxMove {Verschieben}
translate D FinderCtxDelete {Lschen}

# Player finder:
menuText D PListFile "Datei" 0
menuText D PListFileUpdate "Aktualisieren" 0
menuText D PListFileClose "Spielerfinder schlieen" 7
menuText D PListSort "Sortieren" 0
menuText D PListSortName "Name" 0
menuText D PListSortElo "Elo" 0
menuText D PListSortGames "Partien" 0
menuText D PListSortOldest "lteste" 0
menuText D PListSortNewest "Neueste" 0

# Tournament finder:
menuText D TmtFile "Datei" 0
menuText D TmtFileUpdate "Aktualisieren" 0
menuText D TmtFileClose "Turnierfinder schlieen" 0
menuText D TmtSort "Sortieren" 0
menuText D TmtSortDate "Datum" 0
menuText D TmtSortPlayers "Spieler" 0
menuText D TmtSortGames "Partien" 0
menuText D TmtSortElo "Elo" 0
menuText D TmtSortSite "Ort" 0
menuText D TmtSortEvent "Turnier" 1
menuText D TmtSortWinner "Gewinner" 0
translate D TmtLimit "Listengrenze"
translate D TmtMeanElo "Unterster Elo-Durchschnitt"
translate D TmtNone "Keine zutreffenden Turniere gefunden."

# Graph windows:
menuText D GraphFile "Datei" 0
menuText D GraphFileColor "Als Farb-Postscript speichern..." 4
menuText D GraphFileGrey "Als Graustufen-Postscript speichern..." 4
menuText D GraphFileClose "Fenster schlieen" 0
menuText D GraphOptions "Optionen" 0
menuText D GraphOptionsWhite "Wei" 0
menuText D GraphOptionsBlack "Schwarz" 0
menuText D GraphOptionsBoth "Beide" 0
menuText D GraphOptionsPInfo "Spielerinfo Spieler" 1
translate D GraphFilterTitle "Filtergrafik: Hufigkeit pro 1000 Partien"
translate D GraphAbsFilterTitle "Filtergrafik: Hufigkeit der Partien"
translate D ConfigureFilter "X-Achse fr Jahr, Elo und Zge konfigurieren"
translate D FilterEstimate "Schtzen"
translate D TitleFilterGraph "Scid: Filtergrafik"

# Analysis window:
translate D AddVariation {Variante hinzufgen}
translate D AddAllVariations {Alle Varianten hinzufgen}
translate D AddMove {Zug hinzufgen}
translate D Annotate {Autom. kommentieren}
translate D ShowAnalysisBoard {Analysebrett anzeigen}
translate D ShowInfo {Engine-Information anzeigen}
translate D FinishGame {Partie beenden}
translate D StopEngine {Engine anhalten}
translate D StartEngine {Engine starten}
translate D LockEngine {Anbinden an aktuelle Position}
translate D AnalysisCommand {Analysebefehl}
translate D PreviousChoices {Vorherige Wahl}
translate D AnnotateTime {Zeit zwischen den Zgen (in Sek.) einstellen}
translate D AnnotateWhich {Varianten hinzufgen}
translate D AnnotateAll {Fr Zge beider Seiten}
translate D AnnotateAllMoves {Alle Zge kommentieren}
translate D AnnotateWhite {Nur fr Zge von Wei}
translate D AnnotateBlack {Nur fr Zge von Schwarz}
translate D AnnotateBlundersOnly {Wenn der Partiezug ein offensichtlicher Fehler ist}
translate D AnnotateBlundersOnlyScoreChange {Analyse berichtet Fehler, Bewertungsnderung von/nach: }
translate D BlundersThreshold {Grenze}
translate D ScoreAllMoves {Alle Zge validieren}
translate D LowPriority {Niedrige CPU-Prioritt}
translate D ClickHereToSeeMoves {Hier klicken um Zge anzuzeigen}
translate D ConfigureInformant {Informator konfigurieren}
translate D Informant!? {Interessanter Zug}
translate D Informant? {Schwacher Zug}
translate D Informant?? {Fehler}
translate D Informant?! {Zweifelhafter Zug}
translate D Informant+= {Wei hat leichten Vorteil}
translate D Informant+/- {Wei hat migen Vorteil}
translate D Informant+- {Wei hat groen Vorteil}
translate D Informant++- {Partie wird gewonnen}
translate D Book {Buch}
translate D OtherBookMoves {Erffnungsbuch des Gegners}
translate D OtherBookMovesTooltip {Zge, fr die der Gegner eine Antwort kennt}

# Analysis Engine open dialog:
translate D EngineList {Analyse-Engines}
translate D EngineName {Name}
translate D EngineCmd {Befehl}
translate D EngineArgs {Parameter}
translate D EngineDir {Verzeichnis}
translate D EngineElo {Elo}
translate D EngineTime {Datum}
translate D EngineNew {Neu}
translate D EngineEdit {Bearbeiten}
translate D EngineRequired {Fettgedruckte Parameter obligatorisch, andere optional}


# Stats window menus:
menuText D StatsFile "Datei" 0
menuText D StatsFilePrint "Drucken in Datei..." 0
menuText D StatsFileClose "Fenster schlieen" 0
menuText D StatsOpt "Optionen" 0

# PGN window menus:
menuText D PgnFile "Datei" 0
menuText D PgnFileCopy "Kopiere Spiel in Zwischenablage" 0
menuText D PgnFilePrint "Drucken in Datei..." 0
menuText D PgnFileClose "PGN-Fenster schlieen" 0
menuText D PgnOpt "Ausgabe" 0
menuText D PgnOptColor "Farbige Darstellung" 0
menuText D PgnOptShort "Kurzer (3-Zeilen) Vorspann (Header)" 8
menuText D PgnOptSymbols "Symbolische Darstellung" 0
menuText D PgnOptIndentC "Kommentare einrcken" 0
menuText D PgnOptIndentV "Varianten einrcken" 0
menuText D PgnOptColumn "Tabellarisch (ein Zug pro Zeile)" 0
menuText D PgnOptSpace "Leerzeichen nach Zugnummer" 0
menuText D PgnOptStripMarks "Farbfelder-/Pfeile-Zeichen entfernen" 27
menuText D PgnOptBoldMainLine "Partiezge in Fettdruck" 0
menuText D PgnColor "Farben" 0
menuText D PgnColorHeader "Vorspann..." 0
menuText D PgnColorAnno "Anmerkungen..." 0
menuText D PgnColorComments "Kommentare..." 0
menuText D PgnColorVars "Varianten..." 0
menuText D PgnColorBackground "Hintergrund..." 0
menuText D PgnColorMain "Partieverlauf..." 0
menuText D PgnColorCurrent "Hintergrund aktueller Zug..." 1
menuText D PgnColorNextMove "Hintergrund nchter Zug..." 0
menuText D PgnHelp "Hilfe" 0
menuText D PgnHelpPgn "PGN-Hilfe" 0
menuText D PgnHelpIndex "Index" 0
translate D PgnWindowTitle {Partienotation - Partie %u}

# Crosstable window menus:
menuText D CrosstabFile "Datei" 0
menuText D CrosstabFileText "Ausgabe in Textdatei..." 11
menuText D CrosstabFileHtml "Ausgabe in HTML-Datei..." 11
menuText D CrosstabFileLaTeX "Ausgabe in LaTeX-Datei..." 11
menuText D CrosstabFileClose "Kreuztabelle schlieen" 0
menuText D CrosstabEdit "Bearbeiten" 0
menuText D CrosstabEditEvent "Ereignis" 0
menuText D CrosstabEditSite "Ort" 0
menuText D CrosstabEditDate "Datum" 0
menuText D CrosstabOpt "Ausgabe" 0
menuText D CrosstabOptAll "Jeder gegen jeden" 0
menuText D CrosstabOptSwiss "Schweizer System" 0
menuText D CrosstabOptKnockout "K.o.-System" 0
menuText D CrosstabOptAuto "Automatisch" 1
menuText D CrosstabOptAges "Alter in Jahren" 0
menuText D CrosstabOptNats "Nationalitt" 0
menuText D CrosstabOptRatings "Elo" 0
menuText D CrosstabOptTitles "Titel" 0
menuText D CrosstabOptBreaks "Stichkampfpunkte" 10
menuText D CrosstabOptDeleted "Inklusive gelschte Partien" 10
menuText D CrosstabOptColors "Farben (nur Schweizer System)" 0
menuText D CrosstabOptColumnNumbers "Numerierte Spalten (Nur jeder-gegen-jeden-Tabelle)" 2
menuText D CrosstabOptGroup "Punktgruppen" 5
menuText D CrosstabSort "Sortieren" 0
menuText D CrosstabSortName "Name" 0
menuText D CrosstabSortRating "Elo" 0
menuText D CrosstabSortScore "Punkte" 0
menuText D CrosstabColor "Farben" 0
menuText D CrosstabColorPlain "Text" 0
menuText D CrosstabColorHyper "Hypertext" 0
menuText D CrosstabHelp "Hilfe" 0
menuText D CrosstabHelpCross "Kreuztabelle-Hilfe" 0
menuText D CrosstabHelpIndex "Index" 0
translate D SetFilter {Filter setzen}
translate D AddToFilter {Zum Filter hinzufgen}
translate D Swiss {Schweizer}
translate D Category {Kategorie}

# Opening report window menus:
menuText D OprepFile "Datei" 0
menuText D OprepFileText "Ausgabe in Textdatei..." 11
menuText D OprepFileHtml "Ausgabe in HTML-Datei..." 11
menuText D OprepFileLaTeX "Ausgabe in LaTeX-Datei..." 11
menuText D OprepFileOptions "Optionen..." 0
menuText D OprepFileClose "Berichtsfenster schlieen" 0
menuText D OprepFavorites "Favoriten" 0
menuText D OprepFavoritesAdd "Bericht hinzufgen..." 8
menuText D OprepFavoritesEdit "Favoritenbericht editieren..." 0
menuText D OprepFavoritesGenerate "Berichte erzeugen..." 9

menuText D OprepHelp "Hilfe" 0
menuText D OprepHelpReport "Erffnungsbericht-Hilfe" 0
menuText D OprepHelpIndex "Index" 0

# Repertoire editor:
menuText D RepFile "Datei" 0
menuText D RepFileNew "Neu" 0
menuText D RepFileOpen "ffnen..." 0
menuText D RepFileSave "Speichern..." 0
menuText D RepFileSaveAs "Speichern unter..." 10
menuText D RepFileClose "Schlieen" 1
menuText D RepEdit "Bearbeiten" 0
menuText D RepEditGroup "Gruppe hinzufgen" 0
menuText D RepEditInclude "Variante einschlieen" 9
menuText D RepEditExclude "Variante ausschlieen" 9
menuText D RepView "Ansicht" 0
menuText D RepViewExpand "Alle Gruppen aufklappen" 13
menuText D RepViewCollapse "Alle Gruppen zuklappen" 13
menuText D RepSearch "Suchen" 0
menuText D RepSearchAll "Im gesamten Repertoire..." 0
menuText D RepSearchDisplayed "Nur in der aktuellen Variante..." 0
menuText D RepHelp "Hilfe" 0
menuText D RepHelpRep "Repertoire Hilfe" 0
menuText D RepHelpIndex "Index" 0
translate D RepSearch "Repertoire Suche"
translate D RepIncludedLines "Eingeschlossene Varianten"
translate D RepExcludedLines "Ausgeschlossene Varianten"
translate D RepCloseDialog {Dieses Repertoire hat ungesicherte nderungen.

Wollen Sie wirklich fortfahren und die nderungen verwerfen?
}

# Header search:
translate D HeaderSearch {Partiedatensuche}
translate D EndSideToMove {Wer ist beim Partieende am Zug?}
translate D GamesWithNoECO {Partien ohne ECO?}
translate D GameLength {Partielnge}
translate D FindGamesWith {Finde Partien mit den Markierungen (Flags)}
translate D StdStart {Standardausgangsposition}
translate D Promotions {Umwandlung}
translate D Comments {Kommentare}
translate D Variations {Varianten}
translate D Annotations {Anmerkungen}
translate D DeleteFlag {Lschkennzeichen}
translate D WhiteOpFlag {Erffnung Wei}
translate D BlackOpFlag {Erffnung Schwarz}
translate D MiddlegameFlag {Mittelspiel}
translate D EndgameFlag {Endspiel}
translate D NoveltyFlag {Neuerung}
translate D PawnFlag {Bauernstruktur}
translate D TacticsFlag {Taktik}
translate D QsideFlag {Damenflgel}
translate D KsideFlag {Knigsflgel}
translate D BrilliancyFlag {Glnzend}
translate D BlunderFlag {Grober Fehler}
translate D UserFlag {Benutzer}
translate D PgnContains {PGN enthlt Text}
translate D Annotator {Kommentator}
translate D Cmnts {Kommentare}

# Game list window:
translate D GlistNumber {Nummer}
translate D GlistWhite {Wei}
translate D GlistBlack {Schwarz}
translate D GlistWElo {W-Elo}
translate D GlistBElo {S-Elo}
translate D GlistEvent {Turnier}
translate D GlistSite {Ort}
translate D GlistRound {Runde}
translate D GlistDate {Datum}
translate D GlistYear {Jahr}
translate D GlistEDate {Turnierdatum}
translate D GlistResult {Ergebnis}
translate D GlistLength {Lnge}
translate D GlistCountry {Land}
translate D GlistECO {ECO}
translate D GlistOpening {Erffnung}
translate D GlistEndMaterial {Endmaterial}
translate D GlistDeleted {Gelscht}
translate D GlistFlags {Markierungen}
translate D GlistVars {Varianten}
translate D GlistComments {Kommentare}
translate D GlistAnnos {Anmerkungen}
translate D GlistStart {Stellung}
translate D GlistGameNumber {Partie Nummer:}
translate D GlistAverageElo {ELO Durchschnitt}
translate D GlistRating {Wertungszahl}
translate D GlistFindText {Text finden}
translate D GlistMoveField {Verschieben}
translate D GlistEditField {Konfigurieren}
translate D GlistAddField {Hinzufgen}
translate D GlistDeleteField {Lschen}
translate D GlistWidth {Breite}
translate D GlistAlign {Ausrichtung}
translate D GlistAlignL {Ausrichtung: links}
translate D GlistAlignR {Ausrichtung: rechts}
translate D GlistAlignC {Ausrichtung: zentriert}
translate D GlistColor {Farbe}
translate D GlistSep {Trennlinie}
translate D GlistCurrentSep {-- Aktuell --}
translate D GlistNewSort {Neu}
translate D GlistAddToSort {Hinzufgen}

# base sorting
translate D GsortSort {Sortieren...}
translate D GsortDate {Datum}
translate D GsortYear {Jahr}
translate D GsortEvent {Event}
translate D GsortSite {Ort}
translate D GsortRound {Runde}
translate D GsortWhiteName {Name Wei}
translate D GsortBlackName {Name Schwarz}
translate D GsortECO {ECO}
translate D GsortResult {Ergebnis}
translate D GsortMoveCount {Zahl der Zge}
translate D GsortAverageElo {Eloschnitt}
translate D GsortCountry {Land}
translate D GsortDeleted {Gelscht}
translate D GsortEventDate {Event Datum}
translate D GsortWhiteElo {ELO Wei}
translate D GsortBlackElo {ELO Schwarz}
translate D GsortComments {Kommentare}
translate D GsortVariations {Varianten}
translate D GsortNAGs {NAGs}
translate D GsortAscending {Aufsteigend}
translate D GsortDescending {Fallend}
translate D GsortAdd {Hinzufgen}
translate D GsortStore {Speichern}
translate D GsortLoad {Laden}

# menu shown with right mouse button down on game list.
translate D GlistRemoveThisGameFromFilter  {Partie aus Filter entfernen}
translate D GlistRemoveGameAndAboveFromFilter  {Partie (und alle oberhalb) aus Filter entfernen}
translate D GlistRemoveGameAndBelowFromFilter  {Partie (und alle darunter) aus Filter entfernen}
translate D GlistDeleteGame {(Ent)Loesche Partie}
translate D GlistDeleteAllGames {Lsche alle Partien im Filter} 
translate D GlistUndeleteAllGames {Entlsche alle Partien im Filter} 
translate D GlistMergeGameInBase {Mit Partie in anderer Datebank zusammenfhren} 

# Maintenance window:
translate D DatabaseName {Datenbankname:}
translate D TypeIcon {Symbol:}
translate D NumOfGames {Partien:}
translate D NumDeletedGames {Gelschte Partien:}
translate D NumFilterGames {Partien im Filter:}
translate D YearRange {Jahr-Spanne:}
translate D RatingRange {Elo-Spanne:}
translate D Description {Beschreibung}
translate D Flag {Markierung}
translate D CustomFlags {Benutzerdefinierte Markierungen}
translate D DeleteCurrent {Lsche aktuelle Partie}
translate D DeleteFilter {Lsche Partien im Filter}
translate D DeleteAll {Lsche alle Partien}
translate D UndeleteCurrent {Aktuelle Partie wiederherstellen}
translate D UndeleteFilter {Partien im Filter wiederherstellen}
translate D UndeleteAll {Alle Partien wiederherstellen}
translate D DeleteTwins {Lsche Dubletten}
translate D MarkCurrent {Markiere aktuelle Partie}
translate D MarkFilter {Markiere Partien im Filter}
translate D MarkAll {Markiere alle Partien}
translate D UnmarkCurrent {Entmarkiere aktuelle Partie}
translate D UnmarkFilter {Entmarkiere Partien im Filter}
translate D UnmarkAll {Entmarkiere alle Partien}
translate D Spellchecking {Schreibkorrektur}
translate D Players {Spieler}
translate D Events {Ereignis}
translate D Sites {Ort}
translate D Rounds {Runde}
translate D DatabaseOps {Datenbankoperationen}
translate D ReclassifyGames {Partien ECO-klassifizieren}
translate D CompactDatabase {Datenbank komprimieren}
translate D SortDatabase {Datenbank sortieren}
translate D AddEloRatings {ELO-Zahlen hinzufgen}
translate D AutoloadGame {Automatisch Partie Nr. laden}
translate D StripTags {PGN-Markierungen entfernen}
translate D StripTag {Markierung entfernen}
translate D Cleaner {Bereiniger}
translate D CleanerHelp {
Der Scid-Bereiniger wird fr die aktuelle Datenbank alle
Wartungsarbeiten ausfhren, welche aus der unten stehenden
Liste ausgewhlt werden.

Aktuelle Einstellungen in den Mens "ECO-Klassifikation" und "Dubletten lschen"
werden angewendet, falls diese Funktionen ausgewhlt sind.}
translate D CleanerConfirm {
Ist der Bereiniger einmal gestartet, kann er nicht mehr unterbrochen werden!

Dies kann lange dauern, speziell bei groen Datenbanken, abhngig von den
ausgewhlten Funktionen und deren Einstellungen.

Sind Sie sicher, da Sie die ausgewhlten Wartungsarbeiten starten mchten?
}
# Twinchecker
translate D TwinCheckUndelete { umdrehen; "u" beide entlschen)}
translate D TwinCheckprevPair {Vorheriges Paar}
translate D TwinChecknextPair {Nchstes Paar}
translate D TwinChecker {Scid: Dublettenprfer}
translate D TwinCheckTournament {Partien im Turnier:}
translate D TwinCheckNoTwin {Keine Dublette}
translate D TwinCheckNoTwinfound {Kein Dublette fr diese Partie gefunden.

Um Dubletten anzuzeigen, bitte zuerst die Funktion "Lsche Dubletten" benutzen.}
translate D TwinCheckTag {Nutze Tag...}
translate D TwinCheckFound1 {Scid hat $result Dubletten gefunden}
translate D TwinCheckFound2 { und das Gelscht-Flag gesetzt}
translate D TwinCheckNoDelete {In dieser Datenbank sind keine Partien zu lschen.}
translate D TwinCriteria1 {Ihre Auswahlkriterien der Dublettensuche haben eine hohe Wahrscheinlichkeit auch Partien mit hnlichen Zgen als Dubletten zu erkennen.
}
translate D TwinCriteria2 {Es wird empfohlen, dass bei der Auswahl "Nein" fr "gleiche Zge" die Auswahl "Ja" fr Farbe, Ereignis, Ort, Runde, Jahr und Monat ausgewhlt wird.

Wollen Sie fortsetzen und mit dieser Auswahl die Dubletten lschen? }
translate D TwinCriteria3 {Es wird empfohlen, dass bei der Auswahl "Ja" fr mindestens 2 der Parameter "gleicher Ort", "gleiche Runde" und "gleiches Jahr" gesetzt werden.
    
Wollen Sie fortsetzen und mit dieser Auswahl die Dubletten lschen?}
translate D TwinCriteriaConfirm {Scid: Besttigen der Dublettensuchparameter}
translate D TwinChangeTag "ndern der folgenden Partie-Tags:\n\n"
translate D AllocRatingDescription "Mit dieser Funktion werden die ELO-Werte aus der Schreibkorrekturdatei den Partien hinzugefgt. Der Wert wird hinzugefgt, wenn ein/e Spieler/in keinen aktuellen Wert in der Partie besitzt, aber in der Korrekturdatei ein Wert fr den Zeitraum der Partie vorhanden ist."
translate D RatingOverride "Existierende ELO-Werte berschreiben?"
translate D AddRatings "Elo-Werte hinzufgen:"
translate D AddedRatings {Scid hat $r Elo-Werte in $g Partien hinzugefgt.}

#Bookmark editor
translate D NewSubmenu "Neues Untermen"

# Comment editor:
translate D AnnotationSymbols  {Kommentarzeichen:}
translate D Comment {Kommentar:}
translate D InsertMark {Markierung einfgen}
translate D InsertMarkHelp {
Markierung einfgen/lschen: Farbe, Typ, Feld whlen.
Pfeil einfgen/lschen: Rechtsklick auf zwei Felder.
}

# Nag buttons in comment editor:
translate D GoodMove {Guter Zug}
translate D PoorMove {Schwacher Zug}
translate D ExcellentMove {Ausgezeichneter Zug}
translate D Blunder {Grober Fehler}
translate D InterestingMove {Interessanter Zug}
translate D DubiousMove {Zweifelhafter Zug}
translate D WhiteDecisiveAdvantage {Wei hat Vorteil}
translate D BlackDecisiveAdvantage {Schwarz hat Vorteil}
translate D WhiteClearAdvantage {Wei hat klaren Vorteil}
translate D BlackClearAdvantage {Schwarz hat klaren Vorteil}
translate D WhiteSlightAdvantage {Wei hat leichten Vorteil}
translate D BlackSlightAdvantage {Schwarz hat leichten Vorteil}
translate D Equality {Gleiche Chancen}
translate D Unclear {Unklar}
translate D Diagram {Diagramm}

# Board search:
translate D BoardSearch {Brettsuchen}
translate D FilterOperation {Durchfhrung am aktuellen Filter:}
translate D FilterAnd {UND (Beschrnke Filter)}
translate D FilterOr {ODER (Zum Filter hinzufgen)}
translate D FilterIgnore {IGNORIERE (Filter zurcksetzen)}
translate D SearchType {Suche nach Typ:}
translate D SearchBoardExact {Exakte Position (alle Steine auf gleichen Feldern)}
translate D SearchBoardPawns {Bauern (gleiche Figuren, alle Bauern auf gleichen Feldern)}
translate D SearchBoardFiles {Linien (gleiches Material, alle Bauern auf gleichen Linien)}
translate D SearchBoardAny {Material (gleiches Material, Bauern und Figuren beliebig)}
translate D SearchInRefDatabase { In folgender Datenbank suchen }
translate D LookInVars {Schaue in Varianten}

# Material search:
translate D MaterialSearch {Materialsuchen}
translate D Material {Material}
translate D Patterns {Muster}
translate D Zero {Null}
translate D Any {Irgendeine}
translate D CurrentBoard {Aktuelle Stellung}
translate D CommonEndings {Endspiele}
translate D CommonPatterns {Gleiche Muster}
translate D MaterialDiff {Materialdifferenz}
translate D squares {Felder}
translate D SameColor {Gleichfarbige}
translate D OppColor {Ungleichfarbige}
translate D Either {Beides}
translate D MoveNumberRange {Zugnummernbereich}
translate D MatchForAtLeast {Zutreffend fr mindestens}
translate D HalfMoves {Halbzge}

# Common endings in material search:
translate D EndingPawns {Bauernendspiele}
translate D EndingRookVsPawns {Turm gegen Bauer(n)}
translate D EndingRookPawnVsRook {Turm und 1 Bauer gegen Turm}
translate D EndingRookPawnsVsRook {Turm und Bauer(n) gegen Turm}
translate D EndingRooks {Turm gegen Turm}
translate D EndingRooksPassedA {Turm gegen Turm mit Freibauer}
translate D EndingRooksDouble {Doppelturm-Endspiele}
translate D EndingBishops {Lufer gegen Lufer}
translate D EndingBishopVsKnight {Lufer gegen Springer}
translate D EndingKnights {Springer gegen Springer}
translate D EndingQueens {Dame gegen Dame} ;# *** Damenendspiele !?
translate D EndingQueenPawnVsQueen {Dame und 1 Bauer gegen Dame}
translate D BishopPairVsKnightPair {Zwei Lufer gegen zwei Springer im Mittelspiel}

# Common patterns in material search:
translate D PatternWhiteIQP {Weier isolierter Damenbauer}
translate D PatternWhiteIQPBreakE6 {Weier Isolani: Durchbruch d4-d5 gegen e6}
translate D PatternWhiteIQPBreakC6 {Weier Isolani: Durchbruch d4-d5 gegen c6}
translate D PatternBlackIQP {Schwarzer isolierter Damenbauer}
translate D PatternWhiteBlackIQP {Weier gegen schwarzer Damenbauerisolani}
translate D PatternCoupleC3D4 {Isoliertes Bauernpaar c3+d4}
translate D PatternHangingC5D5 {Hngende Bauern c5 und d5 von Schwarz}
translate D PatternMaroczy {Maroczy-Zentrum (mit Bauern auf c4 und e4)}
translate D PatternRookSacC3 {Turmopfer auf c3}
translate D PatternKc1Kg8 {0-0-0 gegen 0-0 (Kc1 gegen Kg8)}
translate D PatternKg1Kc8 {0-0 gegen 0-0-0 (Kg1 gegen Kc8)}
translate D PatternLightFian {Weifeldrige Fianchettos (Lufer g2 gegen Lufer b7)}
translate D PatternDarkFian {Schwarzfeldrige Fianchettos (Lufer b2 gegen Lufer g7)}
translate D PatternFourFian {Beiderseitiges Doppelfianchetto (Lufer auf b2,g2,b7,g7)}

# Game saving:
translate D Today {Heute}
translate D ClassifyGame {Partie klassifizieren}

# Setup position:
translate D EmptyBoard {Brett leeren}
translate D InitialBoard {Initialisiere Brett}
translate D SideToMove {Zugrecht}
translate D MoveNumber {Zugnummer}
translate D Castling {Rochade}
translate D EnPassantFile {EnPassant-Linie}
translate D ClearFen {FEN lschen}
translate D PasteFen {FEN einfgen}
translate D SaveAndContinue {Speichern und Weiter}
translate D DiscardChangesAndContinue {Verwerfen und weiter}
translate D GoBack {Zurck}

# Replace move dialog:
translate D ReplaceMove {Zug ersetzen}
translate D AddNewVar {Neue Variante}
translate D NewMainLine {Neue Hauptvariante}
translate D ReplaceMoveMessage {Hier existiert bereits ein Zug.

Sie knnen diesen Zug ersetzen - unter Verlust aller nachfolgender Zge - oder mit dem Zug eine neue Variante hinzufgen.

(Sie knnen diese Anzeige vermeiden, indem Sie die Option "Fragen vor Ersetzen" im Men Optionen:Zge deaktivieren)}

# Make database read-only dialog:
translate D ReadOnlyDialog {Wenn Sie diese Datenbank mit Schreibschutz
versehen, sind keine nderungen mglich. Es knnen keine Partien gespeichert
oder ersetzt und keine Lschkennzeichen gendert werden. Alle Sortierungen oder
ECO-Klassifikationsergebnisse sind nur temporr.

Sie knnen den Schreibschutz einfach entfernen, indem Sie die Datenbank
schlieen und wieder ffnen.
Wollen Sie diese Datenbank wirklich schreibschtzen?}

# Clear game dialog:
translate D ClearGameDialog {Diese Partie wurde gendert.

Wollen Sie wirklich fortsetzen und die nderungen verwerfen?
}

# Exit dialog:
translate D ExitDialog {Mchten Sie Scid beenden?}
translate D ExitUnsaved {Die folgenden Datenbanken haben ungesicherte Partienderungen. Wenn Sie jetzt beenden, gehen diese nderungen verloren.}

# Import window:
translate D PasteCurrentGame {Aktuelle Partie einfgen}
translate D ImportHelp1 {Eingeben oder Einfgen einer Partie im PGN-Format in den oberen Rahmen.}
translate D ImportHelp2 {Hier werden Fehler beim Importieren angezeigt.}
translate D OverwriteExistingMoves {Bestehende Zge berschreiben?}

# ECO Browser:
translate D ECOAllSections {alle ECO-Gruppen}
translate D ECOSection {ECO-Gruppe}
translate D ECOSummary {Zusammenfassung fr}
translate D ECOFrequency {Hufigkeit der Untercodes fr}

# Opening Report:
translate D OprepTitle {Erffnungsbericht}
translate D OprepReport {Bericht}
translate D OprepGenerated {Erzeugt durch}
translate D OprepStatsHist {Statistiken und Geschichte}
translate D OprepStats {Statistiken}
translate D OprepStatAll {Alle Berichtspartien}
translate D OprepStatBoth {Beide Spieler}
translate D OprepStatSince {Nach}
translate D OprepOldest {lteste Partien}
translate D OprepNewest {Neueste Partien}
translate D OprepPopular {Popularitt}
translate D OprepFreqAll {Hufigkeit in allen Jahren: }
translate D OprepFreq1   {im letzten Jahr:            }
translate D OprepFreq5   {der letzten  5 Jahre:       }
translate D OprepFreq10  {der letzten 10 Jahre:       }
translate D OprepEvery {Eine pro %u Partien}
translate D OprepUp {mehr als %u%s von allen Jahren}
translate D OprepDown {weniger als %u%s von allen Jahren}
translate D OprepSame {keine nderung in allen Jahren}
translate D OprepMostFrequent {Hufigste Spieler}
translate D OprepMostFrequentOpponents {Hufigste Gegner}
translate D OprepRatingsPerf {ELO und Performance}
translate D OprepAvgPerf {Durchschnitts-ELO und Performance}
translate D OprepWRating {ELO Wei}
translate D OprepBRating {ELO Schwarz}
translate D OprepWPerf {Performance Wei}
translate D OprepBPerf {Performance Schwarz}
translate D OprepHighRating {Spiele mit dem hchsten ELO-Durchschnitt}
translate D OprepTrends {Ergebnistrend}
translate D OprepResults {Ergebnis nach Lngen und Hufigkeiten}
translate D OprepLength {Partielnge}
translate D OprepFrequency {Hufigkeit}
translate D OprepWWins {Weisiege:    }
translate D OprepBWins {Schwarzsiege: }
translate D OprepDraws {Remis:        }
translate D OprepWholeDB {ganze Datenbank}
translate D OprepShortest {Krzester Sieg}
translate D OprepMovesThemes {Zge und Themen}
translate D OprepMoveOrders {Zugfolgen zum Erreichen der Berichtsposition}
translate D OprepMoveOrdersOne \
  {Es gab nur eine Zugfolge zur erreichten Position:}
translate D OprepMoveOrdersAll \
  {Es gab %u Zugfolgen zur erreichten Position:}
translate D OprepMoveOrdersMany \
  {Es gab  %u Zugfolgen zur erreichten Position. Die ersten %u sind:}
translate D OprepMovesFrom {Zge ab der Berichtsposition}
translate D OprepMostFrequentEcoCodes {Hufigste ECO-Codes}
translate D OprepThemes {Themen}
translate D OprepThemeDescription {Hufigkeit der Themen in den ersten %u Zgen jeder Partie}
translate D OprepThemeSameCastling {Gleichseitige Rochaden}
translate D OprepThemeOppCastling {Verschiedenseitige Rochaden}
translate D OprepThemeNoCastling {Beide Seiten unrochiert}
translate D OprepThemeKPawnStorm {Bauernsturm auf Knig}
translate D OprepThemeQueenswap {Damen getauscht}
translate D OprepThemeWIQP {Weier isolierter Damenbauer}
translate D OprepThemeBIQP {Schwarzer isolierter Damenbauer}
translate D OprepThemeWP567 {Weier Bauer auf Reihe 5/6/7}
translate D OprepThemeBP234 {Schwarzer Bauer auf Reihe 2/3/4}
translate D OprepThemeOpenCDE {Offene c/d/e-Linie}
translate D OprepTheme1BishopPair {Eine Seite hat Luferpaar}
translate D OprepEndgames {Endspiele}
translate D OprepReportGames {Berichtspartien}
translate D OprepAllGames {Alle Partien}
translate D OprepEndClass {Materialklassifikation von Endspielstellungen}
translate D OprepTheoryTable {Theorietabelle}
translate D OprepTableComment {Erzeugt aus %u Partien mit hchster ELO-Zahl.}
translate D OprepExtraMoves {Zustzliche Zge in Anmerkungen zur Theorietabelle}
translate D OprepMaxGames {Maximum an Partien in Theorietabelle}
translate D OprepViewHTML {Zeige HTML}
translate D OprepViewLaTeX {Zeige LaTeX}

# Player Report:
translate D PReportTitle {Spielerbericht}
translate D PReportColorWhite {mit den weien Steinen}
translate D PReportColorBlack {mit den schwarzen Steinen}
translate D PReportMoves {nach %s}
translate D PReportOpenings {Erffnungen}
translate D PReportClipbase {Leere Zwischenablage und kopiere gefundene Spiele}

# Piece Tracker window:
translate D TrackerSelectSingle {Linke Maustaste whlt diese Figur.}
translate D TrackerSelectPair \
  {Linke Maustaste whlt diese Figur; rechte Maustaste whlt das Figurenpaar.}
translate D TrackerSelectPawn \
  {Linke Maustaste whlt diesen Bauern; rechte Maustaste whlt alle 8 Bauern.}
translate D TrackerStat {Statistik}
translate D TrackerGames {% der Partien mit Zug auf das Feld}
translate D TrackerTime {% der Zeit auf jedem Feld}
translate D TrackerMoves {Zge}
translate D TrackerMovesStart \
  {Zugnummer, ab der die Verteilungsberechnung beginnen soll.}
translate D TrackerMovesStop \
  {Zugnummer, wo die Verteilungsberechnung enden soll.}

# Game selection dialogs:
translate D SelectAllGames {Alle Spiele in der Datenbank}
translate D SelectFilterGames {Nur Spiele im Filter}
translate D SelectTournamentGames {Nur Spiele des aktuellen Turniers}
translate D SelectOlderGames {Nur ltere Spiele}

# Delete Twins window:
translate D TwinsNote {Damit zwei Spiele Dubletten sind, mssen diese mindestens die beiden selben Spieler haben und die folgenden Kriterien, die Sie auswhlen knnen, erfllen. Wenn zwei Dubletten gefunden werden, so wird die krzere der beiden Spiele gelscht. Tip: am besten fhrt man erst eine Schreibkorrektur durch, da dadurch das Finden von Dubletten verbessert wird.}
translate D TwinsCriteria {Kriterium: Dubletten mssen haben ...}
translate D TwinsWhich {berprfe, welche Spiele}
translate D TwinsColors {die gleichen Spielerfarben?}
translate D TwinsEvent {das gleich Ereignis?}
translate D TwinsSite {den gleichen Ort?}
translate D TwinsRound {die gleiche Runde?}
translate D TwinsYear {das gleiche Jahr?}
translate D TwinsMonth {den gleichen Monat?}
translate D TwinsDay {den gleichen Tag?}
translate D TwinsResult {das gleiche Ergebnis?}
translate D TwinsECO {den gleichen ECO-Code?}
translate D TwinsMoves {die gleichen Zge?}
translate D TwinsPlayers {Vergleich Spielernamen}
translate D TwinsPlayersExact {Exakte Treffer}
translate D TwinsPlayersPrefix {Nur erste 4 Buchstaben}
translate D TwinsWhen {Beim Lschen der Dubletten}
translate D TwinsSkipShort {Partien unter 5 Zgen ignorieren?}
translate D TwinsUndelete {Zuerst alle Partien entlschen?}
translate D TwinsSetFilter {Filter auf Dubletten setzen?}
translate D TwinsComments {Spiele mit Kommentar immer behalten?}
translate D TwinsVars {Spiele mit Varianten immer behalten?}
translate D TwinsDeleteWhich {Welche Partie lschen:}
translate D TwinsDeleteShorter {Krzere Partie}
translate D TwinsDeleteOlder {Kleinere Partienummer}
translate D TwinsDeleteNewer {Grere Partienummer}
translate D TwinsDelete {Lsche Spiele}

# Name editor window:
translate D NameEditType {Namen ndern von}
translate D NameEditSelect {Welche Spiele sollen gendert werden?}
translate D NameEditReplace {Ersetze}
translate D NameEditWith {durch}
translate D NameEditMatches {Entsprechungen: Drcke Strg+1 bis Strg+9 zum Auswhlen}
translate D CheckGames {Konsistenzprfung}
translate D CheckGamesWhich {Konsistenzprfung}
translate D CheckAll {Alle Partien}
translate D CheckSelectFilterGames {Partien im Filter}

# Classify window:
translate D Classify {Klassifiziere}
translate D ClassifyWhich {ECO-klassifizieren}
translate D ClassifyAll {Alle Spiele (berschreibe alte ECO-Codes)}
translate D ClassifyYear {Alle Spiele  aus dem letzten Jahr}
translate D ClassifyMonth {Alle Spiele aus dem letzten Monat}
translate D ClassifyNew {Nur Spiele ohne ECO-Code}
translate D ClassifyCodes {Verwende}
translate D ClassifyBasic {Normale ECO-Codes ("B12", ...)}
translate D ClassifyExtended {ECO-Codes mit Scid-Erweiterung ("B12j", ...)}

# Compaction:
translate D NameFile {Namendatenbank}
translate D GameFile {Partiendatenbank}
translate D Names {Namen}
translate D Unused {Unbenutzt}
translate D SizeKb {Gre (kB)}
translate D CurrentState {Momentaner Stand}
translate D AfterCompaction {nach Kompression}
translate D CompactNames {Komprimiere Namen}
translate D CompactGames {Komprimiere Partien}
translate D NoUnusedNames "Es gibt keine unbenutzen Namen, die Namensdatei ist vollstndig komprimiert."
translate D NoUnusedGames "Die Partiedatei ist vollstndig komprimiert."
translate D NameFileCompacted {Die Namesdatei der Datenbank "[file tail [sc_base filename]]" wurde komprimiert.}
translate D GameFileCompacted {Die Partiedatei der Datenbank "[file tail [sc_base filename]]" wurde komprimiert.}

# Sorting:
translate D SortCriteria {Kriterium}
translate D AddCriteria {Fge Sortierkriterium hinzu}
translate D CommonSorts {bliche Sortierkriterien}
translate D Sort {Sortiere}

# Exporting:
translate D AddToExistingFile {Anhngen an eine bestehende Datei?}
translate D ExportComments {Kommentare exportieren?}
translate D ExportVariations {Varianten exportieren?}
translate D IndentComments {Kommentare einrcken?}
translate D IndentVariations {Varianten einrcken?}
translate D ExportColumnStyle {Tabellarisch (ein Zug pro Zeile)?}
translate D ExportSymbolStyle {Symbolische Notation:}
translate D ExportStripMarks \
  {Felder-/Pfeilemarkierzeichen aus den Kommentaren entfernen?}

# Goto game/move dialogs:
translate D LoadGameNumber {Geben Sie die zu ladende Spielnr. ein:}
translate D GotoMoveNumber {Gehe zu Zugnr.:}

# Copy games dialog:
translate D CopyGames {Kopiere Spiele}
translate D CopyConfirm {
 Mchten sie wirklich die [::utils::thousands $nGamesToCopy]
 Spiele aus dem Filter
 in der Datenbank "$fromName"
 in die Datenbank "$targetName"
 kopieren?
}
translate D CopyErr {Kann Spiele nicht kopieren}
translate D CopyErrSource {Die Quelldatenbank}
translate D CopyErrTarget {Die Zieldatenbank}
translate D CopyErrNoGames {hat keine Spiele im Filter}
translate D CopyErrReadOnly {ist schreibgeschtzt}
translate D CopyErrNotOpen {ist nicht geffnet}

# Colors:
translate D LightSquares {Helle Felder}
translate D DarkSquares {Dunkle Felder}
translate D SelectedSquares {Ausgewhlte Felder}
translate D SuggestedSquares {Zugvorschlagsfelder}
translate D WhitePieces {Weie Steine}
translate D BlackPieces {Schwarze Steine}
translate D WhiteBorder {Weie Umrandung}
translate D BlackBorder {Schwarze Umrandung}

# Novelty window:
translate D FindNovelty {Finde Neuerung}
translate D Novelty {Neuerung}
translate D NoveltyInterrupt {Neuerungensuche abgebrochen}
translate D NoveltyNone {In dieser Partie wurde keine Neuerung gefunden}
translate D NoveltyHelp {
Scid wird den ersten Zug aus der aktuellen Partie finden, welcher zu einer Position fhrt, die nicht in der gewhlten Datenbank oder in dem ECO-Erffnungsbuch enthalten ist.
}

# Sounds configuration:
translate D SoundsFolder {Sounddateien-Verzeichnis}
translate D SoundsFolderHelp {Das Verzeichnis sollte enthalten: King.wav, a.wav, 1.wav etc.}
translate D SoundsAnnounceOptions {Optionen fr Zugankndigung}
	# *** Ist das so gemeint? Ich kann's nicht ausprobieren (keine Soundkarte...).
translate D SoundsAnnounceNew {Kndige neue Zge an, wenn sie ausgefhrt werden}
translate D SoundsAnnounceForward {Knde Zug an beim Vorwrtspielen}
translate D SoundsAnnounceBack {Kndige Zug an beim Zurckgehen}

# Upgrading databases:
translate D Upgrading {Upgrading}
translate D ConfirmOpenNew {
Dies ist eine Datenbank im alten (Scid 3.x) Format, die nicht in Scid 4.x
geffnet werden kann. Aber eine Version im neuen Format wurde schon erstellt.

Wollen Sie die Version der Datenbank im neuen Format ffnen?
}
translate D ConfirmUpgrade {
Dies ist eine Datenbank im alten (Scid 3.x) Format. Vor der Verwendung in
Scid 4 mu eine Version im neuen Format der Datenbank erstellt werden.

Beim Erstellen der neuen Version der Datenbank bleiben die Dateien der alten Version erhalten.

Dieser Vorgang kann eine Zeitlang dauern, mu aber nur einmal durchgefhrt
werden. Sie knnen jederzeit abbrechen, wenn es Ihnen zu lange dauert.

Soll das Erstellen der Datenbank im neuen Format jetzt durchgefhrt werden?
}

# Recent files options:
translate D RecentFilesMenu {Anzahl der aktuellen Dateien im Dateimen}
translate D RecentFilesExtra {Anzahl der aktuellen Dateien im zustzlichen Untermen}

# My Player Names options:
translate D MyPlayerNamesDescription {
Geben Sie unten eine Liste der bevorzugten Spielernamen ein, ein Name pro Zeile. Platzhalterzeichen (z.B. "?" fr ein beliebiges einzelnes Zeichen, "*" fr jede beliebige Folge von Zeichen) sind erlaubt.

Jedesmal, wenn ein Spiel mit einem aufgelisteten Spielernamen geladen wird, wird das Schachbrett im Hauptfenster erforderlichenfalls gedreht, um das Spiel aus der Sicht des betreffenden Spielers zu zeigen.
}
translate D showblunderexists {Enginefehler anzeigen}
translate D showblundervalue {Fehlerwert anzeigen}
translate D showscore {Wert anzeigen}
translate D coachgame {Coach Partie}
translate D configurecoachgame {Trainingspartie konfigurieren}
translate D configuregame {Spiel konfigurieren}
translate D Phalanxengine {Phalanx engine}
translate D Coachengine {Coach Engine}
translate D difficulty {Schwierigkeit}
translate D hard {schwer}
translate D easy {leicht}
translate D Playwith {Spiel mit}
translate D white {Wei}
translate D black {Schwarz}
translate D both {beide}
translate D Play {Spielen}
translate D Noblunder {Kein Fehler}
translate D blunder {Fehler}
translate D Noinfo {-- Keine Info --}
translate D PhalanxOrTogaMissing {Phalanx oder Toga nicht gefunden!}
translate D moveblunderthreshold {fehlerhafter Zug, wenn Verlust grer als}
translate D limitanalysis {Analysezeit der Engine begrenzen}
translate D seconds {Sekunden}
translate D Abort {Abbrechen}
translate D Resume {Fortfahren}
translate D OutOfOpening {Ende der Erffnung}
translate D NotFollowedLine {You did not follow the line}
translate D DoYouWantContinue {Mchten sie fortfahren?}
translate D CoachIsWatching {Coach schaut zu}
translate D Ponder {Berechnen im Hintergrund}
translate D LimitELO {Strke begrenzen (ELO)}
translate D DubiousMovePlayedTakeBack {Zweifelhafter Zug gespielt, wollen Sie ihn zurcknehmen?}
translate D WeakMovePlayedTakeBack {Schacher Zug gespielt, wollen Sie ihn zurcknehmen?}
translate D BadMovePlayedTakeBack {Schlechter Zug gespielt, wollen Sie ihn zurcknehmen?}
translate D Iresign {Ich gebe auf}
translate D yourmoveisnotgood {Ihr Zug ist nicht gut}
translate D EndOfVar {Variantenende}
translate D Openingtrainer {Erffnungstrainer}
translate D DisplayCM {Kandidatenzge anzeigen}
translate D DisplayCMValue {Wert der Kandidatenzge anzeigen}
translate D DisplayOpeningStats {Statistik anzeigen}
translate D ShowReport {Bericht anzeigen}
translate D NumberOfGoodMovesPlayed {gute Zge gespielt}
translate D NumberOfDubiousMovesPlayed {zweischneidige Zge gespielt}
translate D NumberOfMovesPlayedNotInRepertoire {Zge auerhalb des Repertoirs gespielt}
translate D NumberOfTimesPositionEncountered {Wiederholungen der Position}
translate D PlayerBestMove  {Nur beste Zge erlauben}
translate D OpponentBestMove {Gegner spielt besten Zug}
translate D OnlyFlaggedLines {Nur markierte Linien}
translate D resetStats {Statistik zurcksetzen}
translate D Repertoiretrainingconfiguration {Konfiguration Trainingsrepertoire}
translate D Loadingrepertoire {Lade Repertoire}
translate D Movesloaded {Zge geladen}
translate D Repertoirenotfound {Repertoire nicht gefunden}
translate D Openfirstrepertoirewithtype {Zuerst eine Erffnungsdatenbank mit entsprechendem Type/Icon ffnen.}
translate D Movenotinrepertoire {Zug nicht im Repertoire}
translate D PositionsInRepertoire {Positionen im Repertoire}
translate D PositionsNotPlayed {nicht gespielte Positionen}
translate D PositionsPlayed {gespielte Positionen}
translate D Success {Erfolgreich}
translate D DubiousMoves {Zweifelhafte Zge}
translate D OutOfRepertoire {Nicht im Repertoire}
translate D ConfigureTactics {Taktik konfigurieren}
translate D ResetScores {Punkte zurcksetzten}
translate D LoadingBase {Lade Datenbank}
translate D Tactics {Taktik}
translate D ShowSolution {Lsung zeigen}
translate D NextExercise {Nchste Aufgabe}
translate D PrevExercise {Vorherige Aufgabe}
translate D StopTraining {Training beenden}
translate D Next {Nchste}
translate D ResettingScore {Punkte zurcksetzen}
translate D LoadingGame {Lade Partie}
translate D MateFound {Matt gefunden}
translate D BestSolutionNotFound {Beste Lsung NICHT gefunden!}
translate D MateNotFound {Matt nicht gefunden}
translate D ShorterMateExists {Krzeres Matt existiert}
translate D ScorePlayed {Bewertung gepielt}
translate D Expected {erwarted}
translate D ChooseTrainingBase {Trainingsdatenbank auswhlen}
translate D Thinking {Denke...}
translate D AnalyzeDone {Analyse beendet}
translate D WinWonGame {Gewinne gewonnene Partie}
translate D Lines {Variantenzahl}
translate D ConfigureUCIengine {UCI Engine konfigurieren}
translate D SpecificOpening {Ausgewhlte Erffnung}
translate D StartNewGame {Neue Partie}
translate D FixedLevel {Festgelegte Strke}
translate D Opening {Erffnung}
translate D RandomLevel {Zufallsniveau}
translate D StartFromCurrentPosition {Von aktueller Position starten}
translate D FixedDepth {Feste Tiefe}
translate D Nodes {Knoten} 
translate D Depth {Tiefe}
translate D Time {Zeit} 
translate D SecondsPerMove {Sekunden pro Zug}
translate D Engine {Engine}
translate D TimeMode {Zeitmodus}
translate D TimeBonus {Zeit + Bonus}
translate D TimeMin {min}
translate D TimeSec {s}
translate D AllExercisesDone {Alle bungen gemacht}
translate D MoveOutOfBook {Zug nicht mehr im Buch}
translate D LastBookMove {Letzter Buchzug}
translate D AnnotateSeveralGames {Kommentiere mehrere Partien\nvon aktueller bis:}
translate D FindOpeningErrors {Erffnungsfehler finden}
translate D MarkTacticalExercises {Taktische bungen markieren}
translate D UseBook {Buch benutzen}
translate D MultiPV {Multivariantenmodus}
translate D Hash {Hash Speicher}
translate D OwnBook {Engine Buch verwenden}
translate D BookFile {Erffnungsbuch}
translate D AnnotateVariations {Varianten kommentieren}
translate D ShortAnnotations {Kurze Kommentare}
translate D addAnnotatorTag {Kommentar Tag hinzufgen}
translate D AddScoreToShortAnnotations {Bewertung hinzufgen}
translate D Export {Export}
translate D BookPartiallyLoaded {Buch teilweise geladen}
translate D Calvar {Training: Variantenberechnung}
translate D ConfigureCalvar {Konfiguration}
translate D Reti {Reti}
translate D English {Englische Erffnung}
translate D d4Nf6Miscellaneous {1.d4 Nf6 Verschiedene}
translate D Trompowsky {Trompowsky}
translate D Budapest {Budapest}
translate D OldIndian {Altindische Verteidigung}
translate D BenkoGambit {Benko Gambit}
translate D ModernBenoni {Moderne/Benoni-Verteidigung}
translate D DutchDefence {Hollndische Verteidigung}
translate D Scandinavian {Skandinavische Verteidigung}
translate D AlekhineDefence {Aljechin Verteidigung}
translate D Pirc {Pirc-Verteidigung}
translate D CaroKann {Caro-Kann}
translate D CaroKannAdvance {Caro-Kann Vorstovariante}
translate D Sicilian {Sizilianisch}
translate D SicilianAlapin {Sizilianisch, Alapin Variante}
translate D SicilianClosed {Geschlossene Sizilianische Verteidigung}
translate D SicilianRauzer {Sizilianisch, Rauzer Angriff}
translate D SicilianDragon {Sizilianisch, Drachenvariante}
translate D SicilianScheveningen {Sizilianisch, Scheveningen}
translate D SicilianNajdorf {Sizilianisch, Najdorf}
translate D OpenGame {Offene Spiele}
translate D Vienna {Wiener Verteidigung}
translate D KingsGambit {Knigsgambit}
translate D RussianGame {Russische Verteidigung}
translate D ItalianTwoKnights {Italienische Erffnung}
translate D Spanish {Spanisch Partie}
translate D SpanishExchange {Spanisch, Abtauschvariante}
translate D SpanishOpen {Spanisch, offene Systeme}
translate D SpanishClosed {Spanisch, geschlossene Systeme}
translate D FrenchDefence {Franzsische Verteidigung}
translate D FrenchAdvance {Franzsisch, Vorstovariante}
translate D FrenchTarrasch {Franzsisch, Tarrasch}
translate D FrenchWinawer {Franzsisch, Winawer}
translate D FrenchExchange {Franzsisch, Abtauschvariante}
translate D QueensPawn {Damenbauernspiel}
translate D Slav {Slavisch}
translate D QGA {Angenommenes Damengambit}
translate D QGD {Abgelehntes Damengambit}
translate D QGDExchange {Abgelehntes Damengambit, Abtauschvariante}
translate D SemiSlav {Semi-Slawisch}
translate D QGDwithBg5 {Abgelehntes Damengambit mit Lg5}
translate D QGDOrthodox {Abgelehntes Damengambit, Orthodoxe Variante}
translate D Grunfeld {Grnfeld-Verteidigung}
translate D GrunfeldExchange {Grnfeld, Abtauschvariante}
translate D GrunfeldRussian {Grnfeld-Verteidigung, Russische Variante}
translate D Catalan {Katalanische Verteidigung}
translate D CatalanOpen {Katalanisch, offen}
translate D CatalanClosed {Katalanisch, geschlossen}
translate D QueensIndian {Dameninsche Verteidigung}
translate D NimzoIndian {Nimzoindische Verteidigung}
translate D NimzoIndianClassical {Nimzoindisch, Klassische Variante}
translate D NimzoIndianRubinstein {Nimzoinsisch, Rubinstein}
translate D KingsIndian {Knigsindische Verteidigung}
translate D KingsIndianSamisch {Knigsinsisch, Smisch}
translate D KingsIndianMainLine {Knigsinsisch, Hauptvariante}
translate D ConfigureFics {FICS Konfigurieren}
translate D FICSGuest {Gastlogin}
translate D FICSServerPort {Serverport}
translate D FICSServerAddress {IP Adresse}
translate D FICSRefresh {Aktualisieren}
translate D FICSTimesealPort {Timeseal Port}
translate D FICSSilence {Konsolenfilter}
translate D FICSOffers {Herausforderungen}
translate D FICSConsole {Konsole}
translate D FICSGames {laufende Partien}
translate D FICSUnobserve {Beobachtung abbrechen}
translate D FICSProfile {Eigenes Profil ausgeben}
translate D FICSRelayedGames {bertragene Partien}
translate D FICSFindOpponent {Gegner suchen}
translate D FICSTakeback {Zurcknehmen}
translate D FICSTakeback2 {2 zurcknehmen}
translate D FICSInitTime {Zeit (min)}
translate D FICSIncrement {Inkrement (s)}
translate D FICSRatedGame {Wertungspartie}
translate D FICSAutoColour {automatisch}
translate D FICSManualConfirm {manuell besttigen}
translate D FICSFilterFormula {Filterformel anwenden}
translate D FICSIssueSeek {Partie anbieten}
translate D FICSChallenge {Herausfordern}
translate D FICSAccept {Annehmen}
translate D FICSDecline {Ablehnen}
translate D FICSColour {Seite whlen:}
translate D FICSSend {senden}
translate D FICSConnect {Verbinden}
translate D FICSdefaultuservars {Standardvariablen verwenden}
translate D FICSObserveconfirm {Besttige Beobachtung der Partie}
translate D GameReview {Partieanalyse}
translate D GameReviewTimeExtended {Lange Bedenkzeit}
translate D GameReviewMargin {Fehlergrenze}
translate D GameReviewAutoContinue {Bei korrektem Zug Automatisch weiter}
translate D GameReviewReCalculate {Verwende lange Bedenkzeit}
translate D GameReviewAnalyzingMovePlayedDuringTheGame {Analysiere den Partiezug}
translate D GameReviewAnalyzingThePosition {Analysiere Stellung}
translate D GameReviewEnterYourMove {Zug eingeben}
translate D GameReviewCheckingYourMove {berprfe Antwort}
translate D GameReviewYourMoveWasAnalyzed {Antwort wurde analysiert}
translate D GameReviewYouPlayedSameMove {Identischer Zug zur Partie}
translate D GameReviewScoreOfYourMove {Wertung des Antwortzuges}
translate D GameReviewGameMoveScore {Wertung des Partiezuges}
translate D GameReviewEngineScore {Bewertung der Engine}
translate D GameReviewYouPlayedLikeTheEngine {Antworzug wie Engine}
translate D GameReviewNotEngineMoveButGoodMove {Nicht der Computerzug, aber ebenfalls ein guter Zug!}
translate D GameReviewMoveNotGood {Dieser Zug ist nicht gut. Bewertung:}
translate D GameReviewMovesPlayedLike {Zge gespielt wie Partie}
translate D GameReviewMovesPlayedEngine {Zge wie Computer gespielt}

# Correspondence Chess Dialogs:
translate D CCDlgConfigureWindowTitle {Einstellungen fr Fernschach}
translate D CCDlgCGeneraloptions {Allgemeine Einstellungen}
translate D CCDlgDefaultDB {Standarddatenbank:}
translate D CCDlgInbox {Posteingang (Pfad):}
translate D CCDlgOutbox {Postausgang (Pfad):}
translate D CCDlgXfcc {Xfcc Einstellungen:}
translate D CCDlgExternalProtocol {Externe Protokolle (Xfcc)}
translate D CCDlgFetchTool {Hilfsprogramm zum Abholen:}
translate D CCDlgSendTool {Hilfsprogramm zum Senden:}
translate D CCDlgEmailCommunication {eMail Kommunikation}
translate D CCDlgMailPrg {eMail Programm:}
translate D CCDlgBCCAddr {Adresse fr Ausgangskopie:}
translate D CCDlgMailerMode {Modus:}
translate D CCDlgThunderbirdEg {z. B. Thunderbird, Mozilla Mail, Icedove...}
translate D CCDlgMailUrlEg {z. B. Evolution}
translate D CCDlgClawsEg {z. B. Sylpheed Claws}
translate D CCDlgmailxEg {z. B. mailx, mutt, nail...}
translate D CCDlgAttachementPar {Parameter fr Anhang:}
translate D CCDlgInternalXfcc {Interne Xfcc-Untersttzung verwenden}
translate D CCDlgConfirmXfcc {Zge besttigen}
translate D CCDlgSubjectPar {Parameter fr Betreff:}
translate D CCDlgDeleteBoxes {Leeren des Postein- und Ausgangs}
translate D CCDlgDeleteBoxesText {Wollen Sie wirklich Ihren Postein- und Ausgang leeren?\nDies erfordert ein erneutes Synchronisieren zum den aktuellen Zustand Ihrer Partien anzuzeigen.}
translate D CCDlgConfirmMove {Zug besttigen}
translate D CCDlgConfirmMoveText {Durch besttigen wird folgender Zug und Kommentar an den Server bertragen:}
translate D CCDlgDBGameToLong {Inkonsistente Hauptvariante}
translate D CCDlgDBGameToLongError {Die Hauptvariante dieser Partie in der Datenbank enthlt mehr Zge als in der Partie tatschlich gespielt. Sofern die Partie im Posteingang vollstndig und aktuell ist (z. B. direkt nach einer Synchronisation) mu die Hauptvariante in der Datenbank ensprechend gekrzt werden. Der letzte Zug in der Partie ist Nr. \n}
translate D CCDlgStartEmail {Neue eMail Partie}
translate D CCDlgYourName {Ihr Name:}
translate D CCDlgYourMail {Ihre eMail Adresse:}
translate D CCDlgOpponentName {Name des Gegners:}
translate D CCDlgOpponentMail {eMail Adresse des Gegners:}
translate D CCDlgGameID {Partiekennung (eineindeutig):}
translate D CCDlgTitNoOutbox {Scid: Fernschach Postausgang}
translate D CCDlgTitNoInbox {Scid: Fernschach Posteingang}
translate D CCDlgTitNoGames {Scid: Keine Fernschachpartien}
translate D CCErrInboxDir {Der Posteingang fr Fernschachpartien unter:}
translate D CCErrOutboxDir {Der Postausgang fr Fernschachpartien unter:}
translate D CCErrDirNotUsable {existiert nicht oder ist nicht benutzbar!\nBitte berprfen und die Einstellungen korrigieren.}
translate D CCErrNoGames {enthlt keine Partien!\nBitte sychronisieren Sie zunchst.}

translate D CCDlgTitNoCCDB {Scid: Keine Fernschach-Datenbank}
translate D CCErrNoCCDB {Es wurde keine Datenbank vom Typ 'Fernschach' geffnet. Bitte ffen Sie eine solche bevor Sie Funktionen des Fernschachmoduls benutzen.}
translate D CCFetchBtn {Partien vom Server abholen\nund Inbox bearbeiten}
translate D CCPrevBtn {Vorhergehende Partie}
translate D CCNextBtn {Nchste Partie}
translate D CCSendBtn {Zug versenden}
translate D CCEmptyBtn {Postein- und ausgang leeren}
translate D CCHelpBtn {Hilfe zu den Icons und Statusindikatoren\nFr allgemeine Hilfe bitte F1!}
translate D CCDlgServerName {Server Name:}
translate D CCDlgLoginName  {Login Name:}
translate D CCDlgPassword   {Pawort:}
translate D CCDlgURL        {Xfcc-URL:}
translate D CCDlgRatingType {Wertungszahl:}
translate D CCDlgDuplicateGame {Nichteindeutige Partie}
translate D CCDlgDuplicateGameError {Diese Partie existiert mehr als einmal in der Datenbank. Bitte lschen Sie alle Doubletten und komprimieren Sie die Datenbank (Datei/Wartung/Datenbank komprimieren).}
translate D CCDlgSortOption {Sortierung:}
translate D CCDlgListOnlyOwnMove {Partien mit anhngigen Zgen}
translate D CCOrderClassicTxt {Ort, Turnier, Runde, Ergebnis, Wei, Schwarz}
translate D CCOrderMyTimeTxt {Eigene Bedenkzeit}
translate D CCOrderTimePerMoveTxt {Zeit pro Zug bis zur nchsten Zeitkontrolle}
translate D CCOrderStartDate {Startdatum}
translate D CCOrderOppTimeTxt {Gegnerische Bedenkzeit}
translate D CCDlgConfigRelay {Partien auf iccf-webchess beobachten}
translate D CCDlgConfigRelayHelp {Besuchen Sie http://www.iccf-webchess.com und lassen Sie die Partie anzeigen, die Sie beobachten wollen. Wenn das Brett sichtbar ist bitte die Adresse aus dem Browser in untenstehende Liste kopieren. Nur eine URL pro Zeile!\nBeispiel: http://www.iccf-webchess.com/MakeAMove.aspx?id=266452}
translate D ExtHWConfigConnection {Hardware Konfigurieren}
translate D ExtHWPort {Schnittstelle}
translate D ExtHWEngineCmd {Engine Kommando}
translate D ExtHWEngineParam {Engine Parameter}
translate D ExtHWShowButton {Knopf in Werzeugleiste anzeigen}
translate D ExtHWHardware {Hardware}
translate D ExtHWNovag {Novag Citrine}
translate D ExtHWInputEngine {Input Engine}
translate D ExtHWNoBoard {Kein Brett verbunden}
translate D NovagReferee {Nur Zge aufzeichnen}
translate D IEConsole {Input Engine Konsole}
translate D IESending {Sende Zge fr}
translate D IESynchronise {Synchronisieren}
translate D IERotate  {Brett drehen}
translate D IEUnableToStart {Input Engine konnte nicht gestartet werden:}
translate D DoneWithPosition {Positionsbearbeitung beendet}
translate D Board {Brett}
translate D showGameInfo {Partieinformation anzeigen}
translate D autoResizeBoard {Brettgre automatisch berechnen}
translate D DockTop {Nach oben}
translate D DockBottom {Nach unten}
translate D DockLeft {Nach links}
translate D DockRight {Nach rechts}
translate D Undock {Fenster befreien}
translate D ChangeIcon {Symbol ndern...}
}

##########
#
# ECO Opening name translations:

translateECO D {
  Accelerated {, Beschleunigt}
  {: Accelerated} Beschleunigt
  Accepted {, Angenommen}
  {: Accepted} Angenommen
  Advance Vorsto
  {as Black} {mit Schwarz}
  Attack Angriff
  Bishop Lufer
  Bishop's Lufer
  Classical Klassisch
  Closed Geschlossen
  {Closed System} {Geschlossenes System}
  Counterattack Gegenangriff
  Countergambit Gegengambit
  Declined {, Abgelehnt}
  Defence Verteidigung
  deferred verzgert
  Deferred {, verzgert}
  Early Frhe
  Exchange Abtausch
  Game Partie
  Improved verbessert
  King's Knigs
  Knight Springer
  Line Variante
  {Main Line} Hauptvariante
  Open Offen
  Opening Erffnung
  Queen's Damen
  Queenswap Damentausch
  Symmetrical Symmetrisch
  Variation Variante
  Wing Flgel
  with mit
  without ohne

  Alekhine Aljechin
  Averbakh Awerbach
  Botvinnik Botwinnik
  Chigorin Tschigorin
  Polugaevsky Polugajewski
  Rauzer Rauser
  Sveshnikov Sweschnikow

  Austrian sterreichisch
  Berlin Berliner
  Bremen Bremer
  Catalan Katalanisch
  Czech Tschechisch
  Dutch Hollndisch
  English Englisch
  French Franzsisch
  Hungarian Ungarisch
  Indian Indisch
  Italian Italienisch
  Latvian Lettisch
  Meran Meraner
  Moscow Moskau
  Polish Polnisch
  Prague Prager
  Russian Russisch
  Scandinavian Skandinavisch
  Scheveningen Scheveninger
  Scotch Schottisch
  Sicilian Sizilianisch
  Slav Slawisch
  Spanish Spanisch
  Swedish Schwedisch
  Swiss Schweizer
  Vienna Wiener
  Yugoslav Jugoslawisch

  {Accelerated Fianchetto} {Beschleunigtes Fianchetto}
  {Accelerated Pterodactyl} {Beschleunigter Pterodactylus}
  {Alekhine Defence} Aljechin-Verteidigung
  {Alekhine Variation} Aljechin-Variante
  {Alekhine: Smisch Attack} {Aljechin: Wiener System (Smisch-Angriff)}
  {Anderssen Opening} Anderssen-Erffnung
  {Anti-King's Indian} Anti-Knigsindisch
  {Austrian Attack} {sterreichischer Angriff}
  {Benko Gambit} Wolga-Gambit
  {Benko Opening} Benk-Erffnung
  {Berlin Defence} {Berliner Verteidigung}
  Chameleon Chamleon
  Chelyabinsk Tscheljabinsk
  {Classical Defence} {Klassische Verteidigung}
  {Spanish: Classical Defence} {Spanisch: Klassische (Cordel-) Verteidigung}
  {Classical Exchange} {Klassischer Abtausch}
  {Classical Variation} {Klassische Variante}
  {Closed Berlin} {Geschlossener Berliner}
  {Open Berlin} {Offener Berliner}
  {Bird's,} {Bird,}
  {Bird's Defence} Bird-Verteidigung
  {Bird's Deferred} {Verzgerte Bird}
  {Bishop's Opening} Luferspiel
  {Botvinnik System} Botwinnik-System
  {Central Variation} Zentralvariante
  {Centre Attack} Zentrumsangriff
  {Centre Game} Mittelgambit
  {Danish Gambit} {Nordisches Gambit}
  Dragon Drachen
  {Dutch Variation} {Hollndische Variante}
  {Early Exchange} {Frher Abtausch}
  {Early Queenswap} {Frher Damentausch}
  {English Attack} {Englischer Angriff}
  {English: King's} {Englisch: Knigsbauer}
  {English Variation} {Englische Variante}
  {Englund Gambit} Englund-Gambit
  {Exchange Variation} Abtauschvariante
  {Fianchetto Variation} Fianchettovariante
  {Flohr Variation} Flohr-Variante
  {Four Knights} Vierspringer
  {Four Knights Game} Vierspringerspiel
  {Four Pawns} Vierbauern
  {Four Pawns Attack} Vierbauernangriff
  {French Variation} {Franzsische Variante}
  {From Gambit} {Froms Gambit}
  {Goring Gambit} {Gring-Gambit}
  {Grob Gambit} {Grobs Gambit}
  {Hungarian Defence} {Ungarische Verteidigung}
  {Indian Variation} {Indische Variante}
  {Italian Game} {Italienische Partie}
  KGD {Abgel. Knigsgambit}
  {Classical KGD} {Klassisches abgelehntes Knigsgambit}
  {Keres Variation} Keres-Variante
  KGA {Angen. Knigsgambit}
  {KGA: Bishop's Gambit} Knigslufergambit
  {KGA: King's Knight Gambit} Knigsspringergambit
  {King's Gambit} Knigsgambit
  {King's Gambit Accepted} {Angen. Knigsgambit}
  {King's Gambit Accepted (KGA)} {Angen. Knigsgambit}
  {King's Indian} Knigsindisch
  KIA {Knigsindischer Angriff}
  {King's Knight Gambit} Knigsspringergambit
  {King's Pawn} Knigsbauer
  {Lasker Variation} {Lasker-Variante}
  {Latvian Gambit} {Lettisches Gambit}
  {Maroczy Bind} {Maroczy-Aufbau}
  {Marshall Variation} Marshall-Variante
  {Modern Attack} {Moderner Angriff}
  {Modern Steinitz} {Moderne Steinitz}
  {Modern Variation} {Moderne Variante}
  {Moscow Variation} {Moskauer Variante}
  Nimzo-Indian Nimzoindisch
  {Old Benoni} {Klassisches Benoni}
  {Old Indian} Altindisch
  {Old Indian Attack} {Altindisch i.A.}
  {Old Steinitz} Steinitz-Verteidigung
  {Open Game} {Offene Partie}
  {Poisoned Pawn} {Vergifteter Bauer}
  {Polish Variation} {Polnische Variante}
  {Polugaevsky Variation} {Polugajewski-Variante}
  {Queen's Gambit} Damengambit
  {Queen's Gambit Accepted} {Angen. Damengambit}
  QGA {Angen. Damengambit}
  {Queen's Gambit Accepted (QGA)} {Angenommenes Damengambit}
  {Reversed QGA} {Angen. Damengambit i.A.}
  QGD {Abgel. Damengambit}
  {Queen's Gambit Declined (QGD)} {Abgelehntes Damengambit}
  {Reversed QGD} {Abgel. Damengambit i.A.}
  {Queen's Indian} Damenindisch
  {Queen's Pawn} Damenbauer
  {Queen's Pawn Game} Damenbauerspiel
  {Reversed Slav} {Slawisch i.A.}
  {Rubinstein Variation} Rubinstein-Variante
  {Russian Game} {Russische Partie}
  {Russian Game (Petroff Defence)} {Russische Partie}
  {Russian-Three Knights Game} {Russisches Dreispringerspiel}
  {Scandinavian (Centre Counter)} Skandinavisch
  Schliemann Jnisch
  {Schliemann (Jnisch)} {Jnisch-Gambit (Schliemann)}
  {Scotch Opening} {Schottische Erffnung}
  {Sicilian Defence} {Sizilianische Verteidigung}
  {Sicilian Variation} {Sizilianische Variante}
  {Slav Defence} {Slawische Verteidigung}
  Smith-Morra Morra
  {Smith-Morra Accepted} {Angenommenes Morra-Gambit}
  {Smith-Morra Gambit} Morra-Gambit
  {Spanish (Ruy Lopez)} {Spanische Partie}
  {Start position} Ausgangsstellung
  {Steinitz Deferred} Rubinstein-Aufbau
  {Swedish Variation} {Schwedische Variante}
  {Swiss Variation} {Schweizer Variante}
  {Tarrasch's Gambit} {Tarrasch-Gambit}
  {Three Knights} Dreispringer
  {3 Knights} Dreispringer
  {Three Knights Game} Dreispringerspiel
  {Three Pawns Attack} Dreibauernangriff
  {Two Knights} Zweispringer
  {Two Knights Defence} Zweispringer-Verteidigung
  {Two Knights Variation} Zweispringer-Variante
  {Two Pawns} Zweibauern
  {Two Pawns Attack} Zweibauernangriff
  {Wing Gambit} Flgel-Gambit
  {Yugoslav Attack} {Jugoslawischer Angriff}
}


############################################################
#
# German help pages:


##########
# Contents
#
set helpTitle(D,Contents) "Inhaltsverzeichnis"
set helpText(D,Contents) {<h1>Inhaltsverzeichnis Scid-Hilfe</h1>


<h4>Start und allgemeine Hilfe</h4>
<ul>
<li><a Guide><b>Kurzanleitung</b> Benutzung von Scid</a> <red>(Zuerst lesen!)</red></li>
<li><a Hints><b>Hinweise</b> zum effizienteren Arbeiten mit Scid</a></li>
<li><a MainWindow>Das Scid-<b>Hauptfenster</b></a></li>
<li><a Menus>Die Scid-<b>Mens</b></a><red>(Aktualisiert!)</red></li>
<li><a Moves><b>Zge</b> eingeben</a></li>
<li><a Searches><b>Suchen</b> in Scid</a></li>
<li><a Clipbase>Die <b>Ablage</b>-Datenbank</a></li>
<li><a Annotating>Partien <b>kommentieren</b></a> </li>
</ul>

<h4>Andere Scid-Fenster</h4>
<ul>
<li><a Analysis><b>Analyse</b>-Fenster</a></li>
<li><a Reports><b>Berichte</b></a> </li>
<li><a Book><b>Buch</b>-Fenster</a><red>(Neu!)</red></li>
<li><a Finder><b>Dateifinder</b>-Fenster</a></li>
<li><a Switcher><b>Datenbank-Umschalter</b></a></li>
<li><a Email><b>E-Mail</b>-Schach-Manager</a></li>
<li><a TB><b>Endspieltabellen</b> in Scid verwenden</a> </li>
<li><a PTracker><b>Figurenverteilung</b></a></li>
<li><a Graphs><b>Grafik</b>-Fenster</a><red>(Aktualisiert!)</red></li>
<li><a Comment><b>Kommentareditor</b></a></li>
<li><a Crosstable><b>Kreuztabellen</b>-Fenster</a></li>
<li><a GameList><b>Partieliste</b>-Fenster</a></li>
<li><a Import><b>Partie-Import</b>-Fenster</a></li>
<li><a PGN><b>PGN</b> (Partietext)-Fenster</a></li>
<li><a Repertoire><b>Repertoire-Editor</b></a></li>
<li><a PList><b>Spielerfinder</b></a></li>
<li><a PInfo><b>Spieler-Information</b></a></li>
<li><a TacticalGame><b>Trainingspartie</b>-Fenster</a><red>(Neu!)</red></li>
<li><a CalVar><b>Training Varianten berechnen</b>-Fenster</a><red>(Neu!)</red></li>
<li><a OpeningTrainer><b>Erffnungstrainer</b>-Fenster</a><red>(Neu!)</red></li>
<li><a Tmt><b>Turnierfinder</b></a></li>
<li><a Tree><b>Zugbaum</b>-Fenster</a></red></li>
</ul>

<h4>Weitere Hilfsprogramme und Informationen</h4>
<ul>
<li><a Maintenance><b>Datenbank-Wartung</b></a></li>
<li><a Sorting>Datenbank<b> sortieren</b></a></li>
<li><a Compact>Datenbank<b> komprimieren</b></a></li>
<li><a ECO><b>ECO</b>-Erffnungsklassifikation</a></li>
<li><a EPD><b>EPD</b>-Dateien</a></li>
<li><a Correspondence><b>Fernschach</b></a></li>
<li><a Export>Partien in Textdateien <b>exportieren</b></a></li>
<li><a Cmdline><b>Kommandozeilen</b>-Optionen</a></li>
<li><a LaTeX>Scid und <b>LaTeX</b></a> </li>
<li><a Bookmarks><b>Lesezeichen</b></a></li>
<li><a Flags>Partie-<b>Markierungen</b> (Flags)</a></red></li>
<li><a Options><b>Optionen</b> und Prferenzen</a></li>
<li><a Pgnscid><b>Pgnscid</b>: PGN-Dateien konvertieren</a></li>
<li><a NAGs><b>NAG</b>-Standard-Kommentarwerte</a></li>
<li><a Formats>Scids Datenbank-<b>Dateiformate</b></a></li>
<li><a Author>Kontakt-Information</a></li>
</ul>

<p><footer>(Aktualisiert: Scid 3.6.23, Mrz 2008)</footer></p>
}


###############
### Topic Index

set helpTitle(D,Index) "Hilfe-Index"
set helpText(D,Index) {<h1>Scid: Hilfe-Index</h1>

<h3>A</h3>
<ul>
<li><a Clipbase>Ablage-Datenbank</a></li>
<li><a Analysis List>Analyse-Engines, Liste der</a></li>
<li><a Analysis>Analysefenster</a></li>
<li><a MainWindow Autoplay>Automatisches Vorspielen</a></li>
<li><a Author>Autor, Kontaktaufnahme</a></li>
</ul>

<h3>B</h3>
<ul>
<li><a Menus Edit>Bearbeiten-Men</a></li>
<li><a Maintenance Cleaner>Bereiniger</a></li>
<li><a Tree Best>Beste Partien</a></li>
<li><a Graphs Rating>Bewertungsgraph</a></li>
<li><a GameList Browsing>Blttern in Partien</a></li>
<li><a Searches Board>Brettsuche</a></li>
</ul>

<h3>D</h3>
<ul>
<li><a Finder>Dateifinder</a></li>
<li><a Formats>Dateiformate</a></li>
<li><a Menus File>Datei-Men</a></li>
<li><a Formats>Datenbank-Dateiformate</a></li>
<li><a Compact>Datenbank-Komprimierung</a></li>
<li><a Sorting>Datenbank sortieren</a></li>
<li><a Switcher>Datenbank-Umschalter</a></li>
<li><a Maintenance>Datenbank-Wartung</a></li>
<li><a Maintenance Twins>Dubletten (doppelte Partien)</a></li>
</ul>

<h3>E</h3>
<ul>
<li><a ECO Browser>ECO-Auswertung</a></li>
<li><a ECO Codes>ECO-Codesystem</a></li>
<li><a ECO>ECO-Erffnungsklassifikation</a></li>
<li><a Email>E-Mail</a></li>
<li><a CCeMailChess>Email Schach</li>
<li><a TB>Endspieltabellen</a></li>
<li><a EPD>EPD-Dateien</a></li>
<li><a Reports Opening>Erffnungsbericht</a></li>
<li><a ECO>Erffnungsklassifizierung (ECO)</a></li>
<li><a Repertoire>Erffnungsrepertoire</a></li>
<li><a Export>Exportieren, Partien in Textdateien</a></li>
</ul>

<h3>F</h3>
<ul>
<li><a Menus Windows>Fenster-Men</a></li>
<li><a Correspondence><b>Fernschach</b></a></li>
<li><a CCIcons><b>Fernschach Statusanzeigen</b></a></li>
<li><a PTracker>Figurenverteilungs-Fenster</a></li>
<li><a Searches Filter>Filter</a></li>
<li><a Export>Filter, exportieren</a></li>
<li><a Graphs Filter>Filtergrafik</a></li>
</ul>

<h3>G</h3>
<ul>
<li><a Graphs>Grafikfenster</a></li>
</ul>

<h3>H</h3>
<ul>
<li><a MainWindow>Hauptfenster</a></li>
<li><a Menus Help>Hilfe-Men</a></li>
<li><a Hints>Hinweise</a></li>
</ul>

<h3>I</h3>
<ul>
<li><a Import>Importieren</a></li>
<li><a Contents>Inhaltsverzeichnis</a></li>
</ul>

<h3>K</h3>
<ul>
<li><a Cmdline>Kommandozeilen-Optionen</a></li>
<li><a Comment>Kommentareditor</a></li>
<li><a NAGs>Kommentarzeichen</a></li>
<li><a Annotating>Kommentieren</a></li>
<li><a Compact>Komprimieren (Datenbank)</a></li>
<li><a Author>Kontaktinformation</a></li>
<li><a Crosstable>Kreuztabellen</a></li>
<li><a Guide>Kurzanleitung fr Scid</a></li>
</ul>

<h3>L</h3>
<ul>
<li><a LaTeX>LaTeX</a>-Ausgabeformat</li>
<li><a Bookmarks>Lesezeichen</a></li>
<li><a Maintenance Twins>Lschen, Dubletten</a></li>
</ul>

<h3>M</h3>
<ul>
<li><a Flags>Markierungen</a></li>
<li><a Searches Material>Material-/Muster-Suche</a></li>
<li><a Menus>Mens</a></li>
</ul>

<h3>N</h3>
<ul>
<li><a NAGs>NAG-Kommentarwerte</a></li>
<li><a Maintenance Editing>Namen bearbeiten</a></li>
<li><a Maintenance Spellcheck>Namen, Schreibweisen</a></li>
<li><a Annotating Null>Nullzge</a></li>
</ul>

<h3>O</h3>
<ul>
<li><a Options>Optionen</a></li>
</ul>

<h3>P</h3>
<ul>
<li><a Searches Header>Partiedaten-Suche</a></li>
<li><a GameList>Partielisten</a></li>
<li><a Flags>Partie-Markierungen</a></li>
<li><a Menus Game>Partie-Men</a></li>
<li><a PGN>PGN-Fenster</a></li>
<li><a Pgnscid>Pgnscid</a></li>
</ul>

<h3>R</h3>
<ul>
<li><a Repertoire>Repertoire-Editor</a></li>
</ul>

<h3>S</h3>
<ul>
<li><a Moves>Schachzge eingeben</a></li>
<li><a Maintenance Spellcheck>Schreibkorrektur von Namen</a></li>
<li><a Sorting>Sortieren einer Datenbank</a></li>
<li><a Reports Player>Spielerbericht</a></li>
<li><a PInfo>Spielerinformation</a></li>
<li><a PList>Spielersuche</a></li>
<li><a CCIcons><b>Statusanzeigen im Fernschachfenster</b></a></li>
<li><a Searches>Suchen</a></li>
<li><a Menus Search>Suchen-Men</a></li>
<li><a Searches Filter>Such-Filter</a></li>
</ul>

<h3>T</h3>
<ul>
<li><a Moves Trial>Testmodus</a></li>
<li><a Tmt>Turnierfinder</a></li>
<li>Training</li>
<ul>
<li><a OpeningTrainer>Erffnungstrainer</a></li>
<li><a CalVar>Varianten berechnen</a></li>
</ul>
</ul>

<h3>V</h3>
<ul>
<li><a Annotating Vars>Varianten</a></li>
</ul>

<h3>W</h3>
<ul>
<li><a Maintenance>Wartung</a></li>
<li><a Menus Tools>Werkzeug-Men</a></li>
</ul>

<h3>X</h3>
<ul>
<li><a CCXfcc>Xfcc-Untersttzung</a></li>
</ul>

<h3>Z</h3>
<ul>
<li><a Options Fonts>Zeichenstze</a></li>
<li><a Tree>Zugbaumfenster</a></li>
<li><a Moves>Zge eingeben</a></li>
<li><a GameList Browsing>Zusammenfhren, Partien</a></li>
</ul>

<p><footer>(Aktualisiert: Scid 3.6.23, Mrz 2008)</footer></p>
}


###############
### Quick guide

set helpTitle(D,Guide) "Kurzanleitung zur Benutzung von Scid"
set helpText(D,Guide) {<h1>Kurzanleitung zur Benutzung von Scid</h1>
<p>
Scid ist eine Schachdatenbank, mit welcher man Partiesammlungen
nach einer Vielzahl von Kriterien durchsuchen kann, Partien editieren
und mit Hilfe von Xboard/Winboard-kompatiblen Schachprogrammen
analysieren kann.
</p>
<p>
Scid benutzt ein eigenes, spezielles Drei-Dateien-Datenbankformat,
welches sehr schnell und kompakt ist, aber es kann auch das PGN-
(Portable Game Notation) Format lesen und schreiben. Scids
<a PGN>PGN-Fenster</a> zeigt die Notation der aktuellen Partie im
PGN-Format.
</p>
<p>
Man kann in Scid Partien zur Datenbank hinzufgen, mit Hilfe
der Tastatur oder der Maus. Mehr Details unter der Hilfeseite fr
<a Moves>Zugeingabe</a>.
</p>
<p>
Man kann mit Scid auch <a PGN>PGN</a> - Partiesammlungen bearbeiten:
durch Import der PGN-Datei in Scids - <a Import>Import</a> Fenster
oder direkt durch ffnen von PGN-Dateien in Scid. Jedoch: PGN - Dateien
knnen nicht in Scid bearbeitet werden (sie werden schreibgeschtzt
geffnet), und auerdem benutzen sie mehr Speicher und
werden langsamer geladen. Fr groe PGN - Partiesammlungen
wird empfohlen, sie mit Hilfe des Scid-Programms <a Pgnscid>pgnscid</a>
in eine Scid-Datenbank umzuwandeln (dabei bleibt die PGN-Datei erhalten).
</p>
<p>
Das <a MainWindow>Hauptfenster</a> von Scid (mit dem grafischen
Schachbrett) zeigt Details der aktuellen Partie und Datenbank. Man
kann zu gleicher Zeit bis zu vier Datenbanken geffnet haben (fnf
inklusive der <a Clipbase>Ablage-Datenbank</a>), und jede hat eine
eigene aktuelle Partie. (Die Partie mit der Nr. 0 dient zu Eingabe
einer neuen Partie und ist nicht Bestandteil der Datenbank).
Man kann zwischen den offenen Datenbanken im
<a Menus File>Datei-Men</a> umschalten.
</p>
<p>
Fr zustzliche Information lesen Sie bitte die anderen
Hilfe-Seiten, die im <a Index>Index</a> aufgefhrt sind.
</p>
<p>
<a Author>Kontaktinformationen ber den Autor von Scid</a> findet man in
der entsprechenden Hilfeseite.
</p>

<p><footer>(Aktualisiert: Scid 3.1, Dezember 2001)</footer></p>
}


###############
### Hints page:

set helpTitle(D,Hints) "Scid Hinweise"
set helpText(D,Hints) {<h1>Scid Hinweise</h1>
<p>
Diese Seite enthlt einige ntzliche Hinweise in Form von Fragen und
Antworten, um Ihnen zu helfen, Scids Fhigkeiten besser zu nutzen.
Wenn Sie das erste Mal mit Scid arbeiten, lesen Sie bitte zuerst die
<a Guide>Kurzanleitung</a> zur Benutzung von Scid.
Die meisten Informationen auf dieser Seite finden Sie detailliert auf
den anderen Hilfeseiten, die im <a Index>Hilfe-Index</a>
aufgefhrt sind.
Falls Sie einen ntzlichen Hinweis haben, der dieser Seite hinzugefgt
werden sollte, senden Sie ihn bitte (in Englisch) an den
<a Author>Autor von Scid</a>.
</p>

<h4>Kann Scid eine Datenbank automatisch beim Start laden?</h4>
<p>
Ja, Sie knnen Datenbanken, PGN-Dateien oder <a EPD>EPD-Dateien</a>
in der Kommandozeile angeben. Beispiel:
<ul>
<li> <b>scid  datenbank  partien.pgn.gz</b></li>
</ul>
ldt die Scid-Datenbank <b>datenbank</b> und gleichzeitig
die mit gzip komprimierte PGN-Datei <b>partien.pgn.gz</b>.
</p>

<h4>Gibt es eine leichtere Mglichkeit, die Brettgre
zu ndern, als ber das Optionen-Men?</h4>
<p>
Ja, Sie knnen mit den Tastenkombinationen <b>Control+Shift+LeftArrow</b>
und <b>Control+Shift+RightArrow</b> das Brett verkleinern bzw. vergrern.
</p>

<h4>Wenn ich trainiere, indem ich eine Partie nachspiele, mchte ich
nicht, da Scid den nchsten Zug im Informationsbereich anzeigt.
Kann ich ihn verstecken?</h4>
<p>
Sie knnen den nchsten Zug verstecken, indem Sie die <b>rechte</b>
Maustaste im Informationsbereich drcken und im darauf erscheinenden
Men <b>Verstecke nchsten Zug</b> auswhlen.
</p>

<h4>Wie kann ich den ECO-Erffnungsschlssel der aktuellen Position
ermitteln?</h4>
<p>
Der ECO-Schlssel wird in der letzten Zeile des Informationsbereichs
angezeigt, unterhalb des Schachbretts im <a MainWindow>Hauptfenster</a>,
wenn Sie die ECO-Datei (<b>scid.eco</b>) geladen haben.<br>
Auf der <a ECO>ECO-Code</a> Hilfeseite wird erklrt, wie man die ECO-Datei
ldt und die Optionen so einstellt, da sie jedesmal beim Programmstart
geladen wird.
</p>

<h4>Beim Eingeben einer Partie bin ich gerade beim 30. Zug, als ich
bemerke, da der 10. Zug falsch eingegeben wurde. Wie kann ich ihn
korrigieren und dabei alle nachfolgenden Zge erhalten?</h4>
<p>
Sie knnen das im <a Import>Import</a>-Fenster tun; siehe die Hilfeseite
<a Moves Mistakes>Zugeingabe</a> fr weitere Informationen.
</p>

<h4>Wie kopiere ich Partien von einer Datenbank in die andere?</h4>
<p>
Im <a Switcher>Datenbank-Umschalterfenster</a>: kopieren Sie alle
Dateien im Datenbank-<a Searches Filter>Filter</a>, indem Sie sie mit
der Maus von einer Datenbank in die andere ziehen.
</p>

<h4>Jedesmal, wenn ich einen bereits vorhandenen Zug eingebe, erhalte
ich ein "Zug ersetzen?"-Dialogfenster. Wie kann ich das verhindern?</h4>
<p>
Schalten Sie es aus mit der Option <b>Fragen vor Ersetzen</b> im Men
<menu>Optionen: Zge</menu>.
Oder gewhnen Sie sich an, Zge mit der rechten Maustaste zurckzunehmen,
die jeweils den letzen Zug der Partie entfernt, wenn Sie sich
am Partiende befinden.
</p>

<h4>Wie ndere ich die Spaltenbreite im Partielistenfenster?</h4>
<p>
Klicken Sie die jeweilige Spaltenberschrift mit der linken oder
rechten Maustaste an und whlen Sie <b>Konfigurieren</b>.
</p>

<h4>Wie kann ich das Zugbaumfenster statt fr die ganze Datenbank nur
fr eine Auswahl von Partien nutzen?</h4>
<p>
Nutzen Sie die <a Clipbase>Ablage-Datenbank</a>. Whlen Sie den
Datenbank-Filter so, da er die von Ihnen gewnschten Partien enthlt,
dann kopieren Sie diese ber den <a Switcher>Datenbank-Umschalter</a>
in die Ablage-Datenbank. Danach brauchen Sie nur noch das Zugbaumfenster
in der Ablage-Datenbank zu ffnen.
</p>

<h4>Der Zugbaum ist bei groen Datenbanken zu langsam. Wie kann ich
ihn beschleunigen?</h4>
<p>
Sichern Sie die Cache-Datei hufig, um die Zugbaum-Resultate zum
spteren Gebrauch zu bewahren. Zu den Details siehe den Abschnitt
<b>Caching</b> auf der <a Tree>Zugbaum</a>-Hilfeseite.
</p>

<h4>Wie kann ich direkt die PGN-Notation der Datei bearbeiten?</h4>
<p>
Im <a PGN>PGN</a>-Fenster knnen sie die aktuelle Partie nicht bearbeiten,
aber Sie knnen immer noch die PGN-Notation editieren, indem Sie das
Fenster <a Import>Partie importieren</a> verwenden.
ffnen Sie es (mit <b>Control+Shift+I</b>) und whlen Sie
<b>Aktuelle Partie einfgen</b>, dann bearbeiten Sie die Partie
und klicken danach <b>Importieren</b> an.

</p>

<h4>In meiner Datenbank sind einige Spielernamen unterschiedlich
geschrieben. Wie kann ich sie korrigieren?</h4>
<p>
Mit den Kommandos im Men <menu>Datei: Wartung</menu> knnen Sie einzelne
Namen editieren oder auch Schreibweisen aller Namen berprfen.
Siehe die Seite <a Maintenance Editing>Wartung</a>.
</p>

<h4>Ich habe zwei Datenbanken geffnet: eine mit meinen eigenen Partien
und eine groe Datenbank mit Gromeisterpartien. Wie kann ich eine
meiner Partien mit denen in der groen Datenbank vergleichen?</h4>
<p>
ffnen Sie das <a Tree>Zugbaumfenster</a> in der groen Datenbank und
und wechseln Sie mit Hilfe des Datenbankwechslers in die zu
vergleichende Datenbank.
</p>

<p><footer>(Aktualisiert: Scid 3.6.28, August 2008)</footer></p>
}


###############
### Main window

set helpTitle(D,MainWindow) "Scid Hauptfenster"
set helpText(D,MainWindow) {<h1>Scid Hauptfenster</h1>
<p>
Das Hauptfenster in Scid zeigt die aktuelle Stellung der jeweiligen
Partie und Information ber diese Partie und die Datenbank.
Separate Hilfeseiten beschreiben die <a Menus>Mens</a> und die
<a Moves>Zugeingabe</a>.
</p>

<h3>Symbolleiste: Navigieren durch die Partie</h3>
<p>
Die direkt ber dem Schachbrett angebracht Symbole haben die
folgende Bedeutung (von links nach rechts):
<ul>
<li> <button tb_start> Gehe zum Beginn der Partie. </li>
<li> <button tb_prev> Gehe einen Zug zurck. </li>
<li> <button tb_next> Gehe einen Zug vor. </li>
<li> <button tb_end> Gehe zum Ende der Partie. </li>
<li> <button tb_invar> Gehe in Variante. </li>
<li> <button tb_outvar> Verlasse die Variante. </li>
<li> <button tb_addvar> Neue Variante hinzufgen. </li>
<li> <button autoplay_off> Starte/beende automatisches Vorspielen (siehe unten). </li>
<li> <button tb_trial> Starte/beende <a Moves Trial>Testmodus</a>. </li>
<li> <button tb_flip> Brett drehen. </li>
<li> <button tb_coords> Zeige/Verdecke/Zeige unten und links/ die Brettkoordinaten. </li>
</ul>

<h4><name Autoplay>Automatisches Vorspielen</name></h4>
<p>
Im diesem Modus spielt Scid automatisch die Zge in der
aktuellen Partie vor, bis zum Spielende. Die Zeit zwischen den Zgen
kann im Men <menu>Optionen: Zge</menu> eingestellt werden und wird
mit "Optionen speichern" gesichert.
</p>
<p>
Die Tastenkombination <b>Strg+Z</b> startet oder stoppt das autom.
Vorspielen, zustzlich kann das autom. Vorpielen auch durch
Drcken der <b>Esc</b>-Taste beendet werden.
</p>
<p>
Wenn der Modus "Automatisches Vorspielen" beim geffneten
<a Analysis>Analysefenster</a> (Engine 1) gestartet wird, so wird
die von der Engine berechnte jeweilige Fortsetzung als Variante jedem Zug
hinzugefgt <term>Autom. Kommentieren</term>. Siehe auch die
Hilfeseite zum <a Analysis>Analysefenster</a>.
</p>

<h3>Der Informationsbereich</h3>
<p>
Der Bereich unter dem Schachbrett, mit Informationen ber die
Partie, wird <term>Informationsbereich</term> genannt. Die ersten 3
Zeilen zeigen Information zu den Spielern, Ergebnis, ECO-Code, Datum,
Ort und Ereignis. Die vierte Zeile zeigt die Informationen zur
aktuellen Stellung sowie den nchsten Zug.
</p>
<p>
Die fnfte Zeile zeigt den <a ECO>ECO-Code</a> der aktuelle Stellung,
falls enthalten in der gerade benutzen ECO-Datei.
</p>
<p>
Der Informationsbereich hat ein Men, welches man mit der
rechten Maustaste aktivieren kann. Hierber kann man bestimmte
Informationen zum Spiel zeigen oder verstecken sowie Markierungen
fr die aktuelle Partie setzten und lschen. Man kann das
Men auch ber die <b>[F9]</b> Funktionstaste erreichen.
</p>

<h4>Endspieltabellen</h4>
<p>
Der Informationsbereich zeigt auch Ergebnisse aus den
Endspieltabellen zur aktuellen Stellung, wenn diese darin enthalten
ist. Mehr dazu in den Hilfeseiten zu <a TB>Endspieltabellen</a>.
</p>

<h3>Die Statusanzeige</h3>
<p>
Die Statusanzeige zeigt Information ber die aktuelle
Datenbank. Das erste Feld zeigt den Partiestatus an: <b>XX</b>
bedeutet, die Partie wurde gendert, aber noch nicht
gespeichert, whrend <b>--</b> bedeutet, es gibt keine
nderungen, und <b>%%</b> zeigt an, da die Datenbank
schreibgeschtzt geffnet wurde.
</p>
<p>
Wenn man eine Datenbank immer schreibgeschtzt ffen will,
kann man auch die Rechte fr die entsprechenden Scid-Dateien
setzen, oder zumindestens die der Indexdatei; z.B. (unter Linux) durch
den Befehl: <b>chmod a-w datenbank1.si3</b>.
Danach ffnet Scid die entsprechende Datenbank immer
schreibgeschtzt.
</p>
<p>
Die Statusanzeige zeigt auch, wieviel Spiele im aktuellen
<a Searches Filter>Filter</a>
sind.
</p>

<p><footer>(Aktualisiert: Scid 3.1, Dezember 2001)</footer></p>
}


######################
### Menus help screen:

set helpTitle(D,Menus) "Mens"
set helpText(D,Menus) {<h1>Die Scid-Mens</h1>

<h3><name File>Datei</name></h3>
<ul>
<li><menu>Neu</menu>: Legt eine neue, leere Scid-Datenbank an.</li>
<li><menu>ffnen</menu>: ffnet eine existierende Scid-Datenbank.</li>
<li><menu>Schlieen</menu>: Schliet die aktive Scid-Datenbank.</li>
<li><menu>Finder</menu>: ffnet das <a Finder>Dateifinder</a>-Fenster.</li>
<li><menu>Lesezeichen</menu>: Das <a Bookmarks>Lesezeichen</a>-Men mit
     einigen Lesezeichen-Funktionen.</li>
<li><menu>Wartung</menu>: Datenbank-<a Maintenance>Wartungs</a>-Funktionen.
    </li>
<ul>
  <li><menu>Wartungsfenster</menu>: ffnet/schliet das
      Datenbank-Wartungsfenster.</li>
  <li><menu>Partien ECO-klassifizieren</menu>: Bestimmt den
      <a ECO>ECO-Code</a> fr alle Partien der Datenbank neu.</li>
  <li><menu>Dubletten lschen</menu>: Findet <a Maintenance Twins>Dubletten</a>
      in der Datenbank.</li>
  <li><menu>Namen</menu>: Ersetzt alle Vorkommen eines Spieler-,
      Ereignis-, Ort- oder Rundeneintrags.</li>
</ul>
<li><menu>Schreibschutz</menu>: Markiert die aktive Datenbank als schreibgeschtzt.</li>
<li><menu>Datenbank 1/2/3/4/5</menu>: Mit diesen Kommandos knnen Sie
    zwischen den vier verfgbaren Datenbanken und der
    <a Clipbase>Ablage-Datenbank</a> wechseln.</li>
<li><menu>Ende</menu>: Beendet Scid. </li>
</ul>

<h3><name Edit>Bearbeiten</name></h3>
<ul>
<li><menu>Variante hinzufgen</menu>: Fgt eine neue, leere Variante zum nchsten
    Zug hinzu bzw. zum vorherigen, falls es noch keinen nchsten Zug gibt.</li>
<li><menu>Variante lschen</menu>: ffnet ein Varianten-Untermen fr
    den aktuellen Zug, um eine Variante zu lschen.</li>
<li><menu>Als erste Variante setzen</menu>: Macht eine Variante zur
    ersten Variante des aktuellen Zuges.</li>
<li><menu>Variante als Hauptvariante setzen</menu>: Tauscht eine Variante
    mit der Partiefolge aus.</li>
<li><menu>Variante testen</menu>: Schaltet in den <a Moves Trial>Testmodus</a>,
    um eine Variante auszuprobieren, ohne die aktuelle Partie zu verndern.</li>
<li><menu>Entfernen</menu>: Entfernt alle Kommentare oder Varianten
    aus der aktuellen Partie.</li>
<br>
<li><menu>Ablage leeren</menu>: Leert die
    <a Clipbase>Ablage</a>-Datenbank.</li>
<li><menu>Partie in Ablage kopieren</menu>: Kopiert die aktuelle Partie
    in die <a Clipbase>Ablage</a>-Datenbank.</li>
<li><menu>Partie aus Ablage einfgen</menu>: Fgt die aktive Partie der
    <a Clipbase>Ablage</a> als aktive Partie in die aktuelle Datenbank
    ein.</li>
<br>
<li><menu>Stellungseingabe</menu>: Legt die Ausgangsstellung fr die
    aktuelle Partie fest.</li>
<li><menu>Stellung einfgen</menu>: Fgt den markierten Text
    (Zwischenablage) als Ausgangsstellung ein.</li>
</ul>

<h3><name Game>Partie</name></h3>
<ul>
<li><menu>Neue Partie</menu>: Verwirft alle nicht gesicherten nderungen
     und beginnt eine neue Partie ab der Grundstellung.</li>
<li><menu>Lade Erste/Vorherige/Nchste/Letzte Partie</menu>: Diese Menpunkte
    laden die erste, vorherige, nchste bzw. letzte Partie im <a Searches Filter>Filter</a>.</li>
<li><menu>Partie wiederladen</menu>: Ldt die aktuelle Partie erneut, wobei
    alle bisherigen nderungen verworfen werden.</li>
<li><menu>Lade Partie Nummer</menu>: Ldt die Partie mit der angegebenen
    Nummer in die aktuelle Datenbank.</li>
<br>
<li><menu>Partie ersetzen</menu>: Sichert die aktuelle Partie, wobei sie
    die Originalversion in der Datenbank ersetzt.</li>
<li><menu>Partie speichern</menu>: Sichert die aktuelle Partie als neue
    Partie, die ans Ende der Datenbank angehngt wird.</li>
<br>
<li><menu>Erffnung identifizieren</menu>: Findet die letztmgliche
    Position der aktuellen Partie in der ECO-Datei.</li>
<li><menu>Zugnummer</menu>: Geht zu der angegebenen Zugnummer in
    der aktuellen Partie.</li>
<li><menu>Finde Neuerung</menu>: Findet den ersten Zug der aktuellen Partie,
    der vorher noch nie gespielt wurde.</li>
</ul>

<h3><name Search>Suchen</name></h3>
<ul>
<li><menu>Filter zurcksetzen</menu>: Setzt den <a Searches Filter>Filter</a>
    zurck, so da er alle Partien enthlt.</li>
<li><menu>Filter negieren</menu>: Invertiert den Filter, so da er alle
    vorher ausgeschlossenen Partien enthlt.</li>
<br>
<li><menu>Brett</menu>: Sucht die
    <a Searches Board>aktuelle Brettposition</a>.</li>
<li><menu>Partiedaten</menu>: Sucht nach <a Searches Header>Partiedaten</a>
    wie z.B. Spielernamen.</li>
<li><menu>Material/Muster</menu>: Sucht nach
    <a Searches Material>Material</a> oder Stellungsmustern</a>.</li>
<br>
<li><menu>Mit Suchoptionsdatei</menu>: Sucht mit Hilfe von
    <a Searches Settings>Einstellungen</a> aus einer Suchoptionsdatei.</li>
</ul>

<h3><name Windows>Fenster</name></h3>
<ul>
<li><menu>Kommentareditor</menu>: ffnet/schliet das
    <a Comment>Kommentareditor</a>-Fenster.</li>
<li><menu>Partieliste</menu>: ffnet/schliet das
    <a GameList>Partielistenfenster</a>.</li>
<li><menu>PGN-Fenster</menu>: ffnet/schliet das
    <a PGN>PGN-Fenster</a>.</li>
<li><menu>Turnierfinder</menu>: ffnet/schliet den
    <a Tmt>Turnierfinder</a>.</li>
<br>
<li><menu>Datenbank-Umschalter</menu>: ffnet/schliet den
    <a Switcher>Datenbank-Umschalter</a>, mit dem man auf einfache Weise zu einer
    anderen Datenbank wechseln oder Partien zwischen Datenbanken kopieren kann.</li>
<li><menu>Wartungsfenster</menu>: ffnet/schliet das
    Datenbank-<a Maintenance>Wartungs</a>-Fenster.</li>
<br>
<li><menu>ECO-Auswertung</menu>: ffnet/schliet das Fenster
    <a ECO browser>ECO-Auswertung</a>.</li>
<li><menu>Repertoire-Editor</menu>: ffnet/schliet den
    <a Repertoire>Repertoire-Editor</a>.</li>
<li><menu>Statistik</menu>: ffnet/schliet das
    <term>Filter-Statistikfenster</term>, welches eine Gewinn/Verlust-Zusammenstellung
    aller Partien im <a Searches Filter>Filter</a> liefert.</li>
<li><menu>Zugbaum</menu>: ffnet/schliet das <a Tree>Zugbaumfenster</a>.</li>
<li><menu>Endspieltabellen</menu>: ffnet/schliet das Fenster, das
    die <a TB>Endspieltabellen</a>-Informationen ausgibt.</li>
</ul>

<h3><name Tools>Werkzeuge</name></h3>
<ul>
<li><menu>Analyse-Engine</menu>: Startet/beendet die "Schachanalyse-Engine",
    die die Auswertung der aktuellen Position
    im <a Analysis>Analysefenster</a> darstellt.</li>
<li><menu>Analyse-Engine #2</menu>: Startet/beendet eine zweite
    "Schachanlyse-Engine".</li>
<li><menu>Kreuztabelle</menu>: Erstellt eine
    Turnier-<a Crosstable>Kreuztabelle</a> fr die aktuelle Partie. </li>
<li><menu>E-Mail-Manager</menu>: ffnet/schliet den <a Email>E-Mail-Manager</a>
    fr Fernschachpartien.</li>
<br>
<li><menu>Rel. Filtergrafik</menu>: ffnet das <a Graphs>Fenster fr die Relative Filtergrafik</a></li>
<li><menu>Abs. Filtergrafik</menu>: ffnet das <a Graphs>Fenster fr die Absolute Filtergrafik</a></li>
<li><menu>Erffnungsbericht</menu>: Erstellt einen <a Reports Opening>Erffnungsbericht</a>
    zur aktuellen Position.</li>
<li><menu>Figurenverteilung</menu>: ffnet das Fenster <a PTracker>Figurenverteilung</a>.
    </li>
<li><menu>Spieler-Information</menu>: Gibt <a PInfo>Spieler-Informationen</a>
    fr einen Spieler der aktuellen Partie aus.</li>
<li><menu>ELO-Zahl-Verlauf</menu>: gibt den
    <a Graphs Rating>ELO-Zahl-Verlauf</a> aus.</li>
<li><menu>Partie-Bewertungsgraph</menu>: Gibt den
    <a Graphs Score>Partie-Bewertungsgraph</a> aus.</li>
<br>
<li><menu>Partie exportieren</menu>: Schreibt die aktuelle Partie in eine
    Textdatei im PGN-, HTML- oder LaTeX-Format. Siehe die
    <a Export>Export</a>-Hilfeseite.</li>
<li><menu>Alle Partien im Filter exportieren</menu>: Schreibt alle Partien
    im Such-<a Searches Filter>Filter</a> in eine Textdatei im PGN-, HTML-
    oder LaTeX-Format. Siehe die <a Export>Export</a>-Hilfeseite.</li>
<br>
<li><menu>Eine PGN-Partie importieren</menu>: ffnet das <a Import>Importfenster</a>,
    um den Inhalt einer Partie im <a PGN>PGN-Format</a> direkt
    einzutippen oder einzufgen.</li>
<li><menu>Datei mit PGN-Partien importieren</menu>: Importiert eine ganze
    Datei mit Partien im PGN-Format in die aktuelle Datenbank.</li>
<br>    
<li><menu>Starte Engine1</menu>: Starte direkt die letzte ausgewhlte Engine1 im Analysemodus</li>  
<li><menu>Starte Engine2</menu>: Starte direkt die letzte ausgewhlte Engine2 im Analysemodus</li>  
</ul>

<h3><name Options>Optionen</name></h3>
<p>
Dieses Men stellt einige Eintrge bereit, um die meisten konfigurierbaren
Optionen von Scid einzustellen.
Der Menpunkt <menu>Autom. speichern bei Beenden</menu> sichert die aktuellen
Optionen  in der Datei "<b>~/.scid/scidrc</b>" (bzw.
<b>scid.opt</b> im Verzeichnis des ausfhrbaren Scid-Programms fr Windows-User);
diese Datei wird bei jedem Programmstart von Scid geladen.
</p>

<h3>Hilfe</h3>
<p>
Dieses Men enthlt die Hilfe-Funktionen sowie Zugriff auf das
"Tip-des-Tages"-Fenster oder das Startfenster, welches Informationen
ber die Dateien liefert, die Scid beim Programmstart geladen hat.
</p>

<p><footer>(Aktualisiert: Scid 3.6.21, Dezember 2007)</footer></p>
}


########################
### Entering moves help:

set helpTitle(D,Moves) "Zge eingeben"
set helpText(D,Moves) {<h1>Schachzge eingeben</h1>
<p>
In Scid knnen Sie die Partiezge mit der Maus oder ber die
Tastatur eingeben. Wenn Sie den Mauszeiger auf ein Feld bewegen,
wird dieses und ein weiteres Feld seine Farbe ndern, falls es
einen legalen Zug auf dieses bzw. von diesem Feld gibt. Das ist
der <term>Zugvorschlag</term>. Sie knnen diesen Zug einfach durch
Klicken der <term>linken</term> Maustaste ausfhren. Falls Sie der
Zugvorschlag strt, knnen Sie ihn im Optionsmen abschalten.
</p>
<p>
Um einen anderen als den vorgeschlagenen Zug auszufhren, knnen Sie
die <term>linke</term> Maustaste verwenden: Drcken Sie einfach die
Taste ber einem Feld und lassen Sie sie ber einem anderen Feld los.
</p>
<p>
Wenn Sie es vorziehen, Zge mit zwei Mausklicks auszufhren statt mit
gedrckter Maustaste, knnen Sie die <term>mittlere</term> Taste
verwenden: Klicken Sie erst das eine Feld an, danach das andere.
</p>

<h4>Einen Zug zurcknehmen</h4>
<p>
Um einen Zug zurckzunehmen, drcken Sie die rechte Maustaste. Damit gehen
Sie einen Zug zurck; gleichzeitig lschen Sie diesen Zug, falls es der
letzte Zug der Partie oder einer Variante war.
</p>

<h4>Alte Zge ersetzen</h4>
<p>
Wenn Sie einen Zug an einer Stelle in der Partie eingeben, wo bereits
ein Zug existiert, wird Scid Sie in einem Dialogfenster fragen, ob Sie
wirklich den alten Zug ersetzen wollen (der alte Zug und alle nachfolgenden
sind dann verloren) oder statt dessen den neuen Zug als Variante eingeben
wollen. Manche Leute mgen dieses Dialogfenster als strend empfinden
und wollen alte Zge immer ersetzen. Sie knnen es daher im Men
<menu>Optionen: Zge</menu> mit der Option "<i>Vor Ersetzen nachfragen</i>"
abschalten.
</p>

<h4><name Trial>Der Testmodus</name></h4>
<p>
Wenn Sie eine Partie nachspielen und eine Position erreichen, wo Sie
eine alternative Variante am Brett ausprobieren wollen, ohne die Partie
zu verndern, whlen Sie <b>Variante testen</b> im Men <menu>Bearbeiten</menu>,
um den Testmodus einzuschalten. In diesem Modus knnen Sie Zge eingeben
und die Partie zeitweilig verndern; sobald Sie den Testmodus verlassen,
kehren Sie zur Ausgangsposition zurck.
</p>

<h3><name Mistakes>Fehler korrigieren</name></h3>
<p>
Wenn Sie eine Partie eingeben und pltzlich einige Zge vorher einen
falschen Zug bemerken, knnen Sie diesen korrigieren, ohne die
nachfolgenden Zge zu verlieren. Der einzige Weg besteht darin, die
PGN-Darstellung der Datei zu bearbeiten: ffnen Sie das
<a Import>Import</a>-Fenster, whlen Sie "Aktuelle Partie einfgen",
korrigieren Sie den falschen Zug, und whlen Sie dann "Importieren".
</p>

<h3>Zugeingabe ber die Tastatur</h3>
<p>
Um Zge ber die Tastatur einzugeben, drcken Sie einfach die jeweiligen
Buchstaben- und Zahlentasten. Die Zge sollten in <term>SAN-Notation</term>
<i>ohne</i> die Symbole fr Schlagen (x) oder Umwandeln (=) eingegeben
werden. Gro- und Kleinschreibung wird ignoriert, Sie knnen also
beispielsweise [n][f][3] anstelle von Nf3 eingeben  -- beachten Sie
aber die Anmerkung weiter unten zu den Konflikten bei Bauernzgen.
</p>
<p>
Um sicherzustellen, da kein Zug in einem anderen enthalten ist,
lautet die Eingabe fr die kurze und lange Rochade [0][K] resp. [0][Q]
anstelle der blichen Notation 0-0 bzw. 0-0-0.
</p>
<p>
Wenn Sie einen Zug eingeben, zeigt die Statusleiste die Liste der
mglichen Zge an. Sie knnen jederzeit die [Leertaste] drcken, um
den ersten mglichen Zug der Liste als Eingabe auszuwhlen.
Um ein Zeichen zu lschen, drcken Sie [Rck] oder [Entf].
</p>
<p>
<b>Beachten</b> Sie, da ein Kleinbuchstabe zuerst als Bauer
interpretiert wird; mit [b] kann also ein Bauer oder Lufer ("Bishop")
gemeint sein, im Zweifelsfall mssen Sie daher ein groes [B] fr den
Lufer verwenden.
</p>

<h4>Automatische Zugergnzung</h4>
<p>
Im Options-Men knnen Sie die <term>Automatische Zugergnzung</term>
ein- oder ausschalten.
Mit Zugergnzung wird ein Zug ausgefhrt, sobald er durch Ihre Eingabe
von jedem anderen mglichen Zug unterschieden werden kann. Beispielsweise
mten Sie mit automatischer Zugergnzung in der Ausgangsstellung nur
[n][f] statt <b>Nf3</b> eintippen.
</p>

<h3><name Null>Nullzge eingeben</name></h3>
<p>
<a Annotating Null>Null</a>- (leere) Zge knnen in Varianten ntzlich
sein, wenn Sie den Zug einer Seite auslassen wollen. Sie knnen einen
Nullzug mit der Maus eingeben, indem Sie einen Knig mit dem anderen
schlagen, oder mit der Tastatur, indem Sie "<b>--</b>" eingeben (d.h.
die Minustaste zweimal drcken).
</p>

<h3>Standard-Kommentarzeichen eingeben</h3>
<p>
Sie knnen die blichen <a NAGs>Kommentarzeichen</a> im Hauptfenster auch
ber die Tastatur ohne den <a Comment>Kommentar-Editor</a> hinzufgen.
Die folgende Liste zeigt Ihnen, welche Zeichen Sie mit welchen Tasten
eingeben knnen:
<ul>
<li> !  : [!][Eingabe] </li>
<li> ?  : [?][Eingabe] </li>
<li> !? : [!][?][Eingabe] </li>
<li> ?! : [?][!][Eingabe] </li>
<li> !! : [!][!][Eingabe] </li>
<li> ?? : [?][?][Eingabe] </li>
<li> </li>
<li> +- : [+][-] </li>
<li> +/-: [+][/] </li>
<li> += : [+][=] </li>
<li> =  : [=][Eingabe] </li>
<li> -+ : [-][+] </li>
<li> -/+: [-][/] </li>
<li> =+ : [=][+] </li>
</ul>

<p><footer>(Aktualisiert: Scid 3.4, Juli 2002)</footer></p>
}


#########################
### Searches help screen:

set helpTitle(D,Searches) "Suchen"
set helpText(D,Searches) {<h1>Suchen in Scid</h1>
<p>
Scid kann auf viele verschiedene Weisen in einer Datenbank suchen.
Die drei wichtigsten Arten zu suchen sind:
<ul>
<li><b>1)</b> nach der aktuellen Brettposition, </li>
<li><b>2)</b> nach angegebenem Material und Stellungsmustern, </li>
<li><b>3)</b> nach Partiedaten-Informationen wie Spieler, Ergebnis, Datum. </li>
</ul>
<p>
Auerdem gibt es noch einen automatischen Suchmodus, den sog.
<a Tree>Zugbaum</a>, der an anderer Stelle erklrt wird.
</p>

<h3><name Filter>Der Such-Filter</name></h3>
<p>
Suchen basiert bei Scid auf dem Konzept eines <term>Filters</term>.
Der Filter reprsentiert eine Teilmenge der aktuellen Datenbank;
eine Partie ist immer entweder im Filter enthalten oder vom
Filter ausgeschlossen.
</p>
<p>
Bei jeder Art der Suche knnen Sie whlen, den vorhandenen Filter
weiter einzugrenzen, zu diesem hinzuzufgen oder ihn zu ignorieren
und die gesamte Datenbank zu durchsuchen. Diese Auswahl erlaubt es,
komplexe Suchvorgnge nacheinander aufzubauen.
</p>
<p>
Sie knnen auch mit dem <a Switcher>Datenbank-Umschalter</a> alle Partien
im Filter einer Datenbank in eine andere Datenbank kopieren.
</p>
<p>
Bei der Suche nach einer exakten Postion, der <a Tree>Zugbaum</a>- oder
Material/Muster-Suche wird die Zugnummer der ersten passenden Position
jeder passenden Partie gespeichert; wenn Sie also jede dieser Partien
laden, wird automatisch die passende Stellung angezeigt.
</p>
<p>
<b>Beachten</b> Sie, da beim Suchen nur mit den Partiezgen
verglichen wird, nicht mit den Zgen der Varianten.
</p>

<h3><name Board>Suchen: Brett...</name></h3>
<p>
Hier finden Sie Partien, die die gerade dargestellte Position enthalten,
ohne Bercksichtigung der Rochade- und <i>en-passant</i>-Rechte.
</p>
<p>
Vier Suchtypen stehen zur Verfgung. Alle vier verlangen von einer
passenden Stellung exakt gleiches Material und die gleiche Seite am Zug.
Die Typen sind:
<ul>
<li> [1] exakt (die beiden Stellungen mssen auf jedem Feld bereinstimmen),
     </li>
<li> [2] Bauern (die Bauernstruktur mu bereinstimmen, aber andere Figuren
     knnen irgenwo stehen), </li>
<li> [3] Linien (die Anzahl weier und schwarzer Bauern auf jeder Linie mu
     bereinstimmen, aber andere Figuren knnen irgendwo stehen), and </li>
<li> [4] Material (Bauern und Figuren knnen irgendwo stehen). </li>
</ul>
<p>
Die Bauernsuche ist hilfreich, um Erffnungen nach Bauernstrukuren zu
studieren, und Linien- und Materialsuche helfen beim Auffinden hnlicher
Endspielstellungen.
</p>
<p>
Um nach einer beliebigen Stellung zu suchen, knnen Sie zuerst
die Position aufbauen (im Men <menu>Bearbeiten: Stellungseingabe</menu>)
und dann die Suche starten.
</p>
<p>
Sie knnen Varianten (statt nur die jeweiligen Partiezge) durchsuchen,
indem Sie den Schalter <b>Schaue in Varianten</b> whlen; das kann
aber die Suche stark verlangsamen, falls die Datenbank sehr gro ist
und viele Partien mit Varianten enthlt.
</p>

<h3><name Material>Suchen: Material/Muster</name></h3>
<p>
Diese Suche ist ntzlich, um End- oder Mittelspielthemen zu finden. Sie
knnen eine minimale und maximale Anzahl von Figuren jeden Typs angeben,
und Sie knnen Stellungsmuster wie Lufer auf f7 oder f-Bauer finden.
</p>
<p>
Eine Reihe von hufigen Materialkonstellationen und Stellungsmustern
sind schon bereitgestellt, wie etwa "Endspiel Turm gegen Bauern" oder
"isolierter Damenbauer".
</p>
<p>
<b>Hinweise:</b><br>
Die Geschwindigkeit der Suche nach Stellungsmustern kann stark variieren.
Sie knnen aber durch eine geschickte Wahl der Bedingungen die bentigte
Zeit reduzieren. Wenn Sie beispielsweise fr ein Endspiel die Mindestzahl
von Zgen auf 20 setzen, werden alle Partien, die vor dem 20. Zug enden,
bersprungen.
</p>

<h3><name Header>Suchen: Partiedaten</name></h3>
<p>
Mit dieser Suche knnen Sie Partiedaten finden, die im Vorspann ("Header")
gespeichert sind (wie z.B. Datum, Ergebnis, Namen und Wertungszahlen),
es mssen daher keine Partiezge dekodiert werden.
</p>
<p>
Um bei der Suche nach Partiedaten eine passende Partie zu finden,
mssen <b>alle</b> von Ihnen angegebenen Felder bereinstimmen.
</p>
<p>
Die Namensfelder (Wei, Schwarz, Turnier, Ort und Runde) passen auf
jeden Text im Namen, ohne Bercksichtigung von Gro- und Kleinschreibung
oder Leerzeichen.
</p>
<p>
Sie knnen fr das Wei-, Schwarz-, Turnier-, Ort- und Rundenfeld mit
Unterscheidung von Gro- und Kleinschreibung und mit "Wildcards" suchen
(mit <b>?</b> fr ein und <b>*</b> fr null oder mehr Zeichen), indem
Sie den Suchtext in Anfhrungszeichen setzen. Eine Suche mit der Ortsangabe
<b>USA</b> wird beispielsweise amerikanische Stdte finden, aber auch
<b>Lausanne SUI</b>, was vermutlich nicht von Ihnen beabsichtigt war! Eine
Suche mit dem Ort <b>"*USA"</b> (denken Sie an die Anfhrungszeichen)
liefert dagegen nur Stdte in den USA.
</p>
<p>
Wenn Sie einen bestimmten Spieler (oder zwei bestimmte Kontrahenten) als
Wei oder Schwarz suchen und die jeweilige Farbe keine Rolle spielt,
whlen Sie die Option <b>Farben ignorieren</b>.
</p>
<p>
Schlielich kann die Suche nach Partiedaten auch verwendet werden, um
irgendeinen Text (mit Bercksichtigung von Gro- und Kleinschreibung,
ohne "Wildcards") in der PGN-Darstellung dieser Partie zu finden. Sie
knnen bis zu drei Textteile eingeben, und sie mssen alle in einer
passenden Partie vorkommen.
Diese Methode ist sehr hilfreich, um in den Kommentaren oder zustzlichen
Daten einer Partie zu suchen (wie <b>Zeitberschreitung</b> oder
<b>Kommentator</b>), oder nach einer Zugfolge wie <b>Bxh7+</b> und
<b>Kxh7</b> fr ein angenommenes Luferopfer auf h7.
Allerdings kann diese Art zu suchen <i>sehr</i> langsam sein, da alle
Partien, auf die andere Kriterien zutreffen, dekodiert und auf diese
Texte durchsucht werden mssen.
Es ist daher eine gute Idee, diese Suchen so weit wie mglich einzugrenzen.
Hier sind einige Beispiele:
Um Partien mit einer Unterverwandlung in einen Turm zu finden,
suchen Sie nach <b>=R</b> und setzen gleichzeitig die Markierung
<b>Umwandlung</b> auf Ja.
Wenn Sie nach Text in Kommentaren suchen, setzen Sie die Markierung
<b>Kommentare</b> auf Ja.
Falls Sie nach den Zgen <b>Bxh7+</b> und <b>Kxh7</b> suchen, mchten
Sie z.B. die Suche mglicherweise auf Partien mit dem Ergebnis 1-0 und
mit mindestens 40 Halbzgen beschrnken, oder Sie suchen zuerst nach
Material oder Stellungsmustern, um Partien mit einem weien Luferzug
nach h7 zu finden.
</p>

<h3><name Settings>Sucheinstellungen sichern</name></h3>
<p>
Die Suchfenster Material/Mustern und Partiedaten besitzen einen Schalter
zum <term>Speichern</term>. Das ermglicht Ihnen, die aktuellen
Sucheinstellungen zur spteren Verwendung in einer
<term>Suchoptions</term>-Datei zu speichern (Endung .sso).
Um mit Hilfe einer vorher gespeicherten Suchoptionsdatei (.sso) zu
suchen, whlen Sie <menu>ffnen</menu> im Men <menu>Suchen</menu>.
</p>

<h3>Suchdauer und bergangene Dateien</h3>
<p>
Die meisten Suchen liefern eine Nachricht, die die bentigte Zeit und
die Anzahl der <term>bergangenen</term> Partien angibt. Eine bergangene
Partie ist eine, die aufgrund der im Index gespeicherten Informationen
von der Suche ausgeschlossen werden kann, ohne da ihre Zge dekodiert
werden mssen. Siehe die Hilfeseite ber
<a Formats>Dateiformate</a> fr weitergehende Informationen.
</p>

<p><footer>(Aktualisiert: Scid 3.0, November 2001)</footer></p>
}


############
### Clipbase

set helpTitle(D,Clipbase) "Die Ablage-Datenbank"
set helpText(D,Clipbase) {<h1>Die Ablage-Datenbank</h1>
<p>
Zustzlich zu den geffneten Datenbanken stellt Scid eine
<term>Ablage-Datenbank</term> (als Datenbank 5) zur Verfgung, welche
sich wie eine normale Datenbank verhlt, mit der Ausnahme, da sie
nur im RAM-Speicher existiert und keine Dateien zur Speicherung auf
der Festplatte besitzt.
</p>
<p>
Die Ablage-Datenbank (kurz: Ablage) ist ntzlich als eine temporre
Datenbank, zum Zusammenfhren von Suchergebnissen aus Suche in
mehreren Datenbanken oder zur Behandlung der Suchergebnisse als eine
eigenstndige Datenbank.
</p>
<p>
Angenommen, zum Beispiel, man will sich auf einen Gegner vorbereiten, und
hat eine Datenbank auf alle Partien des Gegners mit Wei durchsucht,
so da diese Partien im <a Searches Filter>Filter</a> sind.
Man kann nun diese Partien in die Ablage kopieren (durch Ziehen mit der
rechten Maustaste von der Originaldatenbank zur Ablage, im Fenster
<a Switcher>Datenbank-Umschalter</a>), danach im Datei-Men die Ablage
als aktive Datenbank auswhlen, und dann kann man sich im
<a Tree>Zugbaumfenster</a> das Erffnungsrepertoire des Gegners
ansehen.
</p>
<p>
Sind 2 Datenbanken geffnet, und hat man im Filter Partien, die man
von der einen Datenbank in die andere kopieren mchte, kann man dies
direkt (ohne Umweg ber die Ablage) tun. Dazu benutzt man wiederum das
Fenster <a Switcher>Datenbank-Umschalter</a>.
</p>
<p>
Die Ablage kann nicht geschlossen werden: mit dem Befehl
<menu>Ablage leeren</menu> aus dem Men <menu>Bearbeiten</menu> wird
der Inhalt der Ablage gelscht.
</p>
<p>
Die Ablage-Datenbank ist begrenzt auf 10.000 Partien zur gleichen Zeit,
da sie nur im Speicher existiert.
</p>

<p><footer>(Aktualisiert: Scid 2.5, Juni 2001)</footer></p>
}


#################################
### Variations and comments help:

set helpTitle(D,Annotating) "Partien kommentieren"
set helpText(D,Annotating) {<h1>Partien kommentieren</h1>
<p>
Mit Scid knnen Sie den Partien Anmerkungen hinzufgen. Es gibt
drei Arten von Anmerkungen, die Sie nach einem Zug eingeben knnen:
Symbole, ein Kommentar und Varianten.
</p>

<h3>Symbole und Kommentare</h3>
<p>
Symbole verwendet man, um eine Stellungsbeurteilung anzuzeigen
(etwa "+-" or "=") oder um auf gute ("!") und schlechte ("?")
Zge hinzuweisen, whrend ein Kommentar ein beliebiger Text sein
kann. Zur Eingabe von Symbolen und Kommentaren benutzen Sie den
<a Comment>Kommentar-Editor</a>. Es gibt auch eine Hilfeseite, in
der die <a NAGs>Standard-Symbolwerte</a> aufgelistet sind.
</p>
<p>
Beachten Sie, da jeder Zug mehr als ein Anmerkungssymbol haben kann,
aber nur einen Kommentar. Ein Kommentar vor dem ersten Partiezug wird
als Text vor dem Beginn der Partie ausgegeben.
</p>

<h3><name Vars>Varianten</name></h3>
<p>
Eine <term>Variante</term> eines Zuges ist eine alternative Zugfolge
an einem bestimmten Punkt der Partie. Varianten knnen Kommentare
enthalten und sogar rekursiv Untervarianten. Mit den Schaltern oberhalb
des Schachbretts mit einem "<b>V</b>"-Symbol sowie den Kommandos im
Men <menu>Bearbeiten</menu> kann man Varianten erstellen, editieren
und sich darin bewegen.
</p>

<h4>Tastatureingaben</h4>
<p>
Wenn es zu einem Zug Varianten gibt, werden sie im Informationsbereich
angezeigt. Die erste wird mit <b>v1</b> bezeichnet, die zweite mit
<b>v2</b> etc. Um in eine Variante zu gehen, knnen Sie sie anklicken
oder "<b>v</b>" gefolgt von der Variantennummer eingeben. (Falls es
nur eine Variante gibt, gengt die Eingabe von <b>v</b>.)
Mit der Taste "<b>z</b>" verlassen Sie die Variante wieder.
</p>

<h3><name Null>Nullzge</name></h3>
<p>
Gelegentlich kann es in einer Variante ntzlich sein, den Zug einer
Seite auszulassen. Beispiel: Sie wollen den Zug 14.Ld3 als Variante
hinzufgen und mchten darauf hinweisen, da er 15.Lxh7+ Kxh7 16.Sg5+
mit Angriff droht. Das knnen Sie erreichen, indem Sie im obigen
Beispiel einen <term>Nullzug</term> zwischen 14.Ld3 und 15.Bxh7+
ausfhren. Ein Nullzug wird als "<b>--</b>" dargestellt und kann
eingefgt werden, indem Sie mit der Maus den illegalen Zug "Knig
schlgt Knig" ausfhren oder mit der Tastatur "<b>--</b>" (zwei
Minuszeichen) eingeben.
</p>
<p>
Beachten Sie, da Nullzge nicht zum PGN-Standard gehren, wenn Sie
also Partien mit Nullzgen in eine PGN-Datei exportieren, wird Scid
(neben einigen anderen Exportoptionen) eine Option anbieten,
Nullzge zu erhalten oder sie in Kommentare umzuwandeln, damit
Kompatibilitt zu anderen Programmen gewahrt bleibt.
Siehe auch die <a Export>Export</a>-Hilfeseite.
</p>

<p><footer>(Aktualisiert: Scid 3.4, Juli 2002)</footer></p>
}


####################
### Analysis window:

set helpTitle(D,Analysis) "Analysefenster"
set helpText(D,Analysis) {<h1>Das Analysefenster</h1>
<p>
Scids Analysefenster zeigt die Analyse der aktuellen Brettstellung
durch ein Schachprogramm (eine sog. <term>Engine</term>).
Immer, wenn sich die Brettstellung ndert, bermittelt Scid die neue
Position an die Engine, und die zeigt ihre Einschtzung dieser Stellung.
</p>
<p>
Die Bewertung im Analysefenster erfolgt immer aus der Perspektive
von Wei, eine negative Bewertung heit also, da Schwarz besser steht.
Der untere Fensterbereich (mit dem Rollbalken) zeigt den Verlauf der
Auswertungen der aktuellen Stellung durch die Engine, Sie knnen also
sehen, wie sich die Einschtzung verndert hat.
</p>
<p>
Um den von der Engine ausgewhlten besten Zug als neuen Zug der
aktuellen Partie zu nehmen, klicken Sie einfach auf den Schalter
<b>Zug hinzufgen</b>.
</p>
<p>
Tip: ber die Tasten F2 und F3 knnen direkt die letzten beiden Analyse-Engines gestartet werden, ohne dies nochmal auswhlen zu mssen.
</p>

<h3><name List>Die Liste der Analyse-Engines</name></h3>
<p>
Scid behlt eine Liste der von Ihnen benutzen Engines mit einer
geschtzten Elo-Zahl (wenn Sie eine Schtzung machen) und dem Datum
der letzten Benutzung. Sie knnen diese Liste nach Namen, Elo-Zahl
oder Datum sortieren.
Whlen Sie <b>Neu</b> oder <b>Bearbeiten</b>, um eine neue Engine
zur Liste hinzuzufgen oder Details eines bestehenden Eintrags zu
bearbeiten.
</p>

<h3><name Start>Engine-Kommandos und Verzeichnisse</name></h3>
<p>
Fr jede Engine mssen Sie die aufzurufende Programmdatei angeben
und das Verzeichnis, in dem Scid sie starten soll.
</p>
<p>
Die hufigste Ursache von Problemen beim Start einer Engine ist die Wahl
des Verzeichnisses, in dem die Engine laufen soll. Einige Engines
bentigen eine Initialisierung oder eine Erffnungsbuchdatei in ihrem
Startverzeichnis, um ordnungsgem zu laufen.
Andere Engines (so wie Crafty) schreiben Logdateien in dem Verzeichnis,
in dem sie gestartet wurden, Sie mssen sie also in einem Verzeichnis
aufrufen, fr das Sie Schreibrecht haben.
Wenn fr das Verzeichnis einer Engine "." angegeben ist, wird Scid sie
einfach im aktuellen Verzeichnis starten.
</p>
<p>
Wenn also eine Engine, die in Scid laufen sollte, nicht startet,
versuchen Sie es mit anderen Verzeichniseinstellungen. Um zu vermeiden,
da Engines Logdateien in vielen verschiedenen Verzeichnissen erstellen,
empfehle ich, Engines im Verzeichnis der Scid-Benutzerdateien zu starten
(da, wo sich die Datei <b>scid.exe</b> bei Windows befindet bzw.
<b>~/.scid/</b> bei Unix); in der Dialogbox fr die Engine-Einstellungen
gibt es einen Schalter <b>scid.exe dir</b> fr Windows bzw. <b>~/.scid</b>
fr Unix, mit dem Sie die Engine in diesem Verzeichnis starten lassen
knnen.
</p>

<h3>Training</h3>
<p>
Mit dem Schalter <b>Training</b> knnen Sie gegen die Analyse-Engine
spielen. Die Bedenkzeit fr jeden Zug ist fest vorgegeben und die
Analyse-Ergebnisse werden nicht angezeigt, wenn der Trainingsmodus
eingeschaltet ist.
</p>

<h3>Partie kommentieren</h3>
<p>
Der Schalter <b>Variante hinzufgen</b> im Analysefenster fgt die
laufende Bewertung und beste Variante als neue Variante der Partie hinzu.
</p>
<p>
Man kann das fr mehrere Zge mit dem Schalter <b>Kommentieren</b>
automatisieren. Sie werden zur Eingabe einiger Kommentar-Optionen
aufgefordert, dann wird in den Autoplay-Modus geschaltet.
Wenn der Autoplay-Modus aktiviert und das Analysefenster geffnet ist,
wird die beste Variante mit Stellungsbewertung zu jeder Position
hinzugefgt, da sich der Autoplay-Modus durch die Partie bewegt.
Nur Stellungen von der aktuellen Stellung bis zum Partieende (oder bis
zum Abbruch des Autoplay-Modus) werden kommentiert, so da Sie Kommentare
zu Erffungszgen unterdrcken knnen, indem Sie vor Aktivierung des
Autoplay-Modus zu einer Mittelspielstellung gehen.
</p>
<p>
Die automatische Kommentierung kann jederzeit durch Ausschalten des
Autoplayer-Modus abgebrochen werden, z.B. durch Drcken der
<b>Esc</b>-Taste im Hauptfenster.
</p>
<p>
Zur Vereinfachung steht der <b>Kommentar</b>-Schalter nur in dem Fenster
zur Verfgung, das als erste Analyse-Engine geffnet wurde. Wenn Sie
eine Engine als Analyse-Engine Nr.2 ffnen, knnen Sie sie nicht zur
Partiekommentierung nutzen.
</p>

<h3>Das Analysebrett</h3>
<p>
Anklicken des Schachbrett-Icons in einem Analysefenster zeigt oder
versteckt das Analysebrett, welches die Position nach der aktuell
besten Variante der Engine zeigt. Das funktioniert fr die meisten
Scid-kompatiblen Engines, aber nicht unbedingt fr alle; es hngt
ganz davon ab, welche Zugnotation eine Engine verwendet.
</p>

<h3>Engine-Prioritt</h3>
<p>
Falls eine Engine zu viel CPU-Zeit verbraucht und die Benutzung von
Scid oder anderen Applikationen beeintrchtigt, kann das Einschalten
der Checkbox <b>Niedrige CPU-Prioritt</b> helfen; es weist der
Engine eine geringe Prioritt frs Proze-Scheduling zu.
</p>

<h3>Schnittstellen-Details</h3>
<p>
Fr die Benutzung des Analysefensters bentigen Sie ein Schachprogramm,
welches das <term>UCI</term> oder <term>WinBoard/Xboard</term>-Protokoll untersttzt.
</p>
<p>
Bei Winboard-Engines sendet Scid beim Programmstart die Befehle <b>xboard</b>, <b>post</b> und
<b>protover 2</b> zur Engine, und nutzt die Befehle <b>setboard</b>
und <b>analyze</b> zur effizienteren Kommunikation, wenn die Engine in
ihrer Antwort anzeigt, da sie diese untersttzt.
Wenn die Engine den Befehl <b>setboard</b> nicht untersttzt, wird sie
fr Partien, die nicht mit der Standard-Ausgangsstellung beginnen, keine
Analysen liefern knnen.
</p>
<p>
Programmen, die den Befehl <b>analyze</b> nicht untersttzen, sendet
Scid nach jeder nderung der Stellung folgende Kommandos: <b>new</b>
und <b>force</b>, dann die Partiezge zur aktuellen Position, danach
<b>go</b>.
</p>
<p>
Bob Hyatt's exzellentes frei verfgbares Schachprogramm <term>Crafty</term>
benutze und empfehle ich zur Analyse mit Scid. Aber auch andere WinBoard-
oder XBoard-kompatible Programme sind erfolgreich getestet worden.
Ein paar Websites zum Herunterladen einiger Engines sind nachfolgend
aufgefhrt.
</p>
<p>
Crafty:
<url ftp://ftp.cis.uab.edu/pub/hyatt/>ftp://ftp.cis.uab.edu/pub/hyatt/</url>
</p>
<p>
wbec-ridderkerk.nl (mit vielen Links auf aktuelle Schach-Engines):
<url http://wbec-ridderkerk.nl/html/lastupdates.htm>http://wbec-ridderkerk.nl/html/lastupdates.htm</url>
</p>
<p>
Gnuchess:
<url http://www.gnu.org/software/chess/chess.html>http://www.gnu.org/software/chess/chess.html</url>
</p>
<p>
The Crazy Bishop:
<url http://remi.coulom.free.fr/>http://remi.coulom.free.fr/</url>
</p>

<p><footer>(Aktualisiert: Scid 3.6.21, Dezember 2007)</footer></p>
}


###############################
### Comment editor window help:

set helpTitle(D,Comment) "Kommentareditor"
set helpText(D,Comment) {<h1>Der Kommentareditor</h1>
<p>
Mit dem Kommentareditor knnen Sie den Zgen der aktuellen Partie
Kommentare und symbolische Kommentarzeichen hinzufgen.
</p>

<h3>Kommentarzeichen</h3>
<p>
Scid verwendet den <a Author Related>PGN-Standard</a> fr
Kommentarzeichen und akzeptiert <a NAGs>NAG</a>-Werte fr Anmerkungen
(NAG = numeric annotation glyph, "numerisches Anmerkungszeichen").
Einige der meistgebruchlichen Symbole (wie "!" oder "+-") werden als
solche ausgegeben und haben zur schnelleren Eingabe einen Schalter im
Kommentareditor. Fr andere Symbole knnen Sie den jeweiligen numerischen
NAG-Wert, eine Zahl von 1 bis 255, eingeben. Zum Beispiel bedeutet
der NAG-Wert 36 "Wei besitzt die Initiative" und wird im
<a PGN>PGN-Text</a> der Partie als "$36" ausgegeben.
</p>
<p>
Zu den NAG-Werten, die durch den PGN-Standard definiert werden,
siehe auch die Hilfeseite <a NAGs>NAG-Werte</a>.
</p>
<p>
<b>Hinweis:</b> Sie knnen die blichen Bewertungssymbole fr Schachzge
(!, ?, !!, ??, !? und ?!) direkt im Haupfenster eingeben, ohne den
Kommentareditor zu verwenden, indem Sie das jeweilige Symbol gefolgt
von der [Eingabe]-Taste eintippen.
Das ist besonders ntzlich beim <a Moves>Schachzge eingeben</a>
ber die Tastatur.
</p>

<h3>Kommentare</h3>
<p>
Sie knnen Kommentare im bereitgestellten Textbereich editieren und
dabei die Leeren-, Umkehren- und Speichern-Schalter verwenden.
Sie brauchen den Schalter "Speichern" nicht anzuklicken, um einen Kommentar
zu aktualisieren; dies geschieht automatisch, wann immer Sie zu einer
anderen Partiestellung gehen.
</p>

<h3>Felder einfrben</h3>
<p>
Sie knnen jedes Feld mit einer beliebigen Farbe einfrben, indem Sie
ein besonderes, an irgendeiner Stelle im Kommentar eingebettetes
Kommando verwenden. Das Format dieses Kommandos ist:
</p>
<ul>
<li><b>[%mark feld farbe]</b> ,<li>
</ul>
<p>
wobei <b>feld</b> ein Feldname wie d4 ist und <b>farbe</b> irgendeine
bekannte Farbbezeichnung (wie etwa red, blue4, darkGreen,
lightSteelBlue, etc.) oder ein RGB-Code (ein <b>#</b> gefolgt von 6
Hexadezimalziffern, wie z.B. #a0b0c8). Die Standardfarbe,
falls die Farbangabe weggelassen wird, ist <red>Rot</red>.
</p>
<p>
Ein Kommentar kann eine beliebige Anzahl von Farbkommandos enthalten,
aber jedes mu ein eigenes <b>[%mark ...]</b>-Tag-Feld haben.
Beispielsweise wird der Kommentartext</p>
<p>
  "Jetzt ist d6 [%mark d6] geschwcht und kann vom Springer auf
  b5 [%mark b5 #000070] angegriffen werden."
</p>
<p>
das Feld d6 <red>rot</red> und das Feld b5 in der dunkelblauen Farbe
<darkblue>#000070</darkblue> einfrben.
</p>

<h3>Pfeile einzeichnen</h3>
<p>
Sie knnen mit einem speziellen Kommentar-Kommando, hnlich dem oben
beschriebenen zum Frben von Feldern, einen Pfeil von einem Feld zum
anderen zeichnen.
Das Format ist:
</p>
<ul>
<li><b>[%arrow vonFeld nachFeld farbe]</b><li>
</ul>
<p>
wobei <b>vonFeld</b> und <b>nachFeld</b> Feldbezeichnungen wie d4
sind und <b>farbe</b> ein bekannter Farbname (wie z.B. red, blue4, etc.)
oder RGB-Code (wie #a0b0c0) ist.
Ohne Farbangabe wird standardmig <red>Rot</red> genommen.
</p>
<p>
Beispiel: Der Kommentartext
</p>
<p>
"Springer auf c3 und Lufer auf c4 kontrollieren das schwache Feld d5.
 [%arrow c3 d5 red] [%arrow c4 d5 blue]"
</p>
<p>
zeichnet einen roten Pfeil von c3 nach d5 und einen blauen von c4 nach d5.
</p>

<p><footer>(Aktualisiert: Scid 3.2, Februar 2002)</footer></p>
}


###########################
### Crosstable window help:

set helpTitle(D,Crosstable) "Kreuztabelle"
set helpText(D,Crosstable) {<h1>Das Kreuztabellenfenster</h1>
<p>
Das Kreuztabellenfenster zeigt die Turnierkreuztabelle zur aktuellen
Partie. Jedesmal, wenn sie das Fenster aktualisieren (indem Sie den
"Aktualisieren"-Schalter anklicken, im Kreuztabellenfenster die
[Eingabe]-Taste drcken oder im <a MainWindow>Haupt</a>- oder
<a GameList>Partielisten</a>-Fenster die Tastenkombination
<b>[Strg]-[Umschalt]-X</b> bettigen), sucht Scid alle Partien
vom selben Turnier wie die aktuelle Partie.
</p>
<p>
Jede Partie, die bis zu <b>drei Monate vor oder nach</b> der aktuellen
Partie gespielt wurde und <b>exakt dieselben Turnier- und Ortsangaben</b>
enthlt, wird als Partie dieses Turniers betrachtet.
</p>
<p>
Ein Einfachklick mit der linken Maustaste auf irgendein Ergebnis in der
Kreuztabelle ldt die entsprechende Partie.
Sie knnen alle Partien des Turniers mit dem Schalter
<b>Zum Filter addieren</b> des Kreuztabellenfensters zum
<a Searches Filter>Filter</a> hinzufgen.
</p>

<h4>Mens des Kreuztabellenfensters</h4>
<p>
Im <menu>Datei</menu>-Men knnen Sie die aktuelle Tabelle im Text-,
LaTeX- oder HTML-Format in eine Datei ausgeben.
</p>
<p>
Das <menu>Ausgabe</menu>-Men erlaubt Ihnen, das Tabellenformat
auszuwhlen: <b>Jeder gegen jeden</b>, <b>Schweizer System</b>,
<b>K.o.-System</b> oder <b>Automatisch</b>.
</p>
<p>
Das Format "Jeder gegen jeden" (fr Rundenturniere) ist auf 30 Spieler
limitiert, aber "Schweizer System" (fr Turniere mit vielen Spielern)
kann bis zu 200 Spieler und 20 Runden ausgeben. Die Standardeinstellung
ist <b>Automatisch</b>, was fr jedes Turnier das beste Format auswhlt.
</p>
<p>
Beachten Sie, da Scid den <b>Runden</b>-Eintrag jeder Partie verwendet,
um eine Kreuztabelle nach Schweizer System zu erstellen, Sie werden daher
keine Partien in der Schweizer-System-Tabelle sehen, wenn sie keine
numerischen Runden-Angaben haben:  1, 2, 3, etc.
</p>
<p>
Im Ausgabe-Men knnen Sie auch das Format der Datenausgabe nach Ihren
Wnschen einstellen, um Wertungszahlen, Lnder oder Titel ein- oder
auzublenden. Sie knnen auch whlen, ob beim Schweizer System die
Farbzuteilung angezeigt werden soll.
</p>
<p>
Die Option <b>Punktgruppen</b> wirkt sich nur dann auf das Aussehen der
Tabelle aus, wenn die Spieler nach Punkten sortiert werden: sie bewirkt
das Einfgen einer Leerzeile zwischen Spielergruppen mit gleicher Punktzahl.
</p>
<p>
Das Men <menu>Sortieren</menu> erlaubt es Ihnen, die Spieler nach
Namen, Elo-Zahlen oder Punkten zu sortieren; Standardeinstellung ist
nach Punkten.
</p>
<p>
Das <menu>Farben</menu>-Men ermglicht es Ihnen, Farbausgabe (Hypertext)
ein- oder auszuschalten. Da es sehr zeitaufwendig ist, groe Kreuztabellen
in HTML zu formatieren und auszugeben, wird Ihnen die Option <b>Text</b>
bei groen Turnieren eine Menge Zeit einsparen.
Allerdings knnen Sie im Text-Modus keine Spieler oder Partien anklicken.
</p>

<h4>Dubletten in Kreuztabellen</h4>
<p>
Um sinnvolle Resultate mit der Kreuztabelle zu erzielen, sollten Sie
Dubletten zum Lschen markieren, und Ihre Partien sollten eine
einheitliche Schreibweise fr Spieler-, Orts- und Turniernamen haben.
Zu Hilfen beim Lschen der Dubletten und Editieren (oder berprfen
der Schreibweisen) von Spieler-, Turnier-, Ortsnamen siehe die Seite
<a Maintenance>Datenbank-Wartung</a>.
</p>

<p><footer>(Aktualisiert: Scid 3.1, Dezember 2001)</footer></p>
}


###########################
### Database switcher help:

set helpTitle(D,Switcher) "Datenbank-Umschalter"
set helpText(D,Switcher) {<h1>Der Datenbank-Umschalter</h1>
<p>
Der Datenbank-Umschalter bietet eine Darstellung, die es besonders
einfach macht, zwischen Datenbanken zu wechseln oder Dateien zu kopieren.
Der Name, <a Searches Filter>Filter</a>-Status und Icon jeder Datenbank
werden angezeigt, und die aktive Datenbank ist durch einen gelben
Hintergrund hervorgehoben.
</p>
<p>
Sie knnen den Datenbank-Umschalter aus dem <menu>Fenster</menu>-Men
starten oder durch die Tastenkombination <b>Strg+D</b>.
</p>
<p>
Um alle ausgewhlten (gefilterten) Dateien einer Datenbank in eine andere
zu kopieren, ziehen Sie sie mit gedrckter linker Maustaste in das Zielfeld.
Sie sehen dann eine Nachfrage (falls die Zieldatenbank nicht die
<a Clipbase>Ablage</a> ist), ob die Dateien kopiert werden sollen, oder
eine Fehlermeldung, falls die Dateien nicht kopiert werden knnen
(z.B. wenn die gewhlte Datenbank nicht geffnet ist).
</p>
<p>
Drcken Sie die rechten Maustaste ber einer Datenbank, erscheint ein
Kontextmen zu dieser Datenbank, mit dem Sie das Datenbank-Icon ndern oder
den <a Searches Filter>Filter</a> zurcksetzen knnen.
In diesem Men knnen Sie auch die Fensterausrichtung ndern (um die
Datenbankfelder vertikal oder horizontal anzuordnen), was fr kleinere
Bildschirme recht ntzlich ist.
</p>

<p><footer>(Aktualisiert: Scid 3.1, Dezember 2001)</footer></p>
}


######################
### Email window help:

set helpTitle(D,Email) "Email-Fenster"
set helpText(D,Email) {<h1>Das Email-Fenster</h1>
<p>
Scids Email-Manager ermglicht es Ihnen, Ihre Email-Fernschachkorrespondenz
zu verwalten.
Wenn Sie kein Email-Schach  spielen, ist dies fr Sie nicht von
Interesse. Aber wenn Sie Fernschach per Email spielen, knnen Sie
Ihre Email-Nachrichten direkt von Scid aus versenden!
</p>
<p>
Um den Email-Manager zu benutzen:
<ul>
<li><b>1)</b> Erstellen Sie die Partie(en) fr Ihren Gegner
    in der Datenbank. </li>
<li><b>2)</b> Whlen Sie <b>Hinzufgen</b> im Email-Manager und geben
    Sie die Daten Ihrer Gegner ein: Name, Email-Adresse und die Zahl
    der Partien in der Datenbank. </li>
<li><b>3)</b> Whlen Sie <b>Email versenden</b> im Email-Fenster, wenn
    Sie Partiezge ausgefhrt haben und eine Nachricht versenden wollen. </li>
</ul>

<p>
Wenn Sie eine E-Mail verschicken, erstellt Scid die Nachricht mit den
Partien im PGN-Format <b>ohne</b> jegliche Kommentare, Anmerkungen oder
Varianten, denn Sie wollen Ihrem Gegner in der Regel nicht Ihre Analysen
zeigen.  Bevor Sie die Nachricht verschicken, knnen Sie sie noch
editieren, um bedingte Zge oder sonstigen Text hinzuzufgen.
</p>
<p>
Fr jeden Gegner knnen Sie eine beliebige Anzahl von Partien haben;
meistens sind es eine oder zwei. Beachten Sie, da Scid nicht berprft,
ob sich die Zahl der Partien gendert hat. Passen Sie also auf, da Sie
nicht Partien lschen oder die Datenbank sortieren, nachdem Sie die Daten
Ihrer Gegner eingegeben haben, denn das wrde die Partien umstellen und
die Partienummern fr Ihre Gegner wren nicht mehr korrekt.
</p>

<h3>Einschrnkungen</h3>
<p>
Scid besitzt noch nicht die Fhigkeit, Ihren E-Mail-Ordner zu berprfen,
Sie mssen daher die Zge Ihrer Kontrahenten manuell eingeben.
</p>

<h3>Konfiguration</h3>
<p>
Eine Kopie jeder von Scid gesendeten E-Mail wird in der Datei
<b>~/.scid/scidmail.log</b> gespeichert. Wenn
Sie sie in einer anderen Datei speichern mchten, mssen Sie die Datei
<b>tcl/start.tcl</b> bearbeiten und Scid neu erstellen ("make scid").
</p>
<p>
Scid kann E-Mails ber einen SMTP-Server oder mit sendmail versenden.
Mit dem Schalter <b>Einstellungen</b> im E-Mail-Manager knnen Sie
auswhlen, welche Mglichkeit Sie verwenden wollen.
</p>
<p>
Scid speichert die Daten Ihrer Gegner fr eine Datenbank in einer Datei
mit demselben Namen wie die Datenbank und der Endung "<b>.sem</b>".
</p>

<p><footer>(Aktualisiert: Scid 3.0, November 2001)</footer></p>
}


############################
### File Finder window help:

set helpTitle(D,Finder) "Dateifinder"
set helpText(D,Finder) {<h1>Das Dateifinderfenster</h1>
<p>
Der <term>Dateifinder</term> hilft Ihnen, Dateien jedes von Scid
benutzten Typs zu finden:  Datenbanken, <a PGN>PGN</a>-Dateien,
<a EPD>EPD</a>-Dateien und <a Repertoire>Repertoire</a>-Dateien.
</p>
<p>
Der Finder zeigt Ihnen ntzliche Informationen zu jeder Datei, wie
etwa ihre Gre (siehe unten) und Datum der letzten Modifikation.
Sie knnen jede angezeigte Datei durch einen linken Mausklick ffnen.
</p>

<h3>In Unterverzeichnissen nachsehen</h3>
<p>
Wenn Sie alle Dateien in allen Unterverzeichnissen des aktuellen
Verzeichnisses finden wollen, schalten Sie <b>Unterverzeichnisse
beachten</b> ein. Dann durchsucht Scid rekursiv jedes Unterverzeichnis
nach Dateien, die Scid ffnen kann. Wenn viele Unterverzeichnisse
vorhanden sind, kann dies eine Weile dauern, Sie sollten das also
nicht fr ein Verzeichnis nahe dem Hauptverzeichnis des Dateisystems
tun. Sie knnen die Dateisuche mit dem <b>Stop</b>-Schalter unterbrechen.
</p>

<h3>Dateigren</h3>
<p>
Die Bedeutung der vom Finder angegebenen Dateigre hngt vom Typ der
Datei ab. Fr Scid-Datenbanken und -PGN-Dateien ist es die Anzahl der
Partien. Fr EPD-Dateien ist es die Anzahl der Positionen. Fr
Repertoiredateien ist es die Anzahl der (gewhlten oder ausgeschlossenen)
Varianten.
</p>
<p>
Fr alle Dateitypen mit Ausnahme von Scid-Datenbanken ist die Dateigre
eine Schtzung durch Auswertung lediglich der ersten 64 Kilobytes der
Datei, die Gre ist daher fr Dateien grer als 64 Kilobytes
mglicherweise nicht korrekt. Geschtzte Gren werden mit einer Tilde
(~) angezeigt zum Zeichen dafr, da sie nicht exakt sind.
</p>

<p><footer>(Aktualisiert: Scid 2.7, September 2001)</footer></p>
}


#########################
### GameList window help:

set helpTitle(D,GameList) "Partieliste"
set helpText(D,GameList) {<h1>Das Partielistenfenster</h1>
<p>
Das Partielistenfenster gibt eine einzeilige Zusammenfassung jeder
Partie im aktuellen <term>Filter</term> aus.
</p>

<h3>Navigation in der Partieliste</h3>
<p>
Sie knnen in der Partieliste mit dem Schieberegler oder den vier
Schaltern unterhalb der Liste blttern.
Sie knnen auch die Tasten [Pos1], [End], [Bild auf], [Bild ab] sowie
die Cursortasten verwenden, um mit der Tastatur zu scrollen.
</p>
<p>
Sie knnen die nchste Partie in der Liste, die einen bestimmten
Text im Wei-, Schwarz-, Turnier- oder Ortsfeld enthlt, mit dem
<b>Text finden</b>-Eingabefeld finden.
</p>

<h3>Aktionen mit Partien in der Liste</h3>
<p>
Um eine Datei aus der Liste zu laden, klicken Sie sie doppelt mit
der linken Maustaste an.
Ein Klick mit der mittleren Maustaste zeigt die Anfangszge der Partie;
das ist ntzlich, wenn man vor dem Laden einer Partie die Erffnung
nachsehen will.
</p>
<p>
Die rechte Maustaste produziert ein Men fr die ausgewhlte Partie,
in dem Sie die Partie lschen (oder "entlschen") oder aus dem Filter
ausschlieen knnen. Beachten Sie, da das Lschen einer Datei lediglich
ihre Lschmarkierung setzt; sie verbleibt solange in der Datenbank,
bis Sie diese <a Compact>komprimieren</a>.
</p>

<h3>Die Partieliste konfigurieren</h3>
<p>
Um die Partieliste zu konfigurieren, klicken Sie mit der linken oder
rechten Maustaste auf eine Spaltenberschrift. Sie knnen die Breite
verndern, Spalten hinzufgen oder entfernen und die Farbe jeder
Spalte verndern.
</p>
<p>
Wenn Sie nur die Spaltenbreite ndern wollen, dafr gibt es eine
Tastenkombination: klicken Sie bei gedrckter <b>[Strg]</b>- (oder
<b>[Umschalt]</b>)-Taste mit der linken Maustaste auf die
Spaltenberschrift, wird die Spalte kleiner, mit der rechten
Maustaste, wird sie breiter.
</p>

<h3>Gre der Partieliste ndern</h3>
<p>
Die Gre der Partieliste wird jedesmal in der Optionsdatei gespeichert,
wenn Sie Ihre Einstellungen sichern.
Wenn Sie also wollen, da die Dateiliste standardmig 10 Partien anzeigt,
verndern Sie einfach die Gre des Partielistenfensters und whlen
dann <b>Optionen speichern</b> im <menu>Optionen</menu>-Men.
</p>

<h3><name Browsing>Partien betrachten und mischen</name></h3>
<p>
Das Kontextmen der Partieliste (und einiger andere Fenster, wie etwa
des <a Reports Opening>Erffnungsbericht</a>-Fensters und der Liste der
<a Tree Best>beste(n) Partien</a> des <a Tree>Zugbaum</a>-Fensters)
erlauben die Auswahl, eine Partie zu laden, zu betrachten oder zu
mischen.
</p>
<p>
Wenn <term>Partie betrachten</term> ausgewhlt wird, werden die Zge
der ausgewhlten Partie (ohne Kommentare oder Varianten) in einem
separaten Fenster ausgegeben. Das ist eine ntzliche Methode, um eine
andere Partie im voraus anzuschauen, ohne die aktuell geladene Partie
zu berhren.
</p>
<p>
Die Funktion <term>Partie mischen</term> ermglicht es, die ausgewhlte
Partie als Variante der aktuellen Partie einzufgen. Scid findet den
letztmglichen Zeitpunkt, wo die gewhlte Partie von der aktuellen
abweicht (unter Bercksichtigung von Zugumstellungen), und fgt an
dieser Position eine Variante ein. Sie knnen die Zahl der angezeigten
Zge der gewhlten Partie ndern, je nachdem, ob Sie die ganze Partie
oder nur die Erffnungsphase hinzufgen wollen.
</p>

<p><footer>(Aktualisiert: Scid 3.2, Februar 2002)</footer></p>
}


#######################
### Import window help:

set helpTitle(D,Import) "Importfenster"
set helpText(D,Import) {<h1>Das Importfenster</h1>
<p>
Scids Importfenster ermglicht es Ihnen, auf einfache Weise eine
Partie im <a PGN>PGN-Format</a> aus einer anderen Anwendung oder
einem anderen Fenster in Scid einzufgen.
</p>
<p>
In den groen Fensterbereich tippen oder fgen Sie den Partietext im
PGN-Format ein, und im grauen Bereich darunter erscheinen
Fehlermeldungen oder Warnungen.
</p>

<h3>Die aktuelle Partie im Importfenster bearbeiten</h3>
<p>
Das Importfenster bietet auch eine weitere, bequeme Mglichkeit fr
nderungen an der aktuellen Partie: Sie knnen die aktuelle Partie in
das Importfenster einfgen (mit dem Schalter <b>Aktuelle Partie
einfgen</b>), den Text editieren und danach auf <b>Import</b> klicken.
</p>

<h3>PGN-Tags im Importfenster</h3>
<p>
Scid erwartet PGN-Eintrge ("header tags") wie
<ul>
<li> <b>[Result "*"]</b> </li>
</ul>
vor den Zgen, aber Sie knnen auch ein Partiefragment wie
<ul>
<li> <b>1.e4 e5 2.Bc4 Bc5 3.Qh5?! Nf6?? 4.Qxf7# 1-0</b> </li>
</ul>
ohne PGN-Tags einfgen, und Scid wird es importieren.
</p>

<h3>PGN-Dateien in Scid verwenden</h3>
<p>
Wenn Sie eine PGN-Datei in Scid verwenden wollen, ohne sie vorher mit
<a Pgnscid>pgnscid</a> zu konvertieren, gibt es zwei Mglichkeiten.
</p>
<p>
Zum einen knnen Sie die Partien der Datei mit der Men-Option
<menu>Werkzeuge: Datei mit PGN-Partien importieren ...</menu> importieren.
</p>
<p>
Die Alternative wre, die PGN-Datei direkt in Scid zu ffnen. Allerdings
werden PGN-Dateien nur zum Lesen geffnet und bentigen mehr Speicher als
eine vergleichbare Scid-Datenbank, diese Mglichkeit ist also nur fr
relativ kleine PGN-Dateien zu empfehlen.
</p>

<p><footer>(Aktualisiert: Scid 2.5, Juni 2001)</footer></p>
}


########################
### Reports help:

set helpTitle(D,Reports) "Berichte"
set helpText(D,Reports) {<h1>Berichte</h1>
<p>
Bei Scid ist ein <term>Bericht</term> ein Dokument, das Informationen ber
eine bestimmte Position und/oder einen bestimmten Spieler enthlt. Scid
kann zwei Berichtstypen erstellen: Erffnungsberichte und Spielerberichte.
</p>

<h3><name Opening>Erffnungsberichte</name></h3>
<p>
Scid kann einen <term>Erffnungsbericht</term> erstellen, der interessante
Informationen ber die aktuelle Erffnungsposition ausgibt. Um den
Erffnungsbericht zu erstellen, vergewissern Sie sich als erstes, da die
dargestellte Position auch die ist, fr die Sie den Bericht haben wollen,
dann whlen Sie <b>Erffnungsbericht</b> im Men <menu>Werkzeuge</menu>.
</p>
<p>
Das <term>Erffnungsberichts</term>-Fenster gibt die Ergebnisse des von
Scid erstellten Berichts aus. Das <b>Datei</b>-Men enthlt Optionen,
um den Bericht in einer Datei zu speichern, im Text-, HTML- oder
<a LaTeX>LaTeX</a>-Format.
</p>
<p>
Die ersten Abschnitte des Berichts prsentieren Informationen zu den
Partien, die die Berichtsposition erreicht haben, und zu den Zgen, die
in dieser Stellung gespielt wurden. Sie knnen erkennen, ob die Erffnung
populrer wird, ob sie zu vielen Kurzremisen fhrt und mit welchen
Zugfolgen (Zugumstellungen) sie erreicht wird.
</p>
<p>
Der Abschnitt ber positionelle Themen informiert ber die Hufigkeit
bestimmter typischer Themen der Berichtspartien. Zu diesem Zweck werden
die ersten 20 Zge (also die ersten 40 Positionen ab Ausgangsstellung)
jeder Partie untersucht. Um als eine Partie eingestuft zu werden, die
ein bestimmtes Thema enthlt, mu dieses Thema mindestens viermal
innerhalb der ersten 20 Zge der Partie vorkommen. Damit wird vermieden,
da durch kurzzeitiges Auftreten eines Themas (wie etwa ein isolierter
Damenbauer, der sofort geschlagen wird) die Ergebnisse verflscht werden.
</p>
<p>
Der letzte und lngste Teil des Berichts ist die Theorie-Tabelle. Wenn Sie
den Bericht in einer Datei sichern, knnen Sie whlen, ob Sie nur die
Theorie-Tabelle, einen kompakten Bericht ohne die Theorie-Tabelle oder
den gesamten Bericht sichern wollen.
</p>
<p>
Fast alle Abschnitte des Berichts knnen mit den Erffnungsberichts-Optionen
eingestellt oder ein- und ausgeschaltet werden, Sie knnen also den
Bericht so anpassen, da er nur die fr Sie interesanten Informationen
enthlt.
</p>
<p>
Bei den meisten Informationen im Berichtsfenster, die farbig dargestellt
sind, fhrt ein linker Mausklick zu einer Aktion. Zum Beispiel knnen Sie
eine angefhrte Partie durch Anklicken laden oder den Filter durch
Klicken auf ein Positionsthema so einstellen, da er nur die
Berichtspartien mit diesem Thema enthlt.
</p>

<h4>Favoriten</h4>
<p>
Mit dem <menu>Favoriten</menu>-Men des Berichtsfensters haben Sie die
Mglichkeit, eine Liste bevorzugter Erffnungsbericht-Positionen zu
verwalten und sehr einfach Berichte fr genau diese Positionen zu
erstellen. Wenn Sie "Bericht hinzufgen..." im Favoriten-Men
whlen, wird die aktuelle Stellung als besondere Berichtsposition
aufgenommen. Sie werden aufgefordert, einen Namen anzugeben, der dann
als Dateiname verwendet wird, wenn Favoritenberichte erstellt werden.
</p>
<p>
Whlen Sie "Berichte erzeugen..." im Favoriten-Men, um einen Bericht
fr jede Ihrer bevorzugten Positionen aus der aktuellen Datenbank zu
erstellen. In einem Dialogfenster knnen Sie dann Typ und Format der
Berichte angeben sowie ein Verzeichnis, wo die Berichtsdateien
gespeichert werden sollen. Die passende Dateiendung fr das gewhlte
Ausgabeformat wird dann automatisch ergnzt (z.B. ".html" fr das
HTML-Format).
</p>

<h3><name Player>Spielerberichte</name></h3>
<p>
Ein <term>Spielerbericht</term> hnelt sehr stark einem Erffnungsbericht,
enthlt aber Informationen ber Partien eines einzelnen Spielers mit
Wei oder mit Schwarz. Sie knnen einen Spielerbericht ber das
Werkzeuge-Men oder aus dem <a PInfo>Spielerinformations</a>-Fenster
heraus erzeugen.
</p>
<p>
Ein Spielerbericht kann entweder fr alle Partien eines bestimmten Spielers
mit einer bestimmten Farbe erstellt werden oder nur fr die Partien, die
die aktuelle Stellung des Hauptfenster-Bretts erreicht haben.
</p>

<h3>Beschrnkungen</h3>
<p>
Fr die meisten Berichtsdaten gibt es eine Beschrnkung auf 2000 Partien,
wenn die Berichtsposition also mehr als 2000 Partien enthlt, knnen
einige Resultate etwas ungenau sein.
</p>
<p>
Auerdem gibt es ein Limit von 500 Partien fr die Theorie-Tabelle. Wenn
die Berichtsposition in mehr als 500 Partien vorkommt, werden zur
Erstellung der Theorie-Tabelle nur die 500 Partien mit den hchsten
durchschnittlichen Elo-Zahlen herangezogen. Die Anzahl der Partien zum
Aufbau der Theorie-Tabelle ist einstellbar.
</p>

<p><footer>(Aktualisiert: Scid 3.5, Februar 2003)</footer></p>
}


####################
### PGN window help:

set helpTitle(D,PGN) "PGN-Fenster"
set helpText(D,PGN) {<h1>Das PGN-Fenster</h1>
<p>
Scids PGN-Fenster gibt den Inhalt der aktuellen Partie in der
Standard-PGN-Darstellung aus. Im Partietext erscheinen Kommentare in
{geschweiften} und Varianten in (runden) Klammern.
</p>

<h3>PGN-Format</h3>
<p>
PGN (Portable Game Notation) ist ein verbreiteter Standard zum Transfer
von Schachpartien zwischen Computerprogrammen. Eine PGN-Partie besteht
aus zwei Abschnitten.
Der erste Teil ist der Vorspann ("Header"), der Eintragungen ("tags") wie
z.B.
<b>[White "Kasparov, Gary"]</b>
und
<b>[Result "1/2-1/2"]</b> enthlt.
</p>
<p>
Der zweite Abschnitt enthlt die eigentlichen Partiezge in
algebraischer Standardnotation (SAN) zusammen mit eventuellen Varianten,
<a NAGs>Kommentarsymbolen</a> und <a Comment>Kommentaren</a>.
</p>

<h3>Aktionen im PGN-Fenster</h3>
<p>
Sie knnen mit dem PGN-Fenster innerhalb der Partie navigieren: Mit
einem Linksklick auf einen Zug gehen Sie zu diesem Zug, mit einem
Linksklick auf einen Kommentar knnen Sie diesen editieren.
Die Cursortasten (sowie die Tasten <b>v</b> und <b>z</b> fr
Variante beginnen bzw. verlassen) funktionieren zum Navigieren in der
Partie genau wie im Hauptfenster.
</p>

<h3>Einstellungen fr PGN-Ausgabe</h3>
<p>
Das Men des PGN-Fensters enthlt Optionen, die die Ausgabe des Fensters
betreffen. Scid kann die Partie farbig oder als reinen Text darstellen
-- siehe das <menu>Ausgabe</menu>-Men im PGN-Fenster.
Die farbige Darstellung ist leichter zu lesen und erlaubt Ihnen, Zge und
Kommentare mit der Maus auszuwhlen, aber sie ist viel langsamer zu
aktualisieren. Fr sehr lange Partien sollten Sie vielleicht die
einfache Textausgabe whlen.
</p>
<p>
Auch das Format der Kommentare und Varianten knnen Sie verndern,
indem Sie sie zwecks besserer bersichtlichkeit eingerckt oder in
separaten Zeilen ausgeben lassen.
</p>
<p>
Die PGN-Ausgabe-Optionen und die Gre des PGN-Fensters werden, wann
immer Sie <b>Optionen speichern</b> im <menu>Optionen</menu>-Men whlen,
in der Konfigurationsdatei gesichert.
</p>

<p><footer>(Aktualisiert: Scid 3.1, Dezember 2001)</footer></p>
}


#######################
### Piece Tracker help:

set helpTitle(D,PTracker) "Figurenverteilung"
set helpText(D,PTracker) {<h1>Das Figurenverteilungsfenster</h1>
<p>
Die <term>Figurenverteilung </term> bzw. das Figurenverteilungsfenster
ist ein Werkzeug, um die Bewegungen bestimmter Figuren in allen Partien
des aktuellen Filters nachzuvollziehen und ein Bewegungsmuster (eine
"Fuspur") zu erstellen, das aufzeigt, wie oft jedes Feld von dieser
Figur besetzt wurde.
</p>
<p>
Um die Figurenverteilung zu benutzen, vergewissern Sie sich zuerst, da
der Filter die Partien enthlt, die Sie interessieren, z.B. Partien mit
einer bestimmten Erffnungsposition oder alle Wei-Partien eines
bestimmten Spielers. Dann whlen Sie die Figur, deren Bewegung Sie
nachvollziehen wollen, und whlen die unten im Text erluterten Optionen.
Danach klicken Sie auf den Schalter <b>Aktualisieren</b>.
</p>
<p>
Die Information ber die Figurenbewegungen wird auf zwei Arten dargestellt:
eine grafische "Fuspur" und eine Liste mit einer Textzeile pro Feld.
</p>

<h3>Auswahl der Figur</h3>
<p>
Die Schachfiguren sind unterhalb der "Karte" fr die "Fuspur" gem der
Ausgangsstellung angeordnet. Eine einzelne Figur (wie etwa der weie
Springer b1 oder der schwarze Bauer d7) kann mit der linken Maustaste
ausgewhlt werden, alle Figuren von gleichem Typ und gleicher Farbe
(wie z.B. alle weien Bauern oder beide schwarzen Trme) mit der
rechten Maustaste.
</p>

<h3>Weitere Einstellungen</h3>
<p>
Der Zugnummer-Bereich kontrolliert, wann die Figurenverfolgung anfangen
und enden soll. Die Standardeinstellung 1-20 (d.h. die Verfolgung endet
nach dem 20. Zug von Schwarz) ist gut geeignet zur Untersuchung von
Erffnungsthemen, aber (z.B.) ein Bereich von 15-35 wre besser, wenn
man Entwicklungen im Mittelspiel betrachten will.
</p>
<p>
Es knnen zwei Arten von Statistiken erstellt werden:
<ul>
<li> <b>% der Partien mit Zug auf das Feld</b>: zeigt, welcher Anteil
     an Filterpartien einen Zug der zu beobachtenden Figur auf jedes
     Feld enthlt. Das ist die Standardeinstellung und normalerweise
     die beste Wahl.
<li> <b>% der Zeit auf jedem Feld</b>: zeigt den Anteil der
     Verweildauer der zu beobachtenden Figur auf jedem Feld.
</ul>
</p>

<h3>Hinweise</h3>
<p>
Es gibt (mindestens) drei gute Verwendungsmglichkeiten fr die
Figurenverteilung: Erffnungsvorbereitung, Mittelspielthemen und
Spielervorbereitung.
</p>
<p>
Fr die Erffnungsvorbereitung verwenden Sie die Figurenverteilung
zusammen mit dem <a Tree>Zugbaum</a>. Indem Sie die Bewegungen von
Figuren nachvollziehen, knnen Sie Entwicklungen in der aktuellen
Erffnung erkennen, beispielsweise bliche Bauernvorste,
Springervorposten und die hufigsten Luferplazierungen. Dabei ist es
hilfreich, den Zugbereich nach dem aktuellen Partiezug beginnen zu
lassen, so da die Zge, die zur aktuellen Stellung fhrten, nicht in
die Statistik einflieen.
</p>
<p>
Fr Mittelspielthemen kann die Figurenverteilung ntzlich sein, wenn
der Filter einen bestimmten Elo-Bereich enthlt (mit der
<a Searches Header>Partiedaten-Suche</a>) oder vielleicht ein Muster
wie "Isolierter Damenbauer von Wei"
(mit der <a Searches Material>Material/Muster-Suche</a>).
Stellen Sie den Zugbereich auf einen sinnvollen Wert ein (z.B. 20-40)
und verfolgen Sie Figuren, um beispielsweise Bauernvorste im spten
Mittelspiel oder frhen Endspiel zu erkennen
</p>
<p>
Zur Spielervorbereitung verwenden Sie die
<a Searches Header>Partiedaten-Suche</a> oder die
<a PInfo>Spieler-Information</a>, um alle Partien einer Farbe eines
bestimmten Spielers zu finden. Die Figurenverteilung kann dann genutzt
werden um z.B. festzustellen, wie gern der Spieler Lufer fianchettiert,
lang rochiert oder einen Bauernkeil bis d5 oder e5 treibt.
</p>

<p><footer>(Aktualisiert: Scid 3.3, April 2002)</footer></p>
}

#####################
### Player List help:

set helpTitle(D,PList) "Spielersuche"
set helpText(D,PList) {<h1>Der Spielerfinder</h1>
<p>
Der <term>Spielerfinder</term> gibt eine Namensliste von Spielern
aus der aktuellen Datenbank aus. Die Auswahl eines Spielers ffnet
das <a PInfo>Spieler-Informations</a>-Fenster mit detaillierteren
Informationen ber diesen Spieler.
</p>
<p>
Es werden 5 Spalten ausgegeben, die jeweils den Namen, die hchste
Elo-Zahl, Anzahl der gespielten Partien sowie das Jahr der
ltesten und neueste Partie anzeigen.
Ein Klick auf eine Spalten-berschrift sortiert die Liste nach
dieser Spalte.
</p>
<p>
Die Kontrollschalter unterhalb der Liste ermglichen Ihnen, den
Inhalt der Liste zu filtern. Sie knnen die maximale Listengre
ndern, einen Spielernamen-Anfang eingeben (Gro-/Kleinschreibung
wird ignoriert, z.B. sucht "ada" nach "Adams") sowie den
Elozahlen-Bereich oder die Anzahl der gespielten Partien eingrenzen.
</p>

<p><footer>(Aktualisiert: Scid 3.4, August 2002)</footer></p>
}

#####################
### Player Info help:

set helpTitle(D,PInfo) "Spielerinformation"
set helpText(D,PInfo) {<h1>Die Spieler-Information</h1>
<p>
Das Fenster <term>Spieler-Information</term> wird jedesmal aufgebaut
oder aktualisiert, wenn Sie im Informationsbereich (unterhalb des
Schachbretts) oder im <a Crosstable>Kreuztabellen</a>-Fenster mit der
linken Maustaste auf einen Spielernamen klicken.
</p>
<p>
Es gibt (hoffentlich) ntzliche Informationen ber die Spieler aus,
einschlielich ihrer Erfolgsrate mit Wei und Schwarz, ihrer bevorzugten
Erffnungen (nach <a ECO>ECO-Code</a>) und ihrer Elo-Entwicklung.
</p>
<p>
Jede Prozentangabe ist das Ergebnis, das man aus Sicht des Spielers
erwartet (Erfolgsrate) -- d.h. ein hherer Wert ist fr die Spieler
immer besser, ob als Wei oder Schwarz.
</p>
<p>
Sie knnen die ELO-Entwicklung des Spielers grafisch dargestellt
sehen, wenn Sie die Taste <a Graphs Rating>ELO-Zahl-Verlauf</a> anklicken.
</p>
<p>
Jede rot dargestellte Zahl knnen Sie mit der linken Maustaste anklicken,
um den <a Searches Filter>Filter</a> so einzustellen, da er die
entsprechenden Partien enthlt.
</p>

<p><footer>(Aktualisiert: Scid 2.5, Juni 2001)</footer></p>
}


###########################
### Repertoire editor help:

set helpTitle(D,Repertoire) "Repertoire-Editor"
set helpText(D,Repertoire) {<h1>Der Repertoire-Editor</h1>
<p>
Mit dem Repertoire-Editor knnen Sie <term>Repertoire</term>-Dateien
erstellen, lesen oder bearbeiten. Eine Repertoiredatei ist eine Liste
der Erffnungspositionen, die Sie erreichen wollen oder zu vermeiden
suchen; Sie knnen sie zur Organisation Ihrer Erffnungsprferenzen
und zur Datenbanksuche in Scid verwenden.
</p>

<h3>Repertoire-Gruppen und -Varianten</h3>
<p>
Ein Repertoire enthlt zwei Elementtypen: <term>Gruppen</term> und
<term>Varianten</term>. Gruppen sind nicht tatschlich Teil Ihres
Repertoires; sie werden nur zur Strukturierung verwendet, so wie
Verzeichnisse Dateien auf einem Datentrger strukturieren.
</p>
<p>
In einem Repertoire gibt es in zwei Arten von Varianten:
<term>eingeschlossene</term> Varianten reprsentieren Erffnungspositionen,
an denen Sie interessiert sind und die Sie erreichen wollen, und
<term>ausgeschlossene</term> Varianten, die Sie nicht spielen wollen
und zu vermeiden suchen.
Wenn Sie z.B. Angenommenes Damengambit (1.d4 d5 2.c4 dxc4) mit Schwarz
spielen und nach 3.e4 alle Zge <i>auer </i> 3...Sf6 spielen, htten
Sie 1.d4 d5 2.c4 dxc4 3.e4 als eingeschlossene Variante und 1.d4 d5 2.c4
dxc4 3.e4 Sf6 als ausgeschlossene Variante.
</p>

<h3>Kommentare und Anmerkungen</h3>
<p>
Jede Gruppe oder Variante kann Kommentare enthalten. Es gibt zwei Typen:
kurze (einzeilige) Kommentare erscheinen (in Rot) in der
Repertoire-Hierarchie neben den Zgen der Gruppe oder Variante, whrend
ein langer (mehrzeiliger) Kommentar nur angezeigt wird, wenn die Gruppe
oder Variante ausgewhlt wird.
</p>

<h3>Das Fenster des Repertoire-Editors</h3>
<p>
Die <b>linke</b> Seite des Fensters zeigt die Repertoire-Hierarchie.
Sie knnen die Gruppendarstellung mit einem Klick auf den Ordner auf-
bzw. zuklappen, und mit einem Klick auf die Zge der Gruppen oder
Varianten whlen Sie diese aus und sehen ihre Kommentare.
Eingeschlossene Varianten werden mit einem blauen Haken angezeigt,
ausgeschlossene Varianten haben ein rotes Kreuz.
</p>
<p>
Wenn eine Variante oder Gruppe einen Kurzkommentar hat, wird er hinter
den Zgen angezeigt. Wenn sie einen langen Kommentar hat, wird dies mit
<b><red>**</red></b> nach den Zgen angezeigt. Bei den Gruppen steht
nach den Zgen eine Zahl in Klammern, die die Anzahl der (ein- und
ausgeschlossenen) Varianten anzeigt, die sie jeweils enthalten.
</p>
<p>
Nach einem Rechtsklick auf eine Gruppe oder Variante erscheint ein Men
mit den verfgbaren Funktionen wie Lschen oder Statusnderung.
</p>
<p>
Die <b>rechte</b> Seite des Fensters besteht aus drei Bereichen. Der
erste enthlt die Zge der gerade ausgewhlten Variante oder Gruppe. Sie
knnen ihn mit der linken Maustaste anklicken, womit Sie die Zge in das
<a Import>Import</a>-Fenster einfgen, was recht ntzlich ist, um die
aktuelle Partie mit einer Variante des Repertoires beginnen zu lassen.
Der zweite Bereich enthlt den Kurzkommentar der Variante oder Gruppe,
der dritte Bereich ihren langen Kommentar.
</p>

<h3>Gruppen und Varianten dem Repertoire hinzufgen</h3>
<p>
Um eine Variante oder Gruppe hinzuzufgen, fhren Sie einfach ihre Zge
auf dem Schachbrett im Hauptfenster aus, whlen dann das Men
<menu>Bearbeiten</menu> im Repertoire-Editor und fgen sie als Gruppe,
eingeschlossene Variante oder ausgeschlossene Variante hinzu.
</p>
<p>
Um eine Gruppe oder Variante zu lschen, klicken Sie sie mit der rechten
Maustaste an und whlen im erschienenen Men das entsprechende Kommando.
</p>

<h3><name Search>Datenbanksuche mit Repertoire-Dateien</name></h3>
<p>
Das Men <menu>Suchen</menu> des Repertoire-Editors ermglicht es Ihnen,
mit dem Repertoire in der aktuellen Datenbank zu suchen. Jede Partie
wird mit den Positionen im Repertoire verglichen und nur dann erkannt,
wenn die <i>weitestverzweigte</i> Repertoire-Position fr eine
<i>eingeschlossene</i> Variante gefunden wurde.
</p>
<p>
Sie knnen whlen, ob Sie nach dem gesamten Repertoire oder nur nach den
ausgegebenen Varianten suchen wollen. Die Suche nach den ausgegebenen
Varianten ist nur dann sinnvoll, wenn Sie nur nach einigen Varianten
des Repertoires suchen. Beispiel: Ein Repertoire habe zwei Hauptgruppen
auf der obersten Ebene, eine fr 1.e4 und eine fr 1.d4. Wenn Sie nur
an den e4-Varianten interessiert sind, klappen Sie einfach die Gruppe
1.d4 zu und suchen dann nur nach den ausgegebenen Varianten.
</p>

<h3>Weitere Hinweise</h3>
<p>
Eine Repertoire-Datei eignet sich sehr gut zum Finden neuer Partien in
Ihrem Erffnungssystem. Beispiel: Jedesmal, wenn Sie eine PGN-Datei
erhalten und sie Ihrer Haupt-Datenbank hinzufgen (wie etwa
die ausgezeichneten wchentlichen PGN-Dateien von
<url http://www.chesscenter.com/twic/>The Week In Chess</url>),
ffnen Sie einfach die PGN-Datei in Scid und fhren eine Repertoire-Suche
durch. Dann knnen Sie die gefilterten Partien betrachten und haben
alle Partien, die in Ihrem Repertoire enthalten sind.
</p>
<p>
Sie sollten vielleicht zwei Repertoire-Dateien anlegen: eine fr Schwarz
und eine fr Wei, so da Sie mit jeder Datei getrennt suchen knnen.
</p>
<p>
Eine Repertoire-Datei kann von der Kommanozeile aus geffnet werden,
zum Beispiel:<br>
<b>scid datenbank weiss.sor</b>
</p>
<p>
Sie knnen eine Repertoire-Datei (.sor) mit jedem Editor bearbeiten,
aber passen Sie auf, da Sie nicht ihr Format verndern, sonst kann
sie von Scid nicht geladen oder gesucht werden.
</p>

<p><footer>(Aktualisiert: Scid 2.6, August 2001)</footer></p>
}


##################################
### Tournament Finder window help:

set helpTitle(D,Tmt) "Turnierfinder"
set helpText(D,Tmt) {<h1>Der Turnierfinder</h1>
<p>
Der <term>Turnierfinder</term> ermglicht es Ihnen, Turniere in der
aktuellen Datenbank zu finden. Er untersucht alle Datenbankpartien und
vergleicht Daten mit den gefundenen Turnieren. Es wird angenommen, da
zwei Partien zum selben Turnier gehren, wenn sie denselben Turnier-
und Ortseintrag haben und innerhalb von drei Monaten gespielt wurden.
</p>
<p>
Sie knnen die Liste der Turniere durch die Anzahl der Spieler und
Partien, das Datum, die durchschnittliche Elo-Zahl und das Land
einschrnken, wenn Sie die Felder unterhalb der Turnierliste ausfllen
und dann auf <b>Aktualisieren</b> klicken.
</p>
<p>
Die ausgegebene Liste kann nach Datum, Spielerzahl, Partienzahl,
durchschnittliche Elo-Zahl, Ort, Turnier oder Nachname des Gewinners
sortiert werden. Whlen Sie die Kategorie im
<menu>Sortieren</menu>-Men oder klicken Sie auf die Spaltenberschrift,
um das Sortierkriterium zu ndern.
</p>
<p>
Um die erste Partie eines der aufgefhrten Turniere zu laden, klicken
Sie einfach mit der linken Maustaste, wenn die entsprechende Zeile
hervorgehoben ist. Damit wird auch das
<a Crosstable>Kreuztabellen</a>-Fenster aktualisiert, falls es geffnet
ist.
Wenn Sie statt dessen die rechte Maustaste drcken, wird die Partie
geladen und das Kreuztabellenfenster geffnet, auch wenn es vorher
geschlossen war.
</p>
<p>
Es ist eine gute Idee, zur Beschleunigung des Suchprozesses den
Datenbereich angemessen einzuschrnken (z.B. hchstens einige Jahre)
oder ein einzelnes Land auszuwhlen (mit dem 3stelligen
Standard-Lndercode). Damit wird die Zahl der Partien, die Scid bei
der Konstruktion von Turnieren aus den Partien bercksichtigen mu,
auerordentlich verringert.
</p>

<p><footer>(Aktualisiert: Scid 3.3, April 2002)</footer></p>
}


####################
### Tree window help:

set helpTitle(D,Tree) "Zugbaum"
set helpText(D,Tree) {<h1>Das Zugbaumfenster</h1>
<p>
Das <term>Zugbaum</term>-Fenster liefert Informationen ber alle Zge,
die in der aktuellen Position in den Datenbankpartien gespielt wurden.
Im Zugbaum-Modus wird das Fenster automatisch aktualisiert, sowie sich
die Stellung im Hauptfenster ndert. Fr groe Datenbanken ist das
evtl. etwas langsam.
</p>
<p>
Jedesmal, wenn das Zugbaumfenster aktualisiert wird, wird der
<a Searches Filter>Filter</a> zurckgesetzt, und nur die Partien, die
die die aktuelle Position enthalten, sind erfat.
</p>
<p>
Ein Klick mit der linken Maustaste auf einen Zug im Zugbaumfenster
fgt diesen Zug der Partie hinzu.
</p>

<h3>Inhalt des Zugbaumfensters</h3>
<p>
Das Zugbaumfenster zeigt den <a ECO>ECO-Code</a> (falls vorhanden),
die Hufigkeit (als Anzahl der Partien und in Prozent) und die
Punkte jedes Zuges an. Die <term>Punkte</term> werden immer aus
der Sicht von <b>Wei</b> berechnet, 100% bedeutet also, alle
Weispieler gewinnen, und 0% heit nur Schwarzsiege.
</p>
<p>
Die Zge im Zugbaumfenster knnen nach Zgen (alphabetisch), ECO-Code,
Hufigkeit oder Punkten sortiert werden. Sie knnen die Sortiermethode
im Men <menu>Sortieren</menu> ndern.
</p>

<h3><name Best>Das Fenster "Beste Partien"</name></h3>
<p>
Das Zugbaumfenster besitzt ein Dateimen-Kommando und einen Schalter,
um das Fenster <term>Beste Partien</term> zu ffnen, welches eine Liste
der am hchsten bewerteten Partien des aktuell gezeigten Astes ausgibt.
Die Partien sind nach durchschnittlicher Elo-Zahl sortiert, und Sie
knnen die Liste auf Partien mit einem bestimmten Ergebnis beschrnken.
</p>

<h3><name Graph>Zugbaumgrafik</name></h3>
<p>
Das Zugbaumfenster enthlt einen mit <term>Grafik</term> bezeichneten
Schalter, der eine grafische Darstellung der relativen Erfolgsrate
jedes Zuges in der aktuellen Stellung liefert.
Alle Zge, die in mindestens 1% der Partien und mindestens 5mal
gespielt wurden, werden dargestellt.
Die prozentualen Ergebnisse werden immer aus der Perspektive von
Wei gesehen, auch wenn Schwarz am Zug ist.
</p>
<p>
In der Zugbaumgrafik ist eine rote Linie eingezeichnet, die den
Durchschnitt aller Partien in der aktuellen Position anzeigt, und der
Bereich zwischen 50 und 55% (wo der Erwartungswert der meisten
Standarderffnungen liegt) ist blau gefrbt. In Meisterpartien erreicht
Wei blicherweise etwa 55%.
</p>

<h3><name Lock>Das Zugbaumfenster anbinden</name></h3>
<p>
Jedes Zugbaumfenster ist mit einer geladenen Datenbank verbunden, so
dass, sollten mehre Datenbanken geffnet sein, auch mehrere
Zugbaumfenster parallel existieren knnen, je eines fr jede
Datenbank.
Mit dem Schalter <term>Anbinden</term> im Zugbaumfenster kann man nun
erreichen, dass eine Datenbank automatisch geschlossen wird, sobald
das zugehrige Zugbaumfenster geschlossen wird. Weiterhin werden dann
auch alle anderen, mit dem Zugbaumfenster verbundenen Fenster "Beste
Partien" oder eine Zugbaumgrafik automatisch mit geschlossen.
</p>

<h3><name Training>Training</name></h3>
<p>
Wenn der <term>Trainings</term>-Schalter im Zugbaumfenster aktiviert
ist, wird Scid jedesmal, wenn Sie einen Zug in der Partie ausfhren,
einen zufllig ausgewhlten Zug erwidern. Der Zug, den Scid auswhlt,
hngt von der Datenbankstatistik ab, d.h. ein Zug, der in 80% der
Datenbankpartien gespielt wurde, wird von Scid mit 80%iger
Wahrscheinlichkeit ausgewhlt. Diese Funktion einschalten und dann das
Zugbaumfenster verstecken (oder minimieren) und Erffnungen gegen eine
groe Datenbank spielen ist eine ausgezeichnete Methode, Ihre Kenntnisse
Ihres Erffnungsrepertoires zu testen.
</p>

<h3>Den Zugbaum in geffneten EPD-Dateien verwenden</h3>
<p>
Fr jede geffnete <a EPD>EPD-Datei</a> enthlt das Zugbaumfenster
eine weitere Spalte, die fr jede Position, die mit den angegebenen
Zgen erreicht wird, eine kurze (fnf Zeichen) Zusammenfassung des
Dateiinhalts anzeigt.
</p>
<p>
Die Zusammenfassung knnte eine Bewertung, ein Erffnungscode oder ein
Zugvorschlag sein; sie wird der Inhalt des ersten gefundenen EPD-Feldes
aus der folgenden Liste sein: <b>ce, eco, nic, pv, pm, bm, id</b>, oder
einfach des ersten EPD-Feldes, falls keines der obigen vorhanden ist.
</p>
<p>
Fr eine Beschreibung der EPD-Felder siehe die Hilfeseite
<a EPD>EPD-Dateien</a>. Wenn die Zusammenfassung das <b>ce</b>-Feld
ist, wird sie zur besseren Lesbarkeit als Bewertung in Bauern aus der
Sicht von Wei angezeigt (anstatt als Bewertung in Hundertstel Bauern
aus der Sicht der am Zug befindlichen Seite, wie sie in der EPD-Datei
gespeichert ist).
</p>

<h3>Masken zur Konfiguration der Darstellung</h3>
<p>
Benutzerdefinierte Maskendateien (.stm) knnen angelegt werden, um die
Anzeige der Statistik im Zugabaumfenster zu erweitern. Hiermit knnen
einerseits farbige Markierungen, NAG-Codes oder Kommentare fr eine
bestimmte Stellung hinzugefgt werden, um beispielsweise kritische
Positionen zu markieren.
</p>
<p>
Um Markierungen anzulegen bewegt man sich zunchst in einer
bestehenden Partie zur entsprechenden Position und klickt dann mit der
Maus die entsprechene Variante mit der rechten Taste an. Sodann knnen
aus dem sich ffnenden Kontextmenue entsprechende Markierungen
ausgewhlt oder Kommentare eingegeben werden. Nach dem Hinzufgen
entsprechender Annotationen mu die Maske mit dem Punkt
<term>Speichern</term> gesichert werden.
</p>
<p>
Masken knnen auch aus bestehenden Partien, welche Kommentare und
Varianten enthalten gefllt werden. Hierzu dient der Punkt <term>Mit
aktueller Partie fllen</term> bzw. <term>Mit Datenbank Fllen</term>
</p>

<h3>Schnellere Ergebnisse durch Zwischenspeichern</h3>
<p>
Scid nutzt fr die am hufigsten vorkommenden Positionen einen
Cachespeicher fr die Ergebnisse der Zugbaumsuche. Wenn Sie sich im
Zugbaum-Modus in einer Partie vorwrts und rckwrts bewegen, werden
Sie bemerken, da das Zugbaumfenster praktisch sofort aktualisiert
wird, wenn die gesuchte Stellung im Cachespeicher ist.
</p>
<p>
Das Zugbaumfenster hat ein Dateimen-Kommando <term>Cache-Datei
sichern</term>. Wenn Sie das auswhlen, wird der aktuelle Inhalt des
Zugbaum-Zwischenspeichers in eine Datei geschrieben (mit der Endung
<b>.stc</b>), um sptere Anwendungen des Zugbaum-Modus mit dieser
Datenbank zu beschleunigen.
</p>
<p>
Die Option <term>Cache-Datei fllen</term> im Dateimen des
Zugbaumfensters fllt die Cache-Datei mit Daten fr viele
Erffnungspositionen. Es werden etwa 100 der hufigsten
Erffnungsstellungen gesucht, dann wird die Cache-Datei geschrieben.
</p>
<p>
Das neue aufbauen des Zugbaumfensters kann erheblich beschleunigt
werden, wenn eine Datenbank nach ECO-Codes sortiert abgespeichert
wird. (Zum sortieren von Datenbanken siehe das <a
Maintenance>Wartungsfenster</a>.) Dieses Sortieren kann allerdings
viele Stunden in Anspruch nehmen. Danach kann durch einschalten der
Option <term>Schneller Modus</term> die Suche um bis zu einen Faktor
20 beschleunigt werden, wobei allerdings kleinere Ungenauigkeiten in
Kauf genommen werden mssen. Um eine schnelle Voranzeige der Statistik
zu erreichen aber trotzdem ein genaues ergenbis zu erziehlen dient die
Option <term>Schneller und Grndlicher Modus</term>
</p>
<p>
Beachten Sie, da eine Zugbaum-Cache-Datei (.stc) vllig redundant ist;
Sie knnen sie ohne Auswirkungen auf die Datenbank lschen, und
tatschlich wird sie jedesmal von Scid gelscht, wenn sie nach
irgendeiner Aktion veraltet sein knnte -- zum Beispiel nach Hinzufgen
oder Ersetzen einer Partie, oder nach Sortieren der Datenbank.
</p>

<p><footer>(Aktualisiert: Scid 3.6.26, Oktober 2008)</footer></p>
}


################
### Graphs help:

set helpTitle(D,Graphs) "Grafikfenster"
set helpText(D,Graphs) {<h1>Grafikfenster</h1>
<p>
Scid hat einige Fenster, die Informationen grafisch darstellen.
Diese werden im nachfolgenden erklrt.
</p>

<h3><name Filter>Relative und absolute Filtergrafik</name></h3>
<p>
Das Fenster <term>relative Filtergrafik</term> zeigt Entwicklungen nach Datum
oder Elo-Zahl fr die aktuellen Filterpartien im Vergleich zur gesamten
Datenbank. Das ist beispielsweise im <a Tree>Zugbaum</a>-Fenster eine
ntzliche Hilfe um zu zeigen, wie sich die Popularitt der aktuellen
Erffnungsposition in den letzten Jahren oder Jahrzehnten gendert hat
oder ob sie bei hochrangigen Spielern, etwa bei Gromeistern, besonders
beliebt ist. Jeder Punkt in der Grafik reprsentiert fr ein bestimmtes
Datum oder einen bestimmten Elo-Bereich die Anzahl der Partien im Filter
pro 1000 Partien der gesamten Datenbank.
<br><br>
Neben der relative Filtergrafik gibt es eine <term>absolute Filtergrafik</term>, die die
Partien im Filter nach der absoluten Anzahl der Partien darstellt. Es kann nach
Jahr, Elo-Zahl und Zugzahl der Partie ausgewertet werden.<br>
Mit dem kleinen Grafik-Knopf kann ein Dialog geffnet werden. Hier kann fr jede der drei
Auswertungen der Bereich (von, bis) und die Intervallgre der X-Achse
eingestellt werden. Wird "Schtzen" ausgewhlt, so wird der ELO-Wert
geschtzt (s.u.), ansonst wird ein fehlender ELO-Wert eines Spielers
mit 0 bewertet. "Schtzen aus" entspricht dabei der
min. Elo-Auswertung im Statistik-Fenster. Die Decaden sind fest eingestellt, bitte hier die Jahres-Option benutzen.
Mit dem "Aktualisieren"-Knopf kann man sofort eine neue Auswertung erstellen, ohne den Dialog verlassen zu mssen.
<br>
Bitte beachten: Bei kleinen Intervallen und groem Bereich, kann die Auswertung etwas lnger dauern und die bersichtlichkeit geht verloren.
</p>
<p>

Wenn die Filtergrafik nach Elo-Zahl ausgegeben wird, verwendet Scid
fr jede Partie die durchschnittliche (mittlere) Wertung. Geschtzte
Elo-Zahlen (wie z.B. aus der Schreibkorrekturdatei) werden nicht verwendet.
Falls in einer Partie nur einer der beiden Spieler eine Elo-Zahl hat,
wird angenommen, da der Gegner die gleiche Elo-Zahl besitzt bis zu
einer Hchstgrenze von 2200. Wenn also beispielsweise ein Spieler eine
Elo-Zahl von 2500 hat und sein Gegner keine Elo-Zahl, ist die mittlere
Wertungszahl (2500+2200)/2 = 2350.
</p>

<h3><name Rating>ELO-Zahl-Verlauf</name></h3>
<p>
Das Fenster <term>ELO-Zahl-Verlauf</term> zeigt die Entwicklung der
Elo-Zahl(en) eines Spieler oder beider Spieler der aktuellen Partie.
Sie knnen den Graphen fr einen einzelnen Spieler mit dem Schalter
<term>ELO-Zahl-Verlauf</term> im Fenster <a PInfo>Spielerinformation</a>
erzeugen oder fr beide Spieler der aktuellen Partie, indem Sie
<term>ELO-Zahl-Verlauf</term> im <menu>Werkzeuge</menu>-Men auswhlen.
</p>

<h3><name Score>Partie-Bewertungsgraph</name></h3>
<p>
Das Fenster <term>Partie-Bewertungsgraph</term> zeigt die numerische
Bewertung (Stand) der aktuellen Partie, wie sie in den Kommentaren
gespeichert ist, als Graphen.
Sie knnen mit der linken Maustaste irgendwo auf den Graphen klicken,
um zu der korrespondierenden Partiestellung zu gelangen.
</p>
<p>
Zwei Typen von Bewertungs-Kommentaren werden erkannt: die von Scids
<a Analysis>Analyse</a>-Fenster erstellten (welche das Format
<ul>
<li><b>1.e4 {"+0.25 ...."}</b></li>
</ul>
haben und immer aus der Sicht von Wei bewerten) und die vom
Crafty-Kommando "Kommentieren" erstellten (die das Format
<ul>
<li><b>1.e4 ({9:+0.25} ....)</b></li>
</ul>
haben und ebenfalls aus der Perspektive von Wei bewerten).
</p>

<h3><name Tree>Zugbaumgrafik</name></h3>
<p>
Das Fenster <term>Zugbaumgrafik</term> ist aus dem Zugbaumfenster
zu erreichen. Es zeigt die Erfolgsrate der hufigsten Zge in der
aktuellen Position. Weitere Informationen finden Sie auf der
<a Tree Graph>Zugbaum</a>-Hilfeseite.
</p>

<p><footer>(Aktualisiert: Scid 3.6.21, Nov 2007)</footer></p>
}


####################
### Tablebases help:

set helpTitle(D,TB) "Endspieltabellen"
set helpText(D,TB) {<h1>Endspieltabellen</h1>

<p>
Eine <term>Endspieltabelle</term> ist eine Datei, die die vollstndige
Ergebnisinformation ber alle Positionen einer bestimmten
Materialkonstellation enthlt, wie z.B. Knig und Turm gegen Knig und
Bauer. Es gibt Endspieltabellen fr alle Materialkonstellation mit bis
zu 5 Steinen (inkl. Knige), und einige einfache 6-Steine-Tabellen
sind ebenfalls verfgbar.
</p>
<p>
Scid kann Endspieltabellen im Nalimov-Format verwenden, die von vielen
modernen Schachprogrammen genutzt werden. Sie haben oftmals die
Dateiendung <b>.nbw.emd</b>  oder <b>.nbb.emd</b>.
</p>

<h3>Endspieltabellen in Scid verwenden</h3>
<p>
Um die Endspieltabellendateien in Scid zu verwenden, bestimmen Sie
einfach ihre Verzeichnisse mit <b>Endspieltabellen-Verzeichnis...</b>
im <menu>Optionen</menu>-Men. Sie knnen bis zu 4 Verzeichnisse
angeben, wo Ihre Endspieltabellendateien gespeichert sind. Mit dem
Schalter <b>...</b> rechts nebem dem Datei-Eingabefeld knnen Sie
eine Datei suchen, deren Verzeichnis verwendet werden soll.
</p>
<p>
Wenn eine in der Endspieltabelle gefundene Stellung erreicht wurde, zeigt
der Informationsbereich (unterhalb des Schachbretts)
Endspieltabellen-Informationen an. Sie knnen den Umfang der angezeigten
Information konfigurieren, indem Sie mit der rechten Maustaste diesen
Bereich anklicken oder im <menu>Optionen</menu>-Men den Menpunkt
<b>Partieinformation</b> whlen. Die Option "Ergebnis und bester Zug"
liefert die ntzlichste Information, ist aber oftmals sehr viel
langsamer als die Option "nur Ergebnis".
</p>

<h3>Das Endspieltabellenfenster</h3>
<p>
Sie knnen sogar noch mehr Endspieltabellen-Informationen zur aktuellen
Position erhalten, indem Sie das <term>Endspieltabellenfenster</term>
ffnen (<menu>Fenster</menu>-Men, Tastenkombination Strg+Umschalt+[=]).
Dieses Fenster zeigt das Ergebnis jedes zulssigen Zuges in der aktuellen
Stellung bei perfektem Spiel.
</p>
<p>
Das Fenster enthlt zwei Bereiche. Der bersichtsbereich (links) zeigt
die Endspieltabellen, die Scid auf Ihrem Rechner gefunden hat, mit einer
Inhaltsangabe jeder Tabelle. Der Ergebnisbereich (rechts) zeigt die
optimalen Ergebnisse aller Zge in der aktuellen, im Haupfenster
dargestellten Position.
</p>

<h4>Der bersichtsbereich</h4>
<p>
Im oberen Teil des bersichtsbereichs knnen Sie eine bestimmte
Endspieltabelle auswhlen. Die verfgbaren Tabellen werden blau
angezeigt, die brigen grau, aber Sie knnen jede Tabelle auswhlen.
Der untere Teil des bersichtsbereichs zeigt eine Inhaltsangabe
der Informationen der ausgewhlten Endspieltabelle. (Noch haben nicht
alle Endspieltabellen einen entsprechenden Datensatz in Scid.)
</p>
<p>
Diese Inhaltsangabe enthlt die Hufigkeit (wie viele Partien von
einer Million haben eine Stellung mit diesem Material erreicht,
errechnet anhand einer Datenbank mit ber 600.000 Meisterpartien),
das spteste Matt einer Seite sowie Anzahl wechselseitiger ("umgekehrter")
Zugzwangpositionen. Eine wechselseitige Zugzwangposition liegt dann vor,
wenn Wei am Zug zum Remis fhrt und Schwarz am Zug verliert, wenn
Wei am Zug verliert und Schwarz am Zug Remis ergibt oder wenn derjenige
am Zug verliert.
</p>
<p>
Bei einigen Tabellen mit wechselseitigem Zugzwang enthlt die bersicht
eine Liste aller Zugzwangpositionen oder eine Auswahl davon. Eine
vollstndige Liste fr jede Endspieltabelle ist nicht machbar, da einige
Tabellen tausende von Zugzwangstellungen enthalten.
</p>
<p>
Mit dem Schalter <b>Random</b> knnen Sie eine zufllige Position aus
der ausgewhlten Endspieltabelle aufbauen.
</p>

<h4>Der Ergebnisbereich</h4>
<p>
Der Ergebnisbereich wird immer dann aktualisiert, wenn sich die
Brettstellung im Hauptfenster ndert. Die erste Zeile zeigt an, wie viele
Zge gewinnen (+), zum Remis fhren (=), verlieren (-) oder ein nicht
bekanntes Ergebnis (?) haben. Der brige Teil liefert Ihnen eine
detailliertere Ergebnisliste, mit der Reihenfolge krzeste bis lngste
Matts, danach Remis, dann lngste bis krzeste Verluste. Lnge jeweils
bis zum Matt.
</p>

<h4>Das Ergebnisbrett</h4>
<p>
In einer Endspieltabellenstellung ist es oft ntzlich zu wissen,
wie die Ergebnisse ausshen, wenn alle Steine in ihrer gegenwrtigen
blieben, aber ein bestimmter Stein woanders stnde. Zum Beispiel
wenn Sie feststellen mchten, wie nah ein Knig einem Freibauern sein
mu, um eine bestimmte Stellung zu gewinnen oder Remis zu machen.
In Endspielbchern wird diese Information oft die <i>Gewinnzone</i>
bzw. <i>Remiszone</i> eines Steins in einer bestimmten Stellung
genannt.
</p>
<p>
Mit Hilfe von Scid knnen Sie diese Information erhalten, wenn Sie
den Schalter mit dem Schachbrett anklicken, um das
<term>Ergebnisbrett</term> im Endspieltabellenfenster zu zeigen.
Wenn Sie mit der linken Maustaste irgendeinen Stein auf dem Brett
anklicken, erscheint auf jedem freien Feld ein Symbol mit dem Resultat
der Endspieltabelle, wenn der Stein auf diesem Feld stnde (mit derselben
Seite am Zug wie in der aktuellen Position des Hauptfensters).
</p>
<p>
Ein Feld kann fnf mgliche Symbole haben:
ein weies "<b>#</b>" bedeutet, Wei gewinnt;
ein schwarzes "<b>#</b>" bedeutet, Schwarz gewinnt;
ein blaues "<b>=</b>" bedeutet, die Stellung ist remis;
ein rotes "<b>X</b>" bedeutet, die Position ist illegal (weil die Knige
nebeneinander stehen oder die Seite am Zug Schach bietet); und
ein rotes "<b>?</b>" heit, das Result ist unbekannt, weil die ntige
Endspieltabellendatei nicht zur Verfgung steht.
</p>

<h3>Endspieltabellen-Quellen</h3>
<p>
Zur Hilfe beim Auffinden von Endspieltabellendateien im Internet
siehe die entsprechenden <a Author Related>Links</a>.
</p>

<p><footer>(Aktualisiert: Scid 3.4, September 2002)</footer></p>
}


###################
### Bookmarks help:

set helpTitle(D,Bookmarks) "Lesezeichen"
set helpText(D,Bookmarks) {<h1>Lesezeichen</h1>
<p>
Scid erlaubt Ihnen, wichtige Partien fr einen leichten spteren Zugriff
mit <term>Lesezeichen</term> zu markieren. Das Lesezeichen-Men ist aus
dem <menu>Datei</menu>-Men, der Werkzeugleiste oder mit der
Tastenkombination <B>Strg+B</b> zu erreichen.
</p>
<p>
Wenn Sie eine markierte Partie aus dem Lesezeichen-Men whlen, ffnet
Scid falls ntig die Datenbank, findet die Partie und geht zu der
Partiestellung, die mit dem Lesezeichen versehen wurde.
</p>
<p>
Nur Partien in Datenbanken im Scid-Format (keine PGN-Datei, nicht die
Ablage-Datenbank) knnen mit einem Lesezeichen markiert werden.
</p>
<p>
Wenn die Datenbank einer markierten Partie sortiert oder komprimiert
wurde, sind die Lesezeichendaten mglicherweise veraltet. Falls das
passiert, durchsucht Scid die Datenbank nach der passendsten Partie
(vergleicht Spielernamen, Ort etc.), wenn das Lesezeichen ausgewhlt
wird, die markierte Datei sollte also immer noch geladen werden. Wenn
sich allerdings Daten der markierten Partie ndern, ist es mglich,
da eine andere Partie besser auf die Lesezeichendaten pat und statt
dessen geladen wird. Es ist also eine gute Idee, eine Partie erneut zu
markieren, wenn Sie ihre Spieler-, Orts-, Ergebnis-, Runden- oder
Jahresdaten bearbeiten.
</p>

<h3>Lesezeichen bearbeiten</h3>
<p>
Mit dem Lesezeichen-Editor knnen Sie den fr jede markierte Partie
ausgegebenen Mentext ndern und Verzeichnisse erstellen, um die
Lesezeichen zu kategorisieren.
</p>

<h3>Hinweise</h3>
<p>
Sie knnen Lesezeichen zum schnellen Zugriff auf Datenbanken verwenden,
die Sie oft benutzen, indem Sie eine Partie jeder Datenbank markieren.
Eine weitere gute Verwendungsmglichkeit fr Lesezeichen ist es,
wichtige Partien hinzuzufgen, die Sie beim Studieren einer bestimmten
Schacherffnung finden.
</p>
<p>
Das Lesezeichen-Men enthlt einen Eintrag zur Kontrolle der
Verzeichnisdarstellung: sie knnen als Untermens angezeigt werden
(ntzlich bei sehr vielen Lesezeichen) oder als einzelne Liste.
</p>

<p><footer>(Aktualisiert: Scid 3.0, November 2001)</footer></p>
}


##############################
### Command-line options help:

set helpTitle(D,Cmdline) "Kommandozeilen-Optionen"
set helpText(D,Cmdline) {<h1>Kommandozeilen-Optionen</h1>
<p>
Wenn Sie Scid von der Shell oder Konsole starten, knnen Sie
Kommandozeilen-Optionen spezifizieren. Datenbanken im Scid-Format (mit
oder ohne Dateiendung wie z.B. ".si3") und PGN-Dateien, die geffnet
werden sollen, knnen angegeben werden. Beispiel:
<ul>
<li> <b> scid datenbank partien.pgn</b></li>
</ul>
startet Scid und und ffnet die Scid-Datenbank "datenbank" und die
PGN-Datei "partien.pgn".
</p>
<p>
Auerdem gibt es optionale Argumente, die kontrollieren, welche Dateien
Scid suchen und beim Start verwenden soll. Sie knnen die Benutzung
von <a TB>Endspieltabellen</a>  mit der Option <b>-xtb</b> (oder
<b>-xt</b>) ausschalten, das Laden der Datei zur
<a ECO>ECO-Erffnungsklassifikation</a> mit <b>-xeco</b> oder
<b>-xe</b> verhindern und mit <b>-xspell</b> oder <b>-xs</b> vermeiden,
da die Datei zur <a Maintenance Spellcheck>Schreibkorrektur</a>
geladen wird. Die Option <b>-fast</b> oder <b>-f</b> bewirkt das in
einem, d.h. <b>scid -f</b> ist quivalent zu
<b>scid -xeco -xspell -xtb</b>.
</p>

<p><footer>(Aktualisiert: Scid 3.1, November 2001)</footer></p>
}


####################
### Compaction help:

set helpTitle(D,Compact) "Datenbank komprimieren"
set helpText(D,Compact) {<h1>Datenbank komprimieren</h1>
<p>
Datenbank-<term>Komprimierung</term> ist ein besonderer Teil der
<a Maintenance>Wartung</a>, der die Datenbank so klein und effizient
wie mglich hlt.
Eine Datenbank komprimieren heit, jeden ungenutzten Bereich in ihren
Dateien zu lschen.
Es gibt zwei Arten: Namens- und Partiendatenbank-Komprimierung.
</p>

<h3>Namendatenbank-Komprimierung</h3>
<p>
Nach einer gewissen Zeit werden Sie evtl. feststellen, da die Datenbank
eine Reihe von Spieler-, Turnier- oder Rundennamen enthlt, die in keiner
Partie mehr verwendet werden. Das wird regelmig nach Namenskorrekturen
der Fall sein. Die unbenutzten Namen verschwenden Speicherplatz in der
Namendatei und knnen die Suche nach Namen verlangsamen.
Namendatenbank-Komprimierung lscht alle Namen, die nicht in irgendeiner
Partie verwendet werden.
</p>

<h3>Partiendatenbank-Komprimierung</h3>
<p>
Immer, wenn eine Partie ersetzt oder gelscht wird, verbleibt
ungenutzter Platz in der Partiendatei (die grte der drei Dateien
einer Scid-Datenbank). Partiendatenbank-Komprimierung lscht jeden
ungenutzten Speicher, keine gelschte Datei bleibt in der Datenbank.
Beachten Sie, da diese Operation unumkehrbar ist: nach der
Komprimierung sind die gelschten Dateien fr immer verschwunden!
</p>
<p>
Partiendatenbank-Komprimierung ist auch empfehlenswert nach dem
<a Sorting>Sortieren</a> einer Datenbank, um die Reihenfolge
innerhalb der Partiendatei mit der sortierten Indexdatei synchron
zu halten.
</p>

<p><footer>(Aktualisiert: Scid 2.5, Juni 2001)</footer></p>
}


####################################
### Database maintenance tools help:

set helpTitle(D,Maintenance) "Datenbank-Wartung"
set helpText(D,Maintenance) {<h1>Datenbank-Wartung</h1>
<p>
Scid stellt einige Funktionen zur Datenbank-Wartung zur Verfgung,
die aus dem <a Menus File>Datei</a>-Men zu erreichen sind. Die
Datenbank-<a Compact>Komprimierung</a> und -<a Sorting>Sortierung</a>
werden in separaten Hilfeseiten erklrt.
</p>

<h3>Das Wartungsfenster</h3>
<p>
Die meisten Datenbank-Wartungsarbeiten in Scid knnen aus dem
Wartungsfenster erledigt werden, welches man mit dem Men
<menu>Datei: Wartungsfenster</menu> oder <menu>Fenster</menu>
oder der Tastenkombination <b>Strg+M</b> ffnen kann.
</p>
<p>
Sie knnen in diesem Fenster <a Flags>Partie-Markierungen</a>
bearbeiten, Schreibkorrekturen durchfhren, eine Datenbank
<a Compact>komprimieren</a> oder <a Sorting>sortieren</a>.
Alle Operationen, die fr die aktuelle Datenbank nicht zur Verfgung
stehen (z.B., weil sie schreibgeschtzt oder eine PGN-Datei ist),
werden durch graue Schrift angezeigt.
</p>

<h3><name Twins>Dubletten lschen</name></h3>
<p>
Das Men <menu>Datei: Wartung</menu> hat ein Kommando <menu>Dubletten
lschen...</menu>, um Kopien von Partien (Dubletten) in der Datenbank
zu entdecken. Dieses Kommando findet alle Paare von doppelten Partien
und markiert die krzere Partie als gelscht, whrend die lngere Partie
erhalten bleibt. Zwei Partien werden als gleich angesehen, wenn ihre
Spieler (und alle anderen optionalen Partieeintrge) exakt bereinstimmen.
</p>
<p>
Wenn Sie die Option "gleiche Zge" angeben, mssen zwei Partien die
gleichen Partiezge bis zur Lnge der krzeren Partie haben (oder bis
zum 60. Zug, je nachdem, was zuerst eintritt), um Dubletten zu sein.
</p>
<p>
Wenn Sie Dubletten gelscht haben, ist es eine gute Idee zu berprfen,
ob jede gelschte Partie tatschlich Kopie einer anderen Partie ist.
Das knnen Sie ganz einfach machen, wenn Sie die Option "<b>Filter auf
Dubletten setzen</b>" im Dialogfenster "Dubletten lschen" gewhlt
haben. Der Filter wird dann alle gelschten Partien enthalten. Sie knnen
sie mit dem <term>Dublettenprfer</term> (erreichbar aus dem
Wartungsmen oder mit der Tastenkombination <b>Strg+Umsch+T</b>)
betrachten (blttern mit den Tasten <b>p</b> und <b>n</b>), um zu
verifizieren, da jede Partie deshalb gelscht wurde, weil sie
tatschlich die Dublette einer anderen Partie ist.
</p>

<h3><name Editing>Spieler, Turniere, Orte und Runden editieren</name></h3>
<p>
Sie haben vielleicht falsch geschriebene Namen in Iher Datenbank und
wollen sie korrigieren. Sie knnen das in Scid mit dem
<term>Namenseditor</term> (Tastenkombination: <b>Strg+Umsch+N</b>), den
Sie aus dem Untermen <menu>Datei: Wartung</menu> erreichen.
</p>
<p>
Jeder eindeutige Name ist nur einmal in der Namendatei gespeichert,
mit einer Namensnderung werden daher tatschlich alle Vorkommen
gendert.
</p>

<h3><name Spellcheck>Schreibkorrektur</name></h3>
<p>
Zu Scid gehrt eine <term>Schreibkorrektur</term>-Datei namens
<b>spelling.ssp</b>, um Namen von Spielern, Turnieren, Orten und Runden
zu korrigieren.
Scid versucht die Datei beim Programmstart zu laden; wenn Scid sie
nicht laden kann, knnen Sie sie aus dem <menu>Optionen</menu>-Men
laden.
</p>
<p>
Wenn die Korrekturdatei erst einmal geladen ist, knnen Sie sie mit
den Schreibkorrektur-Befehlen im Men <menu>Datei: Wartung</menu>  oder
aus dem Wartungsfenster auf eine Datenbank anwenden.
</p>
<p>
Wenn Sie fr eine Datenbank eine Schreibkorrektur durchfhren, erzeugt
Scid eine Liste mit Korrekturen, die Sie editieren knnen, bevor die
Korrekturen tatschlich ausgefhrt werden. Sie knnen also jede
nicht gewollte Korrektur lschen.
</p>
<p>
Schreibkorrekturen sind insbesondere ntzlich, um eine Datenbank zu
standardisieren, damit alle Vorkommen eines bestimmten Spielers gleich
geschrieben werden.
Beispielsweise wrden mit der Standarddatei die Namen"Kramnik,V.",
"Vladimir Kramnik" und "V. Kramnik" alle zu "Kramnik, Vladimir"
berichtigt.
</p>
<p>
Die Schreibkorrekturdatei hat einen weiteren Nutzen: wenn sie geladen
ist, werden ihre Spielerdaten genutzt, um die Fenster
<a PInfo>Spielerinformation</a> und <a Crosstable>Kreuztabelle</a>
zu erweitern: Sie sehen dann die FIDE-Titel (<b>gm</b> = Internationaler
Gromeister, <b>im</b> = Internationaler Meister etc.) und
Lnderinformationen zu jedem Spieler, der in der Datei enthalten ist.
ber 6500 starke Spieler der Vergangenheit und Gegenwart sind in der
zu Scid gehrenden Datei <b>spelling.ssp</b> enthalten.
</p>

<h3><name Ratings>Elo-Zahlen zu den Partien hinzufgen</name></h3>
<p>
Der Schalter "Elo-Zahlen hinzufgen..." im Wartungsfenster veranlat
Scid, die aktuelle Datenbank nach Spielern, zu durchsuchen, die keine
Elo-Zahl haben, fr die die Schreibkorrekturdatei aber eine Elo-Zahl
des jeweiligen Spielers zum Zeitpunkt der Partie enthlt. Scid ergnzt
alle diese Elo-Zahlen automatisch. Das ist sehr ntzlich fr eine
Datenbank mit Meisterpartien, die nur wenige Elo-Angaben enthlt.
</p>
<p>
Die mit Scid gelieferte Datei "spelling.ssp" enthlt die fr diese
Funktion bentigten Elo-Zahlen nicht, aber eine grere Version von
ihr namens "ratings.ssp" steht auf der  <a Author>Scid-Website</a>
zur Verfgung.
</p>

<h3><name Cleaner>Der Bereiniger</name></h3>
<p>
Der <term>Bereiniger</term> von Scid (vom Wartungsfenster zu erreichen)
ist ein Werkzeug, um eine Reihe von Wartungsarbeiten fr eine Datenbank
in einem durchzufhren. Sie knnen whlen, welche Aufgaben Sie erledigen
wollen, und Scid fhrt sie fr die Datenbank aus, ohne weitere Eingaben
des Benutzers zu bentigen. Das ist besonders bei der Wartung sehr
groer Datenbanken hilfreich.
</p>

<h3>Partien automatisch laden</h3>
<p>
Der <term>Automatische Lader</term> ldt jedesmal, wenn Sie die
Datenbank ffnen, eine Partie automatisch. Um die Partie, die geladen
wird, zu ndern, whlen Sie den Schalter "Automatisch Partie Nr.
laden..." Wenn Sie jedesmal die letzte Partie der Datenbank geffnet
haben wollen (unabhngig von der Anzahl der Partien in der Datenbank),
whlen Sie einfach eine besonders groe Zahl wie 9999999.
</p>

<p><footer>(Aktualisiert: Scid 3.1, Dezember 2001)</footer></p>
}


##############
### ECO guide:

set helpTitle(D,ECO) "ECO-Fhrer"
set helpText(D,ECO) {<h1>ECO-Erffnungsklassifikation</h1>
<p>
Scid kann Schachpartien gem der <b>ECO</b>- (Enzyklopdie der
Schacherffnungen) -Erffnungsklassifikation einordnen. Ein
Standard-ECO-Code besteht aus einem Buchstaben (A..E) gefolgt von
zwei Ziffern, so da es 500 verschiedene Standard-ECO-Codes gibt.
</p>

<h3>Scids Erweiterung des ECO-Systems</h3>
<p>
Das ECO-System ist sehr limitiert und fr moderne Partien nicht
ausreichend: einige der 500 Codes sieht man praktisch berhaupt nicht
mehr, whrend einige andere sehr hufig vorkommen. Um diese Situation
zu verbessern, erlaubt Scid eine optionale Erweiterung der
ECO-Basiscodes: jeder Code kann um einen Buchstaben (a..z) erweitert
werden, wobei eine weitere Ergnzung (noch eine Ziffer, 1..4) mglich
ist, aber noch nicht in Scids Standard-ECO-Datei benutzt wird.
Ein erweiterter Scid-ECO-Code sieht also etwa aus wie "<b>A41e</b>"
oder "<b>E99b2</b>". Viele der in modernen Meisterpartien vorkommenden
blichen ECO-Codes haben eine in Scids ECO-Datei definierte
Erweiterung.
</p>

<h3><name Browser>Die ECO-Auswertung</name></h3>
<p>
Das Fenster <term>ECO-Auswertung</term> zeigt Ihnen die Positionen,
die zur Klassifizierung jedes ECO-Codes verwendet werden, sowie die
Hufigkeit und Erfolgsrate der ECO-Codes in der der aktuellen Datenbank.
</p>
<p>
Der obere Teil zeigt die Hufigkeit jedes ECO-Codes in der aktuellen
Datenbank. Die Balken in der Grafik haben drei Bereiche: der unterste
(hellste Farbe) steht fr die Anzahl der Weisiege, der mittlere fr
die Zahl der Remis und der oberste (dunkelste) fr die Anzahl der
Schwarzsiege. Damit knnen Sie auf einen Blick die Charakteristik einer
Erffnung erkennen: z.B., ob Wei sehr erfolgreich ist oder ob Remis
hufig vorkommen.
</p>
<p>
Um zu einem tieferen ECO-Niveau zu gehen, klicken Sie mit der linken
Maustaste auf einen Balken in der Grafik (oder tippen Sie den
korrespondierenden Buchstaben (bzw. Ziffer) ein). Um auf ein hheres
Niveau zurckzugehen, klicken Sie mit der rechten Maustaste irgendwo
auf die Grafik oder drcken Sie die linke Cursortaste (oder [Entf]
oder [Rck]).
</p>
<p>
Der untere Teil zeigt die Positionen, die ein bestimmter ECO-Code
enthlt, und zwar entsprechend der von Ihnen geladenen ECO-Datei.
</p>

<h3>Die ECO-Datei laden</h3>
<p>
Die zu Scid gehrende ECO-Datei heit <b>scid.eco</b>, und Scid
versucht sie beim Programmstart zu laden.
Falls Scid sie nicht findet, mssen Sie folgendes tun, um die
ECO-Klassifikation zu ermglichen:
<ul>
<li>(a) Mit dem Menpunkt <menu>Optionen: ECO-Datei laden</menu>
        whlen Sie die Datei <b>scid.eco</b>. </li>
<li>(b) Speichern Sie die Optionen (im <menu>Optionen</menu>-Men). </li>
</ul>
Nachdem Sie das getan haben, wird die ECO-Datei jedesmal geladen, wenn
Sie Scid starten.
</p>

<h3>Das ECO-Code-System</h3>
<p>
Die Basisstruktur des ECO-Systems ist folgende:
</p>
<p>
<b><blue><run ::windows::eco::Refresh A>A</run></blue></b>
    1.d4 Sf6 2...;  1.d4 ...;  1.c4;  1.Verschiedenes
<ul>
<li>  <b>A0</b>  1.<i>Verschiedenes</i>
      (<b>A02-A03</b> 1.f4: <i>Bird-Erffnung</i>,
      <b>A04-A09</b>  1.Sf3: <i>Reti, Knigsindischer Angriff</i>) </li>
<li>  <b>A1</b>  1.c4 ...: <i>Englisch</i> </li>
<li>  <b>A2</b>  1.c4 e5: <i>Englisch, Knigsbauer</i> </li>
<li>  <b>A3</b>  1.c4 c5: <i>Englisch, Symmetrisch</i> </li>
<li>  <b>A4</b>  1.d4 ...: <i>Damenbauer</i> </li>
<li>  <b>A5</b>  1.d4 Sf6 2.c4 ..: <i>Indische Verteidigung </i> </li>
<li>  <b>A6</b>  1.d4 Sf6 2.c4 c5 3.d5 e6: <i>Modernes Benoni </i> </li>
<li>  <b>A7</b>  A6 + 4.Sc3 exd5 5.cxd5 d6 6.e4 g6 7.Sf3 </li>
<li>  <b>A8</b>  1.d4 f5: <i>Hollndische Verteidigung</i> </li>
<li>  <b>A9</b>  1.d4 f5 2.c4 e6: <i>Hollndische Verteidigung</i> </li>
</ul>

<p>
<b><blue><run ::windows::eco::Refresh B>B</run></blue></b>   1.e4 c5;  1.e4 c6;  1.e4 d6;  1.e4 <i>Verschidenes</i>
<ul>
<li>  <b>B0</b>  1.e4 ...
      (<b>B02-B05</b>  1.e4 Sf6: <i>Aljechin-Verteidigung</i>;
      <b>B07-B09</b>  1.e4 d6: <i>Pirc</i>) </li>
<li>  <b>B1</b>  1.e4 c6: <i>Caro-Kann</i> </li>
<li>  <b>B2</b>  1.e4 c5: <i>Sizilianische Verteidigung</i> </li>
<li>  <b>B3</b>  1.e4 c5 2.Sf3 Nc6: <i>Sizilianisch</i> </li>
<li>  <b>B4</b>  1.e4 c5 2.Sf3 e6: <i>Sizilianisch</i> </li>
<li>  <b>B5</b>  1.e4 c5 2.Sf3 d6: <i>Sizilianisch</i> </li>
<li>  <b>B6</b>  B5 + 3.d4 cxd4 4.Sxd4 Sf6 5.Sc3 Sc6 </li>
<li>  <b>B7</b>  B5 + 4.Sxd4 Sf6 5.Sc3 g6: <i>Sizilianisch, Drachen</i> </li>
<li>  <b>B8</b>  B5 + 4.Sxd4 Sf6 5.Sc3 e6: <i>Sizilianisch, Scheveninger</i> </li>
<li>  <b>B9</b>  B5 + 4.Sxd4 Sf6 5.Sc3 a6: <i>Sizilianisch, Najdorf</i> </li>
</ul>

<p>
<b><blue><run ::windows::eco::Refresh C>C</run></blue></b>   1.e4 e5;  1.e4 e6
<ul>
<li>  <b>C0</b>  1.e4 e6: <i>Franzsische Verteidigung</i> </li>
<li>  <b>C1</b>  1.e4 e6 2.d4 d5 3.Sc3: <i>Franzsisch, Winawer/Klassisch</i> </li>
<li>  <b>C2</b>  1.e4 e5: <i>Offene Partie</i> </li>
<li>  <b>C3</b>  1.e4 e5 2.f4: <i>Knigsgambit</i> </li>
<li>  <b>C4</b>  1.e4 e5 2.Sf3: <i>Offene Partie</i> </li>
<li>  <b>C5</b>  1.e4 e5 2.Sf3 Sc6 3.Lc4: <i>Italienisch; Zweispringerspiel</i> </li>
<li>  <b>C6</b>  1.e4 e5 2.Sf3 Sc6 3.Lb5: <i>Spanische Partie</i> </li>
<li>  <b>C7</b>  1.e4 e5 2.Sf3 Sc6 3.Lb5 a6 4.La4: <i>Spanisch</i> </li>
<li>  <b>C8</b>  C7 + 4...Sf6 5.0-0: <i>Spanisch, Geschlossen und Offen</i>
      (<b>C80-C83</b>  5.0-0 Sxe4: <i>Spanisch, Offenes System</i>;
      <b>C84-C89</b>  5.0-0 Le7: <i>Spanisch, Geschlossenes System</i>) </li>
<li>  <b>C9</b>  C8 + 5...Le7 6.Te1 b5 7.Lb3 d6: <i>Spanisch, Geschlossen</i> </li>
</ul>

<p>
<b><blue><run ::windows::eco::Refresh D>D</run></blue></b>   1.d4 d5; 1.d4 Sf6 2.c4 g6 with 3...d5
<ul>
<li>  <b>D0</b>   1.d4 d5: <i>Damenbauernspiele</i> </li>
<li>  <b>D1</b>   1.d4 d5 2.c4 c6: <i>Slawisch</i> </li>
<li>  <b>D2</b>  1.d4 d5 2.c4 dxc4: <i>Angenommenes Damengambit</i> </li>
<li>  <b>D3</b>  1.d4 d5 2.c4 e6: <i>Abgelehntes Damengambit</i> </li>
<li>  <b>D4</b>  D3 + 3.Sc3 Sf6 4.Sf3 c5/c6: <i>Semi-Tarrasch; Semi-Slawisch</i> </li>
<li>  <b>D5</b>  D3 + 3.Sc3 Sf6 4.Lg5: <i>Klassisches Damengambit</i> </li>
<li>  <b>D6</b>  D5 + 4...Le7 5.e3 0-0 6.Sf3 Sbd7: <i>Orthodoxes Damengambit</i> </li>
<li>  <b>D7</b>  1.d4 Sf6 2.c4 g6 with 3...d5: <i>Grnfeld-Indisch</i> </li>
<li>  <b>D8</b>  1.d4 Sf6 2.c4 g6 3.Sc3 d5: <i>Grnfeld-Indisch</i> </li>
<li>  <b>D9</b>  1.d4 Sf6 2.c4 g6 3.Sc3 d5 4.Sf3: <i>Grnfeld-Indisch</i> </li>
</ul>

<p>
<b><blue><run ::windows::eco::Refresh E>E</run></blue></b>   1.d4 Sf6 2.c4 e6; 1.d4 Sf6 2.c4 g6 </li>
<ul>
<li>  <b>E0</b>  1.d4 Sf6 2.c4 e6: <i>Katalanisch etc.</i> </li>
<li>  <b>E1</b>  1.d4 Sf6 2.c4 e6 3.Sf3 (b6): <i>Damenindisch etc.</i> </li>
<li>  <b>E2</b>  1.d4 Sf6 2.c4 e6 3.Sc3 (Lb4): <i>Nimzo-Indisch etc.</i> </li>
<li>  <b>E3</b>  E2 + 4.Lg5 or 4.Dc2: <i>Nimzo-Indisch</i> </li>
<li>  <b>E4</b>  E2 + 4.e3: <i>Nimzo-Indisch, Rubinstein</i> </li>
<li>  <b>E5</b>  E4 + 4...0-0 5.Sf3: <i>Nimzo-Indisch, Hauptvariante</i> </li>
<li>  <b>E6</b>  1.d4 Sf6 2.c4 g6: <i>Knigsindisch</i> </li>
<li>  <b>E7</b>  1.d4 Sf6 2.c4 g6 3.Sc3 Lg7 4.e4: <i>Knigsindisch</i> </li>
<li>  <b>E8</b>  E7 + 4...d6 5.f3: <i>Knigsindisch, Smisch</i> </li>
<li>  <b>E9</b>  E7 + 4...d6 5.Sf3: <i>Knigsindisch, Hauptvarianten</i> </li>
</ul>

<p><footer>(Aktualisiert: Scid 2.5, Juni 2001)</footer></p>
}

####################
### Calvar window help:

set helpTitle(D,CalVar) "Varianten berechnen"
set helpText(D,CalVar) {<h1>Das Varianten-berechnen-Fenster</h1>
  <p>
Dieses Training ist auch als Stoyko-bung bekannt. 
Das Ziel dieser bung ist die Analyse einer komplexen Stellung und daraus so viele wie mgliche plausible Varianten zu ermitteln. Jeder Variante wird mit einer Bewertung versehen. 
  </p> 
<p><h3>Konfiguration</h3></p>
Drei Parameter werden eingestellt:
<ul>
<li>Die zur Analyse der verschiedenen Varianten eingesetze UCI-Engine</li>
<li>Zeit, in Sekunden, die zur Analyse der Stellung von der Engine verwendet wird.</li>
<li>Zeit, in Sekunden, die zur Analyse der vom Anwender eingegebenen Variante durch die Engine verwendet wird.</li>
</ul>
<p><h3>Eingabe der Varianten</h3></p>
Die Zugeingabe erfolgt durch Mausklicks auf die Felder des Brettes, allerdings wird auf dem Brett nichts angezeigt. Die angeklickten Felder erscheinen im Varianten-berechnen-Fenster. Jeder Variante wird am Ende mit einer Bewertung abgeschlossen: Es wird einer der Knpfe mit den NAG-Codes gedrckt.
  <p><h3>Auswertung der Bewertung</h3></p>
Wurde eine Variante mit einer NAG-Code-Bewertung abgeschlossen, berechnet die Engine ihre Bewertung der Variante und hngt ihre Variante und Bewertung direkt an die Benutzer-Variante an. 
  <p><h3>Fertig mit der Stellung</h3></p>
Ist der Anwender der Meinung alle besten Varianten gefunden zu haben, drckt er <b>Fertig mit Stellung</b>. Es werden dann noch alle Varianten (mit dem Kommentar <b>Fehlende Varianten</b>) mit einer hheren Bewertung als die beste Variante des Anwenders hinzugefgt. 
  
  <p><footer>(Aktualisiert: Scid 3.6.21, Dezember 2007)</footer></p>
}

####################
### EPD files help:

set helpTitle(D,EPD) "EPD-Dateien"
set helpText(D,EPD) {<h1>EPD-Dateien</h1>
<p>
Eine EPD-Datei (extended position description = erweiterte
Stellungsbeschreibung) ist eine Sammlung von Positionen, wobei jeder
Position ein Text zugeordnet ist. Wie <a PGN>PGN</a> ist EPD ein
verbreiteter Standard fr Schachinformationen.
</p>
<p>
Eine EPD-Datei hat eine Reihe definierter "<term>Opcodes</term>"(-Felder),
die in der Datei durch Semikolons (<b>;</b>) getrennt gespeichert sind,
in einem EPD-Fenster von Scid aber in separaten Zeilen dargestellt
werden, um das Bearbeiten zu erleichtern. Ein Semikolon innerhalb eines
EPD-Feldes wird von Scid als "<b>\s</b>" gespeichert, um es von den
Feldende-Markierungen zu unterscheiden.
Jede Position und ihre zugehriger Opcode wird in der EPD-Datei in
einer einzelnen Zeile gespeichert.
</p>
<p>
Standard-EPD-Opcodes sind u.a.:
<ul>
<li> <b>acd</b> Analyse-Zhler: Suchtiefe.</li>
<li> <b>acn</b> Analyse-Zhler: Anzahl der durchsuchten Knoten.</li>
<li> <b>acs</b> Analyse-Zhler: Suchzeit in Sekunden.</li>
<li> <b>bm</b> Beste Zge: aus irgendeinem Grund als beste
eingestufte Zge.</li>
<li> <b>ce</b> Stellungsbeurteilung: Beurteilung in Hundertstel Bauern
[ce = "centipawn evaluation"] aus Sicht der <b>am Zug</b>
befindlichen Seite -- beachten Sie, da sich dies vom Analysefenster
unterscheidet, welches die Einschtzung in Bauerneinheiten aus der
Sicht von Wei zeigt. </li>
<li> <b>cX</b> Kommentar (wobei <b>X</b> eine Ziffer ist, 0-9).</li>
<li> <b>eco</b> Erffnungscode des <a ECO>ECO</a>-Systems.</li>
<li> <b>id</b> Eindeutige Identifizierung dieser Stellung.</li>
<li> <b>nic</b> Erffnungscode des <i>New-In-Chess</i>-Systems.</li>
<li> <b>pm</b> Vorhergesagter Zug: der erste Zug der PV.</li>
<li> <b>pv</b> Vorhergesagte Variante: die beste Variante.</li>
</ul>
</p>
<p>
EPD-Dateien haben einen vielfachen Nutzen: Scid verwendet EPD-Dateien,
um Partien nach dem System der <a ECO>Enzyklopdie der
Schacherffnungen</a> (ECO) zu klassifizieren, und Sie knnen eine
EPD-Datei fr Ihr Erffnungsrepertoire erstellen, mit Kommentaren
zu Stellungen, die Sie regelmig auf dem Brett haben.
</p>
<p>
Mit den Optionen <menu>Neu</menu> und <menu>ffnen</menu>
im <menu>Datei</menu>-Men knnen Sie eine neue EPD-Datei erstellen
bzw. eine bestehende ffnen. Maximal vier EPD-Dateien knnen
gleichzeitig geffnet sein.
</p>

<h3>EPD-Fenster</h3>
<p>
Fr jede geffnete EPD-Datei sehen Sie ein Fenster, welches den Text zur
aktuellen Stellung zeigt. Sie mssen nicht den Schalter "Speichern"
bettigen, um nderungen des Textes zu sichern; der Text wird jedesmal
gespeichert, wenn Sie zu einer anderen Partiestellung gehen.
</p>

<h3>In EPD-Dateien navigieren</h3>
<p>
Um sich durch die Stellungen in einer EPD-Datei zu bewegen, verwenden
Sie die Kommandos <menu>Nchste Position</menu> und <menu>Vorherige
Position</menu> im <menu>Werkzeuge</menu>-Men des EPD-Fensters oder
die Tastenkombinationen <b>Strg+Ab</b> and <b>Strg+Auf</b>.
Diese Befehle gehen zur nchsten/vorherigen Position in der Datei,
wobei sie die aktuelle Partie lschen und die Ausgangsposition
herstellen.
</p>

<h3>EPD-Felder entfernen</h3>
<p>
EPD-Dateien, die Sie im Internet finden, enthalten mglicherweise
Felder, die Sie nicht interessieren und die eine Menge Speicherplatz
in der Datei verschwenden.
Beispielsweise knnte eine EPD-Datei mit Computerauswertungen die Felder
ce, acd, acn, pm, pv und id enthalten, Sie brauchen aber vielleicht
nur das ce- und pv-Feld.
</p>
<p>
Sie knnen einen EPD-Opcode mit dem Menpunkt <menu>EPD-Feld
entfernen</menu> im <menu>Werkzeuge</menu>-Men des EPD-Fensters
aus allen Stellungen in der EPD-Datei entfernen.
</p>

<h3>Die Statusanzeige des EPD-Fensters</h3>
<p>
Die Statuszeile jedes EPD-Fensters zeigt:
<ul>
<li>- den Dateistatus (<b>--</b> heit unverndert, <b>XX</b> heit
      verndert und <b>%%</b> heit schreibgeschtzt); </li>
<li>- den Dateinamen; </li>
<li>- die Anzahl der Positionen in der Datei; </li>
<li>- zulssige Zge in der aktuellen Stellung, die eine andere
Stellung in der EPD-Datei erreichen .</li>
</ul>

<p><footer>(Aktualisiert: Scid 2.5, Juni 2001)</footer></p>
}


###################
### Exporting help:

set helpTitle(D,Export) "Partien exportieren"
set helpText(D,Export) {<h1>Partien exportieren</h1>
<p>
Sie knnen die Kommandos im <menu>Werkzeuge</menu>-Men benutzen, um die
aktuelle Partie oder alle Partien im aktuellen Filter in eine Textdatei
zu exportieren.
</p>
<p>
Drei Textdatei-Formate stehen zur Verfgung: <a PGN>PGN</a> (portable
game notation), HTML (fr Webseiten) und LaTeX (ein populres
Textsatzsystem).
</p>
<p>
Beim Exportieren knnen Sie whlen, eine neue Datei zu erstellen
oder die Partien einer existierenden Partiendatei hinzuzufgen.
</p>

<h3>Diagramme</h3>
<p>
Wenn Sie im HTML- oder LaTeX-Format exportieren, fgt Scid automatisch
berall dort ein Diagramm ein, wo ein Diagramm-<a NAGs>NAG</a> ("D")
oder ein mit dem Zeichen "#" beginnender <a Comment>Kommentar</a>
in der Partie vorkommt.
</p>

<h3><name Null>Nullzge beim PGN-Export</name></h3>
<p>
Scid erlaubt es, in einer Partie <a Annotating Null>Null- (leere)
Zge</a> zu speichern, da diese beim Kommentieren mit Varianten
hilfreich sein knnen. Allerdings gibt es im PGN-Standard keine
Nullzge. Wenn Sie also Scid-Partien mit Nullzgen in eine PGN-Datei
exportieren, werden andere Programme zum PGN-Lesen nicht in der Lage
sein, die Nullzge zu lesen.
</p>
<p>
Um dieses Problem zu lsen, stellt Scid eine weitere Option bereit,
<b>Nullzge in Kommentare umwandeln</b>, wenn Partien in PGN-Format
exportiert werden. Wenn Sie eine PGN-Datei erstellen wollen, die von
anderer Software verwendet werden kann, schalten Sie diese Option ein,
und Varianten, die Nullzge enthalten, werden in Kommentare umgewandelt.
Wenn Sie jedoch eine PGN-Dateie erstellen wollen, die spter wieder
unter Beibehaltung der Nullzge von Scid importiert werden kann,
lassen Sie diese Option aus.
</p>

<h3>HTML-Export</h3>
<p>
Scid kann Partien in eine HTML-Datei exportieren. Um Diagramme einzufgen,
mssen die Diagrammbilder (im Verzeichnis "<b>bitmaps/</b>" mitgeliefert)
in einem Unterverzeichnis "<b>bitmaps/</b>" unterhalb des Verzeichnisses
sein, wo sich die HTML-Datei befindet.
</p>

<h3>LaTeX-Export</h3>
<p>
Scid kann Partien in eine LaTeX-Datei exportieren. Partien werden in
zwei Spalten pro Seite gedruckt und Zge in figuriner algebraischer
Notation.
</p>
<p>
Fr weitere Informationen siehe die Hilfeseite <a LaTeX>Scid und LaTeX</a>.
</p>

<p><footer>(Aktualisiert: Scid 3.4, Juli 2002)</footer></p>
}


####################
### Flags help:

set helpTitle(D,Flags) "Partie-Markierungen"
set helpText(D,Flags) {<h1>Partie-Markierungen</h1>

<p>
Eine <term>Markierung</term> ("flag") ist ein Kennzeichen irgendeiner
Schach-Charakteristik, die fr jede Partie der Datenbank ein- oder
ausgeschaltet werden kann. Es gibt 13 vom Benutzer einstellbare
Markierungen, die Sie direkt fr jede Partie setzen knnen. Von diesen
hat nur die Lsch-Markierung eine besondere Bedeutung: Partien, bei
denen die Lsch-Markierung eingeschaltet ist, sind zur Lschung
vorgemerkt und werden entfernt, wenn die Datenbank
<a Compact>komprimiert</a> wird.
</p>
<p>
Die anderen 12 vom Benutzer einstellbaren Markierungen und ihre
Symbole sind:
</p>

<ul>
<li>Erffnung Wei (W)</li>
<li>Erffnung Schwarz (B)</li>
<li>Mittelspiel (M)</li>
<li>Endspiel (E)</li>
<li>Neuerung (N)</li>
<li>Bauernstruktur (P)</li>
<li>Taktik (T)</li>
<li>Spiel auf dem Damenflgel (Q)</li>
<li>Spiel auf dem Kngsflgel (K)</li>
<li>Brilliant (!)</li>
<li>Patzer (?)</li>
<li>Benutzer-definiert (U)</li>
</ul>

<p>
Eine Markierung kann fr die aktuelle Partie, fr alle Partien im
Filter oder fr alle Partien der Datenbank im
<a Maintenance>Wartungs</a>-Fenster gesetzt werden.
</p>
<p>
Sie knnen die <a Searches Header>Suche nach Partiedaten</a> benutzen,
um alle Datenbankpartien zu finden, die eine bestimmte Markierung ein-
oder ausgeschaltet haben, oder die Markierungen als Teil einer
komplexeren Suche verwenden.
</p>
<p>
Da alle vom Benutzer einstellbaren Markierungen keine Bedeutung fr
Scid haben (mit Ausnahme der Lsch-Markierung), knnen Sie sie fr
Ihre eigenen Bedrfnisse  verwenden. Zum Beispiel knnten Sie die
Markierung "Spiel auf dem Kngsflgel" (K) fr Bauernstrme auf den
Knig verwenden, fr Figurenangriffe auf den Knig oder auch fr
Endspiele mit allen Bauern auf dem Knigsflgel.
</p>

<p><footer>(Aktualisiert: Scid 3.0, November 2001)</footer></p>
}


###############
### LaTeX help:

set helpTitle(D,LaTeX) "Scid und LaTeX"
set helpText(D,LaTeX) {<h1>Scid und LaTeX</h1>
<p>
Scid kann Partien und Erffnungsberichte im LaTeX-Format in Dateien
sichern. LaTeX ist eine Erweiterung von TeX, einem populren Textsatzsystem.
</p>
<p>
Um die von Scid erzeugten LaTeX-Dateien darzustellen, mssen Sie
(natrlich) LaTeX haben und das Schachzeichensatz-Paket "chess12"
installiert haben. Dieses Paket ist normalerweise nicht Teil der
LaTeX-Standardinstallation, d.h selbst wenn Sie LaTeX haben, haben
Sie vielleicht nicht den Schachzeichensatz.
</p>
<p>
Informationen zum Herunterladen und Installieren des
LaTeX-Schachzeichensatzes finden Sie auf der Seite
<url http://scid.sourceforge.net/latex.html>Using LaTeX with Scid</url>
der <url http://scid.sourceforge.net/>Scid-Website</url>.
</p>

<p><footer>(Aktualisiert: Scid 2.5, Juni 2001)</footer></p>
}


###########################
### Options and Fonts help:

set helpTitle(D,Options) "Options"
set helpText(D,Options) {<h1>Optionen und Prferenzen</h1>
<p>
Viele Optionen und Prferenzen in Scid (z.B. die Brettgre, Farben, Schachbrettmuster,
Zeichenstze und Standardwerte) kann man im <menu>Optionen</menu>-Men
verndern. Alle diese (und mehr, wie etwa das letzte Verzeichnis, aus
dem Sie eine Datenbank gelesen haben, und die Gre einiger Fenster)
werden in einer Optionendatei gesichert, wenn Sie im Optionen-Men
<b>Optionen speichern</b> whlen.
Jedesmal, wenn Sie Scid starten, wird die Optionendatei geladen.
</p>
<p>
Wenn Sie mit Windows arbeiten, ist die Optionendatei <b>options.dat</b>
im Unterverzeichnis "config" der Scids Programmdatei abgelegt. Fr Benutzer von
Unix-Betriebssystemen (wie Solaris oder Linux) ist die Datei
<b>~/.scid/scidrc</b>.
</p>

<h3><name MyPlayerNames>Ihre Spielernamen festlegen</name></h3>
<p>
Es kann sein, da Sie fr einen (oder mehrere) Spieler das Brett im
Haupfenster aus der Sicht dieses Spielers aufgestellt haben mchten,
wenn eine seiner Partien geladen wird. Sie knnen eine Liste solcher
Namen mit <b>Meine Spielernamen...</b> im Men <menu>Optionen/Schachbrett</menu>
anlegen. In dem Dialogfenster geben Sie dann einen Spielernamen pro Zeile
ein. Jokerzeichen ("<b>?</b>" fr genau ein beliebiges Zeichen, "<b>*</b>"
fr eine Zeichenkette von null oder mehr Zeichen) sind erlaubt.
</p>

<h3><name Fonts>Zeichenstze einstellen</name></h3>
<p>
Scid hat drei Basis-Zeichenstze, die in den meisten Fenstern verwendet
werden, und Sie knnen alle drei individuell anpassen. Sie heien
<b>normal</b>, <b>klein</b> und <b>fest</b>.
</p>
<p>
Der feste Zeichensatz sollte ein Zeichensatz mit fester Breite
(nicht-proportional) sein. Er wird fr den <a Tree>Zugbaum</a> und die
<a Crosstable>Kreuztabelle</a> verwendet.
</p>

<p><footer>(Aktualisiert: Scid 3.6.21, November 2007)</footer></p>
}


####################
### Pgnscid help:

set helpTitle(D,Pgnscid) "Pgnscid"
set helpText(D,Pgnscid) {<h1>Pgnscid</h1>
<p>
<term>Pgnscid</term> ist ein separates Program, das Sie zur
Konvertierung von PGN-Dateien ("portable game notation") nach
Scid-Datenbanken bentigen.
</p>
<p>
Um eine Datei namens <i>partien.pgn</i> umzuwandeln, tippen Sie
einfach
<ul>
<li> <b>pgnscid partien.pgn</b> </li>
</ul>
ein, und die Scid-Datenbank (bestehend aus den Dateien
<i>partien.si3</i>, <i>partien.sg3</i> und <i>partien.sn3</i>) wird
erstellt.
Fehlermeldungen oder Warnungen werden in die Datei <i>partien.err</i>
geschrieben.
</p>
<p>
Wenn Sie wollen, da die Datenbank in einem anderen Verzeichnis oder
mit einem anderen Namen erstellt wird, knnen Sie den Datenbanknamen
in der Kommandozeile mit angeben, zum Beispiel erstellt
<ul>
<li> <b>pgnscid partien.pgn datenbank</b> </li>
</ul>
eine Datenbank bestehend aus den Dateien <i>datenbank.si3</i>,
<i>datenbank.sg3</i> und <i>datenbank.sn3</i>.
</p>
<p>
Beachten Sie, da pgnscid (und auch scid) mit gzip komprimierte
PGN-Dateien (z.B. <b>datenbank.pgn.gz</b>) direkt lesen kann, wenn Sie
also eine groe PGN-Datei mit gzip komprimiert haben, um Speicherplatz
zu sparen, mssen Sie sie nicht zuerst dekomprimieren.
</p>

<h3>Optionen</h3>
<p>
Pgnscid akzeptiert zwei optionale Argumente vor dem Dateinamen:
<b>-f</b> und <b>-x</b>.
</p>
<p>
Die Option <b>-f</b> erzwingt das berschreiben einer existierenden
Datenbank; standardmig wandelt pgnscid nicht in eine bereits
bestehende Datenbank um.
</p>
<p>
Die Option <b>-x</b> veranlat pgnscid, Text zwischen den Partien zu
ignorieren. Gem Voreinstellung wird Text zwischen Partien als
Kommentar vor der folgenden Partie gespeichert. Diese Option betrifft
nur Text zwischen Partien; Standardkommentare innerhalb der Partien
werden weiterhin konvertiert und gespeichert.
</p>

<h3>Spielernamen formatieren</h3>
<p>
Um die Anzahl verschiedener Namensschreibweisen desselben Spielers
zu reduzieren, werden von pgnscid einige Grundformatierungen
durchgefhrt. Zum Beispiel wird die Anzahl der Leerzeichen nach einem
Komma auf eins gesetzt, Leerzeichen am Anfang oder Ende eines Namens
werden ebenso wie ein Punkt am Namensende entfernt.
Hollndische Namenszustze wie "van den" und "Van Der" werden ebenfalls
normalisiert, so da sie ein groes "V" und kleines "d" haben.
</p>
<p>
Sie knnen Spieler-, Turnier-, Orts- und Rundenbezeichnungen in Scid
bearbeiten (und sogar automatische Schreibkorrekturen durchfhren);
zu den Details siehe die Hilfeseite <a Maintenance Editing>Wartung</a>.
</p>

<p><footer>(Aktualisiert: Scid 2.5, Juni 2001)</footer></p>
}


#################
### Sorting help:

set helpTitle(D,Sorting) "Datenbank sortieren"
set helpText(D,Sorting) {<h1>Eine Datenbank sortieren</h1>
<p>
Die <term>Sortier</term>-Funktionen sortieren alle Partien einer
Datenbank. Sie knnen mehrere Sortierkriterien auswhlen.
Wenn zwei Partien nach einem Kriterium gleichrangig sind, werden
sie nach dem zweiten Kriterium sortiert, und so weiter.
</p>

<h3>Sortierkriterien</h3>
<p>
Die verfgbaren Sortierkriterien sind:
</p>
<ul>
<li> Datum (lteste Partien zuerst)
<li> Jahr (wie Datum, aber nur das Jahr wird verwendet)
<li> Turnier (Ereignis)
<li> Ort
<li> Land (die letzten 3 Buchstaben des Ortes)
<li> Runde
<li> Wei
<li> Elo-Zahl (Durchschnitt von Wei und Schwarz, hhere zuerst)
<li> Schwarz
<li> Ergebnis (Wei gewinnt, danach Remis, danach Schwarz gewinnt)
<li> Lnge (Anzahl ganzer Zge in der Partie)
<li> ECO (Code der <a ECO>Enzyklopdie der Schacherffnungen</a>)
</ul>

<h3>Sortierergebnis</h3>
<p>
Wenn Sie eine nicht schreibgeschtzte Scid-Datenbank sortieren, wird das
Sortierergebnis gesichert, so da die Reihenfolge der Datenbankpartien
dauerhaft gendert ist. Falls Sie nur eine temporre Sortierung wollen,
schtzen Sie die Datenbank zuerst gegen berschreiben mit dem Menpunkt
<menu>Datei: Schreibschutz</menu>.
</p>
<p>
Wenn Sie eine Datenbank sortieren, die schreibgeschtzt ist oder aus
einer PGN-Datei besteht, kann das Sortierergebnis nicht gesichert werden,
so da die sortierte Partiereihenfolge verloren geht, wenn die Datei
geschlossen wird.
</p>
<p>
Beachten Sie, da das Sortieren einer Datenbank den
<a Searches Filter>Suchfilter</a> zurcksetzt auf alle Partien.
</p>

<h3>Wichtiger Hinweis zum Datenbank sortieren:</h3>
<p>
Wenn eine Datenbank sortiert wurde, ist die Indexdatei gendert, die
Partiendatei aber unverndert. Das heit, das Sortieren einer Datenbank
hinterlt die Partiedatenstze der Datei in einer zuflligen
Reihenfolge relativ zur Indexdatei. Das kann die <a Tree>Zugbaum</a>-,
Positions- und Material/Muster-<a Searches>Suche</a> merklich
<b>verlangsamen</b>, Sie sollten daher nach dem Datenbank sortieren
die Partiendatei durch <a Compact>Komprimieren</a> neuorganisieren,
um gute Suchleistungen zu erhalten.
</p>

<p><footer>(Aktualisiert: Scid 2.5, Juni 2001)</footer></p>
}


####################
### NAG values help:

set helpTitle(D,NAGs) "NAG-Werte"
set helpText(D,NAGs) {<h1>Standard-NAG-Werte</h1>
<p>
Standard-NAG-Werte (Numeric Annotation Glyph = "numerisches
Anmerkungszeichen"), im <a Author Related>PGN-Standard</a> definiert,
sind:
</p>
<cyan>
<ul>
<li>  1   Guter Zug (!) </li>
<li>  2   Schwacher Zug (?) </li>
<li>  3   Ausgezeichneter Zug (!!) </li>
<li>  4   Patzer / Grober Fehler (??) </li>
<li>  5   Interessanter Zug (!?) </li>
<li>  6   Zweifelhafter Zug (?!) </li>
<li>  7   Erzwungener Zug </li>
<li>  8   Der einzige Zug; keine vernnftige Alternative </li>
<li>  9   Schlechtester Zug </li>
<li> 10   Ausgeglichene Position (=) </li>
<li> 11   Gleiche Chancen, ruhige Stellung (=) </li>
<li> 12   Gleiche Chancen, aktive Stellung (=) </li>
<li> 13   Unklare Stellung (~) </li>
<li> 14   Wei hat leichten Vorteil, steht etwas besser (+=) </li>
<li> 15   Schwarz hat leichten Vorteil, steht etwas besser (=+) </li>
<li> 16   Wei hat Vorteil, steht besser (+/-) </li>
<li> 17   Schwarz hat Vorteil, steht besser (-/+) </li>
<li> 18   Wei hat entscheidenden Vorteil (+-) </li>
<li> 19   Schwarz hat entscheidenden Vorteil (-+) </li>
<li> 20   Wei hat berwltigenden Vorteil (+-) </li>
<li> 21   Schwarz hat berwltigenden Vorteil (-+) </li>
<li> 22   Wei ist in Zugzwang </li>
<li> 23   Schwarz ist in Zugzwang </li>
<li> 24   Wei hat leichten Raumvorteil </li>
<li> 25   Schwarz hat leichten Raumvorteil </li>
<li> 26   Wei hat Raumvorteil </li>
<li> 27   Schwarz hat Raumvorteil </li>
<li> 28   Wei hat entscheidenden Raumvorteil </li>
<li> 29   Schwarz hat entscheidenden Raumvorteil </li>
<li> 30   Wei hat leichten Zeit-(Entwicklungs)vorsprung </li>
<li> 31   Schwarz hat leichten Zeit-(Entwicklungs)vorsprung </li>
<li> 32   Wei hat Zeit-(Entwicklungs)vorsprung </li>
<li> 33   Schwarz hat Zeit-(Entwicklungs)vorsprung </li>
<li> 34   Wei hat entscheidenden Zeit-(Entwicklungs)vorsprung </li>
<li> 35   Schwarz hat entscheidenden Zeit-(Entwicklungs)vorsprung </li>
<li> 36   Wei hat die Initiative </li>
<li> 37   Schwarz hat die Initiative </li>
<li> 38   Wei hat andauernde Initiative </li>
<li> 39   Schwarz hat andauernde Initiative </li>
<li> 40   Wei hat Angriff </li>
<li> 41   Schwarz hat Angriff </li>
<li> 42   Wei hat keine ausreichende Kompensation fr das Material </li>
<li> 43   Schwarz hat keine ausreichende Kompensation fr das Material </li>
<li> 44   Wei hat ausreichende Kompensation fr das Material </li>
<li> 45   Schwarz hat ausreichende Kompensation fr das Material </li>
<li> 46   Wei hat mehr als ausreichende Kompensation fr das Material </li>
<li> 47   Schwarz hat mehr als ausreichende Kompensation fr das Material </li>
<li> 48   Wei hat leichtes bergewicht im Zentrum </li>
<li> 49   Schwarz hat leichtes bergewicht im Zentrum </li>
<li> 50   Wei hat bergewicht im Zentrum </li>
<li> 51   Schwarz hat bergewicht im Zentrum </li>
<li> 52   Wei hat entscheidendes bergewicht im Zentrum </li>
<li> 53   Schwarz hat entscheidendes bergewicht im Zentrum </li>
<li> 54   Wei hat leichtes bergewicht am Knigsflgel </li>
<li> 55   Schwarz hat leichtes bergewicht am Knigsflgel </li>
<li> 56   Wei hat bergewicht am Knigsflgel </li>
<li> 57   Schwarz hat bergewicht am Knigsflgel </li>
<li> 58   Wei hat entscheidendes bergewicht am Knigsflgel </li>
<li> 59   Schwarz hat entscheidendes bergewicht am Knigsflgel </li>
<li> 60   Wei hat leichtes bergewicht am Damenflgel </li>
<li> 61   Schwarz hat leichtes bergewicht am Damenflgel </li>
<li> 62   Wei hat bergewicht am Damenflgel </li>
<li> 63   Schwarz hat bergewicht am Damenflgel </li>
<li> 64   Wei hat entscheidendes bergewicht am Damenflgel </li>
<li> 65   Schwarz hat entscheidendes bergewicht am Damenflgel </li>
<li> 66   Wei hat eine schwache Grundreihe </li>
<li> 67   Schwarz hat eine schwache Grundreihe </li>
<li> 68   Wei hat eine gut gesicherte Grundreihe </li>
<li> 69   Schwarz hat eine gut gesicherte Grundreihe </li>
<li> 70   Wei hat einen schlecht gesicherten Knig </li>
<li> 71   Schwarz hat einen schlecht gesicherten Knig </li>
<li> 72   Wei hat einen gut gesicherten Knig </li>
<li> 73   Schwarz hat einen gut gesicherten Knig </li>
<li> 74   Der weie Knig steht schlecht </li>
<li> 75   Der schwarze Knig steht schlecht </li>
<li> 76   Der weie Knig steht gut </li>
<li> 77   Der schwarze Knig steht gut </li>
<li> 78   Wei hat eine sehr schwache Bauernstruktur </li>
<li> 79   Schwarz hat eine sehr schwache Bauernstruktur </li>
<li> 80   Wei hat eine schwache Bauernstruktur </li>
<li> 81   Schwarz hat eine schwache Bauernstruktur </li>
<li> 82   Wei hat eine starke Bauernstruktur </li>
<li> 83   Schwarz hat eine starke Bauernstruktur </li>
<li> 84   Wei hat eine sehr starke Bauernstruktur </li>
<li> 85   Schwarz hat eine sehr starke Bauernstruktur </li>
<li> 86   Der weie Springer steht schlecht </li>
<li> 87   Der schwarze Springer steht schlecht </li>
<li> 88   Der weie Springer steht gut </li>
<li> 89   Der schwarze Springer steht gut </li>
<li> 90   Der weie Lufer steht schlecht </li>
<li> 91   Der schwarze Lufer steht schlecht </li>
<li> 92   Der weie Lufer steht gut </li>
<li> 93   Der schwarze Lufer steht gut </li>
<li> 94   Der weie Turm steht schlecht </li>
<li> 95   Der schwarze Turm steht schlecht </li>
<li> 96   Der weie Turm steht gut </li>
<li> 97   Der schwarze Turm steht gut </li>
<li> 98   Die weie Dame steht schlecht </li>
<li> 99   Die schwarze Dame steht schlecht </li>
<li>100   Die weie Dame steht gut </li>
<li>101   Die schwarze Dame steht gut </li>
<li>102   Die weien Figuren sind schlecht koordiniert </li>
<li>103   Die schwarzen Figuren sind schlecht koordiniert </li>
<li>104   Die weien Figuren sind gut koordiniert </li>
<li>105   Die schwarzen Figuren sind gut koordiniert </li>
<li>106   Wei hat die Erffnung sehr schwach behandelt </li>
<li>107   Schwarz hat die Erffnung sehr schwach behandelt </li>
<li>108   Wei hat die Erffnung schwach behandelt </li>
<li>109   Schwarz hat die Erffnung schwach behandelt </li>
<li>110   Wei hat die Erffnung gut behandelt </li>
<li>111   Schwarz hat die Erffnung gut behandelt </li>
<li>112   Wei hat die Erffnung sehr gut behandelt </li>
<li>113   Schwarz hat die Erffnung sehr gut behandelt </li>
<li>114   Wei hat das Mittelspiel sehr schwach behandelt </li>
<li>115   Schwarz hat das Mittelspiel sehr schwach behandelt </li>
<li>116   Wei hat das Mittelspiel schwach behandelt </li>
<li>117   Schwarz hat das Mittelspiel schwach behandelt </li>
<li>118   Wei hat das Mittelspiel gut behandelt </li>
<li>119   Schwarz hat das Mittelspiel gut behandelt </li>
<li>120   Wei hat das Mittelspiel sehr gut behandelt </li>
<li>121   Schwarz hat das Mittelspiel sehr gut behandelt </li>
<li>122   Wei hat das Endspiel sehr schwach behandelt </li>
<li>123   Schwarz hat das Endspiel sehr schwach behandelt </li>
<li>124   Wei hat das Endspiel schwach behandelt </li>
<li>125   Schwarz hat das Endspiel schwach behandelt </li>
<li>126   Wei hat das Endspiel gut behandelt </li>
<li>127   Schwarz hat das Endspiel gut behandelt </li>
<li>128   Wei hat das Endspiel sehr gut behandelt </li>
<li>129   Schwarz hat das Endspiel sehr gut behandelt </li>
<li>130   Wei hat etwas Gegenspiel </li>
<li>131   Schwarz hat etwas Gegenspiel </li>
<li>132   Wei hat Gegenspiel </li>
<li>133   Schwarz hat Gegenspiel </li>
<li>134   Wei hat entscheidendes Gegenspiel </li>
<li>135   Schwarz hat entscheidendes Gegenspiel </li>
<li>136   Wei ist in leichter Zeitnot </li>
<li>137   Schwarz ist in leichter Zeitnot </li>
<li>138   Wei ist in erheblicher Zeitnot </li>
<li>139   Schwarz ist in erheblicher Zeitnot </li>
</ul>
</cyan>

<p>
Weitere vorgeschlagene NAG-Werte fr Schachinformator-Symbole sind u.a.:
</p>
<cyan>
<ul>
<li>140   Mit der Idee ... </li>
<li>141   Gerichtet gegen ... </li>
<li>142   Besser ist </li>
<li>143   Schlechter ist </li>
<li>144   Gleichwertig ist </li>
<li>145   Anmerkung des Herausgebers ("RR") </li>
<li>146   Neuerung ("N") </li>
<li>147   Schwacher Punkt </li>
<li>148   Endspiel </li>
<li>149   Linie </li>
<li>150   Diagonale </li>
<li>151   Wei hat das Luferpaar </li>
<li>152   Schwarz hat das Luferpaar </li>
<li>153   Verschiedenfarbige Lufer </li>
<li>154   Gleichfarbige Lufer </li>
</ul>
</cyan>

<p>
Andere Vorschlge sind:
</p>
<cyan>
<ul>
<li>190   Etc. </li>
<li>191   Doppelbauern </li>
<li>192   Isolierte Bauern </li>
<li>193   Verbundene Bauern </li>
<li>194   Hngende Bauern </li>
<li>195   Rckstndiger Bauer </li>
</ul>
</cyan>

<p>
Von Scid definierte Symbole zum internen Gebrauch:
</p>
<cyan>
<ul>
<li>201   Diagramm ("D", manchmal auch "#") </li>
</ul>
</cyan>

<p><footer>(Aktualisiert: Scid 2.5, Juni 2001)</footer></p>
}


######################
### File formats help:

set helpTitle(D,Formats) "Datei-Formate"
set helpText(D,Formats) {<h1>Scids Datei-Formate</h1>
<p>
Scid-Datenbanken bestehen aus drei essentiellen Dateien: eine
Indexdatei, eine Namendatei und eine Partiendatei. Alle haben eine
zweibuchstabige Dateiendung, beginnend mit "s": ".si" fr Indexdateien,
".sn" fr Namendateien und ".sg" fr Partiendateien.
</p>

<h3>Die Indexdatei (.si)</h3>
<p>
Diese Datei enthlt eine Beschreibung der Datenbank und fr jede Partie
einen kleinen Eintrag fester Lnge. Die aktuelle Gre ist 41 Bytes
pro Partie. Von diesen sind 28 Bytes wesentliche Informationen wie
Ergebnis, Datum, Indizes fr Spieler-, Turnier-, Ortsnamen (die
tatschlichen Namen befinden sich in der Namendatei) etc.
</p>
<p>
Die verbleibenden 13 Bytes enthalten redundante, aber ntzliche
Informationen zur Partie, die zur Beschleunigung der Positions-,
Material- und Mustersuche genutzt werden. Siehe den Abschnitt
<a Formats Fast>Schnelles Suchen</a> weiter unten fr weitere
Informationen.
</p>

<h3>Die Namendatei (.sn)</h3>
<p>
Diese Datei enthlt alle Spieler-, Turnier-, Orts- und Rundennamen, die
in der Datenbank verwendet werden. Jeder Name ist nur einmal gespeichert,
auch wenn er in vielen Partien vorkommt. Die Namendatei ist blicherweise
die kleinste der drei essentiellen Datenbankdateien.
</p>

<h3>Die Partiendatei (.sg)</h3>
<p>
Diese Datei enthlt die aktuellen Zge, Varianten und Kommentare jeder
Partie. Die Zugkodierung ist sehr kompakt: die meisten Zge bentigen
nur ein Byte.
</p>
<p>
Wenn eine Partie ersetzt wird, wird ihre neue Version am <i>Ende</i>
der Datei gespeichert, so da sich ber die Zeit nicht genutzter
Speicherplatz ansammelt. Sie knnen durch <a Compact>Komprimieren</a>
die minimale Gre einer Datenbank wiederherstellen.
</p>

<h3>Andere Scid-Dateien</h3>
<p>
Eine <a EPD>EPD</a>-Datei (Dateiendung: ".epd") enthlt eine Reihe von
Schachpositionen, jede mit einem Textkommentar.
Das EDP-Dateiformat ist beim <a Author Related>PGN-Standard</a>
beschrieben.
</p>
<p>
Eine E-Mail-Datei (Dateiendung: ".sem") einer Datenbank speichert
Daten der Gegner, denen Sie E-Mails senden.
</p>
<p>
Eine Suchoptionsdatei (Dateiendung: ".sso") enthlt Einstellungen fr
eine <a Searches Header>Partiedaten</a>- oder
<a Searches Material>Material/Muster</a>-Suche.
</p>

<h3><name Fast>Schnelles Suchen in Scid</name></h3>
<p>
Wie oben erwhnt, enthlt die Indexdatei einige redundante, aber
ntzliche Informationen ber jede Partie, um Positions- oder
Materialsuchen zu beschleunigen.
</p>
<p>
Beispielsweise ist das Material der Schlustellung gespeichert. Wenn Sie
nach Turm- und Bauernendspielen suchen, werden alle Partien, die mit
einer Dame, einem Lufer oder einem Springer auf dem Brett enden,
schnell bergangen.
</p>
<p>
Eine andere ntzliche Teilinformation ist in der Reihenfolge gespeichert,
in der Bauern ihre Ausgangsstellung verlassen haben (durch Ziehen oder
Geschlagenwerden). Dies wird zur Beschleunigung von Zugbaum- oder exakten
Suchen verwendet, insbesondere nach Erffnungspositionen. Beispielsweise
wird bei der Suche nach der Ausgangsstellung der Franzsischen
Verteidigung (1.e4 e6) jede Partie, die mit 1.e4 c5 oder 1.d4 etc.
beginnt, ausgelassen, Partien, die mit 1.e4 e5 anfangen, mssen aber
immer noch durchsucht werden.
</p>

<p><footer>(Aktualisiert: Scid 2.5, Juni 2001)</footer></p>
}


################
### Contact info

set helpTitle(D,Author) "Kontakt-Information"
set helpText(D,Author) {<h1>Kontakt-Information</h1>
<p>
Die Scid Internet - Seite ist erreichbar unter: <br>
<b><url http://scid.sourceforge.net/>http://scid.sourceforge.net/</url></b>
</p>
<p>
Sie bietet Downloads der neuesten Versionen von Scid und einigen anderen
zustzlichen und ntzlichen Dateien.
</p>
<p>
Bitte senden Sie Ihre Kommentare, Fragen, Vorschlge oder Fehlerberichte
an den Autor von Scid, Shane Hudson, an folgende E-Mail-Adresse: <br>
<b>sgh@users.sourceforge.net</b>
</p>

<h3><name Related>Links</name></h3>
<p>
Falls Sie Freude an Scid haben, knnten Sie die folgenden
Internetseiten interessieren:
</p>
<ul>
<li><url http://www.tim-mann.org/chess.html>http://www.tim_mann.org/chess.html</url> --
Homepage von Tim Mann's <b>xboard & winboard</b> Programm: eine grafische
Oberflche fr Schachprogramme und Schnittstelle fr Internet Schach
Server. Sie hat auch gute Informationen ber Crafty, GNUchess und
andere Schachprogramme.</li>

<li><url ftp://ftp.cis.uab.edu/pub/hyatt/>ftp://ftp.cis.uab.edu/pub/hyatt/</url> --
das starke Schachprogram Crafty. Das <b>TB</b> -
Unterverzeichnis beinhaltet fast alle Nalimov-Endspieltabellen, welche
von einigen Schachprogrammen und auch von Scid benutzt werden.</li>

<li><url http://www.chesscenter.com/twic/>http://www.chesscenter.com/twic/</url> --
TWIC (the week in chess), ein hervorragendes Wochenmagazin fr
internationale Schachpartien, verfgbar im PGN-Format. </li>

<li><url http://scid.sourceforge.net/standard.txt>http://scid.sourceforge.net/standard.txt</url> --
der <b>PGN-Standard</b>, geschaffen von Steven J. Edwards im Jahre 1994.
Die Textdatei erklrt das PGN- und EPD-Format im Detail.</li>
</ul>

<p><footer>(Aktualisiert: Scid 2.6, August 2001)</footer></p>
}

# Book window help
set helpTitle(D,Book) "Buch-Fenster"
set helpText(D,Book) {<h1>Buch-Fenster</h1>
  <p>
 Das Buch-Fenster zeigt eine Liste aller im Buch-Verzeichnis von Scid verfgbaren Buch-Datenbanken an. Das Format der Bcher entspricht dem Format, welches von Polygot und den Engines Fruit und Toga verwendet wird.
  </p>
  <p>
 Das Buch-Fenster zeigt (aus dem ausgewhlten Buch) fr die aktuelle Position alle mglichen Zge, die im Buch enthalten sind und deren relativen Gewichtungen in Prozent an. Bei jedem Zug wird das Buch-Fenster aktualisiert. Beim Anklicken eines Zuges im Buch-Fenster wird dieser Zug in die aktuelle Stellung bernommen.
  </p>
  <p>
Zwischen den Bchern kann schnell gewechselt werden, in dem man in der oberen Liste ein anderes Buch auswhlt.
  </p>
  <p><footer>(Aktualisiert: Scid 3.6.21, Dezember 2007)</footer></p>
}

# Tactical game window help
set helpTitle(D,TacticalGame) "Trainingspartie-Fenster"
set helpText(D,TacticalGame) {<h1>Trainingspartie-Fenster</h1>
  <p>
  Hier kann eine Trainingspartie gegene eine Engine gespielt werden, die einen Gegner mit einer bestimmten ELO-Zahl simuliert.  
  Der Gegner wird von Phalanx gespielt, als Coach wird Crafty eingesetzt. Diese Engines werden automatisch ber ihre Namen ausgewhlt und sollten korrekt konfiguriert sein. Standardmig werden diese Engines bei der Installation von Scid eingerichtet. 
  </p>
  <p>
  Folgende Parameter sind einzustellen:
  <ul>
  <li>Schwierigkeit : ELO-Zahl des Gegners</li>
  <li>Auswahl der Erffnung : Der Gegner wird die ausgewhlte Erffnung spielen (ntzlich fr das Training von Erffnungen).</li>
  <li>Analysezeit der Engine: Die Zge des Spielers werden duch eine Coach-Engine berprft. Die Zeit zur berprfung des Zuges um zu Bewerten, ob der Zug gut oder schlecht war, kann eingestellt werden.</li>
  </ul>
  <p>Zum Starten der Partie "Spielen" drcken.</p> 
  <p><footer>(Aktualisiert: Scid 3.6.21, Dezember 2007)</footer></p>
}

# Opening Trainer window help
set helpTitle(D,OpeningTrainer) "Erffnungstrainer"
set helpText(D,OpeningTrainer) {<h1>Erffnungstrainer</h1>
  <p>
  Eine Scid Datenbank kann als Repertoire genutzt werden, wenn sie mit dem entsprechenden Typ/Icon markiert wurde. Die Datenbank muss einer der folgenen Typen sein:
  <li>Openings for White</li>
  <li>Openings for Black</li>
  <li>Openings for either Color</li> <br>
  Der Typ muss mit der Auswahl "Konfiguration Trainingsrepertoire" (Wei, Schwarz, Beide) bereinstimmen. Jede Partie reprsentiert eine Erffnungsvariante. 
  </p>
  
  <h3>Erffnungstrainer Statistik</h3>
  <p>
   Vier Zahlen zeigen die Statistik fr die aktuelle Stellung:
  <ul>
  <li>Grn : Anzahl bereits korrekt gespielten Zge.</li>
  <li>Gelb : Anzahl zweifelhafter gespielter Zge im Repertoire</li>
  <li>Rot : Anzahl der Zge, die nicht im Repertoire enthalten sind.</li>
  <li>Wei : Hufigkeit der Stellung</li>
  </ul>
  </p>
  
  <h3>Der Bericht</h3>
  <p>
  Der Bericht zeigt fr das ganze Repertoire Statistiken und gibt Informationen ber das Wissen des Anwenders:  
  <ul>
  <li>Positionen im Repertoire: Anzahl der Positione im Repertoire (alle Varianten in der Datenbank)</li>
  <li>nicht gespielte Positionen : Anzahl der Stellungen, die bisher nie gespielt wurden</li>
  <li>gespielte Positionen : gespielte Stellungen und die Summe wie hufig sie ausgespielt wurden. Anmerkung: Diese Zahl reprsentiert das Vorkommen der Stellung in allen Erffnungsvarianten: Diese Zahl kann fr Stellungen nahe der Startaufstellung schnell sehr gro werden.</li>
  <li>Erfolgreich : Anzahl der guten Zge durch den Spieler</li>
  <li>Zweifelhafte Zge : Anzahl der schwachen/schlechten Zge durch den Spieler</li>
  <li>Nicht im Repertoire : Anzahl der Zge des Spieler, die nicht im Repertoire enthalten sind.</li>
  </ul>
  </p> 
  <p><footer>(Aktualisiert: Scid 3.6.21, Dezember 2007)</footer></p>
}


############################################################
#
# German tip of the day

set tips(D) {
  {
    Scid hat mehr als 30 <a Index>Hilfeseiten</a> und in den meisten
    Scid-Fenstern liefert die <b>F1</b>-Taste die Hilfeseite zu diesem
    Fenster.
  }
  {
    Einige Scid-Fenster (z.B. Informationsbereich und
    Datenbank-<a Switcher>Umschalter</a>) haben ein Kontextmenu.
    Drcken Sie einfach die rechte Maustaste in jedem Fenster, um zu
    sehen, ob es ein Men hat und welche Funktionen zur Verfgung
    stehen.
  }
  {
    Scid bietet Ihnen mehr als eine Mglichkeit, Schachzge einzugeben,
    und lt Ihnen die Wahl, welche Ihnen am meisten zusagt. Sie knnen
    die Maus verwenden (mit oder ohne Zugvorschlag) oder die Tastatur
    (mit oder ohne Zugergnzung). Fr Details lesen Sie die Hilfeseite
    <a Moves>Zge eingeben</a>.
  }
  {
    Wenn Sie einige Datenbanken hufig ffnen, fgen Sie zu jeder ein
    <a Bookmarks>Lesezeichen</a> hinzu, dann knnen Sie sie schneller
    mit dem Lesezeichen-Men ffnen.
  }
  {
    Sie knnen alle Zge einer Partie (mit allen Varianten und
    Kommentaren) mit dem <a PGN>PGN-Fenster</a> betrachten. Im
    PGN-Fenster knnen Sie zu jedem beliebigen Zug gehen, indem Sie
    ihn mit der linken Maustaste anklicken oder mit der mittleren
    Maustaste eine Voransicht dieser Stellung erhalten.
  }
  {
    Sie knnen Partien mit der linken Maustaste per "Drag & Drop" im
    <a Switcher>Datenbank-Umschalter</a> von einer Datenbank in eine
    andere kopieren.
  }
  {
    Scid kann PGN-Dateien selbst dann ffnen, wenn sie mit Gzip
    komprimiert wurden (Dateiname mit Erweiterung .gz). PGN-Dateien
    werden schreibgeschtzt geffnet. Wenn Sie also eine PGN-Datei
    editieren wollen, erstellen Sie eine neue Scid-Datenbank und
    kopieren die PGN-Datei mit dem <a Switcher>Datenbank-Umschalter</a>
    dorthin.
  }
  {
    Wenn Sie eine groe Datenbank haben, die Sie oftmals mit dem
    <a Tree>Zugbaumfenster</a> nutzen, lohnt es sich,
    <b>Cache-Datei fllen</b> im Dateimen des Zugbaumfensters zu
    whlen. Damit merken Sie sich Zugbaum-Statistiken fr viele
    hufige Erffnungspositionen und beschleunigen den Zugriff auf
    den Zugbaum fr die Datenbank.
  }
  {
    Das <a Tree>Zugbaum</a>-Fenster kann Ihnen alle Zge zeigen, die
    in der aktuellen Position gespielt wurden, aber wenn Sie auch alle
    Zugfolgen sehen wollen, mit denen diese Stellung erreicht wurde,
    finden Sie diese, wenn Sie einen <a Reports Opening>Erffnungsbericht</a>
    erstellen.
  }
  {
    Klicken Sie mit der linken oder rechten Maustaste auf die berschrift
    einer Spalte im <a GameList>Partieliste</a>-Fenster , um ihre
    Breite anzupassen.
  }
  {
    Mit dem Fenster <a PInfo>Spielerinformation</a> (um es zu ffnen,
    klicken Sie einfach auf einen Spielernamen im Informationsbereich
    unter dem Hauptfenster-Schachbrett) knnen Sie auf einfache Weise
    den <a Searches Filter>Filter</a> so einstellen, da er alle Partien
    eines bestimmten Spielers mit einem bestimmten Ergebnis enthlt,
    indem Sie auf irgendeinen <red>in Rot</red> dargestellten Wert
    klicken.
  }
  {
    Beim Erffnungsstudium kann es sehr hilfreich sein, fr eine wichtige
    Position eine <a Searches Board>Brettsuche</a> mit der <b>Bauern</b>-
    oder <b>Linien</b>-Option durchzufhren, was andere Erffnungen
    entdecken knnte, die zur selben Bauernstruktur fhren.
  }
  {
    Im Informationsbereich (unterhalb des Schachbretts) knnen Sie mit
    der rechten Maustaste ein Men zur Gestaltung der Ausgabe aktivieren.
    Zum Beispiel knnen Sie Scid veranlassen, den nchsten Zug zu
    verstecken, was ntzlich ist, wenn man zum Trainieren eine Partie
    nachspielt und die Zge zu erraten versucht.
  }
  {
    Wenn Sie fr eine groe Datenbank oftmals eine umfangreiche
    Datenbank-<a Maintenance>Wartung</a> durchfhren, knnen Sie
    mehrere Wartungsarbeiten gleichzeitig mit dem
    <a Maintenance Cleaner>Bereiniger</a> ausfhren.
  }
  {
    Wenn Sie eine groe Datenbank haben, wo die meisten Partien einen
    Turniereintrag besitzen und Sie wollen die Partien nach Datum
    sortiert haben, erwgen Sie ein <a Sorting>Sortieren</a> nach
    Turnierdatum und Turnier anstatt nach Datum und Turnier, da
    Ihnen das hilft, Partien desselben Turniers mit unterschiedlichen
    Daten zusammen zu halten (natrlich unter der Voraussetzung, da
    sie alle dasselbe Turnierdatum haben).
  }
  {
    Es ist eine gute Idee, vor einem <a Maintenance Twins>Dubletten
    lschen</a> eine <a Maintenance Spellcheck>Schreibkorrektur</a>
    Ihrer Datenbank durchzufhren, da es dies Scid ermglicht, mehr
    Dubletten zu finden und zum Lschen vorzumerken.
  }
  {
    <a Flags>Markierungen</a> sind ntzlich, um Datenbankpartien mit
    Charakteristiken zu versehen, nach denen Sie zu einem spteren
    Zeitpunkt vielleicht suchen wollen, wie etwa Bauernstruktur, Taktik
    etc. Sie knnen mit der <a Searches Header>Partiedaten-Suche</a>
    nach Markierungen suchen.
  }
  {
    Wenn Sie eine Partie nachspielen und einige Zge ausprobieren
    wollen, ohne die Partie zu verndern, schalten Sie einfach den
    Testmodus ein (mit der Tastenkombination <b>Strg+Leerzeichen</b>
    oder mit dem Symbol aus der Werkzeugleiste), und wenn Sie fertig
    sind, schalten Sie ihn wieder aus, um zur ursprnglichen Partie
    zurckzukommen.
  }
  {
    Um die prominentesten Partien (Spieler mit hohen Elo-Zahlen)
    zu finden, die eine bestimmte Position erreicht haben, ffnen
    Sie das <a Tree>Zugbaum</a>-Fenster und dort die Liste der
    besten Partien. Sie knnen sogar die Liste der besten Partien
    auf Partien mit einem bestimmten Ergebnis begrenzen.
  }
  {
    Eine ausgezeichnete Methode, eine Erffnung mit Hilfe einer groen
    Datenbank zu studieren, ist, den Trainingsmodus im
    <a Tree>Zugbaum</a>-Fenster zu aktivieren und dann gegen die
    Datenbank zu spielen, um zu sehen, welche Zge hufig vorkommen.
  }
  {
    Wenn Sie zwei Datenbanken geffnet haben und die
    <a Tree>Zugbaum</a>-Statistik der ersten Datenbank sehen wollen,
    whrend Sie eine Partie der zweiten Datenbank untersuchen, drcken
    Sie einfach den Schalter <b>Anbinden</b> im Zugbaumfenster, um die
    Partie an die erste Datenbank zu binden, und wechseln dann zur
    zweiten Datenbank.
  }
  {
    Der <a Tmt>Turnierfinder</a> ist nicht nur zum Auffinden eines
    bestimmten Turniers ntzlich, sondern auch um zu sehen, an welchen
    Turnieren ein bestimmter Spieler vor kurzem teilgenommen hat,
    oder um die Spitzenturniere in einem bestimmten Land zu betrachten.
  }
  {
    Es gibt eine Reihe hufiger Stellungsmuster, die im Fenster
    <a Searches Material>Material/Muster</a>-Suche definiert sind und
    die Ihnen beim Erffnungs- oder Mittelspielstudium ntzlich sein
    knnen.
  }
  {
    Wenn Sie im Fenster <a Searches Material>Material/Muster</a>-Suche
    nach einer bestimmten Materialkonstellation suchen, ist es oftmals
    hilfreich, die Suche auf Partien zu beschrnken, die mindestens fr
    einige Halbzge auf das Suchmuster passen, um Partien auszusondern,
    wo die gesuchte Konstellation nur kurz vorkam.
  }
  {
    Wenn Sie eine wichtige Datenbank haben, die Sie nicht versehentlich
    verndern wollen, whlen Sie <b>Schreibschutz...</b> im
    <b>Datei</b>-Men, nachdem Sie sie geffnet haben, oder ndern Sie
    ihre Dateizugriffsrechte auf "nur Lesen".
  }
  {
    Wenn Sie XBoard oder WinBoard benutzen (oder ein anderes
    Schachprogramm, das Schachpositionen in FEN-Standardnotation in die
    Zwischenablage kopieren kann) und wollen dessen aktuelle
    Schachposition nach Scid kopieren, ist der schnellste und einfachste
    Weg, <b>Position sichern</b> im Dateimen von XBoard/Winboard zu
    whlen, danach <b>Stellung einfgen</b> in Scids Men "Bearbeiten".
  }
  {
    Die <a Searches Header>Partiedaten-Suche</a> ignoriert bei
    Spieler/Turnier/Ort/Runden-Namen Gro- und Kleinschreibung.  Sie
    knnen sie aber bercksichtigen und gleichzeitig
    Platzhalterzeichen verwenden (mit "?" = irgendein einzelnes
    Zeichen und "*" = null oder mehr Zeichen), wenn Sie den Suchtext
    in Anfhrungszeichen ("...")  eingeben. Beispielsweise geben Sie
    "*BEL" (mit den Anfhrungszeichen) im Ortsfeld ein, um alle in
    Belgien, nicht aber in Belgrad gespielten Partien zu finden.
  }
  {
    Wenn Sie einen Partiezug korrigieren wollen, ohne die danach
    gespielten Zge zu verlieren, ffnen Sie das
    <a Import>Import</a>-Fenster, klicken auf <b>Aktuelle Partie
    einfgen</b>, editieren den falschen Zug und whlen dann
    <b>Importieren</b>.
  }
  {
    Wenn Sie eine ECO-Klassifikationsdatei geladen haben, knnen Sie
    zur am weitest klassifizierten Position der aktuellen Partie mit
    <b>Erffnung identifizieren</b> im <b>Partie</b>-Men gehen
    (Tastenkombination: Strg+Umsch+D).
  }
  {
    Wenn Sie vor dem ffnen einer Datei ihre Gre oder das Datum ihrer
    letzten Modifikation berprfen wollen, ffnen Sie sie mit dem
    <a Finder>Dateifinder</a>.
  }
  {
    Eine <a Repertoire>Repertoire</a>-Datei ist eine ausgezeichnete
    Methode, Ihre favorisierten Erffnungsvarianten im Auge zu behalten
    und die Partien zu finden, wo diese Varianten gespielt wurden.
    Wenn Sie erst einmal Ihre Erffnungen in einer Repertoire-Datei
    gespeichert haben, knnen Sie jedesmal, wenn Sie eine neue Datei
    mit Partien haben, eine Repertoire-Suche durchfhren und die Partien
    mit Ihren favorisierten Erffnungen betrachten.
  }
  {
    Mit einem <a Reports Opening>Erffnungsbericht</a> kann man sehr gut
    mehr ber eine bestimmte Position lernen. Sie knnen die Erfolgsrate
    sehen, ob sie zu vielen Kurzremis fhrt und die typischen
    positionellen Themen.
  }
  {
    Sie knnen die gebruchlichsten Kommentarsymbole (!, !?, += etc.)
    dem aktuellen Zug oder der aktuellen Stellung mit Tastenkombinationen
    hinzufgen, ohne den Kommentareditor benutzen zu mssen -- um
    beispielsweise ein "!" hinzuzufgen, tippen Sie "!" und danach die
    Eingabetaste. Zu den Details siehe die Hilfeseite <a Moves>Zge
    eingeben</a>.
  }
  {
    Wenn Sie Erffnungen in einer Datenbank mit dem <a Tree>Zugbaum</a>
    betrachten, knnen Sie eine ntzlichen bersicht erhalten, welche
    Erfolge mit der aktuellen Erffnung in der letzten Zeit und zwischen
    Spitzenspielern erzielt wurden, indem Sie das Statistikfenster
    ffnen (Tastenkombination: Strg-I).
  }
  {
    Sie knnen die Gre des Hauptfensters ndern, indem Sie die
    <b>Strg</b>-Taste gedrckt halten und dann die Cursortaste
    <b>Links</b> oder <b>Rechts</b> drcken.
  }
  {
    Nach einer <a Searches>Suche</a> knnen Sie leicht durch alle
    passenden Partien blttern, indem Sie die <b>Strg</b>-Taste gedrckt
    halten und dann die Cursortaste <b>Auf</b> oder <b>Ab</b> drcken,
    um die vorherige bzw. nchste Partie im <a Searches Filter>Filter</a>
    zu laden.
  }
  {
    ber die Tasten <b>F2</b> und <b>F3</b> knnen direkt die letzten beiden Analyse-Engines gestartet werden, ohne dies nochmal auswhlen zu mssen. 
  }
}

############################################################
#
# German Correspondence Chess, thanks to Jochen Jansen for translation
set helpTitle(D,Correspondence) "Fernschach"
set helpText(D,Correspondence) {<h1>Fernschach</h1>

<p>
Derzeit bietet Scid zwei Wege an, um Fernschach 
zu spielen.
</p>
<ul>
   <li><b>Email Schach</b> verschickt die aktuelle Partie per Email an
   Ihren Gegner, sobald Sie Ihren Zug gemacht haben.  Zu diesem Zweck
   wird eine Email in dem von Ihnen bevorzugten Email-Programm
   generiert.  Diese Email enthlt eine PGN-Datei mit der aktuellen
   Partie als Anhang.  Von Ihnen evtl. eingefgte Kommentare oder
   Varianten werden selbstverstndlich vorher entfernt.
   </li>
   <li><b>Fernschach-Server</b> werden unter Verwendung des sog.
   Xfcc-Protokolls untersttzt. Sofern Sie bei einem solchen Server
   einen Account besitzen, holt ein externes Tool dort Ihre Partien ab
   und synchronisiert Scid entsprechend.  Sobald Sie dann ihren Zug
   gemacht haben, wird auf dem gleichen Wege wieder Ihr Zug vermittels
   Xfcc an Ihren Gegner gesendet. Das Holen und Senden wurde hier
   bewut ber ein externes Tool realisiert, da so spter einfachere
   Anpassung mglich sind, falls noch andere Protokolle erscheinen.
   </li>
</ul>
<p>
Sobald eine der Fernschachfunktionen aus dem Menue aufgerufen werden
ffnet sich das Fernschachfenster. Dieses Fenster kann auch aus dem
Fenster-Menue aus geffnet werden. Das Fernschachfenster enthlt die
ntigen Knpfe zur Navigation durch laufende Partien, um Partien via
Xfcc abzuholen und eMail-Partien zu synchronisieren. Auerdem bietet
es eine einfache Konsole zur Anzeige der gesendeten und Empfangenen
Nachrichten sowie eine Liste aller laufenden Partien aus Scids
Posteingang.
</p>

<p>
Bevor Sie irgendwelche Fernschachfunktionen nutzen knnen, mssen Sie
zuerst eine Datenbank vom Typ "Fernschach" anlegen! Erstellen Sie also
ggf. eine neue Datenbank ("Datei-> Neu..." oder Strg-C) und setzen Sie
dann im <a Maintenance>Wartungsfenster</a> den Typ der Datenbank auf
"Correspondence Chess" (Briefkastensymbol). Das Setzen dieses
Datenbanktyps ist unabdingbar, da Scid am Typ erkennt, mit welcher DB
es die empfangenen Zge abgleichen soll. Wenn wie im beschriebenen
Fall die Datenbank nach Erstellung ja noch leer ist, behandelt Scid
die empfangenen Partien automatisch als neue Partien und fgt diese an
die Datenbank an.
</p>

<p>
Falls Sie zu diesem Zeitpunkt noch keine Datenbank vom Typ
"Correspondence Chess" geffnet haben, wird Scid Sie daran erinnern.
Beachten Sie aber, nie mehr als eine Datenbank diesen Typs zu ffnen,
da Scid sonst nicht wei, welche der Datenbanken es verwenden soll.
</p>

<h3>Grundfunktionen</h3>

<p>
Wenn Sie alles korrekt eingerichtet haben, knnen Sie die
Fernschachfunktionen ganz einfach ber die folgenden Buttons erreichen
<ul>
   <li><button tb_CC_Retrieve> Abholen der Fernschach-Partien.  Ein
   externes Tool wird aufgerufen, das die Partien abholt, und alle so
   abgeholten Partien werden ebenso wie alle Partien, die sich zu
   diesem Zeitpunkt in Scids Posteingang (siehe unten)  mit der aktuell
   geffneten Fernschachdatenbank synchronisiert.
   </li>
   <li><button tb_CC_Prev> Geht zur vorigen Partie in Scids Posteingang
   </li>
   <li><button tb_CC_Next> Geht zur nchsten Partie in Scids 
   </li>
   <li><button tb_CC_Send> Schickt Ihren Zug an Ihren Gegner, in dem
   es entweder eine Email in dem von Ihnen bevorzugten Emailprogramm
   erstellt oder den Zug vermittels des Xfcc-Protokolls an einen
   Fernschachserver sendet.
   </li>
   <li><button tb_CC_delete> leert das Posteingangs- und das
   Postausgangsverzeichnis.
   </li>
   <li><button tb_CC_online> zeigt an, dass die Partienliste in der
   aktuellen Scid-Sitzung online aktualisiert wurde. Der zugehrige
   Infotip zeit das Datum und die Uhrzeit der letzten Aktualisierung.
   </li>
   <li><button tb_CC_offline> zeigt an, dass der Xfcc-Status ohne
   Aktualisierung aus den gespeicherten Werten hergestellt wurde und
   somit nicht aktuell sein mu. Der zugehrige Infotip zeit das Datum
   und die Uhrzeit der letzten Aktualisierung.
   </li>
</ul>
</p>

<p>
Bitte beachten Sie auch die Liste der <a CCIcons>Icons und Statusindikatoren</a>.
</p>

<h3>Konfiguration</h3>

<p>
Fernschach mit Scid funktioniert ber eine normale Scid-Datenbank, die
Ihre Fernschachpartien enthlt, und einigen externen Tools, die fr
Scid den "nichtschachlichen-Teil" abwickeln. Diese Tools und einige
Parameters mssen einmalig eingerichtet werden, die Einstellungen
werden fr die sptere Nutzung gespeichert.
</p>

<p>
Sie erreichen den Konfigurationsdialog aus dem Men ber
<menu>Spielen</menu> <menu>Fernschach</menu><menu>Einrichten</menu>.
Einzelheiten finden Sie unter <a CCSetupDialog>Fernschach
einrichten</a>. Das Verlassen dieses Dialogs mittels des <b>[Ok]</b>
Buttons speichert automatisch die von Ihnen getroffenen Einstellungen
ab.
</p>

<h3>Partien empfangen</h3>
<p>
Je nach dem, ob Sie per Email oder ber einen Fernschachserver
spielen, ist der Empfangsprozess geringfgig verschieden. Wichtig ist,
dass am Ende Ihre Partie(n) als Datei(en) im PGN-Format in Scids Posteingang
Verzeichnis liegen, ganz gleich, auf welchem Weg Sie dies (evtl. durch
externe Programme) erreicht haben.
</p>
<p>
Sobald die Partien in der Posteingang liegen, whlen Sie im Men
<menu>Posteingang bearbeiten</menu> und Scid arbeitet sich durch die
Posteingang, wobei es die neuen Zge automatisch an bereits bestehende
Partien in Ihrer Datenbank anhngt. Neue Partien, die noch nicht in
der Datenbank erfasst sind, werden automatisch der Datenbank
hinzugefgt.
</p>

<p><a CCeMailChess>Fernschach per Email</a> beschreibt detailliert
Fernschach via Email, whrend in <a CCXfcc>Fernschach via Schachserver
</a> Fernschach ber entsprechende Fernschach-Server beschrieben wird.
</p>

<h3>Partien durchgehen</h3>
<p>
Nach dem Abholen werden Partien in Scids "clipboard" Datenbank geladen
und neue Partien und Zge werden der zuvor geffneten
Fernschachdatenbank hinzu gefgt.  Der einfachste Weg, diese Partien
durch zu gehen, ist die Benutzung der beiden Buttons <button
tb_CC_Prev> und <button tb_CC_Next>, die eben zur vorigen oder
nchsten Partie springen. Im Unterschied zur Funktion aus dem
<menu>Partie</menu> Men blttern Sie mit diesen Knpfen nicht durch
die gesamte Datenbank, sondern nur durch die Partien aus Scids Posteingang,
also nur durch die gerade von ihnen gespielten Partien. Die Datenbank
kann ja sehr viele Partien mehr enthalten, und Sie werden
wahrscheinlich nicht erst durch alle diese Partien blttern, nur um
irgendwann die Partie mit dem tatschlich neuen Zug zu finden.
</p>
<p>
Beachten Sie bitte, dass hierbei Daten aus den Kopfzeilen ausgewertet
werden, die nicht von Scid indiziert wurden. Bei einer extrem groen
Fernschachdatenbank wrden die Suchzeiten empfindlich ansteigen.
Sollten Sie sehr viel Fernschach spielen und Ihre Datenbank dadurch
sehr gro werden, so empfiehlt es sich, bereits beendete Partien in
einer Archivdatenbank zu speichern, um so den Suchzugriff auf die
aktuellen Partien zu beschleunigen.  Alternativ knnen Sie auch
einfach eine neue Datenbank erstellen, da Scid neue Partien dieser ja
dann automatisch hinzufgt. ffnen Sie einfach diese neue und leere
Datenbank (Typ "Correspondence Chess" nicht vergessen) und whlen Sie
im Men <menu>Posteingang bearbeiten</menu>, und schon werden alle noch
laufenden Partien importiert.
</p>
<p>
Vergleichbar mit den genannten Knpfen sind die Menpunkte
<menu>Vorherige Partie</menu> und <menu>Nchste Partie<menu> aus dem
<menu>Fernschach</menue> Men.
</p>
<p>
Ein alternativer Weg um eine bestimmte Partie anzuwhlen ist ein
Doppelklick auf diese in der Partienliste des Fernschachfensters.
</p>
<p>
Beachten Sie, dass bei korrekt eingegebenen Namen (unter <menu>Meine
Spielernamen</menu>) Scid das Schachbrett immer so drehen wird, dass
Sie "richtig herum", also von unten nach oben, spielen. Sie knnen
verschiedene Spielernamen verwenden. Einzelheiten finden Sie unter <a
Options MyPlayerNames>Meine Spielernamen</a>.
</p>

<h3>Analyse und Ziehen</h3>
<p>
Fr das Fernschach knnen alle Analysefunktionen verwendet werden.
Varianten, Kommentare etc. knnen wie gewohnt hinzu gefgt werden.
Scid wird aber immer den letzten Halbzug nehmen und ihn wie den zu
sendenden Zug behandeln. Es wird nicht geprft, ob nur ein Halbzug
oder auf welcher Seite dieser Zug hinzu gefgt wurde! Wenn Sie ber
einen Fernschachserver spielen, bertrgt Scid auch den letzten
Kommentar, damit Sie auf diese Weise ihrem Gegner etwas mitteilen
knnen. Wenn Sie via Email spielen, knnen Sie ja Kommentare oder
Gre einfach in die Emailnachricht schreiben. Daher werden bei dieser
Variante alle Kommentare entfernt.
</p>
<p>
Nach dem Drcken des Verschicken-Knopfes <button tb_CC_Send> wird Scid
zunchst bestimmen, welche Art von Fernschachpartie vorliegt (Email
oder Fernschachserver) und entweder Ihr Email-Programm aufrufen oder
Ihren Zug ber ein externes Tool an den Fernschachserver bertragen.
Der Menpunkt <menu>Zug versenden</menu> erfllt den gleichen Zweck.
Alternativ knnen Sie die aktuelle Partie auch ber den Menpunkt
<menu>per Email versenden</menu> per Email versenden. Wie beschrieben
erfllt <menu>Zug versenden</menu> den gleichen Zweck. Auch bei
Vorliegen eines Serverspiels kann so eine Email erzeugt werden. Diese
wird aber wohl keinen Adressaten enthalten, da Fernschachserver diese
Information gewhnlich nicht bertragen.
</p>

<p><footer>(Updated: Scid 3.6.25, August 2008)</footer></p>
}

set helpTitle(D,CCIcons) "Fernschach: Icons und Statusindikatoren"
set helpText(D,CCIcons) {
<h1>Icons und Statusindikatoren</h1>
<p>
Um die Anzeige in der Partienliste abzukrzen werden einige Symbole
verwendet. Manche von ihnen sind nur unter bestimmten Umstnden
sichtbar, andere nur fr Xfcc- bzw. eMail-basierte Partien. Diese
Indikatoren werden intern gespeichert und knnen so auch ohne
Internetverbindung mit dem Status der letzten Aktualisierung angezeigt
werden.
</p>
<ul>
   <li><button tb_CC_online> zeigt an, dass die Partienliste in der
   aktuellen Scid-Sitzung online aktualisiert wurde. Der zugehrige
   Infotip zeit das Datum und die Uhrzeit der letzten Aktualisierung.
   </li>
   <li><button tb_CC_offline> zeigt an, dass der Xfcc-Status ohne
   Aktualisierung aus den gespeicherten Werten hergestellt wurde und
   somit nicht aktuell sein mu. Der zugehrige Infotip zeit das Datum
   und die Uhrzeit der letzten Aktualisierung.
   </li>
   <li><button tb_CC_envelope> zeigt eine eMail-basierte Partie an.
   Durch die Limitationen dieses Mediums sind kaum zustzliche
   Statusangaben verfgbar.
   </li>
   <li><button tb_CC_yourmove>
   Sie sind am Zug!
   <br>
   <b>Hinweis 1:</b> Dieser Status wird nur aktualisiert, wenn
   mit dem Fernschachserver synchronisiert wird, d. h. er gibt immer
   den Zustand des Servers bei der letzten Synchronisation wieder.
   <br>
   <b>Hinweis 2:</b> Fhrt man mit der Maus ber dieses Symbol wird
   der letzte Zug des Gegners angezeigt.
   </li>
   <li><button tb_CC_oppmove>
   Der Gegner ist am Zug. Hinweis: Dieser Status wird nur aktualisiert, wenn
   mit dem Fernschachserver synchronisiert wird, d. h. er gibt immer
   den Zustand des Servers bei der letzten Synchronisation wieder.
   </li>
   <li><button tb_CC_draw>
   Es wurde ein Remis vereinbart.
   </li>
   <li><button tb_CC_book>
   Erffnungsbcher sind fr diese Partie erlaubt.
   </li>
   <li><button tb_CC_database>
   Datenbanken sind fr diese Partie erlaubt.
   </li>
   <li><button tb_CC_tablebase>
   Endspieltabellen (z. B. Nalimov-Tabellen) sind fr diese Partie
   erlaubt.
   </li>
   <li><button tb_CC_engine>
   Schachengines sind fr diese Partie erlaubt. Solche Partien werden
   bisweilen als "Advanced Chess" bezeichnet.
   </li>
   <li><button tb_CC_outoftime>
   Der Gegner hat seine Bedenkzeit berschritten. Es kann ein Gewinn
   wegen Zeitberschreitung beantragt werden.
   </li>
   <li><button tb_CC_message>
   Der Gegner bermittelte mit dem Letzten Zug enie Nachricht. Diese
   wurde zur Partienotation als Kommentar hinzugefgt.
   </li>
</ul>
<b>Hinweis 1:</b> Wenn ein Tournier noch nicht offiziell begonnen hat,
aber die Aufstellung bereits bekannt gegeben wurde werden die Texte in
den Spalten id, Event und Site in <gray><b>grau</b></gray>
dargestellt.
<br>
<b>Hinweis 2:</b> Fhrt man mit der Maus ber die Site-Spalte, wird
der komplette Sitetag angezeigt. Fhrt man ber die Event-Spalte wird
ebenfalls der komplette Event-Tag angezeigt, sowie die Zeitkontrollen
der jeweiligen Partie, sofern diese vom Server bermittelt wurden.
Wurden keine Zeitkontrollen bermittelt zeigt Scid <i>10 / 50d (?)</i>
an, d. h. vermutet die offiziellen ICCF-Zeitkontrollen. (Der
ICCF-Server selbst sendet niemals die Zeitvorgaben.)
</p>

<p>
Fr Xfcc-basierte Partien wird fr jeden Gegner die jeweilige
Landesflagge angezeigt, wenn der Server die ntigen
Lnderinformationen bermittelt. Fr eMail basierte Partien kann dies
erreicht werden, wenn im PGN-Kopf zwei zusttzliche Zeilen
<i>whiteCountry</i> bzw. <i>blackCountry</i> eingefgt werden, die den
internationalen, dreistelligen Lndercode nach ISO 3166-1 enthalten
(z. B. "EUR" <button flag_eur>, "USA" <button flag_usa>, "GBR" <button
flag_gbr>, "FRA" <button flag_fra>, "RUS" <button flag_rus>, "CHN"
<button flag_chn>...).
</p>

<p>
Beachten Sie auch das Kapitel <a Correspondence>Fernschach</a> fr
allgemeine Informationen.
</p>


<p><footer>(Updated: Scid 3.7b4, February 2009)</footer></p>
}

set helpTitle(D,CCXfcc) "Fernschach-Server"
set helpText(D,CCXfcc) {<h1>Fernschach-Server</h1>

<p>
Es gibt diverse Fernschachserver im Internet. blicherweise spielt
man auf ihnen ganz einfach mit einem Webbrowser, also ohne
irgendwelche spezielle Software. Dennoch bieten viele dieser Server
die Mglichkeit, ein externes (Schach-) Programm zu benutzen. Dies
geschieht durch die Verwendung des Xfcc-Protokolls.  Dieses
Xfcc-Protokoll wird bei Scid durch externe Tools untersttzt, die man
im <a CCSetupDialog>Einstellungen</a> Dialog konfiguriert.
</p>

<h3>Eine neue Partie beginnen</h3>
<p>
Xfcc selbst erlaubt es nicht, wie bei Email eine neue Partie zu
beginnen, in dem man einfach den ersten Zug an einen Gegner sendet.
Die Suche nach einem Gegner sowie das Beginnen von Partien geschieht
grundstzlich auf der Webseite der Fernschachserver. Hat man denn dort
eine Partie einmal begonnen, kann man Scid dann im Weiteren benutzen,
um die neuen Zge der Gegner ab zu holen, sie zur eigenen Datenbank
hinzu zu fgen, sie zu analysieren, zu beantworten, usw.. Alle
Funktionen von Scid stehen dem Benutzer zur geneigten Verwendung zur
Verfgung. Klren Sie ggf. vorher im Rahmen der sportlichen Fairness
ab, ob und welche der zahlreichen Hilfsmittel Sie berhaupt verwenden
drfen.
</p>

<h3>Partien abholen</h3>
<p>
ffnen Sie die Datenbank, die ihre Fernschachpartien enthlt oder
erstellen sie diesselbe neu. Diese Datenbank muss zwingend vom Typ
"Correspondence chess" sein. 
</p>

Anmerkungen: 
<ul>
   <li>Findet Scid keine geffnete passende Datenbank, so fordert es
   Sie auf, eine solche zu ffnen.
   </li>
   <li>Enthlt die Datenbank keine der Partien aus der Posteingang, so
   werden diese automatisch der Datenbank als neue Partien
   hinzugefgt.
   </li>
   <li>Scid wird die erste geffnete Datenbank vom Typ "Correspondence
   Chess" benutzen. Es wird empfohlen, nur eine Datenbank dieses Typs
   geffnet zu halten.
   </li>
</ul>
<p>
Xfcc holt immer alle laufenden Partien vom Server, die dort unter
Ihrer Benutzer-ID registriert sind. Zum Abholen drcken Sie einfach
auf das <button tb_CC_Retrieve> Symbol oder whlen <menu>Partien
abholen </menu> aus dem <menu>Fernschach</menu> Men. Stellen Sie
sicher, dass Ihr System eine funktionierende Netzwerkverbindung hat,
da Scid selbst keine Verbindung herstellt sondern lediglich eine
bestehende nutzt, um sich mit dem Server zu verbinden. Scid holt die
Partien gem Ihren Einstellung aus dem <a
CCSetupDialog>Einstellungen</a> Dialog ab und legt die Partien im
PGN-Format in der Scid-Posteingang ab. Dies kann etwas dauern.  Nach
dem Abholen der Partien wird ihre zuvor geffnete Fernschachdatenbank
entsprechend mit diesen Partien automatisch aktualisiert.
</p>
<p>
<b>Hinweis</b> Mit <button tb_CC_delete> kann das Posteingangs- und
Postausgangsverzeichnis geleert werden.
</p>
<p>
Sobald Ihre Partien abgeholt wurden, sucht Scid in Ihrer geffneten
Fernschachdatendank nach den entsprechenden Gegenstcken und fgt die
neuen Zge dort automatisch diesen Partien hinzu. Whrend bei einer
Email-Partie gewhnlich Halbzug fr Halbzug via Email und somit
vermutlich auch via Scid bermittelt wird, kann man Xfcc-Server auf
verschiedene Art erreichen (Web, Mobiltelefon, usw.). Es ist also
denkbar, dass Sie und Ihr Gegner vielleicht einige Zge von
Unterwegs aus ausgefhrt haben: Via Mobiltelefon aus der U-Bahn etwa,
und spter via Web vom Brorechner aus, und in der Mittagspause gab es
einen Zug vom PDA aus. Wenn Sie jetzt am Abend diese Partie mit Scid
abholen, hat Scid diese Zge ja alle bis jetzt noch nicht gesehen. Es
wird also alle notwendigen Zge bis zum aktuellen an diese Partie in
Ihrer Datenbank anfgen. Wie gesehen, kann dies eine ganze Anzahl von
Zgen sein. Aus diesem Grunde sollten Sie Anmerkungen und Kommentare
nie in die Hauptpartie schreiben, sondern stets Varianten dafr
verwenden, da es ja wie gesehen sein kann, dass Scid etliche Zge in
Ihrer Datenbank ergnzen muss. Scid wird hierbei immer nur am Ende der
Partie in ihrer Datenbank ergnzen, so dass nderungen in der
Hauptvariante sehr wahrscheinlich dazu fhren, dass eine
Synchronisation unmglich wird.
</p>
Fr Xfcc-basierte Partien kann Scid den status dieser sehr genau
angeben. Diese Informationen stehen aber nur zur Verfgung wenn die
interne Xfcc-Untersttzung verwendet wird.  Folgende Symbole werden
hierzu benutzt:
<ul>
   <li><button tb_CC_draw> Im letzten Zug wurde ein Remis verinbart.
   </li>
   <li><button tb_CC_yourmove> Sie sind am Zug.
   </li>
   <li><button tb_CC_oppmove> Ihr Gegner ist am Zug.
   </li>
   <li><button tb_CC_book> In dieser Partie sind Erffnungsbcher erlaubt.
   </li>
   <li><button tb_CC_database> In dieser Partie ist die Nutzung von Datenbanken erlaubt.
   </li>
   <li><button tb_CC_tablebase> In dieser Partie ist die Nutzung von Endspieltabellen erlaubt.
   </li>
   <li><button tb_CC_engine> In dieser Partie ist die Nutzung von Schachprogrammen zur Analyse erlaubt.
   </li>
</ul>
<p>
Auerdem zeigt Scid den Stand der Uhren beider Parteien <p>zum
Zeitpunkt der Synchronisation</b> an sowie die Schachvariante.
Allerdings erlaubt Scid derzeit nur Standard Schach.
</p>
<p>
Hinweis: Nur wenn die entsprechenden Symbole (Buch, Datenbank,
Tabelle, Schachprogramm) angezeigt werden drfen diese Hilfsmittel
verwendet werden. Andernfalls sind sie verboten! Bitte beachten Sie
diese Regeln!
</p>

<p>
<b>NOTABENE:</b> Wenn Sie Zge anders als mit Scid hinzu fgen, etwa
mit einem Texteditor oder einem Emailprogramm, dann achten Sie aus den
genannten Grnden genauestens darauf, nur den einen, von Ihnen
beabsichtigten Zug in die Hauptpartie zu schreiben! Scid wei zu
keinem Zeitpunkt, an welcher Stelle der Partie sie "eigentlich" dran
waren! Fr Scid ist dies <b>immer</b> der letzte Zug in der
"Hauptlinie" der Partie! Wenn Sie also eine mutmaliche Fortfhrung
der Partie notieren wollen (was ja an sich als Gedchtnissttze sehr
sinnvoll ist), so tun Sie dies <b>immer</b> in einer Variante, und
<b>nie</b> in der Hauptpartie! Ihr Gegner wrde diese von Ihnen als
Gedchtnissttze fr Ihren Plan notierten Zge sonst bermittelt
bekommen - und Sie wollten sicher nicht Ihren Plne an Ihren Gegner
senden!
</p>
<p>
<b>Beispiel:</b> Sie spielen ohne Scid, und schreiben die Antwortzge
im Bro einfach von Hand mit dem Texteditor des Brorechners hinter
die von Ihrem Gegner geschickten Zge, und wollen diese (wenn der Chef
weg ist) dann spter mit Scid versenden. Ihr Gegner schickt Ihnen zum
Auftakt ein 1.e4 * zu. Sie berlegen sich, mit 1...e6 die Partie zu
antworten, und ferner, die Partie wie folgt fort zu setzen: 2. d4 d5
3. Nf3 Nf6 4. Nc3 * . Diese Fortsetzung wollen Sie sich als
Gedchtnissttze notieren.  Schreiben Sie nun auf keinen Fall "1...e6
2. d4 d5 3. Nf3 Nf6 4. Nc3"!  Scid bertrgt 4.Nc3 an den
Schachserver. Dieser Zug ist beim Derzeitigen Stand der Partie
ungltig und wird abgelehnt werden. Der Zug ist hierbei aus mehreren
Grnden Ungltig. Zunchst erwartet der Schachserver den 2. Halbzug
von Schwarz im ersten Zug. Statt dessen wird aber der 1. Halbzug von
Wei aus dem 4. Zug gesendet.
</p>
<p>
Notieren Sie stattdessen Ihren Plan als Variante: 
1.e4 e6 (1...e6 2. d4 d5 3. Nf3 Nf6 4. Nc3 )
So wird nur das 1....e6 an Ihren Gegner bermittelt, da dies der
letzte Zug der Hauptvariante ist. Dieser ist gltig und wird
akzeptiert werden.
</p>
<p>
Beachten Sie, dass smtliche Partien in Scids Posteingang, ganz
gleich, wo diese herstammen, whrend des Abholprozesses von Scid
verarbeitet werden!  Auf diese Weise knnen Sie auch Partien, die Sie
auf anderem Weg erhalten haben, auf einfachste Art bearbeiten: Einfach
die Partie (im PGN-Format!) in die Posteingang legen, und wenn Sie in
Scid dann den Knopf <button tb_CC_Retrieve> drcken, wird die Partie
mit bearbeitet.  Scid arbeitet einfach alles ab, was sich in seinem
Posteingang befindet. Wie gewohnt: Bei Partien, die sich schon in
Ihrer geffneten Fernschachdatenbank befinden, werden die neuen Zge
hinzu gefgt, whrend unbekannte Partien ganz einfach als neue Partien
an Ihre Datenbank angehangen werden.
</p>
<p>
<b>Hinweis</b> Mit <button tb_CC_delete> kann das Posteingangs- und
Postausgangsverzeichnis geleert werden.
</p>
<p>
<b>Hinweis fr Programmierer</b>: Dem Fetch-Tool wird beim Aufruf der
Pfad zur Posteingang als Parameter mit gegeben. Es sollte dann alle
Server-Accounts durchgehen und ordentlich formatierte PGN-Files in den
bergebenen Pfad ablegen. Diese Dateien sollten zustzliche Felder im
Header enthalten, wie sie von cmail her bekannt sind. (Siehe <a
CCeMailChess>Correspondence Chess via eMail</a> fr weitere
Informationen ber die bentigten Felder.) </p>

<p><footer>(Updated: Scid 3.6.23, February 2008)</footer></p>
}

#############
# eMail Chess:
set helpTitle(D,CCeMailChess) "Fernschach via Email"
set helpText(D,CCeMailChess) {<h1>Fernschach via Email</h1>

<p>
Das Medium Email bietet eine einfache und bequeme Mglichkeit zum
Fernschach-Spielen.  Die Standard-Anwendung fr Un*x-aritge
Betriebssysteme ist bis heute die Kombination xboard/cmail. Man kann
damit recht bequem seine Fernschachpartien abwickeln. Da cmail dabei
nichts anderes produziert als sauberes PGN, ist es das Vorbild fr
Scids Email-Funktion. Sofern man die vollstndigen PGN-Kopfdaten
erhlt, kann man damit mit jedem beliebigen Gegner spielen, der in der
Lage ist, irgendwie PGN-Dateien zu bearbeiten. Es ist also nicht
notwendig, dass beide Spieler einer Partie die gleiche Software
benutzen.
</p>

<h3>Email-Schach</h3>
<p>
Scid kann Ihre Fernschachpartien via Email fast vollautomatisch
verarbeiten.  Dabei bleibt die Kompatibilitt mit cmail/xboard aus der
Un*x Welt gewahrt (Sie knnen also auch gegen Benutzer dieser
Programme spielen). Das Ganze funktioniert ber das Versenden von
vollstndigen PGN-Dateien als Email-Anhang, wobei die PGN-Kopfdaten
bestimmte wichtige Daten enthalten, die fr das Verwalten der Daten
unabdingbar sind. Aus diesem Grunde sollten Sie Kopfdaten nur ndern,
wenn Sie wirklich wissen, was Sie tun. Im Zweifel lassen Sie es
besser, denn einige Felder mssen bestimmte Werte in ganz exakter Form
enthalten. Diese Felder werden von Scid automatisch und korrekt
ausgefllt, wenn Sie eine Partie mit Scid beginnen. Obacht: Sie drfen
diese Felder <b>auf keinen Fall</b> lschen, ndern oder
berschreiben!
</p>
<p>
Dies sind unabdingbare Kopfzeilen-Felder:
</p>
<ul>
   <li><term>Event</term>: Standardmig "Email correspondence game"
   </li>
   <li><term>Site</term>: muss auf "NET" lauten
   </li>
   <li><term>Mode</term>: muss auf "EM" lauten
   </li>
   <li><term>WhiteNA</term>: enthlt die Email-Addresse des weien
   Spielers. Beachten Sie bitte, dass hier nur die "reine" Adresse
   stehen darf in der Form <term>user@host.org</term>.
   </li>
   <li><term>BlackNA</term>: enthlt die Email-Address des schwarzen
   Spielers analog zu WhiteNA.
   </li>
   <li><term>CmailGameName</term>: Enthlt eine <b>eindeutige</b>
   Bezeichnung (ID) fr die Partie. Diese Bezeichnung muss nicht nur
   eindeutig, sondern auch ein Unikat sein, denn ber diese ID werden
   die Partien einander zugeordnet.
   <p>
   Scid knnte bei Datenbank auf Indices zurckgreifen. Das geht aber
   nicht bei "nicht-Datenbank-Daten" wie den cmail-Daten. Dewegen wird
   auf den <term>CmailGameName</term>-Parameter zurck gegriffen, den
   der Anwender vergeben muss.  Dieser Parameter muss <b>eindeutig</>
   sein! Eine einfache und praktible Art ist bspw.
   <term>aa-bb-yyyymmdd</term>, mit aa als Abkrzung des Namens des
   weien Spielers und bb analog fr Schwarz, sowie yyyymmdd fr das
   aktuelle Datum.
   </p>
   <p>Bei Xfcc-basierten Partien muss dieses Feld ebnfalls eine
   eindeutige ID enthalten, aber in diesem Fall nimmt man den
   Servernamem und die eindeutige Partienummer auf diesen Server als
   ID, also in der Form <term>MeinXfccServer-12345</term>.
   </p>
   </li>
</ul>
<p>
eMail basierte Partien enthalten nicht so ausfhrliche
Statusinformationen wie Xfcc-basierte Partien. Allerdings werden diese
Partien mit dem <button tb_CC_envelope> Symbol gekennzeichnet um sie
leicht von anderen unterscheiden zu knnen.
</p>

<h3>Eine neue Partie beginnen</h3>
<p>
Hier ffnet sich ein Dialog, in welchem man den eigenen und den Namen
des Gegners so eingibt, wie er spter in den Kopfzeilen erscheinen
soll sowie in den Emailaddressen beider Parteien. Zustzlich muss eine
<b>eindeutige</b> Partie-ID vergeben werden.  Eine bewhrte Lsung fr
ist eine ID in der Form <term>aa-bb-yyyymmdd</term>, mit aa als
Abkrzung des Namens des weien Spielers und bb analog fr Schwarz,
sowie yyyymmdd fr das aktuelle Datum.  Diese ID im Text-Format ist
unabdingbar fr das Zuordnen der Partien.  Die Nutzer von cmail kennen
diese ID als <i>game name</i>. Sie darf nur Buchstaben, Zahlen, das
Minus-Zeichen und Unterstrichen enthalten.  Vermeiden Sie also alle
anderen (Sonder-) Zeichen.
</p>
<p>
Nachdem Sie durch Drcken des <b>[Ok]</b> Knopfes diesen Dialog
verlassen haben, wird eine neue Partie an die geffnete
Fernschachdatenbank angehangen, und die PGN-Kopfzeilen sind ordentlich
ausgefllt. Machen Sie also einfach Ihren Zug und senden sie ihn ab.
</p>

<h3>Partien empfangen</h3>

<p>
Scid bearbeitet nicht Ihr Email-Postfach. Der Programmieraufwand hierfr
wre angedenk der unzhligen Mglichkeiten von Email-Zugngen viel zu
gro. Auerdem muss man das Rad ja nicht neu erfinden: Ihr gewohntes
Email-Programm kann ja genau das, und deswegen verwendet Scid auch
einfach Ihr gewohntes Email-Programm. Um nun eine so empfangene Partie
in Scid hinein zu bekommen, speichern Sie einfach das an der Email
angehangene PGN-File in Scids Posteingang ab (viele Emailprogramme
erlauben es auch, dies automatisch erledigen zu lassen. Lesen Sie dazu
das Handbuch Ihres Emailprogrammes). Whlen Sie dann einfach
<menu>Partien synchronisieren</menu> (bzw. drcken den <button tb_CC_Retrieve>
Knopf) oder whlen Sie <menu>Posteingang synchronisieren</menu>. Der
Unterschied zwischen beiden Mglichkeiten ist der, dass
<menu>Posteingang synchronisieren</menu> nur die Dateien verarbeitet,
die zu diesem Zeitpunkt im Posteingang liegen, whrend der erstere
Weg zustzlich ber in externes Programm zunchst weitere Partien (z.B.
via Xfcc) abholt, diese in der Posteingang speichert und dann
smtliche Dateien, die sich dann in der Posteingang befinden,
bearbeitet.  Wenn Sie also sowohl per Email wie auch ber Xfcc-Server
spielen, drfte der bequemste Weg der sein,  zunchst die per Email
empfangenen Partien in der Posteingang zu speichern und dann <button
tb_CC_Retrieve> zu bettigen.
</p>
<p>
<b>Hinweis</b> Mit <button tb_CC_delete> kann das Posteingangs- und
Postausgangsverzeichnis geleert werden.
</p>
<p>
<b>Notabene:</b> <menu>Partien synchronisieren</menu> bzw. der <button
tb_CC_Retrieve> Knopf haben keine Funktion zum <b>Abholen</b> von
Emails! Sie mssen die Email mit Ihrem Emailprogramm abholen und "von
Hand" in Scids Posteingang speichern. Viele Emailprogramm ermglichen
das Automatisieren dieses Arbeitsschrittes (auf Un*x-artigen Systemen
knnten Sie leicht die ntigen "mime handler" in Ihrer
<term>.mailcap</term> anpassen, oder Mailfilter fr die automatische
Verarbeitung einsetzen.).
</p>

<h3>Antwortzge verschicken</h3>

<p>
Wenn Sie Ihren Zug gemacht haben, knnen Sie ihn entweder ber den
Menpunkt <menu>Zug per eMail senden</menu> und <menu>Zug
senden</menu> oder <button tb_CC_Send>. Letzteres whlt die Art des
Versandes in Abhngigkeit der vorliegenden Partie, also wahlweise per
Email oder das Xfcc-Protokoll, whrend ersteres <b>immer</b> eine
Email mit angehangenem PGN erzeugt.
</p>
<p>
Selbstverstndlich versendet Scid nur die reinen Zge. Smtliche Arten
von Kommentaren und Varianten werden vorher entfernt, da Sie Ihre
Analysen und Plne ganz sicher nicht Ihrem Gegner bermitteln wollen.
</p>
<p>
Sofern Sie eins der blichen grafischen Email-Programme benutzen (wie
Thunderbird, Evolution, usw.), dann ffnet sich dort das Fenster zum
Verfassen einer Email. Die Adresse Ihres Gegners ist bereits
ausgefllt, ebenso wie die Betreffzeile, in der die ID der Partie
eingetragen ist, damit Sie ggf. die Spiele nach Betreff filtern oder
sortieren knnen. Falls Sie unter <a CCSetupDialog>Einstellungen</a>
eine Adresse fr eine Blindkopie angegeben haben, ist auch das
bcc-Feld der Email ausgefllt (etwa, wenn bei Fernschachturnieren
jeder Zug in Kopie an einen Spielleiter geht). Der eigentlich
Email-Text enthlt die aktuelle Stellung als FEN sowie eine Liste der
bis dahin gemachten Zge. Das ermglich Ihrem Gegner einen "schnellen
Blick" auf die Partie, ohne dass er besondere Fernschachprogramme
einsetzen muss. Und schlielich ist bereits die bis dahin gespielte
Partie vollstndig als PGN-Datei an die Email angehangen.
</p>
<p>
Falls Sie ein mailx-kompatibles Programm verwenden, so sehen Sie
nichts vom Sendevorgang, alles luft im Hintergrund ab. In diesem Fall
wird die PGN-Datei im Textkrper der Nachricht wiederholt.
</p>
<p>
Beachten Sie, dass Sie bei Email-Partien auf keinen Fall mehr als nur
einen Halbzug vor dem Versenden anhngen drfen! Scid berprft nicht,
ob und wie viele Zge angehangen wurden. Aus diesem Grund sollten Sie
Analysen und Kommentare <b>nie</b> in die Hauptzeile der Partei
schreiben, sondern immer nur als Variante. Letztere werden automatisch
entfernt, so dass Sie bei so nie Gefahr laufen, Ihrem Gegner Ihre
Plne zu bermitteln.
</p>
<p><footer>(Updated: Scid 3.6.23, February 2008)</footer></p>
}

#############
# Correspondence Chess setup dialog help:
set helpTitle(D,CCSetupDialog) "Fernschach Setup"
set helpText(D,CCSetupDialog) {<h1>Fernschach Setup</h1>

<p>
Im Einstellungsdialog sind bei bereits einige Standardwerte
eingetragen, die aber nicht notwendigerweise den Begebenheiten auf
Ihren System entsprechen. Sie mssen also einige Anpassungen
vornehmen. Alle getroffenen Einstellungen werden automatisch in der
Konfigurationsdatei gespeichert, sobald Sie den Dialog mit dem
<b>[Ok]</b> Button verlassen. Die Einstellung sind sofort gltig.
</p>

<p><b>Hinweis</b> Scid wird seine Standardeinstellungen so lange
verwenden bis der Einstellungsdialog mit <term>OK</term> besttigt
wurde. Bis dies geschehen ist verwendet Scid die internen Standards
und wird diese nicht abspeichern. Standardmig wird Scid auerdem
versuchen alle Einstellungen automatisch vorzunehmen und die ntigen
Daten im <term>data</term>-Unterverzeichnis seiner Einstellungen zu
speichern. Hier wird auch eine gltige Datenbank fr Fernschach
angelegt sowie die Posteingangs- und Postausgangsverzeichnisse
angelegt.
</p>

<p>
<b>Standarddatenbank</b>:
Hier stellen Sie die Datenbank ein, die Sie als Standard fr Ihr
Fernschach verwenden wollen, leicht erreichbar ber <menu>Datenbank
ffnen</menu> im <menu>Fernschach</menu> Men.  (Sie knnen diese
Datei aber auch auf jede andere Art ffnen, die Scid bietet.) Der
Vorteil bei dieser Vorgehensweise ist, dass diese Datenbank nicht in
der Liste krzlich geffneten Datenbanken erscheint. Sie knnen also
eine Datei nur fr das Fernschach verwenden.  Diese Datenbank <b>muss
zwingend</b> von Typ "Correspondence chess" sein!
</p>

<p>
<b>Posteingang (Pfad)</b>:
In diesem Verzeichnis schaut Scid nach Partien im PGN-Format. Diese
Partien werden mit Ihrer geffneten Fernschachdatenbank
synchronisiert. Dabei ist es fr Scid vllig egal, wie diese Partien
dorthon gekommen sind. Es arbeitet sich einfach durch alle Dateien
durch, die es dort vorfindet. So knnen Sie (oder andere Entwickler)
beliebige andere Werkzeuge und Programme verwenden, um Partien abzuholen
und dort zu platzieren. Beispielsweise knnen Sie aus einem beliebigen
Emailprogramm heraus die empfangene PGN-Datei einfach dort
abspeichern, und Scid wird sie verarbeiten.
</p>
<p>
Scid wird keine Email-Postfcher kontaktieren, sondern einfach alle
PGN-Dateien verarbeiten, die es im Posteingang-Verzeichnis vorfindet.
Beachten Sie, dass dabei dann alle gefundenen Partie mit der zu diesem
Zeitpunkt geffneten (Fernschach-) Datenbank abgeglichen werden.
Sofern eine Partie aus diesem Verzeichnis nicht in der Datenbank
enthalten sein sollte, wird sie dort automatisch als neue Partie
angehangen.
</p>
<p>
Damit der Abgleich der Partien aus der Posteingang mit der Datenbank
funktioniert, mssen die PGN-Dateien eine Kopfzeilen enthalten, die
peinlich genau dem PGN-Standard entsprechen mssen! Werfen Sie einen
Blick in das Kapitel <a CCeMailChess>Fernschach via
eMail</a> falls Sie diese mit einem eigenen Tool erstellen wollen oder
Sie von einem anderen System migrieren.
</p>

<p>
<b>Postausgang (Pfad)</b>:
Das Gegenstck zur <i>Posteingang</i>. Scid speichert hier die
PGN-Dateien der ausgehenden Dateien. Das ist beim Email-Schach
wichtig, weil dabei diese Dateien an die Emails angehangen werden.
Bei Xfcc, wo nur der aktuelle Zug versendet wird, ist dies zwar
eigentlich nicht ntig, aber die Outbox ist sehr praktisch, falls Sie
bspw. einen PDA mit allen aktuell gespielten Partien abgleichen
wollen.
</p>

<p>
<b>Interne Xfcc-Untersttzung verwenden</b>:
Wenn angewhlt werden nicht die beiden exterenn Hilfsprogramme
verwendet um Partien via Xfcc abzuholen oder Zge zu verschicken
sondern statt dessen Scids interne Untersttzung fr dieses Protokoll.
Dies ist der einfachste Weg und sollte blicherweise gewhlt werden.
</p>
<p>
Hinweis: Diese Option kann nur gewhlt werden wenn die beiden Module
http und tDOM fr TCL installiert sind. Diese befinden sich
normalerweise im Lieferumfang der TCL-Installation, mssen aber bei
einigen Systemen explizit installiert werden. Wird eines dieser Pakete
nicht gefunden wird diese Funktion ausgeschaltet
</p>
<p>
<b>Xfcc Einstellungen</b>:
Hier wird der Pfad und Dateiname der Xfcc-Konfigurationsdatei
angegeben. Dieser Parameter wird ggf. auch an die externen
Hilfsprogramme weitergegeben, sollten diese benutzt werden.
</p>

<p>
<b>Hilfsprogramm zum Abholen</b>:
Dieses Hilfsprogramm holt Ihre Partien von einem Fernschachserver ab,
und erzeugt aus den empfangenen Daten ein ordentliches PGN-File mit
korrektem Header. Zur Kommunikation mit Xfcc-Servern sind externe
Werkzeuge die erste Wahl. Sollten sich das Protokoll einmal ndern,
kann man diese nderungen so einfacher umsetzen. Auch knnen so
weitere Programme auf dieses Hilfsprogramm zugreifen, wodurch dem
Benutzer beliebig viele Mglichkeiten (z.B. zur Automatisierung)
offenstehen.
</p>
<p>
Beachten Sie: Dieses Hilfsprogramm dient <b>nicht</b> dem Empfang von
Email-Partien!
</p>

<p>
<b>Hilfsprogramm zum Senden</b>: 
Das Gegenstck zum Empfangsprogramms, ebenfalls im Wesentlichen fr
das Xfcc-Protokoll gedacht. Dieses Hilfsprogramm wird von Scid mit
folgenden Parametern aufgerufen:
<term>
SendTool Outbox Name GameID MoveCount Move "Comment" resign claimDraw offerDraw acceptDraw
</term>
</p>

<p>
Das verbirgt sich hinter diesen Parametern:
   <ul>
      <li><term>Outbox</term>: Hier wird der Outbox-Pfad gesetzt, wo
      das Versandprogramm ein PGN-File erzeugen soll.
      </li>
      <li><term>Name</term>: Der Spielername und gleichzeitig das
      Xfcc-Login, der identisch ist mit dem Spielernamen im
      PGN-Header.
      </li>
      <li><term>MoveCount</term>: Die Nummer des zu versendenden
      Zuges.
      </li>
      <li><term>Move</term>: Der aktuelle Zug in vereinfachter
      algebraischer Notation (SAN).
      </li>
      <li><term>"Comment"</term>: Ein kommentar, der an den Gegner
      gesendet wird. Scid verwendet hierzu den letzten Kommentar, der
      in der aktuellen Partie enthalten ist, d. h. der letzte
      Kommentar der Partie wird als "fr den Gegner bestimmt"
      behandelt. Dieser Kommentar wird in Anfhrungszeichen bergeben,
      so dass mehrzeilige Kommentare mglich sein sollten.
      </li>
      <li><term>resign</term>: 0 oder 1, gibt an, ob Sie aufgeben. 1
      bedeutet Aufgabe und wird in <menu>Aufgeben</menu> aus dem
      <menu>Fernschach</menu> Men gesetzt.
      </li>
      <li><term>claimDraw</term>: 0 oder 1, zeigt an, dass Sie Remis
      fordern. Wird 1, falls Sie <menu>Remis erklren</menu> aus dem
      Men <menu>Fernschach</menu> whlen.
      </li>
      <li><term>offerDraw</term>: 0 oder 1, entspricht Ihrem Wunsch
      nach Remis.  Wird 1, wenn Sie <menu>Remis anbieten</menu> aus
      dem Men <menu>Fernschach</menu> whlen.
      </li>
      <li><term>acceptDraw</term>: 0 oder 1, wenn Sie Remis annehmen
      wollen.  Wird 1, wenn Sie <menu>Remis annehmen</menu> aus dem
      Men <menu>Fernschach</menu> whlen.
      </li>
   </ul>
</p>
<p>
Anmerkung: Dieses Hilfsprogramm wird <b>nicht</b> fr eMail-Schach verwendet!
</p>

<p>
<b>Mail-Programm</b>:
Gibt den Pfad zu Ihrem bevorzugten Email-Programm an. Dieses Programm
wird dann fr das Erstellen und Versenden von Email-Schachpartien
aufgerufen. 
</p>
<p>
<b>(B)CC Address</b>:
Hiermit wird eine Blindkopie der Email an die hier angegebene Adresse
geschickt.  Das macht man z.B., falls man ein Email-Turnier spielt,
bei dem alle Zge in Kopie an einen Spiel- oder Turnierleiter gehen.
</p>

<p>
<b>Modus</b>:
Unglcklicherweiser gibt es unzhlige verschiedene Mailprogramme, die
auch noch alle unterschiedlich aufgerufen werden mssen. Einige der
gebruchlichsten Programme und ihre Aufrufparameter sind hier
gelistet. Falls Sie nicht wissen, wie Sie ihr Mailprogramm aufrufen
mssen, versuchen Sie die Einstellungen aus dieser Liste. Leider
knnen aber nicht alle Mailprogramme Mails mit Dateianhnge erzeugen,
wenn man sie aus einem anderen Programm heraus aufruft. Dann bleibt
Ihnen leider nur, entweder ein anderes Emailprogramm zu verwenden oder
die Postversand von Hand zu organisieren.
</p>
<p>Hinweis: mailx oder eines seiner Derivate sollten als
Kommandozeilenapplikation in der Lage sein, von eigentlich jeder
Plattform aus wie gewnscht zu funktionieren. Die Einrichtung ist
nicht sehr schwierig, so dass es sie es einmal versuchen sollten,
falls Ihr Mailprogramm nicht funktioniert
</p>
<p>Hinweis: mutt nutzt das systemsinterne Mailsystem (aka
sendmail/exim/postfix). Falls sie dieses (angeblich) recht schwierig
zu konfigurierende Mailsystem korrekt eingerichtet haben, ist mutt ein
prima Alternative. Auf einem "decent Unix" arbeitet es vllig
problemlos, allerdings stellt das einzurichtende Mailsystem eine
gewisse Hrde dar, da immer mehr Linuxsystem eben kein korrekt
eingerichtetes Mailsystem ausliefern.
</p>
<p>
<b>Attachement-Parameter</b>: 
Dieser Parameter gibt die anzuhngende Datei an. Er wird <b>nur</b> im
<term>mailx</term> Modus verwendet.
</p>
<p>
<b>Betreff-Parameter</b>:
Dieser Parameter gibt den Betreff einer Email an. Er wird <b>nur</b>
im <term>mailx</term> Modus verwendet.  </p>
<p><footer>(Updated: Scid 3.6.23, February 2008)</footer></p>
}

#############
# Correspondence Chess setup dialog help:
set helpTitle(D,CCXfccSetupDialog) "Xfcc Servereinstellungen"
set helpText(D,CCXfccSetupDialog) {<h1>Xfcc Servereinstellungen</h1>
<p>
Dieser Dialog liest das aktuell Verwendete Xfcc-Setup aus der
Konfigurationsdatei ein und zeigt alle Server an. Das Dialogfenster
selbst ist in zwei Teile geteilt: im oberen Bereich findet sich eine
Liste aller Servernamen, im unteren Bereich die fr diesen Server
aktuell geltenden Parameter.
</p>
<h2>Notwendige Eintrge</h2>
<ul>
<li><term>Servername</term>: Hier wird der von Scid verwendete
Servername angegeben. Er wird z. B. verwendet um eindeutige IDs fr
die einzelnen Fernschachpartien zu vergeben. Deshalb mu er aus einem
Wort bestehen, darf nur die Buchstaben (a-z und A-Z), Zahlen und die
beiden Zeichen "-" und "_" enthalten. Ferner mu dieser Name eindeutig
sein (Gro/Kleinschreibung wird beachtet).
</li>
<li><term>Loginname</term>: Mit diesem Namen meldet sich Scid beim
ausgewhlten Server an. Es ist hilfreich und vermeidet Probleme auch
hier nur Buchstaben, Zahlen und "-" sowie "_" zu verwenden.
</li>
<li><term>Passwort</term>: Gibt das fr das Login verwendete Passwort
an. Hier gilt ebenfalls das zum Loginnamen gesagte. <b>Hinweis</b>
Scid speichert die Passworte unverschlsselt.
</li>
<li><term>URL</term>: Hier wird die Zugangsadresse fr den
Xfcc-Service definiert. Diese erfhrt man beim jeweiligen
Diensteanbieter. Einige bekannte Server:
<ul>
	<li>SchemingMind: <url
	http://www.schemingmind.com/xfcc/xfccbasic.asmx>
	http://www.schemingmind.com/xfcc/xfccbasic.asmx</url>
	</li>
	<li>ICCF: 
	<url http://www.iccf-webchess.com/XfccBasic.asmx>
	http://www.iccf-webchess.com/XfccBasic.asmx</url>
	</li>
	<li>MeinSchach.de / MyChess.de:
	<url http://www.myChess.de/xfcc/xfccbasic.php4>
	http://www.myChess.de/xfcc/xfccbasic.php4</url>
	</li>
</ul>
</li>
</ul>
<p>
Um die Einstellungen eines Servers zu ndern whlt man diesen einfach
aus der Liste aus. Die zugehrigen Werte werden dann in den
Eingabefeldern angezeigt und knnen editiert wreden. Das Auswhlen
eines anderen Servers aktiviert diese Einstellungen.
</p>
<p>
Um einen neuen Server zu addieren whlt man den <term>Neu</term>
Knopf. Es wird ein neuer Eintrag erzeugt in dem die entsprechenden
Felder ausgefllt werden knnen.
</p>
<p>
Um einen Server zu lschen whlt man ihn aus der Liste aus und drckt
den <term>Lschen</term> Knopf. Allen Werte des entsprechenden Servers
wird nun ein Hash (#) vorangestellt. Hat man also versehentlich einen
Server gelscht entfernt man einfach das # vor jedem Eintrag.
</p>
<p>
Durch drcken von <term>OK</term> speichert Scid die Einstellungen ab.
Hier werden dann auch die als gelscht markierten Server endgltig
entfernt und alle neu angelegten hinzugefgt. Durch drcken von
<term>Abbruch</term> bleibt alles beim alten.
</p>

<p><footer>(Updated: Scid 3.6.24, May 2008)</footer></p>
}




### End of file: deutsch.tcl








































































### francais.tcl:
#
# French language support for Scid.
# Translations contributed by:
# Gilles Maire, Vincent Serisier, Joel Rivat, and Pascal Heisel.

addLanguage F Francais 0 iso8859-1

proc setLanguage_F {} {

# File menu:
menuText F File "Fichier" 0
menuText F FileNew "Nouvelle..." 0 {Crer une nouvelle base de donnes Scid}
menuText F FileOpen "Ouvrir..." 0 {Ouvrir une base de donnes Scid existante}
menuText F FileClose "Fermer" 0 {Fermer la base de donnes Scid active}
menuText F FileFinder "Trouver" 0 {Ouvrir la fentre de recherche de fichier}
menuText F FileBookmarks "Signets" 0 {Menu des signets (raccourci: Ctrl+B)}
menuText F FileBookmarksAdd "Ajouter un signet" 0 \
  {Poser un signet pour la position et partie courante}
menuText F FileBookmarksFile "Classer un signet" 0 \
  {Classer un signet pour la position et partie courante}
menuText F FileBookmarksEdit "Modifier les signets..." 0 \
  {Modifier les menus de signets}
menuText F FileBookmarksList "Afficher les dossiers comme une simple liste" 0 \
  {Afficher les dossiers comme une simple liste et non comme des sous-menus}
menuText F FileBookmarksSub "Afficher les dossiers comme des sous-menus" 0 \
  {Afficher les dossiers comme des sous-menus et non comme une simple liste}
menuText F FileMaint "Maintenance" 0 {Maintenance de la base}
menuText F FileMaintWin "Fentre de maintenance" 0 \
  {Ouvrir/Fermer la fentre de maintenance}
menuText F FileMaintCompact "Compacter la base..." 0 \
  {Compacter la base: supprimer les parties effaces et les noms non utiliss}
menuText F FileMaintClass "Classer les parties suivant ECO" 2 \
  {Recalculer le code ECO de toutes les parties}
menuText F FileMaintSort "Trier la base..." 0 {Trier toutes les parties de la base}
menuText F FileMaintDelete "Purger les doublons..." 0 \
  {Trouver les parties en doublons et les marquer pour l'effacement}
menuText F FileMaintTwin "Trouver les doublons" 0 \
  {Ouvrir/Actualiser la fentre de recherche de doublons}
menuText F FileMaintName "Orthographie des noms" 0 {dition des noms et outils orthographiques}
menuText F FileMaintNameEditor "diteur de noms" 11 {Ouvrir/Fermer l'diteur de noms}
menuText F FileMaintNamePlayer "Corriger les noms de joueurs..." 21 \
  {Vrifier l'orthographe des noms de joueurs}
menuText F FileMaintNameEvent "Corriger les vnements..." 14 \
  {Vrifier l'orthographe des noms d'vnements}
menuText F FileMaintNameSite "Corriger les noms de lieux.." 21 \
  {Vrifier l'orthographe des noms de lieux}
menuText F FileMaintNameRound "Corriger les noms des rondes..." 22 \
  {Vrifier l'orthographe des noms de rondes}
menuText F FileReadOnly "Lecture seule..." 0 \
  {Traiter la base courante en lecture seule, en empchant les changements}
menuText F FileSwitch "Changer de base" 0 \
  {Changer vers une base ouverte diffrente}
menuText F FileExit "Quitter" 0 {Quitter Scid}
menuText F FileMaintFixBase "Rparer base" 0 {Essaie de rparer une base corrompue}

# Edit menu:
menuText F Edit "diter" 0
menuText F EditAdd "Ajouter variante" 0 {Ajouter une variante}
menuText F EditDelete "Effacer variante" 0 {Effacer cette variante}
menuText F EditFirst "Dplacer en tte" 0 \
  {Dplacer cette variante en tte de liste}
menuText F EditMain "Variante vers ligne principale" 13 \
   {Promouvoir une variante en ligne principale}
menuText F EditTrial "Essayer une variante" 0 \
  {Dmarrer/Stopper mode d'essai, pour tester une ide sur l'chiquier}
menuText F EditStrip "purer" 2 {purer les commentaires ou les variantes de cette partie}
menuText F EditUndo "Annuler" 0 {Annuler la dernire modification de la partie}
menuText F EditStripComments "Commentaires" 0 \
  {purer cette partie de tous les commentaires et annotations}
menuText F EditStripVars "Variantes" 0 {purer cette partie des variantes}
menuText F EditStripBegin "Coups depuis le dbut" 1 \
  {purer cette partie des coups depuis le dbut}
menuText F EditStripEnd "Coups jusqu' la fin" 0 \
  {purer cette partie des coups jusqu' la fin}
menuText F EditReset "Vider le presse-papier" 0 {Vider le presse-papier}
menuText F EditCopy "Copier dans la base presse-papier" 0 \
  {Copier la partie en cours dans la base clipbase (9)}
menuText F EditPaste "Coller depuis la base presse-papier" 1 \
  {Copier la partie contenue dans la base clipbase (9)  cet emplacement}
menuText F EditPastePGN "Coller le presse-papier comme partie PGN..." 10 \
  {Interprter le texte du presse-papiers comme de la notation PGN et le coller ici}
menuText F EditSetup "Position de dpart" 0 \
  {Choisir une position de dpart pour cette partie}
menuText F EditCopyBoard "Copier la position" 6 \
  {Copier la position en cours en notation FEN vers la slection de texte (presse-papier)}
menuText F EditPasteBoard "Coller la position de dpart" 12 \
  {Initialiser la position de dpart  partir de la slection de texte courante(presse-papier)}

# Game menu:
menuText F Game "Partie" 0
menuText F GameNew "Nouvelle partie" 2 \
  {Remettre  zro la partie}
menuText F GameFirst "Charger la premire partie" 5 {Charger la premire partie du filtre}
menuText F GamePrev "Partie prcdente" 7 \
  {Charger la partie prcdente du filtre}
menuText F GameReload "Recharger la partie" 2 \
  {Recharger la partie (les modifications ne seront pas sauvegardes)}
menuText F GameNext "Partie suivante" 7 {Charger la partie suivante du filtre}
menuText F GameLast "Charger la dernire partie" 5 {Charger la dernire partie du filtre}
menuText F GameRandom "Charger une partie au hasard" 8 {Charger au hasard une partie du filtre}
menuText F GameNumber "Partie numro..." 9 \
  {Charger une partie en donnant son numro}
menuText F GameReplace "Enregistrer: Remplacer la partie..." 13 \
  {Enregistrer cette partie, en crasant l'ancienne version}
menuText F GameAdd "Enregistrer: Ajouter nouvelle partie..." 13 \
  {Enregistrer cette partie en tant que nouvelle partie dans la base}
menuText F GameDeepest "Identifier ouverture" 11 \
  {Trouver la partie la plus proche dans la nomenclature ECO}
menuText F GameGotoMove "Coup numro..." 6 \
  {Aller au coup spcifi dans la partie en cours}
menuText F GameNovelty "Trouver la nouveaut..." 7 \
  {Trouver le premier coup de la partie qui n'a pas t jou auparavant}

# Search menu:
menuText F Search "Rechercher" 0
menuText F SearchReset "Rinitialiser le filtre" 0 \
  {Remettre  zro le filtre (inclusion de toutes les parties)}
menuText F SearchNegate "Inverser le filtre" 0 \
  {Inverser le filtre}
menuText F SearchCurrent "Position..." 0 \
  {Rechercher la position en cours}
menuText F SearchHeader "Entte..." 0 \
  {Rechercher par entte (joueur, tournoi, etc) information}
menuText F SearchMaterial "Motifs" 0 \
  {Rechercher des motifs ou un matriel particulier sur l'chiquier}
menuText F SearchUsing "En utilisant un fichier d'options..." 0 \
  {Rechercher en utilisant un fichier d'options de recherche}

# Windows menu:
menuText F Windows "Fentres" 2
menuText F WindowsComment "diteur de commentaires" 0 \
  {Ouvrir/fermer l'diteur de commentaires}
menuText F WindowsGList "Liste des parties" 0 \
  {Ouvrir/fermer la liste des parties}
menuText F WindowsPGN "Fentre PGN" 8 {Ouvrir/fermer la fentre PGN}
menuText F WindowsPList "Chercher un joueur" 2 {Ouvrir/fermer la recherche de joueur}
menuText F WindowsTmt "Recherche de tournois" 0 {Ouvrir/fermer la recherche de tournois}
menuText F WindowsSwitcher "Changer de base" 0 \
  {Ouvrir/Fermer l'outil de changement de base}
menuText F WindowsMaint "Fentre de Maintenance" 0 \
  {Ouvrir/Fermer la fentre de maintenance}
menuText F WindowsECO "Navigateur ECO" 0 {Ouvrir/fermer le navigateur ECO}
menuText F WindowsRepertoire "diteur de rpertoire" 0 {Ouvrir/Fermer l'diteur de rpertoire}
menuText F WindowsStats "Fentre de statistique" 11 \
  {Ouvrir/Fermer le filtre de statistiques}
menuText F WindowsTree "Fentre d'arbre" 10 \
  {Ouvrir/Fermer la fentre d'arbre}
menuText F WindowsTB "Fentre de tables de finales" 8 \
  {Ouvrir/Fermer la fentre de tables de finales}
menuText F WindowsBook "Bibliothque d'ouvertures" 0 {Ouvrir/Fermer la bibliothque d'ouverture}
menuText F WindowsCorrChess "Jeu par correspondance" 0 {Ouvrir/Fermer la fentre de jeu par correspondance}

# Tools menu:
menuText F Tools "Outils" 2
menuText F ToolsAnalysis "Moteur d'analyse..." 9 \
  {Dmarrer/Arrter un moteur d'analyses}
menuText F ToolsAnalysis2 "Moteur d'analyse #2..." 18 \
  {Dmarrer/Arrter un moteur d'analyses}
menuText F ToolsCross "Classement du tournoi" 0 \
  {Montrer le classement du tournoi}
menuText F ToolsEmail "Gestion des messages" 0 \
  {Ouvrir/Fermer la fentre de gestion des messages lectroniques}
menuText F ToolsFilterGraph "Graphique de filtre" 7 {Ouvrir/Fermer la fentre du graphique de filtre}
menuText F ToolsAbsFilterGraph "Graphique de filtre absolu" 7 {Ouvrir/Fermer la fentre du graphique de filtre absolu}
menuText F ToolsOpReport "Rapport d'ouverture" 0 {Gnrer un rapport d'ouvertures  partir de la position courante}
menuText F ToolsOpenBaseAsTree "Ouvrir base dans arbre" 0   {Ouvrir une base dans la fentre d'arbre}
menuText F ToolsOpenRecentBaseAsTree "Ouvrir base rcente dans arbre" 0   {Ouvrir une base rcente dans la fentre d'arbre}
menuText F ToolsTracker "Suivi de pice"  0 {Ouvrir la fentre de suivi de pice}
menuText F ToolsTraining "Entrainement"  0 {Entrainement (tactique, ouvertures, ...) }
menuText F ToolsTacticalGame "Partie tactique"  0 {Jouer une partie tactique}
menuText F ToolsSeriousGame "Partie srieuse"  0 {Jouer une partie sans handicap}
menuText F ToolsTrainOpenings "Ouvertures"  0 {Entrainement sur un rpertoire}
menuText F ToolsTrainReviewGame "Revoir partie"  0 {Deviner les coups jous dans la partie}
menuText F ToolsTrainTactics "Tactique"  0 {Rsoudre des problmes tactiques}
menuText F ToolsTrainCalvar "Calcul de variantes"  0 {Entrainement au calcul de variantes}
menuText F ToolsTrainFindBestMove "Trouver le meilleur coup"  0 {Trouver le meilleur coup}
menuText F ToolsTrainFics "Jouer sur internet"  0 {Jouer sur freechess.org}
menuText F ToolsBookTuning "Config. bibliothque" 0 {Configuration fine d'une bibliothque}
menuText F ToolsConnectHardware "Connecter matriel" 0 {Connecter un chiquier externe}
menuText F ToolsConnectHardwareConfigure "Configurer..." 0 {Configurer un chiquier externe et connection}
menuText F ToolsConnectHardwareNovagCitrineConnect "Connecter Novag Citrine" 0 {Connecter Novag Citrine}
menuText F ToolsConnectHardwareInputEngineConnect "Connecter entre" 0 {Connecter un moteur en entre (p.e. DGT)}
menuText F ToolsPInfo "Information sur les joueurs"  0 \
  {Ouvrir/Mettre  jour la fentre d'information sur les joueurs}
menuText F ToolsPlayerReport "Rapport pour le joueur..." 3 \
  {Gnrer un rapport pour le joueur}
menuText F ToolsRating "Elo graphique" 0 \
  {Tracer un graphique du classement Elo des joueurs de cette partie}
menuText F ToolsScore "Score graphique" 0 {Montrer le graphique des scores}
menuText F ToolsExpCurrent "crire la partie en cours" 22 \
  {crire la partie en cours dans un fichier texte}
menuText F ToolsExpCurrentPGN "Dans un fichier PGN..." 16 \
  {crire la partie en cours dans un fichier PGN}
menuText F ToolsExpCurrentHTML "Dans un fichier HTML..." 16 \
  {crire la partie en cours dans un fichier HTML}
menuText F ToolsExpCurrentHTMLJS "Dans un fichier HTML et JavaScript..." 16 {crire la partie en cours dans un fichier HTML et JavaScript}  
menuText F ToolsExpCurrentLaTeX "Dans un fichier LaTeX..." 16 \
  {crire la partie en cours dans un fichier LaTeX}
menuText F ToolsExpFilter "crire le filtre " 2 \
  {crire le filtre dans un fichier texte}
menuText F ToolsExpFilterPGN "Dans un fichier PGN..." 16 \
  {crire le filtre dans un fichier PGN}
menuText F ToolsExpFilterHTML "Dans un fichier HTML..." 16 \
  {crire le filtre dans un fichier HTML}
menuText F ToolsExpFilterHTMLJS "Dans un fichier HTML et JavaScript..." 16 {crire le filtre dans un fichier HTML et JavaScript}  
menuText F ToolsExpFilterLaTeX "Dans un fichier LaTeX..." 16 \
  {crire le filtre dans un fichier LaTeX}
menuText F ToolsImportOne "Importer une partie en PGN..." 0 \
  {Importer une partie  partir d'un texte PGN}
menuText F ToolsImportFile "Importer un fichier en PGN..." 12 \
  {Importer des parties  partir d'un fichier PGN}
menuText F ToolsStartEngine1 "Dmarrer moteur 1" 0  {Dmarrer moteur 1}
menuText F ToolsStartEngine2 "Dmarrer moteur 2" 0  {Dmarrer moteur 2}
# ====== TODO To be translated ======
menuText F ToolsCaptureBoard "Capture Current Board..." 0  {Save the current board as an image.}
menuText F Play "Jouer" 0
menuText F CorrespondenceChess "Echecs par correspondance" 0 {eMail et Xfcc checs par correspondance}
menuText F CCConfigure "Configurer..." 0 {Configurer outils externes et config gnrale}
# ====== TODO To be translated ======
menuText F CCConfigRelay "Configure observations..." 10 {Configure games to be observed}
menuText F CCOpenDB "Ouvrir base..." 0 {Ouvrir la base de jeu par correspondance par dfaut}
menuText F CCRetrieve "Rcuprer parties" 0 {Rcuprer les parties via Xfcc}
menuText F CCInbox "Analyser bote" 0 {Analyser tous les fichiers dans la bote de rception de Scid}
menuText F CCSend "Envoyer coup" 0 {Envoyer votre coup via eMail ou outil externe (Xfcc)}
menuText F CCResign "Abandonner" 0 {Abandonner (pas par eMail)}
menuText F CCClaimDraw "Rclamer la nulle" 0 {Envoyer coup et rclamer nulle (pas par eMail)}
menuText F CCOfferDraw "Proposer la nulle" 0 {Envoyer coup et proposer nulle (pas par eMail)}
menuText F CCAcceptDraw "Accepter la nulle" 0 {Accepter la nulle (pas par eMail)}
menuText F CCNewMailGame "Nouvelle partie eMail..." 0 {Commencer une nouvelle partie par eMail}
menuText F CCMailMove "eMailer le coup..." 0 {Envoyer le coup par eMail  l'adversaire}
menuText F CCGamePage "Page partie..." 0 {Ouvrir la partie dans navigateur web}
menuText F CCEditCopy "Copier parties dans Clipbase" 0 {Copy the games as CSV list to clipbase}

# Options menu:
menuText F Options "Options" 0
menuText F OptionsBoard "Echiquier" 0 {Options d'aspect de l'chiquier}
menuText F OptionsBoardSize "Taille chiquier" 0 {Changer la taille de l'chiquier}
menuText F OptionsBoardPieces "Style des pices" 6 {Changer le style des pices}
menuText F OptionsBoardColors "Couleurs..." 0 {Changer les couleurs}
menuText F OptionsBoardGraphics "Images de cases..." 0 {Select textures for squares}
translate F OptionsBGW {Slectionner les textures des cases}
translate F OptionsBoardGraphicsText {Slection des images pour les cases blanches et noires:}
menuText F OptionsBoardNames "Mes noms de joueurs..." 0 {Editer mes noms de joueurs}
menuText F OptionsExport "Exportation" 0 {Changer les options d'exportation}
menuText F OptionsFonts "Polices" 0 {Changer les polices}
menuText F OptionsFontsRegular "Normales" 0 {Changer les polices normales}
menuText F OptionsFontsMenu "Menu" 0 {Changer la police des menus}
menuText F OptionsFontsSmall "Petites" 0 {Changer les petites polices}
# ====== TODO To be translated ======
menuText F OptionsFontsTiny "Tiny" 0 {Change the tiny font}
menuText F OptionsFontsFixed "Fixe" 0 {Changer les polices de chasse fixe}
menuText F OptionsGInfo "Informations de la partie" 7 {Options d'information de la partie}
menuText F OptionsLanguage "Langue" 0 {Slectionner le menu de choix des langues}
menuText F OptionsMovesTranslatePieces "Traduction des pices" 0 {Convertit la premire lettre des pices}
menuText F OptionsMovesHighlightLastMove "Surbrillance dernier coup" 0 {Surbrillance du dernier coup}
menuText F OptionsMovesHighlightLastMoveDisplay "Afficher" 0 {Afficher la surbrillance du dernier coup}
menuText F OptionsMovesHighlightLastMoveWidth "Epaisseur" 0 {Epaisseur de la ligne}
menuText F OptionsMovesHighlightLastMoveColor "Couleur" 0 {Couleur de la ligne}
menuText F OptionsMoves "Coups" 2 {Gestion des coups}
menuText F OptionsMovesAsk "Demander avant d'craser les coups" 0 \
  {Demander avant d'craser un coup existant}
menuText F OptionsMovesAnimate "Temps d'animation" 1 \
  {Fixe le temps utilis pour l'animation des coups}
menuText F OptionsMovesDelay "Dlai entre les coups" 3 \
  {Positionner le dlai entre deux coups en mode automatique}
menuText F OptionsMovesCoord "Coordonnes entre les coups" 0 \
  {Accepter l'entre des coups par coordonnes ("g1f3")}
menuText F OptionsMovesSuggest "Montrer les coups suggrs" 0 \
  {Activer/Dsactiver le mode de suggestion de coup}
menuText F OptionsShowVarPopup "Montrer fentre des variantes" 0 {Affichage automatique des variantes}  
menuText F OptionsMovesSpace "Ajouter un espace aprs le numro du coup" 0 {Espace aprs numro du coup}  
menuText F OptionsMovesKey "Compltion clavier" 0 \
  {Activer/Dsactiver le mode de compltion du clavier}
menuText F OptionsMovesShowVarArrows "Montrer flches pour les variations" 0 {Montrer des flches pour les variations existantes}
menuText F OptionsNumbers "Format numrique" 7 {Slectionner le format des nombres}
menuText F OptionsStartup "Dmarrage" 3 {Slectionner les fentres  ouvrir au dmarrage}
menuText F OptionsTheme "Apparence" 0 {Change l'apparence de l'interface}
menuText F OptionsWindows "Fentres" 0 {Options des fentres}
menuText F OptionsWindowsIconify "Mise en icone automatique" 5 \
  {Mettre toutes les fentres en icones quand la fentre principale est mise en icone}
menuText F OptionsWindowsRaise "Apparition automatique" 0 \
  {Faire apparatre certaines fentres (i.e. barres de progression)  chaque fois qu'elles sont obscurcies}
menuText F OptionsSounds "Sons..." 2 {Configurer l'annonce des sonore des coups}
menuText F OptionsWindowsDock "Fentres groupes" 0 {Fentres groupes (ncessite un redmarrage)}
menuText F OptionsWindowsSaveLayout "Enregistrer disposition" 0 {Enregistrer disposition}
menuText F OptionsWindowsRestoreLayout "Remettre disposition" 0 {Remettre disposition}
menuText F OptionsWindowsShowGameInfo "Montrer le panneau d'info" 0 {Montrer le panneau d'info}
menuText F OptionsWindowsAutoLoadLayout "Chargement auto 1re disposition" 0 {Chargement auto de la premire disposition au dmarrage}
menuText F OptionsToolbar "Barre d'outils de la fentre principale" 12 \
  {Montrer/Cacher dans la barre d'outils de la fentre principale}
menuText F OptionsECO "Charger le fichier ECO..." 20 \
  {Charger un fichier au format ECO}
menuText F OptionsSpell "Charger le fichier d'orthographe..." 25 \
  {Charger un fichier de correction orthographique scid}
menuText F OptionsTable "Rpertoire des tables de finales TB..." 0 \
  {Slectionner un rpertoire de fichiers TB, tous les fichiers de ce rpertoire seront utiliss}
menuText F OptionsRecent "Fichiers rcents..." 0 \
  {Changer le nombre de fichiers rcents affichs dans le menu Fichier}
menuText F OptionsBooksDir "Rpertoire des bibliothques..." 0 {Rpertoire des bibliothques d'ouverture}
menuText F OptionsTacticsBasesDir "Rpertoire des bases d'entrainement..." 0 {Rpertoire des bases pour l'entrainement tactique}
menuText F OptionsSave "Sauver les options" 0 "Sauver les options dans le fichier $::optionsFile"
menuText F OptionsAutoSave "Sauvegarde automatique des options" 0 \
  {Sauvegarder automatiquement toutes les options en quittant Scid}

# Help menu:
menuText F Help "Aide" 0
menuText F HelpContents "Contenu" 0 {Montrer la page du contenu de l'aide}
menuText F HelpIndex "Index" 0 {Afficher la table des matires}
menuText F HelpGuide "Aide Rapide" 5 {Montrer la page d'aide rapide}
menuText F HelpHints "Astuces" 0 {Afficher les trucs et astuces}
menuText F HelpContact "Contact" 0 {Afficher les noms des contacts}
menuText F HelpTip "Astuce du jour" 0 {Afficher une astuce Scid}
menuText F HelpStartup "Fentre de dmarrage" 0 {Afficher la fentre de dmarrage}
menuText F HelpAbout "A propos de Scid" 2 {Information au sujet de Scid}

# Game info box popup menu:
menuText F GInfoHideNext "Cacher le coup suivant" 0
menuText F GInfoMaterial "Montrer les valeurs de matriel" 0
menuText F GInfoFEN "Montrer la notation FEN" 5
menuText F GInfoMarks "Montrer les cases colores et les flches" 5
menuText F GInfoWrap "Dcouper les longues lignes" 0
menuText F GInfoFullComment "Montrer tous les commentaires" 10
menuText F GInfoPhotos "Montrer les Photos" 5
menuText F GInfoTBNothing "Tables de finales: Rien" 12
menuText F GInfoTBResult "Tables de finales: Seulement le rsultat" 12
menuText F GInfoTBAll "Tables de finales: rsultat et meilleurs coups" 19
menuText F GInfoDelete "(Rcuprer)Effacer cette partie" 4
menuText F GInfoMark "(D)Marquer cette partie" 4
menuText F GInfoInformant "Configurer les valeurs de notation" 0

# Main window buttons:
helpMsg F .main.fbutton.button.start {Aller au dbut de la partie  (Raccourci clavier: Home)}
helpMsg F .main.fbutton.button.end {Aller  la fin de la partie  (Raccourci clavier: Fin)}
helpMsg F .main.fbutton.button.back {Reculer d'un coup  (Raccourci clavier: Flche gauche)}
helpMsg F .main.fbutton.button.forward {Avancer d'un coup  (Raccourci clavier: Flche droite)}
helpMsg F .main.fbutton.button.intoVar {Entrer dans une variante  (Raccourci clavier: v)}
helpMsg F .main.fbutton.button.exitVar {Quitter la variante en cours  (Raccourci clavier: z)}
helpMsg F .main.fbutton.button.flip {Retourner l'chiquier  (Raccourci clavier: .)}
helpMsg F .main.fbutton.button.coords {Afficher/Enlever les coordonnes  (Raccourci clavier: 0)}
helpMsg F .main.fbutton.button.stm {Afficher/Enlever l'icone du joueur ayant le trait}
helpMsg F .main.fbutton.button.autoplay {Jeu automatique  (Raccourci clavier: Ctrl+Z)}

# General buttons:
translate F Back {Retour}
translate F Browse {Parcourir}
translate F Cancel {Annuler}
translate F Continue {Continuer}
translate F Clear {Effacer}
translate F Close {Fermer}
translate F Contents {Contenu}
translate F Defaults {Par dfaut}
translate F Delete {liminer}
translate F Graph {Graphique}
translate F Help {Aide}
translate F Import {Importer}
translate F Index {Index}
translate F LoadGame {Charger partie}
translate F BrowseGame {Explorer la partie dans une fentre spare}
translate F MergeGame {Fusionner la partie comme variante}
translate F MergeGames {Fusionner les parties}
translate F Preview {Prvisualiser}
translate F Revert {Revenir}
translate F Save {Enregistrer}
translate F Search {Rechercher}
translate F Stop {Arrter}
translate F Store {Enregistrer}
translate F Update {Mettre  jour}
translate F ChangeOrient {Changer l'orientation de la fentre}
translate F ShowIcons {Montrer les icones}
translate F None {Aucun}
translate F First {Premier}
translate F Current {En cours}
translate F Last {Dernier}

# General messages:
translate F game {partie}
translate F games {parties}
translate F move {coup}
translate F moves {coups}
translate F all {tout}
translate F Yes {Oui}
translate F No {Non}
translate F Both {Les deux}
translate F King {Roi}
translate F Queen {Dame}
translate F Rook {Tour}
translate F Bishop {Fou}
translate F Knight {Cavalier}
translate F Pawn {Pion}
translate F White {Blancs}
translate F Black {Noirs}
translate F Player {Joueur}
translate F Rating {Classement ELO}
translate F RatingDiff {Diffrence de classement ELO (Blancs - Noirs)}
translate F AverageRating {Classement moyen}
translate F Event {vnement}
translate F Site {Lieux}
translate F Country {Pays}
translate F IgnoreColors {Ignorer les couleurs}
translate F Date {Date}
translate F EventDate {vnement date}
translate F Decade {Dcennie}
translate F Year {Anne}
translate F Month {Mois}
translate F Months {Janvier Fvrier Mars Avril Mai Juin Juillet Aot Septembre Octobre Novembre Dcembre}
translate F Days {Dim Lun Mar Mer Jeu Ven Sam}
translate F YearToToday {Anne jusqu' aujourd'hui}
translate F Result {Rsultat}
translate F Round {Ronde}
translate F Length {Longueur}
translate F ECOCode {code ECO}
translate F ECO {ECO}
translate F Deleted {limin}
translate F SearchResults {Rsultats de la recherche}
translate F OpeningTheDatabase {Ouverture de la base}
translate F Database {Base}
translate F Filter {Filtre}
translate F noGames {pas de parties}
translate F allGames {toutes les parties}
translate F empty {vide}
translate F clipbase {presse-papier}
translate F score {score}
translate F StartPos {Position de dpart}
translate F Total {Total}
translate F readonly {lecture seule}

# Standard error messages:
translate F ErrNotOpen {Ceci n'est pas une base ouverte.}
translate F ErrReadOnly {Cette base est en lecture seule; elle ne peut tre modifie.}
translate F ErrSearchInterrupted {La recherche a t interrompue; les rsultats sont incomplets.}

# Game information:
translate F twin {doublon}
translate F deleted {limin}
translate F comment {commentaire}
translate F hidden {cach}
translate F LastMove {Dernier coup}
translate F NextMove {Coup suivant}
translate F GameStart {Dbut de partie}
translate F LineStart {Dbut de ligne}
translate F GameEnd {Fin de partie}
translate F LineEnd {Fin de ligne}

# Player information:
translate F PInfoAll {Rsultats pour <b>toutes</b> les parties}
translate F PInfoFilter {Rsultats pour les parties <b>filtres</b>}
translate F PInfoAgainst {Rsultats contre}
translate F PInfoMostWhite {Ouvertures les plus frquentes avec les blancs}
translate F PInfoMostBlack {Ouvertures les plus frquentes avec les noirs}
translate F PInfoRating {Historique du classement}
translate F PInfoBio {Biographie}
translate F PInfoEditRatings {Editer les Classements}

# Tablebase information:
translate F Draw {Nulle}
translate F stalemate {pat}
translate F withAllMoves {avec tous les coups}
translate F withAllButOneMove {avec tous les coups sauf le dernier}
translate F with {avec}
translate F only {seulement}
translate F lose {perte}
translate F loses {pertes}
translate F allOthersLose {toutes les autres pertes}
translate F matesIn {mat en}
translate F hasCheckmated {a mat}
translate F longest {le plus long}
translate F WinningMoves {Coups gagnants}
translate F DrawingMoves {Coups faisant nulle}
translate F LosingMoves {Coups perdants}
translate F UnknownMoves {Coups dont le rsultat est inconnu}

# Tip of the day:
translate F Tip {Conseil}
translate F TipAtStartup {Conseil au dmarrage}

# Tree window menus:
menuText F TreeFile "Fichier" 0
menuText F TreeFileFillWithBase "Remplir cache avec base" 0 {Remplir le cache avec toutes les parties de la base courante}
menuText F TreeFileFillWithGame "Remplir cache avec partie" 0 {Remplir le cache avec la partie de la base courante}
menuText F TreeFileSetCacheSize "Taille du cache" 0 {Taille du cache}
menuText F TreeFileCacheInfo "Info cache" 0 {Afficher information sur l'utilisation du cache}
menuText F TreeFileSave "Sauver le cache" 0
menuText F TreeFileFill "Remplir le cache" 0
menuText F TreeFileBest "Liste des meilleures parties" 0 {Montrer la liste des meilleures parties}
menuText F TreeFileGraph "Graphique" 0 {Graphique de l'arbre}
menuText F TreeFileCopy "Copier l'arbre dans le presse-papiers" 0
menuText F TreeFileClose "Fermer la fentre d'arbre" 0
menuText F TreeMask "Masque" 0
menuText F TreeMaskNew "Nouveau" 0 {Nouveau masque}
menuText F TreeMaskOpen "Ouvrir" 0 {Ouvrir masque}
menuText F TreeMaskOpenRecent "Ouvrir rcent" 0 {Ouvrir un masque rcent}
menuText F TreeMaskSave "Sauver" 0 {Sauver masque}
menuText F TreeMaskClose "Fermer" 0 {Fermer masque}
menuText F TreeMaskFillWithGame "Remplir avec partie" 0 {Remplir le masque avec partie}
menuText F TreeMaskFillWithBase "Remplir avec base" 0 {Remplir le masque avec les parties de la base}
menuText F TreeMaskInfo "Info" 0 {Statistiques du masque}
menuText F TreeMaskDisplay "Afficher l'arbre" 0 {Affichage des donnes du masque sous la forme d'un arbre}
menuText F TreeMaskSearch "Chercher" 0 {Chercher dans le masque courant}
menuText F TreeSort "Trier" 0
menuText F TreeSortAlpha "Alphabtique" 0
menuText F TreeSortECO "code ECO" 0
menuText F TreeSortFreq "Frquence" 0
menuText F TreeSortScore "Score" 0
menuText F TreeOpt "Options" 0
menuText F TreeOptSlowmode "Mode lent" 0 {Mode lent pour rafraichissement (prcis)}
menuText F TreeOptFastmode "Mode rapide" 0 {Mode rapide pour rafraichissement (pas de transpositions)}
menuText F TreeOptFastAndSlowmode "Mode rapide puis lent" 0 {Mode rapide puis lent pour rafraichissement}
menuText F TreeOptStartStop "Rafrachissement auto" 0 {Rafrachissement automatique de la fentre}
menuText F TreeOptLock "Verrouille" 0 {D/verrouiller l'arbre  la base en cours}
menuText F TreeOptTraining "Entranement" 0 {Dmarrer/Arrter l'arbre du mode d'entranement}
menuText F TreeOptAutosave "Sauver le cache automatiquement" 0
menuText F TreeHelp "Aide" 0
menuText F TreeHelpTree "Aide Arbre" 0
menuText F TreeHelpIndex "Index" 0
translate F SaveCache {Sauver le cache}
translate F Training {Entranement}
translate F LockTree {Verrouiller}
translate F TreeLocked {verrouill}
translate F TreeBest {Meilleur}
translate F TreeBestGames {Arbre des meilleures parties}
# Note: the next message is the tree window title row. After editing it,
# check the tree window to make sure it lines up with the actual columns.
translate F TreeTitleRow \
  {    Coup   ECO        Frquence   Score EloMoy Perf AnneMoy %Nulle}
translate F TreeTotal {TOTAL}
translate F DoYouWantToSaveFirst {voulez-vous d'abord sauvegarder}
translate F AddToMask {Ajouter au masque}
translate F RemoveFromMask {Enlever du masque}
translate F AddThisMoveToMask {Ajouter ce coup au masque}
translate F SearchMask {Recherche dans masque}
translate F DisplayMask {Affichage du masque}
translate F Nag {Code Nag}
translate F Marker {Marqueur}
translate F Include {Inclure}
translate F Exclude {Exclure}
translate F MainLine {Ligne principale}
translate F Bookmark {Signet}
translate F NewLine {Nouvelle ligne}
translate F ToBeVerified {A vrifier}
translate F ToTrain {S'entrainer}
translate F Dubious {Douteux}
translate F ToRemove {A supprimer}
translate F NoMarker {Aucun marqueur}
translate F ColorMarker {Couleur}
translate F WhiteMark {Blanc}
translate F GreenMark {Vert}
translate F YellowMark {Jaune}
translate F BlueMark {Bleu}
translate F RedMark {Rouge}
translate F CommentMove {Annoter coup}
translate F CommentPosition {Annoter position}
translate F AddMoveToMaskFirst {Ajoutez d'abord le coup au masque}
translate F OpenAMaskFileFirst {Ouvrez d'abord un masque}
translate F Positions {Positions}
translate F Moves {Coups}

# Finder window:
menuText F FinderFile "Fichier" 0
menuText F FinderFileSubdirs "Rechercher dans les sous rpertoires" 0
menuText F FinderFileClose "Fermer l'explorateur de fichiers" 0
menuText F FinderSort "Trier" 0
menuText F FinderSortType "Type" 0
menuText F FinderSortSize "Taille" 0
menuText F FinderSortMod "Modifi" 0
menuText F FinderSortName "Nom" 0
menuText F FinderSortPath "Chemin" 0
menuText F FinderTypes "Types" 0
menuText F FinderTypesScid "Bases Scid" 0
menuText F FinderTypesOld "Bases Scid  l'ancien format" 0
menuText F FinderTypesPGN "fichiers PGN" 0
menuText F FinderTypesEPD "fichiers EPD (thorie)" 0
menuText F FinderTypesRep "fichiers des rpertoires" 0
menuText F FinderHelp "Aide" 0
menuText F FinderHelpFinder "Aide de l'explorateur de fichiers" 0
menuText F FinderHelpIndex "Index" 0
translate F FileFinder {Explorateur de fichiers}
translate F FinderDir {Rpertoire}
translate F FinderDirs {Rpertoires}
translate F FinderFiles {Fichiers}
translate F FinderUpDir {rpertoire prcdent}
translate F FinderCtxOpen {Ouvrir}
translate F FinderCtxBackup {Sauvegarder}
translate F FinderCtxCopy {Copier}
translate F FinderCtxMove {Dplacer}
translate F FinderCtxDelete {Supprimer}

# Player finder:
menuText F PListFile "Fichier" 0
menuText F PListFileUpdate "Mettre  jour" 0
menuText F PListFileClose "Fermer la recherche de joueur" 0
menuText F PListSort "Trier" 0
menuText F PListSortName "Nom" 0
menuText F PListSortElo "Elo" 0
menuText F PListSortGames "Parties" 0
menuText F PListSortOldest "Les plus vieux" 0
menuText F PListSortNewest "Les plus rcents" 0

# Tournament finder:
menuText F TmtFile "Fichier" 0
menuText F TmtFileUpdate "Mettre  jour" 0
menuText F TmtFileClose "Fermer l'explorateur de tournois" 0
menuText F TmtSort "Trier" 0
menuText F TmtSortDate "Date" 0
menuText F TmtSortPlayers "Joueurs" 0
menuText F TmtSortGames "Parties" 0
menuText F TmtSortElo "Elo" 0
menuText F TmtSortSite "Lieux" 0
menuText F TmtSortEvent "vnement" 1
menuText F TmtSortWinner "Vainqueur" 0
translate F TmtLimit "Limite de liste"
translate F TmtMeanElo "Moyenne ELO la plus basse"
translate F TmtNone "Aucun tournoi correspondant n'a t trouv."

# Graph windows:
menuText F GraphFile "Fichier" 0
menuText F GraphFileColor "Sauver comme Postscript en couleurs..." 27
menuText F GraphFileGrey "Sauver comme Postscript en niveaux de gris..." 27
menuText F GraphFileClose "Fermer la fentre" 0
menuText F GraphOptions "Options" 0
menuText F GraphOptionsWhite "Blancs" 0
menuText F GraphOptionsBlack "Noirs" 0
menuText F GraphOptionsBoth "Les deux" 4
menuText F GraphOptionsPInfo "Informations joueurs" 0
translate F GraphFilterTitle "Graphique de filtre: frquence pour 1000 parties"
translate F GraphAbsFilterTitle "Graphique de filtre: frquence des parties"
translate F ConfigureFilter {Configurer l'axe des X par anne, classement et coups}
translate F FilterEstimate "Estimer"
translate F TitleFilterGraph "Scid: Graphe de filtre"

# Analysis window:
translate F AddVariation {Ajouter une variante}
translate F AddAllVariations {Ajouter toutes les variantes}
translate F AddMove {Ajouter le coup}
translate F Annotate {Annotation}
translate F ShowAnalysisBoard {Montrer chiquier d'analyse}
translate F ShowInfo {Montrer infos moteur}
translate F FinishGame {Continuer la partie}
translate F StopEngine {Arrter le moteur}
translate F StartEngine {Dmarrer le moteur}
translate F LockEngine {Verrouiller moteur  la position actuelle}
translate F AnalysisCommand {Commande d'analyse}
translate F PreviousChoices {Choix prcdents}
translate F AnnotateTime {Fixer le temps en secondes entre deux coups}
translate F AnnotateWhich {Ajouter des variantes}
translate F AnnotateAll {Pour les coups des deux cots}
translate F AnnotateAllMoves {Annoter tous les coups}
translate F AnnotateWhite {Pour les coups des blancs seulement}
translate F AnnotateBlack {Pour les coups des noirs seulement}
translate F AnnotateBlundersOnly {Quand le coup est une erreur}
translate F AnnotateBlundersOnlyScoreChange {Coup faible, le score varie de/: }
translate F BlundersThreshold {Seuil de l'erreur}
# TODO: Translate
translate F ScoreAllMoves {Valider tous les coups}
translate F LowPriority {Priorit processeur basse}
translate F ClickHereToSeeMoves {Cliquer ici pour afficher les coups}
translate F ConfigureInformant {Configurer les valeurs des notations}
translate F Informant!? {Coup intressant}
translate F Informant? {Coup faible}
translate F Informant?? {Mauvais coup}
translate F Informant?! {Coup douteux}
translate F Informant+= {Les blancs ont un lger avantage}
translate F Informant+/- {Les blancs ont l'avantage}
translate F Informant+- {Les blancs ont un avantage dcisif}
translate F Informant++- {La partie est gagne}

# Book window
translate F Book {Bibliothque}
translate F OtherBookMoves {Bibliothque de l'adversaire}
translate F OtherBookMovesTooltip {Coups pour lesquels l'adversaire a une rponse}

# Analysis Engine open dialog:
translate F EngineList {Liste des moteurs d'analyse}
translate F EngineName {Nom}
translate F EngineCmd {Commande}
translate F EngineArgs {Paramtres}
translate F EngineDir {Rpertoire}
translate F EngineElo {Elo}
translate F EngineTime {Date}
translate F EngineNew {Nouvelle}
translate F EngineEdit {diter}
translate F EngineRequired {Les champs en gras sont requis; les autres sont optionnels}

# Stats window menus:
menuText F StatsFile "Fichier" 0
menuText F StatsFilePrint "crire dans fichier..." 0
menuText F StatsFileClose "Fermer la fentre" 0
menuText F StatsOpt "Options" 0

# PGN window menus:
menuText F PgnFile "Fichier" 0
menuText F PgnFileCopy "Copier la partie dans le Presse-papier" 0
menuText F PgnFilePrint "crire dans fichier..." 0
menuText F PgnFileClose "Fermer la fentre PGN" 0
menuText F PgnOpt "Affichage" 0
menuText F PgnOptColor "Couleur d'affichage" 0
menuText F PgnOptShort "Entte court (3-lignes)" 0
menuText F PgnOptSymbols "Annotations symboliques" 0
menuText F PgnOptIndentC "Indentation des commentaires" 0
menuText F PgnOptIndentV "Indentation des variantes" 16
menuText F PgnOptColumn "Style en colonne (un coup par ligne)" 1
menuText F PgnOptSpace "Espace aprs numro des coups" 0
menuText F PgnOptStripMarks "Enlever les codes de flches et de coloration de cases" 1
menuText F PgnOptBoldMainLine "Mettre en gras les coups de la ligne principale" 4
menuText F PgnColor "Couleur" 0
menuText F PgnColorHeader "Entte..." 0
menuText F PgnColorAnno "Annotations..." 0
menuText F PgnColorComments "Commentaires..." 0
menuText F PgnColorVars "Variantes..." 0
menuText F PgnColorBackground "Couleur du fond..." 11
menuText F PgnColorMain "Main line..." 0
menuText F PgnColorCurrent "Dernier coup..." 1
menuText F PgnColorNextMove "Prochain coup..." 0
menuText F PgnHelp "Aide" 0
menuText F PgnHelpPgn "Aide PGN" 0
menuText F PgnHelpIndex "Index" 0
translate F PgnWindowTitle {Notation - partie %u}

# Crosstable window menus:
menuText F CrosstabFile "Fichier" 0
menuText F CrosstabFileText "crire dans un fichier texte..." 23
menuText F CrosstabFileHtml "crire dans un fichier HTML..." 23
menuText F CrosstabFileLaTeX "crire dans un fichier LaTeX..." 23
menuText F CrosstabFileClose "Fermer fentre tableau" 0
menuText F CrosstabEdit "diter" 0
menuText F CrosstabEditEvent "vnement" 0
menuText F CrosstabEditSite "Lieux" 0
menuText F CrosstabEditDate "Date" 0
menuText F CrosstabOpt "Affichage" 0
menuText F CrosstabOptAll "Toutes rondes" 0
menuText F CrosstabOptSwiss "Suisse" 0
menuText F CrosstabOptKnockout "KO" 0
menuText F CrosstabOptAuto "Auto" 0
menuText F CrosstabOptAges "Ages en annes" 8
menuText F CrosstabOptNats "Nationalits" 0
menuText F CrosstabOptRatings "Classements" 0
menuText F CrosstabOptTitles "Titres" 0
menuText F CrosstabOptBreaks "Scores du dpartage" 4
menuText F CrosstabOptDeleted "Inclure les parties effaces" 8
menuText F CrosstabOptColors "Couleurs (systme suisse uniquement)" 1
menuText F CrosstabOptColumnNumbers "Colonnes numrotes (Toutes rondes seulement)" 2
menuText F CrosstabOptGroup "Scores du groupe" 0
menuText F CrosstabSort "Trier" 0
menuText F CrosstabSortName "Nom" 0
menuText F CrosstabSortRating "Elo" 0
menuText F CrosstabSortScore "Score" 0
menuText F CrosstabColor "Couleur" 0
menuText F CrosstabColorPlain "Texte normal" 0
menuText F CrosstabColorHyper "Hypertexte" 0
menuText F CrosstabHelp "Aide" 0
menuText F CrosstabHelpCross "Aide tableau" 0
menuText F CrosstabHelpIndex "Index" 0
translate F SetFilter {Activer le filtre}
translate F AddToFilter {Ajouter au filtre}
translate F Swiss {Suisse}
translate F Category {Catgorie}

# Opening report window menus:
menuText F OprepFile "Fichier" 0
menuText F OprepFileText "crire dans un fichier texte..." 23
menuText F OprepFileHtml "crire dans un fichier HTML..." 23
menuText F OprepFileLaTeX "crire dans un fichier LaTeX..." 23
menuText F OprepFileOptions "Options..." 0
menuText F OprepFileClose "Fermer la fentre du rapport" 0
menuText F OprepFavorites "Favoris" 1
menuText F OprepFavoritesAdd "Ajouter au rapport..." 0
menuText F OprepFavoritesEdit "Editer les favoris de rapport..." 0
menuText F OprepFavoritesGenerate "Gnrer les rapports..." 0

menuText F OprepHelp "Aide" 0
menuText F OprepHelpReport "Aide du rapport" 0
menuText F OprepHelpIndex "Index" 0

# Repertoire editor:
menuText F RepFile "Fichier" 0
menuText F RepFileNew "Nouvelle" 0
menuText F RepFileOpen "Ouvrir..." 0
menuText F RepFileSave "Sauver..." 0
menuText F RepFileSaveAs "Sauver sous..." 5
menuText F RepFileClose "Fermer" 0
menuText F RepEdit "diter" 0
menuText F RepEditGroup "Ajouter Groupe" 4
menuText F RepEditInclude "Ajouter Inclure ligne" 4
menuText F RepEditExclude "Ajouter Exclure ligne" 4
menuText F RepView "Voir" 0
menuText F RepViewExpand "tends tous les groupes" 0
menuText F RepViewCollapse "Fermer tous les groupes" 0
menuText F RepSearch "Rechercher" 0
menuText F RepSearchAll "Tout le rpertoire..." 0
menuText F RepSearchDisplayed "Afficher seulement les lignes..." 0
menuText F RepHelp "Aide" 0
menuText F RepHelpRep "Aide sur le rpertoire" 0
menuText F RepHelpIndex "Index" 0
translate F RepSearch "Rechercher dans le rpertoire"
translate F RepIncludedLines "lignes inclues"
translate F RepExcludedLines "lignes exclues"
translate F RepCloseDialog {Ce rpertoire a des modifications non enregistres.

Voulez vous rellement continuer et ne pas tenir compte des changements que vous avez effectu?
}

# Header search:
translate F HeaderSearch {Rechercher Entte}
translate F EndSideToMove {Ct devant jouer  la fin de la partie}
translate F GamesWithNoECO {Partie sans code ECO?}
translate F GameLength {Longueur de la partie}
translate F FindGamesWith {Chercher les parties avec}
translate F StdStart {Pos. dpart non standard}
translate F Promotions {Promotions}
translate F Comments {Commentaires}
translate F Variations {Variantes}
translate F Annotations {Annotations}
translate F DeleteFlag {Marques supprimes}
translate F WhiteOpFlag {Ouverture des blancs}
translate F BlackOpFlag {Ouverture des noirs}
translate F MiddlegameFlag {Milieu de partie}
translate F EndgameFlag {Finale}
translate F NoveltyFlag {Nouveaut}
translate F PawnFlag {Structure de pions}
translate F TacticsFlag {Tactiques}
translate F QsideFlag {Jeu  l'aile dame}
translate F KsideFlag {Jeu  l'aile roi}
translate F BrilliancyFlag {Spectaculaire}
translate F BlunderFlag {Gaffe}
translate F UserFlag {Utilisateur}
translate F PgnContains {PGN contenant du texte}
# ====== TODO To be translated ======
translate F Annotator {Annotator}
# ====== TODO To be translated ======
translate F Cmnts {Annotated games only}

# Game list window:
translate F GlistNumber {Numro}
translate F GlistWhite {Blancs}
translate F GlistBlack {Noirs}
translate F GlistWElo {B-Elo}
translate F GlistBElo {N-Elo}
translate F GlistEvent {vnement}
translate F GlistSite {Lieux}
translate F GlistRound {Ronde}
translate F GlistDate {Date}
translate F GlistYear {Anne}
translate F GlistEDate {vnement-Date}
translate F GlistResult {Rsultat}
translate F GlistLength {Longueur}
translate F GlistCountry {Pays}
translate F GlistECO {ECO}
translate F GlistOpening {Ouverture}
translate F GlistEndMaterial {Matriel final}
translate F GlistDeleted {Effac}
translate F GlistFlags {Drapeaux}
translate F GlistVars {Variantes}
translate F GlistComments {Commentaires}
translate F GlistAnnos {Annotations}
translate F GlistStart {Dpart}
translate F GlistGameNumber {Partie numro}
# ====== TODO To be translated ======
translate F GlistAverageElo {Average Elo}
# ====== TODO To be translated ======
translate F GlistRating {Rating}
translate F GlistFindText {Rechercher texte}
translate F GlistMoveField {Coup}
translate F GlistEditField {Configurer}
translate F GlistAddField {Ajouter}
translate F GlistDeleteField {Enlever}
translate F GlistWidth {Largeur}
translate F GlistAlign {Aligner}
# ====== TODO To be translated ======
translate F GlistAlignL {Align: left}
# ====== TODO To be translated ======
translate F GlistAlignR {Align: right}
# ====== TODO To be translated ======
translate F GlistAlignC {Align: center}
translate F GlistColor {Couleur}
translate F GlistSep {Sparateur}
# ====== TODO To be translated ======
translate F GlistCurrentSep {-- Current --}
# ====== TODO To be translated ======
translate F GlistNewSort {New}
# ====== TODO To be translated ======
translate F GlistAddToSort {Add}
# ====== TODO To be translated ======
translate F GsortSort {Sort...}
# ====== TODO To be translated ======
translate F GsortDate {Date}
# ====== TODO To be translated ======
translate F GsortYear {Year}
# ====== TODO To be translated ======
translate F GsortEvent {Event}
# ====== TODO To be translated ======
translate F GsortSite {Site}
# ====== TODO To be translated ======
translate F GsortRound {Round}
# ====== TODO To be translated ======
translate F GsortWhiteName {White Name}
# ====== TODO To be translated ======
translate F GsortBlackName {Black Name}
# ====== TODO To be translated ======
translate F GsortECO {ECO}
# ====== TODO To be translated ======
translate F GsortResult {Result}
# ====== TODO To be translated ======
translate F GsortMoveCount {Move Count}
# ====== TODO To be translated ======
translate F GsortAverageElo {Average Elo}
# ====== TODO To be translated ======
translate F GsortCountry {Country}
# ====== TODO To be translated ======
translate F GsortDeleted {Deleted}
# ====== TODO To be translated ======
translate F GsortEventDate {Event Date}
# ====== TODO To be translated ======
translate F GsortWhiteElo {White Elo}
# ====== TODO To be translated ======
translate F GsortBlackElo {Black Elo}
# ====== TODO To be translated ======
translate F GsortComments {Comments}
# ====== TODO To be translated ======
translate F GsortVariations {Variations}
# ====== TODO To be translated ======
translate F GsortNAGs {NAGs}
# ====== TODO To be translated ======
translate F GsortAscending {Ascending}
# ====== TODO To be translated ======
translate F GsortDescending {Descending}
# ====== TODO To be translated ======
translate F GsortAdd {Add}
# ====== TODO To be translated ======
translate F GsortStore {Store}
# ====== TODO To be translated ======
translate F GsortLoad {Load}

# menu shown with right mouse button down on game list.
translate F GlistRemoveThisGameFromFilter  {Enlever cette partie du filtre}
translate F GlistRemoveGameAndAboveFromFilter  {Enlever cette partie (et celles au-dessus) du filtre}
translate F GlistRemoveGameAndBelowFromFilter  {Enlever cette partie (et celles en-dessous) du filtre}
translate F GlistDeleteGame {(Ds-)effacer cette partie} 
translate F GlistDeleteAllGames {Effacer toutes les parties du filtre} 
translate F GlistUndeleteAllGames {Ds-effacer toutes les parties du filtre} 
translate F GlistMergeGameInBase {Fusionner la partie dans une autre base} 

# Maintenance window:
translate F DatabaseName {Nom de base:}
translate F TypeIcon {Type icne:}
translate F NumOfGames {Parties:}
translate F NumDeletedGames {Parties supprimes:}
translate F NumFilterGames {Parties dans le filtre:}
translate F YearRange {Annes:}
translate F RatingRange {Classements:}
translate F Description {Description}
translate F Flag {Drapeau}
# ====== TODO To be translated ======
translate F CustomFlags {Custom flags}
translate F DeleteCurrent {Effacer la partie courante}
translate F DeleteFilter {Effacer le filtre de parties}
translate F DeleteAll {Effacer toutes les parties}
translate F UndeleteCurrent {Rcuprer la partie en cours}
translate F UndeleteFilter {Rcuprer les parties filtres}
translate F UndeleteAll {Rcuprer toutes les parties}
translate F DeleteTwins {Effacer les parties en doublon}
translate F MarkCurrent {Slectionner la partie en cours}
translate F MarkFilter {Slectionner les parties filtres}
translate F MarkAll {Slectionner toutes les parties}
translate F UnmarkCurrent {Dslectionner la partie en cours}
translate F UnmarkFilter {Dslectionner les parties filtres}
translate F UnmarkAll {Dslectionner toutes les parties}
translate F Spellchecking {Vrification orthographique}
translate F Players {Joueurs}
translate F Events {vnements}
translate F Sites {Lieux}
translate F Rounds {Rondes}
translate F DatabaseOps {Oprations sur la base}
translate F ReclassifyGames {ECO-Classifier les parties...}
translate F CompactDatabase {Compacter la base}
translate F SortDatabase {Trier la base}
translate F AddEloRatings {Ajouter les classements Elo}
translate F AutoloadGame {Chargement automatique du numro de partie}
translate F StripTags {Enlever les marqueurs PGN}
translate F StripTag {Enlever les marqueurs}
translate F Cleaner {Nettoyer}
translate F CleanerHelp {
Le Nettoyeur Scid va raliser pour la base en cours toutes les actions de maintenance que vous avez slectionn  partir de la liste ci-dessous.

Les rglages en cours de la classification ECO et les dialogues d'effacement des jumeaux vont s'appliquer si vous avez slectionn ces fonctions.
}
translate F CleanerConfirm {
Une fois que le nettoyage est commenc, il ne peut tre interrompu!

Cela peut prendre beaucoup de temps sur une grande base, suivant les fonctions que vous avez slectionn et leurs rglages en cours.

Etes vous sr que vous voulez commencer les fonctions de maintenance que vous avez slectionn?
}

translate F TwinCheckUndelete {pour permuter; "u" pour annuler l'effacement des deux}
translate F TwinCheckprevPair {Paire prcdente}
translate F TwinChecknextPair {Paire suivante}
translate F TwinChecker {Scid: vrificateur de doublon}
translate F TwinCheckTournament {Parties dans le tournoi:}
translate F TwinCheckNoTwin {Pas de doublon  }
translate F TwinCheckNoTwinfound {No twin was detected for this game.\nTo show twins using this window, you must first use the "Delete twin games..." function. }
translate F TwinCheckTag {Partager tags...}
translate F TwinCheckFound1 {Scid a trouv $result doublons}
translate F TwinCheckFound2 { et positionn le marquer de suppression}
translate F TwinCheckNoDelete {Il n'y a pas de parties dans cette base  effacer.}
translate F TwinCriteria1 { Les paramtres pour trouver des doublons risquent de\nfaire que des parties diffrentes avec des coups similaires soient marques comme des doublons.}
translate F TwinCriteria2 {Il est recommand de slectionner "Non" pour "mmes coups", vous devriez slectionner "Oui" pour les couleurs, vnement, site, ronde, anne et mois.\nVoulez-vous continuer et effacer les doublons quand mme ? }
translate F TwinCriteria3 {Il est recommand de slectionner "Oui" pour au moins deux des paramtres "mme site", "mme ronde" et "mme anne".\nVoulez-vous continuer et effacer les doublons quand mme ?}
translate F TwinCriteriaConfirm {Scid: Confirmer les paramtres de doublons}
translate F TwinChangeTag "Changer les tags de partie suivants:\n\n"
translate F AllocRatingDescription "Cette commande va utiliser les fichiers de vrification de noms et de classement ELO pour les parties de cette base. Chaque fois qu'un joueur n'a pas de classement mais que son classement est list dans le fichier de vrification de noms  la date de la partie, ce classement est pris en compte."
translate F RatingOverride "Remplacer le classement non nul existant ?"
translate F AddRatings "ajouter classement :"
translate F AddedRatings {Scid a ajout $r classements Elo dans $g parties.}
translate F NewSubmenu "Nouveau sous-menu"

# Comment editor:
translate F AnnotationSymbols {Symboles d'annotation:}
translate F Comment {Commentaire:}
translate F InsertMark {Insre une marque}
translate F InsertMarkHelp {
Insrer/enlever marque: Slectionner la couleur, le type et la case.
Insrer/enlever flche: Clic droit sur deux cases.
}

# Nag buttons in comment editor:
translate F GoodMove {Bon coup}
translate F PoorMove {Coup faible}
translate F ExcellentMove {Excellent coup}
translate F Blunder {Gaffe}
translate F InterestingMove {Coup intressant}
translate F DubiousMove {coup douteux}
translate F WhiteDecisiveAdvantage {Les blancs ont un avantage dcisif}
translate F BlackDecisiveAdvantage {Les noirs ont un avantage dcisif}
translate F WhiteClearAdvantage {Les blancs ont l'avantage}
translate F BlackClearAdvantage {Les noirs ont l'avantage}
translate F WhiteSlightAdvantage {Les blancs ont un lger avantage}
translate F BlackSlightAdvantage {Les noirs ont un lger avantage}
translate F Equality {Egalit}
translate F Unclear {Peu clair}
translate F Diagram {Diagramme}

# Board search:
translate F BoardSearch {Rechercher Position}
translate F FilterOperation {Opration sur le filtre en cours:}
translate F FilterAnd {ET (Restreint le filtre)}
translate F FilterOr {OU (Ajouter au filtre)}
translate F FilterIgnore {IGNORER (Restaure le filtre initial)}
translate F SearchType {Type de recherche:}
translate F SearchBoardExact {Position exacte (mmes pices sur les mmes cases)}
translate F SearchBoardPawns {Pions (mme matriel, tous les pions sur les mmes cases)}
translate F SearchBoardFiles {Colonnes (mme matriel, tous les pions sur mmes colonnes)}
translate F SearchBoardAny {Tous (mme matriel, pions et pices n'importe o)}
translate F SearchInRefDatabase { Dans la base de rfrence }
translate F LookInVars {Chercher dans les variantes}

# Material search:
translate F MaterialSearch {Rechercher Motifs}
translate F Material {Matriel}
translate F Patterns {Motifs}
translate F Zero {Zro}
translate F Any {Tout}
translate F CurrentBoard {Position en cours}
translate F CommonEndings {Finales}
translate F CommonPatterns {Motifs}
translate F MaterialDiff {Diffrence en matriel}
translate F squares {cases}
translate F SameColor {Mmes couleur}
translate F OppColor {Couleurs opposes}
translate F Either {Les deux}
translate F MoveNumberRange {Dplacer de X coups}
translate F MatchForAtLeast {Correspond  la dernire}
translate F HalfMoves {demi-coups}

# Common endings in material search:
translate F EndingPawns {Finales de pions}
translate F EndingRookVsPawns {Tour contre pion(s)}
translate F EndingRookPawnVsRook {Tour et 1 pion contre Tour}
translate F EndingRookPawnsVsRook {Tour et pion(s) contre Tour}
translate F EndingRooks {Finales Tour contre Tour}
translate F EndingRooksPassedA {Finales de Tour contre Tour avec un pion a pass}
translate F EndingRooksDouble {Finales 2 tours}
translate F EndingBishops {Finales Fou contre Fou}
translate F EndingBishopVsKnight {Finales Fou contre Cavalier}
translate F EndingKnights {Finales Cavalier contre Cavalier}
translate F EndingQueens {Finales Dame contre Dame}
translate F EndingQueenPawnVsQueen {Dame et 1 pion contre Dame}
translate F BishopPairVsKnightPair {Milieu de jeu 2 Fous contre 2 Cavaliers}

# Common patterns in material search:
translate F PatternWhiteIQP {White IQP} ;# ***
translate F PatternWhiteIQPBreakE6 {White IQP: d4-d5 break vs. e6} ;# ***
translate F PatternWhiteIQPBreakC6 {White IQP: d4-d5 break vs. c6} ;# ***
translate F PatternBlackIQP {Black IQP} ;# ***
translate F PatternWhiteBlackIQP {White IQP vs. Black IQP} ;# ***
translate F PatternCoupleC3D4 {White c3+d4 Isolated Pawn Couple} ;# ***
translate F PatternHangingC5D5 {Black Hanging Pawns on c5 and d5} ;# ***
translate F PatternMaroczy {Maroczy Center (with Pawns on c4 and e4)} ;# ***
translate F PatternRookSacC3 {Rook Sacrifice on c3} ;# ***
translate F PatternKc1Kg8 {O-O-O vs. O-O (Kc1 vs. Kg8)} ;# ***
translate F PatternKg1Kc8 {O-O vs. O-O-O (Kg1 vs. Kc8)} ;# ***
translate F PatternLightFian {Light-Square Fianchettos (Bishop-g2 vs. Bishop-b7)} ;# ***
translate F PatternDarkFian {Dark-Square Fianchettos (Bishop-b2 vs. Bishop-g7)} ;# ***
translate F PatternFourFian {Four Fianchettos (Bishops on b2,g2,b7,g7)} ;# ***

# Game saving:
translate F Today {Aujourd'hui}
translate F ClassifyGame {Classer la partie}

# Setup position:
translate F EmptyBoard {Vider l'chiquier}
translate F InitialBoard {R-initialiser l'chiquier}
translate F SideToMove {Cot qui a le trait}
translate F MoveNumber {Coup numro}
translate F Castling {Roque}
translate F EnPassantFile {Prise en passant}
translate F ClearFen {Effacer FEN}
translate F PasteFen {Coller FEN}
translate F SaveAndContinue {Enregistrer et continuer}
translate F DiscardChangesAndContinue {Ignorer changements\net continuer}
translate F GoBack {Revenir}

# Replace move dialog:
translate F ReplaceMove {Remplacer le coup}
translate F AddNewVar {Ajouter variante}
translate F NewMainLine {Ligne principale}
translate F ReplaceMoveMessage {Un coup existe dj.

Vous pouvez le remplacer, ou bien dtruire tous les coups aprs ce coup ou ajouter une nouvelle variante.

(Vous pouvez demander  ne plus voir ce message  l'avenir, en dslectionnant l'option "Demander avant de remplacer le coup" dans le menu des options)}

# Make database read-only dialog:
translate F ReadOnlyDialog {Si vous mettez cette base en lecture seule, aucun changement ne sera permis.
Aucune partie ne peut tre sauve ou remplace, et aucun drapeau d'effacement ne peut tre altr.
Tout les tris ou les rsultats de classification ECO seront temporaires.

Vous pouvez facilement rendre la base  nouveau accessible en criture, en la fermant et en l'ouvrant  nouveau.

Voulez vous vraiment passer cette base en lecture seule?}

# Clear game dialog:
translate F ClearGameDialog {Cette partie a t modifie.

Voulez vous vraiment continuer et ignorer les changements effectus?
}

# Exit dialog:
translate F ExitDialog {Voulez vous rellement quitter Scid?}
translate F ExitUnsaved {Les bases de donnes suivantes ont des parties modifies non sauvegardes. Si vous quittez maintenant, ces modifications seront perdues.}

# Import window:
translate F PasteCurrentGame {Coller la partie courante}
translate F ImportHelp1 {Entrer ou coller une partie au format PGN dans le cadre ci-dessus.}
translate F ImportHelp2 {Toutes les erreurs durant l'import de la partie seront affiches ici.}
translate F OverwriteExistingMoves {Effacer les coups existants ?}

# ECO Browser:
translate F ECOAllSections {toutes les sections ECO}
translate F ECOSection {section ECO}
translate F ECOSummary {Rsum pour}
translate F ECOFrequency {Frquence des sous-codes pour}

# Opening Report:
translate F OprepTitle {Rapport sur l'ouverture}
translate F OprepReport {Rapport}
translate F OprepGenerated {Gnr par}
translate F OprepStatsHist {Statistiques et Historique}
translate F OprepStats {Statistiques}
translate F OprepStatAll {Toutes les parties du rapport}
translate F OprepStatBoth {Les deux joueurs classs}
translate F OprepStatSince {Depuis}
translate F OprepOldest {Les parties les plus anciennes}
translate F OprepNewest {Les parties les plus rcentes}
translate F OprepPopular {Popularit courante}
translate F OprepFreqAll {Frquence pour toutes les annes: }
translate F OprepFreq1   {Depuis 1 an jusqu' ce jour:      }
translate F OprepFreq5   {Depuis 5 ans jusqu' ce jour:     }
translate F OprepFreq10  {Depuis 10 ans jusqu' ce jour:    }
translate F OprepEvery {une fois toutes les %u parties}
translate F OprepUp {%u%s rencontr pour l'ensemble des annes}
translate F OprepDown {%u%s non rencontr l'ensemble des annes}
translate F OprepSame {sans changement par rapport  l'ensemble des annes}
translate F OprepMostFrequent {Joueurs les plus frquents}
translate F OprepMostFrequentOpponents {Adversaires les plus frquents}
translate F OprepRatingsPerf {Classements et performance}
translate F OprepAvgPerf {Classements moyens et performance}
translate F OprepWRating {Classement des blancs}
translate F OprepBRating {Classement des noirs}
translate F OprepWPerf {Performance des blancs}
translate F OprepBPerf {Performance des noirs}
translate F OprepHighRating {Parties avec le classement moyen le plus lev}
translate F OprepTrends {Tendances de rsultat}
translate F OprepResults {Rsultats longueurs et frquences}
translate F OprepLength {Longueur de partie}
translate F OprepFrequency {Frquence}
translate F OprepWWins {Gains blancs: }
translate F OprepBWins {Gains noirs:  }
translate F OprepDraws {Nulles:       }
translate F OprepWholeDB {base complte}
translate F OprepShortest {Gains les plus rapides}
translate F OprepMovesThemes {Coups et Thmes}
translate F OprepMoveOrders {Ordres de coups atteignant la position du rapport}
translate F OprepMoveOrdersOne \
  {Il n'y a qu'un seul ordre de coups pour atteindre cette position:}
translate F OprepMoveOrdersAll \
  {Il y a %u ordres de coups pour atteindre cette position:}
translate F OprepMoveOrdersMany \
  {Il y a %u ordres de coups pour atteindre cette position. Les %u premiers sont:}
translate F OprepMovesFrom {Coups depuis la position du rapport}
translate F OprepMostFrequentEcoCodes {Codes ECO les plus frquents}
translate F OprepThemes {Thmes positionnels}
translate F OprepThemeDescription {Frquence des thmes dans les premiers %u coups de chaque partie}
translate F OprepThemeSameCastling {Roques du mme ct}
translate F OprepThemeOppCastling {Roques du ct oppos}
translate F OprepThemeNoCastling {Aucun roque}
translate F OprepThemeKPawnStorm {Avalanche de pions  l'aile roi}
translate F OprepThemeQueenswap {Dames changes}
translate F OprepThemeWIQP {Pion Dame blanc isol}
translate F OprepThemeBIQP {Pion Dame noir isol}
translate F OprepThemeWP567 {Pion blanc sur la 5/6/7e range}
translate F OprepThemeBP234 {Pion noir sur la 2/3/4e range}
translate F OprepThemeOpenCDE {Colonne c/d/e ouverte}
translate F OprepTheme1BishopPair {Paire de fous}
translate F OprepEndgames {Finales}
translate F OprepReportGames {Les parties du rapport}
translate F OprepAllGames {Toutes les parties}
translate F OprepEndClass {Classification du matriel des positions finales}
translate F OprepTheoryTable {Table de Thorie}
translate F OprepTableComment {Gnr  partir des %u parties au classement le plus lev.}
translate F OprepExtraMoves {Nombre de coups additionnels dans la table de thorie}
translate F OprepMaxGames {Nombre maximum de parties dans la table de thorie}
translate F OprepViewHTML {Voir en HTML}
translate F OprepViewLaTeX {Voir en LaTeX}

# Player Report:
translate F PReportTitle {Rapport du joueur}
translate F PReportColorWhite {avec les Blancs pices}
translate F PReportColorBlack {avec les Noirs pices}
translate F PReportMoves {aprs %s}
translate F PReportOpenings {Ouvertures}
translate F PReportClipbase {Vider le presse-papier et copier dedans toutes les parties qui correspondent}

# Piece Tracker window:
translate F TrackerSelectSingle {Le bouton gauche de la souris slectionne cette pice.}
translate F TrackerSelectPair {Le bouton gauche de la souris slectionne cette pice; le bouton droit slectionne aussi son pendant.}
translate F TrackerSelectPawn {Le bouton gauche de la souris slectionne ce pion ; le bouton droit slectionne les 8 pions.}
translate F TrackerStat {Statistiques}
translate F TrackerGames {% parties avec dplacement sur la case}
translate F TrackerTime {% fois sur chaque case}
translate F TrackerMoves {Coups}
translate F TrackerMovesStart {Entrer le numro du coups  partir duquel la recherche doit commencer.}
translate F TrackerMovesStop {Entrer le numro du coups auquel la recherche doit s'arrter.}

# Game selection dialogs:
translate F SelectAllGames {Toutes les parties de la base}
translate F SelectFilterGames {Seulement les parties du filtre}
translate F SelectTournamentGames {Seulement les parties du tournoi courant}
translate F SelectOlderGames {Seulement les parties plus anciennes}

# Delete Twins window:
translate F TwinsNote {Pour tre considres comme doublons, deux parties doivent au moins avoir les deux mmes joueurs, et avoir les critres que vous pouvez fixer ci-dessous satisfaits. Quand une paire de doublons est trouve, la partie la plus courte est efface. Conseil: il est prfrable de vrifier l'orthographe dans la base avant d'effacer les doublons, car cela amliore la dtection des doublons. }
translate F TwinsCriteria {Critre: Les doublons doivent avoir...}
translate F TwinsWhich {Parties  examiner}
translate F TwinsColors {Mme couleurs de joueurs?}
translate F TwinsEvent {Mme vnement?}
translate F TwinsSite {Mme lieu?}
translate F TwinsRound {Mme ronde?}
translate F TwinsYear {Mme anne?}
translate F TwinsMonth {Mme mois?}
translate F TwinsDay {Mme jour?}
translate F TwinsResult {Mme rsultat?}
translate F TwinsECO {Mme code ECO?}
translate F TwinsMoves {Mmes coups?}
translate F TwinsPlayers {Comparaison des noms des joueurs:}
translate F TwinsPlayersExact {Correspondance exacte}
translate F TwinsPlayersPrefix {Les 4 premires lettres seules}
translate F TwinsWhen {En effacant les doublons}
translate F TwinsSkipShort {Ignorer toutes les parties de moins de cinq coups?}
translate F TwinsUndelete {Rcuprer toutes les parties d'abord?}
translate F TwinsSetFilter {Appliquer le filtre  tous les doublons limins?}
translate F TwinsComments {Toujours garder les parties qui comportent des commentaires?}
translate F TwinsVars {Toujours garder les parties qui comportent des variantes?}
translate F TwinsDeleteWhich {Partie  effacer:}
translate F TwinsDeleteShorter {La partie la plus courte}
translate F TwinsDeleteOlder {La partie avec le plus petit numro}
translate F TwinsDeleteNewer {La partie avec le plus grand numro}
translate F TwinsDelete {Effacer les parties}

# Name editor window:
translate F NameEditType {Taper le nom  diter}
translate F NameEditSelect {Parties  diter}
translate F NameEditReplace {Remplacer}
translate F NameEditWith {avec}
translate F NameEditMatches {Correspondances: Presser Alt+1  Alt+9 pour slectionner}
# ====== TODO To be translated ======
translate F CheckGames {Check games}
# ====== TODO To be translated ======
translate F CheckGamesWhich {Check games}
# ====== TODO To be translated ======
translate F CheckAll {All games}
# ====== TODO To be translated ======
translate F CheckSelectFilterGames {Only games in filter}

# Classify window:
translate F Classify {Classer}
translate F ClassifyWhich {Choix des parties  classer suivant ECO}
translate F ClassifyAll {Toutes les parties (crase les anciens codes ECO)}
translate F ClassifyYear {Toutes les parties joues la dernire anne}
translate F ClassifyMonth {Toutes les parties joues le dernier mois}
translate F ClassifyNew {Seulement les parties qui ne possdent pas encore de code ECO}
translate F ClassifyCodes {Codes ECO  utiliser}
translate F ClassifyBasic {Codes de base seulement ("B12", ...)}
translate F ClassifyExtended {Extensions de Scid ("B12j", ...)}

# Compaction:
translate F NameFile {Fichier de noms}
translate F GameFile {Fichier de parties}
translate F Names {Noms}
translate F Unused {Non utilis}
translate F SizeKb {Taille (kb)}
translate F CurrentState {tat courant}
translate F AfterCompaction {Aprs compactage}
translate F CompactNames {Compacter le fichier de noms}
translate F CompactGames {Compacter le fichier de parties}
translate F NoUnusedNames "Il n'y a pas de noms inutiliss, le fichier de noms est donc dj compact."
translate F NoUnusedGames "Le fichier des parties est dj compact."
translate F NameFileCompacted {Le fichier de noms de la base "[file tail [sc_base filename]]" a t compact.}
translate F GameFileCompacted {Le fichier de parties de la base "[file tail [sc_base filename]]" a t compact.}

# Sorting:
translate F SortCriteria {Critre}
translate F AddCriteria {Ajouter un critre}
translate F CommonSorts {Tris courants}
translate F Sort {Tri}

# Exporting:
translate F AddToExistingFile {Ajouter les parties  un fichier existant?}
translate F ExportComments {Exporter les commentaires?}
translate F ExportVariations {Exporter les variantes?}
translate F IndentComments {Indenter les commentaires?}
translate F IndentVariations {Indenter les variantes?}
translate F ExportColumnStyle {Style en colonne (un coup par ligne)?}
translate F ExportSymbolStyle {Style d'annotation symbolique:}
translate F ExportStripMarks {Enlever les codes de marquages de flches et de coloration de cases des commentaires?}

# Goto game/move dialogs:
translate F LoadGameNumber {Entrer le numro de la partie  charger:}
translate F GotoMoveNumber {Aller au coup numro:}

# Copy games dialog:
translate F CopyGames {Copier les parties}
translate F CopyConfirm {
 Voulez vous vraiment copier
 les [::utils::thousands $nGamesToCopy] parties filtres
 depuis la base "$fromName"
 vers la base "$targetName"?
}
translate F CopyErr {Ne peut copier les parties}
translate F CopyErrSource {la base source}
translate F CopyErrTarget {la base destination}
translate F CopyErrNoGames {n'a pas de parties dans son filtre}
translate F CopyErrReadOnly {est en lecture seule}
translate F CopyErrNotOpen {n'est pas ouverte}

# Colors:
translate F LightSquares {Cases blanches}
translate F DarkSquares {Cases noires}
translate F SelectedSquares {Cases slectionnes}
translate F SuggestedSquares {Cases des coups suggrs}
translate F WhitePieces {Pices blanches}
translate F BlackPieces {Pices noires}
translate F WhiteBorder {Bordure des pices blanches}
translate F BlackBorder {Bordure des pices noires}

# Novelty window:
translate F FindNovelty {Trouver la nouveaut}
translate F Novelty {Nouveaut}
translate F NoveltyInterrupt {Recherche de nouveaut interrompue}
translate F NoveltyNone {Aucune nouveaut n'a t trouve pour cette partie}
translate F NoveltyHelp {
Scid va trouver le premier coup de la partie en cours qui atteint une position qui ne figure ni dans la base slectionne ni dans le rpertoire d'ouvertures ECO.
}

# Sounds configuration:
translate F SoundsFolder {Rpertoire des fichiers sonores}
translate F SoundsFolderHelp {Le rpertoire devrait contenir les fichiers King.wav, a.wav, 1.wav, etc}
translate F SoundsAnnounceOptions {Options d'annonce des coups}
translate F SoundsAnnounceNew {Annoncer les coups jous}
translate F SoundsAnnounceForward {Annoncer les coups quand avance d'un coup}
translate F SoundsAnnounceBack {Annoncer quand retour arrire d'un coup}

# Upgrading databases:
translate F Upgrading {Mise  jour}
translate F ConfirmOpenNew {
Ceci est une base de donnes  l'ancien format (Scid 3) qui ne peut tre ouverte dans Scid 4, mais une version au nouveau format (Scid 4) a dj t cre.

Voulez vous ouvrir le nouveau format de la base de donnes?
}
translate F ConfirmUpgrade {
Ceci est une base de donnes  l'ancien format (Scid 3). Une version de la base de donnes au nouveau format doit tre cre avant de pouvoir tre utilise dans Scid 4.

Mettre  jour va crer une nouvelle version de la base de donnes; les fichiers originaux seront effacs.

Cela peut prendre un peu de temps, mais il n'est ncessaire de le faire qu'une fois. Vous pouvez abandonner si cela dure trop longtemps.

Voulez vous mettre  jour cette base de donnes maintenant?
}

# Recent files options:
translate F RecentFilesMenu {Nombre de fichiers rcents dans le menu Fichier}
translate F RecentFilesExtra {Nombre de fichiers rcents dans le sous-menu complmentaire}

# My Player Names options:
translate F MyPlayerNamesDescription {
Entrer ci-dessous une liste des noms des joueurs prfrs, un nom par ligne. Les caractres spciaux (i.e. "?" pour un seul caractre, "*" pour n'importe quelle suite de caractres) sont autoriss.

Chaque fois qu'une partie avec un joueur de la liste est charge, l'chiquier de la fentre principale sera tourn si ncessaire de faon  montrer la partie selon le point de vue du joueur.
}
#Coach
translate F showblunderexists {Montrer si erreur}
translate F showblundervalue {Montrer la valeur de l'erreur}
translate F showscore {Montrer score}
translate F coachgame {Entrainement}
translate F configurecoachgame {Configurer une partie avec entraineur}
translate F configuregame {Configuration de partie}
translate F Phalanxengine {moteur Phalanx}
translate F Coachengine {entraineur}
translate F difficulty {difficult}
translate F hard {difficile}
translate F easy {facile}
translate F Playwith {Jouer avec}
translate F white {blanc}
translate F black {noir}
translate F both {les deux}
translate F Play {Jouer}
translate F Noblunder {Pas d'erreur}
translate F blunder {erreur}
translate F Noinfo {-- Pas d'info --}
translate F PhalanxOrTogaMissing {Phalanx ou Toga non trouv}
translate F moveblunderthreshold {le coup est une erreur si les pertes sont suprieures }
translate F limitanalysis {limiter le temps d'analyse}
translate F seconds {secondes}
translate F Abort {Arrter}
translate F Resume {Reprendre}
translate F OutOfOpening {Hors de l'ouverture}
translate F NotFollowedLine {Vous n'avez pas suivi la ligne}
translate F DoYouWantContinue {Voulez-vous continuer ?}
translate F CoachIsWatching {L'entraineur regarde}
translate F Ponder {Rflexion permanente}
translate F LimitELO {Limiter force ELO}
translate F DubiousMovePlayedTakeBack {Coup douteux jou, voulez-vous reprendre le coup ?}
translate F WeakMovePlayedTakeBack {Coup faible jou, voulez-vous reprendre le coup ?}
translate F BadMovePlayedTakeBack {Mauvais coup jou, voulez-vous reprendre le coup ?}
translate F Iresign {J'abandonne}
translate F yourmoveisnotgood {Votre coup n'est pas bon}
translate F EndOfVar {Fin de variante}
translate F Openingtrainer {Entrainement aux ouvertures}
translate F DisplayCM {Afficher les coups candidats}
translate F DisplayCMValue {Afficher la valeur des coups candidats}
translate F DisplayOpeningStats {Montrer statistiques}
translate F ShowReport {Montrer rapport}
translate F NumberOfGoodMovesPlayed {bons coups jous}
translate F NumberOfDubiousMovesPlayed {coups douteux jous}
translate F NumberOfMovesPlayedNotInRepertoire {coups jous absents du rpertoire}
translate F NumberOfTimesPositionEncountered {nombre de fois position rencontre}
translate F PlayerBestMove  {N'autoriser que les meilleurs coups}
translate F OpponentBestMove {Ne jouer que les meilleurs coups}
translate F OnlyFlaggedLines {Seulement les lignes marques}
translate F resetStats {Remettre  zro les scores}
translate F Repertoiretrainingconfiguration {Configuration entrainement rpertoire}
translate F Loadingrepertoire {Chargement du rpertoire}
translate F Movesloaded {Coups lus}
translate F Repertoirenotfound {Rpertoire introuvable}
translate F Openfirstrepertoirewithtype {Ouvrez d'abord une base avec le bon type/icne sur le ct droit}
translate F Movenotinrepertoire {Coup absent du rpertoire}
translate F PositionsInRepertoire {Positions dans le rpertoire}
translate F PositionsNotPlayed {Positions non joues}
translate F PositionsPlayed {Positions joues}
translate F Success {Succs}
translate F DubiousMoves {Coups douteux}
translate F OutOfRepertoire {Hors du rpertoire}
translate F ConfigureTactics {Configurer exercices tactiques}
translate F ResetScores {Remise  zro des scores}
translate F LoadingBase {Chargement de la base}
translate F Tactics {Tactique}
translate F ShowSolution {Montrer la solution}
translate F NextExercise {Exercice suivant}
translate F PrevExercise {Exercice prcdent}
translate F StopTraining {Arrter l'entrainement}
translate F Next {Suivant}
translate F ResettingScore {Remise  zro des scores}
translate F LoadingGame {Chargement partie}
translate F MateFound {Mat trouv}
translate F BestSolutionNotFound {Meilleur coup non trouv !}
translate F MateNotFound {Mat non trouv}
translate F ShorterMateExists {Un mat plus rapide existe}
translate F ScorePlayed {score coup jou}
translate F Expected {attendu}
translate F ChooseTrainingBase {Choisir la base d'exercices}
translate F Thinking {Calcul en cours}
translate F AnalyzeDone {Analyse termine}
translate F WinWonGame {Terminer partie gagne}
translate F Lines {Lignes}
translate F ConfigureUCIengine {Configurer moteur UCI}
translate F SpecificOpening {Ouverture spcifique}
translate F StartNewGame {Nouvelle partie}
translate F FixedLevel {Niveau fixe}
translate F Opening {Ouverture}
translate F RandomLevel {Niveau alatoire}
translate F StartFromCurrentPosition {Jouer depuis la position actuelle}
translate F FixedDepth {Profondeur fixe}
translate F Nodes {Noeuds} 
translate F Depth {Profondeur}
translate F Time {Temps} 
translate F SecondsPerMove {Secondes par coup}
translate F Engine {Moteur}
translate F TimeMode {Mode de rflexion}
translate F TimeBonus {Temps + bonus}
translate F TimeMin {min}
translate F TimeSec {sec}
translate F AllExercisesDone {Tous les exercices sont faits}
translate F MoveOutOfBook {Coup hors bibliothque d'ouverture}
translate F LastBookMove {Dernier coup de la bibliothque d'ouverture}
translate F AnnotateSeveralGames {Annotater plusieurs parties\ndepuis l'actuelle jusqu' :}
translate F FindOpeningErrors {Chercher les erreurs d'ouverture}
translate F MarkTacticalExercises {Marquer exercices tactiques}
translate F UseBook {Utiliser bibliothque}
translate F MultiPV {Nombre de variantes}
translate F Hash {Mmoire}
translate F OwnBook {Utiliser bibliothque propre}
translate F BookFile {Bibliothque d'ouverture}
translate F AnnotateVariations {Annotater les variantes}
translate F ShortAnnotations {Annotations courtes}
translate F addAnnotatorTag {Ajouter Annotateur}
translate F AddScoreToShortAnnotations {Ajouter score aux annotations courtes}
translate F Export {Exporter}
translate F BookPartiallyLoaded {Bibliothque charge en partie}
translate F Calvar {Calcul de variantes}
translate F ConfigureCalvar {Configuration}
# Opening names used in tacgame.tcl
translate F Reti {Reti}
translate F English {Anglaise}
translate F d4Nf6Miscellaneous {1.d4 Cf6 divers}
translate F Trompowsky {Trompowsky}
translate F Budapest {Budapest}
translate F OldIndian {Vieille Indienne}
translate F BenkoGambit {Gambit Benko}
translate F ModernBenoni {Benoni Moderne}
translate F DutchDefence {Dfense hollandaise}
translate F Scandinavian {Scandinave}
translate F AlekhineDefence {Dfense Alekhine}
translate F Pirc {Pirc}
translate F CaroKann {Caro-Kann}
translate F CaroKannAdvance {Caro-Kann Avance}
translate F Sicilian {Sicilienne}
translate F SicilianAlapin {Sicilienne Alapin}
translate F SicilianClosed {Sicilienne ferme}
translate F SicilianRauzer {Sicilienne Rauzer}
translate F SicilianDragon {Sicilienne Dragon}
translate F SicilianScheveningen {Sicilienne Scheveningen}
translate F SicilianNajdorf {Sicilienne Najdorf}
translate F OpenGame {Partie ouverte}
translate F Vienna {Viennoise}
translate F KingsGambit {Gambit Roi}
translate F RussianGame {Petroff}
translate F ItalianTwoKnights {Italienne/Deux cavaliers}
translate F Spanish {Espagnole}
translate F SpanishExchange {Espagnole change}
translate F SpanishOpen {Espagnole ouverte}
translate F SpanishClosed {Espagnole ferme}
translate F FrenchDefence {Dfense franaise}
translate F FrenchAdvance {Dfense franaise Avance}
translate F FrenchTarrasch {Dfense franaise Tarrasch}
translate F FrenchWinawer {Dfense franaise Winawer}
translate F FrenchExchange {Dfense franaise Echange}
translate F QueensPawn {Pion Dame}
translate F Slav {Slave}
translate F QGA {GD Accept}
translate F QGD {GD Dclin}
translate F QGDExchange {GD Echange}
translate F SemiSlav {Semi-Slave}
translate F QGDwithBg5 {GD dclin avec Fg5}
translate F QGDOrthodox {GD dclin Orthodoxe}
translate F Grunfeld {Grnfeld}
translate F GrunfeldExchange {Grnfeld Echange}
translate F GrunfeldRussian {Grnfeld Russe}
translate F Catalan {Catalane}
translate F CatalanOpen {Catalane Ouverte}
translate F CatalanClosed {Catalane Ferme}
translate F QueensIndian {Ouest indienne}
translate F NimzoIndian {Nimzo-Indienne}
translate F NimzoIndianClassical {Nimzo-Indienne Classique}
translate F NimzoIndianRubinstein {Nimzo-Indienne Rubinstein}
translate F KingsIndian {Est-indienne}
translate F KingsIndianSamisch {Est-indienne Smisch}
translate F KingsIndianMainLine {Est-indienne ligne principale}
translate F ConfigureFics {Configurer FICS}
translate F FICSGuest {Login comme invit}
translate F FICSServerPort {Port du serveur}
translate F FICSServerAddress {Adresse IP}
translate F FICSRefresh {Rafrachir}
translate F FICSTimesealPort {Port Timeseal}
translate F FICSSilence {Silence}
translate F FICSOffers {Offres}
translate F FICSConsole {Console}
translate F FICSGames {Parties}
translate F FICSUnobserve {Arrter de suivre la partie}
translate F FICSProfile {Afficher mon historique et mes donnes}
translate F FICSRelayedGames {Parties retransmises}
translate F FICSFindOpponent {Trouver adversaire}
translate F FICSTakeback {Reprendre un coup}
translate F FICSTakeback2 {Rependre deux coups}
translate F FICSInitTime {Temps initial (min)}
translate F FICSIncrement {Incrment (sec)}
translate F FICSRatedGame {Partie classe}
translate F FICSAutoColour {automatique}
translate F FICSManualConfirm {accepter manuellement}
translate F FICSFilterFormula {Filtrer avec formule}
translate F FICSIssueSeek {Envoyer seek}
translate F FICSChallenge {Challenge}
translate F FICSAccept {accepter}
translate F FICSDecline {refuser}
translate F FICSColour {Couleur}
translate F FICSSend {envoyer}
translate F FICSConnect {Connecter}
translate F FICSdefaultuservars {Variables par dfaut}
translate F FICSObserveconfirm {Voulez-vous suivre la partie}
translate F GameReview {Revue de partie}
translate F GameReviewTimeExtended {Temps tendu}
translate F GameReviewMargin {Marge d'erreur}
translate F GameReviewAutoContinue {Continuer quand le coup est correct}
translate F GameReviewReCalculate {Utiliser temps tendu}
translate F GameReviewAnalyzingMovePlayedDuringTheGame {Analyse du coup jou pendant la partie}
translate F GameReviewAnalyzingThePosition {Analyse de la position}
translate F GameReviewEnterYourMove {Jouez votre coup}
translate F GameReviewCheckingYourMove {Vrification de votre coup}
translate F GameReviewYourMoveWasAnalyzed {Votre coup a t analys}
translate F GameReviewYouPlayedSameMove {Vous avez jou le mme coup que dans la partie}
translate F GameReviewScoreOfYourMove {Score de votre coup}
translate F GameReviewGameMoveScore {Score du coup de la partie}
translate F GameReviewEngineScore {Score du moteur}
translate F GameReviewYouPlayedLikeTheEngine {Vous avez jou un coup aussi bon que le moteur}
translate F GameReviewNotEngineMoveButGoodMove {Pas le coup du moteur, mais un coup jouable}
translate F GameReviewMoveNotGood {Ce coup n'est pas bon, le score est}
translate F GameReviewMovesPlayedLike {Coups jous comme}
translate F GameReviewMovesPlayedEngine {coups jous comme le moteur}
translate F CCDlgConfigureWindowTitle {Configurer checs par correspondance}
translate F CCDlgCGeneraloptions {Options gnrales}
translate F CCDlgDefaultDB {Base par dfaut:}
translate F CCDlgInbox {Rception (chemin):}
translate F CCDlgOutbox {Envoi (chemin):}
translate F CCDlgXfcc {Configuration Xfcc:}
translate F CCDlgExternalProtocol {Protocole externe (p.e. Xfcc)}
translate F CCDlgFetchTool {Outil de rception:}
translate F CCDlgSendTool {Outil d'envoi:}
translate F CCDlgEmailCommunication {Communication eMail}
translate F CCDlgMailPrg {Programme de mail:}
translate F CCDlgBCCAddr {Addresse de copie:}
translate F CCDlgMailerMode {Mode:}
translate F CCDlgThunderbirdEg {p.e. Thunderbird, Mozilla Mail, Icedove...}
translate F CCDlgMailUrlEg {p.e. Evolution}
translate F CCDlgClawsEg {p.e Sylpheed Claws}
translate F CCDlgmailxEg {p.e. mailx, mutt, nail...}
translate F CCDlgAttachementPar {Attachement:}
translate F CCDlgInternalXfcc {Utiliser Xfcc interne}
translate F CCDlgConfirmXfcc {Confirmer coups}
translate F CCDlgSubjectPar {Objet:}
translate F CCDlgDeleteBoxes {Vider botes}
translate F CCDlgDeleteBoxesText {Voulez-vous rellement vider les botes entrantes et sortantes pour les checs par correspondance ? Cela ncessite une nouvelle synchronisation pour afficher le dernier tat de vos parties}
translate F CCDlgConfirmMove {Confirmer coup}
translate F CCDlgConfirmMoveText {Si vous confirmez, le coup ci-dessous et le commentaire sont envoys au serveur:}
translate F CCDlgDBGameToLong {Ligne principale incohrente}
translate F CCDlgDBGameToLongError {La ligne principale dans votre base de donnes est plus longue que la partie dans votre bote de rception. Si la bote de rception contient les parties en cours, c'est--dire juste aprs une synchronisation, certains coups ont t ajouts  tort  la ligne principale dans la base de donnes.\nDans ce cas veuillez raccourcir la ligne principale  au plus coup\n}
translate F CCDlgStartEmail {Commencer nouvelle partie par eMail}
translate F CCDlgYourName {Votre nom:}
translate F CCDlgYourMail {Votre adresse mail:}
translate F CCDlgOpponentName {Nom adversaire:}
translate F CCDlgOpponentMail {Adresse eMail adversaire:}
translate F CCDlgGameID {Identifiant Partie (unique):}
translate F CCDlgTitNoOutbox {Scid: Bote d'envoi}
translate F CCDlgTitNoInbox {Scid: Bote de rception}
translate F CCDlgTitNoGames {Scid: Pas de parties par correspondence}
translate F CCErrInboxDir {Rpertoire de la bote de rception:}
translate F CCErrOutboxDir {Rpertoire de la bote d'envoi:}
translate F CCErrDirNotUsable {n'existe pas ou inaccessible!\nVeuillez vrifier les paramtres.}
translate F CCErrNoGames {ne contient pas de parties!\nVeuillez d'abord les rcuprer.}
translate F CCDlgTitNoCCDB {Scid: pas de base par correspondance}
translate F CCErrNoCCDB {Aucune base du type 'Correspondance' n'est ouverte. Ouvrez-en une avant d'utiliser les fonctions par correspondance.}
translate F CCFetchBtn {Rcuprer les parties sur le serveur et les analyser dans la bote de rception}
translate F CCPrevBtn {Aller  la partie prcdente}
translate F CCNextBtn {Aller  la partie suivante}
translate F CCSendBtn {Envoyer coup}
translate F CCEmptyBtn {Vider les botes d'envoi et de rception}
translate F CCHelpBtn {Aide sur les icnes et indicateurs.\nPour plus d'aide appuyer sur F1!}
translate F CCDlgServerName {Nom serveur:}
translate F CCDlgLoginName  {Login:}
translate F CCDlgPassword   {Mot de passe:}
translate F CCDlgURL        {Xfcc-URL:}
translate F CCDlgRatingType {Type classement:}
translate F CCDlgDuplicateGame {Identifiant de partie non-unique}
translate F CCDlgDuplicateGameError {Cette partie existe  plusieurs exemplaires dans la base de donnes. Veuillez effacer tous les doublons et compacter votre fichier de parties (Fichier/Maintenance/Compacter base).}
translate F CCDlgSortOption {Tri:}
translate F CCDlgListOnlyOwnMove {Parties o c'est mon tour}
translate F CCOrderClassicTxt {Site, Evnement, Ronde, Rsultat, Blancs, Noirs}
translate F CCOrderMyTimeTxt {Ma pendule}
translate F CCOrderTimePerMoveTxt {Temps par coup jusqu'au prochain contrlede temps}
translate F CCOrderStartDate {Date de dpart}
translate F CCOrderOppTimeTxt {Pendule adversaire}
# ====== TODO To be translated ======
translate F CCDlgConfigRelay {Configure ICCF observations}
# ====== TODO To be translated ======
translate F CCDlgConfigRelayHelp {Go to the games page on http://www.iccf-webchess.com and display the game to be observed.  If you see the chessboard copy the URL from your browser to the list below. One URL per line only!\nExample: http://www.iccf-webchess.com/MakeAMove.aspx?id=266452}
translate F ExtHWConfigConnection {Configure external hardware}
translate F ExtHWPort {Port}
translate F ExtHWEngineCmd {Commande moteur}
translate F ExtHWEngineParam {Paramtre moteur}
translate F ExtHWShowButton {Montrer bouton}
translate F ExtHWHardware {Matriel}
translate F ExtHWNovag {Novag Citrine}
translate F ExtHWInputEngine {Moteur en entre}
translate F ExtHWNoBoard {Pas d'chiquier}
translate F NovagReferee {Arbitre}
translate F IEConsole {Console du moteur en entre}
translate F IESending {Coups envoys pour}
translate F IESynchronise {Synchronizer}
translate F IERotate  {Tourner}
translate F IEUnableToStart {Impossible de dmarrer le moteur en entre:}
translate F DoneWithPosition {Position termine}
translate F Board {Echiquier}
translate F showGameInfo {Montrer le panneau d'info}
translate F autoResizeBoard {Redimensionnement automatique}
translate F DockTop {Dplacer en haut}
translate F DockBottom {Dplacer en bas}
translate F DockLeft {Dplacer  gauche}
translate F DockRight {Dplacer  droite}
translate F Undock {Dtacher}
translate F ChangeIcon {Changer icone...}

##########
#
# ECO Opening name translations:

# translateECO F {
  # Accelerated {, Acclr}
  # {: Accelerated} Acclr
  # Accepted {, accept}
  # {: Accepted} Accept
  # Advance Avance
  # {as Black} {avec les Noirs}
  # Attack Attaque
  # Bishop Fou
  # Bishop's Fou
  # Classical Classique
  # Closed Ferm
  # {Closed System} {Systme ferm}
  # Counterattack Contre-Attaque
  # Countergambit Contre-Gambit
  # Declined {, Dclin}
  # Defence Dfense
  # deferred diffr
  # Deferred {, Diffr}
  # Early Tt
  # Exchange Echange
  # Game Partie
  # Improved amlior
  # King's Roi
  # Knight Cavalier
  # Line Ligne
  # {Main Line} Ligne principale
  # Open Ouvert
  # Opening Ouverture
  # Queen's Dame
  # Queenswap Permutation de dame
  # Symmetrical Symtrique
  # Variation Variante
  # Wing Aile
  # with avec
  # without sans
  # 
  # Alekhine Alekhine
  # Averbakh Averbakh
  # Botvinnik Botvinnik
  # Chigorin Tchigorine
  # Polugaevsky Polugaevsky
  # Rauzer Rauzer
  # Sveshnikov Sveshnikov
  # 
  # Austrian Autrichien
  # Berlin Berlinois
  # Bremen Breme
  # Catalan Catalane
  # Czech Tchque
  # Dutch Hollandaise
  # English Anglaise
  # French Franaise
  # Hungarian Hongroise
  # Indian Indienne
  # Italian Italienne
  # Latvian Letton
  # Meran Meran
  # Moscow Moscou
  # Polish Polonais
  # Prague Prague
  # Russian Russe
  # Scandinavian Scandinave
  # Scheveningen Scheveningen
  # Scotch Ecossaise
  # Sicilian Sicilienne
  # Slav Slave
  # Spanish Espagnole
  # Swedish Sudois
  # Swiss Suisse
  # Vienna Viennois
  # Yugoslav Yougoslave
  # 
  # {Accelerated Fianchetto} {Fianchetto Acclr}
  # {Accelerated Pterodactyl} {Pterodactyle Acclr}
  # {Alekhine Defence} Dfense-Alekhine
  # {Alekhine Variation} Variante-Alekhine
  # {Alekhine: Smisch Attack} {Alekhine: Systme viennois (Attaque Smisch)}
  # {Anderssen Opening} Ouverture-Anderssen
  # {Anti-King's Indian} Anti-Est-Indienne
  # {Austrian Attack} {Attaque Autrichienne}
  # {Benko Gambit} {Gambit Benko}
  # {Benko Opening} {Ouverture Benk}
  # {Berlin Defence} {Dfense Berlinoise}
  # Chameleon Cameleon
  # Chelyabinsk Chelyabinsk
  # {Classical Defence} {Dfense Classique}
  # {Spanish: Classical Defence} {Espagnole: Dfense Classique}
  # {Classical Exchange} {Echange Classique}
  # {Classical Variation} {Variante Classique}
  # {Closed Berlin} {Berlinoise Ferme}
  # {Open Berlin} {Berlinoise Ouverte}
  # {Bird's,} {Bird,}
  # {Bird's Defence} {Dfense Bird}
  # {Bird's Deferred} {Bird Diffre}
  # {Bishop's Opening} {Ouverture du Fou}
  # {Botvinnik System} {Systme Botvinnik}
  # {Central Variation} {Variante du centre}
  # {Centre Attack} {Attaque du centre}
  # {Centre Game} {Ouverture du centre}
  # {Danish Gambit} {Gambit Danois}
  # Dragon Dragon
  # {Dutch Variation} {Variante Hollandaise}
  # {Early Exchange} {Echange rapide}
  # {Early Queenswap} {Echange de Dames rapide}
  # {English Attack} {Attaque Anglaise}
  # {English: King's} {Anglaise: Roi}
  # {English Variation} {Variante Anglaise}
  # {Englund Gambit} {Gambit Englund}
  # {Exchange Variation} {Variante d'change}
  # {Fianchetto Variation} {Variante du Fianchetto}
  # {Flohr Variation} {Variante Flohr}
  # {Four Knights} {Quatre Cavaliers}
  # {Four Knights Game} {Partie des Quatre Cavaliers}
  # {Four Pawns} {Quatre Pions}
  # {Four Pawns Attack} {Attaque des Quatre Pions}
  # {French Variation} {Variante Franaise}
  # {From Gambit} {Gambit From}
  # {Goring Gambit} {Gambit Gring}
  # {Grob Gambit} {Gambit Grob}
  # {Hungarian Defence} {Dfense Hongroise}
  # {Indian Variation} {Variante Indienne}
  # {Italian Game} {Partie Italienne}
  # KGD {Gambit Roi Dclin}
  # {Classical KGD} {Gambit Roi Dclin Classique}
  # {Keres Variation} {Variante Keres}
  # KGA {Gambit Roi Accept}
  # {KGA: Bishop's Gambit} {Gambit Roi Accept: Gambit du Fou}
  # {KGA: King's Knight Gambit} {Gambit Roi Accept: Gambit du Cavalier}
  # {King's Gambit} {Gambit Roi}
  # {King's Gambit Accepted} {Gambit Roi Accept}
  # {King's Gambit Accepted (KGA)} {Gambit Roi Accept}
  # {King's Indian} Est-Indienne
  # KIA {Attaque Est-Indienne}
  # {King's Knight Gambit} {Gambit du Cavalier Roi}
  # {King's Pawn} {Pion Roi}
  # {Lasker Variation} {Variante Lasker}
  # {Latvian Gambit} {Gambit Letton}
  # {Maroczy Bind} {Maroczy}
  # {Marshall Variation} {Variante Marshall}
  # {Modern Attack} {Attaque Moderne}
  # {Modern Steinitz} {Steinitz Moderne}
  # {Modern Variation} {Variante Moderne}
  # {Moscow Variation} {Variante de Moscou}
  # Nimzo-Indian Nimzo-Indienne
  # {Old Benoni} {Vieille Benoni}
  # {Old Indian} {Vieille Indienne}
  # {Old Indian Attack} {Attaque Vieille Indienne}
  # {Old Steinitz} {Vieille Steinitz}
  # {Open Game} {Partie Ouverte}
  # {Poisoned Pawn} {Pion empoisonn}
  # {Polish Variation} {Variante Polonaise}
  # {Polugaevsky Variation} {Variante Polugajewski}
  # {Queen's Gambit} {Gambit Dame}
  # {Queen's Gambit Accepted} {Gambit Dame accept}
  # QGA {GDA}
  # {Queen's Gambit Accepted (QGA)} {Gambit Dame accept (GDA)}
  # {Reversed QGA} {GDA invers}
  # QGD {Gambit Dame Dclin}
  # {Queen's Gambit Declined (QGD)} {Gambit Dame Dclin (GDD)}
  # {Reversed QGD} {GDD invers}
  # {Queen's Indian} Ouest-Indienne
  # {Queen's Pawn} {Pion Dame}
  # {Queen's Pawn Game} {Partie du Pion Dame}
  # {Reversed Slav} {Slave Inverse}
  # {Rubinstein Variation} {Variante Rubinstein}
  # {Russian Game} {Partie Russe}
  # {Russian Game (Petroff Defence)} {Partie Russe (Dfense Petrov)}
  # {Russian-Three Knights Game} {Partie Russe: Trois Cavaliers}
  # {Scandinavian (Centre Counter)} {Scandinave (Centre)}
  # Schliemann Jnisch
  # {Schliemann (Jnisch)} {Gambit Jnisch (Schliemann)}
  # {Scotch Opening} {Ouverture Ecossaise}
  # {Sicilian Defence} {Dfense Sicilienne}
  # {Sicilian Variation} {Variante Sicilienne}
  # {Slav Defence} {Dfense Slave}
  # Smith-Morra Morra
  # {Smith-Morra Accepted} {Gambit Morra Accept}
  # {Smith-Morra Gambit} {Gambit Morra}
  # {Spanish (Ruy Lopez)} {Partie Espagnole}
  # {Start position} {Position de dpart}
  # {Steinitz Deferred} {Rubinstein retarde}
  # {Swedish Variation} {Variante sudoise}
  # {Swiss Variation} {Variante Suisse}
  # {Tarrasch's Gambit} {Gambit Tarrasch}
  # {Three Knights} {Trois Cavaliers}
  # {3 Knights} {Trois Cavaliers}
  # {Three Knights Game} {Partie des Trois Cavaliers}
  # {Three Pawns Attack} {Attaque des Trois Pions}
  # {Two Knights} {Deux Cavaliers}
  # {Two Knights Defence} {Dfense des Deux Cavaliers}
  # {Two Knights Variation} {Variante des Deux Cavaliers}
  # {Two Pawns} {Deux Pions}
  # {Two Pawns Attack} {Attaque des Deux Pions}
  # {Wing Gambit} {Gambit de l'aile}
  # {Yugoslav Attack} {Attaque Yougoslave}
# }


}

# end of francais.tcl












































































# Κείμενο για ονόματα των μενού και των μηνυμάτων βοήθειας της γραμμής κατάστασης στα Ελληνικά.
# Τμήμα του Scid (Shane's Chess Information Database).
#
# Οδηγίες προσθήκης νέας γλώσσας:
#
# (4) Γράψτε την μετάφραση. Κάτι προϋποθέτει την αλλαγή ο,τιδήποτε "μέσα σε εισαγωγικά"
#     ή σε {μύστακες} για τις εντολές menuText, helpMsg και translate.
#
#     Μια εντολή μενού έχει την μορφή:
#         menuText L tag "Name..." underline {ΜήνυμαΒοήθειας...}
#
#     Ένα μήνυμα βοήθειας στην γραμμή κατάστασης έχει την μορφή:
#         helpMsg L tag {ΜήνυμαΒοήθειας...}
#
#     Η μετάφραση μιας γενικής λέξης ή μηνύματος έχει την μορφή:
#         translate L tag {μήνυμα...}
#
#     όπου "L" το σύμβολο για την γλώσα, "tag" το όνομα του μενού
#     ή το όνομα του κουμπιού της εφαρμογής, και "underline" είναι ο 
#     δείκτης του υπογραμμισμένου γράμματος μετρώντας από το μηδέν ως πρώτο γράμμα. Τα μενού
#     που εμφανίζονται στο ίδιο μενού πρέπει να έχουν διαφορετικό υπογραμμισμένο γράμμα.
#     Αν έχετε αμφιβιλίες, βάλτε σε όλους τους δείκτες "0" και θα τα αντιστοιχίσω με με υπογραμμισμένα
#     γράμματα όταν οι μεταφράσεις ενσωματωθούν στο Scid.
#
# Έχετε να προσθέσετε ή να διορθώσετε; Email: sgh@users.sourceforge.net
#
# Αυτή είναι μια πρώτη μετάφραση του παρόντος αρχείου. Οι συμβουλευτικές προτάσεις και
# διορθώσεις όσων χρησιμοποιούν το Scid είναι απαραίτητες, καθώς πολλά μηνύματα βοήθειας
# έχουν αποδοθεί αρκετά ελεύθερα ή, αντιθέτα, κυριολεκτικά! Είναι άμεση ανάγκη για την βελτίωση
# του Scid και της μετάφρασής του στα Ελληνικά, να επικοινωνήσετε με τον μεταφραστή του παρόντος
# κειμένου στη διεύθυνση tripalatos@gmail.com για κάθε σφάλμα ή παράλειψη!


addLanguage G Greek 0 utf-8

proc setLanguage_G {} {

# File menu:
menuText G File "Αρχείο" 0
menuText G FileNew "Νέα..." 0 {Δημιουργείστε μια νέα βάση δεδομένων Scid}
menuText G FileOpen "Άνοιγμα..." 0 {Ανοίξτε μια υπάρχουσα βάση δεδομένων Scid}
menuText G FileClose "Κλείσμο" 0 {Κλείστε την ενεργή βάση δεδομένων Scid}
menuText G FileFinder "Αναζήτηση" 0 {Ανοίγει το παράθυρο Αναζήτησης Αρχείου}
menuText G FileBookmarks "Σελιδοδείκτες" 0 {Μενού σελιδοδεικτών (συντόμευση: Ctrl+B)}
menuText G FileBookmarksAdd "Προσθήκη σελιδοδείκτου" 0 \
  {Θέστε σελιδοδείκτη στην τρέχουσα βάση δεδομένων παρτίδων και στην θέση}
menuText G FileBookmarksFile "Αρχειοθέτηση σελιδοδείκτου" 0 \
  {Αρχειοθετήστε έναν σελιδοδείκτη για την τρέχουσα παρτίδα και θέση}
menuText G FileBookmarksEdit "Επεξεργασία σελιδοδεικτών..." 0 \
  {Επεξεργαστείτε τα μενού των σελιδοδεικτών}
menuText G FileBookmarksList "Εμφάνιση των καταλόγων ως απλή λίστα" 0 \
  {Εμφάνιση των καταλόγων των σελιδοδεικτών ως απλής λίστα και όχι ως υπομενού}
menuText G FileBookmarksSub "Εμφάνιση των καταλόγων ως υπομενού" 0 \
  {Εμφάνιση των καταλόγων των σελιδοδεικτών ως υπομενού και όχι ως απλή λίστα}
menuText G FileMaint "Συντήρηση" 0 {Εργαλείο συντήρησης βάσεων δεδομένων Scid}
menuText G FileMaintWin "Παράθυρο συντήρησης" 0 \
  {Ανοίξτε/Κλείστε το παράθυρο συντήρησης βάσης δεδομένων Scid}
menuText G FileMaintCompact "Συμπίεση βάσης δεδομένων..." 0 \
  {Συμπιέστε τα αρχεία βάσης δεδομένων απομακρύνοντας διαγραμμένες παρτίδες και μη χρησιμοποιημένα ονόματα}
menuText G FileMaintClass "Παρτίδες ταξινομημένες κατά ECO..." 2 \
  {Επανυπολογισμός των κωδικών ECO για όλες τις παρτίδες}
menuText G FileMaintSort "Ταξινόμηση βάσης δεδομένων..." 0 \
  {Ταξινομήστε όλες τις παρτίδες της βάσης δεδομένων}
menuText G FileMaintDelete "Διαγραφή δίδυμων παρτίδων..." 0 \
  {Βρήτε τις δίδυμες παρτίδες και προσδιορίστε τα για διαγραφή}
menuText G FileMaintTwin "Παράθυρο ελέγχου δίδυμων παρτίδων" 0 \
  {Άνοιγμα/ενημέρωση του παραθύρου ελέγχου δίδυμων παρτίδων}
menuText G FileMaintName "Ορθογραφία ονομάτων" 0 {Εργαλείο επεξεργασίας και ορθογραφίας ονομάτων}
menuText G FileMaintNameEditor "Επεξεργαστής ονομάτων" 0 \
  {Άνοιγμα/κλείσιμο του παραθύρου επεξεργαστή ονομάτων}
menuText G FileMaintNamePlayer "Έλεγχος ορθογραφίας των ονομάτων των παικτών..." 11 \
  {Ελέγξτε την ορθογραφία των ονομάτων των παικτών με την χρήση του αρχείου ελέγχου οθρογραφίας}
menuText G FileMaintNameEvent "Έλεγχος ορθογραφίας των ονομάτων των διοργανώσεων..." 11 \
  {Ελέγξτε την ορθογραφία των ονομάτων των διοργανώσεων με τη χρήση του αρχείου ελέγχου ορθογραφίας}
menuText G FileMaintNameSite "Έλεγχος ορθογραφίας των ονομάτων των τοποθεσιών..." 11 \
  {Ελέγξτε την ορθογραφία των ονομάτων των τοποθεσιών με την χρήση του αρχείου ελέγχου ορθογραφίας}
menuText G FileMaintNameRound "Έλεγχος οθρογραφίας των ονομάτων των περιόδων..." 11 \
  {Έλεγχος των ονομάτων των περιόδων του αγώνα με την χρήση του αρχείου ελέγχου ορθογραφίας}
menuText G FileReadOnly "Μόνο για ανάγνωση (Read-only)..." 0 \
  {Επεξεργαστείτε την τρέχουσα βάση δεδομένων ως μόνον για ανάγνωση, εμποδίζοντας τις αλλαγές}
menuText G FileSwitch "Μετάβαση στην βάση δεδομένων" 0 \
  {Μεταβείτε σε μια διαφορετική ανοιγμένη βάση δεδομένων}
menuText G FileExit "Έξοδος" 1 {Έξοδος από το Scid}
menuText G FileMaintFixBase "Διόρθωση βάσης" 0 {Προσπαθείστε να επισκευάσετε μια χαλασμένη βάση}
  
# Edit menu:
menuText G Edit "Επεξεργασία" 0
menuText G EditAdd "Προσθήκη βαριάντας" 0 {Προσθέστε την βαριάντα μιας κίνησης της παρτίδας}
menuText G EditDelete "Διαγραφή βαριάντας" 0 {Διαγράψτε την βαριάντα για αυτή την κίνηση}
menuText G EditFirst "Πρώτη βαριάντα" 5 \
  {Προαγωγή μιας βαριάντας στην πρώτη θέση της λίστας}
menuText G EditMain "Προαγωγή βαριάντας σε κύρια γραμμή" 21 \
  {Προαγωγή μιας βαριάντας ως κύρια γραμμή}
menuText G EditTrial "Έλεγχος βαριάντας" 0 \
  {Έναρξη/διακοπή της λειτουργίας ελέγχου μιας ιδέας στην σκακιέρα}
menuText G EditStrip "Απομάκρυνση" 2 {Απομακρύνετε τα σχόλια ή τις βαριάντες από αυτή τη παρτίδα}
menuText G EditUndo "Επαναφορά" 0 {Επαναφέρετε την τελευταία αλλαγή στην παρτίδα}
menuText G EditStripComments "Σχόλια" 0 \
  {Απομακρύνετε όλα τα σχόλια και τον υπομνηματισμό από αυτή τη παρτίδα}
menuText G EditStripVars "Βαριάντες" 0 {Απομακρύνετε όλες τις βαριάντες από αυτή τη παρτίδα}
menuText G EditStripBegin "Κινήσεις από την έναρξη" 1 \
  {Απομακρύνετε τις κινήσεις από την έναρξη της παρτίδας}
menuText G EditStripEnd "Κινήσεις από το φινάλε" 0 \
  {Απομακρύνετε τις κινήσεις φινάλε της παρτίδας}
menuText G EditReset "Άδειασμα της προσωρινής βάσης (Clipbase)" 0 \
  {Μηδενίστε την προσωρινή βάση δεδομένων (Clipbase) ώστε να αδειάσει πλήρως}
menuText G EditCopy "Αντιγραφή της παρτίδας στην προσωρινή βάση" 0 \
  {Αντιγραφή αυτής της παρτίδας στην προσωρινή βάση δεδομένων}
menuText G EditPaste "Επικόλληση της τελευταίας παρτίδας της προσωρινής βάσης (Clipbase)" 0 \
  {Επικολλήστε εδώ την ενεργή παρτίδα της προσωρινής βάσης}
menuText G EditPastePGN "Επικόλληση του κειμένου της προσωρινής μνήμης ως παρτίδας PGN..." 18 \
  {Μετατρέψτε το κείμενο της προσωρινής μνήμης ως παρτίδας με σχολιασμό PGN και επικολλήστε την εδώ}
menuText G EditSetup "Στήσιμο αρχικής σκακιέρας..." 0 \
  {Καθορίστε την θέση έναρξης αυτής της παρτίδας}
menuText G EditCopyBoard "Αντιγραφή θέσης" 6 \
  {Αντιγράψτε την τρέχουσα σκακιέρα στην προσωρινή μνήμη με σχολιασμό FEN}
menuText G EditPasteBoard "Επικόλληση σκακιέρας έναρξης" 12 \
  {Καθορίστε την σκακιέρα από την προσωρινή μνήμη}

# Game menu:
menuText G Game "Παρτίδα" 0
menuText G GameNew "Νέα παρτίδα" 0 \
  {Επαναφορά σε κενή παρτίδα, αναιρώντας κάθε αλλαγή}
menuText G GameFirst "Φόρτωση πρώτης παρτίδας" 5 {Φορτώστε την πρώτη φιλτραρισμένη παρτίδα}
menuText G GamePrev "Φόρτωση προηγούμενης παρτίδας" 5 {Φορτώστε την προηγούμενη φιλτραρισμένη παρτίδα}
menuText G GameReload "Επαναφόρτωση τρέχουσας παρτίδας" 3 \
  {Επαναφορτώστε την παρτίδα αυτή, αναιρώντας κάθε αλλαγή}
menuText G GameNext "Φόρτωση επόμενης παρτίδας" 7 {Φορτώστε την επόμενη φιλτραρισμένη παρτίδα}
menuText G GameLast "Φόρτωση τελευταίας παρτίδας" 8 {Φορτώστε την τελευταία φιλτραρισμένη παρτίδα}
menuText G GameRandom "Φόρτωση τυχαίας παρτίδας" 8 {Φορτώστε μια παρτίδα τυχαίου φιλτραρίσματος}
menuText G GameNumber "Φόρτωση αριθμού παρτίδας..." 5 \
  {Φορτώστε μια παρτίδα εισάγοντας τον αριθμό της}
menuText G GameReplace "Αποθήκευση: Αντικατάσταση παρτίδας..." 6 \
  {Αποθηκεύστε αυτή τη παρτίδα αντικαθιστώντας την παλαιότερη εκδοχή της}
menuText G GameAdd "Αποθήκευση: Προσθήκη νέας παρτίδας..." 6 \
  {Αποθηκεύστε αυτή τη παρτίδα ως νέα παρτίδα στην βάση δεδομένων}
menuText G GameDeepest "Αναγνώριση ανοίγματος" 0 \
  {Μετάβαση στην πιο προχωρημένη θέση της παρτίδας που αναφέρεται στην ECO}
menuText G GameGotoMove "Μετάβαση στην κίνηση με αριθμό..." 5 \
  {Μετάβαση στην κίνηση με συγκεκριμένο αριθμό στην τρέχουσα παρτίδα}
menuText G GameNovelty "Αναζήτηση νεοτερισμού..." 7 \
  {Βρείτε την πρώτη κίνηση αυτής της παρτίδας που δεν έχει παιχθεί ποτέ}

# Search Menu:
menuText G Search "Αναζήτηση" 0
menuText G SearchReset "Μηδενισμός φίλτρων" 0 {Μηδενίστε τα φίλτρα ώστε να συμπεριληφθούν όλες οι παρτίδες}
menuText G SearchNegate "Αναίρεση φίλτρου" 0 {Αναιρέστε το φίλτρο ώστε να συμπεριληφθούν μόνο εξαιρεταίες παρτίδες}
menuText G SearchCurrent "Τρέχουσα σκακιέρα..." 0 {Αναζητήστε την τρέχουσα θέση της σκακιέρας}
menuText G SearchHeader "Κεφαλίδα..." 0 {Αναζήτηση βάσει των πληροφοριών κεφαλίδας (παίκτης, διοργάωνση, κλπ)}
menuText G SearchMaterial "Υλικό/Διάταξη..." 0 {Αναζήτηση για υλικό ή διάταξη σκακιέρας}
menuText G SearchUsing "Με χρήση αρχείου αναζήτησης..." 0 {Αναζήτηση με την χρήση ενός αρχείου SearchOptions}

# Windows menu:
menuText G Windows "Παράθυρα" 0
menuText G WindowsComment "Συντάκτης σχολίων" 0 {Ανοίξτε/κλείστε τον συντάκτη σχολίων}
menuText G WindowsGList "Λίστα παρτίδων" 0 {Ανοίξτε/κλείστε το παράθυρο με την λίστα των παρτίδων}
menuText G WindowsPGN "Παράθυρο PGN" 0 \
  {Ανοίξτε/κλείστε το παράθυρο PGN (σχολιασμός παρτίδας)}
menuText G WindowsPList "Αναζήτηση παίκτου" 2 {Ανοίξτε/κλείστε την εύρεση παίκτου}
menuText G WindowsTmt "Αναζήτηση προκριματικών" 2 {Άνοιγμα/κλείσιμο της αναζήτησης τουρνουά}
menuText G WindowsSwitcher "Εναλλαγή βάσης δεδομένωνDatabase switcher" 0 \
  {Άνοιγμα/κλείσιμο του παραθύρου εναλλαγής βάσης δεδομένων}
menuText G WindowsMaint "Παράθυρο συντήρησης" 0 \
  {Άνοιγμα/κλείσιμο του παραθύρου συντήρησης}
menuText G WindowsECO "Φυλλομετρητής ECO" 0 {Άνοιγμα/κλείσιμο του παραθύρου του φυλλομετρητή ECO}
menuText G WindowsRepertoire "Συντάκτης ρεπερτορίου" 0 \
  {Άνοιγμα κλείσιμο του συντάκτη ρεπερτορίου}
menuText G WindowsStats "Παράθυρο στατιστικών" 0 \
  {Άνοιγμα/κλείσιμο του παραθύρου φιλτραρίσματος στατιστικών}
menuText G WindowsTree "Παράθυρο δένδρου" 0 {Άνοιγμα/κλείσιμο του παραθύρου δένδρου}
menuText G WindowsTB "Παράθυρο βάσης δεδομένων φινάλε" 1 {Άνοιγμα/κλείσιμο του παραθύρου βάσης δεδομένων φινάλε}
menuText G WindowsBook "Παράθυρο βιβλίου" 0 {Άνοιγμα/κλείσιμο του παραθύρου του βιβλίου}
menuText G WindowsCorrChess "Παράθυρο αλληλογραφίας" 0 {Άνοιγμα/κλείσιμο του παραθύρου αλληλογραφίας}

# Tools menu:
menuText G Tools "Εργαλεία" 0
menuText G ToolsAnalysis "Μηχανή ανάλυσης..." 0 \
  {Εκκίνηση/διακοπή της σκακιστικής μηχανής ανάλυσης}
menuText G ToolsAnalysis2 "Μηχανής ανάλυσης #2..." 17 \
  {Εκκίνηση/διακοπή της δεύτερης σκακιστικής μηχανής ανάλυσης}
menuText G ToolsCross "Συγκριτικός πίνακας" 0 {Εμφανήστε τον συγκριτικό πίνακα προκριματικών γι' αυτή τη παρτίδα}
menuText G ToolsEmail "Διαχείριση ηλ. αλληλογραφίας" 0 {Άνοιγμα/κλείσιμο του παραθύρου διαχείρισης σκακιστικής ηλ. αλληλογραφίας}
menuText G ToolsFilterGraph "Γράφημα σχετικού φίλτρου" 12 {Άνοιγμα/κλείσιμο του παραθύρου των φίλτρων γραφημάτων σχετικών τιμών}
menuText G ToolsAbsFilterGraph "Γράφημα απόλυτου φίλτρου" 7 {Άνοιγμα/κλείσιμο του παραθύρου των φίλτρων γραφημάτων απολύτων τιμών}
menuText G ToolsOpReport "Αναφορά ανοίγματος" 0 {Δημιουργήστε μια αναφορά για το άνοιγμα της τρέχουσας θέσης}
menuText G ToolsOpenBaseAsTree "Άνοιγμα βάσης ως δένδρου..." 0   {Ανοίξτε μια βάση και χρησιμοποιείστε την στο παράθυρο δένδρου}
menuText G ToolsOpenRecentBaseAsTree "Άνοιγμα πρόσφατης βάσης ως δένδρου" 0   {Ανοίξτε μια πρόσφατη βάση και χρησιμοποιήστε την μέσα από το παράθυρο του δένδρου}
menuText G ToolsTracker "Ανιχνευτής κομματιού"  6 {Ανοίξτε το παράθυρο του ανιχνευτή κομματιού}
menuText G ToolsTraining "Προπόνηση"  0 {Προπονητικά εργαλεία (τακτικές, ανοίγματα...)}
menuText G ToolsTacticalGame "Παρτίδα τακτικής"  0 {Παίξτε μια παρτίδα τακτικής}
menuText G ToolsSeriousGame "Σοβαρή παρτίδα"  0 {Παίξτε μια σοβαρή παρτίδα}
menuText G ToolsTrainOpenings "Ανοίγματα"  0 {Προπονηθείτε με ένα ρεπερτόριο}
menuText G ToolsTrainReviewGame "Επισκόπηση παρτίδας"  0 {Μαντέψτε τις κινήσεις που έγιναν σε μια παρτίδα}
menuText G ToolsTrainTactics "Τακτικές"  0 {Επιλύστε τακτικές}
menuText G ToolsTrainCalvar "Υπολογισμός βαριαντών"  0 {Προπόνηση στον υπολογισμό βαριαντών}
menuText G ToolsTrainFindBestMove "Εύρεση καλύτερης κίνησης"  0 {Βρείτε την καλύτερη κίνηση}
menuText G ToolsTrainFics "Παιχνίδι στον FICS"  0 {Παίξτε στο freechess.org}
menuText G ToolsBookTuning "Συντονισμός βιβλίου" 0 {Συντονισμός βιβλίου}
menuText G ToolsConnectHardware "Σύνδεση περιφερειακού" 8 {Συνδέστε εξωτερικό περιφερειακό}
menuText G ToolsConnectHardwareConfigure "Ρύθμιση..." 0 {Ρυθμίστε εξωτερικό περιφερειακό και συνδέσεις}
menuText G ToolsConnectHardwareNovagCitrineConnect "Σύνδεση με Novag Citrine" 8 {Συνδέστε Novag Citrine με το Scid}
menuText G ToolsConnectHardwareInputEngineConnect "Σύνδεση μηχανής εισόδου δεδομένων" 8 {Συνδέστε μηχανή εισόδου (π.χ. DGT board) με το Scid}

menuText G ToolsPInfo "Πληροφορίες παίκτη"  0 \
  {Άνοιγμα/ενημέρωση του παραθύρου πληροφοριών παίκτη}
menuText G ToolsPlayerReport "Δελτίο παίκτη..." 3 \
  {Δημιουργήστε δελτίο για έναν παίκτη}
menuText G ToolsRating "Γράφημα βαθμολόγησης" 0 \
  {Δημιουργήστε γράφημα του ιστορικού βαθμολόγησης των παικτών της τρέχουσας παρτίδας}
menuText G ToolsScore "Γράφημα επιδόσεων" 0 {Εμφανίστε το παράθυρο γραφήματος των σκορ}
menuText G ToolsExpCurrent "Εξαγωγή τρέχουσας παρτίδας" 8 \
  {Γράψτε την τρέχουσα παρτίδα σε ένα αρχείο κειμένου}
menuText G ToolsExpCurrentPGN "Εξαγωγή παρτίδας σε ένα αρχείο PGN..." 15 \
  {Γράψτε την τρέχουσα παρτίδα σε ένα αρχείο PGN}
menuText G ToolsExpCurrentHTML "Εξαγωγή παρτίδας σε αρχείο HTML..." 15 \
  {Γράψτε την τρέχουσα παρτίδα σε ένα αρχείο HTML}
menuText G ToolsExpCurrentHTMLJS "Εξαγωγή παρτίδας σε αρχεία HTML και JavaScript..." 15 {Γράψτε την τρέχουσα παρτίδα σε αρχεία HTML και JavaScript}  
menuText G ToolsExpCurrentLaTeX "Εξαγωγή παρτίδας σε αρχείο LaTeX..." 15 \
  {Γράψτε την τρέχουσα παρτίδα σε ένα αρχείο LaTeX}
menuText G ToolsExpFilter "Εξαγωγή όλων των φιλτραρισμένων παρτίδων" 1 \
  {Γράψτε όλες τις φιλτραρισμένες παρτίδες σε ένα αρχείο κειμένου}
menuText G ToolsExpFilterPGN "Εξαγωγή φίλτρου σε αρχείο PGN..." 17 \
  {Γράψτε όλες τις φιλτραρισμένες παρτίδες σε ένα αρχείο PGN}
menuText G ToolsExpFilterHTML "Εξαγωγή φίλτρου σε αρχείο HTML..." 17 \
  {Γράψτε όλες τις φιλτραρισμένες παρτίδες σε ένα αρχείο HTML}
menuText G ToolsExpFilterHTMLJS "Εξαγωγή φίλτρου σε αρχεία HTML και JavaScript..." 17 {Γράψτε όλες τις φιλτραρισμένες παρτίδες σε αρχεία HTML και JavaScript}  
menuText G ToolsExpFilterLaTeX "Εξαγωγή φίλτρου σε αρχείο LaTeX..." 17 \
  {Γράψτε όλες τις φιλτραρισμένες παρτίδες σε ένα αρχείο LaTeX}
menuText G ToolsImportOne "Εισαγωγή παρτίδας PGN..." 0 \
  {Εισάγετε μια παρτίδα από ένα κείμενο PGN}
menuText G ToolsImportFile "Εισαγωγή αρχείου παρτίδων PGN..." 7 {Εισάγετε παρτίδες από ένα αρχείο PGN}
menuText G ToolsStartEngine1 "Εκκίνηση μηχανής 1" 13  {Εκκινήστε την μηχανή 1}
menuText G ToolsStartEngine2 "Εκκίνηση μηχανής 2" 13  {Εκκινήστε την μηχανή 2}
menuText G ToolsCaptureBoard "Σύλληψη τρέχουσας σκακιέρας..." 5  {Αποθηκεύστε την τρέχουσα σκακιέρα ως εικόνα.}

# Play menue
menuText G Play "Παιχνίδι" 0

# --- Correspondence Chess
menuText G CorrespondenceChess "Σκάκι δι' αλληλογραφίας" 0 {Λειτουργίες σκακιού δι' αλληλογραφίας βάσει eMail και Xfcc}
menuText G CCConfigure "Ρυθμίσεις..." 0 {Προσαρμογή εξωτερικών εργαλείων και γενικές ρυθμίσεις}
menuText G CCConfigRelay "Παρακολούθηση παρτίδων..." 10 {Ρυθμίστε τις παρτίδες προς παρακολούθηση}
menuText G CCOpenDB "Άνοιγμα βάσης δεδομένων..." 0 {Ανοίξτε την προκαθορισμένη βάση δεδομένων αλληλογραφίας}
menuText G CCRetrieve "Ανάκτηση παρτίδων" 0 {Ανακτήστε παρτίδες μέσω εξωτερικής εφαρμογής (Xfcc-)helper}
menuText G CCInbox "Επεξεργασία εισερχομένων" 8 {Επεξεργαστείτε όλα τα αρχεία στα εισερχόμενα του Scid}
menuText G CCSend "Αποστολή κίνησης" 0 {Στείλτε την κίνησή σας μέσω eMail ή εξωτερικής εφαρμογής (Xfcc-)helper}

menuText G CCResign "Παραίτηση" 1 {Παραιτηθείτε (όχι μέσω eMail)}
menuText G CCClaimDraw "Αίτηση ισοπαλίας" 6 {Στείλτε την κίνησή σας και ζητήστε ισοπαλία (όχι μέσω eMail)}
menuText G CCOfferDraw "Παραχώρηση ισοπαλίας" 1 {Στείλτε την κίνησή σας και παραχωρήστε ισοπαλία (όχι μέσω eMail)}
menuText G CCAcceptDraw "Αποδοχή ισοπαλίας" 0 {Δεχθείτε μια παραχώρηση ισοπαλίας (όχι μέσω eMail)}

menuText G CCNewMailGame "Νέα παρτίδα eMail..." 2 {Ξεκινήστε μια νέα παρτίδα μέσω eMail}
menuText G CCMailMove "Αποστολή κίνησης..." 0 {Ταχυδρομήστε την κίνησή σας μέσω eMail προς τον αντίπαλο}
menuText G CCGamePage "Σελίδα παρτίδας..." 0 {Εμφανήστε την παρτίδα μέσα από τον περιηγητή ιστού}

# menu in cc window:
menuText G CCEditCopy "Αντιγραφή λίστας παρτίδων στην προσωρινή μνήμη (Clipbase)" 0 {Αντιγράψτε τις παρτίδες ως λίστα CSV στην μνήμη clipbase}

#  B    GHiJKL    Q  TUV XYZ

# Options menu:
menuText G Options "Επιλογές" 0
menuText G OptionsBoard "Σκακιέρα" 0 {Επιλογές εμφάνισης σκακιέρας}
menuText G OptionsBoardSize "Μέγεθος" 0 {Αλλάξτε το μέγεθος της σκακιέρας}
menuText G OptionsBoardPieces "Είδος κομματιών" 6 {Αλλάξτε το είδος των κομματιών της σκακιέρας}
menuText G OptionsBoardColors "Χρώματα..." 0 {Αλλάξτε τα χρώματα της σκακιέρας}
#Klimmek
menuText G OptionsBoardGraphics "Τετράγωνα..." 0 {Επιλέξτε την υφή των τετραγώνων}
translate G OptionsBGW {Επιλέξτε την υφή των τετραγώνων}
translate G OptionsBoardGraphicsText {Επιλέξτε το αρχείο γραφικών για τα λευκά και τα μαύρα τετράγωνα:}
menuText G OptionsBoardNames "Τα ονόματά μου..." 0 {Επεξεργαστείτε τα ονόματά σας στις παρτίδες}
menuText G OptionsExport "Εξαγωγές" 0 {Αλλάξτε τις επιλογές εξαγωγής κειμένου}
menuText G OptionsFonts "Γραμματοσειρές" 0 {Αλλάξτε τις γραμματοσειρές}
menuText G OptionsFontsRegular "Συνήθης" 0 {Αλλάξτε την τακτική γραμματοσειρά}
menuText G OptionsFontsMenu "Μενού" 0 {Αλλάξτε την γραμματοσειρά των μενού}
menuText G OptionsFontsSmall "Μικρή" 0 {Αλλάξτε την μικρή γραμματοσειρά}
menuText G OptionsFontsTiny "Πολύ μικρή" 0 {Αλλάξτε την πολύ μικρή γραμματοσειρά}
menuText G OptionsFontsFixed "Σταθερή" 0 {Αλλάξτε την γραμματοσειρά σταθερού πλάτους}
menuText G OptionsGInfo "Πληροφορίες παρτίδας" 0 {Επιλογές πληροφοριών παρτίδας}
menuText G OptionsLanguage "Γλώσσα" 0 {Επιλέξτε την γλώσσα των μενού}
menuText G OptionsMovesTranslatePieces "Μετάφραση κομματιών" 0 {Μεταφράστε το πρώτο γράμμα των κομματιών}
menuText G OptionsMovesHighlightLastMove "Ανάδειξη τελευταίας κίνησης" 0 {Αναδείξτε την τελευταία κίνηση}
menuText G OptionsMovesHighlightLastMoveDisplay "Εμφάνιση" 0 {Προβολή της τελευταίας κίνησης με ανάδειξη}
menuText G OptionsMovesHighlightLastMoveWidth "Πλάτος" 0 {Το πάχος της γραμμής}
menuText G OptionsMovesHighlightLastMoveColor "Χρώμα" 0 {Το χρώμα τηςη γραμμής}
menuText G OptionsMoves "Κινήσεις" 0 {Επιλογές εισαγωγής κίνησης}
menuText G OptionsMovesAsk "Ερώτηση πριν την αντικατάσταση κινήσεων" 0 \
  {Να ερωτάστε πριν την αντικατάσταση κάθε κίνησης που έγινε}
menuText G OptionsMovesAnimate "Χρόνος απεικόνισης κίνησης" 1 \
  {Καθορίστε την διάρκεια απεικόνισης της κίνησης}
menuText G OptionsMovesDelay "Χρονική καθυστέρηση αυτόματου παιχνιδιού..." 1 \
  {Καθορίστε την διάρκεια της χρονικής καθυστέρησης για την λειτουργία αυτόματου παιξίματος}
menuText G OptionsMovesCoord "Εισαγωγή συντεταγμένης κίνησης" 0 \
  {Αποδοχή εισαγωγής κίνησης σε στυλ συντεταγμένων (π.χ. "g1f3")}
menuText G OptionsMovesSuggest "Εμφάνιση προτεινόμενων κινήσεων" 0 \
  {Ενεργοποίηση/απενεργοποίηση προτεινόμενης κίνησης}
menuText G OptionsShowVarPopup "Εμφάνιση παραθύρου βαριαντών" 0 {Ενεργοποίηση/απενεργοποίηση την εμφάνιση του παραθύρου βαριαντών}  
menuText G OptionsMovesSpace "Προσθήκη διαστημάτων μετά τον αριθμό της κίνησης" 0 {Προσθήκη διαστήματος μετά τον αριθμό της κίνησης}  
menuText G OptionsMovesKey "Ολοκλήρωση πληκτρολογίου" 0 \
  {Ενεργοποίηση/απενεργοποίηση της αυτόματης ολοκλήρωσης κινήσεων μέσω πληκτρολογίου}
menuText G OptionsMovesShowVarArrows "Εμφάνιση βέλους για βαριάντα" 0 {Ενεργοποίηση/απενεργοποίηση του βέλους που δείχνει τις κινήσεις των βαριαντών}
menuText G OptionsNumbers "Μορφή αριθμών" 0 {Επιλέξτε τη μορφή των αριθμών}
menuText G OptionsStartup "Εκκίνηση" 3 {Επιλέξτε τα παράθυρα που θα ανοίγουν κατά την εκκίνηση του Scid}
menuText G OptionsTheme "Θέμα" 0 {Αλλάξτε την όψη του προγράμματος}
menuText G OptionsWindows "Παράθυρα" 0 {Επιλογές παραθύρων}
menuText G OptionsWindowsIconify "Αυτόματο εικονίδιο" 5 \
  {Μετατροπή όλων των παραθύρων σε εικονίδια όταν το κυρίως παράθυρο έχει γίνει εικονίδιο}
menuText G OptionsWindowsRaise "Αυτόματη μεγέθυνση" 5 \
  {Μεγέθυνση συγκεκριμένων παραθύρων (π.χ. των γραμμών προόδου) κάθε φορά που αποκρύπτονται}
menuText G OptionsSounds "Ήχοι..." 2 {Ρυθμίστε τους ήχους αναγγελίας κίνησης}
menuText G OptionsWindowsDock "Προσκόληση παραθύρων" 0 {Προσκολήστε τα παράθυρα (χρειάζεται επανεκκίνηση)}
menuText G OptionsWindowsSaveLayout "Αποθήκευση διάταξης" 0 {Αποθηκεύστε την διάταξη των παραθύρων}
menuText G OptionsWindowsRestoreLayout "Αποκατάσταση διάταξης" 0 {Αποκαταστήστε προηγούμενη διάταξη παραθύρων}
menuText G OptionsWindowsShowGameInfo "Εμφάνιση πληροφοριών παρτίδας" 0 {Εμφανίστε τις πληροφορίες για την παρτίδα}
menuText G OptionsWindowsAutoLoadLayout "Αυτόματη φόρτωση της πρώτης διάταξης" 0 {Αυτόματη φόρτωση κατά την εκκίνηση της πρώτης διάταξης}
menuText G OptionsToolbar "Γραμμή εργαλειών..." 0 {Προσαρμόστε την εργαλειοθήκη του κύριου παραθύρου}
menuText G OptionsECO "Φόρτωση αρχείου ECO..." 7 {Φορτώστε το αρχείο ταξινόμησης κατά ECO}
menuText G OptionsSpell "Φόρτωση αρχείου ορθογραφικού ελέγχου..." 11 \
  {Φορτώστε το αρχείο ορθογραφικού ελέγχου του Scid}
menuText G OptionsTable "Κατάλογος βάσης φινάλε..." 10 \
  {Επιλέξτε μια βάση δεδομένων φινάλες. Θα χρησιμοποιηθούν όλες οι βάσεις δεδομένων φινάλε του καταλόγου αυτού}
menuText G OptionsRecent "Πρόσφατα αρχεία..." 0 {Αλλάξτε το πλήθος των πρόσφατων αρχείων που εμφανίζονται στο μενού Αρχείο}
menuText G OptionsBooksDir "Κατάλογος βιβλίων..." 0 {Καθορίζει τον κατάλογο των βιβλίων ανοιγμάτων}
menuText G OptionsTacticsBasesDir "Bases directory..." 0 {Sets the tactics (training) bases directory}
menuText G OptionsSave "Αποθήκευση επιλογών" 0 "Αποθηκεύστε όλες τις μεταβολές ρυθμίσεων στο αρχείο $::optionsFile"
menuText G OptionsAutoSave "Αυτόματη αποθήκευση επιλογών κατά την έξοδο" 0 \
  {Να αποθηκεύονται αυτόματα οι επιλογές κατά την έξοδο από το Scid}

# Help menu:
menuText G Help "Βοήθεια" 0
menuText G HelpContents "Περιεχόμενα" 0 {Εμφανήστε την σελίδα των περιεχομένων της βοήθειας}
menuText G HelpIndex "Κατάλογος" 0 {Εμφανήστε τον κατάλογο βοήθειας}
menuText G HelpGuide "Γρήγορος οδηγός" 0 {Εμφανίζει την σελίδα της βοήθειας με τον γρήγορο οδηγό}
menuText G HelpHints "Υποδείξεις" 0 {Εμφανήστε την σελίδα της βοήθειας με τις νύξεις}
menuText G HelpContact "Πληροφορίες επικοινωνίας" 1 {Εμφανίζει την σελίδα της βοήθειας με τις πληροφορίες επικοινωνίας}
menuText G HelpTip "Συμβουλή της ημέρας" 0 {Εμφάνιση χρήσιμων συμβουλών για το Scid}
menuText G HelpStartup "Παράθυρο έναρξης" 0 {Εμφανίζει το παράθυρο έναρξης}
menuText G HelpAbout "Για το Scid" 0 {Πληροφορίες για το Scid}

# Game info box popup menu:
menuText G GInfoHideNext "Απόκρυψη επόμενης κίνησης" 0
menuText G GInfoMaterial "Εμφάνισης της αξίας των κομματιών" 0
menuText G GInfoFEN "Εμφάνιση FEN" 5
menuText G GInfoMarks "Εμφάνιση έγχρωμων τετρατώνων και βελών" 5
menuText G GInfoWrap "Αναδύπλωση γραμμών" 0
menuText G GInfoFullComment "Εμφάνιση πλήρους σχολιασμού" 10
menuText G GInfoPhotos "Εμφάνιση φωτογραφιών" 5
menuText G GInfoTBNothing "Βάση φινάλε: Τίποτα" 12
menuText G GInfoTBResult "Βάση φινάλε: Μόνον αποτελέσματα" 12
menuText G GInfoTBAll "Βάση φινάλε: Αποτέλεσα και καλύτερες κινήσεις" 19
menuText G GInfoDelete "Διαγραφή/ανάκτηση αυτής της παρτίδας" 4
menuText G GInfoMark "(Μη-)Σημείωση αυτής της παρτίδας" 4
menuText G GInfoInformant "Ρύθμιση τιμών πληροφορίας" 0

# Main window buttons:
helpMsg G .main.fbutton.button.start {Μετάβαση στην αρχή της παρτίδας (πλήκτρο: Home)}
helpMsg G .main.fbutton.button.end {Μετάβαση στο τέλος της παρτίδας (πλήκτρο: End)}
helpMsg G .main.fbutton.button.back {Μετάβαση μια κίνηση πίσω (πλήκτρο: LeftArrow)}
helpMsg G .main.fbutton.button.forward {Μετάβαση μια κίνηση εμπρός (πλήκτρο: RightArrow)}
helpMsg G .main.fbutton.button.intoVar {Μετάβαση σε βαριάντα (πλήκτρο: v)}
helpMsg G .main.fbutton.button.exitVar {Έξοδος από την τρέχουσα βαριάντα (πλήκτρο: z)}
helpMsg G .main.fbutton.button.flip {Περιστροφή σκακιέρας (πλήκτρο: .)}
helpMsg G .main.fbutton.button.coords {Εμφάνιση/απόκρυψη συντεταγμένων σκακιέρας (πλήκτρο: 0)}
helpMsg G .main.fbutton.button.stm {Εμφάνιση/απόκρυψη του εικονιδίου της πλευράς που είναι να παίξη}
helpMsg G .main.fbutton.button.autoplay {Αυτόματο παίξιμο κινήσεων (πλήκτρο: Ctrl+Z)}

# General buttons:
translate G Back {Πίσω}
translate G Browse {Αναζήτηση}
translate G Cancel {Άκυρο}
translate G Continue {Συνέχεια}
translate G Clear {Καθαρισμός}
translate G Close {Κλείσιμο}
translate G Contents {Περιεχόμενα}
translate G Defaults {Αρχικό}
translate G Delete {Διαγραφή}
translate G Graph {Γράφημα}
translate G Help {Βοήθεια}
translate G Import {Εισαγωγή}
translate G Index {Κατάλογος}
translate G LoadGame {Φώρτωση παρτίδας}
translate G BrowseGame {Περιήγηση παρτίδας}
translate G MergeGame {Συνένωση παρτίδας}
translate G MergeGames {Συνένωση παρτίδων}
translate G Preview {Προεπισκόπηση}
translate G Revert {Επαναφορά}
translate G Save {Αποθήκευση}
translate G Search {Αναζήτηση}
translate G Stop {Διακοπή}
translate G Store {Αποθήκευση}
translate G Update {Ενημέρωση}
translate G ChangeOrient {Αλλαγή προσανατολισμού παραθύρου}
translate G ShowIcons {Εμφάνιση εικόνων}
translate G None {Κανένα}
translate G First {Πρώτο}
translate G Current {Τρέχων}
translate G Last {Τελευταίο}

# General messages:
translate G game {παρτίδα}
translate G games {παρτίδες}
translate G move {κίνηση}
translate G moves {κινήσεις}
translate G all {όλες}
translate G Yes {Ναι}
translate G No {Όχι}
translate G Both {Αμφότεροι}
translate G King {Βασιλιάς}
translate G Queen {Βασίλισσα}
translate G Rook {Πύργος}
translate G Bishop {Αξιωματικός}
translate G Knight {Ίππος}
translate G Pawn {Πιόνι}
translate G White {Λευκά}
translate G Black {Μαύρα}
translate G Player {Παίκτης}
translate G Rating {Βαθμολογία}
translate G RatingDiff {Διαφορά βαθμολογίας (Λευκά - Μαύρα)}
translate G AverageRating {Μέση βαθμολογία}
translate G Event {Διοργάνωση}
translate G Site {Τόπος}
translate G Country {Χώρα}
translate G IgnoreColors {Αγνόηση χρωμάτων}
translate G Date {Ημερομηνία}
translate G EventDate {Ημερομηνία διοργάνωσης}
translate G Decade {Δεκαετία}
translate G Year {Έτος}
translate G Month {Μήνας}
translate G Months {Ιανουάριος Φεβρουάριος Μάρτιος Απρίλιος Μάιος Ιούνιος Ιούλιος Αύγουστος Σεπτέμβριος Οκτώβριος Νοέμβριος Δεκέμβριος}
translate G Days {Κυρ Δευ Τρ Τε Πε Πα Σα}
translate G YearToToday {Τρέχον έτος}
translate G Result {Αποτέλεσμα}
translate G Round {Περίοδος}
translate G Length {Έκταση}
translate G ECOCode {Κώδικας ECO}
translate G ECO {ECO}
translate G Deleted {Διαγράφηκε}
translate G SearchResults {Αναζήτηση αποτελεσμάτων}
translate G OpeningTheDatabase {Βάση δεδομένων ανοιγμάτων}
translate G Database {Βάση δεδομένων}
translate G Filter {Φίλτρο}
translate G noGames {καμία παρτίδα}
translate G allGames {όλες οι παρτίδες}
translate G empty {κενό}
translate G clipbase {προσωρινή μνήμη clipbase}
translate G score {βαθμός}
translate G StartPos {Εναρκτήρια θέση}
translate G Total {Σύνολο}
translate G readonly {μόνο για ανάγνωση}

# Standard error messages:
translate G ErrNotOpen {Αυτή η βάση δεδομένων δεν είναι ανοικτή.}
translate G ErrReadOnly {Αυτή η βάση δεδομένων είναι μόνον για ανάγνωση. Δεν μπορεί να αντικατασταθεί.}
translate G ErrSearchInterrupted {Η αναζήτηση διακόπηκε. Τα αποτελέσματα δεν είναι πλήρη.}

# Game information:
translate G twin {δίδυμες}
translate G deleted {διεγραμμένη}
translate G comment {σχόλιο}
translate G hidden {κρυμένη}
translate G LastMove {Τελευταία κίνηση}
translate G NextMove {Επόμενη}
translate G GameStart {Αρχή παρτίδας}
translate G LineStart {Αρχή γραμμής}
translate G GameEnd {Τέλος παρτίδας}
translate G LineEnd {Τέλος γραμμής}

# Player information:
translate G PInfoAll {Αποτελέσματα για <b>όλες</b> τις παρτίδες}
translate G PInfoFilter {Αποτελέσματα για τις <b>φιλτραρισμένες</b> παρτίδες}
translate G PInfoAgainst {Αποτελέσματα εναντίον}
translate G PInfoMostWhite {Τα κοινότερα ανοίγματα ως Λευκά}
translate G PInfoMostBlack {Τα κοινότερα ανοίγματα ως Μαύρα}
translate G PInfoRating {Ιστορικό βαθμολόγησης}
translate G PInfoBio {Βιογραφία}
translate G PInfoEditRatings {Επεξεργασία βαθμολογήσεων}

# Tablebase information:
translate G Draw {Ισοπαλία}
translate G stalemate {πατ}
translate G withAllMoves {με όλες τις κινήσεις}
translate G withAllButOneMove {με όλες τις κινήσεις εκτός μιας}
translate G with {με}
translate G only {μόνο}
translate G lose {απώλεια}
translate G loses {χάνει}
translate G allOthersLose {όλες οι άλλες χάνουν}
translate G matesIn {ματ σε}
translate G hasCheckmated {έκανε ματ}
translate G longest {μεγαλύτερη}
translate G WinningMoves {Κινήσεις που κερδίζουν}
translate G DrawingMoves {Κινήσεις που οδηγούν σε ισοπαλία}
translate G LosingMoves {Κινήσεις που χάνουν}
translate G UnknownMoves {Κινήσεις αγνώστου αποτελέσματος}

# Tip of the day:
translate G Tip {Συμβουλή}
translate G TipAtStartup {Συμβουλές κατά την εκκίνηση}

# Tree window menus:
menuText G TreeFile "Αρχείο" 0
menuText G TreeFileFillWithBase "Γέμισμα της μνήμης με την βάση" 0 {Γεμίστε την προσωρινή μνήμη cache με όλα τις παρτίδες της τρέχουσας βάσης}
menuText G TreeFileFillWithGame "Γέμισμα της μνήμης με παρτίδα" 0 {Γεμίστε την προσωρινή μνήμη cache με την τρέχουσα παρτίδα στην τρέχουσα βάση}
menuText G TreeFileSetCacheSize "Μέγεθος προσωρινής μνήμης" 0 {Καθορίστε το μέγεθος της προσωρινής μνήμης cache}
menuText G TreeFileCacheInfo "Αποθήκευση πληροφοριών στην μνημη" 0 {Μεταβιβάστε τις πληροφορίες στην μνήμη cache}
menuText G TreeFileSave "Αποθήκευση του αρχείου προσωρινής μνήμης" 0 {Αποθηκεύστε το αρχείο δένδρου της προσωρινής μνήμης (.stc)}
menuText G TreeFileFill "Γέμισμα του αρχείου προσωρινής μνήμης" 0 \
  {Γεμίστε το αρχείο προσωρινής μνήμης με συνήθεις θέσεις ανοιγμάτων}
menuText G TreeFileBest "Λίστα καλύτερων παρτίδων" 0 {Εμφάνιση του καλύτερου δένδρου λίστας παρτίδων}
menuText G TreeFileGraph "Παράθυρο γραφήματος" 0 {Εμφάνιση του γραφήματος γι' αυτόν τον κλάδο δένδρου}
menuText G TreeFileCopy "Αντιγραφή του κειμένου του δένδρου στην προσωρινή μνήμη Clipboard" 1 \
  {Αντιγράψτε το δένδρο των στατιστικών στην προσωρινή μνήμη clipboard}
menuText G TreeFileClose "Κλείσιμο του παραθύρου δένδρου" 0 {Κλείστε το παράθυρο του δένδρου}
menuText G TreeMask "Μάσκα" 0
menuText G TreeMaskNew "Νέα" 0 {Νέα μάσκα}
menuText G TreeMaskOpen "Άνοιγμα" 0 {Ανοίξτε μια μάσκα}
menuText G TreeMaskOpenRecent "Άνοιγμα πρόσφατης" 0 {Ανοίξτε πρόσφατη μάσκα}
menuText G TreeMaskSave "Αποθήκευση" 0 {Αποθηκεύστε την μάσκα}
menuText G TreeMaskClose "Κλείσιμο" 0 {Κλείστε τη μάσκα}
menuText G TreeMaskFillWithGame "Γέμισμα με παρτίδα" 0 {Γεμίστε την μάσκα με μια παρτίδα}
menuText G TreeMaskFillWithBase "Γέμισμα με βάση" 0 {Γεμίστε τη μάσκα με όλες τις παρτίδες της βάσης}
menuText G TreeMaskInfo "Info" 0 {Show statistics for current mask}
menuText G TreeMaskDisplay "Εμφάνιση χάρτη μάσκας" 0 {Εμφανίστε τα δεδομένα της μάσκας σε μορφή δένδρου}
menuText G TreeMaskSearch "Αναζήτηση" 0 {Αναζήτηση στην τρέχουσα μάσκα}
menuText G TreeSort "Ταξινόμηση" 0
menuText G TreeSortAlpha "Αλφαβητική" 0
menuText G TreeSortECO "Κώδικας ECO" 0
menuText G TreeSortFreq "Συχνότητα" 0
menuText G TreeSortScore "Βαθμολογία" 0
menuText G TreeOpt "Επιλογές" 0
menuText G TreeOptSlowmode "Αργή λειτουργία" 0 {Αργή λειτουργία των ενημερώσεων (μεγάλη ακρίβεια)}
menuText G TreeOptFastmode "Γρήγορη λειτουργία" 0 {Γρήγορη λειτουργία των ενημερώσεων (χωρίς αντιμετάθεση κίνησης)}
menuText G TreeOptFastAndSlowmode "Αργή και γρήγορη λειτουργία" 0 {Γρήγορη λειτουργία και έπειτα αργή λειτουργία για ενημερώσεις}
menuText G TreeOptStartStop "Αυτόματη ανανέωση" 0 {Εναλλάσει την αυτόματη ανανέωση του παραθύρου του δένδρου}
menuText G TreeOptLock "Lock" 0 {Lock/unlock the tree to the current database}
menuText G TreeOptTraining "Προπόνηση" 0 {Ενεργοποίηση/απενεργοποίηση της λειτουργίας εκπαίδευσης}
menuText G TreeOptAutosave "Αυτόματη αποθήκευση του αρχείου προσωρινής μνήμης" 0 \
  {Αποθηκεύει αυτόματα το αρχείο προσωρινής μνήμης όταν κλείσετε το παράθυρο δένδρου}
menuText G TreeHelp "Βοήθεια" 0
menuText G TreeHelpTree "Δένδρο βοήθειας" 0
menuText G TreeHelpIndex "Κατάλογος βοήθειας" 0
translate G SaveCache {Αποθήκευση προσωρινής μνήμης Cache}
translate G Training {Προπόνηση}
translate G LockTree {Κλείδωμα}
translate G TreeLocked {κλειδωμένο}
translate G TreeBest {Καλύτερο}
translate G TreeBestGames {Οι καλύτερες παρτίδες του δένδρου}
# Note: the next message is the tree window title row. After editing it,
# check the tree window to make sure it lines up with the actual columns.
translate G TreeTitleRow \
  {    Move   ECO       Frequency    Score  AvElo Perf AvYear %Draws}
translate G TreeTotal {ΣΥΝΟΛΟ}
translate G DoYouWantToSaveFirst {Θέλετε να αποθηκεύσετε πρώτα;}
translate G AddToMask {Προσθήκη στην μάσκα}
translate G RemoveFromMask {Απομάκρυνση από την μάσκα}
translate G AddThisMoveToMask {Προσθήκη αυτής της κίνησης στην μάσκα}
translate G SearchMask {Αναζήτηση στην μάσκα}
translate G DisplayMask {Εμφάνιση μάσκας}
translate G Nag {Κώδικας Nag}
translate G Marker {Μαρκαδόρος}
translate G Include {Περιλαμβάνει}
translate G Exclude {Εξαιρεί}
translate G MainLine {Κύρια γραμμή}
translate G Bookmark {Σελιδοδείκτης}
translate G NewLine {Νέα γραμμή}
translate G ToBeVerified {Να εξακριβωθεί}
translate G ToTrain {Να εξασκηθεί}
translate G Dubious {Αμφίβολη}
translate G ToRemove {Προς απομάκρυνση}
translate G NoMarker {Χωρίς μαρκαδόρο}
translate G ColorMarker {Χρώμα}
translate G WhiteMark {Λευκό}
translate G GreenMark {Πράσινο}
translate G YellowMark {Κίτρινο}
translate G BlueMark {Γαλάζιο}
translate G RedMark {Κόκκινο}
translate G CommentMove {Σχολιασμός κίνησης}
translate G CommentPosition {Σχολιασμός θέσης}
translate G AddMoveToMaskFirst {Πρώτα να προστεθεί η κίνηση στην μάσκα}
translate G OpenAMaskFileFirst {Πρώτα να ανοιχτεί ένα αρχείο μάσκας}
translate G Positions {Θέσεις}
translate G Moves {Κινήσεις}

# Finder window:
menuText G FinderFile "Αρχείο" 0
menuText G FinderFileSubdirs "Αναζήτηση στους υποκαταλόγους" 0
menuText G FinderFileClose "Κλείσιμο αναζήτησης αρχείου" 0
menuText G FinderSort "Ταξινόμηση" 0
menuText G FinderSortType "Τύπος" 0
menuText G FinderSortSize "Μέγεθος" 0
menuText G FinderSortMod "Τροποποιήθηκε" 0
menuText G FinderSortName "Όνομα" 0
menuText G FinderSortPath "Διαδρομή" 0
menuText G FinderTypes "Τύποι" 0
menuText G FinderTypesScid "Βάσεις δεδομένων Scid" 0
menuText G FinderTypesOld "Βάσεις δεδομένων Scid παλαιάς μορφής" 0
menuText G FinderTypesPGN "Αρχεία PGN" 0
menuText G FinderTypesEPD "Αρχεία EPD" 0
menuText G FinderTypesRep "Αρχεία ρεπερτορίου" 0
menuText G FinderHelp "Βοήθεια" 0
menuText G FinderHelpFinder "Βοήθεια για την αναζήτηση αρχείων" 0
menuText G FinderHelpIndex "Κατάλογος βοήθειας" 0
translate G FileFinder {Αναζήτηση αρχείου}
translate G FinderDir {Κατάλογος}
translate G FinderDirs {Κατάλογοι}
translate G FinderFiles {Αρχεία}
translate G FinderUpDir {επάνω}
translate G FinderCtxOpen {Άνοιγμα}
translate G FinderCtxBackup {Αντίγραφο ασφαλείας}
translate G FinderCtxCopy {Αντιγραφή}
translate G FinderCtxMove {Μεταφορά}
translate G FinderCtxDelete {Διαγραφή}
 
# Player finder:
menuText G PListFile "Αρχείο" 0
menuText G PListFileUpdate "Ανανέωση/Ενημέρωση" 0
menuText G PListFileClose "Κλείσιμο αναζήτησης αναπαραγωγής" 0
menuText G PListSort "Ταξινόμηση" 0
menuText G PListSortName "Όνομα" 0
menuText G PListSortElo "Elo" 0
menuText G PListSortGames "Παρτίδες" 0
menuText G PListSortOldest "Παλαιότερη" 0
menuText G PListSortNewest "Νεότερη" 2

# Tournament finder:
menuText G TmtFile "Αρχείο" 0
menuText G TmtFileUpdate "Ανανέωση" 0
menuText G TmtFileClose "Κλείσιμο αναζήτησης προκριματικών" 0
menuText G TmtSort "Ταξινόμηση" 0
menuText G TmtSortDate "Ημερομηνία" 0
menuText G TmtSortPlayers "Παίκτες" 0
menuText G TmtSortGames "Παρτίδες" 0
menuText G TmtSortElo "Elo" 0
menuText G TmtSortSite "Τοποθεσία" 0
menuText G TmtSortEvent "Διοργάνωση" 1
menuText G TmtSortWinner "Νικητής" 0
translate G TmtLimit "Όριο λίστας"
translate G TmtMeanElo "Μέσος Elo"
translate G TmtNone "Δεν βρέθηκαν προκριματικοί που να ταιριάζουν."

# Graph windows:
menuText G GraphFile "Αρχείο" 0
menuText G GraphFileColor "Αποθήκευση ως έγρωμο PostScript..." 8
menuText G GraphFileGrey "Αποθήκευση ως γρκίζο PostScript..." 8
menuText G GraphFileClose "Κλείσιμο παραθύρου" 6
menuText G GraphOptions "Επιλογές" 0
menuText G GraphOptionsWhite "Λευκά" 0
menuText G GraphOptionsBlack "Μαύρα" 0
menuText G GraphOptionsBoth "Και τα δύο" 1
menuText G GraphOptionsPInfo "Πληροφορίες παίκτη" 0
translate G GraphFilterTitle "Φίλτρο γραφήματος: συχνότητα ανά 1000 παρτίδες"
translate G GraphAbsFilterTitle "Φίλτρο γραφήματος: συχνότητα παρτίδας"
translate G ConfigureFilter "Προσαρμογή των αξόνων Χ ως προς Έτος, Βαθμολογία και Κινήσεις"
translate G FilterEstimate "Εκτίμηση"
translate G TitleFilterGraph "Scid: Φιλτράρισμα γραφήματος"

# Analysis window:
translate G AddVariation {Προσθήκη βαριάντας}
translate G AddAllVariations {Προσθήκη όλων των βαριαντών}
translate G AddMove {Προσθήκκη κίνησης}
translate G Annotate {Υπομνηματισμός}
translate G ShowAnalysisBoard {Εμφάνισης της σκακιέρας ανάλυσης}
translate G ShowInfo {Εμφάνιση πληροφοριών μηχανής}
translate G FinishGame {Ολοκλήρωση παρτίδας}
translate G StopEngine {Διακοπή μηχανής}
translate G StartEngine {Εκκίνηση μηχανής}
translate G LockEngine {Κλείδωμα της μηχανής στην τρέχουσα θέση}
translate G AnalysisCommand {Εντολή ανάλυσης}
translate G PreviousChoices {Προηγούμενες επιλογές}
translate G AnnotateTime {Καθορίστε τον χρόνο μεταξύ των κινήσεων σε δευτερόλεπτα}
translate G AnnotateWhich {Προσθήκη βαριαντών}
translate G AnnotateAll {Για κινήσεις και των δύο πλευρών}
translate G AnnotateAllMoves {Υπομνηματισμός όλων των κινήσεων}
translate G AnnotateWhite {Για τις κινήσεις μόνο των Λευκών}
translate G AnnotateBlack {Για τις κινήσεις μόνο των Μαύρων}
translate G AnnotateBlundersOnly {Όταν η κίνηση είναι σφάλμα}
translate G AnnotateBlundersOnlyScoreChange {Η ανάλυση αναφέρει σφάλμα και το σκορ άλλαξε από/σε: }
translate G BlundersThreshold {Αφετηρία}
translate G ScoreAllMoves {Βαθμολόγηση όλων των κινήσεων}
translate G LowPriority {Χαμηλή προτεραιότητα της CPU}
translate G ClickHereToSeeMoves {Πατήστε εδώ για να δείτε τις κινήσεις}
translate G ConfigureInformant {Προσαρμογή Informant}
translate G Informant!? {Ενδιαφέρουσα κίνησηInteresting move}
translate G Informant? {Φτωχή κίνηση}
translate G Informant?? {Σφάλμα}
translate G Informant?! {Αμφίβολη κίνηση}
translate G Informant+= {Τα Λευκά έχουν μικρό πλεονέκτημα}
translate G Informant+/- {Τα Λευκά έχουν μέτριο πλεονέκτημα}
translate G Informant+- {Τα Λευκά έχουν αποφασιστικό πλεονέκτημα}
translate G Informant++- {Η παρτίδα θεωρείται κερδισμένη}
  
# Book window
translate G Book {Βιβλίο}
translate G OtherBookMoves {Βιβλίο αντιπάλου}
translate G OtherBookMovesTooltip {Κινήσεις για τις οποίες ο αντίπαλος διαθέτει απάντηση}

# Analysis Engine open dialog:
translate G EngineList {Λίστα μηχανής ανάλυσης}
translate G EngineName {Όνομα}
translate G EngineCmd {Εντολή}
translate G EngineArgs {Παράμετροι}
translate G EngineDir {Κατάλογος}
translate G EngineElo {Elo}
translate G EngineTime {Ημερομηνία}
translate G EngineNew {Νέα}
translate G EngineEdit {Επεξεργασία}
translate G EngineRequired {Τα παιδία με έντονη γραμματοσειρά είναι απαραίτητα, τα άλλα είναι προαιρετικά}

# Stats window menus:
menuText G StatsFile "Αρχείο" 0
menuText G StatsFilePrint "Εκτύπωση σε αρχείο..." 0
menuText G StatsFileClose "Κλείσιμο παραθύρου" 0
menuText G StatsOpt "Επιλογές" 0

# PGN window menus:
menuText G PgnFile "Αρχείο" 0
menuText G PgnFileCopy "Αντιγραφή παρτίδας στην προσωρινή μνήμη Clipboard" 0
menuText G PgnFilePrint "Εκτύπωση σε αρχείο..." 0
menuText G PgnFileClose "Κλείσιμο παραθύρου PGN" 10
menuText G PgnOpt "Εμφάνιση" 0
menuText G PgnOptColor "Έγχρωμη εμφάνιση" 0
menuText G PgnOptShort "Μικρή (3 γραμμών) κεφαλίδα" 0
menuText G PgnOptSymbols "Συμβολικός υπομνηματισμός" 1
menuText G PgnOptIndentC "Εσοχή σχολίων" 0
menuText G PgnOptIndentV "Εσοχή βαριαντών" 7
menuText G PgnOptColumn "Είδος στήλης (μια κίνηση ανά γραμμή)" 1
menuText G PgnOptSpace "Διάστημα μετά τον αριθμό της κίνησης" 1
menuText G PgnOptStripMarks "Απομάκρυνση έγχρωμων κωδικών τετραγώνων/βελών" 1
menuText G PgnOptBoldMainLine "Χρήση έντονου κειμένου για τις κινήσεις κύριας γραμμής" 4
menuText G PgnColor "Χρώματα" 0
menuText G PgnColorHeader "Κεφαλίδα..." 0
menuText G PgnColorAnno "Υπομνηματισμοί..." 0
menuText G PgnColorComments "Σχόλια..." 0
menuText G PgnColorVars "Βαριάντες..." 0
menuText G PgnColorBackground "Υπόβαθρο..." 0
menuText G PgnColorMain "Κύρια γραμμή..." 0
menuText G PgnColorCurrent "Υπόβαθρο τρέχουσας κίνησης..." 1
menuText G PgnColorNextMove "Υπόβαθρο επόμενης κίνησης..." 0
menuText G PgnHelp "Βοήθεια" 0
menuText G PgnHelpPgn "Βοήθεια για PGN" 0
menuText G PgnHelpIndex "Κατάλογος" 0
translate G PgnWindowTitle {Σημείωση - παρτίδα %u}

# Crosstable window menus:
menuText G CrosstabFile "Αρχείο" 0
menuText G CrosstabFileText "Εκτύπωση κειμένου σε αρχείο..." 9
menuText G CrosstabFileHtml "Εκτύπωση σε αρχείο HTML..." 9
menuText G CrosstabFileLaTeX "Εκτύπωση σε αρχείο LaTeX..." 9
menuText G CrosstabFileClose "Κλείσιμο του παραθύρου συγκριτικού πίνακα" 0
menuText G CrosstabEdit "Επεξεργασία" 0
menuText G CrosstabEditEvent "Διοργάνωση" 0
menuText G CrosstabEditSite "Τοποθεσία" 0
menuText G CrosstabEditDate "Ημερομηνία" 0
menuText G CrosstabOpt "Εμφάνιση" 0
menuText G CrosstabOptAll "All-play-all" 0
menuText G CrosstabOptSwiss "Ελβετικού τύπου" 0
menuText G CrosstabOptKnockout "Knockout" 0
menuText G CrosstabOptAuto "Αυτόματα" 1
menuText G CrosstabOptAges "Ηλικία σε έτη" 8
menuText G CrosstabOptNats "Εθνικότητες" 0
menuText G CrosstabOptRatings "Βαθμολογίες" 0
menuText G CrosstabOptTitles "Τίτλοι" 0
menuText G CrosstabOptBreaks "Βαθμολογίες μη δεσμευτικού συστήματος" 4
menuText G CrosstabOptDeleted "Να περιλαμβάνονται διεγραμμένες παρτίδες" 8
menuText G CrosstabOptColors "Χρώματα (Πίνακες Ελβετικού τύπου μόνον)" 0
menuText G CrosstabOptColumnNumbers "Αριθμημένες στήλες (πίνακες τύπου All-play-all μόνον)" 2
menuText G CrosstabOptGroup "Ομαδοποίηση βαθμολογιών" 0
menuText G CrosstabSort "Ταξινόμηση" 0
menuText G CrosstabSortName "Όνομα" 0
menuText G CrosstabSortRating "Βαθμολόγηση" 0
menuText G CrosstabSortScore "Επίδοση" 0
menuText G CrosstabColor "Χρώμα" 0
menuText G CrosstabColorPlain "Απλό κείμενο" 0
menuText G CrosstabColorHyper "Υπερκείμενο" 0
menuText G CrosstabHelp "Βοήθεια" 0
menuText G CrosstabHelpCross "Βοήθεια συγκριτικών πινάκων" 0
menuText G CrosstabHelpIndex "Κατάλογος βοήθειας" 0
translate G SetFilter {Καθορισμός φίλτρου}
translate G AddToFilter {Προσθήκη σε φίλτρο}
translate G Swiss {Ελβετικού τύπου}
translate G Category {Κατηγορία}

# Opening report window menus:
menuText G OprepFile "Αρχείο" 0
menuText G OprepFileText "Εκτύπωση σε αρχείο κειμένου..." 9
menuText G OprepFileHtml "Εκτύπωση σε αρχείο HTML..." 9
menuText G OprepFileLaTeX "Εκτύπωση σε αρχείο LaTeX..." 9
menuText G OprepFileOptions "Επιλογές..." 0
menuText G OprepFileClose "Κλείσιμο παραθύρου αναφορών" 0
menuText G OprepFavorites "Προτιμώμενα" 1
menuText G OprepFavoritesAdd "Προσθήκη αναφοράς..." 0
menuText G OprepFavoritesEdit "Επεξεργασία προτιμήσεων αναφορών..." 0
menuText G OprepFavoritesGenerate "Δημιουργία αναφορών..." 0
menuText G OprepHelp "Βοήθεια" 0
menuText G OprepHelpReport "Άνοιγμα της βοήθειας για αναφορές" 0
menuText G OprepHelpIndex "Κατάλογος βοήθειας" 0

# Repertoire editor:
menuText G RepFile "Αρχείο" 0
menuText G RepFileNew "Νέο" 0
menuText G RepFileOpen "Άνοιγμα..." 0
menuText G RepFileSave "Αποθήκευση..." 0
menuText G RepFileSaveAs "Αποθήκευση ως..." 5
menuText G RepFileClose "Κλείσιμο παραθύρου" 0
menuText G RepEdit "Επεξεργασία" 0
menuText G RepEditGroup "Προσθήκη ομάδας" 4
menuText G RepEditInclude "Προσθήκη Περιέχεται Γραμμή" 4
menuText G RepEditExclude "Προσθήκη Εξαιρείται Γραμμή" 4
menuText G RepView "Εμφάνιση" 0
menuText G RepViewExpand "Ανάπτυξη όλων των ομάδων" 0
menuText G RepViewCollapse "Σύμπτηξη όλων των ομάδων" 0
menuText G RepSearch "Αναζήτηση" 0
menuText G RepSearchAll "Όλο το ρεπερτόριο..." 0
menuText G RepSearchDisplayed "Μόνον γραμμές που εμφανίζονται..." 0
menuText G RepHelp "Βοήθεια" 0
menuText G RepHelpRep "Βοήθεια ρεπερτορίου" 0
menuText G RepHelpIndex "Κατάλογος βοήθειας" 0
translate G RepSearch "Αναζήτηση ρεπερτορίου"
translate G RepIncludedLines "γραμμές που περιλαμβάνονται"
translate G RepExcludedLines "γραμμές που εξαιρούνται"
translate G RepCloseDialog {This repertoire has unsaved changes.

Do you really want to continue and discard the changes you have made?
}

# Header search:
translate G HeaderSearch {Αναζήτηση κεφαλίδας}
translate G EndSideToMove {Η πλευρά που έχει την κίνηση στο τέλος της παρτίδας}
translate G GamesWithNoECO {Παρτίδες χωρίς ECO;}
translate G GameLength {Μήκος παρτίδας}
translate G FindGamesWith {Εύρεση παρτίδων με σημαίες}
translate G StdStart {Μη πρότυπη έναρξη}
translate G Promotions {Προαγωγές}
translate G Comments {Σχόλια}
translate G Variations {Βαριάντες}
translate G Annotations {Υπομνηματισμοί}
translate G DeleteFlag {Διαγραφή σημαιών}
translate G WhiteOpFlag {Άνγοιγμα Λευκών}
translate G BlackOpFlag {Άνοιγμα Μαύρων}
translate G MiddlegameFlag {Μέσον παρτίδας}
translate G EndgameFlag {Φινάλε}
translate G NoveltyFlag {Νεοτερισμός}
translate G PawnFlag {Πιονοδομή}
translate G TacticsFlag {Τακτική}
translate G QsideFlag {Παιχνίδι στην πλευρά της Βασίλισσας}
translate G KsideFlag {Παιχνίδι στην πλευρά του Βασιλιά}
translate G BrilliancyFlag {Ευφυές}
translate G BlunderFlag {Σφάλμα}
translate G UserFlag {Χρήστης}
translate G PgnContains {Το PGN περιέχει κείμενο}
translate G Annotator {Υπομνηματιστής}
translate G Cmnts {Μόνον υπομνηματισμένες παρτίδες}

# Game list window:
translate G GlistNumber {Αριθμός}
translate G GlistWhite {Λευκά}
translate G GlistBlack {Μαύρα}
translate G GlistWElo {Elo Λευκών}
translate G GlistBElo {Elo Μαύρων}
translate G GlistEvent {Διοργάνωση}
translate G GlistSite {Τοποθεσία}
translate G GlistRound {Γύρος}
translate G GlistDate {Ημερομηνία}
translate G GlistYear {Έτος}
translate G GlistEDate {Ημερομηνία Διοργάνωσης}
translate G GlistResult {Αποτέλεσμα}
translate G GlistLength {Μήκος}
translate G GlistCountry {Χώρα}
translate G GlistECO {ECO}
translate G GlistOpening {Άνοιγμα}
translate G GlistEndMaterial {Υλικό φινάλε}
translate G GlistDeleted {Διεγραμμένα}
translate G GlistFlags {Σημαίες}
translate G GlistVars {Βαριάντες}
translate G GlistComments {Σχόλια}
translate G GlistAnnos {Υπομηματισμοί}
translate G GlistStart {Έναρξη}
translate G GlistGameNumber {Αριθμός παρτίδας}
# ====== TODO To be translated ======
translate G GlistAverageElo {Average Elo}
# ====== TODO To be translated ======
translate G GlistRating {Rating}
translate G GlistFindText {Εύρεση κειμένου}
translate G GlistMoveField {Μετακίνηση}
translate G GlistEditField {Προσαρμογή}
translate G GlistAddField {Προσθήκη}
translate G GlistDeleteField {Απομάκρυνση}
translate G GlistWidth {Πλάτος}
translate G GlistAlign {Ευθυγραμμιση}
# ====== TODO To be translated ======
translate G GlistAlignL {Align: left}
# ====== TODO To be translated ======
translate G GlistAlignR {Align: right}
# ====== TODO To be translated ======
translate G GlistAlignC {Align: center}
translate G GlistColor {Χρώμα}
translate G GlistSep {Διαχωριστής}
# ====== TODO To be translated ======
translate G GlistCurrentSep {-- Current --}
# ====== TODO To be translated ======
translate G GlistNewSort {New}
# ====== TODO To be translated ======
translate G GlistAddToSort {Add}

# ====== TODO To be translated ======
translate G GsortSort {Sort...}
# ====== TODO To be translated ======
translate G GsortDate {Date}
# ====== TODO To be translated ======
translate G GsortYear {Year}
# ====== TODO To be translated ======
translate G GsortEvent {Event}
# ====== TODO To be translated ======
translate G GsortSite {Site}
# ====== TODO To be translated ======
translate G GsortRound {Round}
# ====== TODO To be translated ======
translate G GsortWhiteName {White Name}
# ====== TODO To be translated ======
translate G GsortBlackName {Black Name}
# ====== TODO To be translated ======
translate G GsortECO {ECO}
# ====== TODO To be translated ======
translate G GsortResult {Result}
# ====== TODO To be translated ======
translate G GsortMoveCount {Move Count}
# ====== TODO To be translated ======
translate G GsortAverageElo {Average Elo}
# ====== TODO To be translated ======
translate G GsortCountry {Country}
# ====== TODO To be translated ======
translate G GsortDeleted {Deleted}
# ====== TODO To be translated ======
translate G GsortEventDate {Event Date}
# ====== TODO To be translated ======
translate G GsortWhiteElo {White Elo}
# ====== TODO To be translated ======
translate G GsortBlackElo {Black Elo}
# ====== TODO To be translated ======
translate G GsortComments {Comments}
# ====== TODO To be translated ======
translate G GsortVariations {Variations}
# ====== TODO To be translated ======
translate G GsortNAGs {NAGs}
# ====== TODO To be translated ======
translate G GsortAscending {Ascending}
# ====== TODO To be translated ======
translate G GsortDescending {Descending}
# ====== TODO To be translated ======
translate G GsortAdd {Add}
# ====== TODO To be translated ======
translate G GsortStore {Store}
# ====== TODO To be translated ======
translate G GsortLoad {Load}

# menu shown with right mouse button down on game list. 
translate G GlistRemoveThisGameFromFilter  {Απομάκρυνση αυτής της παρτίδας από το φίλτρο}
translate G GlistRemoveGameAndAboveFromFilter  {Απομάκρυνση παρτίδας (και όλων των από πάνω) από το φίλτρο}
translate G GlistRemoveGameAndBelowFromFilter  {Απομάκρυνση παρτίδας (και όλων των από κάτω) από το φίλτρο}
translate G GlistDeleteGame {Διαγραφή/ανάκτηση αυτής της παρτίδας} 
translate G GlistDeleteAllGames {Διαγραφή όλων των παρτίδων από το φίλτρο} 
translate G GlistUndeleteAllGames {Ανάκτηση όλων των παρτίδων από το φίλτρο}  
translate G GlistMergeGameInBase {Συνένωση παρτίδας σε άλλη βάση δεδομένων}

# Maintenance window:
translate G DatabaseName {Όνομα βάσης δεδομένων:}
translate G TypeIcon {Εικόνα τύπου:}
translate G NumOfGames {Παρτίδες:}
translate G NumDeletedGames {Διεγραμμένες παρτίδες:}
translate G NumFilterGames {Παρτίδες στο φίλτρο:}
translate G YearRange {Εύρος έτους:}
translate G RatingRange {Εύρος βαθμολόγησης:}
translate G Description {Περιγραφή}
translate G Flag {Σημαία}
translate G CustomFlags {Προσαρμοζόμενες σημαίες}
translate G DeleteCurrent {Διαγραφή τρέχουσας παρτίδας}
translate G DeleteFilter {Διαγραφή φιλτραρισμένων παρτίδων}
translate G DeleteAll {Διαγραφή όλων των παρτίδων}
translate G UndeleteCurrent {Ανάκτηση τρέχουσας παρτίδας}
translate G UndeleteFilter {Ανάκτηση φιλτραρισμένων παρτίδων}
translate G UndeleteAll {Ανάκτηση όλων των παρτίδων}
translate G DeleteTwins {Διαγραφή δίδυμων παρτίδων}
translate G MarkCurrent {Μαρκάρισμα τρέχουσας παρτίδας}
translate G MarkFilter {Μαρκάρισμα φιλτραρισμένων παρτίδων}
translate G MarkAll {Μαρκάρισμα όλων των παρτίδων}
translate G UnmarkCurrent {Ξεμαρκάρισμα τρέχουσας παρτίδας}
translate G UnmarkFilter {Ξεμαρκάρισμα φιλτραρισμένων παρτίδων}
translate G UnmarkAll {Ξεμαρκάρισμα όλων των παρτίδων}
translate G Spellchecking {Έλεγχος ορθογραφίας}
translate G Players {Παίκτες}
translate G Events {Διοργανώσεις}
translate G Sites {Τοποθεσίες}
translate G Rounds {Γύροι}
translate G DatabaseOps {Χειρισμοί βάσης δεδομένων}
translate G ReclassifyGames {Ταξινόμηση παρτίδων κατά ECO}
translate G CompactDatabase {Συμπίεση βάσης δεδομένων}
translate G SortDatabase {Ταξινόμηση βάσης δεδομένων}
translate G AddEloRatings {Προσθήκη βαθμολογίας κατά Elo}
translate G AutoloadGame {Αυτόματη φόρτωση αριθμού παρτίδας}
translate G StripTags {Απομάκρυνση ετικετών ΡGN}
translate G StripTag {Απομάκρυνση ετικετών}
translate G Cleaner {Καθαρισμός}
translate G CleanerHelp {
Ο Καθαρισμός του Scid θα εφαρμόσει στην τρέχουσα βάση δεδομένων όλες τις ενέργειες συντήρησης που επιλέξατε από την λίστα που ακολουθεί.

Οι τρέχουσες ρυθμίσεις της ταξινόμησης κατά ECO και η διαγραφή δίδυμων παρτίδων θα εφαρμοσθούν εφόσον επιλέξατε αυτές τις ενέργειες.
}
translate G CleanerConfirm {
Όταν ο Καθαρισμός ξεκινήσει, δεν μπορείτε να τον σταματήσετε!

Η διαδικασία αυτή ίσως διαρκέσει αρκετό χρόνο αν η βάση δεδομένων είναι μεγάλη, αναλόγως των ενεργειών που έχετε επιλέξει και των ρυθμίσεών τους.

Είστε βέβαιος/αιη ότι θέλετε να ξεκινήσουν οι ενέργειες συντήρησης που επιλέξατε;
}
# Twinchecker
translate G TwinCheckUndelete {to flip; "u" undeletes both)}
translate G TwinCheckprevPair {Προηγούμενο ζεύγος}
translate G TwinChecknextPair {Επόμενο ζεύγος}
translate G TwinChecker {Scid: έλεγχος δίδυμων παρτίδων}
translate G TwinCheckTournament {Παρτίδες προκριματικού:}
translate G TwinCheckNoTwin {Δεν υπάρχουν δίδυμα }
translate G TwinCheckNoTwinfound {Δεν εντοπίστηκαν δίδυμα για την παρτίδα αυτή.\nΓια να δείτε τις δίδυμες παρτίδες χρησιμοποιώντας το παράθυρο αυτό, πρέπει πρώτα να χρησιμοποιήσετε την λειτουργία "Διαγραφή δίδυμων παρτίδων...". }
translate G TwinCheckTag {Κοινή χρήση ετικετών...}
translate G TwinCheckFound1 {Το Scid βρήκε $result δίδυμες παρτίδες}
translate G TwinCheckFound2 { και έθεσε γι' αυτές σημαίες διαγραφής}
translate G TwinCheckNoDelete {Σε αυτή τη βάση δεδομένων δεν υπάρχουν παρτίδες προς διαγραφή.}
translate G TwinCriteria1 {Οι ρυθμίσεις σας για την αναζήτηση δίδυμων παρτίδων πιθανόν να προκαλούν το μαρκάρισμα  μη-δίδυμων παρτίδων ως δίδυμες.}
translate G TwinCriteria2 {Αν έχετε επιλέξει "Όχι" για τις "όμοιες κινήσεις", συνιστούμε να επιλέξετε "Ναι" στις ρυθμίσεις για χρώματα, διοργανώσεις, τοποθεσίες, έτος και μήνες.\nΘέλετε να συνεχίσετε και να διαγραφούν οι δίδυμες;}
translate G TwinCriteria3 {Συνιστούμε να επιλέξετε "Ναι" τουλάχιστον για δύο ρυθμίσεις "ίδια τοποθεσία", "ίδιος γύρος" και "ίδιο έτος".\nΘέλετε να συνεχίσετε και να διαγραφούν οι δίδυμες;}
translate G TwinCriteriaConfirm {Scid: Επιβεβαίωση ρυθμίσεων διδύμων}
translate G TwinChangeTag "Αλλαγή των ακόλουθων ετικετών παρτίδας:\n\n"
translate G AllocRatingDescription "Η εντολή αυτή θα χρησιμοποιήσει το τρέχον αρχείο ορθογραφικού ελέγχου για να προσθέσει βαθμολογίες Elo σε αυτή την βάση δεδομένων. Αν ο παίκτης/παίκτρια δεν έχει τρέχουσα βαθμολογία αλλά η βαθμολογία του/της την στιγμή της παρτίδας εμφανίζεται στο αρχείο ορθογραφικού ελέγχου, αυτή η βαθμολογία θα προστεθεί."
translate G RatingOverride "Να αντικατασταθούν οι υπάρχουσες μη-μηδενικές βαθμολογίες;"
translate G AddRatings "Προσθήκη βαθμολογίας στον/στην:"
translate G AddedRatings {Τ Scid πρόσθεσε $r βαθμούς Elo σε $g παρτίδες.}

#Bookmark editor
translate G NewSubmenu "Νέο υπομενού"

# Comment editor:
translate G AnnotationSymbols  {Σύμβολα υπομνηματισμούς:}
translate G Comment {Σχόλιο:}
translate G InsertMark {Εισαγωγή σημαδιού}
translate G InsertMarkHelp {
Εισαγωγή/απομάκρυνμση σημαδιού: Επιλέξτε χρώμα, είδος, τετράγωνο.
Εισαγωγή/απομάκρυνση βέλους: Δεξί πάτημα δύο τετράγνω.
}

# Nag buttons in comment editor:
translate G GoodMove {Καλή κίνηση}
translate G PoorMove {Φτωχή κίνηση}
translate G ExcellentMove {Εξαίρετη κίνηση}
translate G Blunder {Σφάλμα}
translate G InterestingMove {Ενδιαφέρουσα κίνηση}
translate G DubiousMove {Αμφίβολη κίνηση}
translate G WhiteDecisiveAdvantage {Τα Λευκά έχουν αποφασιστικό πλεονέκτημα}
translate G BlackDecisiveAdvantage {Τα Μαύρα έχουν αποφασιστικό πλεονέκτημα}
translate G WhiteClearAdvantage {Τα Λευκά έχουν σαφές προβάδισμα}
translate G BlackClearAdvantage {Τα Μαύρα έχουν σαφές προβάδισμα}
translate G WhiteSlightAdvantage {Τα Λευκά έχουν μικρό πλεονέκτημα}
translate G BlackSlightAdvantage {Τα Μαύρα έχουν μικρό πλεονέκτημα}
translate G Equality {Ισότητα}
translate G Unclear {Ασαφής}
translate G Diagram {Διάγραμμα}

# Board search:
translate G BoardSearch {Αναζήτηση σκακιέρας}
translate G FilterOperation {Χειρισμός για το τρέχον φίλτρο:}
translate G FilterAnd {AND (Περιορισμός φίλτρου)}
translate G FilterOr {OR (Προσθήκη στο φίλτρο)}
translate G FilterIgnore {IGNORE (Επαναφορά φίλτρου)}
translate G SearchType {Ειδος αναζήτησης:}
translate G SearchBoardExact {Ακριβής θέση (όλα τα κομμάτια στα ίδια τετράγωνα)}
translate G SearchBoardPawns {Πιόνια (ίδιο υλικό, όλα τα πιόνια στα ίδια τετράγωνα)}
translate G SearchBoardFiles {Γραμμή (ίδιο υλικό, όλα τα πιόνια στις ίδιες γραμμές)}
translate G SearchBoardAny {Οπουδήποτε (ίδιο υλικό, πιόνια και κομμάτια οπουδήποτε)}
translate G SearchInRefDatabase {Αναζήτηση στην βάση αναφοράς}
translate G LookInVars {Αναζήτηση στις βαριάντες}

# Material search:
translate G MaterialSearch {Αναζήτηση υλικού}
translate G Material {Υλικό}
translate G Patterns {Διάταξη}
translate G Zero {Μηδέν}
translate G Any {Ό,τιδήποτε}
translate G CurrentBoard {Τρέχουσα σκακιέρα}
translate G CommonEndings {Κοινά φινάλε}
translate G CommonPatterns {Κοινές διατάξεις}
translate G MaterialDiff {Διαφορά υλικού}
translate G squares {τετράγωνα}
translate G SameColor {Ιδίου χρώματος}
translate G OppColor {Αντίθετου χρώματος}
translate G Either {Οποιοδήποτε}
translate G MoveNumberRange {Εύρος αριθμού κίνησης}
translate G MatchForAtLeast {Να ταιριάζουνβ τουλάχιστον}
translate G HalfMoves {μισές κινήσεις}

# Common endings in material search:
translate G EndingPawns {Φινάλε πιονιών}
translate G EndingRookVsPawns {Πύργων εναντίον πιονιών}
translate G EndingRookPawnVsRook {Πύργος και 1 Πύργος εναντίον πύργου}
translate G EndingRookPawnsVsRook {Πύργος και πιόνι(α) εναντίον Πύργου}
translate G EndingRooks {Φινάλε Πύργου εναντίον Πύργου}
translate G EndingRooksPassedA {Φινάλε Πύργου εναντίον Πύργου με προχωρημένο α-πιόνι}
translate G EndingRooksDouble {Φινάλε διπλού Πύργου}
translate G EndingBishops {Φινάλε Αξιωματικού εναντίον Αξιωματικού}
translate G EndingBishopVsKnight {Φινάλε Αξιωματικού εναντίον Ίππου}
translate G EndingKnights {Φινάλε Ίππου εναντίον Ίππου}
translate G EndingQueens {Φινάλε Βασίλισσας εναντίον Βασίλισσας}
translate G EndingQueenPawnVsQueen {Βασίλισσα και 1 Πιόνι εναντίον Βασίλισσας}
translate G BishopPairVsKnightPair {Μέσον παρτίδας με δύο Αξιωματικούς εναντίον δυο Αξιωματικών}

# Common patterns in material search:
translate G PatternWhiteIQP {Λευκό ΑΠΒ}
translate G PatternWhiteIQPBreakE6 {Λευκό ΑΠΒ: διείσδηση d4-d5 έναντι e6}
translate G PatternWhiteIQPBreakC6 {Λευκό ΑΠΒ: διείσδησηW d4-d5 έναντι c6}
translate G PatternBlackIQP {Μαύρο ΑΠΒ}
translate G PatternWhiteBlackIQP {Λευκό ΑΠΒ εναντίον Μαύρου ΑΠΒ}
translate G PatternCoupleC3D4 {Ζεύγος Λευκών πιονιών c3+d4}
translate G PatternHangingC5D5 {Μαύρα κρεμασμένα Πιόνια στα c5 και d5}
translate G PatternMaroczy {Κέντρο Maroczy (με Πιόνια στα c4 και e4)}
translate G PatternRookSacC3 {Θυσία Πύργου στο c3}
translate G PatternKc1Kg8 {O-O-O εναντίον O-O (Kc1 εναντίον Kg8)}
translate G PatternKg1Kc8 {O-O εναντίον O-O-O (Kg1 εναντίον Kc8)}
translate G PatternLightFian {Φιανκέττο λευκού τετραγώνου (Αξιωματικός-g2 εναντίον Αξιωματικού-b7)}
translate G PatternDarkFian {Φιανκέττο μαύρου τετραγώνου (Αξιωματικός-b2 εναντίον Αξιωματικού-g7)}
translate G PatternFourFian {Τέσσερα Φιανκέττα (Αξιωματικοί στα b2,g2,b7,g7)}

# Game saving:
translate G Today {Σήμερα}
translate G ClassifyGame {Ταξινόμηση παρτίδας}

# Setup position:
translate G EmptyBoard {Κενή σκακιέρα}
translate G InitialBoard {Αρχική σκακιέρα}
translate G SideToMove {Πλευρά που παίζει}
translate G MoveNumber {Αριθμός κίνησης}
translate G Castling {Ροκέ}
translate G EnPassantFile {Γραμμή en passant}
translate G ClearFen {Καθαρισμός FEN}
translate G PasteFen {Επικόληση FEN}

translate G SaveAndContinue {Αποθήκευση και συνέχιση}
translate G DiscardChangesAndContinue {Ακύρωση αλλαγών \nκαι συνέχιση}
translate G GoBack {Προς τα πίσω}

# Replace move dialog:
translate G ReplaceMove {Αντικατάσταση κίνησης}
translate G AddNewVar {Προσθήκη νέας βαριάντας}
translate G NewMainLine {Νέα κύρια γραμμή}
translate G ReplaceMoveMessage {Υπάρχει ήδη μια κίνηση εδώ.

Μπορείτε να την αντικαταστήσετε ακυρώνοντας όλες τις κινήσεις μετά από αυτήν ή να προσθέσετε την κίνησή σας ως νέα βαριάντα.

(Μπορείτε να αποφύγετε την εμφάνιση αυτού του μηνύματος στο μέλλον απενεργοποιώντας την επιλογή "Ερώτηση πριν την αντικατάσταση κίνησης" από το μενού Επιλογές:Κινήσεις.)}

# Make database read-only dialog:
translate G ReadOnlyDialog {Αν δηλώσετε αυτή την βάση δεδομένεν μόνον για ανάγνωση, δεν θα επιτρέπονται οι αλλαγές.
Δεν θα μπορούν να αποθηκευθούν ή να αντικατασταθούν παρτίδες και δεν θα μπορούν να αντικατασταθούν οι σημαίες διαγραφής.
Κάθε ταξινόμηση ή αποτελέσματα ταξινομημένα κατά ΕCO, θα είναι προσωρινά.

Μπορείτε εύκολα να δηλώσετε την βάση δεδομένων και πάλι ως εγγράψιμη, κλείνοντας και ανοίγοντάς την εκ νέου.

Θέλετε στ' αλήθεια να γίνει αυτή η βάση μόνον για ανάγνωση;}

# Clear game dialog:
translate G ClearGameDialog {Η παρτίδα αυτή έχει αντικατασταθεί.

Θέλετε στ' αλήθεια να συνεχίσετε και να ακυρώσετε τις αλλαγές που κάνατε σε αυτήν;
}

# Exit dialog:
translate G ExitDialog {Θέλετε στ' αλήθεια να βγείτε από το Scid;}
translate G ExitUnsaved {Οι βάσεις δεδομένων που ακολουθούν έχουν μη αποθηκευμένες αλλαγές παρτίδων. Αν βγείτε τώρα οι αλλαγές αυτές θα χαθούν.}

# Import window:
translate G PasteCurrentGame {Επικόλληση τρέχουσας παρτίδας}
translate G ImportHelp1 {Εισάγετε ή επικολλήστε παρτίδα σε μορφη PGN στο παραπάνω πλαίσιο.}
translate G ImportHelp2 {Εδώ θα εμφανίζεται οποιοδήποτε σφάλμα κατά την εισαγωγή παρτίδας.}
translate G OverwriteExistingMoves {Αντικατάσταση υπαρχόντων κινήσεων;}

# ECO Browser:
translate G ECOAllSections {όλες οι ενότητες ECO}
translate G ECOSection {ενότητας ECO}
translate G ECOSummary {Περίληψη της}
translate G ECOFrequency {Συχνότητα υποκωδίκων για}

# Opening Report:
translate G OprepTitle {Έκθεση ανοίγματος}
translate G OprepReport {Έκθεση/αναφορά}
translate G OprepGenerated {Δημιουργήθηκε από τον/την}
translate G OprepStatsHist {Στατιστικά και Ιστορικό}
translate G OprepStats {Στατιστικά}
translate G OprepStatAll {Όλες οι παρτίδες της αναφοράς}
translate G OprepStatBoth {Βαθμολογήθηκαν}
translate G OprepStatSince {Από}
translate G OprepOldest {Παλαιότερες παρτίδες}
translate G OprepNewest {Νεότερες παρτίδες}
translate G OprepPopular {Τρέχουσα δημοτικότητα}
translate G OprepFreqAll {Συχνότητα σε όλα τα χρόνια:   }
translate G OprepFreq1   {Από το έτος  1 έως σήμερα: }
translate G OprepFreq5   {Από το έτος  5 έως σήμερα: }
translate G OprepFreq10  {Από το έτος 10 έως σήμερα: }
translate G OprepEvery {μια φορά κάθε %u παρτίδες}
translate G OprepUp {%u%s έτη και άνω}
translate G OprepDown {%u%s έτη και κάτω}
translate G OprepSame {χωρίς αλλαγή σε όλα τα έτη}
translate G OprepMostFrequent {Πιο συχνοί παίκτες}
translate G OprepMostFrequentOpponents {Πιο συχνοί αντίπαλοι}
translate G OprepRatingsPerf {Βαθμολογήσεις και επιδόσεις}
translate G OprepAvgPerf {Μέσες βαθμολογήσεις και επιδόσεις}
translate G OprepWRating {Βαθμολόγηση Λευκών}
translate G OprepBRating {Βαθμολόγηση Μαύρων}
translate G OprepWPerf {Επίδοση Λευκών}
translate G OprepBPerf {Επίδοση Μαύρων}
translate G OprepHighRating {Παρτίδες με υψηλότερη μέση βαθμολόγηση}
translate G OprepTrends {Τάσεις αποτελεσμάτων}
translate G OprepResults {Μήκη και συχνότητες αποτελεσμάτων}
translate G OprepLength {Μήκος παρτίδας}
translate G OprepFrequency {Συχνότητα}
translate G OprepWWins {Τα Λευκά κερδίζουν: }
translate G OprepBWins {Τα Μαύρα κερδίζουν: }
translate G OprepDraws {Ισοπαλίες:      }
translate G OprepWholeDB {ολόκληρη η βάση δεδομένων}
translate G OprepShortest {Οι συντομότερες νίκες}
translate G OprepMovesThemes {Κινήσεις και Θέματα}
translate G OprepMoveOrders {Σειρές κινήσεων που καταλήγουν στην θέση}
translate G OprepMoveOrdersOne \
  {Υπάρχει μόνο μια σειρά κινήσεων που καταλήγει στην θέση αυτή:}
translate G OprepMoveOrdersAll \
  {Υπάρχουν %u σειρές κινήσεων που καταλήγουν στην θέση αυτή:}
translate G OprepMoveOrdersMany \
  {Υπάρχουν %u σειρές κινήσεων που καταλήγουν στην θέση αυτή. Οι πρώτες %u είναι:}
translate G OprepMovesFrom {Κινήσεις από την θέση}
translate G OprepMostFrequentEcoCodes {Συχνότεροι κωδικοί ECO}
translate G OprepThemes {Θέματα θέσης}
translate G OprepThemeDescription {Συχνότητα θεμάτων κατά τις πρώτες %u κινήσεις κάθε παρτίδας}
translate G OprepThemeSameCastling {Ομόπλευρα ροκέ}
translate G OprepThemeOppCastling {Αντίθετα ροκέ}
translate G OprepThemeNoCastling {Και οι δυο Βασιλιάδες χωρίς ροκέ}
translate G OprepThemeKPawnStorm {Επίθεση πιονιών Βασιλιά}
translate G OprepThemeQueenswap {Ανταλλαγή Βασιλισσών}
translate G OprepThemeWIQP {Λευκό απομονωμένο πιόνι Βασίλισσας}
translate G OprepThemeBIQP {Μαύρο απομονωμένο πιόνι Βασίλισσας}
translate G OprepThemeWP567 {Λευκό πιόνι στην 5/6/7η σειρά}
translate G OprepThemeBP234 {Μαύρο πιόνι στην 2/3/4η σειρά}
translate G OprepThemeOpenCDE {Ανοικτή Open c/d/e στήλη}
translate G OprepTheme1BishopPair {Μόνον η μια πλευρά διαθέτει ζεύγος Αξιωματικών}
translate G OprepEndgames {Φινάλε}
translate G OprepReportGames {Αναφορά παρτίδων}
translate G OprepAllGames    {Όλες οι παρτίδες}
translate G OprepEndClass {Υλικό στο τέλος κάθε παρτίδας}
translate G OprepTheoryTable {Πίνακας ανοιγμάτων}
translate G OprepTableComment {Δημιουργήθηκε από τις %u με την υψηλότερη βαθμολογία.}
translate G OprepExtraMoves {Επιπλέον κινήσεις στις σημειώσεις του πίνακα ανοιγμάτων}
translate G OprepMaxGames {Μέγιστος αριθμός παρτίδων στον πίνακα ανοιγμάτων}
translate G OprepViewHTML {Εμφάνιση HTML}
translate G OprepViewLaTeX {Εμφάνιση LaTeX}

# Player Report:
translate G PReportTitle {Έκθεση παίκτη}
translate G PReportColorWhite {με τα Λευκά κομμάτια}
translate G PReportColorBlack {με τα Μαύρα κομμάτια}
translate G PReportMoves {μετά από %s}
translate G PReportOpenings {Ανοίγματα}
translate G PReportClipbase {Διαγραφή της προσωρινής μνήμης clipbase και αντιγραφή σε αυτήν των παρτίδων που ταιριάζουν}

# Piece Tracker window:
translate G TrackerSelectSingle {Το αριστερό πλήκτρο του ποντικιού επιλέγει το κομμάτι αυτό.}
translate G TrackerSelectPair {Το αριστερό πλήκτρο του ποντικιού επιλέγει το κομμάτι αυτό, το δεξιό πλήκτρο επιλέγει το ταίρι του.}
translate G TrackerSelectPawn {Το αριστερό πλήκτρο επιλέγει το πιόνι αυτό, το δεξιό πλήκτρο επιλέγει και τα 8 πιόνια.}
translate G TrackerStat {Στατιστικά}
translate G TrackerGames {% παρτίδες με κίνηση στο τετράγωνο}
translate G TrackerTime {% χρόνο σε κάθε τετράγωνο}
translate G TrackerMoves {Κινήσεις}
translate G TrackerMovesStart {Εισάγετε τον αριθμό της κίνησης από την οποία θα ξεκινήσει η ανίχνευση.}
translate G TrackerMovesStop {Εισάγετε τον αριθμό της κίνησης στην οποία θα σταματήσει η ανίχνευση.}

# Game selection dialogs:
translate G SelectAllGames {Όλες οι παρτίδες της βάσης δεδομένων}
translate G SelectFilterGames {Μόνο παρτίδες στο φίλτρο}
translate G SelectTournamentGames {Μόνο παρτίδες του προκριματικού}
translate G SelectOlderGames {Μόνο παλαιότερες παρτίδες}

# Delete Twins window:
translate G TwinsNote {Για να είναι δίδυμες, δυο παρτίδες πρέπει να έχουν τουλάχιστον τους ίδιους παίκτες και τα κριτήρια που θα ορίσετε πιο κάτω. Όταν εντοπίζεται κάποιο ζεύγος δίδυμων, η μικρότερης διάρκειας παρτίδα διαγράφεται. Συμβουλή: πρέπει να ελέγχετε την ορθογραφία της βάσης δεδομένων πριν διαγράψετε δίδυμες παρτίδες, διότι βελτιώνει τον εντοπισμό τους.}
translate G TwinsCriteria {Κριτήρια: Οι δίδυμες παρτίδες πρέπει να διαθέτουν...}
translate G TwinsWhich {Εξέταση ποιάς παρτίδας}
translate G TwinsColors {Με παίκτη ιδίου χρώματος;}
translate G TwinsEvent {Με ίδια διοργάνωση;}
translate G TwinsSite {Με ίδια τοποθεσία;}
translate G TwinsRound {Με ίδιο γύρο;}
translate G TwinsYear {Με ίδιο έτος;}
translate G TwinsMonth {Με ίδιο μήνα;}
translate G TwinsDay {Με ίδια ημέρα;}
translate G TwinsResult {Με ίδιο αποτέλεσμα;}
translate G TwinsECO {Με ίδιο κωδικό ECO;}
translate G TwinsMoves {Με ίδιες κινήσεις}
translate G TwinsPlayers {Σύγκριση ονομάτων παικτών:}
translate G TwinsPlayersExact {Ταιριάζουν ακριβώς}
translate G TwinsPlayersPrefix {Μόνο τα 4 πρώτα γράμματα}
translate G TwinsWhen {Όταν διαγράφονται δίδυμες παρτίδες}
translate G TwinsSkipShort {Να αγνοούνται όλες οι παρτίδες με μήκος μικρότερο των 5 κινήσεων;}
translate G TwinsUndelete {Πρώτα να διαγραφούν όλες οι παρτίδες;}
translate G TwinsSetFilter {Να μπουν φίλτρα σε όλες τις διαγραμμένες δίδυμες παρτίδες;}
translate G TwinsComments {Πάντοτε διατήρηση των παρτίδων με σχόλια;}
translate G TwinsVars {Πάντοτε διατήρηση των παρτίδων με βαριάντες;}
translate G TwinsDeleteWhich {Διαγραφή της παρτίδας:}
translate G TwinsDeleteShorter {Συντομότερη παρτίδα}
translate G TwinsDeleteOlder {Ο μικρότερος αριθμός παρτίδας}
translate G TwinsDeleteNewer {Ο μεγαλύτερος αριθμός παρτίδας}
translate G TwinsDelete {Διαγραφή παρτίδας}

# Name editor window:
translate G NameEditType {Τύπος του προς επεξεργασία ονόματος}
translate G NameEditSelect {Παρτίδες για επεξεργασία}
translate G NameEditReplace {Αντικατάσταση}
translate G NameEditWith {με}
translate G NameEditMatches {Ταιριάσματα: Για επιλογή, πατήστε Ctrl+1 έως Ctrl+9}
translate G Cleaner {Καθαρισμός}
translate G CleanerHelp {
Ο Καθαρισμός του Scid θα εφαρμόσει στην τρέχουσα βάση δεδομένων όλες τις ενέργειες συντήρησης που επιλέξατε από την λίστα που ακολουθεί.

Οι τρέχουσες ρυθμίσεις της ταξινόμησης κατά ECO και η διαγραφή δίδυμων παρτίδων θα εφαρμοσθούν εφόσον επιλέξατε αυτές τις ενέργειες.
}
translate G CleanerConfirm {
Όταν ο Καθαρισμός ξεκινήσει, δεν μπορείτε να τον σταματήσετε!

Η διαδικασία αυτή ίσως διαρκέσει αρκετό χρόνο αν η βάση δεδομένων είναι μεγάλη, αναλόγως των ενεργειών που έχετε επιλέξει και των ρυθμίσεών τους.

Είστε βέβαιος/αιη ότι θέλετε να ξεκινήσουν οι ενέργειες συντήρησης που επιλέξατε;
}
# Twinchecker
translate G TwinCheckUndelete {to flip; "u" undeletes both)}
translate G TwinCheckprevPair {Προηγούμενο ζεύγος}
translate G TwinChecknextPair {Επόμενο ζεύγος}
translate G TwinChecker {Scid: έλεγχος δίδυμων παρτίδων}
translate G TwinCheckTournament {Παρτίδες προκριματικού:}
translate G TwinCheckNoTwin {Δεν υπάρχουν δίδυμα }
translate G TwinCheckNoTwinfound {Δεν εντοπίστηκαν δίδυμα για την παρτίδα αυτή.\nΓια να δείτε τις δίδυμες παρτίδες χρησιμοποιώντας το παράθυρο αυτό, πρέπει πρώτα να χρησιμοποιήσετε την λειτουργία "Διαγραφή δίδυμων παρτίδων...". }
translate G TwinCheckTag {Κοινή χρήση ετικετών...}
translate G TwinCheckFound1 {Το Scid βρήκε $result δίδυμες παρτίδες}
translate G TwinCheckFound2 { και έθεσε γι' αυτές σημαίες διαγραφής}
translate G TwinCheckNoDelete {Σε αυτή τη βάση δεδομένων δεν υπάρχουν παρτίδες προς διαγραφή.}
translate G TwinCriteria1 {Οι ρυθμίσεις σας για την αναζήτηση δίδυμων παρτίδων πιθανόν να προκαλούν το μαρκάρισμα  μη-δίδυμων παρτίδων ως δίδυμες.}
translate G TwinCriteria2 {Αν έχετε επιλέξει "Όχι" για τις "όμοιες κινήσεις", συνιστούμε να επιλέξετε "Ναι" στις ρυθμίσεις για χρώματα, διοργανώσεις, τοποθεσίες, έτος και μήνες.\nΘέλετε να συνεχίσετε και να διαγραφούν οι δίδυμες;}
translate G TwinCriteria3 {Συνιστούμε να επιλέξετε "Ναι" τουλάχιστον για δύο ρυθμίσεις "ίδια τοποθεσία", "ίδιος γύρος" και "ίδιο έτος".\nΘέλετε να συνεχίσετε και να διαγραφούν οι δίδυμες;}
translate G TwinCriteriaConfirm {Scid: Επιβεβαίωση ρυθμίσεων διδύμων}
translate G TwinChangeTag "Αλλαγή των ακόλουθων ετικετών παρτίδας:\n\n"
translate G AllocRatingDescription "Η εντολή αυτή θα χρησιμοποιήσει το τρέχον αρχείο ορθογραφικού ελέγχου για να προσθέσει βαθμολογίες Elo σε αυτή την βάση δεδομένων. Αν ο παίκτης/παίκτρια δεν έχει τρέχουσα βαθμολογία αλλά η βαθμολογία του/της την στιγμή της παρτίδας εμφανίζεται στο αρχείο ορθογραφικού ελέγχου, αυτή η βαθμολογία θα προστεθεί."
translate G RatingOverride "Να αντικατασταθούν οι υπάρχουσες μη-μηδενικές βαθμολογίες;"
translate G AddRatings "Προσθήκη βαθμολογίας στον/στην:"
translate G AddedRatings {Τ Scid πρόσθεσε $r βαθμούς Elo σε $g παρτίδες.}

#Bookmark editor
translate G NewSubmenu "Νέο υπομενού"

# Comment editor:
translate G AnnotationSymbols  {Σύμβολα υπομνηματισμούς:}
translate G Comment {Σχόλιο:}
translate G InsertMark {Εισαγωγή σημαδιού}
translate G InsertMarkHelp {
Εισαγωγή/απομάκρυνμση σημαδιού: Επιλέξτε χρώμα, είδος, τετράγωνο.
Εισαγωγή/απομάκρυνση βέλους: Δεξί πάτημα δύο τετράγνω.
}

# Nag buttons in comment editor:
translate G GoodMove {Καλή κίνηση}
translate G PoorMove {Φτωχή κίνηση}
translate G ExcellentMove {Εξαίρετη κίνηση}
translate G Blunder {Σφάλμα}
translate G InterestingMove {Ενδιαφέρουσα κίνηση}
translate G DubiousMove {Αμφίβολη κίνηση}
translate G WhiteDecisiveAdvantage {Τα Λευκά έχουν αποφασιστικό πλεονέκτημα}
translate G BlackDecisiveAdvantage {Τα Μαύρα έχουν αποφασιστικό πλεονέκτημα}
translate G WhiteClearAdvantage {Τα Λευκά έχουν σαφές προβάδισμα}
translate G BlackClearAdvantage {Τα Μαύρα έχουν σαφές προβάδισμα}
translate G WhiteSlightAdvantage {Τα Λευκά έχουν μικρό πλεονέκτημα}
translate G BlackSlightAdvantage {Τα Μαύρα έχουν μικρό πλεονέκτημα}
translate G Equality {Ισότητα}
translate G Unclear {Ασαφής}
translate G Diagram {Διάγραμμα}

# Board search:
translate G BoardSearch {Αναζήτηση σκακιέρας}
translate G FilterOperation {Χειρισμός για το τρέχον φίλτρο:}
translate G FilterAnd {AND (Περιορισμός φίλτρου)}
translate G FilterOr {OR (Προσθήκη στο φίλτρο)}
translate G FilterIgnore {IGNORE (Επαναφορά φίλτρου)}
translate G SearchType {Ειδος αναζήτησης:}
translate G SearchBoardExact {Ακριβής θέση (όλα τα κομμάτια στα ίδια τετράγωνα)}
translate G SearchBoardPawns {Πιόνια (ίδιο υλικό, όλα τα πιόνια στα ίδια τετράγωνα)}
translate G SearchBoardFiles {Γραμμή (ίδιο υλικό, όλα τα πιόνια στις ίδιες γραμμές)}
translate G SearchBoardAny {Οπουδήποτε (ίδιο υλικό, πιόνια και κομμάτια οπουδήποτε)}
translate G SearchInRefDatabase {Αναζήτηση στην βάση αναφοράς}
translate G LookInVars {Αναζήτηση στις βαριάντες}

# Material search:
translate G MaterialSearch {Αναζήτηση υλικού}
translate G Material {Υλικό}
translate G Patterns {Διάταξη}
translate G Zero {Μηδέν}
translate G Any {Ό,τιδήποτε}
translate G CurrentBoard {Τρέχουσα σκακιέρα}
translate G CommonEndings {Κοινά φινάλε}
translate G CommonPatterns {Κοινές διατάξεις}
translate G MaterialDiff {Διαφορά υλικού}
translate G squares {τετράγωνα}
translate G SameColor {Ιδίου χρώματος}
translate G OppColor {Αντίθετου χρώματος}
translate G Either {Οποιοδήποτε}
translate G MoveNumberRange {Εύρος αριθμού κίνησης}
translate G MatchForAtLeast {Να ταιριάζουνβ τουλάχιστον}
translate G HalfMoves {μισές κινήσεις}

# Common endings in material search:
translate G EndingPawns {Φινάλε πιονιών}
translate G EndingRookVsPawns {Πύργων εναντίον πιονιών}
translate G EndingRookPawnVsRook {Πύργος και 1 Πύργος εναντίον πύργου}
translate G EndingRookPawnsVsRook {Πύργος και πιόνι(α) εναντίον Πύργου}
translate G EndingRooks {Φινάλε Πύργου εναντίον Πύργου}
translate G EndingRooksPassedA {Φινάλε Πύργου εναντίον Πύργου με προχωρημένο α-πιόνι}
translate G EndingRooksDouble {Φινάλε διπλού Πύργου}
translate G EndingBishops {Φινάλε Αξιωματικού εναντίον Αξιωματικού}
translate G EndingBishopVsKnight {Φινάλε Αξιωματικού εναντίον Ίππου}
translate G EndingKnights {Φινάλε Ίππου εναντίον Ίππου}
translate G EndingQueens {Φινάλε Βασίλισσας εναντίον Βασίλισσας}
translate G EndingQueenPawnVsQueen {Βασίλισσα και 1 Πιόνι εναντίον Βασίλισσας}
translate G BishopPairVsKnightPair {Μέσον παρτίδας με δύο Αξιωματικούς εναντίον δυο Αξιωματικών}

# Common patterns in material search:
translate G PatternWhiteIQP {Λευκό ΑΠΒ}
translate G PatternWhiteIQPBreakE6 {Λευκό ΑΠΒ: διείσδηση d4-d5 έναντι e6}
translate G PatternWhiteIQPBreakC6 {Λευκό ΑΠΒ: διείσδησηW d4-d5 έναντι c6}
translate G PatternBlackIQP {Μαύρο ΑΠΒ}
translate G PatternWhiteBlackIQP {Λευκό ΑΠΒ εναντίον Μαύρου ΑΠΒ}
translate G PatternCoupleC3D4 {Ζεύγος Λευκών πιονιών c3+d4}
translate G PatternHangingC5D5 {Μαύρα κρεμασμένα Πιόνια στα c5 και d5}
translate G PatternMaroczy {Κέντρο Maroczy (με Πιόνια στα c4 και e4)}
translate G PatternRookSacC3 {Θυσία Πύργου στο c3}
translate G PatternKc1Kg8 {O-O-O εναντίον O-O (Kc1 εναντίον Kg8)}
translate G PatternKg1Kc8 {O-O εναντίον O-O-O (Kg1 εναντίον Kc8)}
translate G PatternLightFian {Φιανκέττο λευκού τετραγώνου (Αξιωματικός-g2 εναντίον Αξιωματικού-b7)}
translate G PatternDarkFian {Φιανκέττο μαύρου τετραγώνου (Αξιωματικός-b2 εναντίον Αξιωματικού-g7)}
translate G PatternFourFian {Τέσσερα Φιανκέττα (Αξιωματικοί στα b2,g2,b7,g7)}

# Game saving:
translate G Today {Σήμερα}
translate G ClassifyGame {Ταξινόμηση παρτίδας}

# Setup position:
translate G EmptyBoard {Κενή σκακιέρα}
translate G InitialBoard {Αρχική σκακιέρα}
translate G SideToMove {Πλευρά που παίζει}
translate G MoveNumber {Αριθμός κίνησης}
translate G Castling {Ροκέ}
translate G EnPassantFile {Γραμμή en passant}
translate G ClearFen {Καθαρισμός FEN}
translate G PasteFen {Επικόληση FEN}

translate G SaveAndContinue {Αποθήκευση και συνέχιση}
translate G DiscardChangesAndContinue {Ακύρωση αλλαγών \nκαι συνέχιση}
translate G GoBack {Προς τα πίσω}

# Replace move dialog:
translate G ReplaceMove {Αντικατάσταση κίνησης}
translate G AddNewVar {Προσθήκη νέας βαριάντας}
translate G NewMainLine {Νέα κύρια γραμμή}
translate G ReplaceMoveMessage {Υπάρχει ήδη μια κίνηση εδώ.

Μπορείτε να την αντικαταστήσετε ακυρώνοντας όλες τις κινήσεις μετά από αυτήν ή να προσθέσετε την κίνησή σας ως νέα βαριάντα.

(Μπορείτε να αποφύγετε την εμφάνιση αυτού του μηνύματος στο μέλλον απενεργοποιώντας την επιλογή "Ερώτηση πριν την αντικατάσταση κίνησης" από το μενού Επιλογές:Κινήσεις.)}

# Make database read-only dialog:
translate G ReadOnlyDialog {Αν δηλώσετε αυτή την βάση δεδομένεν μόνον για ανάγνωση, δεν θα επιτρέπονται οι αλλαγές.
Δεν θα μπορούν να αποθηκευθούν ή να αντικατασταθούν παρτίδες και δεν θα μπορούν να αντικατασταθούν οι σημαίες διαγραφής.
Κάθε ταξινόμηση ή αποτελέσματα ταξινομημένα κατά ΕCO, θα είναι προσωρινά.

Μπορείτε εύκολα να δηλώσετε την βάση δεδομένων και πάλι ως εγγράψιμη, κλείνοντας και ανοίγοντάς την εκ νέου.

Θέλετε στ' αλήθεια να γίνει αυτή η βάση μόνον για ανάγνωση;}

# Clear game dialog:
translate G ClearGameDialog {Η παρτίδα αυτή έχει αντικατασταθεί.

Θέλετε στ' αλήθεια να συνεχίσετε και να ακυρώσετε τις αλλαγές που κάνατε σε αυτήν;
}

# Exit dialog:
translate G ExitDialog {Θέλετε στ' αλήθεια να βγείτε από το Scid;}
translate G ExitUnsaved {Οι βάσεις δεδομένων που ακολουθούν έχουν μη αποθηκευμένες αλλαγές παρτίδων. Αν βγείτε τώρα οι αλλαγές αυτές θα χαθούν.}

# Import window:
translate G PasteCurrentGame {Επικόλληση τρέχουσας παρτίδας}
translate G ImportHelp1 {Εισάγετε ή επικολλήστε παρτίδα σε μορφη PGN στο παραπάνω πλαίσιο.}
translate G ImportHelp2 {Εδώ θα εμφανίζεται οποιοδήποτε σφάλμα κατά την εισαγωγή παρτίδας.}
translate G OverwriteExistingMoves {Αντικατάσταση υπαρχόντων κινήσεων;}

# ECO Browser:
translate G ECOAllSections {όλες οι ενότητες ECO}
translate G ECOSection {ενότητας ECO}
translate G ECOSummary {Περίληψη της}
translate G ECOFrequency {Συχνότητα υποκωδίκων για}

# Opening Report:
translate G OprepTitle {Έκθεση ανοίγματος}
translate G OprepReport {Έκθεση/αναφορά}
translate G OprepGenerated {Δημιουργήθηκε από τον/την}
translate G OprepStatsHist {Στατιστικά και Ιστορικό}
translate G OprepStats {Στατιστικά}
translate G OprepStatAll {Όλες οι παρτίδες της αναφοράς}
translate G OprepStatBoth {Βαθμολογήθηκαν}
translate G OprepStatSince {Από}
translate G OprepOldest {Παλαιότερες παρτίδες}
translate G OprepNewest {Νεότερες παρτίδες}
translate G OprepPopular {Τρέχουσα δημοτικότητα}
translate G OprepFreqAll {Συχνότητα σε όλα τα χρόνια:   }
translate G OprepFreq1   {Από το έτος  1 έως σήμερα: }
translate G OprepFreq5   {Από το έτος  5 έως σήμερα: }
translate G OprepFreq10  {Από το έτος 10 έως σήμερα: }
translate G OprepEvery {μια φορά κάθε %u παρτίδες}
translate G OprepUp {%u%s έτη και άνω}
translate G OprepDown {%u%s έτη και κάτω}
translate G OprepSame {χωρίς αλλαγή σε όλα τα έτη}
translate G OprepMostFrequent {Πιο συχνοί παίκτες}
translate G OprepMostFrequentOpponents {Πιο συχνοί αντίπαλοι}
translate G OprepRatingsPerf {Βαθμολογήσεις και επιδόσεις}
translate G OprepAvgPerf {Μέσες βαθμολογήσεις και επιδόσεις}
translate G OprepWRating {Βαθμολόγηση Λευκών}
translate G OprepBRating {Βαθμολόγηση Μαύρων}
translate G OprepWPerf {Επίδοση Λευκών}
translate G OprepBPerf {Επίδοση Μαύρων}
translate G OprepHighRating {Παρτίδες με υψηλότερη μέση βαθμολόγηση}
translate G OprepTrends {Τάσεις αποτελεσμάτων}
translate G OprepResults {Μήκη και συχνότητες αποτελεσμάτων}
translate G OprepLength {Μήκος παρτίδας}
translate G OprepFrequency {Συχνότητα}
translate G OprepWWins {Τα Λευκά κερδίζουν: }
translate G OprepBWins {Τα Μαύρα κερδίζουν: }
translate G OprepDraws {Ισοπαλίες:      }
translate G OprepWholeDB {ολόκληρη η βάση δεδομένων}
translate G OprepShortest {Οι συντομότερες νίκες}
translate G OprepMovesThemes {Κινήσεις και Θέματα}
translate G OprepMoveOrders {Σειρές κινήσεων που καταλήγουν στην θέση}
translate G OprepMoveOrdersOne \
  {Υπάρχει μόνο μια σειρά κινήσεων που καταλήγει στην θέση αυτή:}
translate G OprepMoveOrdersAll \
  {Υπάρχουν %u σειρές κινήσεων που καταλήγουν στην θέση αυτή:}
translate G OprepMoveOrdersMany \
  {Υπάρχουν %u σειρές κινήσεων που καταλήγουν στην θέση αυτή. Οι πρώτες %u είναι:}
translate G OprepMovesFrom {Κινήσεις από την θέση}
translate G OprepMostFrequentEcoCodes {Συχνότεροι κωδικοί ECO}
translate G OprepThemes {Θέματα θέσης}
translate G OprepThemeDescription {Συχνότητα θεμάτων κατά τις πρώτες %u κινήσεις κάθε παρτίδας}
translate G OprepThemeSameCastling {Ομόπλευρα ροκέ}
translate G OprepThemeOppCastling {Αντίθετα ροκέ}
translate G OprepThemeNoCastling {Και οι δυο Βασιλιάδες χωρίς ροκέ}
translate G OprepThemeKPawnStorm {Επίθεση πιονιών Βασιλιά}
translate G OprepThemeQueenswap {Ανταλλαγή Βασιλισσών}
translate G OprepThemeWIQP {Λευκό απομονωμένο πιόνι Βασίλισσας}
translate G OprepThemeBIQP {Μαύρο απομονωμένο πιόνι Βασίλισσας}
translate G OprepThemeWP567 {Λευκό πιόνι στην 5/6/7η σειρά}
translate G OprepThemeBP234 {Μαύρο πιόνι στην 2/3/4η σειρά}
translate G OprepThemeOpenCDE {Ανοικτή Open c/d/e στήλη}
translate G OprepTheme1BishopPair {Μόνον η μια πλευρά διαθέτει ζεύγος Αξιωματικών}
translate G OprepEndgames {Φινάλε}
translate G OprepReportGames {Αναφορά παρτίδων}
translate G OprepAllGames    {Όλες οι παρτίδες}
translate G OprepEndClass {Υλικό στο τέλος κάθε παρτίδας}
translate G OprepTheoryTable {Πίνακας ανοιγμάτων}
translate G OprepTableComment {Δημιουργήθηκε από τις %u με την υψηλότερη βαθμολογία.}
translate G OprepExtraMoves {Επιπλέον κινήσεις στις σημειώσεις του πίνακα ανοιγμάτων}
translate G OprepMaxGames {Μέγιστος αριθμός παρτίδων στον πίνακα ανοιγμάτων}
translate G OprepViewHTML {Εμφάνιση HTML}
translate G OprepViewLaTeX {Εμφάνιση LaTeX}

# Player Report:
translate G PReportTitle {Έκθεση παίκτη}
translate G PReportColorWhite {με τα Λευκά κομμάτια}
translate G PReportColorBlack {με τα Μαύρα κομμάτια}
translate G PReportMoves {μετά από %s}
translate G PReportOpenings {Ανοίγματα}
translate G PReportClipbase {Διαγραφή της προσωρινής μνήμης clipbase και αντιγραφή σε αυτήν των παρτίδων που ταιριάζουν}

# Piece Tracker window:
translate G TrackerSelectSingle {Το αριστερό πλήκτρο του ποντικιού επιλέγει το κομμάτι αυτό.}
translate G TrackerSelectPair {Το αριστερό πλήκτρο του ποντικιού επιλέγει το κομμάτι αυτό, το δεξιό πλήκτρο επιλέγει το ταίρι του.}
translate G TrackerSelectPawn {Το αριστερό πλήκτρο επιλέγει το πιόνι αυτό, το δεξιό πλήκτρο επιλέγει και τα 8 πιόνια.}
translate G TrackerStat {Στατιστικά}
translate G TrackerGames {% παρτίδες με κίνηση στο τετράγωνο}
translate G TrackerTime {% χρόνο σε κάθε τετράγωνο}
translate G TrackerMoves {Κινήσεις}
translate G TrackerMovesStart {Εισάγετε τον αριθμό της κίνησης από την οποία θα ξεκινήσει η ανίχνευση.}
translate G TrackerMovesStop {Εισάγετε τον αριθμό της κίνησης στην οποία θα σταματήσει η ανίχνευση.}

# Game selection dialogs:
translate G SelectAllGames {Όλες οι παρτίδες της βάσης δεδομένων}
translate G SelectFilterGames {Μόνο παρτίδες στο φίλτρο}
translate G SelectTournamentGames {Μόνο παρτίδες του προκριματικού}
translate G SelectOlderGames {Μόνο παλαιότερες παρτίδες}

# Delete Twins window:
translate G TwinsNote {Για να είναι δίδυμες, δυο παρτίδες πρέπει να έχουν τουλάχιστον τους ίδιους παίκτες και τα κριτήρια που θα ορίσετε πιο κάτω. Όταν εντοπίζεται κάποιο ζεύγος δίδυμων, η μικρότερης διάρκειας παρτίδα διαγράφεται. Συμβουλή: πρέπει να ελέγχετε την ορθογραφία της βάσης δεδομένων πριν διαγράψετε δίδυμες παρτίδες, διότι βελτιώνει τον εντοπισμό τους.}
translate G TwinsCriteria {Κριτήρια: Οι δίδυμες παρτίδες πρέπει να διαθέτουν...}
translate G TwinsWhich {Εξέταση ποιάς παρτίδας}
translate G TwinsColors {Με παίκτη ιδίου χρώματος;}
translate G TwinsEvent {Με ίδια διοργάνωση;}
translate G TwinsSite {Με ίδια τοποθεσία;}
translate G TwinsRound {Με ίδιο γύρο;}
translate G TwinsYear {Με ίδιο έτος;}
translate G TwinsMonth {Με ίδιο μήνα;}
translate G TwinsDay {Με ίδια ημέρα;}
translate G TwinsResult {Με ίδιο αποτέλεσμα;}
translate G TwinsECO {Με ίδιο κωδικό ECO;}
translate G TwinsMoves {Με ίδιες κινήσεις}
translate G TwinsPlayers {Σύγκριση ονομάτων παικτών:}
translate G TwinsPlayersExact {Ταιριάζουν ακριβώς}
translate G TwinsPlayersPrefix {Μόνο τα 4 πρώτα γράμματα}
translate G TwinsWhen {Όταν διαγράφονται δίδυμες παρτίδες}
translate G TwinsSkipShort {Να αγνοούνται όλες οι παρτίδες με μήκος μικρότερο των 5 κινήσεων;}
translate G TwinsUndelete {Πρώτα να διαγραφούν όλες οι παρτίδες;}
translate G TwinsSetFilter {Να μπουν φίλτρα σε όλες τις διαγραμμένες δίδυμες παρτίδες;}
translate G TwinsComments {Πάντοτε διατήρηση των παρτίδων με σχόλια;}
translate G TwinsVars {Πάντοτε διατήρηση των παρτίδων με βαριάντες;}
translate G TwinsDeleteWhich {Διαγραφή της παρτίδας:}
translate G TwinsDeleteShorter {Συντομότερη παρτίδα}
translate G TwinsDeleteOlder {Ο μικρότερος αριθμός παρτίδας}
translate G TwinsDeleteNewer {Ο μεγαλύτερος αριθμός παρτίδας}
translate G TwinsDelete {Διαγραφή παρτίδας}

# Name editor window:
translate G NameEditType {Τύπος του προς επεξεργασία ονόματος}
translate G NameEditSelect {Παρτίδες για επεξεργασία}
translate G NameEditReplace {Αντικατάσταση}
translate G NameEditWith {με}
translate G NameEditMatches {Ταιριάσματα: Για επιλογή, πατήστε Ctrl+1 έως Ctrl+9}

# Check games window:
translate G CheckGames {Έλεγχος παρτίδων}
translate G CheckGamesWhich {Έλεγχος παρτίδων}
translate G CheckAll {Όλες οι παρτίδες}
translate G CheckSelectFilterGames {Μόνον οι παρτίδες του φίλτρου}

# Classify window:
translate G Classify {Ταξινόμηση}
translate G ClassifyWhich {Ταξινόμηση κατά ECO των εξής παρτίδων}
translate G ClassifyAll {Όλες οι παρτίδες (αντικατάσταση των παλαιών κωδίκων κατά ECO)}
translate G ClassifyYear {Όλες οι παρτίδες που παίχτηκαν την προηγούμενη χρονιά}
translate G ClassifyMonth {Όλες οι παρτίδες που παίχτηκαν τον προηγούμενο μήνα}
translate G ClassifyNew {Μόνον παρτίδες χωρίς ακόμη κώδικα ECO}
translate G ClassifyCodes {Κωδικοί ECO προς χρήση}
translate G ClassifyBasic {Μόνον βασικοί κωδικοί ("B12", ...)}
translate G ClassifyExtended {Επεκτάσεις Scid ("B12j", ...)}

# Compaction:
translate G NameFile {Αρχείο ονομάτων}
translate G GameFile {Αρχείο παρτίδων}
translate G Names {Ονόματα}
translate G Unused {Μη χρησιμοποιημένα}
translate G SizeKb {Μέγεθος (kb)}
translate G CurrentState {Τρέχουσα κατάσταση}
translate G AfterCompaction {Μετά την συμπίεση}
translate G CompactNames {Συμπιεσμένο αρχείο ονομάτων}
translate G CompactGames {Συμπιεσμένο αρχείο παρτίδων}
translate G NoUnusedNames "Δεν υπάρχουν ονόματα που δεν χρησιμοποιούνται, γι' αυτό το αρχείο ονομάτων είναι πλήρως συμπιεσμένο."
translate G NoUnusedGames "Το αρχείο παρτίδων είναι ήδη πλήρως συμπιεσμένο."
translate G NameFileCompacted {Το αρχείο ονομάτων για την βάση δεδομένων "[file tail [sc_base filename]]" συμπιέστηκε.}
translate G GameFileCompacted {Το αρχείο παρτίδων για την βάση δεδομένων "[file tail [sc_base filename]]" συμπιέστηκε.}

# Sorting:
translate G SortCriteria {Κριτήρια}
translate G AddCriteria {Προσθήκη κριτηρίων}
translate G CommonSorts {Κοινές ταξινομήσεις}
translate G Sort {Ταξινόμηση}

# Exporting:
translate G AddToExistingFile {Να προστεθούν οι παρτίδες σε υπάρχον αρχείο;}
translate G ExportComments {Να εξαχθούν τα σχόλια;}
translate G ExportVariations {Να εξαχθούν οι βαριάντες}
translate G IndentComments {Να έχουν εσοχές τα σχόλια;}
translate G IndentVariations {Να έχουν εσοχές οι βαριάντες;}
translate G ExportColumnStyle {Είδος στήλης (μια κίνηση ανά γραμμή);}
translate G ExportSymbolStyle {Είδος συμβολικού υπομνηματισμού:}
translate G ExportStripMarks {Να απομακρυνθούν τα σημάδια τετραγώνου/βέλους από τα σχόλια;}

# Goto game/move dialogs:
translate G LoadGameNumber {Εισάγετε τον αριθμό παρτίδας για φόρτωση:}
translate G GotoMoveNumber {Μετάβαση στην κίνηση αριθμός:}

# Copy games dialog:
translate G CopyGames {Αντιγραφή παρτίδων}
translate G CopyConfirm {
 Θέλετε πράγματι να αντιγράψετε τις
 [::utils::thousands $nGamesToCopy] φιλτραρισμένες παρτίδες
 της βάσης δεδομένων "$fromName"
 στην βάση δεδομένων "$targetName";
}
translate G CopyErr {Αδύνατη η αντιγραφή των παρτίδων}
translate G CopyErrSource {η αρχική βάση δεδομένων}
translate G CopyErrTarget {η τελική βάση δεδομένων}
translate G CopyErrNoGames {δεν διαθέτει παρτίδες στο φίλτρο της}
translate G CopyErrReadOnly {είναι μόνον για ανάγνωση}
translate G CopyErrNotOpen {δεν είναι ανοικτή}

# Colors:
translate G LightSquares {Λευκά τετράγωνα}
translate G DarkSquares {Μαύρα τετράγωνα}
translate G SelectedSquares {Επιλεγμένα τετράγωνα}
translate G SuggestedSquares {Τετράγωνα που προτείνονται για την κίνηση}
translate G WhitePieces {Λευκά κομμάτια}
translate G BlackPieces {Μαύρα κομμάτια}
translate G WhiteBorder {Λευκό περίγραμμα}
translate G BlackBorder {Μαύρο περίγραμμα}

# Novelty window:
translate G FindNovelty {Εύρεση νεοτερισμού}
translate G Novelty {Νεοτερισμός}
translate G NoveltyInterrupt {Η αναζήτηση νεοτερισμού διακόπηκε}
translate G NoveltyNone {Δεν βρέθηκε νεοτερισμός για αυτή την παρτίδα}
translate G NoveltyHelp {
Το Scid θα βρει την πρώτη κίνηση της τρέχουσας παρτίδας η οποία καταλήγει σε θέση που δεν υπάρχει στην επιλεχθείσα βάση δεδομένων ή στο βιβλίο ECO των ανοιγμάτων.
}

# Sounds configuration:
translate G SoundsFolder {Κατάλογος αρχείων ήχου}
translate G SoundsFolderHelp {Ο κατάλογος πρέπει να περιέχει τα αρχεία King.wav, a.wav, 1.wav, κλπ.}
translate G SoundsAnnounceOptions {Επιλογές αναγγελίας κίνησης}
translate G SoundsAnnounceNew {Αναγγελία των νέων κινήσεων καθώς εκτελούνται}
translate G SoundsAnnounceForward {Αναγγελία όταν πρόκειται για μια κίνηση προς τα εμπρός}
translate G SoundsAnnounceBack {Αναγγελία όταν πρόκειται για αναδρομή ή για κίνηση προς τα πίσω}

# Upgrading databases:
translate G Upgrading {Ενημέρωση}
translate G ConfirmOpenNew {
Αυτή η βάση δεδομένων είναι παλαιάς μορφής (Scid 3) την οποία δεν μπορεί να ανοίξει το Scid 4, αλλά έχει ήδη δημιουργηθεί μια έκδοσή της νέας μορφής (Scid 4).

Θέλετε να ανοίξετε την βάση δεδομένων νέας μορφής;
}
translate G ConfirmUpgrade {
Αυτή η βάση δεδομένων είναι παλαιάς μορφής (Scid 3). Πρέπει να δημιουργηθεί μια βάση νέας μορφής για το Scid 4.

Η ανανέωση θα δημιουργήσει μια νέα έκδοση της βάσης δεδομένων και κατόπιν θα διαγράψει τα αρχικά αρχεία.

Αυτό ίσως διαρκέσει λίγο χρόνο, αλλά θα χρειαστεί να το κάνετε μόνο μια φορά. Μπορείτε να ακυρώσετε την διαδικασία αν διαρκεί πάρα πολύ.

Θέλετε να ενημερώσετε αυτή την βάση δεδομένων τώρα;
}

# Recent files options:
translate G RecentFilesMenu {Πλήθος των πρόσφατων αρχείων του μενού Αρχείο}
translate G RecentFilesExtra {Πλήθος των πρόσφατων αρχείων του επιπλέον υπομενού}

# My Player Names options:
translate G MyPlayerNamesDescription {
Δημιουργήστε παρακάτω μια λίστα των ονομάτων των προτιμόμενων παικτών, ένα για κάθε γραμμή. Τα συμβολα μπαλαντέρ (π.χ. "?" για κάνε έναν μοναδικό χαρακτήρα, "*" για οποιαδήποτε ακολουθία χαρακτήρων) επιτρέπονται.

Κάθε φορά που θα φορτώνεται μια παρτίδα με παίκτη που υπάρχειστην λίστα, αν είναι απαραίτητο η σκακιέρα του κυρίως παραθύρου θα περιστρέφεται ώστε η παρτίδα να προβάλεται από την μεριά αυτού του παίκτη.
}

#Coach
translate G showblunderexists {εμφάνιση ότι το σφάλμα υπάρχει}
translate G showblundervalue {εμφάνιση της αξίας του σφάλματος}
translate G showscore {εμφάνιση σκορ}
translate G coachgame {διδασκαλία παρτίδας}
translate G configurecoachgame {Προσαρμογή τακτικής παρτίδας}
translate G configuregame {Προσαρμογή παρτίδας}
translate G Phalanxengine {Μηχανή Phalanx}
translate G Coachengine {Μηχανή Coach}
translate G difficulty {δυσκολία}
translate G hard {δύσκολη}
translate G easy {εύκολη}
translate G Playwith {Παιχνίδι με}
translate G white {λευκά}
translate G black {μαύρα}
translate G both {και τα δυο}
translate G Play {Παιχνίδι}
translate G Noblunder {Χωρίς σφάλματα}
translate G blunder {σφάλμα}
translate G Noinfo {-- Καμια πληροφορία --}
translate G PhalanxOrTogaMissing {Δεν βρέθηκε Phalanx ή Toga}
translate G moveblunderthreshold {η κίνηση είναι σφάλμα αν η απώλεια είναι μεγαλύτερη από}
translate G limitanalysis {περιορισμός του χρόνου ανάλυσης της μηχανής}
translate G seconds {δευτερόλεπτα}
translate G Abort {Ματαίωση}
translate G Resume {Επανάληψη}
translate G OutOfOpening {Εκτός ανοίγματος}
translate G NotFollowedLine {Δεν ακολοθήσατε την γραμμή}
translate G DoYouWantContinue {Θέλετε να συνεχίσετε;}
translate G CoachIsWatching {Ο προπονητής παρακολουθεί}
translate G Ponder {Μόνιμη σκέψη}
translate G LimitELO {Περιορισμός της δύναμης ELO}
translate G DubiousMovePlayedTakeBack {Η κίνηση που παίχτηκε είναι αμφίβολη, θέλετε να την αναιρέσετε;}
translate G WeakMovePlayedTakeBack {Η κίνηση που παίχτηκε είναι αδύναμη, θέλετε να την αναιρέσετε;}
translate G BadMovePlayedTakeBack {Η κίνηση που παίχτηκε είναι κακή, θέλετε να την αναιρέσετε;}
translate G Iresign {Παραιτούμαι}
translate G yourmoveisnotgood {η κίνησή σας δεν είναι καλή}
translate G EndOfVar {Τέλος βαριάντας}
translate G Openingtrainer {Προπόνηση ανοιγμάτων}
translate G DisplayCM {Εμφάνιση υποψήφιων κινήσεων}
translate G DisplayCMValue {Εμφάνιση των αξιών των υποψήφιων κινήσεων}
translate G DisplayOpeningStats {Εμφάνιση στατιστικών}
translate G ShowReport {Εμφάνιση έκθεσης}
translate G NumberOfGoodMovesPlayed {οι καλές κινήσεις που παίχτηκαν}
translate G NumberOfDubiousMovesPlayed {οι αμφίβολες κινήσεις που παίχτηκαν}
translate G NumberOfMovesPlayedNotInRepertoire {οι κινήσεις που παίχτηκαν δεν υπάρχουν στο ρεπερτόριο}
translate G NumberOfTimesPositionEncountered {φορές εμφάνισης της θέσης}
translate G PlayerBestMove  {Να επιτρέπονται μόνον οι καλύτερες κινήσεις}
translate G OpponentBestMove {Ο αντίπαλος παίζει τις καλύτερες κινήσεις}
translate G OnlyFlaggedLines {Μόνον γραμμές με σημαίες}
translate G resetStats {Μηδενισμός στατιστικών}
translate G Repertoiretrainingconfiguration {Προσαρμογή προπόνησης ρεπερτορίου}
translate G Loadingrepertoire {Φόρτωση ρεπερτορίου}
translate G Movesloaded {Κινήσεις που φορτώθηκαν}
translate G Repertoirenotfound {Το ρεπερτόριο δεν βρέθηκε}
translate G Openfirstrepertoirewithtype {Πρώτα άνοιγμα μιας βάσης δεδομένων ρεπερτορίου με την εικόνα ή/και τον τύπο τοποθετημένη στην δεξιά πλευρά}
translate G Movenotinrepertoire {Η κίνηση δεν υπάρχει στο ρεπερτόριο}
translate G PositionsInRepertoire {Θέσεις στο ρεπερτόριο}
translate G PositionsNotPlayed {Θέσεις που δεν παίχτηκαν}
translate G PositionsPlayed {Θέσεις που παίχτηκαν}
translate G Success {Επιτυχία}
translate G DubiousMoves {Αμφίβολες κινήσεις}
translate G OutOfRepertoire {Εκτός ρεπερτορίου}
translate G ConfigureTactics {Προσαρμογή τακτικής}
translate G ResetScores {Μηδενισμός σκορ}
translate G LoadingBase {Φόρτωση βάσης}
translate G Tactics {Τακτική}
translate G ShowSolution {Εμφάνιση λύσης}
translate G NextExercise {Επόμενη άσκηση}
translate G PrevExercise {Προηγούμενη άσκηση}
translate G StopTraining {Διακοπή προπόνησης}
translate G Next {Επόμενο}
translate G ResettingScore {Μηδενισμός σκορ}
translate G LoadingGame {Φόρτωση παρτίδας}
translate G MateFound {Βρέθηκε ματ}
translate G BestSolutionNotFound {Δεν βρέθηκε βέλτιστη λύση !}
translate G MateNotFound {Δεν βρέθηκε ματ}
translate G ShorterMateExists {Υπάρχει συντομότερο ματ}
translate G ScorePlayed {Score played}
translate G Expected {αναμενόμενη}
translate G ChooseTrainingBase {Επιλογή προπονητικής βάσης δεδομένων}
translate G Thinking {Ανάλυση}
translate G AnalyzeDone {Η ανάλυση ολοκληρώθηκε}
translate G WinWonGame {Κερδισμένη παρτίδα}
translate G Lines {Γραμμές}
translate G ConfigureUCIengine {Προσαρμογή μηχανής UCI}
translate G SpecificOpening {Συγκεκριμένο άνοιγμα}
translate G StartNewGame {Έναρξη νέας παρτίδας}
translate G FixedLevel {Σταθερό επίπεδο}
translate G Opening {Άνοιγμα}
translate G RandomLevel {Τυχαίο επίπεδο}
translate G StartFromCurrentPosition {Εκκίνηση από την τρέχουσα θέση}
translate G FixedDepth {Σταθερού βάθους}
translate G Nodes {Κόμβοι}
translate G Depth {Βάθος}
translate G Time {Χρόνος} 
translate G SecondsPerMove {Δευτερόλεπτα ανά κίνηση}
translate G Engine {Μηχανή}
translate G TimeMode {Λειτουργία χρόνου}
translate G TimeBonus {Χρόνος + δώρο}
translate G TimeMin {min}
translate G TimeSec {sec}
translate G AllExercisesDone {Ολοκληρώθηκαν όλες οι ασκήσεις}
translate G MoveOutOfBook {Κίνηση εκτός βιβλίου}
translate G LastBookMove {Κίνηση τελευταίου βιβλίου}
translate G AnnotateSeveralGames {Υπομνηματισμός πολλαπλών παρτίδων \nαπό την τρέχουσα σε :}
translate G FindOpeningErrors {Εύρεση σφαλμάτων ανοιγμάτων}
translate G MarkTacticalExercises {Σημάδεμα ασκήσεων τακτικής}
translate G UseBook {Χρήση του βιβλίου}
translate G MultiPV {Πολλαπλές βαριάντες}
translate G Hash {Μνήμη κατατεμαχισμού (hash)}
translate G OwnBook {Χρήση του βιβλίου της μηχανής}
translate G BookFile {Βιβλίο ανοιγμάτων}
translate G AnnotateVariations {Υπομνηματισμός βαριαντών}
translate G ShortAnnotations {Σύντομος υπομνηματισμός}
translate G addAnnotatorTag {Προσθήκη εκτικέτας του υπομνηματιστή}
translate G AddScoreToShortAnnotations {Προσθήκη σκορ στους υπομνηματισμούς}
translate G Export {Εξαγωγή}
translate G BookPartiallyLoaded {Το βιβλίο φορτώθηκε μερικώς}
translate G Calvar {Υπολογισμο βαριαντών}
translate G ConfigureCalvar {Προσαρμογή}
# Opening names used in tacgame.tcl
translate G Reti {Reti}
translate G English {Αγγλική}
translate G d4Nf6Miscellaneous {1.d4 Nf6 Διάφορες άλλες}
translate G Trompowsky {Trompowsky}
translate G Budapest {Βουδαπέστης}
translate G OldIndian {Παλαιά Ινδική}
translate G BenkoGambit {Γκαμπί Benko}
translate G ModernBenoni {Σύγχρονη Benoni}
translate G DutchDefence {Ολλανδική άμυνα}
translate G Scandinavian {Σκανδιναβική}
translate G AlekhineDefence {Άμυνα Αλιέχιν}
translate G Pirc {Pirc}
translate G CaroKann {Caro-Kann}
translate G CaroKannAdvance {Caro-Kann Advance}
translate G Sicilian {Σικελική}
translate G SicilianAlapin {Σικελική Αλάπιν}
translate G SicilianClosed {Σικελική Κλειστή}
translate G SicilianRauzer {Σικελική Rauzer}
translate G SicilianDragon {Σικελικός Δράκος}
translate G SicilianScheveningen {Σικελική Σεβενίγκεν}
translate G SicilianNajdorf {Sicilian Νάιντορφ}
translate G OpenGame {Ανοικτή παρτίδα}
translate G Vienna {Βιέννη}
translate G KingsGambit {Γκαμπί του Βασιλιά}
translate G RussianGame {Ρωσική παρτίδα}
translate G ItalianTwoKnights {Ιταλική/Δυο Ίππων}
translate G Spanish {Ισπανική}
translate G SpanishExchange {Ισπανική Ανταλλαγής}
translate G SpanishOpen {Ισπανικό άνοιγμα}
translate G SpanishClosed {Ισπανική Κλειστή}
translate G FrenchDefence {Γαλλική Άμυνα}
translate G FrenchAdvance {Γαλλική Advance}
translate G FrenchTarrasch {Γαλλική Τάρρας}
translate G FrenchWinawer {Γαλλική Γουίναγουερ}
translate G FrenchExchange {Γαλλική Ανταλλαγής}
translate G QueensPawn {Πιόνι Βασίλισσας}
translate G Slav {Σλαβική}
translate G QGA {Γκαμπί της Βασίλισσας Αποδεκτό (QGA)}
translate G QGD {Γκαμπί της Βασίλισσας μη Αποδεκτό (QGD)}
translate G QGDExchange {Γκαμπί της Βασίλισσας μη Αποδεκτό Ανταλλαγής}
translate G SemiSlav {Ημι-Σλαβική}
translate G QGDwithBg5 {Γκαμπί της Βασίλισσας μη Αποδεκτό με Bg5}
translate G QGDOrthodox {Ορθόδοξο Γκαμπί της Βασίλισσας μη Αποδεκτό}
translate G Grunfeld {Γρκύνφελντ}
translate G GrunfeldExchange {Γκρύνφελντ Ανταλλαγής}
translate G GrunfeldRussian {Γκρύνφελντ Ρωσική}
translate G Catalan {Καταλανική}
translate G CatalanOpen {Καταλανική Ανοικτή}
translate G CatalanClosed {Καταλανική Κλειστή}
translate G QueensIndian {Ινδική της Βασίλισσας}
translate G NimzoIndian {Νιμτσοϊνδική}
translate G NimzoIndianClassical {Κλασσική Νιμτσοϊνδική}
translate G NimzoIndianRubinstein {Νιμτσοϊνδική Ρουμπινστάιν}
translate G KingsIndian {Ινδική του Βασιλιά}
translate G KingsIndianSamisch {Ινδική του Βασιλιά Σέμις}
translate G KingsIndianMainLine {Κύρια Γραμμή Ινδικής του Βασιλιά}

# FICS
translate G ConfigureFics {Προσαρμογή FICS}
translate G FICSGuest {Σύνδεση ως Καλεσμένος/η}
translate G FICSServerPort {Θύρα Διακομηστή}
translate G FICSServerAddress {Διεύθυνση IP}
translate G FICSRefresh {Ανανέωση}
translate G FICSTimesealPort {Θύρα Timeseal}
translate G FICSSilence {Φίλτρο κονσόλας}
translate G FICSOffers {Προσφορές}
translate G FICSConsole {Κονσόλα}
translate G FICSGames {Παρτίδες}
translate G FICSUnobserve {Διακοπή παρακολούθησης παρτίδας}
translate G FICSProfile {Εμφάνιση του ιστορικού και του προφίλ σας}
translate G FICSRelayedGames {Αναμεταδιδόμενες παρτίδες}
translate G FICSFindOpponent {Εύρεση αντιπάλου}
translate G FICSTakeback {Αναίρεση}
translate G FICSTakeback2 {Αναίρεση 2}
translate G FICSInitTime {Αρχικός χρόνος (min)}
translate G FICSIncrement {Προσαύξηση (sec)}
translate G FICSRatedGame {Παρτίδα βαθμολόγησης}
translate G FICSAutoColour {αυτόματο}
translate G FICSManualConfirm {χειροκίνηση επιβεβαίωση}
translate G FICSFilterFormula {Φίλτρο με φόρμουλα}
translate G FICSIssueSeek {Αναζήτηση τεύχους}
translate G FICSChallenge {Πρόκληση}
translate G FICSAccept {αποδεκτή}
translate G FICSDecline {μη αποδεκτή}
translate G FICSColour {Χρώμα}
translate G FICSSend {αποστολή}
translate G FICSConnect {Σύνδεση}
translate G FICSdefaultuservars {Χρήση αρχικών μεταβλητών}
translate G FICSObserveconfirm {Θέλετε να παρακολουθήσετε την παρτίδα}

# Game review
translate G GameReview {Επισκόπηση παρτίδας}
translate G GameReviewTimeExtended {Ο χρόνος επεκτάθηκε}
translate G GameReviewMargin {Περιθώριο λάθους}
translate G GameReviewAutoContinue {Αυτόματη συνέχιση όταν η κίνηση είναι σωστή}
translate G GameReviewReCalculate {Χρήση εκτεταμένου χρόνου}
translate G GameReviewAnalyzingMovePlayedDuringTheGame {Γίνεται ανάλυση της κίνησης που παίχτηκε κατά την διάρκεια της παρτίδας}
translate G GameReviewAnalyzingThePosition {Γίνεται ανάλυση της θέσης}
translate G GameReviewEnterYourMove {Εισάγετε την κίνησή σας}
translate G GameReviewCheckingYourMove {Ελέγχεται η κίνησή σας}
translate G GameReviewYourMoveWasAnalyzed {Η κίνησή σας αναλύθηκε}
translate G GameReviewYouPlayedSameMove {Παίξατε την ίδια κίνηση όπως και στο ματς}
translate G GameReviewScoreOfYourMove {Το σκορ της κίνησής σας}
translate G GameReviewGameMoveScore {Το σκορ κίνησης της παρτίδας}
translate G GameReviewEngineScore {Το σκορ της μηχανής}
translate G GameReviewYouPlayedLikeTheEngine {Παίξατε το ίδιο καλά με την μηχανή}
translate G GameReviewNotEngineMoveButGoodMove {Η κίνηση δεν είναι της μηχανής, αλλά είναι μια καλή κίνηση}
translate G GameReviewMoveNotGood {Η κίνηση αυτή δεν είναι καλή, το σκορ είναι}
translate G GameReviewMovesPlayedLike {Κινήσεις που παίχτηκαν σαν}
translate G GameReviewMovesPlayedEngine {Κινήσεις που παίχτηκαν σαν της μηχανής}

# Correspondence Chess Dialogs:
translate G CCDlgConfigureWindowTitle {Προσαρμογή Σκακιού Δι' αλληλογραφίας}
translate G CCDlgCGeneraloptions {Γενκές επιλογές}
translate G CCDlgDefaultDB {Αρχική Βάση δεδομένων:}
translate G CCDlgInbox {ΕισερχόμεναInbox (διαδρομή):}
translate G CCDlgOutbox {Εξερχόμενα (διαδρομή):}
translate G CCDlgXfcc {Παραμετροποίηση Xfcc:}
translate G CCDlgExternalProtocol {Χειριστής Εξωτερικού Πρωτοκόλου (π.χ. Xfcc)}
translate G CCDlgFetchTool {Εργαλείο ανάκτησης:}
translate G CCDlgSendTool {Εργαλείο αποστολής:}
translate G CCDlgEmailCommunication {Επικοινωνία eMail}
translate G CCDlgMailPrg {Πρόγραμμα αλληλογραφίας:}
translate G CCDlgBCCAddr {Διεύθυνση (B)CC:}
translate G CCDlgMailerMode {Λειτουργία:}
translate G CCDlgThunderbirdEg {π.χ. Thunderbird, Mozilla Mail, Icedove...}
translate G CCDlgMailUrlEg {π.χ. Evolution}
translate G CCDlgClawsEg {π.χ. Sylpheed Claws}
translate G CCDlgmailxEg {π.χ. mailx, mutt, nail...}
translate G CCDlgAttachementPar {Παράμτερος επισυναπτόμενου:}
translate G CCDlgInternalXfcc {Χρήση της εσωτερικής υποστήριξης Xfcc}
translate G CCDlgConfirmXfcc {Επιβεβαίωση κινήσεων}
translate G CCDlgSubjectPar {Παράμετρος Θέματος:}
translate G CCDlgDeleteBoxes {Κενό Εισ/Εξερχόμενα}
translate G CCDlgDeleteBoxesText {Θέλετε πράγματι να αδειάσετε τους καταλόγους Εισερχομένων και Εξερχομένων;\nΚάτι τέτοιο απαιτεί έναν νέο συγχρονισμός για να εμφανιστεί η πρόσφατη κατάσταση των παρτίδων σας.}
translate G CCDlgConfirmMove {Επιβεβαίωση κίνησης}
translate G CCDlgConfirmMoveText {Αν επιβεβαιώσετε, θα σταλούν στον διακομηστή η ακόλουθη κίνηση και το ακόλουθο σχόλιο:}
translate G CCDlgDBGameToLong {Αντιφατική Mainline}
translate G CCDlgDBGameToLongError {Η mainline της βάσης δεδομένων σας είναι μεγαλύτερη από ό,τι η παρτίδα στα Εισερχόμενά σας. Αν τα Εισερχόμενα περιέχουν τρέχουσες παρτίδες, δηλαδή, αμέσως μετά από έναν συγχρονισμός, κάποιες κινήσεις προστέθηκαν στην mainline της βάσης δεδομένων με τρόπο λανθασμένο.

Στην περίπτωση αυτή συντομεύστε την mainline στην κίνηση (μέγιστο)
}


translate G CCDlgStartEmail {Έναρξη νέας παρτίδας με eMail}
translate G CCDlgYourName {Το όνομά σας:}
translate G CCDlgYourMail {Η ηλ. διεύθυνσή σας:}
translate G CCDlgOpponentName {Όνομα αντιπάλου:}
translate G CCDlgOpponentMail {Ηλ. διεύθυνση αντιπάλου:}
translate G CCDlgGameID {Ταυτότητα παρτίδας (μοναδική):}

translate G CCDlgTitNoOutbox {Scid: Εξερχόμενα Σκακιού Δι' Αλληλογραφίας}
translate G CCDlgTitNoInbox {Scid: Εισερχόμενα Σκακιού Δι' Αλληλογραφίας}
translate G CCDlgTitNoGames {Scid: Δεν υπάρχουν παρτίδες δι' αλληλογραφίας}
translate G CCErrInboxDir {Κατάλογος εισερχομένων σκακιού δι' αλληλογραφίας:}
translate G CCErrOutboxDir {Κατάλογος εξερχομένων σκακιού δι' αλληλογραφίας:}
translate G CCErrDirNotUsable {δεν υπάρχει ή δεν είναι προσβάσιμος!\nΠαρακαλώ ελέγξτε και διορθώστε τις ρυθμίσεις.}
translate G CCErrNoGames {does not contain any games!\nPlease fetch them first.}

translate G CCDlgTitNoCCDB {Scid: Δεν υπάρχει βάση δεδομένων αλληλογραφίας}
translate G CCErrNoCCDB {Δεν ανοίχτηκε κάποια βάση δεδομένων τύπου 'Αλληλογραφία'. Παρακαλώ ανοίξτε μια πριν χρησιμοποιήσετε τις λειτουργίες σκακιού δι' αλληλογραφίας.}

translate G CCFetchBtn {Ανάκτηση παρτίδων από τον διακομηστή και επεξεργασία Εισερχομένων}
translate G CCPrevBtn {Μετάβαση σε προηγούμενη παρτίδα}
translate G CCNextBtn {Μετάβαση σε επόμενη παρτίδα}
translate G CCSendBtn {Αποστολή κίνησης}
translate G CCEmptyBtn {Εκκένωση Εισερχομένων και Εξερχομένων}
translate G CCHelpBtn {Βοήθεια για τα εικονίδια και τους δείκτες κατάστασης.\nΓια γενική Βοήθεια πατήστε F1!}

translate G CCDlgServerName {ΌΝομα διακομηστή:}
translate G CCDlgLoginName  {Όνομα σύνδεσης:}
translate G CCDlgPassword   {Κωδικός:}
translate G CCDlgURL        {Xfcc-URL:}
translate G CCDlgRatingType {Τύπως αξιολόγησης:}

translate G CCDlgDuplicateGame {Μη μοναδική ταυτότητα παρτίδας}
translate G CCDlgDuplicateGameError {Η παρτίδα αυτή υπάρχει περισσότερες από μια φορές στην βάση δεδομένων σας. Παρακαλώ διαγράψτε τις διπλότυπες και συμπιέστε το αρχείο παρτίδων σας (Αρχείο/Συντήρηση/Συμπίεση βάσης δεδομένων).}

translate G CCDlgSortOption {Ταξινόμηση:}
translate G CCDlgListOnlyOwnMove {Μόνον παρτίδες στις οποίες παίζω εγώ}
translate G CCOrderClassicTxt {Τοποθεσία, Διοργάνωση, Γύρος, Αποτέλεσμα, Λευκά, Μαύρα}
translate G CCOrderMyTimeTxt {Το ρολόι μου}
translate G CCOrderTimePerMoveTxt {Χρόνος ανά κίνηση μέχρι τον επόμενο έλεγχο χρόνου}
translate G CCOrderStartDate {Ημερομηνία έναρξης}
translate G CCOrderOppTimeTxt {Ρολόι αντιπάλου}

translate G CCDlgConfigRelay {Παρακολούθηση παρτίδων}
translate G CCDlgConfigRelayHelp {Μετάβαση στην σελίδα παρτίδας http://www.iccf-webchess.com και εμφάνιση της παρτίδας για παρακολούθηση. Αν βλέπετε την σκακιέρα αντιγράψτε την διεύθυνση URL από τον φυλλομετρητή σας στην παρακάτω λίστα. Μόνον ένα URL ανά γραμμή!\nΠαράδειγμα: http://www.iccf-webchess.com/MakeAMove.aspx?id=266452}

# Connect Hardware dialogs
translate G ExtHWConfigConnection {Προσαρμογή εξωτερικών συσκευών}
translate G ExtHWPort {Θύρα}
translate G ExtHWEngineCmd {Εντολή μηχανής}
translate G ExtHWEngineParam {Παράμετροι μηχανής}
translate G ExtHWShowButton {Εμφάνιση κουμπιού}
translate G ExtHWHardware {Συσκευές}
translate G ExtHWNovag {Novag Citrine}
translate G ExtHWInputEngine {Μηχανής εισόδου}
translate G ExtHWNoBoard {No board}
translate G NovagReferee {Διαιτητής}

# Input Engine dialogs
translate G IEConsole {Κονσόλα εισόδου μηχανής}
translate G IESending {Κινήσεις που εστάλησαν για}
translate G IESynchronise {Συγχρονισμός}
translate G IERotate  {Περιστροφή}
translate G IEUnableToStart {Αδυναμία εκκίνησης της μηχανής εισόδου:}


# Calculation of Variations
translate G DoneWithPosition {Ολοκλήρωση της θέσης}

translate G Board {Σκακιέρα}
translate G showGameInfo {Εμφάνιση πληροφοριών παρτίδας}
translate G autoResizeBoard {Αυτόματη αλλαγή μεγέθους σκακιέρας}
translate G DockTop {Μετάβαση στην κορυφή}
translate G DockBottom {Μετάβαση στο κάτω μέρος}
translate G DockLeft {Μετάβαση αριστερά}
translate G DockRight {Μετάβαση δεξιά}
translate G Undock {Αποκόληση}

# Switcher window
translate G ChangeIcon {Αλλαγή εικονιδίου...}

}
# end of greek.tcl

# hungary.tcl:
# Hungarian text for menu names and status bar help messages for SCID
# Translated by: Gbor Szts

addLanguage H Hungarian 0 iso8859-2

proc setLanguage_H {} {

# File menu:
menuText H File "Fjl" 0
menuText H FileNew "j..." 0 {j SCID-adatbzis ltrehozsa}
menuText H FileOpen "Megnyit..." 3 {Meglv SCID-adatbzis megnyitsa}
menuText H FileClose "Bezr" 2 {Az aktv SCID-adatbzis bezrsa}
menuText H FileFinder "Fjlkeres" 0 {Kinyitja a Fjlkeres ablakot.}
menuText H FileBookmarks "Knyvjelzk" 0 {Knyvjelzmen (gyorsbillenty: Ctrl+B)}
menuText H FileBookmarksAdd "j knyvjelz" 0 \
  {Megjelli az aktulis jtszmt s llst.}
menuText H FileBookmarksFile "Knyvjelz mentse" 11 \
  {Az llshoz tartoz knyvjelzt kln knyvtrba teszi.}
menuText H FileBookmarksEdit "Knyvjelzk szerkesztse..." 13 \
  {Knyvjelzk szerkesztse}
menuText H FileBookmarksList "Megjelents listaknt" 13 \
  {A knyvjelzk knyvtrai nem almenknt, hanem listaknt jelennek meg.}
menuText H FileBookmarksSub "Megjelents almenknt" 13 \
  {A knyvjelzk knyvtrai nem listaknt, hanem almenknt jelennek meg.}
menuText H FileMaint "Gondozs" 0 {SCID adatbzisgondoz eszkzk}
menuText H FileMaintWin "Adatbzisgondoz ablak" 0 \
  {Kinyitja/becsukja az SCID adatbzisgondoz ablakot.}
menuText H FileMaintCompact "Adatbzis tmrtse..." 10 \
  {Eltvoltja az adatbzisbl a trlt jtszmkat s a hasznlaton kvl ll neveket.}
menuText H FileMaintClass "Osztlyba sorols..." 0 \
  {jra kiszmtja az sszes jtszma ECO-kdjt.}
menuText H FileMaintSort "Rendezs..." 0 \
  {Rendezi az adatbzis sszes jtszmjt.}
menuText H FileMaintDelete "Ikerjtszmk trlse..." 0 \
  {Megkeresi az ikerjtszmkat, s megjelli ket trlsre.}
menuText H FileMaintTwin "Ikerkeres ablak" 4 \
  {Kinyitja/becsukja az ikerkeres ablakot.}
menuText H FileMaintName "Nevek helyesrsa" 0 {Nvszerkeszt s helyesrsi eszkzk}
menuText H FileMaintNameEditor "Nvszerkeszt" 0 \
  {Kinyitja/becsukja a nvszerkeszt ablakot.}
menuText H FileMaintNamePlayer "Jtkosnevek ellenrzse..." 0 \
  {A helyesrs-ellenrz fjl segtsgvel ellenrzi a jtkosok nevt.}
menuText H FileMaintNameEvent "Esemnynevek ellenrzse..." 0 \
  {A helyesrs-ellenrz fjl segtsgvel ellenrzi esemnyek nevt.}
menuText H FileMaintNameSite "Helynevek ellenrzse..." 0 \
  {A helyesrs-ellenrz fjl segtsgvel ellenrzi a helysznek nevt.}
menuText H FileMaintNameRound "Fordulnevek ellenrzse..." 0 \
  {A helyesrs-ellenrz fjl segtsgvel ellenrzi a fordulk nevt.}
menuText H FileReadOnly "rsvdelem..." 0 \
  {Az aktulis adatbzist csak olvashatv teszi, nehogy meg lehessen vltoztatni.}
menuText H FileSwitch "Adatbzisvlts" 0 \
  {tvlt egy msik megnyitott adatbzisra.}
menuText H FileExit "Kilp" 2 {Kilp SCID-bl.}
menuText H FileMaintFixBase "Megrongldott adatbzis javtsa" 25 {Megprblja megjavtani a megrongldott adatbzist.}

# Edit menu:
menuText H Edit "Szerkeszts" 1
menuText H EditAdd "j vltozat" 0 {Ennl a lpsnl j vltozatot szr be a jtszmba.}
menuText H EditDelete "Vltozat trlse" 9 {Trl egy vltozatot ennl a lpsnl.}
menuText H EditFirst "Els vltozatt tesz" 0 \
  {Els helyre teszi a vltozatot a listn.}
menuText H EditMain "Fvltozatt tesz" 0 \
  {A vltozatot fvltozatt lpteti el.}
menuText H EditTrial "Vltozat kiprblsa" 0 \
  {Elindtja/meglltja a prbazemmdot, amellyel egy elgondolst lehet a tbln kiprblni.}
menuText H EditStrip "Lecsupaszt" 2 {Eltvoltja a megjegyzseket vagy a vltozatokat ebbl a jtszmbl.}
# ====== TODO To be translated ======
menuText H EditUndo "Undo" 0 {Undo last game change}
menuText H EditStripComments "Megjegyzsek" 0 \
  {Eltvoltja az sszes megjegyzst s elemzst ebbl a jtszmbl.}
menuText H EditStripVars "Vltozatok" 0 {Eltvoltja az sszes vltozatot ebbl a jtszmbl.}
menuText H EditStripBegin "Az elejtl" 3 \
  {Levgja a jtszma elejt}
menuText H EditStripEnd "A vgig" 2 \
  {Levgja a jtszma vgt}
menuText H EditReset "Kirti a Vgasztalt" 2 \
  {Alaphelyzetbe hozza a Vgasztalt, hogy az teljesen res legyen.}
menuText H EditCopy "A Vgasztalra msolja ezt a jtszmt." 15 \
  {Ezt a jtszmt tmsolja a Vgasztal adatbzisba.}
menuText H EditPaste "Beilleszti az utols jtszmt a Vgasztalrl." 0 \
  {A Vgasztal aktv jtszmjt beilleszti ide.}
menuText H EditPastePGN "A vglap tartalmt PGN-jtszmaknt beilleszti" 20 \
  {A vglap tartalmt PGN-jells jtszmnak tekinti, s idemsolja.}
menuText H EditSetup "Kezdlls fellltsa..." 14 \
  {Fellltja a kezdllst ehhez a jtszmhoz.}
menuText H EditCopyBoard "lls msolsa FEN-knt" 17 \
  {Az aktulis llst FEN-jellssel a vglapra msolja.}
menuText H EditPasteBoard "Kezdlls beillesztse" 13 \
  {Fellltja a kezdllst kijellt szveg (vglap) alapjn.}

# Game menu:
menuText H Game "Jtszma" 0
menuText H GameNew "j jtszma" 0 \
  {j jtszmt kezd; a vltoztatsokat elveti.}
menuText H GameFirst "Betlti az els jtszmt." 11 {Betlti az els szrt jtszmt.}
menuText H GamePrev "Betlti az elz jtszmt." 12 {Betlti az elz szrt jtszmt.}
menuText H GameReload "Ismt betlti az aktulis jtszmt." 0 \
  {jra betlti ezt a jtszmt; elvet minden vltoztatst.}
menuText H GameNext "Betlti a kvetkez jtszmt." 10 {Betlti a kvetkez szrt jtszmt.}
menuText H GameLast "Betlti az utols jtszmt." 11 {Betlti az utols szrt jtszmt.}
menuText H GameRandom "Vletlenszeren betlt egy jtszmt." 0 {Vletlenszeren betlt egy szrt jtszmt.}
menuText H GameNumber "Megadott sorszm jtszma betltse..." 9 \
  {Betlti a sorszmmal megadott jtszmt.}
menuText H GameReplace "Ments cservel..." 7 \
  {Elmenti ezt a jtszmt; fellrja a rgi vltozatot.}
menuText H GameAdd "Ments j jtszmaknt..." 0 \
  {Elmenti ezt a jtszmt; j jtszmt hoz ltre az adatbzisban.}
menuText H GameDeepest "Megnyits azonostsa" 10 \
  {Az ECO-knyvben szerepl legnagyobb mlysgig megy bele a jtszmba.}
menuText H GameGotoMove "Ugrs megadott sorszm lpshez..." 1 \
  {Megadott sorszm lpshez ugrik az aktulis jtszmban.}
menuText H GameNovelty "jts keresse..." 1 \
  {Megkeresi ebben a jtszmban az els olyan lpst, amely korbban nem fordult el.}

# Search Menu:
menuText H Search "Keress" 0
menuText H SearchReset "Szr trlse" 6 {Alaphelyzetbe hozza a szrt, hogy az sszes jtszma benne legyen.}
menuText H SearchNegate "Szr neglsa" 6 {Neglja a szrt, hogy csak a kizrt jtszmk legyenek benne.}
menuText H SearchCurrent "Aktulis lls..." 0 {A tbln lv llst keresi.}
menuText H SearchHeader "Fejlc..." 0 {Keress fejlc (jtkos, esemny, stb.) alapjn}
menuText H SearchMaterial "Anyag/szerkezet..." 6 {Keress anyag vagy llsszerkezet alapjn}
menuText H SearchUsing "Keresfjl hasznlata..." 0 {Keress SearchOptions fjl hasznlatval}

# Windows menu:
menuText H Windows "Ablakok" 0
menuText H WindowsComment "Megjegyzsszerkeszt" 0 {Megnyitja/bezrja a megjegyzsszerkesztt.}
menuText H WindowsGList "Jtszmk listja" 9 {Kinyitja/becsukja a jtszmk listjt mutat ablakot.}
menuText H WindowsPGN "PGN" 0 \
  {Kinyitja/becsukja a PGN-(jtszmajegyzs)-ablakot.}
menuText H WindowsPList "Jtkoskeres" 0 {Kinyitja/becsukja a jtkoskerest.}
menuText H WindowsTmt "Versenykeres" 0 {Kinyitja/becsukja a versenykerest.}
menuText H WindowsSwitcher "Adatbzisvlt" 0 \
  {Kinyitja/becsukja az adatbzisvlt ablakot.}
menuText H WindowsMaint "Adatbzisgondoz" 9 \
  {Kinyitja/becsukja az adatbzisgondoz ablakot.}
menuText H WindowsECO "ECO-bngsz" 0 {Kinyitja/becsukja az ECO-bngsz ablakot.}
menuText H WindowsRepertoire "Repertorszerkeszt" 0 \
  {Megnyitja/bezrja a megnyitsi repertorszerkesztt.}
menuText H WindowsStats "Statisztika" 0 \
  {Kinyitja/becsukja a szrsi statisztika ablakt.}
menuText H WindowsTree "Faszerkezet" 0 {Kinyitja/becsukja a faszerkezet-ablakot.}
menuText H WindowsTB "Vgjtktblzatok" 8 \
  {Kinyitja/becsukja a vgjtktblzatok ablakt.}
menuText H WindowsBook "Megnyitstrablak" 3 {Kinyitja/becsukja a megnyitstrablakot.}
menuText H WindowsCorrChess "Levelezsi sakk" 14 {Open/close the Correspondence window}

# Tools menu:
menuText H Tools "Eszkzk" 0
menuText H ToolsAnalysis "Elemz motor..." 0 \
  {Elindt/lellt egy sakkelemz programot.}
menuText H ToolsAnalysis2 "Msodik elemz motor..." 1 \
  {Elindtja/lelltja a 2. sakkelemz programot.}
menuText H ToolsCross "Versenytblzat" 0 {Megmutatja az ehhez a jtszmhoz tartoz verseny tblzatt.}
menuText H ToolsEmail "Levelezsi sakk" 0 \
  {Kinyitja/becsukja az elektronikus sakklevelezs lebonyoltsra szolgl ablakot.}
menuText H ToolsFilterGraph "Szrgrafikon" 0 \
  {Kinyitja/becsukja a szrgrafikont mutat ablakot.}
menuText H ToolsAbsFilterGraph "Abszolt szrgrafikon" 0 {Kinyitja/becsukja az abszolt rtkeket mutat szrgrafikon-ablakot}
menuText H ToolsOpReport "Megnyitsi sszefoglal" 0 \
  {Ismertett kszt az aktulis llshoz tartoz megnyitsrl.}
menuText H ToolsOpenBaseAsTree "Adatbzis megnyitsa faknt" 10   {Faszerkezet-ablakban megnyit egy adatbzist.}
menuText H ToolsOpenRecentBaseAsTree "Nemrg hasznlt adatbzis megnyitsa faknt" 7   {Faszerkezet-ablakban megnyit egy nemrg hasznlt adatbzist.}
menuText H ToolsTracker "Figurakvet"  0 {Kinyitja/becsukja a figurakvet ablakot.}
menuText H ToolsTraining "Edzs"  0 {Segdeszkzk edzshez (taktika, megnyits,...) }
menuText H ToolsTacticalGame "Taktikai jtszma"  0 {Taktikai jelleg jtszma kezdse}
menuText H ToolsSeriousGame "Komoly jtszma"  0 {Komoly jtszma kezdse}
menuText H ToolsTrainOpenings "Megnyits"  0 {Edzs repertorral}
# ====== TODO To be translated ======
menuText H ToolsTrainReviewGame "Review game"  0 {Guess moves played in a game}
menuText H ToolsTrainTactics "Taktika"  0 {Feladvnyok megfejtse}
menuText H ToolsTrainCalvar "Vltozatszmts"  0 {Vltozatszmts gyakorlsa}
menuText H ToolsTrainFindBestMove "Legjobb lps"  0 {A legjobb lps megkeresse}
menuText H ToolsTrainFics "Internetes jtszma"  0 {Jtk a freechess.org szerveren}
menuText H ToolsBookTuning "Megnyitstr-hangols" 13 {Megnyitstr-hangols}
menuText H ToolsConnectHardware "Hardver csatlakoztatsa" 8 {Kls hardver csatlakoztatsa}
menuText H ToolsConnectHardwareConfigure "Bellts" 0 {Kls hardver s kapcsolat belltsa}
menuText H ToolsConnectHardwareNovagCitrineConnect "Novag Citrine csatlakoztatsa" 0 {Novag Citrine csatlakoztatsa}
menuText H ToolsConnectHardwareInputEngineConnect "Bejv motor csatlakoztatsa" 7 {Bejv motor (pl. DGT) csatlakoztatsa}
menuText H ToolsPInfo "Jtkosinformci"  0 \
  {Kinyitja/frissti a jtkos adatait tartalmaz ablakot.}
menuText H ToolsPlayerReport "sszefoglal jtkosrl..." 0 \
    {sszefoglalt kszt a jtkosrl}
menuText H ToolsRating "rtkszm alakulsa" 0\
  {Grafikusan brzolja, hogyan alakult az aktulis jtszma rsztvevinek rtkszma.}
menuText H ToolsScore "Eredmny alakulsa" 1 {Megmutatja az eredmnygrafikont.}
menuText H ToolsExpCurrent "Az aktulis jtszma exportlsa" 21 \
  {Szvegfjlba rja az aktulis jtszmt.}
menuText H ToolsExpCurrentPGN "Exportls PGN-fjlba..." 11 \
  {PGN-fjlba rja az aktulis jtszmt.}
menuText H ToolsExpCurrentHTML "Exportls HTML-fjlba..." 11 \
  {HTML-fjlba rja az aktulis jtszmt.}
menuText H ToolsExpCurrentHTMLJS "Jtszma exportlsa HTML s JavaScript fjlba" 28 {Az aktulis jtszmt HTML s JavaScript fjlba rja.}  
menuText H ToolsExpCurrentLaTeX "Exportls LaTeX-fjlba..." 11 \
  {LaTeX-fjlba rja az aktulis jtszmt.}
menuText H ToolsExpFilter "Az sszes szrt jtszma exportlsa" 11 \
  {Szvegfjlba rja az sszes szrt jtszmt.}
menuText H ToolsExpFilterPGN "Szr exportlsa PGN-fjlba..." 18 \
  {PGN-fjlba rja az sszes szrt jtszmt.}
menuText H ToolsExpFilterHTML "Szr exportlsa HTML-fjlba..." 18 \
  {HTML-fjlba rja az sszes szrt jtszmt.}
menuText H ToolsExpFilterHTMLJS "Szr exportlsa HTML s JavaScript fjlba" 30 {Az sszes kiszrt jtszmt HTML s JavaScript fjlba rja.}  
menuText H ToolsExpFilterLaTeX "Szr exportlsa LaTeX-fjlba..." 18 \
  {LaTeX-fjlba rja az sszes szrt jtszmt.}
menuText H ToolsImportOne "PGN-jtszma importlsa..." 0 \
  {PGN-formtum jtszma importlsa}
menuText H ToolsImportFile "PGN-fjl importlsa..." 2 \
  {PGN-fjl sszes jtszmjnak importlsa}
menuText H ToolsStartEngine1 "Az 1. motor elindtsa" 3  {Elindtja az 1. motort.}
menuText H ToolsStartEngine2 "A 2. motor elindtsa" 2  {Elindtja a 2. motort.}
# ====== TODO To be translated ======
menuText H ToolsCaptureBoard "Capture Current Board..." 0  {Save the current board as an image.}
menuText H Play "Jtk" 0
menuText H CorrespondenceChess "Levelezsi sakk" 0 {Segdeszkzk eMail vagy Xfcc alap levelezsi sakkhoz}
menuText H CCConfigure "Belltsok" 0 {Kls eszkzk s alaptulajdonsgok}
# ====== TODO To be translated ======
menuText H CCConfigRelay "Configure observations..." 10 {Configure games to be observed}
menuText H CCOpenDB "Adatbzis megnyitsa" 0 {Megnyitja az alaprtelmezs levelezsi adatbzist.}
menuText H CCRetrieve "Jtszmk bekrse" 0 {Jtszmk lekrdezse kls (Xfcc-) segdeszkz tjn}
menuText H CCInbox "Bejv postafik feldolgozsa" 7 {A SCID bejv postafikjban tallhat sszes fjl feldolgozsa}
menuText H CCSend "Lps elkldse" 8 {Lps elkldse eMail vagy kls (Xfcc-) segdeszkz tjn}
menuText H CCResign "Felads" 0 {Felads (nem eMail tjn)}
menuText H CCClaimDraw "Dntetlen ignylse" 10 {Lps elkldse s dntetlen ignylse (nem eMail tjn)}
menuText H CCOfferDraw "Dntetlenajnlat" 0 {Lps elkldse s dntetlenajnlat (nem eMail tjn)}
menuText H CCAcceptDraw "Dntetlenajnlat elfogadsa" 17 {Dntetlenajnlat elfogadsa (nem eMail tjn)}
menuText H CCNewMailGame "j eMail-es jtszma" 0 {j eMail-es jtszma kezdse}
menuText H CCMailMove "Lps elkldse" 4 {Lps elkldse az ellenflnek eMail tjn}
menuText H CCGamePage "Jtszmaoldal..." 0 {Bngszvel jelenti meg a jtszmt.}
# ====== TODO To be translated ======
menuText H CCEditCopy "Copy Gamelist to Clipbase" 0 {Copy the games as CSV list to clipbase}

# Options menu:
menuText H Options "Belltsok" 0
menuText H OptionsBoard "Sakktbla" 0 {Sakktbla megjelensnek megvltoztatsa}
menuText H OptionsBoardSize "Tblamret" 0 {A tbla mretnek megvltoztatsa}
menuText H OptionsBoardPieces "Figurk stlusa" 0 {A figurk megjelensi formjnak megvltoztatsa}
menuText H OptionsBoardColors "Sznek..." 0 {A tbla szneinek megvltoztatsa}
menuText H OptionsBoardGraphics "Mezk..." 0 {A mezk rajzolatnak megvltoztatsa}
translate H OptionsBGW {A mezk rajzolatnak kivlasztsa}
translate H OptionsBoardGraphicsText {A vilgos s stt mezk grafikus fjljai:}
menuText H OptionsBoardNames "Jtkosnevek..." 0 {Jtkosnevek tszerkesztse}
menuText H OptionsExport "Exportls" 1 {Exportlsi belltsok vltoztatsa}
menuText H OptionsFonts "Karakterkszlet" 0 {Karakterkszlet vltoztatsa}
menuText H OptionsFontsRegular "Szoksos" 0 {A szoksos karakterkszlet vltoztatsa}
menuText H OptionsFontsMenu "Men" 0 {A menk karakterkszletnek a vltoztatsa}
menuText H OptionsFontsSmall "Kisbets" 0 {A kisbets karakterkszlet vltoztatsa}
# ====== TODO To be translated ======
menuText H OptionsFontsTiny "Tiny" 0 {Change the tiny font}
menuText H OptionsFontsFixed "Rgztett" 0 {A rgztett szlessg karakterkszlet vltoztatsa}
menuText H OptionsGInfo "Jtszmainformci" 0 {Jtszmainformci vltoztatsa}
menuText H OptionsLanguage "Nyelv" 0 {A men nyelvnek kivlasztsa}
menuText H OptionsMovesTranslatePieces "Figurk nevnek lefordtsa" 0 {Lefordtja a figurk nevnek els betjt.}
# ====== TODO To be translated ======
menuText H OptionsMovesHighlightLastMove "Highlight last move" 0 {Highlight last move}
# ====== TODO To be translated ======
menuText H OptionsMovesHighlightLastMoveDisplay "Show" 0 {Display last move Highlight}
# ====== TODO To be translated ======
menuText H OptionsMovesHighlightLastMoveWidth "Width" 0 {Thickness of line}
# ====== TODO To be translated ======
menuText H OptionsMovesHighlightLastMoveColor "Color" 0 {Color of line}
menuText H OptionsMoves "Lpsek" 0 {Lpsek bevitelnek belltsai}
menuText H OptionsMovesAsk "Lps cserje eltt rkrdez." 6 \
  {Mieltt trna egy meglev lpst, rkrdez.}
menuText H OptionsMovesAnimate "Megelevents ideje" 0 \
  {Belltja az idt lpsek megeleventshez.}
menuText H OptionsMovesDelay "Automatikus visszajtszs ksleltetse..." 0 \
  {Belltja a ksleltetst automatikus visszajtszshoz.}
menuText H OptionsMovesCoord "Lps megadsa koordintkkal" 15 \
  {Koordintkkal megadott lpst ("g1f3") is elfogad.}
menuText H OptionsMovesSuggest "Javaslat" 0 \
  {Be/kikapcsolja a lpsjavaslatot.}
menuText H OptionsShowVarPopup "Vltozatok ablaka" 0 {Be- vagy kikapcsolja a vltozatokat megjelent ablakot.}  
menuText H OptionsMovesSpace "Szkzk a lps sorszma utn" 0 {Szkzkkel egszti ki a lps sorszmt.}  
menuText H OptionsMovesKey "Billenty-kiegszts" 0 \
  {Be/kikapcsolja a billentyzettel rszlegesen bevitt lpsek automatikus kiegsztst.}
# ====== TODO To be translated ======
menuText H OptionsMovesShowVarArrows "Show Arrows for Variations" 0 {Turn on/off arrows showing moves in variations}
menuText H OptionsNumbers "Szmformtum" 1 {Szmformtum kivlasztsa}
menuText H OptionsStartup "Indts" 0 {Az indtskor kinyitand ablakok kivlasztsa}
menuText H OptionsTheme "Tma" 0 {A program megjelensnek megvltoztatsa}
menuText H OptionsWindows "Ablakok" 0 {Ablakbelltsok}
menuText H OptionsWindowsIconify "Automatikus ikonizls" 12 \
  {A f ablak ikonizlsakor az sszes tbbit is ikonizlja.}
menuText H OptionsWindowsRaise "Automatikus elhozs" 12 \
  {Elhoz bizonyos ablakokat (pl. elrehalads-svokat), amikor el vannak takarva.}
menuText H OptionsSounds "Hangok..." 3 {Lpseket bejelent hangok definilsa}
menuText H OptionsWindowsDock "Ablakok helyhez rgztse" 8 {Dock windows}
menuText H OptionsWindowsSaveLayout "Elrendezs mentse" 11 {Ablakelrendezs mentse}
menuText H OptionsWindowsRestoreLayout "Elrendezs visszalltsa" 11 {Ablakelrendezs visszalltsa}
menuText H OptionsWindowsShowGameInfo "Jtszmainformci" 0 {Jtszma adatainak megjelentse ablakban}
menuText H OptionsWindowsAutoLoadLayout "Az els elrendezs automatikus betltse" 19 {Indulskor automatikusan betlti az els ablakelrendezst.}
menuText H OptionsToolbar "Eszkztr" 0 {A f ablak eszkztrnak sszelltsa}
menuText H OptionsECO "ECO-fjl betltse..." 2 {Betlti az ECO-osztlyoz fjlt.}
menuText H OptionsSpell "Helyesrs-ellenrz fjl betltse..." 0 \
  {Betlti a helyesrs-ellenrz fjlt.}
menuText H OptionsTable "Vgjtktblzatok knyvtra..." 0 \
  {Vgjtktblzat-fjl kivlasztsa; a knyvtrban lev sszes vgjtktblzatot hasznlatba veszi.}
menuText H OptionsRecent "Aktulis fjlok..." 3 \
  {A Fjl menben megjelentett aktulis fjlok szmnak megvltoztatsa}
menuText H OptionsBooksDir "A megnyitstr knyvtra" 6 {Kijelli a megnyitstr knyvtrt.}
menuText H OptionsTacticsBasesDir "Az adatbzisok knyvtra" 4 {Kijelli a taktikai (edzs) adatbzisok knyvtrt.}
menuText H OptionsSave "Belltsok mentse" 12 \
  "Minden bellthat rtket elment a $::optionsFile fjlba."
menuText H OptionsAutoSave "Belltsok automatikus mentse kilpskor." 0 \
  {Automatikusan elment minden belltst, amikor kilpsz SCID-bl.}

# Help menu:
menuText H Help "Segtsg" 0
menuText H HelpContents "Tartalomjegyzk" 0 {Megjelenti a tartalomjegyzket}
menuText H HelpIndex "Trgymutat" 1 {Megjelenti a trgymutatt}
menuText H HelpGuide "Rvid ismertet" 0 {Rvid ismertett nyjt a program hasznlatrl.}
menuText H HelpHints "Krds-felelet" 0 {Nhny hasznos tancs}
menuText H HelpContact "Cmek" 0 {Fontosabb internetcmek}
menuText H HelpTip "A nap tippje" 2 {Hasznos tipp SCID hasznlathoz}
menuText H HelpStartup "Indul ablak" 0 {A program indtsakor megjelen ablak}
menuText H HelpAbout "SCID-rl" 0 {Tjkoztats SCID-rl}

# Game info box popup menu:
menuText H GInfoHideNext "Elrejti a kvetkez lpst." 0
menuText H GInfoMaterial "Anyagi helyzetet." 0
menuText H GInfoFEN "FEN-formtum" 0
menuText H GInfoMarks "Mutatja a sznes mezket s nyilakat." 10
menuText H GInfoWrap "Hossz sorok trdelse" 0
menuText H GInfoFullComment "Teljes kommentr" 7
menuText H GInfoPhotos "Fnykpek" 1
menuText H GInfoTBNothing "Vgjtktblzatok: nincs informci" 20
menuText H GInfoTBResult "Vgjtktblzatok: csak eredmny" 20
menuText H GInfoTBAll "Vgjtktblzatok: eredmny s a legjobb lpsek" 42
menuText H GInfoDelete "Trli/helyrelltja ezt a jtszmt." 0
menuText H GInfoMark "Megjelli ezt a jtszmt/megsznteti a jellst." 0
menuText H GInfoInformant "Tjkoztat rtkek hatrainak belltsa" 0

# Main window buttons:
helpMsg H .main.fbutton.button.start {Ugrs a jtszma elejre  (billenty: Home)}
helpMsg H .main.fbutton.button.end {Ugrs a jtszma vgre  (billenty: End)}
helpMsg H .main.fbutton.button.back {Vissza egy lpssel  (billenty: balra mutat nyl)}
helpMsg H .main.fbutton.button.forward {Elre egy lpssel  (billenty: jobbra mutat nyl)}
helpMsg H .main.fbutton.button.intoVar {Belp egy vltozatba  (gyorsbillenty: v).}
helpMsg H .main.fbutton.button.exitVar {Kilp az aktulis vltozatbl  (gyorsbillenty: z).}
helpMsg H .main.fbutton.button.flip {Tbla elforgatsa  (gyorsbillenty: .)}
helpMsg H .main.fbutton.button.coords {Koordintk be- vagy kikapcsolsa  (gyorsbillenty: 0)}
helpMsg H .main.fbutton.button.stm {Be- vagy kikapcsolja a lpsjogot mutat ikont}
helpMsg H .main.fbutton.button.autoplay {Automatikus visszajtszs  (billenty: Ctrl+Z)}

# General buttons:
translate H Back {Vissza}
translate H Browse {Tallz}
translate H Cancel {Mgse}
translate H Continue {Tovbb}
translate H Clear {Trl}
translate H Close {Bezr}
translate H Contents {Tartalom}
translate H Defaults {Alaprtkek}
translate H Delete {Trl}
translate H Graph {Grafikon}
translate H Help {Segtsg}
translate H Import {Import}
translate H Index {Trgymutat}
translate H LoadGame {Jtszma betltse}
translate H BrowseGame {Jtszma nzegetse}
translate H MergeGame {Jtszma beolvasztsa}
translate H MergeGames {Jtszmk beolvasztsa}
translate H Preview {Elnzet}
translate H Revert {Elvet}
translate H Save {Ment}
translate H Search {Keres}
translate H Stop {llj}
translate H Store {Trol}
translate H Update {Frisst}
translate H ChangeOrient {Ablak elhelyezkedsnek vltoztatsa}
translate H ShowIcons {Ikonok megjelentse} ;# ***
translate H None {Nincs}
translate H First {Els}
translate H Current {Aktulis}
translate H Last {Utols}

# General messages:
translate H game {jtszma}
translate H games {jtszma}
translate H move {lps}
translate H moves {lps}
translate H all {mind}
translate H Yes {Igen}
translate H No {Nem}
translate H Both {Mindkett}
translate H King {Kirly}
translate H Queen {Vezr}
translate H Rook {Bstya}
translate H Bishop {Fut}
translate H Knight {Huszr}
translate H Pawn {Gyalog}
translate H White {Vilgos}
translate H Black {Stt}
translate H Player {Jtkos}
translate H Rating {rtkszm}
translate H RatingDiff {rtkszmklnbsg (vilgos - stt)}
translate H AverageRating {tlagos rtkszm}
translate H Event {Esemny}
translate H Site {Helyszn}
translate H Country {Orszg}
translate H IgnoreColors {A szn kzmbs}
translate H Date {Dtum}
translate H EventDate {Az esemny dtuma}
translate H Decade {vtized}
translate H Year {v}
translate H Month {Hnap}
translate H Months {janur februr mrcius prilis mjus jnius jlius augusztus szeptember oktber november december}
translate H Days {vasrnap htf kedd szerda cstrtk pntek szombat}
translate H YearToToday {Az utols egy vben}
translate H Result {Eredmny}
translate H Round {Fordul}
translate H Length {Hossz}
translate H ECOCode {ECO-kd}
translate H ECO {ECO}
translate H Deleted {trlt}
translate H SearchResults {A keress eredmnye}
translate H OpeningTheDatabase {Adatbzis megnyitsa}
translate H Database {Adatbzis}
translate H Filter {Szr}
translate H noGames {Nincs tallat}
translate H allGames {sszes jtszma}
translate H empty {res}
translate H clipbase {vgasztal}
translate H score {Eredmny}
translate H StartPos {Kezdlls}
translate H Total {sszesen}
translate H readonly {read-only} ;# ***

# Standard error messages:
translate H ErrNotOpen {Ez az adatbzis nincs megnyitva.}
translate H ErrReadOnly {Ez az adatbzis csak olvashat; nem lehet megvltoztatni.}
translate H ErrSearchInterrupted {Keress megszaktva; az eredmnyek hinyosak.}

# Game information:
translate H twin {iker}
translate H deleted {trlt}
translate H comment {megjegyzs}
translate H hidden {rejtett}
translate H LastMove {Utols lps}
translate H NextMove {Kvetkez}
translate H GameStart {Jtszma eleje}
translate H LineStart {Elgazs eleje}
translate H GameEnd {Jtszma vge}
translate H LineEnd {Elgazs vge}

# Player information:
translate H PInfoAll {Eredmnyek az <b>sszes</b> jtszma alapjn}
translate H PInfoFilter {Eredmnyek a <b>szrt</b> jtszmk alapjn}
translate H PInfoAgainst {Eredmnyek, ha az ellenfl}
translate H PInfoMostWhite {Leggyakoribb megnyitsok vilgosknt}
translate H PInfoMostBlack {Leggyakoribb megnyitsok sttknt}
translate H PInfoRating {rtkszm alakulsa}
translate H PInfoBio {letrajz}
translate H PInfoEditRatings {rtkszmok tszerkesztse}

# Tablebase information:
translate H Draw {Dntetlen}
translate H stalemate {patt}
translate H withAllMoves {az sszes lpssel}
translate H withAllButOneMove {egy hjn az sszes lpssel}
translate H with {with}
translate H only {csak}
translate H lose {vesztenek}
translate H loses {veszt}
translate H allOthersLose {minden ms veszt}
translate H matesIn {mates in}
translate H hasCheckmated {mattot adott}
translate H longest {leghosszabb}
translate H WinningMoves {Nyer lps}
translate H DrawingMoves {Dntetlenre vezet lps}
translate H LosingMoves {Veszt lps}
translate H UnknownMoves {Bizonytalan kimenetel lps}

# Tip of the day:
translate H Tip {Tipp}
translate H TipAtStartup {Tipp indulskor}

# Tree window menus:
menuText H TreeFile "Fjl" 0
menuText H TreeFileFillWithBase "Adatbzis betltse a gyorsttrba" 0 {Betlti a gyorsttrba a megnyitott adatbzis sszes jtszmjt.}
menuText H TreeFileFillWithGame "Jtszma betltse a gyorsttrba" 0 {Betlti a gyorsttrba a megnyitott adatbzis aktulis jtszmjt.}
menuText H TreeFileSetCacheSize "A gyorsttr mrete" 14 {Belltja a gyorsttr mrett.}
menuText H TreeFileCacheInfo "Gyorsttr-hasznlat" 12 {Tjkoztat a gyorsttr hasznlatrl}
menuText H TreeFileSave "Cache-fjl mentse" 11 {Elmenti a faszerkezet-cache-fjlt (.stc)}
menuText H TreeFileFill "Cache-fjl feltltse" 14 \
  {Feltlti a cache-fjlt gyakori megnyitsokkal.}
menuText H TreeFileBest "Legjobb jtszmk listja" 0 {Megmutatja a legjobb jtszmkat a frl.}
menuText H TreeFileGraph "Grafikon" 0 {Megmutatja ennek a fagnak a grafikonjt.}
menuText H TreeFileCopy "Szveg msolsa a vglapra" 0 \
  {A kirt statisztikai adatokat a vglapra msolja.}
menuText H TreeFileClose "Faablak bezrsa" 10 {Bezrja a faszerkezet-ablakot.}
menuText H TreeMask "Maszk" 0
menuText H TreeMaskNew "j" 0 {j maszk}
menuText H TreeMaskOpen "Megnyits" 0 {Maszk megnyitsa}
# ====== TODO To be translated ======
menuText H TreeMaskOpenRecent "Open recent" 0 {Open recent mask}
menuText H TreeMaskSave "Ments" 5 {Maszk mentse}
menuText H TreeMaskClose "Bezrs" 0 {Maszk bezrsa}
menuText H TreeMaskFillWithGame "Feltlts jtszmval" 1 {Maszk feltltse jtszmval}
menuText H TreeMaskFillWithBase "Feltlts adatbzissal" 2 {Maszk feltltse az adatbzis sszes jtszmjval}
menuText H TreeMaskInfo "Informci" 0 {Az aktulis maszk fbb adatai}
# ====== TODO To be translated ======
menuText H TreeMaskDisplay "Display mask map" 0 {Show mask data in a tree form}
# ====== TODO To be translated ======
menuText H TreeMaskSearch "Search" 0 {Search in current mask}
menuText H TreeSort "Rendezs" 0
menuText H TreeSortAlpha "ABC" 0
menuText H TreeSortECO "ECO-kd" 0
menuText H TreeSortFreq "Gyakorisg" 0
menuText H TreeSortScore "Pontszm" 0
menuText H TreeOpt "Belltsok" 0
menuText H TreeOptSlowmode "Lass zemmd" 0 {Lass frissts (nagy pontossg)}
menuText H TreeOptFastmode "Gyors zemmd" 0 {Gyors frissts (nincsenek lpscserk)}
menuText H TreeOptFastAndSlowmode "Gyors s lass zemmd" 1 {Gyors majd lass frissts}
menuText H TreeOptStartStop "Automatikus frissts" 0 {tvltja a faszerkezet-ablak automatikus frisstst.}
menuText H TreeOptLock "Rgzts" 0 {A ft az aktulis adatbzishoz kti ill. a ktst feloldja.}
menuText H TreeOptTraining "Edzs" 0 {Edzszemmd be- vagy kikapcsolsa}
menuText H TreeOptAutosave "Cache-fjl automatikus mentse" 11 \
  {A faablak bezrsakor automatikusan elmenti a cache-fjlt.}
menuText H TreeHelp "Segtsg" 0
menuText H TreeHelpTree "Segtsg a fhoz" 0
menuText H TreeHelpIndex "Tartalom" 0
translate H SaveCache {Cache mentse}
translate H Training {Edzs}
translate H LockTree {Rgzts}
translate H TreeLocked {rgztve}
translate H TreeBest {Legjobb}
translate H TreeBestGames {A fa legjobb jtszmi}
translate H TreeTitleRow \
  {    Lps  ECO       Gyakorisg  Eredm. tll Telj. tl.v}
translate H TreeTotal {SSZESEN}
translate H DoYouWantToSaveFirst {Akarod elbb menteni?}
translate H AddToMask {Add hozz a maszkhoz}
translate H RemoveFromMask {Vedd ki a maszkbl}
translate H AddThisMoveToMask {Add hozz ezt a lpst a maszkhoz}
# ====== TODO To be translated ======
translate H SearchMask {Search in Mask}
# ====== TODO To be translated ======
translate H DisplayMask {Display Mask}
translate H Nag {NAG-kd}
translate H Marker {Jells}
translate H Include {Belevesz}
translate H Exclude {Kizr}
translate H MainLine {Fvltozat}
translate H Bookmark {Knyvjelz}
translate H NewLine {Soremels}
translate H ToBeVerified {Ellenrizni kell}
translate H ToTrain {Gyakorolni kell}
translate H Dubious {Ktes}
translate H ToRemove {Trlni kell}
translate H NoMarker {Nincs jells}
translate H ColorMarker {Szn}
translate H WhiteMark {Fehr}
translate H GreenMark {Zld}
translate H YellowMark {Srga}
translate H BlueMark {Kk}
translate H RedMark {Piros}
translate H CommentMove {Lps kommentlsa}
translate H CommentPosition {lls kommentlsa}
translate H AddMoveToMaskFirst {Elbb add hozz a lpst a maszkhoz}
translate H OpenAMaskFileFirst {Elbb nyiss meg egy maszkfjlt}
translate H Positions {llsok}
translate H Moves {Lpsek}

# Finder window:
menuText H FinderFile "Fjl" 0
menuText H FinderFileSubdirs "Keress az alknyvtrakban" 0
menuText H FinderFileClose "A fjlkeres bezrsa" 15
menuText H FinderSort "Rendezs" 0
menuText H FinderSortType "Tpus" 0
menuText H FinderSortSize "Mret" 0
menuText H FinderSortMod "Id" 0
menuText H FinderSortName "Nv" 0
menuText H FinderSortPath "tvonal" 0
menuText H FinderTypes "Tpusok" 0
menuText H FinderTypesScid "SCID-adatbzisok" 0
menuText H FinderTypesOld "Rgi formtum SCID-adatbzisok" 5
menuText H FinderTypesPGN "PGN-fjlok" 0
menuText H FinderTypesEPD "EPD-fjlok" 0
menuText H FinderTypesRep "Repertorfjlok" 0
menuText H FinderHelp "Segtsg" 0
menuText H FinderHelpFinder "Segtsg a fjlkereshz" 0
menuText H FinderHelpIndex "Tartalom" 0
translate H FileFinder {Fjlkeres}
translate H FinderDir {Knyvtr}
translate H FinderDirs {Knyvtrak}
translate H FinderFiles {Fjlok}
translate H FinderUpDir {fel}
translate H FinderCtxOpen {Megnyit}
translate H FinderCtxBackup {Biztonsgi msolat}
translate H FinderCtxCopy {Msol}
translate H FinderCtxMove {thelyez}
translate H FinderCtxDelete {Trl}

# Player finder:
menuText H PListFile "Fjl" 0
menuText H PListFileUpdate "Frisst" 0
menuText H PListFileClose "Jtkoskeres bezrsa" 16
menuText H PListSort "Rendezs" 0
menuText H PListSortName "Nv" 0
menuText H PListSortElo "l" 0
menuText H PListSortGames "Jtszmk" 0
menuText H PListSortOldest "Legrgibb" 0
menuText H PListSortNewest "Legjabb" 3

# Tournament finder:
menuText H TmtFile "Fjl" 0
menuText H TmtFileUpdate "Frisst" 0
menuText H TmtFileClose "A versenykeres bezrsa" 18
menuText H TmtSort "Rendezs" 0
menuText H TmtSortDate "Dtum" 0
menuText H TmtSortPlayers "Jtkosok" 0
menuText H TmtSortGames "Jtszmk" 1
menuText H TmtSortElo "l" 0
menuText H TmtSortSite "Helyszn" 0
menuText H TmtSortEvent "Esemny" 0
menuText H TmtSortWinner "Gyztes" 0
translate H TmtLimit "Lista hossza"
translate H TmtMeanElo "Legkisebb tlagos l"
translate H TmtNone "Nem talltam hozz versenyt."

# Graph windows:
menuText H GraphFile "Fjl" 0
menuText H GraphFileColor "Ments Color PostScript-knt..." 7
menuText H GraphFileGrey "Ments Greyscale PostScript-knt..." 7
menuText H GraphFileClose "Ablak bezrsa" 8
menuText H GraphOptions "Belltsok" 0
menuText H GraphOptionsWhite "Vilgos" 0
menuText H GraphOptionsBlack "Stt" 0
menuText H GraphOptionsBoth "Mindkett" 1
menuText H GraphOptionsPInfo "A jtkosinformci jtkosa" 0
translate H GraphFilterTitle "Szrgrafikon: gyakorisg 1000 jtszmnknt"
translate H GraphAbsFilterTitle "Szrgrafikon: jtszmk gyakorisga"
translate H ConfigureFilter {lltsd be az X tengelyt vre, rtkszmra vagy lpsre}
translate H FilterEstimate "Becsls"
translate H TitleFilterGraph "Scid: Szrgrafikon"

# Analysis window:
translate H AddVariation {Vltozat beszrsa}
translate H AddAllVariations {Add hozz az sszes vltozatot}
translate H AddMove {Lps beszrsa}
translate H Annotate {Lsd el rtkel jelekkel}
translate H ShowAnalysisBoard {Mutasd az elemztblt}
translate H ShowInfo {Mutasd a motor kirsait}
translate H FinishGame {Fejezd be a jtszmt}
translate H StopEngine {lltsd le a motort}
translate H StartEngine {Indtsd el a motort}
translate H LockEngine {Tartsd a motort ennl az llsnl}
translate H AnalysisCommand {Elemzsparancs}
translate H PreviousChoices {Korbbi vlasztsok}
translate H AnnotateTime {Kt lps kztti id msodpercben}
translate H AnnotateWhich {Vltozatok hozzadsa}
translate H AnnotateAll {Mindkt fl lpseihez}
translate H AnnotateAllMoves {rtkeld az sszes lpst}
translate H AnnotateWhite {Csak vilgos lpseihez}
translate H AnnotateBlack {Csak stt lpseihez}
translate H AnnotateBlundersOnly {Ha a tett lps nyilvnvalan durva hiba}
translate H AnnotateBlundersOnlyScoreChange {Az elemzs durva hibnak tekinti a lpst, ha az rtkels megvltozsa: }
translate H BlundersThreshold {Kszb}
# TODO: Translate
translate H ScoreAllMoves {Score all moves}
translate H LowPriority {Alacsony CPU-priorits}
translate H ClickHereToSeeMoves {Kattints ide, hogy lsd a lpseket}
translate H ConfigureInformant {rtkel jelek definilsa}
translate H Informant!? {rdekes lps}
translate H Informant? {Gyatra lps}
translate H Informant?? {Durva hiba}
translate H Informant?! {Ktes lps}
translate H Informant+= {Vilgosnak nmi elnye van}
translate H Informant+/- {Vilgosnak jelents elnye van}
translate H Informant+- {Vilgosnak dnt elnye van}
translate H Informant++- {A jtszma eldlt}
translate H Book {Megnyitstr}
translate H OtherBookMoves {Az ellenfl megnyitstra}
translate H OtherBookMovesTooltip {Azok a lpsek, amelyekre az ellenflnek van vlasza}

# Analysis Engine open dialog:
translate H EngineList {Elemz motorok listja}
translate H EngineName {Nv}
translate H EngineCmd {Parancssor}
translate H EngineArgs {Paramterek}
translate H EngineDir {Knyvtr}
translate H EngineElo {l}
translate H EngineTime {Dtum}
translate H EngineNew {j}
translate H EngineEdit {Szerkeszts}
translate H EngineRequired {A vastagbets mezk szksgesek, a tbbiek kihagyhatk.}

# Stats window menus:
menuText H StatsFile "Fjl" 0
menuText H StatsFilePrint "Nyomtats fjlba..." 0
menuText H StatsFileClose "Ablak bezrsa" 8
menuText H StatsOpt "Belltsok" 0

# PGN window menus:
menuText H PgnFile "Fjl" 0
menuText H PgnFileCopy "A vglapra msolja a jtszmt" 2
menuText H PgnFilePrint "Nyomtats fjlba..." 0
menuText H PgnFileClose "PGN-ablak bezrsa" 12
menuText H PgnOpt "Megjelents" 0
menuText H PgnOptColor "Sznes szveg" 0
menuText H PgnOptShort "Rvid (3-soros) fejlc" 0
menuText H PgnOptSymbols "Szimblumok hasznlata" 1
menuText H PgnOptIndentC "Megjegyzsek behzsa" 0
menuText H PgnOptIndentV "Vltozatok behzsa" 0
menuText H PgnOptColumn "Oszlopok stlusa (soronknt egy lps)" 0
menuText H PgnOptSpace "Szkz a lps sorszma utn" 3
menuText H PgnOptStripMarks "Sznes mezk s nyilak kifejtse" 2
menuText H PgnOptBoldMainLine "A fvltozat lpsei vastag betvel" 21
menuText H PgnColor "Sznek" 1
menuText H PgnColorHeader "Fejlc..." 0
menuText H PgnColorAnno "rtkel jelek..." 0
menuText H PgnColorComments "Megjegyzsek..." 0
menuText H PgnColorVars "Vltozatok..." 0
menuText H PgnColorBackground "Httr..." 0
menuText H PgnColorMain "Fvltozat..." 1
menuText H PgnColorCurrent "Az aktulis lps httrszne..." 3
menuText H PgnColorNextMove "A kvetkez lps httrszne..." 2
menuText H PgnHelp "Segtsg" 0
menuText H PgnHelpPgn "Segtsg PGN-hez" 9
menuText H PgnHelpIndex "Tartalom" 0
translate H PgnWindowTitle {Jtszmajegyzs - %u. jtszma}

# Crosstable window menus:
menuText H CrosstabFile "Fjl" 0
menuText H CrosstabFileText "Nyomtats szvegfjlba..." 10
menuText H CrosstabFileHtml "Nyomtats HTML-fjlba..." 10
menuText H CrosstabFileLaTeX "Nyomtats LaTeX-fjlba..." 10
menuText H CrosstabFileClose "Ablak bezrsa" 8
menuText H CrosstabEdit "Szerkeszts" 1
menuText H CrosstabEditEvent "Esemny" 0
menuText H CrosstabEditSite "Helyszn" 0
menuText H CrosstabEditDate "Dtum" 0
menuText H CrosstabOpt "Megjelents" 0
menuText H CrosstabOptAll "Krmrkzs" 0
menuText H CrosstabOptSwiss "Svjci" 0
menuText H CrosstabOptKnockout "Kiesses" 1
menuText H CrosstabOptAuto "Talld ki!" 0
menuText H CrosstabOptAges "letkor vben" 0
menuText H CrosstabOptNats "Nemzetisg" 0
menuText H CrosstabOptRatings "rtkszmok" 1
menuText H CrosstabOptTitles "Cmek" 0
menuText H CrosstabOptBreaks "Pontszm holtverseny eldntshez" 0
menuText H CrosstabOptDeleted "Trlt jtszmkkal egytt" 0
menuText H CrosstabOptColors "Sznek (csak svjci rendszer esetn)" 2
menuText H CrosstabOptColumnNumbers "Szmozott oszlopok (csak krmrkzshez)" 2
menuText H CrosstabOptGroup "Pontcsoportok" 1
menuText H CrosstabSort "Rendezs" 0
menuText H CrosstabSortName "Nv" 0
menuText H CrosstabSortRating "rtkszm" 0
menuText H CrosstabSortScore "Pontszm" 0
menuText H CrosstabColor "Szn" 2
menuText H CrosstabColorPlain "Kznsges szveg" 0
menuText H CrosstabColorHyper "Hypertext" 0
menuText H CrosstabHelp "Segtsg" 0
menuText H CrosstabHelpCross "Segtsg versenytblzathoz" 0
menuText H CrosstabHelpIndex "Tartalom" 0
translate H SetFilter {Szr belltsa}
translate H AddToFilter {Hozzadja a szrhz}
translate H Swiss {Svjci}
translate H Category {Kategria}

# Opening report window menus:
menuText H OprepFile "Fjl" 0
menuText H OprepFileText "Nyomtats szvegfjlba..." 10
menuText H OprepFileHtml "Nyomtats HTML-fjlba..." 10
menuText H OprepFileLaTeX "Nyomtats LaTeX-fjlba..." 10
menuText H OprepFileOptions "Belltsok..." 0
menuText H OprepFileClose "Ablak bezrsa" 8
menuText H OprepFavorites "Kedvencek" 0
menuText H OprepFavoritesAdd "sszefoglal hozzadsa..." 0
menuText H OprepFavoritesEdit "Kedvencek tszerkesztse..." 0
menuText H OprepFavoritesGenerate "sszefoglal ksztse..." 0
menuText H OprepHelp "Segtsg" 0
menuText H OprepHelpReport "Segtsg a megnyitsi sszefoglalhoz" 0
menuText H OprepHelpIndex "Trgymutat" 0

# Repertoire editor:
menuText H RepFile "Fjl" 0
menuText H RepFileNew "j" 0
menuText H RepFileOpen "Megnyits..." 3
menuText H RepFileSave "Ments..." 0
menuText H RepFileSaveAs "Ments msknt..." 5
menuText H RepFileClose "Ablak bezrsa" 8
menuText H RepEdit "Szerkeszts" 1
menuText H RepEditGroup "Csoport hozzadsa" 0
menuText H RepEditInclude "Beveend elgazs" 0
menuText H RepEditExclude "Kizrand elgazs" 0
menuText H RepView "Nzet" 0
menuText H RepViewExpand "Az sszes csoportot kibontja" 20
menuText H RepViewCollapse "Az sszes csoportot sszehzza" 20
menuText H RepSearch "Keress" 0
menuText H RepSearchAll "Az egsz repertorban..." 3
menuText H RepSearchDisplayed "Csak a megjelentett elgazsokban..." 0
#Ez igen gyans!
menuText H RepHelp "Segtsg" 0
menuText H RepHelpRep "Segtsg a repertorhoz" 0
menuText H RepHelpIndex "Tartalom" 0
translate H RepSearch "Keress a repertorban"
translate H RepIncludedLines "beveend elgazsok"
translate H RepExcludedLines "kizrand elgazsok"
translate H RepCloseDialog {Ebben a repertorban elmentetlen vltoztatsok vannak.

Tnyleg folytatni akarod, s elvetni a ltrehozott vltoztatsokat?
}

# Header search:
translate H HeaderSearch {Keress fejlc alapjn}
translate H EndSideToMove {Aki a jtszma vgn lpsre kvetkezik}
translate H GamesWithNoECO {Jtszmk ECO nlkl?}
translate H GameLength {Jtszmahossz}
translate H FindGamesWith {Megjellt jtszmk}
translate H StdStart {Klnleges kezds}
translate H Promotions {Gyalogtvltozsok}
translate H Comments {Megjegyzsek}
translate H Variations {Vltozatok}
translate H Annotations {rtkel jelek}
translate H DeleteFlag {Megjells trlse}
translate H WhiteOpFlag {Megnyits vilgossal}
translate H BlackOpFlag {Megnyits stttel}
translate H MiddlegameFlag {Kzpjtk}
translate H EndgameFlag {Vgjtk}
translate H NoveltyFlag {jts}
translate H PawnFlag {Gyalogszerkezet}
translate H TacticsFlag {Taktika}
translate H QsideFlag {Vezrszrnyi jtk}
translate H KsideFlag {Kirlyszrnyi jtk}
translate H BrilliancyFlag {Csillogs}
translate H BlunderFlag {Elnzs}
translate H UserFlag {Felhasznl}
translate H PgnContains {Szveg a PGN-ben}
# ====== TODO To be translated ======
translate H Annotator {Annotator}
# ====== TODO To be translated ======
translate H Cmnts {Annotated games only}

# Game list window:
translate H GlistNumber {Szm}
translate H GlistWhite {Vilgos}
translate H GlistBlack {Stt}
translate H GlistWElo {Vilgos lje}
translate H GlistBElo {Stt lje}
translate H GlistEvent {Esemny}
translate H GlistSite {Helyszn}
translate H GlistRound {Fordul}
translate H GlistDate {Dtum}
translate H GlistYear {v}
translate H GlistEDate {Az esemny dtuma}
translate H GlistResult {Eredmny}
translate H GlistLength {Hossz}
translate H GlistCountry {Orszg}
translate H GlistECO {ECO}
translate H GlistOpening {Megnyits}
translate H GlistEndMaterial {Vgs anyagi helyzet}
translate H GlistDeleted {Trlt}
translate H GlistFlags {Megjellsek}
translate H GlistVars {Variations}
translate H GlistComments {Megjegyzsek}
translate H GlistAnnos {rtkel jelek}
translate H GlistStart {Kezdet}
translate H GlistGameNumber {A jtszma sorszma}
# ====== TODO To be translated ======
translate H GlistAverageElo {Average Elo}
# ====== TODO To be translated ======
translate H GlistRating {Rating}
translate H GlistFindText {Szveg keresse}
translate H GlistMoveField {Lps}
translate H GlistEditField {Konfigurls}
translate H GlistAddField {Hozzad}
translate H GlistDeleteField {Eltvolt}
translate H GlistWidth {Szlessg}
translate H GlistAlign {Igazt}
# ====== TODO To be translated ======
translate H GlistAlignL {Align: left}
# ====== TODO To be translated ======
translate H GlistAlignR {Align: right}
# ====== TODO To be translated ======
translate H GlistAlignC {Align: center}
translate H GlistColor {Szn}
translate H GlistSep {Elvlaszt}
# ====== TODO To be translated ======
translate H GlistCurrentSep {-- Current --}
# ====== TODO To be translated ======
translate H GlistNewSort {New}
# ====== TODO To be translated ======
translate H GlistAddToSort {Add}
# ====== TODO To be translated ======
translate H GsortSort {Sort...}
# ====== TODO To be translated ======
translate H GsortDate {Date}
# ====== TODO To be translated ======
translate H GsortYear {Year}
# ====== TODO To be translated ======
translate H GsortEvent {Event}
# ====== TODO To be translated ======
translate H GsortSite {Site}
# ====== TODO To be translated ======
translate H GsortRound {Round}
# ====== TODO To be translated ======
translate H GsortWhiteName {White Name}
# ====== TODO To be translated ======
translate H GsortBlackName {Black Name}
# ====== TODO To be translated ======
translate H GsortECO {ECO}
# ====== TODO To be translated ======
translate H GsortResult {Result}
# ====== TODO To be translated ======
translate H GsortMoveCount {Move Count}
# ====== TODO To be translated ======
translate H GsortAverageElo {Average Elo}
# ====== TODO To be translated ======
translate H GsortCountry {Country}
# ====== TODO To be translated ======
translate H GsortDeleted {Deleted}
# ====== TODO To be translated ======
translate H GsortEventDate {Event Date}
# ====== TODO To be translated ======
translate H GsortWhiteElo {White Elo}
# ====== TODO To be translated ======
translate H GsortBlackElo {Black Elo}
# ====== TODO To be translated ======
translate H GsortComments {Comments}
# ====== TODO To be translated ======
translate H GsortVariations {Variations}
# ====== TODO To be translated ======
translate H GsortNAGs {NAGs}
# ====== TODO To be translated ======
translate H GsortAscending {Ascending}
# ====== TODO To be translated ======
translate H GsortDescending {Descending}
# ====== TODO To be translated ======
translate H GsortAdd {Add}
# ====== TODO To be translated ======
translate H GsortStore {Store}
# ====== TODO To be translated ======
translate H GsortLoad {Load}
translate H GlistRemoveThisGameFromFilter  {Vedd ki ezt a jtszmt a szrbl}
translate H GlistRemoveGameAndAboveFromFilter  {Vedd ki a jtszmt s az sszes fltte lvt a szrbl}
translate H GlistRemoveGameAndBelowFromFilter  {Vedd ki a jtszmt s az sszes alatta lvt a szrbl}
translate H GlistDeleteGame {Trld/lltsd helyre ezt a jtszmt} 
translate H GlistDeleteAllGames {Trld a szr sszes jtszmjt} 
translate H GlistUndeleteAllGames {lltsd helyre a szr sszes jtszmjt} 
# ====== TODO To be translated ======
translate H GlistMergeGameInBase {Merge Game in other base} 

# Maintenance window:
translate H DatabaseName {Az adatbzis neve:}
translate H TypeIcon {Tpusikon:}
translate H NumOfGames {Jtszmk:}
translate H NumDeletedGames {Trlt jtszmk:}
translate H NumFilterGames {Szrt jtszmk:}
translate H YearRange {vtartomny:}
translate H RatingRange {rtkszmtartomny:}
translate H Description {Lers}
translate H Flag {Megjells}
# ====== TODO To be translated ======
translate H CustomFlags {Custom flags}
translate H DeleteCurrent {Trli az aktulis jtszmt.}
translate H DeleteFilter {Trli a szrt jtszmkat.}
translate H DeleteAll {Minden jtszmt trl.}
translate H UndeleteCurrent {Helyrelltja az aktulis jtszmt.}
translate H UndeleteFilter {Helyrelltja a szrt jtszmkat.}
translate H UndeleteAll {Minden jtszmt helyrellt.}
translate H DeleteTwins {Trli az ikerjtszmkat.}
translate H MarkCurrent {Megjelli az aktulis jtszmt.}
translate H MarkFilter {Megjelli a szrt jtszmkat.}
translate H MarkAll {Minden jtszmt megjell.}
translate H UnmarkCurrent {Eltvoltja az aktulis jtszma megjellst.}
translate H UnmarkFilter {Eltvoltja a szrt jtszmk megjellst.}
translate H UnmarkAll {Minden jtszma megjellst eltvoltja.}
translate H Spellchecking {Helyesrs-ellenrzs}
translate H Players {Jtkosok}
translate H Events {Esemnyek}
translate H Sites {Helysznek}
translate H Rounds {Fordulk}
translate H DatabaseOps {Adatbzismveletek}
translate H ReclassifyGames {ECO alapjn osztlyozza a jtszmkat.}
translate H CompactDatabase {Adatbzis tmrtse}
translate H SortDatabase {Adatbzis rendezse}
translate H AddEloRatings {l-rtkszmok hozzadsa}
translate H AutoloadGame {Jtszmasorszm automatikus betltse}
#Igaz ez?
translate H StripTags {PGN-cmkk eltntetse}
translate H StripTag {Cmke eltntetse}
translate H Cleaner {Takart}
translate H CleanerHelp {
SCID Takartja el fogja vgezni az aktulis adatbzison az sszes olyan gondozsi feladatot, amelyet az albbi listrl kijellsz.

Az ECO-osztlyozsra s az ikertrlsre vonatkoz jelenlegi belltsok akkor jutnak rvnyre, ha ezeket a feladatokat is kijelld.
}
translate H CleanerConfirm {
Ha a Takart mr elindult, tbb nem lehet meglltani!

Nagy adatbzison a kivlasztott feladatoktl s aktulis belltsaiktl fggen a mvelet sokig eltarthat.

Biztos, hogy neki akarsz ltni a kijellt gondozsi feladatoknak?
}
translate H TwinCheckUndelete {vlts; "u" mindkettt helyrelltja)}
translate H TwinCheckprevPair {Elz pr}
translate H TwinChecknextPair {Kvetkez pr}
translate H TwinChecker {Scid: Ikerjtszma-ellenrzs}
translate H TwinCheckTournament {E verseny jtszmi:}
translate H TwinCheckNoTwin {Nem ikrek  }
translate H TwinCheckNoTwinfound {Ennek a jtszmnak nincs ikertestvre.\nEbben az ablakban akkor lehet megjelenteni az ikreket, ha elbb az "Ikerjtszmk trlse..." funkcit hasznlod. }
translate H TwinCheckTag {Cmkk ellenrzse...}
translate H TwinCheckFound1 {Scid $result ikerjtszmt tallt,}
translate H TwinCheckFound2 { s megjellte ket trlsre.}
translate H TwinCheckNoDelete {Ebben az adatbzisban nincsenek trlend jtszmk.}
translate H TwinCriteria1 {Ikerjtszmk megtallst clz belltsaid azzal a veszllyel jrnak,\nhogy hasonl lpseket tartalmaz (nem-iker) jtszmkat is megjellk trlsre..}
translate H TwinCriteria2 {Ha "azonos lpsek"-nl "Nem"-et vlasztottad, akkor clszer "Igen"-t vlasztani a sznek, az esemny, a helyszn, a fordul, az v s a hnap belltsainl.\nAkarod folytatni, s mindenkppen trlni az ikreket?}
translate H TwinCriteria3 {Ajnlatos "azonos helyszn", "azonos fordul" s "azonos v" belltsai kzl legalbb kettt "Igen"-nek vlasztani.\nAkarod folytatni, s mindenkppen trlni az ikreket?}
translate H TwinCriteriaConfirm {Scid: Erstsd meg az ikerbelltsokat}
translate H TwinChangeTag "Vltoztasd meg a kvetkez jtszmacmkket:\n\n"
translate H AllocRatingDescription "Ez a parancs a jelenlegi helyesrsellenrz fjl felhasznlsval l-pontokkal ltja el az adatbzis jtszmit. Ha egy jtkosnak jelenleg nincs lje, de a jtszma idejn rvnyes lje benne van a helyesrsellenrz fjlban, azt az lt fogja kapni."
translate H RatingOverride "Fellrjam a meglv 0-tl klnbz lket?"
translate H AddRatings "Adj lket ehhez:"
translate H AddedRatings {Scid $r l-rtkszmot adott $g jtszmhoz.}
translate H NewSubmenu "j almen"

# Comment editor:
translate H AnnotationSymbols  {rtkel szimblumok:}
translate H Comment {Megjegyzs:}
translate H InsertMark {Megjells beszrsa}
translate H InsertMarkHelp {
Megjells beszrsa/trlse: szn, tpus, mez kivlasztsa.
Nyl beszrsa/trlse: Kattints a jobb gombbal kt mezn.
}

# Nag buttons in comment editor:
translate H GoodMove {J lps}
translate H PoorMove {Rossz lps}
translate H ExcellentMove {Kitn lps}
translate H Blunder {Elnzs}
translate H InterestingMove {rdekes lps}
translate H DubiousMove {Ktes rtk lps}
translate H WhiteDecisiveAdvantage {Vilgosnak dnt elnye van.}
translate H BlackDecisiveAdvantage {Sttnek dnt elnye van.}
translate H WhiteClearAdvantage {Vilgos elnye nyilvnval.}
translate H BlackClearAdvantage {Stt elnye nyilvnval.}
translate H WhiteSlightAdvantage {Vilgos valamivel jobban ll.}
translate H BlackSlightAdvantage {Stt valamivel jobban ll.}
translate H Equality {Egyenl lls}
translate H Unclear {Tisztzatlan lls}
translate H Diagram {Diagram}

# Board search:
translate H BoardSearch {lls keresse}
translate H FilterOperation {Elvgzend mvelet az aktulis szrn:}
translate H FilterAnd {S (Szr szktse)}
translate H FilterOr {VAGY (Szr bvtse)}
translate H FilterIgnore {SEMMI (Szr trlse)}
translate H SearchType {A keress fajtja:}
translate H SearchBoardExact {Pontos lls (minden figura azonos mezn)}
translate H SearchBoardPawns {Gyalogok (azonos anyag, minden gyalog azonos mezn)}
translate H SearchBoardFiles {Vonalak (azonos anyag, minden gyalog azonos vonalon)}
translate H SearchBoardAny {Brmi (azonos anyag, gyalogok s figurk brhol)}
# ====== TODO To be translated ======
translate H SearchInRefDatabase { Search in base }
translate H LookInVars {Vltozatokban is keres.}

# Material search:
translate H MaterialSearch {Keress anyagra}
translate H Material {Anyag}
translate H Patterns {Alakzatok}
translate H Zero {Nullzs}
translate H Any {Brmi}
translate H CurrentBoard {Aktulis lls}
translate H CommonEndings {Gyakori vgjtkok}
translate H CommonPatterns {Gyakori alakzatok}
translate H MaterialDiff {Anyagklnbsg}
translate H squares {mezk}
translate H SameColor {Azonos szn}
translate H OppColor {Ellenkez szn}
translate H Either {Brmelyik}
translate H MoveNumberRange {Lpstartomny}
translate H MatchForAtLeast {Egyezzen legalbb}
translate H HalfMoves {fl lpsig.}

# Common endings in material search:
translate H EndingPawns {Gyalogvgjtkok}
translate H EndingRookVsPawns {Bstya gyalog(ok) ellen}
translate H EndingRookPawnVsRook {Bstya s 1 gyalog bstya ellen}
translate H EndingRookPawnsVsRook {Bstya s gyalogok bstya ellen}
translate H EndingRooks {Bstyavgjtkok}
translate H EndingRooksPassedA {Bstyavgjtkok szabad a-gyaloggal}
translate H EndingRooksDouble {Ketts bstyavgjtkok}
translate H EndingBishops {Futvgjtkok}
translate H EndingBishopVsKnight {Fut huszr ellen}
translate H EndingKnights {Huszrvgjtkok}
translate H EndingQueens {Vezrvgjtkok}
translate H EndingQueenPawnVsQueen {Vezr s 1 gyalog vezr ellen}
translate H BishopPairVsKnightPair {Futpr huszrpr ellen a kzpjtkban}

# Common patterns in material search:
translate H PatternWhiteIQP {Izollt vilgos vezrgyalog}
translate H PatternWhiteIQPBreakE6 {d4-d5 ttrs e6 ellen}
translate H PatternWhiteIQPBreakC6 {d4-d5 ttrs c6 ellen}
translate H PatternBlackIQP {Izollt stt vezrgyalog}
translate H PatternWhiteBlackIQP {Izollt vilgos d-gyalog izollt stt d-gyalog ellen}
translate H PatternCoupleC3D4 {Izollt vilgos c3-d4 gyalogpr}
translate H PatternHangingC5D5 {Lg stt gyalogok c5-n s d5-n}
translate H PatternMaroczy {Marczy-centrum (gyalogok c4-en s e4-en)}
translate H PatternRookSacC3 {Bstyaldozat c3-on}
translate H PatternKc1Kg8 {O-O-O O-O ellen (Kc1 s Kg8)}
translate H PatternKg1Kc8 {O-O O-O-O ellen (Kg1 s Kc8)}
translate H PatternLightFian {Vilgos mezej fianchetto (g2 fut b7 fut ellen)}
translate H PatternDarkFian {Stt mezej fianchetto (b2 fut g7 fut ellen)}
translate H PatternFourFian {Ngyes fianchetto (futk b2-n, g2-n, b7-en s g7-en)}

# Game saving:
translate H Today {Ma}
translate H ClassifyGame {Jtszma osztlyozsa}

# Setup position:
translate H EmptyBoard {Tbla letakartsa}
translate H InitialBoard {Alaplls}
translate H SideToMove {Ki lp?}
translate H MoveNumber {Lps szma}
translate H Castling {Sncols}
translate H EnPassantFile {"en passant"-vonal}
translate H ClearFen {FEN trlse}
translate H PasteFen {FEN beillesztse}
translate H SaveAndContinue {Ments s folytats}
translate H DiscardChangesAndContinue {Vltoztatsok elvetse\ns folytats}
translate H GoBack {Vissza}

# Replace move dialog:
translate H ReplaceMove {Lps cserje}
translate H AddNewVar {j vltozat beszrsa}
translate H NewMainLine {j fvltozat}
translate H ReplaceMoveMessage {Itt mr van lps.

Kicserlheted, miltal az sszes t kvet lps elvsz, vagy lpsedet beszrhatod j vltozatknt.

(Ha a jvben nem akarod ltni ezt az zenetet, kapcsold ki a Belltsok:Lpsek menben a "Lps cserje eltt rkrdez." belltst.)}

# Make database read-only dialog:
translate H ReadOnlyDialog {Ha ezt az adatbzist kizrlag olvashatv teszed, nem lehet vltoztatsokat vgezni rajta. Nem lehet jtszmkat elmenteni vagy kicserlni, sem a trlskijellseket megvltoztatni. Minden rendezs vagy ECO-osztlyozs csak tmeneti lesz.

Knnyen jra rhatv teheted az adatbzist, ha bezrod, majd jbl megnyitod.

Tnyleg kizrlag olvashatv akarod tenni ezt az adatbzist?}

# Clear game dialog:
translate H ClearGameDialog {Ez a jtszma megvltozott.

Tnyleg folytatni akarod, s elvetni a ltrehozott vltoztatsokat?
}

# Exit dialog:
translate H ExitDialog {Tnyleg ki akarsz lpni SCID-bl?}
translate H ExitUnsaved {A kvetkez adatbzisokban elmentetlen jtszmavltoztatsok vannak. Ha most kilpsz, ezek a vltoztatsok elvesznek.}

# Import window:
translate H PasteCurrentGame {Beilleszti az aktulis jtszmt.}
translate H ImportHelp1 {Bevisz vagy beilleszt egy PGN-formtum jtszmt a fenti keretbe.}
translate H ImportHelp2 {Itt jelennek meg az importls kzben fellp hibk.}
translate H OverwriteExistingMoves {Fellrjam a meglv lpseket?}

# ECO Browser:
translate H ECOAllSections {sszes ECO-osztly}
translate H ECOSection {ECO-osztly}
translate H ECOSummary {sszefoglals:}
translate H ECOFrequency {Alkdok gyakorisga:}

# Opening Report:
translate H OprepTitle {Megnyitsi sszefoglal}
translate H OprepReport {sszefoglal}
translate H OprepGenerated {Ksztette:}
#Lehet, hogy ez "kszlt"?
translate H OprepStatsHist {Statisztika s trtnet}
translate H OprepStats {Statisztika}
translate H OprepStatAll {Az sszefoglal sszes jtszmja}
translate H OprepStatBoth {Mindkett}
translate H OprepStatSince {Idszak kezdete:}
translate H OprepOldest {A legrgibb jtszmk}
translate H OprepNewest {A legjabb jtszmk}
translate H OprepPopular {Jelenlegi npszersg}
translate H OprepFreqAll {Gyakorisg a teljes idszakban:   }
translate H OprepFreq1   {Az utbbi 1 vben: }
translate H OprepFreq5   {Az utbbi 5 vben: }
translate H OprepFreq10  {Az utbbi 10 vben: }
translate H OprepEvery {minden %u jtszmban egyszer}
translate H OprepUp {%u%s nvekeds az vek sorn}
translate H OprepDown {%u%s cskkens az vek sorn}
translate H OprepSame {nincs vltozs az vek sorn}
translate H OprepMostFrequent {Leggyakoribb jtkosok}
translate H OprepMostFrequentOpponents {Leggyakoribb ellenfelek}
translate H OprepRatingsPerf {rtkszm s teljestmny}
translate H OprepAvgPerf {tlagos rtkszm s teljestmny}
translate H OprepWRating {Vilgos rtkszma}
translate H OprepBRating {Stt rtkszma}
translate H OprepWPerf {Vilgos teljestmnye}
translate H OprepBPerf {Stt teljestmnye}
translate H OprepHighRating {A legnagyobb tlagrtkszm jtszmk}
translate H OprepTrends {Tendencik}
translate H OprepResults {Eredmny hosszsg s gyakorisg szerint}
translate H OprepLength {Jtszmahossz}
translate H OprepFrequency {Gyakorisg}
translate H OprepWWins {Vilgos nyer: }
translate H OprepBWins {Stt nyer:   }
translate H OprepDraws {Dntetlen:    }
translate H OprepWholeDB {teljes adatbzis}
translate H OprepShortest {A legrvidebb gyzelmek}
translate H OprepMovesThemes {Lpsek s tmk}
translate H OprepMoveOrders {A vizsglt llshoz vezet lpssorrendek}
translate H OprepMoveOrdersOne \
  {Csak egy lpssorrend vezetett ehhez az llshoz:}
translate H OprepMoveOrdersAll \
  {%u lpssorrend vezetett ehhez az llshoz:}
translate H OprepMoveOrdersMany \
  {%u lpssorrend vezetett ehhez az llshoz. Az els %u:}
translate H OprepMovesFrom {A vizsglt llsban tett lpsek}
translate H OprepMostFrequentEcoCodes {Leggyakoribb ECO-kdok}
translate H OprepThemes {Pozcis tmk}
translate H OprepThemeDescription {Tmk gyakorisga az egyes jtszmk els %u lpsben}
translate H OprepThemeSameCastling {Sncols azonos oldalra}
translate H OprepThemeOppCastling {Sncols ellenkez oldalra}
translate H OprepThemeNoCastling {Egyik kirly sem sncolt.}
translate H OprepThemeKPawnStorm {Kirlyszrnyi gyalogroham}
translate H OprepThemeQueenswap {Vezrcsere}
translate H OprepThemeWIQP {Elszigetelt vilgos vezrgyalog}
translate H OprepThemeBIQP {Elszigetelt stt vezrgyalog}
translate H OprepThemeWP567 {Vilgos gyalog az 5./6./7. soron}
translate H OprepThemeBP234 {Stt gyalog a 4./3./2. soron}
translate H OprepThemeOpenCDE {Nylt c/d/e-vonal}
translate H OprepTheme1BishopPair {Csak az egyik flnek van futprja.}
translate H OprepEndgames {Vgjtkok}
translate H OprepReportGames {Az sszefoglal jtszmi}
translate H OprepAllGames    {sszes jtszma}
translate H OprepEndClass {Anyagi viszonyok az egyes jtszmk vgn}
translate H OprepTheoryTable {Elmlettblzat}
translate H OprepTableComment {a legnagyobb rtkszm %u jtszma alapjn}
translate H OprepExtraMoves {A kln megjegyzssel elltott lpsek szma az elmlettblzatban}
translate H OprepMaxGames {Az elmlettblzat ltrehozshoz felhasznlhat jtszmk maximlis szma}
translate H OprepViewHTML {HTML megtekintse}
translate H OprepViewLaTeX {LaTeX megtekintse}

# Player Report:
translate H PReportTitle {sszefoglal jtkosrl}
translate H PReportColorWhite {vilgossal}
translate H PReportColorBlack {stttel}
translate H PReportMoves {%s utn}
translate H PReportOpenings {Megnyitsok}
translate H PReportClipbase {Kirti a vglapot, s odamsolja a felttelnek megfelel jtszmkat}

# Piece Tracker window:
translate H TrackerSelectSingle {A bal egrgomb kivlasztja ezt a figurt.}
translate H TrackerSelectPair {A bal egrgomb kivlasztja ezt a figurt; a jobb egrgomb a prjt is kivlasztja.}
translate H TrackerSelectPawn {A bal egrgomb kivlasztja ezt a gyalogot; a jobb egrgomb az sszes gyalogot kivlasztja.}
translate H TrackerStat {Statisztika}
translate H TrackerGames {Jtszmk %-a, amelyekben erre a mezre lpett}
translate H TrackerTime {Id %-a, amelyet az egyes mezkn tlttt}
translate H TrackerMoves {Lpsek}
translate H TrackerMovesStart {Add meg a lps szmt, amelynl a nyomkvetsnek el kell kezddnie.}
translate H TrackerMovesStop {Add meg a lps szmt, amelynl a nyomkvetsnek be kell fejezdnie.}

# Game selection dialogs:
translate H SelectAllGames {Az adatbzis sszes jtszmja}
translate H SelectFilterGames {Csak a szrt jtszmk}
translate H SelectTournamentGames {Csak az aktulis verseny jtszmi}
translate H SelectOlderGames {Csak rgebbi jtszmk}

# Delete Twins window:
translate H TwinsNote {Kt jtszma akkor iker, ha ugyanazok jtsszk ket, s megfelelnek az alant meghatrozhat kritriumoknak. Az ikerprbl a rvidebb jtszma trldik. Javaslat: ikrek trlse eltt rdemes helyesrs-ellenrzst vgezni az adatbzison, mert az javtja az ikerfeldertst.}
translate H TwinsCriteria {Kritriumok: Az ikerjtszmk kzs tulajdonsgai...}
translate H TwinsWhich {A megvizsgland jtszmk}
translate H TwinsColors {Azonos szn?}
translate H TwinsEvent {Ugyanaz az esemny?}
translate H TwinsSite {Azonos helyszn?}
translate H TwinsRound {Ugyanaz a fordul?}
translate H TwinsYear {Azonos v?}
translate H TwinsMonth {Azonos hnap?}
translate H TwinsDay {Ugyanaz a nap?}
translate H TwinsResult {Azonos eredmny?}
translate H TwinsECO {Azonos ECO-kd?}
translate H TwinsMoves {Azonos lpsek?}
translate H TwinsPlayers {A jtkosok nevnek sszehasonltsakor:}
translate H TwinsPlayersExact {Teljes egyezs kell.}
translate H TwinsPlayersPrefix {Elg az els 4 betnek egyeznie.}
translate H TwinsWhen {Ikerjtszmk trlsekor}
translate H TwinsSkipShort {Hagyjuk figyelmen kvl az 5 lpsnl rvidebb jtszmkat?}
translate H TwinsUndelete {Elszr lltsuk helyre az sszes jtszmt?}
translate H TwinsSetFilter {A szrt lltsuk az sszes trlt ikerjtszmra?}
translate H TwinsComments {A megjegyzsekkel elltott jtszmkat mindig tartsuk meg?}
translate H TwinsVars {A vltozatokat tartalmaz jtszmkat mindig tartsuk meg?}
translate H TwinsDeleteWhich {Melyik jtszmt trljem?}
translate H TwinsDeleteShorter {A rvidebbet}
translate H TwinsDeleteOlder {A kisebb sorszmt}
translate H TwinsDeleteNewer {A nagyobb sorszmt}
translate H TwinsDelete {Jtszmk trlse}

# Name editor window:
translate H NameEditType {Szerkesztend nvtpus}
translate H NameEditSelect {Szerkesztend jtszmk}
translate H NameEditReplace {Cserl}
translate H NameEditWith {Erre}
translate H NameEditMatches {Egyezsek: Ctrl+1...Ctrl+9 vlaszt.}
# ====== TODO To be translated ======
translate H CheckGames {Check games}
# ====== TODO To be translated ======
translate H CheckGamesWhich {Check games}
# ====== TODO To be translated ======
translate H CheckAll {All games}
# ====== TODO To be translated ======
translate H CheckSelectFilterGames {Only games in filter}

# Classify window:
translate H Classify {Osztlyoz}
translate H ClassifyWhich {Mely jtszmk essenek t ECO-osztlyozson?}
translate H ClassifyAll {Az sszes (rja fell a rgi ECO-kdokat)}
translate H ClassifyYear {Az utbbi vben jtszott jtszmk}
translate H ClassifyMonth {Az utbbi hnapban jtszott jtszmk}
translate H ClassifyNew {Csak az eddig mg nem osztlyozott jtszmk}
translate H ClassifyCodes {Hasznland ECO-kdok}
translate H ClassifyBasic {Csak az alapkdok ("B12", ...)}
translate H ClassifyExtended {Kiterjesztett SCID-kdok ("B12j", ...)}

# Compaction:
translate H NameFile {Nvfjl}
translate H GameFile {Jtszmafjl}
translate H Names {Nevek}
translate H Unused {Hasznlaton kvl}
translate H SizeKb {Mret (kB)}
translate H CurrentState {Jelenlegi llapot}
translate H AfterCompaction {Tmrts utn}
translate H CompactNames {Nvfjl tmrtse}
translate H CompactGames {Jtszmafjl tmrtse}
translate H NoUnusedNames "Nincsenek nem hasznlt nevek, gyhogy a nvfjl mr teljesen tmr."
translate H NoUnusedGames "A nvfjl mr teljesen tmr."
translate H NameFileCompacted {Az adatbzis "[file tail [sc_base filename]]" nvfjlja tmrtve van.}
translate H GameFileCompacted {Az adatbzis "[file tail [sc_base filename]]" jtszmafjlja tmrtve van.}

# Sorting:
translate H SortCriteria {Kritriumok}
translate H AddCriteria {Kritriumok hozzadsa}
translate H CommonSorts {Szoksos rendezsek}
translate H Sort {Rendezs}

# Exporting:
translate H AddToExistingFile {Jtszmk hozzadsa ltez fjlhoz?}
translate H ExportComments {Megjegyzsek exportlsa?}
translate H ExportVariations {Vltozatok exportlsa?}
translate H IndentComments {Megjegyzsek igaztsa?}
translate H IndentVariations {Vltozatok igaztsa?}
translate H ExportColumnStyle {Oszlop stlusa (soronknt egy lps)?}
translate H ExportSymbolStyle {Szimblumok stlusa:}
translate H ExportStripMarks {Kivegye a megjegyzsekbl a mez- s nylmegjellseket?}

# Goto game/move dialogs:
translate H LoadGameNumber {A betltend jtszma sorszma:}
translate H GotoMoveNumber {Ugrs a kvetkez lpshez:}

# Copy games dialog:
translate H CopyGames {Jtszmk msolsa}
translate H CopyConfirm {
 Tnyleg t akarod msolni
 a [::utils::thousands $nGamesToCopy] szrt jtszmt
 a "$fromName" adatbzisbl
 a "$targetName" adatbzisba?
}
translate H CopyErr {Nem tudom tmsolni a jtszmkat.}
translate H CopyErrSource {forrs}
translate H CopyErrTarget {cl}
translate H CopyErrNoGames {szrjben nincsenek jtszmk.}
translate H CopyErrReadOnly {kizrlag olvashat.}
translate H CopyErrNotOpen {nincs megnyitva.}

# Colors:
translate H LightSquares {Vilgos mezk}
translate H DarkSquares {Stt mezk}
translate H SelectedSquares {Kivlasztott mezk}
translate H SuggestedSquares {Javasolt lpsek mezi}
translate H WhitePieces {Vilgos figurk}
translate H BlackPieces {Stt figurk}
translate H WhiteBorder {Vilgos krvonal}
translate H BlackBorder {Stt krvonal}

# Novelty window:
translate H FindNovelty {jts keresse}
translate H Novelty {jts}
translate H NoveltyInterrupt {jtskeress lelltva}
translate H NoveltyNone {Ebben a jtszmban nem talltam jtst.}
translate H NoveltyHelp {
SCID megkeresi az aktulis jtszma els olyan lpst, amely nem szerepel sem a kivlasztott adatbzisban, sem az ECO megnyitstrban.
}

# Sounds configuration:
translate H SoundsFolder {Hangfjlok knyvtra}
translate H SoundsFolderHelp {A knyvtrban a King.wav, a.wav, 1.wav, s..t. fjloknak kell szerepelnik.}
translate H SoundsAnnounceOptions {Lpsbemondsok belltsai}
translate H SoundsAnnounceNew {j lps bemondsa amint megtesszk}
translate H SoundsAnnounceForward {Lps bemondsa amikor egy lpst elre lpnk}
translate H SoundsAnnounceBack {Lps bemondsa amikor visszavesznk vagy egy lpst htra lpnk}

# Upgrading databases:
translate H Upgrading {Feljts}
translate H ConfirmOpenNew {
Ez rgi formtum (SCID 3) adatbzis, amelyet SCID 4 nem tud megnyitni, de mr ltrehozott egy j formtum (SCID 4) verzit.

Szeretnd megnyitni az adatbzis j formtum verzijt?
}
translate H ConfirmUpgrade {
Ez rgi formtum (SCID 3) adatbzis. j formtum verzit kell ltrehozni belle, hogy SCID 4 hasznlni tudja.

A feljts j verzit hoz ltre az adatbzisbl. Az eredeti fjlok srtetlenl megmaradnak.

Az eljrs eltarthat egy darabig, de csak egyszer kell elvgezni. Megszakthatod, ha tl sokig tart.

Szeretnd most feljtani ezt az adatbzist?
}

# Recent files options:
translate H RecentFilesMenu {Az aktulis fjlok szma a Fjl menben}
translate H RecentFilesExtra {Az aktulis fjlok szma a kiegszt almenben}

# My Player Names options:
translate H MyPlayerNamesDescription {
Add meg az ltalad kedvelt jtkosok nevt, soronknt egyet. Helyettest karaktereket (pl. "?" tetszleges karakter helyett, "*" tetszleges karaktersorozat helyett) is hasznlhatsz.

Amikor betltd egy a listn szerepl jtkos jtszmjt, a fablak sakktblja szksg esetn elfordul, hogy a jtszmt annak a jtkosnak a szemszgbl mutassa.
}
translate H showblunderexists {Jelezd a durva hibt}
translate H showblundervalue {Mutasd a durva hiba mrtkt}
translate H showscore {Mutasd az rtkelst}
translate H coachgame {Edz bekapcsolsa}
translate H configurecoachgame {Edzs zemmd belltsai}
translate H configuregame {Jtszmabelltsok}
translate H Phalanxengine {Phalanx}
translate H Coachengine {Edzmotor}
translate H difficulty {Nehzsg}
translate H hard {nehz}
translate H easy {knny}
translate H Playwith {Szned}
translate H white {vilgos}
translate H black {stt}
translate H both {mindkett}
translate H Play {Jtk}
translate H Noblunder {Nincs durva hiba}
translate H blunder {durva hiba}
translate H Noinfo {-- Nincs adat --}
translate H PhalanxOrTogaMissing {Phalanx vagy Toga nincs meg}
translate H moveblunderthreshold {egy lps durva hiba, ha a vesztesg nagyobb mint}
translate H limitanalysis {A motor ennyi ideig elemezhet}
translate H seconds {msodperc}
translate H Abort {Elg}
translate H Resume {Folytasd}
translate H OutOfOpening {Vge a megnyitstrnak}
translate H NotFollowedLine {Eltrtl a vltozattl}
translate H DoYouWantContinue {Akarod folytatni?}
translate H CoachIsWatching {Az edz figyel}
translate H Ponder {Folyamatos gondolkods}
translate H LimitELO {l korltozsa}
translate H DubiousMovePlayedTakeBack {Ktes lps, visszaveszed?}
translate H WeakMovePlayedTakeBack {Gyenge lps, visszaveszed?}
translate H BadMovePlayedTakeBack {Rossz lps, visszaveszed?}
translate H Iresign {Feladom.}
translate H yourmoveisnotgood {Ez nem j lps.}
translate H EndOfVar {A vltozatnak vge.}
translate H Openingtrainer {Megnyitsgyakorls}
translate H DisplayCM {Mutasd a szba jv lpseket}
translate H DisplayCMValue {Mutasd a szba jv lpsek rtkelst}
translate H DisplayOpeningStats {Mutasd a statisztikt}
translate H ShowReport {Mutasd a jelentst}
translate H NumberOfGoodMovesPlayed {a j lpsek szma}
translate H NumberOfDubiousMovesPlayed {a ktes lpsek szma}
translate H NumberOfMovesPlayedNotInRepertoire {a repertorban nem szerepl lpsek szma}
translate H NumberOfTimesPositionEncountered {az lls elfordulsainak a szma}
translate H PlayerBestMove  {Csak a legjobb lpseket engedlyezi}
translate H OpponentBestMove {Az ellenfl a legjobbakat lpi}
translate H OnlyFlaggedLines {Csak megjellt vltozatokat jtszhatsz meg}
translate H resetStats {Statisztika trlse}
translate H Repertoiretrainingconfiguration {Repertorgyakorls belltsai}
translate H Loadingrepertoire {Repertor betltse}
translate H Movesloaded {Betlttt lpsek}
translate H Repertoirenotfound {A repertor nincs meg.}
translate H Openfirstrepertoirewithtype {Elbb nyiss meg egy repertor-adatbzist a jobb oldali ikon segtsgvel.}
translate H Movenotinrepertoire {A lps nincs a repertorban.}
translate H PositionsInRepertoire {A repertorban szerepl llsok}
translate H PositionsNotPlayed {A nem jtszott llsok}
translate H PositionsPlayed {A megjtszott llsok}
translate H Success {Siker}
translate H DubiousMoves {Ktes lpsek}
translate H OutOfRepertoire {A repertor kimerlt.}
translate H ConfigureTactics {Taktika belltsai}
translate H ResetScores {Eredmnyek trlse}
translate H LoadingBase {Adatbzis betltse}
translate H Tactics {Taktika}
translate H ShowSolution {Mutasd meg a megfejtst.}
# ====== TODO To be translated ======
translate H NextExercise {Next exercise}
# ====== TODO To be translated ======
translate H PrevExercise {previous exercise}
# ====== TODO To be translated ======
translate H StopTraining {Stop training}
translate H Next {Kvetkez}
translate H ResettingScore {Eredmnyek trlse}
translate H LoadingGame {Jtszma betltse}
translate H MateFound {Megvan a matt.}
translate H BestSolutionNotFound {Nincs meg a legjobb megolds!}
translate H MateNotFound {Nincs meg a matt.}
translate H ShorterMateExists {Van rvidebb matt.}
translate H ScorePlayed {A megtett lps rtkelse}
translate H Expected {vrt}
translate H ChooseTrainingBase {Vlaszd ki az edzsadatbzist.}
translate H Thinking {Gondolkodom...}
translate H AnalyzeDone {Az elemzs ksz.}
translate H WinWonGame {Nyert jtszma megnyerse}
translate H Lines {Vltozatok}
translate H ConfigureUCIengine {UCI-motor belltsa}
translate H SpecificOpening {Meghatrozott megnyits}
translate H StartNewGame {j jtszma}
translate H FixedLevel {Megadott szint}
translate H Opening {Megnyits}
translate H RandomLevel {Vletlen szint}
translate H StartFromCurrentPosition {Ez legyen a kezdlls}
translate H FixedDepth {Adott mlysg}
translate H Nodes {Csompont} 
translate H Depth {Mlysg}
translate H Time {Id} 
translate H SecondsPerMove {Msodperc lpsenknt}
translate H Engine {Motor}
translate H TimeMode {Idbeoszts}
translate H TimeBonus {Idalap + nvekmny}
translate H TimeMin {perc}
translate H TimeSec {msodperc}
translate H AllExercisesDone {Minden gyakorlat ksz.}
translate H MoveOutOfBook {A lps nem szerepel a megnyitstrban.}
translate H LastBookMove {Utols lps a megnyitstrban}
translate H AnnotateSeveralGames {Tbb jtszma kommentlsa\na jelenlegitl eddig:}
translate H FindOpeningErrors {Megnyitsi hibk keresse}
translate H MarkTacticalExercises {Taktikai gyakorlatok megjellse}
translate H UseBook {Megnyitstr-hasznlat}
translate H MultiPV {Tbb vltozat}
translate H Hash {Hesmemria}
translate H OwnBook {A motor megnyitstrnak hasznlata}
translate H BookFile {Megnyitstr}
translate H AnnotateVariations {Vltozatok kommentlsa}
translate H ShortAnnotations {Rvid kommentr}
translate H addAnnotatorTag {rtkel jel hozzadsa}
translate H AddScoreToShortAnnotations {Rvid kommentr kiegsztse rtkelssel}
translate H Export {Export}
translate H BookPartiallyLoaded {Megnyitstr rszlegesen betltve}
translate H Calvar {Vltozatok szmtsa}
translate H ConfigureCalvar {Bellts}
translate H Reti {Rti}
translate H English {Angol}
translate H d4Nf6Miscellaneous {1.d4 Nf6 vegyes}
translate H Trompowsky {Trompowsky}
translate H Budapest {Budapest}
translate H OldIndian {indiai}
translate H BenkoGambit {Benk-csel}
translate H ModernBenoni {Modern Benoni}
translate H DutchDefence {Holland vdelem}
translate H Scandinavian {Skandinv}
translate H AlekhineDefence {Aljechin-vdelem}
translate H Pirc {Pirc}
translate H CaroKann {Caro-Kann}
translate H CaroKannAdvance {Betols Caro-Kann}
translate H Sicilian {Szicliai}
translate H SicilianAlapin {Szicliai Alapin}
translate H SicilianClosed {Zrt szicliai}
translate H SicilianRauzer {Szicliai Rauzer}
translate H SicilianDragon {Szicliai srkny}
translate H SicilianScheveningen {Szicliai Scheveningen}
translate H SicilianNajdorf {Szicliai Najdorf}
translate H OpenGame {Nylt megnyitsok}
translate H Vienna {Bcsi jtk}
translate H KingsGambit {Kirlycsel}
translate H RussianGame {Orosz vdelem}
translate H ItalianTwoKnights {Olasz megnyits/Ketts huszrjtk}
translate H Spanish {Spanyol}
translate H SpanishExchange {Cserespanyol}
translate H SpanishOpen {Nylt spanyol}
translate H SpanishClosed {Zrt spanyol}
translate H FrenchDefence {Francia vdelem}
translate H FrenchAdvance {Betols francia}
translate H FrenchTarrasch {Francia Tarrasch}
translate H FrenchWinawer {Francia Winawer}
translate H FrenchExchange {Cserefrancia}
translate H QueensPawn {Vezrgyalog megnyits}
translate H Slav {Szlv}
translate H QGA {Elfogadott vezrcsel}
translate H QGD {Elhrtott vezrcsel}
translate H QGDExchange {Elhrtott vezrcsel - cserevltozat}
translate H SemiSlav {Flszlv}
translate H QGDwithBg5 {Elhrtott vezrcsel Fg5-tel}
translate H QGDOrthodox {Orthodox vezrcsel}
translate H Grunfeld {Grnfeld}
translate H GrunfeldExchange {Grnfeld - cserevltozat}
translate H GrunfeldRussian {Grnfeld - orosz vltozat}
translate H Catalan {Kataln}
translate H CatalanOpen {Nylt kataln}
translate H CatalanClosed {Zrt kataln}
translate H QueensIndian {Vezrindiai}
translate H NimzoIndian {Nimzo-indiai}
translate H NimzoIndianClassical {Klasszikus Nimzo-indiai}
translate H NimzoIndianRubinstein {Nimzo-indiai - Rubinstein}
translate H KingsIndian {Kirlyindiai}
translate H KingsIndianSamisch {Kirlyindiai - Smisch}
translate H KingsIndianMainLine {Kirlyindiai - fvltozat}
translate H ConfigureFics {FICS belltsa}
translate H FICSGuest {Belps vendgknt}
translate H FICSServerPort {Szerverport}
# ====== TODO To be translated ======
translate H FICSServerAddress {IP Address}
# ====== TODO To be translated ======
translate H FICSRefresh {Refresh}
translate H FICSTimesealPort {Idblyegport}
translate H FICSSilence {Csend}
translate H FICSOffers {Ajnlatok}
# ====== TODO To be translated ======
translate H FICSConsole {Console}
translate H FICSGames {Jtszmk}
# ====== TODO To be translated ======
translate H FICSUnobserve {Stop observing game}
# ====== TODO To be translated ======
translate H FICSProfile {Display your history and profile}
# ====== TODO To be translated ======
translate H FICSRelayedGames {Relayed games}
translate H FICSFindOpponent {Ellenflkeres}
translate H FICSTakeback {Visszavtel}
translate H FICSTakeback2 {Visszavtel 2}
translate H FICSInitTime {Kezdeti id (perc)}
translate H FICSIncrement {Nvekmny (msodperc)}
translate H FICSRatedGame {les jtszma}
translate H FICSAutoColour {automatikus}
translate H FICSManualConfirm {kzi megersts}
translate H FICSFilterFormula {Szrformula}
translate H FICSIssueSeek {Keress}
translate H FICSChallenge {Kihvs}
translate H FICSAccept {elfogad}
translate H FICSDecline {elutast}
translate H FICSColour {Szn}
translate H FICSSend {kld}
translate H FICSConnect {Csatlakozs}
# ====== TODO To be translated ======
translate H FICSdefaultuservars {Use default variables}
# ====== TODO To be translated ======
translate H FICSObserveconfirm {Do you want to observe game}
# ====== TODO To be translated ======
translate H GameReview {Game review}
# ====== TODO To be translated ======
translate H GameReviewTimeExtended {Time extended}
# ====== TODO To be translated ======
translate H GameReviewMargin {Error margin}
# ====== TODO To be translated ======
translate H GameReviewAutoContinue {Auto continue when move is correct}
# ====== TODO To be translated ======
translate H GameReviewReCalculate {Use extended time}
# ====== TODO To be translated ======
translate H GameReviewAnalyzingMovePlayedDuringTheGame {Analyzing move played during the game}
# ====== TODO To be translated ======
translate H GameReviewAnalyzingThePosition {Analyzing the position}
# ====== TODO To be translated ======
translate H GameReviewEnterYourMove {Enter your move}
# ====== TODO To be translated ======
translate H GameReviewCheckingYourMove {Checking your move}
# ====== TODO To be translated ======
translate H GameReviewYourMoveWasAnalyzed {Your move was analyzed}
# ====== TODO To be translated ======
translate H GameReviewYouPlayedSameMove {You played the same move as in match}
# ====== TODO To be translated ======
translate H GameReviewScoreOfYourMove {Score of your move}
# ====== TODO To be translated ======
translate H GameReviewGameMoveScore {Game move's score}
# ====== TODO To be translated ======
translate H GameReviewEngineScore {Engine's score}
# ====== TODO To be translated ======
translate H GameReviewYouPlayedLikeTheEngine {You played like the engine}
# ====== TODO To be translated ======
translate H GameReviewNotEngineMoveButGoodMove {Not the engine move, but is also a good move}
# ====== TODO To be translated ======
translate H GameReviewMoveNotGood {This move is not good, score is}
# ====== TODO To be translated ======
translate H GameReviewMovesPlayedLike {Moves played like}
# ====== TODO To be translated ======
translate H GameReviewMovesPlayedEngine {Moves played like engine}
translate H CCDlgConfigureWindowTitle {Levelezsi sakk belltsai}
translate H CCDlgCGeneraloptions {ltalnos lehetsgek}
translate H CCDlgDefaultDB {Alaprtelmezs adatbzis:}
translate H CCDlgInbox {Bejv postafik (tvonal):}
translate H CCDlgOutbox {Kimen postafik (tvonal):}
translate H CCDlgXfcc {Xfcc-bellts:}
translate H CCDlgExternalProtocol {Kls protokollkezel (pl. Xfcc)}
translate H CCDlgFetchTool {Bekr eszkz:}
translate H CCDlgSendTool {Kld eszkz:}
translate H CCDlgEmailCommunication {eMail-kapcsolat}
translate H CCDlgMailPrg {Levelezprogram:}
translate H CCDlgBCCAddr {(B)CC-cm:}
translate H CCDlgMailerMode {zemmd:}
translate H CCDlgThunderbirdEg {pl. Thunderbird, Mozilla Mail, Icedove...}
translate H CCDlgMailUrlEg {pl. Evolution}
translate H CCDlgClawsEg {pl. Sylpheed Claws}
translate H CCDlgmailxEg {pl. mailx, mutt, nail...}
translate H CCDlgAttachementPar {Mellkletparamter:}
translate H CCDlgInternalXfcc {Bels Xfcc-tmogats hasznlata}
# ====== TODO To be translated ======
translate H CCDlgConfirmXfcc {Confirm moves}
translate H CCDlgSubjectPar {Trgyparamter:}
translate H CCDlgDeleteBoxes {Be/kimen postafik kirtse}
translate H CCDlgDeleteBoxesText {Tnyleg ki akarod rteni a levelezsi sakk be- s kimen postafikjait? Ehhez jra szinkronizlni kell, amely jtszmid utols llapott mutatja.}
# ====== TODO To be translated ======
translate H CCDlgConfirmMove {Confirm move}
# ====== TODO To be translated ======
translate H CCDlgConfirmMoveText {If you confirm, the following move and comment will be sent to the server:}
# ====== TODO To be translated ======
translate H CCDlgDBGameToLong {Inconsistent Mainline}
# ====== TODO To be translated ======
translate H CCDlgDBGameToLongError {The mainline in your database is longer than the game in your Inbox. If the Inbox contains current games, i.e. right after a sync, some moves were added to the mainline in the database erroneously.\nIn this case please shorten the mainline to (at max) move\n}
translate H CCDlgStartEmail {Start new eMail game}
translate H CCDlgYourName {Neved:}
translate H CCDlgYourMail {eMail-cmed:}
translate H CCDlgOpponentName {Az ellenfl neve:}
translate H CCDlgOpponentMail {Az ellenfl eMail-cme:}
translate H CCDlgGameID {Jtszmaazonost (egyedi):}
translate H CCDlgTitNoOutbox {Scid: A levelezsi sakk kimen postafikja}
translate H CCDlgTitNoInbox {Scid: A levelezsi sakk bejv postafikja}
translate H CCDlgTitNoGames {Scid: Nincsenek levelezsi jtszmk.}
translate H CCErrInboxDir {A levelezsi sakk bejv postafikjnak knyvtra:}
translate H CCErrOutboxDir {A levelezsi sakk kimen postafikjnak knyvtra:}
translate H CCErrDirNotUsable {nem ltezik vagy nem hozzfrhet!\nEllenrizd s javtsd ki a belltsokat.}
translate H CCErrNoGames {nem tartalmaz jtszmt!\nElbb krd be ket.}
translate H CCDlgTitNoCCDB {Scid: Nincs levelezsi adatbzis.}
translate H CCErrNoCCDB {Nincs megnyitva "levelezsi" tpus adatbzis. Nyiss meg egyet mieltt levelezsi funkcikat akarnl hasznlni.}
translate H CCFetchBtn {Krj be jtszmkat a szervertl, s dolgozd fel a bejv postafikot.}
translate H CCPrevBtn {Menj az elz jtszmhoz.}
translate H CCNextBtn {Menj a kvetkez jtszmhoz.}
translate H CCSendBtn {Lps elkldse}
translate H CCEmptyBtn {A postafikok kirtse}
translate H CCHelpBtn {Segtsg ikonokhoz s llapotjelzkhz\nltalnos segtsgrt nyomd meg F1-et!}
translate H CCDlgServerName {Szervernv:}
translate H CCDlgLoginName  {Bejelentkez nv:}
translate H CCDlgPassword   {Jelsz:}
translate H CCDlgURL        {Xfcc-URL:}
translate H CCDlgRatingType {rtkszm tpusa:}
translate H CCDlgDuplicateGame {Nem egyedi jtszmaazonost}
translate H CCDlgDuplicateGameError {Ez a jtszma egynl tbbszr fordul el adatbzisodban. Trld a msolatokat, s tmrtsd jtszmafjlodat (Fjl/Gondozs/Adatbzis tmrtse).}
# ====== TODO To be translated ======
translate H CCDlgSortOption {Sorting:}
# ====== TODO To be translated ======
translate H CCDlgListOnlyOwnMove {Only games I have the move}
# ====== TODO To be translated ======
translate H CCOrderClassicTxt {Site, Event, Round, Result, White, Black}
# ====== TODO To be translated ======
translate H CCOrderMyTimeTxt {My Clock}
# ====== TODO To be translated ======
translate H CCOrderTimePerMoveTxt {Time per move till next time control}
# ====== TODO To be translated ======
translate H CCOrderStartDate {Start date}
# ====== TODO To be translated ======
translate H CCOrderOppTimeTxt {Opponents Clock}
# ====== TODO To be translated ======
translate H CCDlgConfigRelay {Configure ICCF observations}
# ====== TODO To be translated ======
translate H CCDlgConfigRelayHelp {Go to the games page on http://www.iccf-webchess.com and display the game to be observed.  If you see the chessboard copy the URL from your browser to the list below. One URL per line only!\nExample: http://www.iccf-webchess.com/MakeAMove.aspx?id=266452}
translate H ExtHWConfigConnection {Kls hardver belltsa}
translate H ExtHWPort {Port}
translate H ExtHWEngineCmd {Motorparancs}
translate H ExtHWEngineParam {Motorparamter}
translate H ExtHWShowButton {Mutasd meg a nyomgombot.}
translate H ExtHWHardware {Hardver}
translate H ExtHWNovag {Novag Citrine}
translate H ExtHWInputEngine {Bemeneti motor}
translate H ExtHWNoBoard {Nincs sakktbla}
# ====== TODO To be translated ======
translate H NovagReferee {Referee}
translate H IEConsole {Bemeneti motor kezelszerve}
translate H IESending {Lpsek bekrve}
translate H IESynchronise {Szinkronizls}
translate H IERotate  {Forgats}
translate H IEUnableToStart {Nem tudom elindtani ezt a bemeneti motort:}
translate H DoneWithPosition {lls ksz}
translate H Board {Sakktbla}
translate H showGameInfo {A jtszma adatai}
translate H autoResizeBoard {A sakktbla automatikus tmretezse}
translate H DockTop {Mozgats fellre}
translate H DockBottom {Mozgats alulra}
translate H DockLeft {Mozgats balra}
translate H DockRight {Mozgats jobbra}
translate H Undock {Felolds}
# ====== TODO To be translated ======
translate H ChangeIcon {Change icon...}
}

# Tips of the day in Hungarian

set tips(H) {
  {
    Scid-ben tbb mint 30 oldalnyi <a Index>segtsg</a> van, s a legtbb Scid-ablakban
    az <b>F1</b> billenty megnyomsra elbukkan egy arra az ablakra vonatkoz
    segt szveg.
  }
  {
    Egyes Scid-ablakoknak (pl. a jtszmainformcis terlet, az
    <a Switcher>adatbzisvlt</a>) jobbegrgombos menjk van.
    Nyomd meg a jobb egrgombot az egyes ablakokban, s megltod,
    hogy ott is van-e, s milyen lehetsgeket knl.
  }
  {
    Scid tbb lehetsget is knl lpsek bevitelre, amelyek
    kzl kedved szerint vlaszthatsz. Hasznlhatod az egeret
    (lpsjavaslattal vagy anlkl) vagy a billentyzetet
    (lpskiegsztssel vagy anlkl). Olvasd el a rszleteket a
    <a Moves>Lpsek bevitele</a> cm segtlapon.
  }
  {
    Ha bizonyos adatbzisokat gyakran hasznlsz, jelld meg ket egy-egy
    <a Bookmarks>knyvjelz</a> segtsgvel, s ezutn a knyvjelzmen
    tjn gyorsabban tudod megnyitni ket.
  }
  {
    A <a PGN>PGN-ablak</a> rvn az aktulis jtszma sszes
    lpst lthatod (elgazsokkal s megjegyzsekkel).
    A PGN-ablakban brmelyik lpshez elugorhatsz, ha rkattintasz a bal
    egrgombbal; a kzps vagy a jobb egrgomb hasznlatval pedig
    a lpshez tartoz llst tekintheted meg.
  }
  {
    A bal egrgomb rvn thzssal egyik adatbzisbl a msikba
    msolhatsz jtszmkat az <a Switcher>adatbzisvlt</a> ablakban.
  }
  {
    Scid meg tud nyitni PGN-fjlokat, mg akkor is, ha Gzip tjn
    tmrtve vannak (.gz fjlnv-kiterjesztssel). A megnyitott PGN-fjlok
    csak olvashatak, ezrt ha egy PGN-fjlt Scidben akarsz tszerkeszteni,
    hozz ltre j Scid-adatbzist, s az <a Switcher>adatbzisvlt</a>
    segtsgvel msold bele a PGN-fjl jtszmit.
  }
  {
    Ha egy nagy adatbzist gyakran hasznlsz a <a Tree>faszerkezet</a>-ablakkal,
    rdemes a <b>Cache-fjl feltltse</b> pontot vlasztani a faszerkezet-ablak
    Fjl menjbl. Ez megjegyzi sok gyakori megnyits faszerkezet-adatait,
    miltal gyorsabb lesz a hozzfrs az adatbzishoz.
  }
  {
    A <a Tree>faszerkezet</a>-ablak megmutatja az sszes lpst, amelyet
    az adott llsban tettek, de ha az sszes lpssorrendet ltni akarod,
    amely ehhez az llshoz vezetett, <a OpReport>megnyitsi sszefoglal</a>
    ltrehozsval megkaphatod.
  }
  {
    A <a GameList>jtszmk listja</a> ablakban egy oszlop fejlcre
    kattintva mdosthatod az oszlop szlessgt.
  }
  {
    A <a PInfo>jtkosinformci</a>-ablak segtsgvel (kinyitshoz
    egyszeren kattints valamelyik jtkos nevre a fablak sakktblja alatt
    tallhat jtszmainformcis terleten) knnyedn bellthat gy
    a <a Searches Filter>szr</a>, hogy bizonyos jtkos bizonyos eredmnnyel
    vgzdtt sszes jtszmjt tartalmazza. Ehhez csak a <red>piros szn</red>
    rtkek valamelyikre kell kattintani.
  }
  {
    Megnyits tanulmnyozsakor egy fontos llsban nagyon hasznos lehet a
    <a Searches Board>pozcikeress</a> <b>Gyalogok</b> vagy
    <b>Oszlopok</b> belltssal, mert ez megmutathatja,
    hogy mg mely megnyitsok vezetnek ugyanehhez a gyalogszerkezethez.
  }
  {
    Ha a jtszmainformcis terleten (a sakktbla alatt) megnyomod
    a jobb egrgombot, elbukkan egy men, amellyel testre szabhat. 
    Pldul megkrheted Scidet, hogy rejtse el a kvetkez lpst, ami
    edzsnl hasznos, ha egy jtszma lpseit ki akarod tallni.
  }
  {
    Ha gyakran vgzel <a Maintenance>gondozs</a>t nagy adatbzison,
    egyszerre hajthatsz vgre tbb gondozsi feladatot a
    <a Maintenance Cleaner>takart</a> segtsgvel.
  }
  {
    Ha nagy adatbzisod van, amelyben a legtbb jtszmnl az esemny ideje
    is fel van tntetve, s a jtszmkat id szerint szeretnd rendezni, vgezd
    a <a Sorting>rendezs</a>t az esemny ideje majd esemny szerint,
    s ne fordtva. gy ugyanannak a versenynek a klnbz keltezs jtszmi
    egytt fognak maradni (termszetesen csak akkor, ha mindegyiknl azonos
    az esemny keltezse).
  }
  {
    <a Maintenance Twins>Ikerjtszmk trlse</a> eltt clszer
    <a Maintenance Spellcheck>helyesrsellenrzs</a> al vetni
    az adatbzist, mert gy Scid tbb ikret tud megtallni s trlsre kijellni.
  }
  {
    <a Flags>Megjellsek</a> rvn az adatbzis jtszminak olyan
    jellegzetessgeit lehet kiemelni, amelyek alapjn ksbb keresst
    akarsz vgezni (gyalogszerkezet, taktikai motvum stb.).
    Megjellsekre <a Searches Header>keress fejlc alapjn</a> lehet
    keresni.
  }
  {
    Ha egy jtszmt tanulmnyozva szeretnl kiprblni lpseket
    a jtszma megvltoztatsa nlkl, egyszeren kapcsold be a
    Vltozat kiprblsa zemmdot (a <b>Ctrl+space</b>
    billentykombincival vagy az eszkztr ikonjval), majd kapcsold ki,
    ha vgeztl, s vissza akarsz trni az eredeti jtszmhoz.
  }
  {
    Ha meg akarod keresni egy adott llshoz vezet legkiemelkedbb
    jtszmkat (nagy rtkszm ellenfelek kztt), nyisd ki a
    <a Tree>faszerkezet</a>-ablakot, majd onnan nyisd ki a legjobb
    jtszmk listjt. Mg ezt a listt is szktheted, hogy csak
    meghatrozott eredmnnyel vgzd jtszmkat mutasson.
  }
  {
    Remekl lehet megnyitst tanulmnyozni nagy adatbzisra
    tmaszkodva oly mdon, hogy a <a Tree>faszerkezet</a>-ablakban
    bekapcsolod az edzst, majd az adatbzis ellen jtszva megnzheted,
    mely elgazsok fordulnak el gyakran.
  }
  {
    Ha kt adatbzisod van nyitva, s ltni szeretnd az els adatbzis
    <a Tree>faszerkezet</a>-adatait, mikzben a msiknak egyik
    jtszmjt tanulmnyozod, a <b>Rgzts</b> gomb megnyomsval
    rgztsd a ft az els adatbzishoz, majd vlts t a msikra.
  }
  {
    A <a Tmt>versenykeres</a> nemcsak arra val, hogy megkeress
    vele egy versenyt. Arra is hasznlhat, hogy megnzd, hogy egy jtkos
    mely versenyeken indult mostanban, vagy vgignzd egy adott orszgban
    rendezett legkiemelkedbb versenyeket.
  }
  {
    Az <a Searches Material>Anyag/szerkezet</a> keresablakban
    megtallhat nhny gyakran elfordul llsszerkezet, amely
    hasznos lehet megnyits vagy kzpjtk tanulmnyozsakor.
  }
  {
    Ha meghatrozott anyagi helyzetre keresel az
    <a Searches Material>Anyag/szerkezet</a> keresablakban, sokszor clszer
    a keresst olyan jtszmkra korltozni, amelyek tbb lpsen keresztl
    megfelelnek a feltteleknek. Ily mdon ki lehet zrni azokat a jtszmkat,
    amelyekben a keresett helyzet csak rvid ideig llt fenn.
  }
  {
    Ha egy fontos adatbzist nem szeretnl vletlenl megvltoztatni,
    megnyitsa utn vlaszd az <b>rsvdelem...</b> pontot a
    <b>Fjl</b> menbl, vagy lltsd t attribtumt csak olvashatra.
  }
  {
    Ha XBoardot vagy WinBoardot hasznlod (vagy ms olyan sakkprogramot,
    amely egy sakkllst szabvnyos FEN-jellssel a vglapra tud msolni),
    s t akarod msolni a rajta lv llst Scidbe, ennek leggyorsabb s
    legegyszerbb mdja az, hogy XBoard/WinBoard File menjbl
    <b>Copy Position</b> rvn, majd Scid Szerkeszts menjbl
    <b>Kezdlls beillesztse</b> tjn temeled az llst.
  }
  {
    <a Searches Header>Keress fejlc alapjn</a> esetben a
    jtkos-, esemny-, helyszn- s fordulnevek nem rzkenyek
    kis- vagy nagybet szempontjbl, s az egyezs nv belsejben is lehet.
    Ehelyett vgeztethetsz kis- vagy nagybet szempontjbl rzkeny
    dzskerkeresst is (ahol "?" = brmilyen karakter, "*" = esetleges
    tovbbi karakterek), ha a keresend szveget "idzjelben" adod meg.
    Pldul rj "*BEL"-t (idzjelekkel) a helysznmezbe, ha meg akarod tallni
    a Belgiumban jtszott jtszmkat, de a Belgrdban jtszottakat nem.
  }
  {
    Ha egy jtszmban helyesbteni akarsz egy lpst, de nem szeretnd,
    ha az t kvet lpsek elvesznnek, nyisd ki az <a Import>Import</a>
    ablakot, nyomd meg a <b>Beilleszti az aktulis jtszmt.</b> gombot,
    javtsd ki a tves lpst, majd nyomd meg az <b>Import</b> gombot.
  }
  {
    Ha van betltve ECO-osztlyoz fjlod, a <b>Jtszma</b> menbl
    <b>Megnyits azonostsa</b> tjn (gyorsbillenty: Ctrl+Shift+D)
    elugorhatsz az aktulis jtszmban elfordul legmlyebb osztlyozott llshoz.
    .
  }
  {
    Ha meg akarod nzni egy fjl mrett vagy utols mdostsnak
    idpontjt, mieltt megnyitnd, hasznld megnyitsra a
    <a Finder>fjlkeres</a>t.
  }
  {
    A <a Repertoire>repertor</a>fjl remek md kedvelt megnyitsaid
    nyilvntartsra, emellett meg lehet vele keresni azokat a jtszmkat,
    amelyekben e megnyitsok elfordultak. Ha megnyitsaidat repertorfjlban
    tartod, minden j jtszmagyjtemnyt tszrhetsz vele,
    s vgignzheted azokat a jtszmkat, amelyekben kedvelt megnyitsaid
    elfordulnak.
  }
  {
    A <a OpReport>megnyitsi sszefoglal</a> nagyszer lehetsget nyjt
    egy lls megismersre. Megnzheted, mennyire eredmnyes,
    gyakran vezet-e rvid dntetlenre, megmutatja a gyakran elfordul
    pozcis tmkat.
  }
  {
    A leghasznlatosabb rtkel jeleket (!, !?, += stb.) a
    <a Comment>megjegyzsszerkeszt<a> hasznlata nlkl,
    billentyzssel is hozz lehet fzni az aktulis lpshez vagy llshoz.
    Pldul "!", majd Enter letsvel be tudod szrni a "!" jelet.
    Bvebb ismertetst a <a Moves>Lpsek bevitele</a> cm segtlap
    nyjt.
  }
  {
    Ha egy adatbzis megnyitsai kztt <a Tree>faszerkezet</a> segtsgvel
    bngszel, hasznos sszefoglalt kaphatsz arrl, hogy a vizsglt megnyits
    milyen eredmnyes volt az utbbi idben ers jtkosok kztt. Ehhez nyisd ki
    a Statisztika ablakot (gyorsbillenty: Ctrl+I).
  }
  {
    Megvltoztathatod a fablak sakktbljnak mrett, ha a <b>Ctrl</b>
    s a <b>Shift</b> billentyk nyomva tartsa mellett megnyomod a
    <b>bal</b> vagy a <b>jobb</b> nyilat.
  }
  {
    <a Searches>Keress</a> utn knnyszerrel vgignzheted a tallt
    jtszmkat. Tartsd nyomva a <b>Ctrl</b> billentyt, s nyomd meg a
    <b>fel</b> vagy a <b>le</b> nyilat az elz vagy a kvetkez
    <a Searches Filter>szr</a>jtszma betltshez.
  }
}

# end of hungary.tcl






































































### italian.tcl:
# Italian language support for Scid.
# Added by Giancarlo Bassi.
# Updated by Paolo Montrasi.
# Updated by Michele Rinesi on 19/02/2004.
# Untranslated messages are marked with a "***" comment.

addLanguage I Italian 0 ; # iso8859-1

proc setLanguage_I {} {

# File menu:
menuText I File "File" 0
menuText I FileNew "Nuovo..." 0 {Crea un nuovo database Scid}
menuText I FileOpen "Apri..." 0 {Apre un database Scid esistente}
menuText I FileClose "Chiudi" 0 {Chiude un database Scid attivo}
menuText I FileFinder "Finder" 0 {Apre la finestra per cercare i file}
menuText I FileBookmarks "Bookmarks" 0 {Menu' Bookmarks (chiave: Ctrl+B)}
menuText I FileBookmarksAdd "Aggiungi bookmark" 0 \
  {Memorizza la partita e la posizione del database attivo}
menuText I FileBookmarksFile "Memorizza bookmark" 0 \
  {Memorizza un bookmark per la partita e posizione corrente}
menuText I FileBookmarksEdit "Modifica bookmarks..." 0 \
  {Modifica il menu' dei bookmarks memorizzati}
menuText I FileBookmarksList "Mostra i bookmark come una lista" 0 \
  {Mostra le cartelle dei bookmarks come una lista, senza sottomenu'}
menuText I FileBookmarksSub "Mostra i bookmark come sottomenu'" 0 \
  {Mostra le cartelle dei bookmarks con sottomenu', non a lista}
menuText I FileMaint "Gestione" 0 {Strumenti di gestione di un database Scid}
menuText I FileMaintWin "Finestra di Gestione" 0 \
  {Apre/chiude la finestra di gestione di un database Scid}
menuText I FileMaintCompact "Compatta database..." 0 \
  {Compatta i file di database, rimuovendo le partite cancellate e i nomi non usati}
menuText I FileMaintClass "Classificazione ECO di partite..." 2 \
  {Ricalcola il codice ECO di tutte le partite}
menuText I FileMaintSort "Ordina database..." 0 \
  {Ordina tutte le partite nel database}
menuText I FileMaintDelete "Cancella le partite doppie..." 20 \
  {Cerca le partite duplicate e le seleziona per cancellarle}
menuText I FileMaintTwin "Finestra di controllo delle doppie" 0 \
  {Apre/aggiorna la finestra del controllo dei duplicati}
menuText I FileMaintName "Controllo di nomi" 13 {Editor di nomi e controllo ortografico}
menuText I FileMaintNameEditor "Finestra di editor dei nomi" 0 \
  {Apre/chiude la finestra di editor dei nomi}
menuText I FileMaintNamePlayer "Controllo di nomi dei giocatori..." 22 \
  {Controllo di nomi dei giocatori mediante il file di verifica di nomi}
menuText I FileMaintNameEvent "Controllo di nomi di Eventi..." 21 \
  {Controllo di nomi dei eventi mediante il file di verifica di eventi}
menuText I FileMaintNameSite "Controllo di nomi di siti..." 21 \
  {Controllo di nomi di siti mediante il file di verifica}
menuText I FileMaintNameRound "Controllo di nomi di turni..." 21 \
  {Controllo di nomi di turni mediante il file di verifica}
menuText I FileReadOnly "Sola-lettura..." 0 \
  {Tratta il database attuale in sola lettura, prevenendo variazioni}
menuText I FileSwitch "Attiva un database" 0 \
  {Attiva uno fra i database aperti}
menuText I FileExit "Esci" 0 {Esce da Scid}
# ====== TODO To be translated ======
menuText I FileMaintFixBase "Fix corrupted base" 0 {Try to fix a corrupted base}

# Edit menu:
menuText I Edit "Edita" 0
menuText I EditAdd "Aggiunge una variante" 0 {Aggiunge una variante a questa mossa nella partita}
menuText I EditDelete "Cancella Variante" 0 {Cancella una variante per questa mossa}
menuText I EditFirst "Variante principale" 5 \
  {Promuove a variante principale nella lista}
menuText I EditMain "Promuove una Variante a Linea Principale" 0 \
  {Promuove una variante a linea principale}
menuText I EditTrial "Prova una variante" 0 \
  {Attiva/disattiva la modalita' di prova di una variante, per provare idee direttamente sulla scacchiera}
menuText I EditStrip "Pulisci" 2 {Elimina commenti o varianti dalla partita corrente}
# ====== TODO To be translated ======
menuText I EditUndo "Undo" 0 {Undo last game change}
menuText I EditStripComments "Commenti" 0 \
  {Elimina tutti i commenti e le annotazioni dalla parita corrente}
menuText I EditStripVars "Varianti" 0 {Elimina tutte le varianti dalla partita corrente}
menuText I EditStripBegin "Mosse dall'inizio" 1 \
  {Elimina le mosse dall'inizio della partita}
menuText I EditStripEnd "Mosse rimanenti" 0 \
  {Elimina le mosse rimanenti}
menuText I EditReset "Vuota la Clipbase" 0 \
  {Svuota completamente la clipbase}
menuText I EditCopy "Copia questa partita nella Clipbase" 1 \
  {Copia questa partita nella clipbase}
menuText I EditPaste "Incolla l'ultima partita nella Clipbase" 0 \
  {Incolla qui la partita della clipbase}
menuText I EditPastePGN "Paste Clipboard text as PGN game..." 10 \
  {Interpret the clipboard text as a game in PGN notation and paste it here} ;# ***
menuText I EditSetup "Posizione definita..." 10 \
  {Definisce una posizione per la partita corrente}
menuText I EditCopyBoard "Copia posizione" 6 \
  {Copia la posizione della scacchiera corrente in notazione FEN come testo (clipboard)}
menuText I EditPasteBoard "Incolla come posizione di partenza" 12 \
  {Imposta la posizione di partenza dalla selezione del testo corrente (clipboard)}

# Game menu:
menuText I Game "Partita" 0
menuText I GameNew "Annulla partita" 0 \
  {Torna alla posizione iniziale, rinunciando ai cambiamenti}
menuText I GameFirst "Carica la prima Partita" 13 {Carica la prima partita del filtro}
menuText I GamePrev "Carica la precedente Partita" 10 {Carica la precedente partita del filtro}
menuText I GameReload "Ricarica la Partita attuale" 0 \
  {Ricarica questa partita, eliminando ogni cambiamento eseguito}
menuText I GameNext "Carica la successiva Partita" 10 {Carica il successivo filtro di partite}
menuText I GameLast "Carica l'ultima partita" 9 {Carica l'ultima partita del filtro}
menuText I GameRandom "Carica una partica casuale" 8 {Carica una partita casuale del filtro}
menuText I GameNumber "Carica la partita numero..." 18 \
  {Carica una partita digitando il suo numero}
menuText I GameReplace "Salva: Sostituisce la partita..." 8 \
  {Salva questa partita, sostituendo la vecchia versione}
menuText I GameAdd "Save: Aggiunge la nuova partita..." 7 \
  {Salva questa partita come nuova partita nel database}
menuText I GameDeepest "Identifica apertura" 0 \
  {Va' alla posizione di partita piu' profonda listata nel libro ECO}
menuText I GameGotoMove "Vai alla mossa numero..." 0 \
  {Va' al numero di mossa specificato nella partita attuale}
menuText I GameNovelty "Trova Novita'..." 7 \
  {Cerca la prima mossa mai giocata della partita corrente}

# Search Menu:
menuText I Search "Cerca" 0
menuText I SearchReset "Annulla il filtro" 0 {Annulla il filtro per includere tutte le partite}
menuText I SearchNegate "Filtro Negato" 0 {Nega il filtro per comprendere solo partite escluse}
menuText I SearchCurrent "Posizione attuale..." 0 {Cerca la attuale posizione}
menuText I SearchHeader "Intestazione..." 0 {Ricerca per intestazione (giocatore, evento, etc)}
menuText I SearchMaterial "Materiale/Schema..." 0 {Ricerca per materiale o schema posizionale}
menuText I SearchUsing "Uso del file di ricerca..." 0 {Ricerca mediante un file di Opzioni}

# Windows menu:
menuText I Windows "Finestre" 2
menuText I WindowsComment "Editor di commenti" 10 {Apre/chiude l'editor di commenti}
menuText I WindowsGList "Lista di Partite" 0 {Apre/chiude la finestra di lista di partite}
menuText I WindowsPGN "Finestra PGN" 9 {Apre/chiude la finestra PGN (notazione di partita)}
menuText I WindowsPList "Trova giocatore" 2 {Apre/chiude la finestra per la ricerca di un giocatore}
menuText I WindowsTmt "Trova torneo" 2 {Apre/chiude la finestra per la ricerca di un torneo}
menuText I WindowsSwitcher "Selezione di Database" 11 {Apre/chiude la finestra per la selezione di un Database}
menuText I WindowsMaint "Finestra di gestione" 12 {Apre/chiude la finestra per la gestione di un Database}
menuText I WindowsECO "Navigazione ECO" 12 {Apre/chiude la finestra di navigazione ECO}
menuText I WindowsRepertoire "Editor di repertorio" 10 \
  {Apre/chiude l'editor di repertorio di apertura}
menuText I WindowsStats "Finestra di statistica" 12 {Apre/chiude la finestra di filtro statistico}
menuText I WindowsTree "Finestra di albero" 12 {Apre/chiude la finestra di albero}
menuText I WindowsTB "Finestra di Tablebase di finale" 12 \
  {Apre/chiude la finestra Tablebase}
menuText I WindowsBook "Libro delle aperture" 0 {Apre/chiude la finestra del libro delle aperture}
menuText I WindowsCorrChess "Gioco per corrispondenza" 0 {Apre/chiude la finestra per il gioco per corrispondenza}

# Tools menu:
menuText I Tools "Strumenti" 0
menuText I ToolsAnalysis "Motore di analisi..." 10 \
  {Inizia/termina il motore di analisi scacchistica}
menuText I ToolsAnalysis2 "Motore di analisi #2..." 19 \
  {Inizia/termina il motore di analisi scacchistica}
menuText I ToolsCross "Tabella" 0 {Mostra la tabella di torneo per questa partita}
menuText I ToolsEmail "Gestione Email" 10 \
  {Apre/chiude la finestra di gestione di partite per posta elettronica}
menuText I ToolsFilterGraph "Grafici relativi" 7 \
  {Apre/chiude la finestra dei grafici sul filtro con valori relativi}
menuText I ToolsAbsFilterGraph "Grafici assoluti" 7 {Apre/chiude la finestra dei grafici sul filtro con valori assoluti}
menuText I ToolsOpReport "Rapporto di Apertura" 0 \
  {Genera un rapporto di apertura per l'attuale posizione}
menuText I ToolsOpenBaseAsTree "Apri come albero..." 0   {Apre un database nella finestra per l'albero}
menuText I ToolsOpenRecentBaseAsTree "Apri recente come albero" 0   {Apre un database recente nella finestra per l'albero}
menuText I ToolsTracker "Dislocazione dei Pezzi"  0 {Apre/chiude la finestra con la traccia sulla dislocazione dei pezzi}
menuText I ToolsTraining "Allenamento"  0 {Strumenti per l'allenamento (tattica, aperture,...) }
menuText I ToolsTacticalGame "Partita tattica"  0 {Gioca una partita con le tattiche}
menuText I ToolsSeriousGame "Partita seria"  0 {Gioca una partita seria}
menuText I ToolsTrainOpenings "Aperture"  0 {Allenati con un repertorio}
# ====== TODO To be translated ======
menuText I ToolsTrainReviewGame "Review game"  0 {Guess moves played in a game}
menuText I ToolsTrainTactics "Tattiche"  0 {Risolvi problemi tattici}
menuText I ToolsTrainCalvar "Calcolo delle varianti"  0 {Allenati sul calcolo delle varianti}
menuText I ToolsTrainFindBestMove "Trova la mossa migliore"  0 {Trova la mossa migliore}
menuText I ToolsTrainFics "Gioca su internet"  0 {Gioca su freechess.org}
menuText I ToolsBookTuning "Raffina il libro delle aperture" 0 {Raffina il libro delle aperture}
# ====== TODO To be translated ======
menuText I ToolsConnectHardware "Connect Hardware" 0 {Connect external hardware}
# ====== TODO To be translated ======
menuText I ToolsConnectHardwareConfigure "Configurazione" 1 {Configura la periferica}
# ====== TODO To be translated ======
menuText I ToolsConnectHardwareNovagCitrineConnect "Connetti Novag Citrine" 10 {Connetti la periferica Novag Citrine}
# ====== TODO To be translated ======
menuText I ToolsConnectHardwareInputEngineConnect "Connetti Input Engine" 10 {Connetti Input Engine (e.g. DGT)}
menuText I ToolsPInfo "Informazioni sul giocatore"  17 \
  {Apre/aggiorna la finestra di Informazione del giocatore}
menuText I ToolsPlayerReport "Report del giocatore ..." 3 \
  {Genera un Report del giocatore}
menuText I ToolsRating "Grafico del punteggio Elo" 24 \
  {Grafico storico del punteggio Elo dei giocatori della corrente partita}
menuText I ToolsScore "Grafico dei punti" 12 {Mostra la finestra del grafico dei punti}
menuText I ToolsExpCurrent "Esporta la partita attuale" 0 \
  {Scrive la partita attuale in un file di testo}
menuText I ToolsExpCurrentPGN "Esporta partita in un file PGN..." 15 \
  {Scrive la partita attuale in un file PGN}
menuText I ToolsExpCurrentHTML "Esporta partita in un file HTML..." 15 \
  {Scrive la partita attuale in un file HTML}
menuText I ToolsExpCurrentHTMLJS "Esporta partita in un file HTML con Javascript..." 15 {Scrive la partita attuale in un file HTML con Javascript}
menuText I ToolsExpCurrentLaTeX "Esporta partita in un file LaTeX..." 15 \
  {Scrive la partita attuale in un file LaTeX}
menuText I ToolsExpFilter "Esporta tutte le partite del filtro" 1 \
  {Scrive tutte le partite filtrate in un file di testo}
menuText I ToolsExpFilterPGN "Esporta filtro in file PGN..." 17 \
  {Scrive tutte le partite filtrate in un file PGN}
menuText I ToolsExpFilterHTML "Esporta filtro in file HTML..." 17 \
  {Scrive tutte le partite filtrate in un file HTML}
menuText I ToolsExpFilterHTMLJS "Esporta filtro in file HTML con Javascript..." 17 {Scrive tutte le partite filtrate in un file HTML con Javascript}
menuText I ToolsExpFilterLaTeX "Esporta filtro in un file LaTeX..." 17 \
  {Scrive tutte le partite filtrate in un file LaTeX}
menuText I ToolsImportOne "Importa una partita in formato PGN..." 0 \
  {Importa una partita da testo PGN}
menuText I ToolsImportFile "Importa il file di partite PGN..." 11 \
  {Importa le partite da un file PGN}
menuText I ToolsStartEngine1 "Avvia il motore 1" 0  {Avvia il primo motore per l'analisi della posizione}
menuText I ToolsStartEngine2 "Avvia il motore 2" 0  {Avvia il secondo motore per l'analisi della posizione}
# ====== TODO To be translated ======
menuText I ToolsCaptureBoard "Capture Current Board..." 0  {Save the current board as an image.}

# Play menue
menuText I Play "Gioca" 0

# --- Correspondence Chess
menuText I CorrespondenceChess "Gioco per corrispondenza" 0 {Funzioni per il gioco per corrispondenza tramite eMail e Xfcc}
menuText I CCConfigure "Configura..." 0 {Configurazione generale e degli strumenti esterni}
# ====== TODO To be translated ======
menuText I CCConfigRelay "Configure observations..." 10 {Configure games to be observed}
menuText I CCOpenDB "Apri Database..." 0 {Apri il database di default per il gioco per corrispondenza}
menuText I CCRetrieve "Trova Partite" 0 {Trova le partite tramite l'aiuto esterno Xfcc}
menuText I CCInbox "Processa Posta in Arrivo" 0 {Processa tutti i file nella posta in arrivo di Scid}
menuText I CCSend "Spedisci Mossa" 0 {Spedisce la tua mossa tramite eMail o Xfcc}
menuText I CCResign "Abbandona" 0 {Abbandona la partita (non tramite eMail)}
menuText I CCClaimDraw "Richiedi Patta" 0 {Spedisce la mossa e richiede la patta (non tramite eMail)}
menuText I CCOfferDraw "Offri Patta" 0 {Spedisce la mossa e offre la patta (non tramite eMail)}
menuText I CCAcceptDraw "Accetta Patta" 0 {Accetta l'offerta di patta (non tramite eMail)}
menuText I CCNewMailGame "Nuova Partita con eMail..." 0 {Avvia una nuova partita tramite eMail}
menuText I CCMailMove "Mossa per eMail..." 0 {Spedisce la mossa all'avversariio tramite eMail}
# ====== TODO To be translated ======
menuText I CCGamePage "Game Page..." 0 {Call up the game via the web browser}
# ====== TODO To be translated ======
menuText I CCEditCopy "Copy Gamelist to Clipbase" 0 {Copy the games as CSV list to clipbase}

# Options menu:
menuText I Options "Opzioni" 0
menuText I OptionsBoard "Scacchiera" 0 {Opzioni di visualizzazione della scacchiera}
menuText I OptionsBoardSize "Dimensione della scacchiera" 0 {Cambia la dimensione della scacchiera}
menuText I OptionsBoardPieces "Stile dei pezzi" 6 \
  {Modifica lo stile dei pezzi della scacchiera}
menuText I OptionsBoardColors "Colori..." 0 {Cambia i colori della scacchiera}
menuText I OptionsBoardGraphics "Caselle..." 0 {Seleziona l'aspetto delle caselle}
translate I OptionsBGW {Seleziona l'aspetto delle caselle}
translate I OptionsBoardGraphicsText {Seleziona i files grafici per le caselle bianche e nere:}
menuText I OptionsBoardNames "I nomi dei miei giocatori ..." 0 {Edita i nomi dei miei giocatori}
menuText I OptionsExport "Esportazione" 2 {Cambia le opzioni di importazione testo}
menuText I OptionsFonts "Fonts" 0 {Cambia fonts}
menuText I OptionsFontsRegular "Regolare" 0 {Cambia il font in 'regular'}
menuText I OptionsFontsMenu "Menu" 0 {Cambia il font dei menu}
menuText I OptionsFontsSmall "Piccolo" 0 {Cambia il font 'small'}
# ====== TODO To be translated ======
menuText I OptionsFontsTiny "Tiny" 0 {Change the tiny font}
menuText I OptionsFontsFixed "Fisso" 0 {Cambia il font di larghezza fissa}
menuText I OptionsGInfo "Informazioni sulla partita" 0 {Opzioni sulle informazioni della partita}
menuText I OptionsLanguage "Lingua" 0 {Sceglie una nuova lingua di menu}
menuText I OptionsMovesTranslatePieces "Traduci i pezzi" 0 {Traduce la prima lettera dei pezzi}
# ====== TODO To be translated ======
menuText I OptionsMovesHighlightLastMove "Highlight last move" 0 {Highlight last move}
# ====== TODO To be translated ======
menuText I OptionsMovesHighlightLastMoveDisplay "Show" 0 {Display last move Highlight}
# ====== TODO To be translated ======
menuText I OptionsMovesHighlightLastMoveWidth "Width" 0 {Thickness of line}
# ====== TODO To be translated ======
menuText I OptionsMovesHighlightLastMoveColor "Color" 0 {Color of line}
menuText I OptionsMoves "Mosse" 0 {Opzioni di immissione di mosse}
menuText I OptionsMovesAsk "Conferma prima di sostituire le mosse" 0 \
  {Chiede prima di sovrascrivere ogni mossa esistente}
menuText I OptionsMovesAnimate "Intervallo di tempo per le mosse animate" 1 \
  {Definisce l'intervallo di tempo per le mosse animate}
menuText I OptionsMovesDelay "Intervallo di tempo per il gioco automatico..." 1 \
  {Definisce l'intervallo di tempo per il gioco automatico}
menuText I OptionsMovesCoord "Immissione mossa per coordinate" 0 \
  {Accetta l'input di mossa mediante coordinate ("g1f3")}
menuText I OptionsMovesSuggest "Mostra le mosse suggerite" 0 \
  {Attiva/Disattiva il suggerimento di mosse}
menuText I OptionsShowVarPopup "Mostra Finestra Varianti" 0 {Attiva/Disattiva la visualizzazione della finestra delle varianti}
menuText I OptionsMovesSpace "Aggiungi Spazi dopo Mossa" 0 {Agginuge spazi dopo il numero della mossa}
menuText I OptionsMovesKey "Completamento da tastiera" 0 \
  {Attiva/Disattiva l'autocompletamento di mosse da tastiera}
menuText I OptionsMovesShowVarArrows "Mostra Frecce x Varianti" 0 {Attiva/Disattiva le freccie indicanti le mosse delle varianti}
menuText I OptionsNumbers "Formato del numero" 13 {Seglie il formato del numero}
menuText I OptionsStartup "Apertura all'avvio" 3 {Sceglie le finestre da aprire all'avvio}
# ====== TODO To be translated ======
menuText I OptionsTheme "Theme" 0 {Change look of interface}
menuText I OptionsWindows "Finestre" 2 {Opzioni di finestra}
menuText I OptionsWindowsIconify "Minimizza automaticamente" 5 \
  {Minimizza tutte le finestre quando la finestra principale viene minimizzata}
menuText I OptionsWindowsRaise "Auto-aumenta" 0 \
  {Aumenta alcune finestre (per es. le barre di progresso) ogni volta che sono oscurate}
menuText I OptionsSounds "Sounds..." 2 {Configure move announcement sounds} ;# ***
# ====== TODO To be translated ======
menuText I OptionsWindowsDock "Dock windows" 0 {Dock windows}
# ====== TODO To be translated ======
menuText I OptionsWindowsSaveLayout "Save layout" 0 {Save layout}
# ====== TODO To be translated ======
menuText I OptionsWindowsRestoreLayout "Restore layout" 0 {Restore layout}
# ====== TODO To be translated ======
menuText I OptionsWindowsShowGameInfo "Show game info" 0 {Show game info}
# ====== TODO To be translated ======
menuText I OptionsWindowsAutoLoadLayout "Auto load first layout" 0 {Auto load first layout at startup}
menuText I OptionsToolbar "Barra degli strumenti" 12 \
  {Mostra/nasconde la barra degli strumenti nella finestra principale}
menuText I OptionsECO "Carica il file ECO..." 15 {Carica il file di classificazione ECO}
menuText I OptionsSpell "Carica il file di controllo ortografico..." 28 \
  {Carica il file di controllo di Scid}
menuText I OptionsTable "Directory di Tablebase..." 13 \
  {Seglie un file tablebase; tutte le tablebases nella directory saranno utilizzate}
menuText I OptionsRecent "File utilizzati di recente..." 0 \
  {Cambia il numero di file recentemente utilizzati visualizzato nel menu file}
menuText I OptionsBooksDir "Directory del libro delle aperture..." 0 {Configura la directory per il libro delle aperture}
menuText I OptionsTacticsBasesDir "Directory dei Database..." 0 {Configura la directory per i database di allenamento}
menuText I OptionsSave "Salva Opzioni" 0 \
  "Salva tutte le opzioni definibili nel file $::optionsFile"
menuText I OptionsAutoSave "Salva Opzioni all'uscita" 0 \
  {Salva automaticamente tutte le opzioni quando si esce da Scid}

# Help menu:
menuText I Help "Aiuto" 0
menuText I HelpContents "Contents" 0 {Mostra la pagina "contents" dell'aiuto}
menuText I HelpIndex "Indice" 0 {Mostra la pagina dell'indice dell'aiuto}
menuText I HelpGuide "Guida Veloce" 0 {Mostra la pagina di aiuto per la guida veloce}
menuText I HelpHints "Suggerimenti" 0 {Mostra la pagina di aiuto dei suggerimenti}
menuText I HelpContact "Informazioni per contattare" 17 {Mostra la pagina dell'aiuto di informazione di contatto}
menuText I HelpTip "Suggerimento del giorno" 0 {Mostra utili suggerimenti riguardo Scid}
menuText I HelpStartup "Finestra di partenza" 0 {Mostra la finestra di partenza}
menuText I HelpAbout "Su Scid" 1 {Informazioni su Scid}

# partita info box popup menu:
menuText I GInfoHideNext "Nascondi la mossa successiva" 0
menuText I GInfoMaterial "Mostra i valori del materiale" 0
menuText I GInfoFEN "Mostra FEN" 5
menuText I GInfoMarks "Mostra caselle e frecce colorate" 5
menuText I GInfoWrap "A capo automatico" 0
menuText I GInfoFullComment "Mostra commenti completi" 10
menuText I GInfoPhotos "Visualizza foto" 5
menuText I GInfoTBNothing "Tablebases: nulla" 12
menuText I GInfoTBResult "Tablebases: solo risultato" 12
menuText I GInfoTBAll "Tablebases: risultato e mosse migliori" 19
menuText I GInfoDelete "Recupera/Cancella questa partita" 9
menuText I GInfoMark "Smarca/Marca questa partita" 7
menuText I GInfoInformant "Configura i valori informativi" 0

# Main window buttons:
helpMsg I .main.fbutton.button.start {Va all'inizio della partita  (chiave: Home)}
helpMsg I .main.fbutton.button.end {Va alla fine della partita  (chiave: End)}
helpMsg I .main.fbutton.button.back {Indietro di una mossa (chiave: LeftArrow)}
helpMsg I .main.fbutton.button.forward {Avanti di una mossa (chiave: RightArrow)}
helpMsg I .main.fbutton.button.intoVar {Entra in una variante  (chiave abbreviata: v)}
helpMsg I .main.fbutton.button.exitVar {Lascia la variante attuale  (chiave abbreviata: z)}
helpMsg I .main.fbutton.button.flip {Ruota la scacchiera (chiave abbreviata: .)}
helpMsg I .main.fbutton.button.coords {Coordinate on/off  (chiave abbreviata: 0)}
helpMsg I .main.fbutton.button.stm {Visualizza l'icona di chi ha la mossa (si/no)}
helpMsg I .main.fbutton.button.autoplay {Mosse automatiche  (chiave: Ctrl+Z)}

# General buttons:
translate I Back {Indietro}
translate I Browse {Browse}
translate I Cancel {Cancella}
translate I Continue {Continua}
translate I Clear {Annulla}
translate I Close {Chiudi}
translate I Contents {Contents}
translate I Defaults {Defaults}
translate I Delete {Annulla}
translate I Graph {Grafico}
translate I Help {Aiuto}
translate I Import {Importa}
translate I Index {Indice}
translate I LoadGame {Carica partita}
translate I BrowseGame {Visualizza partita}
translate I MergeGame {Fondi partita}
translate I MergeGames {Unisci partite}
translate I Preview {Anteprima}
translate I Revert {Rovescia}
translate I Save {Salva}
translate I Search {Cerca}
translate I Stop {Stop}
translate I Store {Memorizza}
translate I Update {Aggiorna}
translate I ChangeOrient {Modifica l'orientamento della finestra}
translate I ShowIcons {Show Icons} ;# ***
translate I None {Nessuno}
translate I First {Prima}
translate I Current {Attuale}
translate I Last {Ultima}

# General messages:
translate I game {partita}
translate I games {Partite}
translate I move {mossa}
translate I moves {mosse}
translate I all {tutto}
translate I Yes {Si'}
translate I No {No}
translate I Both {Entrambi}
translate I King {Re}
translate I Queen {Donna}
translate I Rook {Torre}
translate I Bishop {Alfiere}
translate I Knight {Cavallo}
translate I Pawn {Pedone}
translate I White {Bianco}
translate I Black {Nero}
translate I Player {Giocatori}
translate I Rating {Punteggio}
translate I RatingDiff {Differenza punteggio (Bianco - Nero)}
translate I AverageRating {Punteggio medio}
translate I Event {Evento}
translate I Site {Sito}
translate I Country {Paese}
translate I IgnoreColors {Ignora i colori}
translate I Date {Data}
translate I EventDate {Evento data}
translate I Decade {Decennio}
translate I Year {Anno}
translate I Month {Mese}
translate I Months {Gennaio Febbraio Marzo Aprile Maggio Giugno Luglio Agosto Settembre Ottobre Novembre Dicembre}
translate I Days {Dom Lun Mar Mer Gio Ven Sab}
translate I YearToToday {Anno ad oggi}
translate I Result {Risultato}
translate I Round {Turno}
translate I Length {Lunghezza}
translate I ECOCode {codice ECO}
translate I ECO {ECO}
translate I Deleted {Cancellato}
translate I SearchResults {Risultati della ricerca}
translate I OpeningTheDatabase {Database di aperture}
translate I Database {Database}
translate I Filter {Filtro}
translate I noGames {no partite}
translate I allGames {tutte le partite}
translate I empty {vuoto}
translate I clipbase {clipbase}
translate I score {score}
translate I StartPos {Posizione iniziale}
translate I Total {Totale}
translate I readonly {sola-lettura}

# Standard error messages:
translate I ErrNotOpen {Questo database non � aperto.}
translate I ErrReadOnly {Questo database � a sola lettura; non puo' essere modificato.}
translate I ErrSearchInterrupted {Ricerca interrotta; il risultato e' incompleto.}

# Game information:
translate I twin {doppio}
translate I deleted {cancellato}
translate I comment {commento}
translate I hidden {nascosto}
translate I LastMove {Ultima mossa}
translate I NextMove {Mossa Successiva}
translate I GameStart {Inizio di partita}
translate I LineStart {Inizio di variante}
translate I GameEnd {Fine della partita}
translate I LineEnd {Fine della variante}

# Player information:
translate I PInfoAll {Risultati per <b>tutte</b> le partite}
translate I PInfoFilter {Risultati per le partite nel <b>filtro</b>}
translate I PInfoAgainst {Risultati contro}
translate I PInfoMostWhite {Le piu' frequenti aperture con il Bianco}
translate I PInfoMostBlack {Le piu' frequenti aperture con il Nero}
translate I PInfoRating {Variazioni dell'Elo}
translate I PInfoBio {Biografia}
translate I PInfoEditRatings {Edita i Ratings}

# Tablebase information:
translate I Draw {Patta}
translate I stalemate {stallo}
translate I withAllMoves {con tutte le mosse}
translate I withAllButOneMove {con tutte le mosse tranne una}
translate I with {con}
translate I only {solo}
translate I lose {persa}
translate I loses {perse}
translate I allOthersLose {tutte le altre perse}
translate I matesIn {matto in}
translate I hasCheckmated {e' mattato}
translate I longest {la piu' lunga}
translate I WinningMoves {Mosse vincenti}
translate I DrawingMoves {Mosse pattanti}
translate I LosingMoves {Mosse perdenti}
translate I UnknownMoves {Mosse senza risultato}

# Tip of the day:
translate I Tip {Suggerimento}
translate I TipAtStartup {Suggerimento all'avvio}

# Tree window menus:
menuText I TreeFile "File" 0
menuText I TreeFileFillWithBase "Riempi Cache con Database" 0 {Riempie la cache con tutte le partite nel database attuale}
menuText I TreeFileFillWithGame "Riempi Cache con Partita" 0 {Riempie la cache con la partita corrente del database attuale}
menuText I TreeFileSetCacheSize "Dimensione Cache" 0 {Seleziona la dimensione della cache}
menuText I TreeFileCacheInfo "Informazioni Cache" 0 {Ottiene informazioni sull'uso della cache}
menuText I TreeFileSave "Salva il file di cache" 0 \
  {Salva il file (.stc) della cache dell'albero}
menuText I TreeFileFill "Riempie il file di cache" 0 \
  {Riempie il file di cache con le piu' frequenti posizioni di apertura}
menuText I TreeFileBest "Lista delle migliori partite" 0 {Mostra l'albero delle migliori partite}
menuText I TreeFileGraph "Finestra di grafico" 0 \
  {Mostra il grafico per la corrente variante dell'albero}
menuText I TreeFileCopy "Copia il testo dell'albero nella clipboard" 1 \
  {Copia le statistiche dell'albero nella clipboard}
menuText I TreeFileClose "Chiudi la finestra dell'albero" 0 \
  {Chiudi la finestra dell'albero}
# ====== TODO To be translated ======
menuText I TreeMask "Mask" 0
# ====== TODO To be translated ======
menuText I TreeMaskNew "New" 0 {New mask}
# ====== TODO To be translated ======
menuText I TreeMaskOpen "Open" 0 {Open mask}
# ====== TODO To be translated ======
menuText I TreeMaskOpenRecent "Open recent" 0 {Open recent mask}
# ====== TODO To be translated ======
menuText I TreeMaskSave "Save" 0 {Save mask}
# ====== TODO To be translated ======
menuText I TreeMaskClose "Close" 0 {Close mask}
# ====== TODO To be translated ======
menuText I TreeMaskFillWithGame "Fill with game" 0 {Fill mask with game}
# ====== TODO To be translated ======
menuText I TreeMaskFillWithBase "Fill with base" 0 {Fill mask with all games in base}
# ====== TODO To be translated ======
menuText I TreeMaskInfo "Info" 0 {Show statistics for current mask}
# ====== TODO To be translated ======
menuText I TreeMaskDisplay "Display mask map" 0 {Show mask data in a tree form}
# ====== TODO To be translated ======
menuText I TreeMaskSearch "Search" 0 {Search in current mask}
menuText I TreeSort "Ordina" 0
menuText I TreeSortAlpha "Alfabetico" 0
menuText I TreeSortECO "codice ECO" 0
menuText I TreeSortFreq "Frequenza" 0
menuText I TreeSortScore "Punti" 0
menuText I TreeOpt "Opzioni" 0
menuText I TreeOptSlowmode "Modalità lenta" 0 {Modalità lenta per l'aggiornamento (più precisa)}
menuText I TreeOptFastmode "Modalità veloce" 0 {Modalità veloce per l'aggiornamento (nessuna trasposizione di mosse)}
menuText I TreeOptFastAndSlowmode "Modalità lenta e veloce" 0 {Modalità lenta e veloce per l'aggiornamento}
# ====== TODO To be translated ======
menuText I TreeOptStartStop "Auto refreshing" 0 {Toggles automatic refreshing of the tree window}
menuText I TreeOptLock "Blocca" 0 {Blocca/sblocca l'albero al database corrente}
menuText I TreeOptTraining "Training" 0 {Attiva/disattiva la modalita' di esercizio dell'albero}
menuText I TreeOptAutosave "File di cache per Auto-salvare" 0 \
  {Salva automaticamente il file di cache quando si chiude la finestra dell'albero}
menuText I TreeHelp "Aiuto" 0
menuText I TreeHelpTree "Aiuto per l'albero" 0
menuText I TreeHelpIndex "Indice di aiuto" 0
translate I SaveCache {Salva cache}
translate I Training {Esercizio}
translate I LockTree {Blocca}
translate I TreeLocked {Bloccato}
translate I TreeBest {Migliore}
translate I TreeBestGames {Migliori partite}
# Note: the next message is the tree window title row. After editing it,
# check the tree window to make sure it lines up with the actual columns.
translate I TreeTitleRow \
  {    Mossa  ECO       Frequenza    Punt.  AvElo Perf AvAnno %Patta}
translate I TreeTotal {TOTALE}
# ====== TODO To be translated ======
translate I DoYouWantToSaveFirst {Do you want to save first}
# ====== TODO To be translated ======
translate I AddToMask {Add to Mask}
# ====== TODO To be translated ======
translate I RemoveFromMask {Remove from Mask}
# ====== TODO To be translated ======
translate I AddThisMoveToMask {Add this move to Mask}
# ====== TODO To be translated ======
translate I SearchMask {Search in Mask}
# ====== TODO To be translated ======
translate I DisplayMask {Display Mask}
# ====== TODO To be translated ======
translate I Nag {Nag code}
# ====== TODO To be translated ======
translate I Marker {Marker}
# ====== TODO To be translated ======
translate I Include {Include}
# ====== TODO To be translated ======
translate I Exclude {Exclude}
# ====== TODO To be translated ======
translate I MainLine {Main line}
# ====== TODO To be translated ======
translate I Bookmark {Bookmark}
# ====== TODO To be translated ======
translate I NewLine {New line}
# ====== TODO To be translated ======
translate I ToBeVerified {To be verified}
# ====== TODO To be translated ======
translate I ToTrain {To train}
# ====== TODO To be translated ======
translate I Dubious {Dubious}
# ====== TODO To be translated ======
translate I ToRemove {To remove}
# ====== TODO To be translated ======
translate I NoMarker {No marker}
# ====== TODO To be translated ======
translate I ColorMarker {Color}
# ====== TODO To be translated ======
translate I WhiteMark {White}
# ====== TODO To be translated ======
translate I GreenMark {Green}
# ====== TODO To be translated ======
translate I YellowMark {Yellow}
# ====== TODO To be translated ======
translate I BlueMark {Blue}
# ====== TODO To be translated ======
translate I RedMark {Red}
# ====== TODO To be translated ======
translate I CommentMove {Comment move}
# ====== TODO To be translated ======
translate I CommentPosition {Comment position}
# ====== TODO To be translated ======
translate I AddMoveToMaskFirst {Add move to mask first}
# ====== TODO To be translated ======
translate I OpenAMaskFileFirst {Open a mask file first}
# ====== TODO To be translated ======
translate I Positions {Positions}
# ====== TODO To be translated ======
translate I Moves {Moves}

# Finder window:
menuText I FinderFile "File" 0
menuText I FinderFileSubdirs "Cerca nelle sottodirectory" 0
menuText I FinderFileClose "Chiudi File Finder" 0
menuText I FinderSort "Ordina" 0
menuText I FinderSortType "Tipo" 0
menuText I FinderSortSize "Dimensione" 0
menuText I FinderSortMod "Modifica" 0
menuText I FinderSortName "Nome" 0
menuText I FinderSortPath "Percorso" 0
menuText I FinderTypes "Tipi" 0
menuText I FinderTypesScid "Database Scid" 0
menuText I FinderTypesOld "Vecchio formato database Scid" 0
menuText I FinderTypesPGN "File PGN" 0
menuText I FinderTypesEPD "EPD (book) files" 0
menuText I FinderTypesRep "File di Repertorio" 0
menuText I FinderHelp "Aiuto" 0
menuText I FinderHelpFinder "Aiuto su File Finder" 0
menuText I FinderHelpIndex "Indice di aiuto" 0
translate I FileFinder {Trova File}
translate I FinderDir {Trova Directory}
translate I FinderDirs {Trova Directories}
translate I FinderFiles {Trova Files}
translate I FinderUpDir {Su}
# ====== TODO To be translated ======
translate I FinderCtxOpen {Open}
# ====== TODO To be translated ======
translate I FinderCtxBackup {Backup}
# ====== TODO To be translated ======
translate I FinderCtxCopy {Copy}
# ====== TODO To be translated ======
translate I FinderCtxMove {Move}
# ====== TODO To be translated ======
translate I FinderCtxDelete {Delete}

# Player finder:
menuText I PListFile "File" 0
menuText I PListFileUpdate "Aggiorna" 0
menuText I PListFileClose "Chiudi Player Finder" 0
menuText I PListSort "Ordina" 0
menuText I PListSortName "Nome" 0
menuText I PListSortElo "Elo" 0
menuText I PListSortGames "Partite" 0
menuText I PListSortOldest "Pi� vecchie" 0
menuText I PListSortNewest "Pi� recenti" 0

# Tournament finder:
menuText I TmtFile "File" 0
menuText I TmtFileUpdate "Aggiorna" 0
menuText I TmtFileClose "Chiudi Tournament Finder" 0
menuText I TmtSort "Ordina" 0
menuText I TmtSortDate "Data" 0
menuText I TmtSortPlayers "Giocatori" 0
menuText I TmtSortGames "Partite" 0
menuText I TmtSortElo "Elo" 0
menuText I TmtSortSite "Siti" 0
menuText I TmtSortEvent "Eventi" 1
menuText I TmtSortWinner "Vincitore" 0
translate I TmtLimit "Limite della lista"
translate I TmtMeanElo "Media Elo piu' bassa"
translate I TmtNone "Non e' stato trovato nessun torneo."

# Graph windows:
menuText I GraphFile "File" 0
menuText I GraphFileColor "Salva come Color Postscript..." 8
menuText I GraphFileGrey "Salva come Greyscale Postscript..." 8
menuText I GraphFileClose "Chiudi la finestra" 6
menuText I GraphOptions "Opzioni" 0
menuText I GraphOptionsWhite "Bianco" 0
menuText I GraphOptionsBlack "Nero" 0
menuText I GraphOptionsBoth "Entrambi" 1
menuText I GraphOptionsPInfo "Info sul giocatore" 0
translate I GraphFilterTitle "Filter Graph: frequenza ogni 1000 partite"
translate I GraphAbsFilterTitle "Filter Graph: frequenza delle partite"
translate I ConfigureFilter {Configura l'asse delle X per Anno, Rating e Mosse}
translate I FilterEstimate "Stima"
translate I TitleFilterGraph "Scid: Filter Graph"

# Analysis window:
translate I AddVariation {Aggiungi variante}
translate I AddAllVariations {Aggiungi tutte le varianti}
translate I AddMove {Aggiunge una mossa}
translate I Annotate {Annota}
translate I ShowAnalysisBoard {Mostra la finestra dell'analisi}
translate I ShowInfo {Mostra le informazioni del motore}
translate I FinishGame {Termina la partita}
translate I StopEngine {Ferma il motore}
translate I StartEngine {Avvia il motore}
# ====== TODO To be translated ======
translate I LockEngine {Lock engine to current position}
translate I AnalysisCommand {Comando di analisi}
translate I PreviousChoices {Scelta precedente}
translate I AnnotateTime {Imposta il tempo tra le mosse in secondi}
translate I AnnotateWhich {Aggiungi varianti}
translate I AnnotateAll {Per mosse di entrambi i colori}
translate I AnnotateAllMoves {Tutte le mosse}
translate I AnnotateWhite {Per solo le mosse del Bianco}
translate I AnnotateBlack {Per solo le mosse del Nero}
translate I AnnotateBlundersOnly {Quando la mossa è chiaramente un errore}
translate I AnnotateBlundersOnlyScoreChange {L'analisi riporta come errori, con variazione del punteggio da/a:}
translate I BlundersThreshold {Limite}
# TODO: Translate
translate I ScoreAllMoves {Score all moves}
translate I LowPriority {Imposta la priorità della CPU a bassa}
translate I ClickHereToSeeMoves {Clicca qui per vedere le mosse}
translate I ConfigureInformant {Configura i valori informativi}
translate I Informant!? {Mossa interessante}
translate I Informant? {Mossa debole}
translate I Informant?? {Errore grave}
translate I Informant?! {Mossa dubbia}
translate I Informant+= {Il bianco ha un leggero vantaggio}
translate I Informant+/- {Il bianco ha un moderato vantaggio}
translate I Informant+- {Il bianco ha un vantaggio decisivo}
translate I Informant++- {La partita è considerata vinta}
translate I Book {Libro}
# ====== TODO To be translated ======
translate I OtherBookMoves {Opponent's book}
# ====== TODO To be translated ======
translate I OtherBookMovesTooltip {Moves to which the opponent has a reply}

# Analysis Engine open dialog:
translate I EngineList {Lista dei motori di analisi}
translate I EngineName {Nome}
translate I EngineCmd {Comando}
translate I EngineArgs {Parametri}
translate I EngineDir {Directory}
translate I EngineElo {Elo}
translate I EngineTime {Data}
translate I EngineNew {Nuovo}
translate I EngineEdit {Modifica}
translate I EngineRequired {I campi in grassetto sono obbligatori; gli altri sono opzionali}

# Stats window menus:
menuText I StatsFile "File" 0
menuText I StatsFilePrint "Stampa in file..." 0
menuText I StatsFileClose "Chiudi la finestra" 0
menuText I StatsOpt "Opzioni" 0

# PGN window menus:
menuText I PgnFile "File" 0
menuText I PgnFileCopy "Copia la partita verso la Clipboard" 0
menuText I PgnFilePrint "Stampa in file..." 0
menuText I PgnFileClose "Chiudi la finestra PGN" 0
menuText I PgnOpt "Visualizza" 0
menuText I PgnOptColor "Visualizza il Colore" 0
menuText I PgnOptShort "Intestazione compatta (3-righe)" 0
menuText I PgnOptSymbols "Annotazioni simboliche" 0
menuText I PgnOptIndentC "Indenta i commenti" 0
menuText I PgnOptIndentV "Indenta le varianti" 1
menuText I PgnOptColumn "Stile della colonna (una mossa per riga)" 0
menuText I PgnOptSpace "Spazio dopo i numeri delle mosse" 0
menuText I PgnOptStripMarks "Elimina i codici colorati delle caselle/frecce" 0
menuText I PgnOptBoldMainLine "Usa il grassetto per le mosse della linea principale" 4
menuText I PgnColor "Colori" 0
menuText I PgnColorHeader "Intestazione..." 0
menuText I PgnColorAnno "Annotazioni..." 0
menuText I PgnColorComments "Commenti..." 0
menuText I PgnColorVars "Varianti..." 0
menuText I PgnColorBackground "Sfondo..." 0
menuText I PgnColorMain "Linea principale..." 0
menuText I PgnColorCurrent "Sfondo per la mossa attuale..." 1
menuText I PgnColorNextMove "Sfondo per la mossa successiva..." 0
menuText I PgnHelp "Aiuto" 0
menuText I PgnHelpPgn "Aiuto PGN" 0
menuText I PgnHelpIndex "Indice" 0
translate I PgnWindowTitle {Notazione - partita %u}

# Crosstable window menus:
menuText I CrosstabFile "File" 0
menuText I CrosstabFileText "Stampa in un file di Testo..." 21
menuText I CrosstabFileHtml "Stampa in un file HTML..." 18
menuText I CrosstabFileLaTeX "Stampa in un file LaTeX..." 18
menuText I CrosstabFileClose "Chiudi la finestra della tabella" 0
menuText I CrosstabEdit "Edita" 0
menuText I CrosstabEditEvent "Evento" 0
menuText I CrosstabEditSite "Sito" 0
menuText I CrosstabEditDate "Data" 0
menuText I CrosstabOpt "Visualizza" 0
menuText I CrosstabOptAll "Girone all'italiana" 0
menuText I CrosstabOptSwiss "Girone Svizzero" 0
menuText I CrosstabOptKnockout "Knockout" 0
menuText I CrosstabOptAuto "Auto" 0
menuText I CrosstabOptAges "Eta' in anni" 8
menuText I CrosstabOptNats "Nazionalita'" 0
menuText I CrosstabOptRatings "Punteggi" 0
menuText I CrosstabOptTitles "Titoli" 0
menuText I CrosstabOptBreaks "Punteggi al Tie-break" 4
menuText I CrosstabOptDeleted "Inserisce le partite cancellate" 8
menuText I CrosstabOptColors "Colori (solo girone Svizzero)" 0
menuText I CrosstabOptColumnNumbers "A colonne (Solo la tabella dei tornei all'italiana)" 3
menuText I CrosstabOptGroup "Punti del gruppo" 0
menuText I CrosstabSort "Ordina" 0
menuText I CrosstabSortName "Nome" 0
menuText I CrosstabSortRating "Punteggio" 0
menuText I CrosstabSortScore "Punti" 0
menuText I CrosstabColor "Colore" 0
menuText I CrosstabColorPlain "Testo normale" 0
menuText I CrosstabColorHyper "Ipertesto" 0
menuText I CrosstabHelp "Aiuto" 0
menuText I CrosstabHelpCross "Aiuto tabella" 0
menuText I CrosstabHelpIndex "Indice di aiuto" 0
translate I SetFilter {Imposta filtro}
translate I AddToFilter {Aggiungi al filtro}
translate I Swiss {Svizzero}
translate I Category {Categoria}

# Opening report window menus:
menuText I OprepFile "File" 0
menuText I OprepFileText "Stampa in un file di testo..." 21
menuText I OprepFileHtml "Stampa in un file HTML..." 18
menuText I OprepFileLaTeX "Stampa in un file LaTeX..." 18
menuText I OprepFileOptions "Opzioni..." 0
menuText I OprepFileClose "Chiude la finestra del rapporto" 0
menuText I OprepFavorites "Preferiti" 1
menuText I OprepFavoritesAdd "Aggiungi Report..." 0
menuText I OprepFavoritesEdit "Edita i Report preferiti..." 0
menuText I OprepFavoritesGenerate "Genera Reports..." 0

menuText I OprepHelp "Aiuto" 0
menuText I OprepHelpReport "Aiuto sul rapporto di apertura" 0
menuText I OprepHelpIndex "Indice di Aiuto" 0

# Repertoire editor:
menuText I RepFile "File" 0
menuText I RepFileNew "Nuovo" 0
menuText I RepFileOpen "Apri..." 0
menuText I RepFileSave "Salva..." 0
menuText I RepFileSaveAs "Salva con nome..." 3
menuText I RepFileClose "Close window" 0
menuText I RepEdit "Edita" 0
menuText I RepEditGroup "Aggiunge il gruppo" 12
menuText I RepEditInclude "Aggiunge la variante inclusa" 21
menuText I RepEditExclude "Aggiunge la variante esclusa" 21
menuText I RepView "Visualizza" 0
menuText I RepViewExpand "Espande tutti i gruppi" 0
menuText I RepViewCollapse "Collassa tutti i gruppi" 0
menuText I RepSearch "Cerca" 0
menuText I RepSearchAll "Tutto del repertorio..." 0
menuText I RepSearchDisplayed "Visualizza solo varianti..." 0
menuText I RepHelp "Aiuto" 0
menuText I RepHelpRep "Aiuto del repertorio" 0
menuText I RepHelpIndex "Indice di Aiuto" 0
translate I RepSearch "Ricerca nel repertorio"
translate I RepIncludedLines "varianti incluse"
translate I RepExcludedLines "varianti escluse"
translate I RepCloseDialog {Questo repertorio non e' stato salvato.

Vuoi veramente continuare ed eliminare le modifiche effettuate?
}

# Header search:
translate I HeaderSearch {Ricerca per Intestazione}
translate I EndSideToMove {Side to move at end of game} ;# ***
translate I GamesWithNoECO {Partite senza ECO?}
translate I GameLength {Lunghezza della partita}
translate I FindGamesWith {Cerca partite con}
translate I StdStart {Inizio standard}
translate I Promotions {Promozioni}
translate I Comments {Commenti}
translate I Variations {Varianti}
translate I Annotations {Annotazioni}
translate I DeleteFlag {Cancellato}
translate I WhiteOpFlag {Apertura del Bianco}
translate I BlackOpFlag {Apertura del Nero}
translate I MiddlegameFlag {Mediogioco}
translate I EndgameFlag {Finale}
translate I NoveltyFlag {Novita'}
translate I PawnFlag {Struttura pedonale}
translate I TacticsFlag {Tatticismi}
translate I QsideFlag {Gioco su lato di Donna}
translate I KsideFlag {Gioco su lato di Re}
translate I BrilliancyFlag {Brillantezza}
translate I BlunderFlag {Svista}
translate I UserFlag {User}
translate I PgnContains {PGN contiene testo}
# ====== TODO To be translated ======
translate I Annotator {Annotator}
# ====== TODO To be translated ======
translate I Cmnts {Annotated games only}

# Game list window:
translate I GlistNumber {Numero}
translate I GlistWhite {Bianco}
translate I GlistBlack {Nero}
translate I GlistWElo {B-Elo}
translate I GlistBElo {N-Elo}
translate I GlistEvent {Evento}
translate I GlistSite {Sito}
translate I GlistRound {Turno}
translate I GlistDate {Data}
translate I GlistYear {Anno}
translate I GlistEDate {Evento-Data}
translate I GlistResult {Risultato}
translate I GlistLength {Lunghezza}
translate I GlistCountry {Paese}
translate I GlistECO {ECO}
translate I GlistOpening {Apertura}
translate I GlistEndMaterial {Materiale a fine partita}
translate I GlistDeleted {Cancellato}
translate I GlistFlags {Identificatore}
translate I GlistVars {Varianti}
translate I GlistComments {Commenti}
translate I GlistAnnos {Annotazioni}
translate I GlistStart {Inizio}
translate I GlistGameNumber {numero di Partita}
# ====== TODO To be translated ======
translate I GlistAverageElo {Average Elo}
# ====== TODO To be translated ======
translate I GlistRating {Rating}
translate I GlistFindText {Cerca testo}
translate I GlistMoveField {Mossa}
translate I GlistEditField {Configura}
translate I GlistAddField {Aggiungi}
translate I GlistDeleteField {Elimina}
translate I GlistWidth {Larghezza}
translate I GlistAlign {Allinea}
# ====== TODO To be translated ======
translate I GlistAlignL {Align: left}
# ====== TODO To be translated ======
translate I GlistAlignR {Align: right}
# ====== TODO To be translated ======
translate I GlistAlignC {Align: center}
translate I GlistColor {Colore}
translate I GlistSep {Separatore}
# ====== TODO To be translated ======
translate I GlistCurrentSep {-- Current --}
# ====== TODO To be translated ======
translate I GlistNewSort {New}
# ====== TODO To be translated ======
translate I GlistAddToSort {Add}
# ====== TODO To be translated ======
translate I GsortSort {Sort...}
# ====== TODO To be translated ======
translate I GsortDate {Date}
# ====== TODO To be translated ======
translate I GsortYear {Year}
# ====== TODO To be translated ======
translate I GsortEvent {Event}
# ====== TODO To be translated ======
translate I GsortSite {Site}
# ====== TODO To be translated ======
translate I GsortRound {Round}
# ====== TODO To be translated ======
translate I GsortWhiteName {White Name}
# ====== TODO To be translated ======
translate I GsortBlackName {Black Name}
# ====== TODO To be translated ======
translate I GsortECO {ECO}
# ====== TODO To be translated ======
translate I GsortResult {Result}
# ====== TODO To be translated ======
translate I GsortMoveCount {Move Count}
# ====== TODO To be translated ======
translate I GsortAverageElo {Average Elo}
# ====== TODO To be translated ======
translate I GsortCountry {Country}
# ====== TODO To be translated ======
translate I GsortDeleted {Deleted}
# ====== TODO To be translated ======
translate I GsortEventDate {Event Date}
# ====== TODO To be translated ======
translate I GsortWhiteElo {White Elo}
# ====== TODO To be translated ======
translate I GsortBlackElo {Black Elo}
# ====== TODO To be translated ======
translate I GsortComments {Comments}
# ====== TODO To be translated ======
translate I GsortVariations {Variations}
# ====== TODO To be translated ======
translate I GsortNAGs {NAGs}
# ====== TODO To be translated ======
translate I GsortAscending {Ascending}
# ====== TODO To be translated ======
translate I GsortDescending {Descending}
# ====== TODO To be translated ======
translate I GsortAdd {Add}
# ====== TODO To be translated ======
translate I GsortStore {Store}
# ====== TODO To be translated ======
translate I GsortLoad {Load}
translate I GlistRemoveThisGameFromFilter  {Rimuovi questa partita dal filtro}
translate I GlistRemoveGameAndAboveFromFilter  {Rimuovi la partita (e le precedenti) dal filtro}
translate I GlistRemoveGameAndBelowFromFilter  {Rimuovi la partita (e le seguenti) dal filtro}
translate I GlistDeleteGame {Elimina/Recupera questa partita}
translate I GlistDeleteAllGames {Elimina tutte le partite nel filtro}
translate I GlistUndeleteAllGames {Recupera tutte le partite nel filtro}
# ====== TODO To be translated ======
translate I GlistMergeGameInBase {Merge Game in other base} 

# Maintenance window:
translate I DatabaseName {Nome del Database:}
translate I TypeIcon {Icona tipo:}
translate I NumOfGames {Partite:}
translate I NumDeletedGames {partite cancellate:}
translate I NumFilterGames {Partite nel filtro:}
translate I YearRange {Intervallo di anni:}
translate I RatingRange {Intervallo di Punteggio:}
translate I Description {Descrizione}
translate I Flag {Identificatore}
# ====== TODO To be translated ======
translate I CustomFlags {Custom flags}
translate I DeleteCurrent {Cancella la partita attuale}
translate I DeleteFilter {Cancella le partite del filtro}
translate I DeleteAll {Cancella tutte le partite}
translate I UndeleteCurrent {Recupera la partita attuale}
translate I UndeleteFilter {Recupera il filtro di partite}
translate I UndeleteAll {Recupera tutte le partite}
translate I DeleteTwins {Cancella le partite doppie}
translate I MarkCurrent {Marca la partita attuale}
translate I MarkFilter {Marca partite del filtro}
translate I MarkAll {Marca tutte le partite}
translate I UnmarkCurrent {Smarca la partita attuale}
translate I UnmarkFilter {Smarca le partite del filtro}
translate I UnmarkAll {Smarca tutte le partite}
translate I Spellchecking {Controllo nome}
translate I Players {Giocatori}
translate I Events {Eventi}
translate I Sites {Siti}
translate I Rounds {Turni}
translate I DatabaseOps {Operazioni sul Database}
translate I ReclassifyGames {Partite classificate ECO}
translate I CompactDatabase {Compatta database}
translate I SortDatabase {Ordina database}
translate I AddEloRatings {Aggiungi punteggio Elo}
translate I AutoloadGame {Numero della partita che si caricher� automaticamente}
translate I StripTags {Toglie i PGN tags}
translate I StripTag {Toglie i tag}
translate I Cleaner {Manutentore Globale}
translate I CleanerHelp {La finestra Manutentore Globale effettura' tutte le operazioni che verranno selezionate dalla lista sottostante, sul database corrente.

Le impostazioni correnti nelle finestre della classificazione ECO e della cancellazione delle partite doppie verranno applicate se selezionate.}
translate I CleanerConfirm {Una volta attivata l'operazione di pulizia questa non puo' piu' essere interrotta!

Questo puo' richiedere diverso tempo su un grosso database, a seconda delle funzioni selezionate e delle impostazioni correnti.

Sei sicuro di voler procedere con le funzioni selezionate?}

translate I TwinCheckUndelete {per invertire; "u" recupera entrambe}
translate I TwinCheckprevPair {Coppia precedente}
translate I TwinChecknextPair {Coppia seguente}
translate I TwinChecker {Scid: Controllo partite doppie}
translate I TwinCheckTournament {Partite nel torneo:}
translate I TwinCheckNoTwin {Nessuna partita doppia}
translate I TwinCheckNoTwinfound {Nessun doppio è stato trovato per questa partita.\nPer mostrare i doppi con questa finestra, devi prima usare la funzione "Cancella le partite doppie".}
translate I TwinCheckTag {Condividi i tags...}
translate I TwinCheckFound1 {Scid ha trovato $result partite doppie}
translate I TwinCheckFound2 { e ha impostato il loro stato a cancellato}
translate I TwinCheckNoDelete {Non ci sono partite da cancellare nel database.}
translate I TwinCriteria1 {Le impostazioni per trovare le partite doppie possono portare a determinare come doppie partite diverse con mosse simili.}
translate I TwinCriteria2 {Si consiglia di selezionare "No" per "Stesse Mosse", e "Sì" per colori, evento, luogo, turno, anno e mese.\nVuoi procedere e cancellare le partite doppie comunque?}
translate I TwinCriteria3 {Si consiglia di selezionare "Sì" per almeno due tra "stesso luogo", "stesso turno" and "stesso anno".\nVuoi procedere e cancellare le partite doppie comunque?}
translate I TwinCriteriaConfirm {Scid: Conferma le impostazioni per el partite doppie}
translate I TwinChangeTag "Cambia i seguenti tags della partita:\n\n"
translate I AllocRatingDescription "Questo comando usa l'attuale controllore ortografico per aggiungere i punteggi Elo alle partite in questo database. Se un giocatore non ha un punteggio ma il suo punteggio al momento della partita è presente nel controllore ortografico, quel punteggio sarà aggiunto."
translate I RatingOverride "Sovrascrivi i punteggi diversi da zero?"
translate I AddRatings "Aggiungi i punteggi a:"
translate I AddedRatings {Scid ha aggiunto $r punteggi Elo in $g partite.}
translate I NewSubmenu "Nuovo sottomenu"

# Comment editor:
translate I AnnotationSymbols  {Simboli di annotazione:}
translate I Comment {Commento:}
translate I InsertMark {Inserisci marcatore}
translate I InsertMarkHelp {
Inserisci/togli marcatore: Seleziona colore, tipo, casella.
Inserisci/togli freccia: Doppio-click due caselle.
}

# Nag buttons in comment editor:
translate I GoodMove {Mossa buona}
translate I PoorMove {Mossa debole}
translate I ExcellentMove {Mossa ottima}
translate I Blunder {Svista}
translate I InterestingMove {Mossa interessante}
translate I DubiousMove {Mossa dubbia}
translate I WhiteDecisiveAdvantage {Il Bianco � in vantaggio decisivo}
translate I BlackDecisiveAdvantage {Il Nero � in vantaggio decisivo}
translate I WhiteClearAdvantage {Il Bianco sta meglio}
translate I BlackClearAdvantage {Il Nero sta meglio}
translate I WhiteSlightAdvantage {Il Bianco sta leggermente meglio}
translate I BlackSlightAdvantage {Il Nero sta leggermente meglio}
translate I Equality {Parit�}
translate I Unclear {Incerta}
translate I Diagram {Diagramma}

# Board search:
translate I BoardSearch {Ricerca Posizione}
translate I FilterOperation {Operazione sul filtro corrente:}
translate I FilterAnd {AND (Restrizione del filtro)}
translate I FilterOr {OR (Aggiunta al filtro)}
translate I FilterIgnore {IGNORA (Annulla il filtro)}
translate I SearchType {Tipo di ricerca:}
translate I SearchBoardExact {Posizione Esatta (tutti i pezzi sulla stessa casa)}
translate I SearchBoardPawns {Pedoni (stesso materiale, tutti i pedoni sulla stessa casa)}
translate I SearchBoardFiles {File (stesso materiale, tutti i pedoni sulle stesse file)}
translate I SearchBoardAny {Dovunque (stesso materiale, pedoni e pezzi dovunque)}
# ====== TODO To be translated ======
translate I SearchInRefDatabase { Search in base }
translate I LookInVars {Osserva nelle varianti}

# Material search:
translate I MaterialSearch {Ricerca Materiale}
translate I Material {Materiale}
translate I Patterns {Schema}
translate I Zero {Nessuno}
translate I Any {Tutti}
translate I CurrentBoard {Posizione corrente}
translate I CommonEndings {Finali Comuni}
translate I CommonPatterns {Schemi Comuni}
translate I MaterialDiff {Differenze di materiale}
translate I squares {sulle case di}
translate I SameColor {Stesso colore}
translate I OppColor {Colore opposto}
translate I Either {Entrambi}
translate I MoveNumberRange {Intervallo del numero di mosse}
translate I MatchForAtLeast {Confronta per almeno}
translate I HalfMoves {semi-mosse}

# Common endings in material search:
translate I EndingPawns {Pawn endings} ;# ***
translate I EndingRookVsPawns {Rook vs. Pawn(s)} ;# ***
translate I EndingRookPawnVsRook {Rook and 1 Pawn vs. Rook} ;# ***
translate I EndingRookPawnsVsRook {Rook and Pawn(s) vs. Rook} ;# ***
translate I EndingRooks {Rook vs. Rook endings} ;# ***
translate I EndingRooksPassedA {Rook vs. Rook endings with a passed a-pawn} ;# ***
translate I EndingRooksDouble {Double Rook endings} ;# ***
translate I EndingBishops {Bishop vs. Bishop endings} ;# ***
translate I EndingBishopVsKnight {Bishop vs. Knight endings} ;# ***
translate I EndingKnights {Knight vs. Knight endings} ;# ***
translate I EndingQueens {Queen vs. Queen endings} ;# ***
translate I EndingQueenPawnVsQueen {Queen and 1 Pawn vs. Queen} ;# ***
translate I BishopPairVsKnightPair {Two Bishops vs. Two Knights middlegame} ;# ***

# Common patterns in material search:
translate I PatternWhiteIQP {White IQP} ;# ***
translate I PatternWhiteIQPBreakE6 {White IQP: d4-d5 break vs. e6} ;# ***
translate I PatternWhiteIQPBreakC6 {White IQP: d4-d5 break vs. c6} ;# ***
translate I PatternBlackIQP {Black IQP} ;# ***
translate I PatternWhiteBlackIQP {White IQP vs. Black IQP} ;# ***
translate I PatternCoupleC3D4 {White c3+d4 Isolated Pawn Couple} ;# ***
translate I PatternHangingC5D5 {Black Hanging Pawns on c5 and d5} ;# ***
translate I PatternMaroczy {Maroczy Center (with Pawns on c4 and e4)} ;# ***
translate I PatternRookSacC3 {Rook Sacrifice on c3} ;# ***
translate I PatternKc1Kg8 {O-O-O vs. O-O (Kc1 vs. Kg8)} ;# ***
translate I PatternKg1Kc8 {O-O vs. O-O-O (Kg1 vs. Kc8)} ;# ***
translate I PatternLightFian {Light-Square Fianchettos (Bishop-g2 vs. Bishop-b7)} ;# ***
translate I PatternDarkFian {Dark-Square Fianchettos (Bishop-b2 vs. Bishop-g7)} ;# ***
translate I PatternFourFian {Four Fianchettos (Bishops on b2,g2,b7,g7)} ;# ***

# game saving:
translate I Today {Oggi}
translate I ClassifyGame {Classifica la partita}

# Setup position:
translate I EmptyBoard {Scacchiera vuota}
translate I InitialBoard {Posizione iniziale}
translate I SideToMove {Parte che muove}
translate I MoveNumber {Numero della mossa}
translate I Castling {Arrocco}
translate I EnPassantFile {Fila En Passant}
translate I ClearFen {Annulla FEN}
translate I PasteFen {Incolla FEN}
translate I SaveAndContinue {Salava e continua}
translate I DiscardChangesAndContinue {Scarta le modifiche\ne continua}
translate I GoBack {Indietro}

# Replace move dialog:
translate I ReplaceMove {Sostituisci la mossa}
translate I AddNewVar {Aggiunge una nuova variante}
translate I NewMainLine {Nuova linea principale}
translate I ReplaceMoveMessage {Esiste gia' una mossa qui.

Puoi sostituirla, rinunciando a tutte le mosse dopo di essa, o aggiungere la tua mossa come nuova variante.

(Puoi impedire di vedere questo messaggio in futuro ponendo ad off l'opzione "Domanda prima di sostiture le mosse" nel menu Opzioni:Mosse.)}

# Make database read-only dialog:
translate I ReadOnlyDialog {Se rendi questo database di sola lettura, nessuna variazione sara'permessa.
Nessuna partita puo' essere salvata o sostituita, e nessuna 'cancella identificatore' puo' essere alterato.
Ogni ordinamento o classificazione ECO resultera' essere temporaneo.

Puoi facilmente rendere ancora scrivibile il database, chiudendolo e riaprendolo.

Desideri veramente rendere questo database di sola lettura?}

# Clear game dialog:
translate I ClearGameDialog {Questa partita e' stata modificata.

Sei sicuro di voler continuare ed eliminare le modifiche effettuate?}

# Exit dialog:
translate I ExitDialog {Vuoi veramente uscire da Scid?}
translate I ExitUnsaved {Il database ha partite modificate e non salvate. Se esci adesso queste modifiche saranno perse.}

# Import window:
translate I PasteCurrentGame {Incolla la partita attuale}
translate I ImportHelp1 {Immetti o incolla una partita in formato PGN nella struttura precedente.}
translate I ImportHelp2 {Ogni errore di importazione di partita sara' visualizzato qui.}
translate I OverwriteExistingMoves {Sovrascrivi le mosse presenti?}

# ECO Browser:
translate I ECOAllSections {tutte le sezioni ECO}
translate I ECOSection {sezione ECO}
translate I ECOSummary {Sommario per}
translate I ECOFrequency {Frequenze nell'ambito del}

# Opening Report:
translate I OprepTitle {Rapporto di apertura}
translate I OprepReport {Rapporto}
translate I OprepGenerated {Generato da}
translate I OprepStatsHist {Statistica e Storia}
translate I OprepStats {Statistica}
translate I OprepStatAll {tutte le partite della statistica}
translate I OprepStatBoth {Entrambe classificate}
translate I OprepStatSince {Da}
translate I OprepOldest {Le partite piu' vecchie}
translate I OprepNewest {Le partite piu' recenti}
translate I OprepPopular {Attuale popularita'}
translate I OprepFreqAll {Frequenza in tutti gli anni: }
translate I OprepFreq1   {Da  1 anno ad oggi:          }
translate I OprepFreq5   {Da  5 anni ad oggi:          }
translate I OprepFreq10  {Da 10 anni ad oggi:          }
translate I OprepEvery {una volta ogni %u partite}
translate I OprepUp {su %u%s da tutti gli anni}
translate I OprepDown {giu' %u%s da tutti gli anni}
translate I OprepSame {nessuna variazione da tutti gli anni}
translate I OprepMostFrequent {Giocatori piu' frequenti}
translate I OprepMostFrequentOpponents {Avversari pi� frequenti}
translate I OprepRatingsPerf {Punteggi e Performance}
translate I OprepAvgPerf {Punteggi medi e performance}
translate I OprepWRating {Punteggio del Bianco}
translate I OprepBRating {Punteggio del Nero}
translate I OprepWPerf {Performance del Bianco}
translate I OprepBPerf {Performance del Nero}
translate I OprepHighRating {Partite con il piu' alto punteggio medio}
translate I OprepTrends {Tendenze dei risultati}
translate I OprepResults {Risultato lunghezza e frequenza}
translate I OprepLength {Lunghezza della partita}
translate I OprepFrequency {Frequenza}
translate I OprepWWins {Vittorie del Bianco: }
translate I OprepBWins {Vittorie del Nero: }
translate I OprepDraws {Patte:      }
translate I OprepWholeDB {intero database}
translate I OprepShortest {Vittorie piu' brevi}
translate I OprepMovesThemes {Mosse e Temi}
translate I OprepMoveOrders {Ordini di mosse che raggiungono la posizione considerata}
translate I OprepMoveOrdersOne \
  {C'era solo un ordine di mosse che raggiungeva questa posizione:}
translate I OprepMoveOrdersAll \
  {C'erano %u ordini di mosse che raggiungevano questa posizione:}
translate I OprepMoveOrdersMany \
  {C'erano %u ordini di mossa che raggiungevano questa posizione. Le prime %u sono:}
translate I OprepMovesFrom {Mosse dalla posizione del rapporto}
translate I OprepMostFrequentEcoCodes {Codici ECO pi� frequenti}
translate I OprepThemes {Temi Posizionali}
translate I OprepThemeDescription {Frequenza dei Temi nelle prime %u mosse di ogni partita}
translate I OprepThemeSameCastling {Arrocco dallo stesso lato}
translate I OprepThemeOppCastling {Arrocchi eterogenei}
translate I OprepThemeNoCastling {Entrambi i re non arroccati}
translate I OprepThemeKPawnStorm {Attacco di pedoni sull'ala di re}
translate I OprepThemeQueenswap {Scambio di donne}
translate I OprepThemeWIQP {Pedone di donna Bianco isolato}
translate I OprepThemeBIQP {Pedone di donna Nero isolato}
translate I OprepThemeWP567 {Pedone Bianco sulla 5/6/7ma traversa}
translate I OprepThemeBP234 {Pedone Nero sulla 2/3/4ta traversa}
translate I OprepThemeOpenCDE {Colonne c/d/e aperte}
translate I OprepTheme1BishopPair {Una parte ha la coppia degli alfieri}
translate I OprepEndgames {Finali}
translate I OprepReportGames {Partite del rapporto}
translate I OprepAllGames {tutte le partite}
translate I OprepEndClass {Materiale alla fine di ogni partita}
translate I OprepTheoryTable {Tabella della Teoria}
translate I OprepTableComment {Generato da %u partite piu' quotate.}
translate I OprepExtraMoves {Mosse Extra note nella tabella della teoria}
translate I OprepMaxGames {Numero massimo di partite nella tabella della teoria}
translate I OprepViewHTML {Vedi HTML}
translate I OprepViewLaTeX {Vedi LaTeX}

# Player Report:
translate I PReportTitle {Report sul giocatore}
translate I PReportColorWhite {con i pezzi Bianchi}
translate I PReportColorBlack {con i pezzi Neri}
translate I PReportMoves {dopo %s}
translate I PReportOpenings {Aperture}
translate I PReportClipbase {Svuota la Clipbase e copia le partite risultanti in essa}

# Piece Tracker window:
translate I TrackerSelectSingle {Il tasto sinistro del mouse seleziona questo pezzo.}
translate I TrackerSelectPair {Il tasto sinistro del mouse seleziona questo pezzo; il tasto destro seleziona il suo sibling.}
translate I TrackerSelectPawn {Il tasto sinistro del mouse seleziona questo pedone; il tasto destro seleziona tutti gli 8 pedoni.}
translate I TrackerStat {Statistiche}
translate I TrackerGames {% di partite con mosse in questa casella}
translate I TrackerTime {% di tempo su ogni casella}
translate I TrackerMoves {Mosse}
translate I TrackerMovesStart {Inserisci il numero di mossa da dove iniziare il tracciamento.}
translate I TrackerMovesStop {Inserisci il numero di mossa dove finire il tracciamento.}

# Game selection dialogs:
translate I SelectAllGames {Tutte le partite nel database}
translate I SelectFilterGames {Solo le partite nel filtro}
translate I SelectTournamentGames {Solo le partite del torneo attuale}
translate I SelectOlderGames {Solo le partite piu' vecchie}

# Delete Twins window:
translate I TwinsNote {Per essere doppie, due partite devono almeno avere gli stessi due giocatori, e criteri che puoi definire sotto. Quando viene trovata una coppia di doppie, la partita piu' breve e' cancellata. Suggerimento: E' meglio controllare per caratteri il database prima di cancellare le doppie, per migliorare la ricerca delle doppie.}
translate I TwinsCriteria {Criteri: Partite doppie devono avere...}
translate I TwinsWhich {Esamina quali partite}
translate I TwinsColors {Stessi colori?}
translate I TwinsEvent {Stesso evento?}
translate I TwinsSite {Stesso sito?}
translate I TwinsRound {Stesso turno?}
translate I TwinsYear {Stesso anno?}
translate I TwinsMonth {Stesso mese?}
translate I TwinsDay {Stesso giorno?}
translate I TwinsResult {Stesso result?}
translate I TwinsECO {Stesso codice ECO?}
translate I TwinsMoves {Stesse mosse?}
translate I TwinsPlayers {Confronta i nomi dei giocatori:}
translate I TwinsPlayersExact {Stretta uguaglianza}
translate I TwinsPlayersPrefix {Solo le prima 4 lettere}
translate I TwinsWhen {Quando cancellare partite doppie}
translate I TwinsSkipShort {Ignorare tutte le partite sotto le 5 mosse?}
translate I TwinsUndelete {Recupera prima tutte le partite?}
translate I TwinsSetFilter {Definisci il filtro a tutte le partite doppie cancellate?}
translate I TwinsComments {Mantieni sempre le partite con commenti?}
translate I TwinsVars {Mantieni sempre le partite con varianti?}
translate I TwinsDeleteWhich {Quale partita cancellare:}
translate I TwinsDeleteShorter {La partita pi� corta}
translate I TwinsDeleteOlder {La partita inserita prima nel database}
translate I TwinsDeleteNewer {La partita inserita dopo nel database}
translate I TwinsDelete {Cancella partite}

# Name editor window:
translate I NameEditType {Tipo di nome da editare}
translate I NameEditSelect {Partite da editare}
translate I NameEditReplace {Sostituisci}
translate I NameEditWith {con}
translate I NameEditMatches {Corrispondenze: Digita da Ctrl+1 ad Ctrl+9 per scegliere}
# ====== TODO To be translated ======
translate I CheckGames {Check games}
# ====== TODO To be translated ======
translate I CheckGamesWhich {Check games}
# ====== TODO To be translated ======
translate I CheckAll {All games}
# ====== TODO To be translated ======
translate I CheckSelectFilterGames {Only games in filter}

# Classify window:
translate I Classify {Classifica}
translate I ClassifyWhich {Quali partite classificare ECO}
translate I ClassifyAll {Tutte le partite (sovrascrivi i vecchi codici ECO)}
translate I ClassifyYear {Tutte le partite giocate nell'ultimo anno}
translate I ClassifyMonth {Tutte le partite giocate nell'ultimo mese}
translate I ClassifyNew {Solo partite ancora senza codice ECO}
translate I ClassifyCodes {Codici ECO da usare}
translate I ClassifyBasic {Solo codici di base ("B12", ...)}
translate I ClassifyExtended {estensioni Scid ("B12j", ...)}

# Compaction:
translate I NameFile {File di Nomi}
translate I GameFile {File Partite}
translate I Names {Nomi}
translate I Unused {Non usati}
translate I SizeKb {Dimensioni (kb)}
translate I CurrentState {Stato Attuale}
translate I AfterCompaction {Dopo la compattazione}
translate I CompactNames {Compatta il file di nomi}
translate I CompactGames {Compatta il file di partite}
translate I NoUnusedNames "Non ci sono nomi inutilizzati, il file dei nomi è già compresso."
translate I NoUnusedGames "Il file delle partite è già compresso."
translate I NameFileCompacted {Il file dei nomi del database "[file tail [sc_base filename]]" è stato compresso.}
translate I GameFileCompacted {Il file delle partite del database "[file tail [sc_base filename]]" è stato compresso.}

# Sorting:
translate I SortCriteria {Criteri}
translate I AddCriteria {Aggiungi criteri}
translate I CommonSorts {Ordinamenti Comuni}
translate I Sort {Ordina}

# Exporting:
translate I AddToExistingFile {Aggiungi partite al file esistente?}
translate I ExportComments {Esporta commenti?}
translate I ExportVariations {Esporta varianti?}
translate I IndentComments {Indenta commenti?}
translate I IndentVariations {Indenta varianti?}
translate I ExportColumnStyle {Stile colonna (una mossa per riga)?}
translate I ExportSymbolStyle {Stile annotazione simbolica:}
translate I ExportStripMarks {Togliere i codici di casella/freccia dai commenti?}

# Goto game/move dialogs:
translate I LoadGameNumber {Inserire il numero della partita da caricare:}
translate I GotoMoveNumber {Vai alla mossa numero:}

# Copy games dialog:
translate I CopyGames {Copia partite}
translate I CopyConfirm {
 Vuoi veramente copiare
 le [::utils::thousands $nGamesToCopy] partite dal filtro
 del database "$fromName"
 nel database "$targetName"?
}
translate I CopyErr {Impossibile copiare le partite}
translate I CopyErrSource {il database origine}
translate I CopyErrTarget {il database destinazione}
translate I CopyErrNoGames {non contiene nessuna partita nel suo filtro}
translate I CopyErrReadOnly {e' di sola lettura}
translate I CopyErrNotOpen {non e' aperto}

# Colors:
translate I LightSquares {Case chiare}
translate I DarkSquares {Case scure}
translate I SelectedSquares {Case selezionate}
translate I SuggestedSquares {Case delle mosse suggerite}
translate I WhitePieces {Pezzi Bianchi}
translate I BlackPieces {Pezzi Neri}
translate I WhiteBorder {Bordi del Bianco}
translate I BlackBorder {Bordi del Nero}

# Novelty window:
translate I FindNovelty {Trova Novita'}
translate I Novelty {Novita'}
translate I NoveltyInterrupt {Ricerca novita' interrotta}
translate I NoveltyNone {Non e' stata trovata nessuna novita' per la partita corrente}
translate I NoveltyHelp {
Scid cerchera' la prima mossa della partita corrente che raggiungera' una posizione non presente nel database selezionato o nel libro delle aperure.
}

# Sounds configuration:
translate I SoundsFolder {Sound Files Folder} ;# ***
translate I SoundsFolderHelp {The folder should contain the files King.wav, a.wav, 1.wav, etc} ;# ***
translate I SoundsAnnounceOptions {Move Announcement Options} ;# ***
translate I SoundsAnnounceNew {Announce new moves as they are made} ;# ***
translate I SoundsAnnounceForward {Announce moves when moving forward one move} ;# ***
translate I SoundsAnnounceBack {Announce when retracting or moving back one move} ;# ***

# Upgrading databases:
translate I Upgrading {Aggiornamento}
translate I ConfirmOpenNew {
Questo e' un vecchio formato (Scid 3) di database che non puo' essere aperto da Scid 4, ma e' stata appena creata una nuova versione nel formato (Scid 4).

Vuoi aprire la nuova versione del database?
}
translate I ConfirmUpgrade {
Questo e' un vecchio formato (Scid 3) di database. Prima di poter utilizzare il database in Scid 4 va' creata una nuova versione.

L'aggiornamento creera' una nuova versione del database.

Questo richiedera' del tempo, ma necessita di essere fatto una volta sola. Puoi arrestare il processo se durera' a lungo.

Vuoi aggiornare il database ora?
}

# Recent files options:
translate I RecentFilesMenu {Numero di file recentemente utilizzati nel Menu File}
translate I RecentFilesExtra {Numero di file recentemente utilizzati nel submenu extra}

# My Player Names options:
translate I MyPlayerNamesDescription {
Inserisci sotto una lista di giocatori preferiti, un nome per linea. Wildcards (e.g. "?" per ogni singolo carattere, "*" per ogni sequenza di caratteri) sono accettati.

Ogni volta che viene caricata una partita con un giocatore nella lista, la finestra principale della scacchiera se necessario ruoterà e vi proporrà la partita dal punto di vista di quel giocatore.
}
translate I showblunderexists {mostra gli errori}
translate I showblundervalue {mostra il valore dell'errore}
translate I showscore {mostra il punteggio}
translate I coachgame {partita con maestro}
translate I configurecoachgame {configura la partita con maestro}
translate I configuregame {Configurazione della partita}
translate I Phalanxengine {Motore Phalanx}
translate I Coachengine {Motore per il maestro}
translate I difficulty {difficoltà}
translate I hard {difficile}
translate I easy {facile}
translate I Playwith {Gioca con}
translate I white {bianco}
translate I black {nero}
translate I both {entrambi}
translate I Play {Gioca}
translate I Noblunder {Nessun errore}
translate I blunder {errore}
translate I Noinfo {-- Nessuna info --}
# ====== TODO To be translated ======
translate I PhalanxOrTogaMissing {Phalanx or Toga not found}
translate I moveblunderthreshold {la mossa è un errore se la perdita è maggiore di}
translate I limitanalysis {limita il tempo di analisi del motore}
translate I seconds {secondi}
translate I Abort {Annulla}
# ====== TODO To be translated ======
translate I Resume {Resume}
translate I OutOfOpening {Fuori dall'apertura}
translate I NotFollowedLine {Non hai seguito la linea}
translate I DoYouWantContinue {Vuoi continuare?}
translate I CoachIsWatching {Il maestro stà osservando}
translate I Ponder {Analisi permanente}
# ====== TODO To be translated ======
translate I LimitELO {Limit ELO strength}
translate I DubiousMovePlayedTakeBack {Mossa dubbia, vuoi rifare?}
translate I WeakMovePlayedTakeBack {Mossa debole, vuoi rifare?}
translate I BadMovePlayedTakeBack {Mossa cattiva, vuoi rifare?}
translate I Iresign {Abbandono}
translate I yourmoveisnotgood {La tua mossa non è buona}
translate I EndOfVar {Fine della variante}
translate I Openingtrainer {Allenatore delle aperture}
translate I DisplayCM {Mostra le mosse candidate}
translate I DisplayCMValue {Mostra il valore delle mosse candidate}
translate I DisplayOpeningStats {Mostra le statistiche}
translate I ShowReport {Mostra il report}
# ====== TODO To be translated ======
translate I NumberOfGoodMovesPlayed {good moves played}
# ====== TODO To be translated ======
translate I NumberOfDubiousMovesPlayed {dubious moves played}
# ====== TODO To be translated ======
translate I NumberOfMovesPlayedNotInRepertoire {moves played not in repertoire}
# ====== TODO To be translated ======
translate I NumberOfTimesPositionEncountered {times position encountered}
translate I PlayerBestMove  {Permetti solo le mosse migliori}
translate I OpponentBestMove {L'avversario gioca le mosse migliori}
translate I OnlyFlaggedLines {Solo linee tracciate}
translate I resetStats {Azzera le statistiche}
translate I Repertoiretrainingconfiguration {Configuarazione dell'allenatore del repertorio}
translate I Loadingrepertoire {Leggo il repertorio}
translate I Movesloaded {Mosse lette}
translate I Repertoirenotfound {Repertorio non trovato}
translate I Openfirstrepertoirewithtype {Apri prima un database come repertorio con tipo/icona a destra}
translate I Movenotinrepertoire {Mossa non presente nel repertorio}
translate I PositionsInRepertoire {Posizioni nel repertorio}
translate I PositionsNotPlayed {Posizioni non giocate}
translate I PositionsPlayed {Posizioni giocate}
translate I Success {Successo}
translate I DubiousMoves {Mossa dubbia}
translate I OutOfRepertoire {Fuori dal repertorio}
translate I ConfigureTactics {Configura le tattiche}
translate I ResetScores {Azzara i punteggi}
translate I LoadingBase {Leggo il database}
translate I Tactics {Tattiche}
translate I ShowSolution {Mostra la soluzione}
# ====== TODO To be translated ======
translate I NextExercise {Next exercise}
# ====== TODO To be translated ======
translate I PrevExercise {previous exercise}
# ====== TODO To be translated ======
translate I StopTraining {Stop training}
translate I Next {Seguente}
translate I ResettingScore {Azzero il punteggio}
translate I LoadingGame {Leggo la partita}
translate I MateFound {Scacco matto trovato}
translate I BestSolutionNotFound {La migliore soluzione NON è stata trovata!}
translate I MateNotFound {Scacco matto non trovato}
translate I ShorterMateExists {Essite uno scacco matto più breve}
translate I ScorePlayed {Punteggio giocato}
translate I Expected {atteso}
translate I ChooseTrainingBase {Scegli il database di allenamento}
translate I Thinking {Penso}
translate I AnalyzeDone {Analisi eseguita}
translate I WinWonGame {Vinci le partite vinte}
translate I Lines {Linee}
translate I ConfigureUCIengine {Configura il motore UCI}
translate I SpecificOpening {Apertura Specifica}
# ====== TODO To be translated ======
translate I StartNewGame {Start new game}
# ====== TODO To be translated ======
translate I FixedLevel {Fixed level}
# ====== TODO To be translated ======
translate I Opening {Opening}
translate I RandomLevel {Livello casuale}
translate I StartFromCurrentPosition {Parti dalla posizione attuale}
translate I FixedDepth {Profondità fissa}
translate I Nodes {Nodi}
translate I Depth {Profondità}
translate I Time {Tempo}
translate I SecondsPerMove {Secondi per mossa}
# ====== TODO To be translated ======
translate I Engine {Engine}
# ====== TODO To be translated ======
translate I TimeMode {Time mode}
translate I TimeBonus {Tempo + bonus}
# ====== TODO To be translated ======
# ====== TODO To be translated ======
translate I TimeMin {min}
# ====== TODO To be translated ======
translate I TimeSec {sec}
translate I AllExercisesDone {Tutti gli esercizi eseguiti}
translate I MoveOutOfBook {Mossa fuori dal libro}
translate I LastBookMove {Ultima mossa del libro}
translate I AnnotateSeveralGames {Annota più partite\ndall'attuale a:}
translate I FindOpeningErrors {Trova errori dell'apertura}
# ====== TODO To be translated ======
translate I MarkTacticalExercises {Mark tactical exercises}
translate I UseBook {Usa il libro}
translate I MultiPV {Varianti multiple}
translate I Hash {Memoria Hash}
translate I OwnBook {Use il libro del motore}
translate I BookFile {Libro delle aperture}
translate I AnnotateVariations {Annota le varianti}
translate I ShortAnnotations {Annotazione breve}
translate I addAnnotatorTag {Aggiungi il tag dell'annotazione}
translate I AddScoreToShortAnnotations {Aggiungi il punteggio alle annotazioni brevi}
translate I Export {Esporta}
translate I BookPartiallyLoaded {Libro caricato parzialmente}
translate I Calvar {Calcolo delle varianti}
translate I ConfigureCalvar {Configurazione}
translate I Reti {Reti}
translate I English {Inglese}
translate I d4Nf6Miscellaneous {1.d4 Nf6 Vario}
translate I Trompowsky {Trompowsky}
translate I Budapest {Budapest}
translate I OldIndian {Vecchia Indiana}
translate I BenkoGambit {Gambetto Benko}
translate I ModernBenoni {Moderna Benoni}
translate I DutchDefence {Difesa Olandese}
translate I Scandinavian {Scandinava}
translate I AlekhineDefence {Difesa Alekhine}
translate I Pirc {Pirc}
translate I CaroKann {Caro-Kann}
translate I CaroKannAdvance {Caro-Kann Avanzata}
translate I Sicilian {Siciliana}
translate I SicilianAlapin {Siciliana Alapin}
translate I SicilianClosed {Siciliana Chiusa}
translate I SicilianRauzer {Siciliana Rauzer}
translate I SicilianDragon {Siciliana Dragone}
translate I SicilianScheveningen {Siciliana Scheveningen}
translate I SicilianNajdorf {Siciliana Najdorf}
translate I OpenGame {Partita Aperta}
translate I Vienna {Vienna}
translate I KingsGambit {Gambetto di Re}
translate I RussianGame {Partita Russa}
translate I ItalianTwoKnights {Italiana/Due Cavalli}
translate I Spanish {Spagnola}
translate I SpanishExchange {Spagnola Cambio}
translate I SpanishOpen {Spagnola Aperta}
translate I SpanishClosed {Spagnola Chiusa}
translate I FrenchDefence {Difesa Francese}
translate I FrenchAdvance {Francese Avanzata}
translate I FrenchTarrasch {Francese Tarrasch}
translate I FrenchWinawer {Francese Winawer}
translate I FrenchExchange {Francese Cambio}
translate I QueensPawn {Pedone di Donna}
translate I Slav {Slava}
translate I QGA {Gambetto di Donna Acettato}
translate I QGD {Gambetto di Donna Rifiutato}
translate I QGDExchange {Gambetto di Donna Rifiutato Cambio}
translate I SemiSlav {Semi-Slava}
translate I QGDwithBg5 {Gambetto di Donna Rifiutato con Ag5}
translate I QGDOrthodox {Gambetto di Donna Rifiutato Ortodossa}
translate I Grunfeld {Grunfeld}
translate I GrunfeldExchange {Grunfeld Cambio}
translate I GrunfeldRussian {Grunfeld Russa}
translate I Catalan {Catalana}
translate I CatalanOpen {Catalana Aperta}
translate I CatalanClosed {Catalana Chiusa}
translate I QueensIndian {Indiana di Donna}
translate I NimzoIndian {Nimzo-Indiana}
translate I NimzoIndianClassical {Nimzo-Indiana Classica}
translate I NimzoIndianRubinstein {Nimzo-Indian Rubinstein}
translate I KingsIndian {Indiana di Re}
translate I KingsIndianSamisch {Indiana di Re Samisch}
translate I KingsIndianMainLine {Indiana di Re Liena Principale}
# ====== TODO To be translated ======
translate I ConfigureFics {Configure FICS}
# ====== TODO To be translated ======
translate I FICSGuest {Login as Guest}
# ====== TODO To be translated ======
translate I FICSServerPort {Server port}
# ====== TODO To be translated ======
translate I FICSServerAddress {IP Address}
# ====== TODO To be translated ======
translate I FICSRefresh {Refresh}
# ====== TODO To be translated ======
translate I FICSTimesealPort {Timeseal port}
# ====== TODO To be translated ======
translate I FICSSilence {Silence}
# ====== TODO To be translated ======
translate I FICSOffers {Offers}
# ====== TODO To be translated ======
translate I FICSConsole {Console}
# ====== TODO To be translated ======
translate I FICSGames {Games}
# ====== TODO To be translated ======
translate I FICSUnobserve {Stop observing game}
# ====== TODO To be translated ======
translate I FICSProfile {Display your history and profile}
# ====== TODO To be translated ======
translate I FICSRelayedGames {Relayed games}
# ====== TODO To be translated ======
translate I FICSFindOpponent {Find opponent}
# ====== TODO To be translated ======
translate I FICSTakeback {Takeback}
# ====== TODO To be translated ======
translate I FICSTakeback2 {Takeback 2}
# ====== TODO To be translated ======
translate I FICSInitTime {Initial time (min)}
# ====== TODO To be translated ======
translate I FICSIncrement {Increment (sec)}
# ====== TODO To be translated ======
translate I FICSRatedGame {Rated Game}
# ====== TODO To be translated ======
translate I FICSAutoColour {automatic}
# ====== TODO To be translated ======
translate I FICSManualConfirm {confirm manually}
# ====== TODO To be translated ======
translate I FICSFilterFormula {Filter with formula}
# ====== TODO To be translated ======
translate I FICSIssueSeek {Issue seek}
# ====== TODO To be translated ======
translate I FICSChallenge {Challenge}
# ====== TODO To be translated ======
translate I FICSAccept {accept}
# ====== TODO To be translated ======
translate I FICSDecline {decline}
# ====== TODO To be translated ======
translate I FICSColour {Colour}
# ====== TODO To be translated ======
translate I FICSSend {send}
# ====== TODO To be translated ======
translate I FICSConnect {Connect}
# ====== TODO To be translated ======
translate I FICSdefaultuservars {Use default variables}
# ====== TODO To be translated ======
translate I FICSObserveconfirm {Do you want to observe game}
# ====== TODO To be translated ======
translate I GameReview {Game review}
# ====== TODO To be translated ======
translate I GameReviewTimeExtended {Time extended}
# ====== TODO To be translated ======
translate I GameReviewMargin {Error margin}
# ====== TODO To be translated ======
translate I GameReviewAutoContinue {Auto continue when move is correct}
# ====== TODO To be translated ======
translate I GameReviewReCalculate {Use extended time}
# ====== TODO To be translated ======
translate I GameReviewAnalyzingMovePlayedDuringTheGame {Analyzing move played during the game}
# ====== TODO To be translated ======
translate I GameReviewAnalyzingThePosition {Analyzing the position}
# ====== TODO To be translated ======
translate I GameReviewEnterYourMove {Enter your move}
# ====== TODO To be translated ======
translate I GameReviewCheckingYourMove {Checking your move}
# ====== TODO To be translated ======
translate I GameReviewYourMoveWasAnalyzed {Your move was analyzed}
# ====== TODO To be translated ======
translate I GameReviewYouPlayedSameMove {You played the same move as in match}
# ====== TODO To be translated ======
translate I GameReviewScoreOfYourMove {Score of your move}
# ====== TODO To be translated ======
translate I GameReviewGameMoveScore {Game move's score}
# ====== TODO To be translated ======
translate I GameReviewEngineScore {Engine's score}
# ====== TODO To be translated ======
translate I GameReviewYouPlayedLikeTheEngine {You played like the engine}
# ====== TODO To be translated ======
translate I GameReviewNotEngineMoveButGoodMove {Not the engine move, but is also a good move}
# ====== TODO To be translated ======
translate I GameReviewMoveNotGood {This move is not good, score is}
# ====== TODO To be translated ======
translate I GameReviewMovesPlayedLike {Moves played like}
# ====== TODO To be translated ======
translate I GameReviewMovesPlayedEngine {Moves played like engine}
translate I CCDlgConfigureWindowTitle {Configura Scacchi per Corrispondenza}
translate I CCDlgCGeneraloptions {Opzioni generali}
translate I CCDlgDefaultDB {Database di Default:}
translate I CCDlgInbox {Posta in Arrivo (percorso):}
translate I CCDlgOutbox {Posta in Uscita (percorso):}
translate I CCDlgXfcc {Configurazione di Xfcc:}
translate I CCDlgExternalProtocol {Gestore del Protocollo esterno (p.e. Xfcc)}
translate I CCDlgFetchTool {Strumento per la scansione:}
translate I CCDlgSendTool {Strumento per l'invio:}
translate I CCDlgEmailCommunication {Comunicazione via eMail}
translate I CCDlgMailPrg {Programma di posta:}
translate I CCDlgBCCAddr {Indirizzo (B)CC:}
translate I CCDlgMailerMode {Modo:}
translate I CCDlgThunderbirdEg {p.e. Thunderbird, Mozilla Mail, Icedove...}
translate I CCDlgMailUrlEg {p.e. Evolution}
translate I CCDlgClawsEg {p.e Sylpheed Claws}
translate I CCDlgmailxEg {p.e. mailx, mutt, nail...}
translate I CCDlgAttachementPar {Parametro per l'allegato:}
translate I CCDlgInternalXfcc {Usa il supporto interno per Xfcc}
# ====== TODO To be translated ======
translate I CCDlgConfirmXfcc {Confirm moves}
translate I CCDlgSubjectPar {Parametro per l'oggetto:}
# ====== TODO To be translated ======
translate I CCDlgDeleteBoxes {Empty In-/Outbox}
# ====== TODO To be translated ======
translate I CCDlgDeleteBoxesText {Do you really want to empty your In- and Outbox folders for Correspondence Chess? This requires a new sync to show the last state of your games}
# ====== TODO To be translated ======
translate I CCDlgConfirmMove {Confirm move}
# ====== TODO To be translated ======
translate I CCDlgConfirmMoveText {If you confirm, the following move and comment will be sent to the server:}
# ====== TODO To be translated ======
translate I CCDlgDBGameToLong {Inconsistent Mainline}
# ====== TODO To be translated ======
translate I CCDlgDBGameToLongError {The mainline in your database is longer than the game in your Inbox. If the Inbox contains current games, i.e. right after a sync, some moves were added to the mainline in the database erroneously.\nIn this case please shorten the mainline to (at max) move\n}
translate I CCDlgStartEmail {Avvia una nuova partita tramite eMail}
translate I CCDlgYourName {Il tuo nome:}
translate I CCDlgYourMail {Il tuo indirizzo eMail:}
translate I CCDlgOpponentName {Nome dell'avversario:}
translate I CCDlgOpponentMail {Indirizzo eMail dell'avversario:}
translate I CCDlgGameID {ID (univoco) della partita:}
translate I CCDlgTitNoOutbox {Scid: Posta in uscita del gioco per corrispondenza}
translate I CCDlgTitNoInbox {Scid: Posta in arrivo del gioco per corrispondenza}
translate I CCDlgTitNoGames {Scid: Nessuna partita per il gioco per corrispondenza}
translate I CCErrInboxDir {Directory della posta in arrivo:}
translate I CCErrOutboxDir {Directory della posta in uscita:}
translate I CCErrDirNotUsable {non esiste o non è accessibile\nControlla e correggi le impostazioni.}
translate I CCErrNoGames {non contiene partite!\nEffettua prima una scansione.}
translate I CCDlgTitNoCCDB {Scid: Nessun database per il gioco per corrispondenza}
translate I CCErrNoCCDB {Non è aperto nessun database di tipo "gioco per corrispondenza". Aprine uno usando le funzioni per il gioco per corrispondenza.}
# ====== TODO To be translated ======
translate I CCFetchBtn {Fetch games from the server and process the Inbox}
# ====== TODO To be translated ======
translate I CCPrevBtn {Goto previous game}
# ====== TODO To be translated ======
translate I CCNextBtn {Goto next game}
# ====== TODO To be translated ======
translate I CCSendBtn {Send move}
# ====== TODO To be translated ======
translate I CCEmptyBtn {Empty In- and Outbox}
# ====== TODO To be translated ======
translate I CCHelpBtn {Help on icons and status indicators.\nFor general Help press F1!}
# ====== TODO To be translated ======
translate I CCDlgServerName {Server Name:}
# ====== TODO To be translated ======
translate I CCDlgLoginName  {Login Name:}
# ====== TODO To be translated ======
translate I CCDlgPassword   {Password:}
# ====== TODO To be translated ======
translate I CCDlgURL        {Xfcc-URL:}
# ====== TODO To be translated ======
translate I CCDlgRatingType {Rating Type:}
# ====== TODO To be translated ======
translate I CCDlgDuplicateGame {Non-unique game ID}
# ====== TODO To be translated ======
translate I CCDlgDuplicateGameError {This game exists more than once in your database. Please delete all duplicates and compact your game file (File/Maintenance/Compact Database).}
# ====== TODO To be translated ======
translate I CCDlgSortOption {Sorting:}
# ====== TODO To be translated ======
translate I CCDlgListOnlyOwnMove {Only games I have the move}
# ====== TODO To be translated ======
translate I CCOrderClassicTxt {Site, Event, Round, Result, White, Black}
# ====== TODO To be translated ======
translate I CCOrderMyTimeTxt {My Clock}
# ====== TODO To be translated ======
translate I CCOrderTimePerMoveTxt {Time per move till next time control}
# ====== TODO To be translated ======
translate I CCOrderStartDate {Start date}
# ====== TODO To be translated ======
translate I CCOrderOppTimeTxt {Opponents Clock}
# ====== TODO To be translated ======
translate I CCDlgConfigRelay {Configure ICCF observations}
# ====== TODO To be translated ======
translate I CCDlgConfigRelayHelp {Go to the games page on http://www.iccf-webchess.com and display the game to be observed.  If you see the chessboard copy the URL from your browser to the list below. One URL per line only!\nExample: http://www.iccf-webchess.com/MakeAMove.aspx?id=266452}
# ====== TODO To be translated ======
translate I ExtHWConfigConnection {Configure external hardware}
# ====== TODO To be translated ======
translate I ExtHWPort {Port}
# ====== TODO To be translated ======
translate I ExtHWEngineCmd {Engine command}
# ====== TODO To be translated ======
translate I ExtHWEngineParam {Engine parameter}
# ====== TODO To be translated ======
translate I ExtHWShowButton {Show button}
# ====== TODO To be translated ======
translate I ExtHWHardware {Hardware}
# ====== TODO To be translated ======
translate I ExtHWNovag {Novag Citrine}
# ====== TODO To be translated ======
translate I ExtHWInputEngine {Input Engine}
# ====== TODO To be translated ======
translate I ExtHWNoBoard {No board}
# ====== TODO To be translated ======
translate I NovagReferee {Referee}
# ====== TODO To be translated ======
translate I IEConsole {Input Engine Console}
# ====== TODO To be translated ======
translate I IESending {Moves sent for}
# ====== TODO To be translated ======
translate I IESynchronise {Synchronise}
# ====== TODO To be translated ======
translate I IERotate  {Rotate}
# ====== TODO To be translated ======
translate I IEUnableToStart {Unable to start Input Engine:}
translate I DoneWithPosition {Posizione conclusa}
# ====== TODO To be translated ======
translate I Board {Board}
# ====== TODO To be translated ======
translate I showGameInfo {Show game info}
# ====== TODO To be translated ======
translate I autoResizeBoard {Automatic resize of board}
# ====== TODO To be translated ======
translate I DockTop {Move to top}
# ====== TODO To be translated ======
translate I DockBottom {Move to bottom}
# ====== TODO To be translated ======
translate I DockLeft {Move to left}
# ====== TODO To be translated ======
translate I DockRight {Move to right}
# ====== TODO To be translated ======
translate I Undock {Undock}
# ====== TODO To be translated ======
translate I ChangeIcon {Change icon...}
}

############################################################
#
# Italian tips section:

set tips(I) {
  {
    SCID ha oltre 30 <a Index>pagine di help</a>, e in molte finestre 
    premendo il tasto funzionale <b>F1</b> apparira' una pagina di help
    relativa alla finestra.
  }
  {
    Molte finestre di SCID (p.e. il database <a Switcher>database switcher</a>,
    ecc.) hanno un menu' collegato al pulsante destro del mouse. Prova a
    premerlo in ogni finestra per vedere se c'e' e quali funzionalita' permette.
  }
  {
    SCID ti consente piu' di una modalit� per inserire le mosse, scegli
    quale preferisci. Puoi utilizzare il mouse (con o senza il suggerimento
    della mossa) o la tastiera (con o senza il completamento della mossa).
    Leggi la pagina di help <a Moves>inserire le mosse</a> per maggiori dettagli. 
  }
  {
    Se utilizzi pochi database che apri spesso, aggiungi un
    <a Bookmarks>segnalibro</a> a ognuno di essi e poi puoi aprirlo piu'
    velocemente con il Menu Segnalibri.
  }
  {
    Puoi visualizzare tutte le mosse della partita caricata (con ogni
    variante e/o commento) utilizzando la <a PGN>Finestra PGN</a>.
    Nella Finestra PGN puoi andare a ogni mossa premendo il tasto sinistro
    del mouse quando sei sulla mossa oppure visualizzare la posizione
    premendo il tasto centrale/destro del mouse.
  }
  {
    Puoi copiare partite da un database ad un'altro usando la tecnica del
    drag and drop utilizzando il tasto sinistro del mouse nella finestra 
    <a Switcher>database switcher</a>.
  }
  {
    SCID puo' aprire file PGN, anche se sono compressi con Gzip (con il
    suffisso .gz). I file PGN aperti sono a sola lettura cosi' puoi
    modificare un file PGN in SCID, creando un nuovo database SCID e copiando
    il file PGN in esso utilizzando il <a Switcher>database switcher</a>.
  }
  {
    Se hai un grosso database e usi spesso la finestra <a Tree>albero</a>,
    e' il caso di utilizzare <b>riempi il file cache</b> dalla Finestra
    Albero (menu file). Cio' memorizza le statistiche dell'albero delle
    piu' comuni posizioni di apertura rendendo piu' veloci gli accessi
    all'albero per quel database.
  }
  {
    La finestra <a Tree>albero</a> visualizza tutte le mosse giocate dalla
    posizione caricata, ma se vuoi vedere tutti gli ordini di mosse che
    raggiungono la posizione devi generare un <a OpReport>report di apertura</a>.
  }
  {
    Nella finestra <a GameList>elenco partite</a> premendo il tasto sinistro
    o desto del mouse sulla testata di ogni colonna puoi modificarne la
    larghezza.
  }
  {
    Con la finestra <a PInfo>informazioni sul giocatore</a> (che ottieni
    cliccando sui nomi dei giocatori nella info area sotto la finestra
    con la scacchiera) tu puoi facilmente, utilizzando il
    <a Searches Filter>filtro</a>, ottenere tutte le partite di un certo
    giocatore con i suoi risultati cliccando su ogni campo che appare
    <red>in rosso</red>.
  }
  {
    Quando studi un'apertura puo' essere utile effettuare una
    <a Searches Board>ricerca su scacchiera</a> con le opzioni
    <b>Pedoni</b> oppure <b>Colonne</b> sulla posizione che ti
    interessa, in maniera da evidenziarti se altre aperture 
    raggiungono la stessa struttura di pedoni.
  }
  {
    Nell'Area di informazioni sulla partita (sotto la scacchiera) tu puoi
    premere il tasto destro del mouse per ottenere un menu' per 
    personalizzarla. Per esempio puoi nascondere la prossima mossa e cio'
    e' utile quando visualizzi una partita per allenamento e vuoi pensare
    le mosse successive. 
  }
  {
    Se tu effettui spesso <a Maintenance>manutenzione</a> di un database
    di grosse dimensioni puoi effettuare tutte le attivita' in un colpo
    solo utilizzando il <a Maintenance Cleaner>pulitore</a>.
  }
  {
    Se tu hai un grosso database dove molte partite hanno il campo EventDate
    valorizzato e tu vuoi le partite in ordine di data utilizza
    <a Sorting>ordinamento</a> per EventDate/Event invece di Date/Event
    cosicche' otterrai insieme le partite dello stesso torneo anche se hanno
    date diverse (partendo dal presupposto che abbiano la stessa EventDate).
  }
  {
    Prima di <a Maintenance Twins>cancellare le partite doppie</a> e' meglio
    utilizzare il <a Maintenance Spellcheck>controllo ortografico</a> sul tuo
    database permettendo a SCID di identificare un numero maggiore di
    partite doppie e contrassegnarle per la cancellazione.
  }
  {
    <a Flags>Gli identificatori</a>  sono utili per evidenziare partite con
    caratteristiche particolari da ricercare successivamente (p.e. struttura
    di pedoni, tattica, ecc.). Puoi ricercare le partite contrassegnate
    utilizzando <a Searches Header>ricerca per intestazione</a>.
  }
  {
    Se stai visualizzando una partita e vuoi provare qualche altra mossa
    senza modificare la partita puoi entrare nel Modo Prova (con lo
    shortcut <b>Ctrl+space</b> oppure cliccando l'apposita icona).
    Quando hai finito puoi deselezionare il Modo Prova ritornando
    alla partita originale.
  }
  {
    Per cercare le partite maggiormente rilevanti (quelle con i giocatori
    con l'Elo piu' alto) in una posizione, apri la finestra <a Tree>albero</a>
    e da quella apri la Lista Migliori Partite.
    Puoi personalizzare la lista ottenendo solo le partite con un
    certo risultato che ti interessa.
  }
  {
    Un buon modo per studiare le aperture utilizzando un grosso database
    e' attivare il Modo Esercizio nella finestra <a Tree>albero</a> e
    giocare contro il database per vedere quali linee appaiono spesso.
  }
  {
    Se hai due database aperti e vuoi visualizzare le statistiche
    dell'<a Tree>albero</a> del primo database mentre esamini una
    partita del secondo database premi il pulsante <b>Blocca</b> nella
    finestra albero per bloccare il primo database ed allora selezionare
    il secondo database.
  }
  {
    Il <a Tmt>tournament finder</a> non e' solo utile per trovare un
    certo torneo, ma puo' essere usato anche per vedere quali tornei
    ha giocato recentemente un certo giocatore oppure vedere i tornei
    piu' importanti giocati in una certa nazione.
  }
  {
    La finestra <a Searches Material>Materiale/Schema</a> ti propone
    alcune possibilita', fra le piu' comuni, facilitandoti ricerche
    per aperture o centri partita a fine di studio.
  }
  {
    Quando effettui una ricerca per una particolare posizione
    nella finestra <a Searches Material>Materiale/Schema</a> e'
    spesso utile restringere la ricerca a partite che permangono
    nella posizione voluta almeno qualche mezza mossa eliminando
    partite che raggiungono la posizione voluta solo una volta. 
  }
  {
    Se tu hai un importante database e non vuoi correre il rischio
    di effettuare modifiche inopportune, seleziona <b>solo lettura...</b>
    dal <b>File</b> menu dopo averlo aperto, oppure cambia gli
    attributi a solo lettura.
  }
  {
    Se usi XBoard oppure WinBoard (oppure altri programmi scacchistici
    che possono copiare sulla clipboard la posizione attuale in notazione
    standard FEN) e vuoi copiare la tua posizione su SCID, il modo piu'
    facile e veloce e' selezionare <b>Copia Positione</b> dal menu File
    in XBoard/WinBoard e poi <b>Copia come posizione di partenza</b> dal
    menu Edita in SCID.  
  }
  {
    In una <a Searches Header>ricerca per intestazione</a>,
    giocatore/evento/luogo/turno non sono sensibili alle maiuscole e
    vengono cercate anche all'interno dei nomi. Puoi scegliere di
    fare una ricerca sensibile alle maiuscole (dove "?" = ogni singolo
    carattere e "*" = zero o piu' caratteri) digitando la stringa che
    vuoi trovare fra "virgolette". Per esempio digitando "*BEL" (con
    le virgolette) nel campo luogo otterrai tutte le partite giocate
    in Belgio ma non a Belgrado.
  }
  {
    Se vuoi correggere una mossa in una partita senza perdere le mosse
    giocate successivamente, apri la finestra <a Import>Importa</a>
    premi l'icona b>Incolla la partica corrente</b>, edita la mossa
    sbagliata e poi premi l'icona <b>Importa</b>.
  }
  {
    Se hai caricato un file di classificazione ECO, puoi andare alla
    posizione classificata piu' profonda della partita correntemente
    caricata con <b>Identifica apertura</b> nel menu <b>Partita</b>
    (shortcut: Ctrl+Shift+D).
  }
  {
    Se vuoi verificare le dimensioni di un file o la sua data di ultima
    modifica prima di aprirlo, utilizza <a Finder>file finder</a> per
    aprirlo.
  }
  {
    Un file di <a Repertoire>repertorio</a> e' un grande strumento per
    monitorare le tue aperture preferite e per trovare le partite nelle
    quali queste linee sono state giocate. Dopo aver memorizzato le tue
    aperture in un file di repertorio puoi effettuare ricerche tutte le
    volte che acquisisci nuovi file di partite e visualizzare le partite
    che ti interessano.
  }
  {
    Un <a OpReport>rapporto di apertura</a> e' molto utile per apprendere
    ulteriori informazioni su una particolare posizione. Puoi vedere il
    punteggio percentuale che raggiunge, se porta a rapide patte, i temi
    posizionali piu' comuni e molto altro.
  }
  {
    Puoi aggiungere i piu' comuni simboli di annotazione (!, !?, +=, ecc)
    alla posizione attualmente caricata con scorciatoie da tastiera senza
    necessita' di utilizzare <a Comment>l'editor di commenti<a>.
    Per esempio digitando "!" seguito dal tasto Conferma/Enter/Return
    aggiungerete il simbolo "!". Guarda la pagina di help
    <a Moves>Inserire le mosse</a> per maggiori informazioni.
  }
  {
    Se stai visualizzando un'apertura in un database con <a Tree>l'albero</a>
    puoi facilmente vedere i risultati percentuali dell'apertura che stai
    guardando (recenti e fra giocatori di Elo alto) aprendo la finestra
    Statistiche (shortcut: Ctrl+I).
  }
  {
    Puoi cambiare le dimensioni della scacchiera premendo i tasti
    <b>Ctrl</b> e <b>Shift</b>, e regolare le dimensioni premendo i tasti
    freccia <b>Left</b> o <b>Right</b> .
  }
  {
    Dopo una <a Searches>ricerca</a> puoi facilmente visualizzare tutte le
    partite trovate premendo <b>Ctrl</b> e con i tasti <b>Su</b> o <b>Giu'</b>
    caricare la precedente o successiva partita del <a Searches Filter>filtro</a>.
  }
}


# end of italian.tcl











































































#  nederlan.tcl:
#  Dutch language support for Scid.
#  Added by J.Kees Hofkamp.
#  Changes by J. Krabbenbos.
#  Changes by Leander Laruelle.
# Untranslated messages are marked with a "***" comment.


addLanguage N Nederlands 0 ;#iso8859-1

proc setLanguage_N {} {

# File menu:
menuText N File "Bestand" 0
menuText N FileNew "Nieuw..." 0 {Maak een nieuwe Scid database}
menuText N FileOpen "Openen..." 0 {Open een bestaande Scid database}
menuText N FileClose "Sluiten" 0 {Sluit de  actieve Scid database}
menuText N FileFinder "Bestandzoeker" 0 {Open het bestandszoekvenster}
menuText N FileBookmarks "Bladwijzers" 0 {Bladwijzer menu (sneltoets: Ctrl+B)}
menuText N FileBookmarksAdd "Toevoegen bladwijzer" 0 \
  {Bladwijzer naar huidige databasepartij en stelling}
menuText N FileBookmarksFile "Bladwijzer-bestand" 0 \
  {Maak een bladwijzerbestand voor de huidige partij en stelling}
menuText N FileBookmarksEdit "Wijzigen Bladwijzers..." 0 \
  {Bladwijzermenu's}
menuText N FileBookmarksList "Weergeven bladwijzerfolders als lijst" 0 \
  {Weergeven bladwijzerfolders als lijst, niet als submenu's}
menuText N FileBookmarksSub "Weergeven bladwijzerfolders als submenu's" 0 \
  {Weergeven bladwijzerfolders als submenu's, niet als lijst}
menuText N FileMaint "Onderhoud" 2 {Onderhoud Scid database}
menuText N FileMaintWin "Onderhoudsvenster" 2 \
  {Open/sluit het Scid onderhoudsvenster}
menuText N FileMaintCompact "Reorganiseer database..." 0 \
  {Reorganiseer database bestanden}
menuText N FileMaintClass "Partijen ECO-classificeren..." 10 \
  {Herbereken de ECO code van alle partijen}
menuText N FileMaintSort "Sorteren..." 0 \
  {Sorteer alle partijen in de database}
menuText N FileMaintDelete "Dubbels verwijderen..." 0 \
  {Vind dubbele partijen om ze te verwijderen}
menuText N FileMaintTwin "Dubbels-venster" 1 \
  {Open/bijwerken het dubbels-controle venster}
menuText N FileMaintName "Namen" 0 \
  {Corrigeer namen/spelling}
menuText N FileMaintNameEditor "Namen-bewerker" 6 \
  {Open/sluit het namen-correctie venster}
menuText N FileMaintNamePlayer "Corrigeer naam speler..." 15 \
  {Controleer spelling namen via het spellingcontrole bestand}
menuText N FileMaintNameEvent "Corrigeer naam evenement..." 15 \
  {Controleer spelling evenementen via spellingchecker bestand}
menuText N FileMaintNameSite "Corrigeer naam plaats..." 15 \
  {Controleer plaatsnamen via spellingchecker bestand}
menuText N FileMaintNameRound "Corrigeer ronde..." 10 \
  {Controleer rondenamen via spelling spellingchecker bestand}
menuText N FileReadOnly "Alleen lezen..." 7 \
  {Zet huidige database op alleen-lezen en voorkom veranderingen}
menuText N FileSwitch "Schakel naar andere  database" 0 \
  {Schakel naar een andere geopende database} 
menuText N FileExit "Einde programma" 0 {Einde Scid}
menuText N FileMaintFixBase "Repareer databank" 0 \
    {Probeer een corrupte databank te repareren}

# Edit menu:
menuText N Edit "Bewerken" 0
menuText N EditAdd "Nieuwe variant" 8 \
 {Voeg op dit punt een variant toe}
menuText N EditDelete "Variant verwijderen" 11 \
 {Verwijder een variant voor deze zet}
menuText N EditFirst "Maak hoofdvariant" 5 \
  {Maak deze variant de eerste in de lijst}
menuText N EditMain "Variatie op hoofdvariant" 13 \
   {Promoveerd de variant als hoofdvariant}
menuText N EditTrial "Probeer variatie" 0 \
  {Start/stop probeer modus, om een idee op het bord te testen}
menuText N EditStrip "Verwijder analyse" 2 {Verwijder commentaar of varianten uit deze partij}
menuText N EditUndo "Ongedaan" 0 {Maak laatset verandering ongedaan}
menuText N EditStripComments "Commentaar" 0 \
  {Verwijder alle commentaar en annotaties uit deze partij}
menuText N EditStripVars "Varianten" 0 {Verwijder alle varianten uit deze partij}
menuText N EditStripBegin " Zetten vanaf begin " 1 \
  {Verwijder alle zetten vanaf begin van de partij} ;
menuText N EditStripEnd " Zetten tot het einde  " 0 \
  {Verwijder alle verdere zetten tot het einde van de partij} ;
menuText N EditReset "Klembord leegmaken" 0 \
  {Maak het klembord helemaal leeg}
menuText N EditCopy "Partij naar klembord" 7 \
  {Kopieer deze partij naar het klembord}
menuText N EditPaste "Partij vanuit klembord" 7 \
  {Plak actieve klembord-partij hier}
menuText N EditPastePGN "Plak de Klipbord tekst als  PGN partij..." 10 \
  {Interpreteer de Klipbord tekst als een partij  in PGN notatie en plak die hier} ;
menuText N EditSetup "Stelling opzetten..." 0 \
  {Kies een start-stelling voor de partij}
menuText N EditCopyBoard "Copieer stelling " 6 \
  {Copieer de huidige stelling in FEN notatie naar de tekst het tekst clibbord } ;
menuText N EditPasteBoard "Invoegen start stelling" 12 \
  {Maak de start stelling van de huidige tekst selectie (klembord)}

# Game menu:
menuText N Game "Partij" 0
menuText N GameNew "Partij leegmaken" 7 \
  {Maak partij leeg; sla veranderingen niet op}
menuText N GameFirst "Eerste partij laden" 5 {Laad de eerste gefilterde partij}
menuText N GamePrev "Vorige partij laden" 0 \
  {Laad vorige partij in het filter}
menuText N GameReload "Partij opnieuw laden" 7 \
  {Laad partij opnieuw; sla veranderingen niet op}
menuText N GameNext "Volgende partij laden" 3 \
  {Laad volgende partij in het filter}
menuText N GameLast "Laatste partij laden" 6 {Laad de laatste gefilterde partijd}
menuText N GameRandom "Laad willekeurige partij" 8 {Laad een willekeurige partij}
menuText N GameNumber "Laad partij nummer..." 12 \
  {Laad partijnummer:}
menuText N GameReplace "Partij overschrijven..." 11 \
  {Bewaar partij; overschrijf oude versie}
menuText N GameAdd "Partij toevoegen..." 7 \
  {Bewaar partij en voeg toe aan de database}
menuText N GameDeepest "Opening bepalen" 8 \
  {Ga naar de diepste stelling uit het ECO openingboek}
menuText N GameGotoMove "Zetnummer..." 0 \
  {Ga naar zetnummer .. in de partij}
menuText N GameNovelty "Vind nieuwtje..." 7 \
  {Vind de eerste zet in deze partij die nog niet eerder is gespeeld}

# Search menu:
menuText N Search "Selecteren" 0
menuText N SearchReset "Alle partijen" 0 \
  {Reset filter en toon alle partijen}
menuText N SearchNegate "Selectie omdraaien" 9 \
  {Draai filter om en toon de andere partijen uit de databse}
menuText N SearchCurrent "Zoek huidige stelling" 5 \
  {Zoek in database naar huidige stelling}
menuText N SearchHeader "Partijgegevens..." 5 \
  {Zoek op speciale informatie: speler, evenement enz.}
menuText N SearchMaterial "Materiaal/Kenmerken..." 0 \
  {Zoek op patroon: bord, materiaal enz.}
menuText N SearchUsing "Zoekopties" 0 \
  {Zoek met gebruikmaking van opgeslagen opties}

# Windows menu:
menuText N Windows "Venster" 0
menuText N WindowsComment "Bewerk commentaar" 0 \
 {Open/sluit commentaar bewerkings venster}
menuText N WindowsGList "Toon alle partijen" 0 \
  {Open/sluit lijst met partijen}
menuText N WindowsPGN "PGN-venster" 0 \
 {Open/sluit het PGN-notatie venster}
menuText N WindowsPList "Spelervinder" 2 {Open/sluit de spelervinder} ;
menuText N WindowsTmt "Toernooi Zoeker" 2 {Open/sluit het toernooi zoekvenster}
menuText N WindowsSwitcher  "Database wisselen" 0 \
  {Open/sluit het database-wisselen venster}
menuText N WindowsMaint "Onderhoudsvenster" 5 \
  {Open/sluit het onderhoudsvenster}
menuText N WindowsECO "ECO Browser" 0 {Open/sluit het ECO browser venster}
menuText N WindowsRepertoire "Repertoire editor" 0 {Open/sluit de openingsrepertoir editor}
menuText N WindowsStats "Statistiek" 0 \
  {Open/sluit het filter statieken-venster}
menuText N WindowsTree "Openingoverzicht" 0 {Open/sluit het Openingsoverzichtvenster}
menuText N WindowsTB "Tablebase venster" 1 \
  {Open/sluit het Tablebase venster}
menuText N WindowsBook "Boek Venster" 0 {Open/sluit het Boek venster}
menuText N WindowsCorrChess "Correspondentieschaak venster" 0 \
    {Open/sluit het correspondentieschaak venster}

# Tools menu:
menuText N Tools "Gereedschappen" 0
menuText N ToolsAnalysis "Schaakengine ..." 3 \
  {Start/stop schaak-analyse programma 1}
menuText N ToolsAnalysis2 "Schaakengine #2..." 17 \
  {Start/stop  schaak-analyse programma 2}
menuText N ToolsCross "Kruistabel" 0 \
  {Toon toernooi-kruistabel voor huidige partij}
menuText N ToolsEmail "EmailBeheerder" 0 {Open/sluit het email venster}
menuText N ToolsFilterGraph "Filter grafiek" 7 \
  {Openen/sluiten grafisch filter venster}
menuText N ToolsAbsFilterGraph "Abs. Filter Grafiek" 7 {Open/sluit het filter grafiek venster voor absolute waarden}
menuText N ToolsOpReport "Openingen rapportering" 0 \
  {Genereer een openingenrapport voor de huidige stelling}
menuText N ToolsOpenBaseAsTree "Open base als boom" 0   {Open een databank en gebruik ze in een boomvenster}
menuText N ToolsOpenRecentBaseAsTree "Open een recente databank als boom" 0   {Open een recente databank en gebruik ze in een boom venster}
menuText N ToolsTracker "Stuk Spoorvolger "  0 {Open het Stuk Spoorvolger venster}
menuText N ToolsTraining "Training"  0 {Training gereedschappen (taktiek, openingen,...) }
menuText N ToolsTacticalGame "Taktische partij"  0 {Speel een taktische partij}
menuText N ToolsSeriousGame "Ernstige partij"  0 {Speel een ernstige partij}
menuText N ToolsTrainOpenings "Openingen "  0 {Repertoriumtraining}
menuText N ToolsTrainReviewGame "Herspeel Partij"  0 {Zoek de zetten gespeeld in een partij}
menuText N ToolsTrainTactics "Tactiek "  0 {Los tactische stellingen op }
menuText N ToolsTrainCalvar "Berekenen van varianten"  0 {Training in het berekenen van varianten}
menuText N ToolsTrainFindBestMove "Vind de beste zet"  0 {Vind de beste zet}
menuText N ToolsTrainFics "Speel op het internet"  0 {Speel of freechess.org}
menuText N ToolsBookTuning "Openingenboek afstemming " 0 {Openingenboek afstemming}
menuText N ToolsConnectHardware "Verbind Hardware" 0 {Verbind externe hardware}
menuText N ToolsConnectHardwareConfigure "Configureer..." 0 {Configureer externe hardware en verbinding}
menuText N ToolsConnectHardwareNovagCitrineConnect "Verbind Novag Citrine" 0 {Verbind Novag Citrine}
menuText N ToolsConnectHardwareInputEngineConnect "Verbind Invoer Engine" 0 {Verbind Invoer Engine (e.g. DGT)}
menuText N ToolsPInfo "Speler Informatie"  7 \
  {Open/wijzig het spelerinformatievenster}
menuText N ToolsPlayerReport "Speler Rapport ..." 3 \
  {Genereer een Speler Rapport} ;
menuText N ToolsRating "Elo Klassering geschiedenis" 0 \
  {Grafiek van de Elo Klassering van de twee spelers}
menuText N ToolsScore "Partij score" 7 \
  {Laat het partij-score venster zien}
menuText N ToolsExpCurrent "Partij exporteren" 8 \
  {Exporteer huidige partij naar een bestand}
menuText N ToolsExpCurrentPGN "Partij in PGN-formaat exporteren..." 11 \
  {Schrijf huidige partij naar PGN-bestand}
menuText N ToolsExpCurrentHTML "Partij in HTML-formaat exporteren..." 11 \
  {Schrijf huidige partij naar HTML-bestand}
menuText N ToolsExpCurrentHTMLJS "Exporteer Partij naar een HTML en JavaScript Bestand..." 15 {Schrijf de huidige partij naar een HTML en JavaScript bestand}  
menuText N ToolsExpCurrentLaTeX "Partij in LaTeX-formaat exporteren..." 11 \
  {Schrijf huidige partij naar LaTex-bestand}
menuText N ToolsExpFilter "Alle partijen in filter exporteren" 17 \
  {Exporteer alle geslecteerde partijen naar een bestand}
menuText N ToolsExpFilterPGN "Filter in PGN-formaat exporteren..." 10 \
  {Schrijf selectie naar PGN-bestand}
menuText N ToolsExpFilterHTML "Filter in HTML-formaat exporteren..." 10 \
  {Schrijf selectie naar HTML-bestand}
menuText N ToolsExpFilterHTMLJS "Exporteer Filter naar HTML en JavaScript Bestand..." 17 {Schrijf alle gefilterde partijen naar een HTML en JavaScript bestand}  
menuText N ToolsExpFilterLaTeX "Filter in LaTeX-formaat exporteren..." 10 \
  {Schrijf selectie naar LaTex-bestand}
menuText N ToolsImportOne "Een PGN partij importeren..." 4 \
  {Importeer PGN partij}
menuText N ToolsImportFile "PGN database importeren..." 4 \
  {Importeer PGN bestand}
menuText N ToolsStartEngine1 "Start engine 1" 0  {Start engine 1}
menuText N ToolsStartEngine2 "Start engine 2" 0  {Start engine 2}
# ====== TODO To be translated ======
menuText N ToolsCaptureBoard "Capture Current Board..." 5  {Save the current board as an image.}
menuText N Play "Speel" 0
menuText N CorrespondenceChess "Correspondentieschaak" 0 {Functies voor eMail en Xfcc gebaseerde correspondentieschaak}
menuText N CCConfigure "Configureer..." 0 {Configureer externe gereedschappen en algemene instellingen}
# ====== TODO To be translated ======
menuText N CCConfigRelay "Observe games..." 10 {Configure games to be observed}
menuText N CCOpenDB "Open Database..." 0 {Open de standaard correspondentieschaak database}
menuText N CCRetrieve "Haal Partijen op" 0 {Haal partijen op via externe (Xfcc-)helper}
menuText N CCInbox "Verwerk Inbox" 0 {Verwerk alle bestanden in scids Inbox}
menuText N CCSend "Stuur de Zet op" 0 {Stuur de zet op via eMail of de externe (Xfcc-)helper}
menuText N CCResign "Geef op" 0 {Geef op (niet via eMail)}
menuText N CCClaimDraw "Eis Remise" 0 {Stuur de zet op en eis remise (niet via eMail)}
menuText N CCOfferDraw "Stel Remise voor" 0 {Stuur de zet op en stel remise voor (niet via eMail)}
menuText N CCAcceptDraw "Accepteer Remise" 0 {Accepteer een remise voorstel (niet via eMail)}
menuText N CCNewMailGame "Nieuwe eMail Partij..." 0 {Start een nieuwe eMail partij}
menuText N CCMailMove "Stuur de zet op..." 0 {Stuur de zet op naar de tegenspeler via eMail}
menuText N CCGamePage "Partij Pagina..." 0 {Roep de partij op met een web browser}
menuText N CCEditCopy "Kopieer de Partijlijst naar het Clipbord" 0 {Kopieer de Partijen als CSV lijst naar het clipbord}

# Options menu:
menuText N Options "Opties" 0
menuText N OptionsBoard "Bord" 0 {Opties  Uitzicht Schaakbord} ;
menuText N OptionsBoardSize "Grootte van bord" 0 {Wijzig bord grootte}
menuText N OptionsBoardPieces "Bord Stukken Stijl" 6 \
  {Wijzig de stijl van bord en/of stukken}
menuText N OptionsBoardColors "Kleuren..." 0 {Wijzig bord kleuren}
menuText N OptionsBoardGraphics "Vakken..." 0 {Selecteer textures voor de vakken}
translate N OptionsBGW {Selecteer het texture voor de vakken}
translate N OptionsBoardGraphicsText {Selecteer graphische bestanden voor de witte en de zwarte vakken:}
menuText N OptionsBoardNames "Mijn Spelersnamen ..." 0 {Bewerk mijn spelersnamen} ;
menuText N OptionsExport "Export" 1 {Wijzig tekst export opties}
menuText N OptionsFonts "Lettertypes" 0 {Wijzig lettertype}
menuText N OptionsFontsRegular "Standaard" 0 {Wijzig het standaard lettertype}
menuText N OptionsFontsMenu "Menu" 0 {Wijzig het menu lettertype}
menuText N OptionsFontsSmall "Klein" 0 {Wijzig het kleine lettertype}
# ====== TODO To be translated ======
menuText N OptionsFontsTiny "Tiny" 0 {Change the tiny font}
menuText N OptionsFontsFixed "Vaste grootte" 0 {Wijzig dit lettertype}
menuText N OptionsGInfo "Partij Informatie" 0 {Parij-informatie opties}
menuText N OptionsLanguage "Kies taal" 5 {Kies taal}
menuText N OptionsMovesTranslatePieces "Vertaal stukken" 0 {Vertaal de eerste letters van de stukken}
menuText N OptionsMovesHighlightLastMove "Markeer de laatste zet" 0 {Markeer de laatste zet}
menuText N OptionsMovesHighlightLastMoveDisplay "Toon" 0 {Toon de laatste zet markering}
menuText N OptionsMovesHighlightLastMoveWidth "Breedte" 0 {Variantdikte}
menuText N OptionsMovesHighlightLastMoveColor "Kleur" 0 {Varinatkleur}
menuText N OptionsMoves "Zetten" 0 {Wijzig optie voor zet-invoer}
menuText N OptionsMovesAsk "Bevestiging voor overschrijven" 0 \
  {Bevestig het overschrijven van bestaande zetten}
menuText N OptionsMovesAnimate "Stuk Animatietijd " 1 \
  {Zet animatietijd van de stukkenbewegingen} ;
menuText N OptionsMovesDelay "Tijdinstelling voor auto-spelen" 10 \
  {Stel de tijd in voor het automatisch spelen van de zetten}
menuText N OptionsMovesCoord "Zet-ingave" 0 \
  {Accepteer de volgende manier van zetten invoeren ("g1f3")}
menuText N OptionsMovesSuggest "Toon hint" 0 \
  {Schakel hints aan of uit}
menuText N OptionsShowVarPopup "Toon het varianten venster" 0 {Toon al dan niet het varianten venster} 
menuText N OptionsMovesSpace "Voeg spaties in na het nummer van de zet" 0 {Voeg spaties in na het nummer van de zet}  
menuText E OptionsMovesSpace "Add spaces after move number" 0 {Add spaces after move number}   
menuText N OptionsMovesKey "Auto-aanvullen" 0 \
  {Aan/uitschakelen van toetsenbordzet auto-aanvullen}
menuText N OptionsMovesShowVarArrows "Toon Pijlen voor Varianten" 0 {Zet aan/af pijlen om variantenzetten te tonen}
menuText N OptionsNumbers "Getalformaat" 5 \
  {Kies de manier waarop getallen te zien zijn}
menuText N OptionsStartup "Opstarten" 3 {Selecteer de vensters die tijdens starten geopend worden}
menuText N OptionsTheme "Theme" 0 {Verander het uitzicht van de interface}
menuText N OptionsWindows "Vensters" 0 {Venster opties}
menuText N OptionsWindowsIconify "Auto-icoon" 5 \
  {Breng alle vensters in icoonvorm als het hoofdvenster naar icoon gaat.}
menuText N OptionsWindowsRaise "Auto-voorgrond" 0 \
  {Breng sommige vensters terug op de voorgrond (bvb. voortgangsbalken) gelijk wanneer ze verdwijnen.}
menuText N OptionsSounds "Geluiden ..." 2 {Configureer zet aankondigingsgeluiden} ;
menuText N OptionsWindowsDock "Veranker de vensters" 0 {Veranker de vensters}
menuText N OptionsWindowsSaveLayout "Opmaak opslaan" 0 {Opmaak opslaan}
menuText N OptionsWindowsRestoreLayout "Opmaak herstellen" 0 {Opmaak herstellen}
menuText N OptionsWindowsShowGameInfo "Toon de informatie over de partij" 0 {Toon de informatie over de partij}
menuText N OptionsWindowsAutoLoadLayout "Auto laad eerste layout" 0 {Auto laad eerste layout bij opstarten}
menuText N OptionsToolbar "Gereedschappenbalk" 12 \
  {Weergeven/verbergen hoofdvenster gereedschappenbalk}
menuText N OptionsECO "ECO data laden..." 0 \
  {Laad het ECO classificatie bestand}
menuText N OptionsSpell "Laad spelling (namen)..." 5 \
  {Laad het Scid spellingbestand}
menuText N OptionsTable "Eindspel database laden..." 9 \
  {Kies een eindspel database, alle in de directory aanwezige worden gebruikt}
menuText N OptionsRecent "Recente bestanden..." 0 \
  {Wijzig het aantal recent gebruikte bestanden in het Bestand menu}
menuText N OptionsBooksDir "Boeken map..." 0 {Stel de map met openingsboeken in}
menuText N OptionsTacticsBasesDir "Databases map..." 0 {Stel de map met de  taktiek (training) databases in}
menuText N OptionsSave "Opties bewaren" 0 \
  "Bewaar alle instellingen in het bestand $::optionsFile"
menuText N OptionsAutoSave "Automatisch bewaren opties tijdens afsluiten" 0 \
  {Automatisch bewaren alle gewijzigde opties bij het afsluiten van Scid}

# Help menu:
menuText N Help "Help" 0
menuText N HelpContents "Inhoud" 0 {Toon de Help Inhoudstabel} ;
menuText N HelpIndex "Index" 0 {Toon de help inhouds pagina}
menuText N HelpGuide "Snelle hulp" 0 {Laat de snelle-hulp pagina zien}
menuText N HelpHints "Hints" 0 {Laat de hints-hulp pagina zien}
menuText N HelpContact "Contact-info" 0 {Laat de contact-infopagina zien}
menuText N HelpTip "Tip van de dag" 0 {Laat een handige Scid tip zien}
menuText N HelpStartup "Startvenster" 5 {Laat het startvenster zien}
menuText N HelpAbout "Over Scid" 0 {Informatie over Scid}

# Game info box popup menu:
menuText N GInfoHideNext "Verberg volgende zet" 0
menuText N GInfoMaterial "Materiaalverhouding" 0
menuText N GInfoFEN "FEN" 0
menuText N GInfoMarks "Toon gekleurde velden en pijlen. " 5
menuText N GInfoWrap "Lange regels op schermbreedte splitsen." 0
menuText N GInfoFullComment "Volledig commentaar weergeven" 10
menuText N GInfoPhotos "Toon Fotos" 5 ;
menuText N GInfoTBNothing "Eindspel Tablebases: niets" 12
menuText N GInfoTBResult  "Eindspel Tablebases: alleen resultaat" 12
menuText N GInfoTBAll "Eindspel Tablebases: resultaat en beste zetten" 19
menuText N GInfoDelete "Partij wissen/terughalen" 9
menuText N GInfoMark "Partij markeren/niet markeren" 7
menuText N GInfoInformant "Configureer informant waarden" 0

# Main windows buttons:
helpMsg N .main.fbutton.button.start {Naar begin van partij  (toets: home)}
helpMsg N .main.fbutton.button.end {Naar eind van partij  (toets: end)}
helpMsg N .main.fbutton.button.back {Een zet terug   (toets: pijl links)}
helpMsg N .main.fbutton.button.forward {Een zet vooruit  (toets: pijl rechts)}
helpMsg N .main.fbutton.button.intoVar {Naar variant  (toets: v)}
helpMsg N .main.fbutton.button.exitVar {Verlaat variant  (toets: z)}
helpMsg N .main.fbutton.button.flip {Draai bord  (toets: .)}
helpMsg N .main.fbutton.button.coords {Coordinaten aan/uit  (toets: 0)}
helpMsg N .main.fbutton.button.stm {Zet zijde-aan-zet ikoon aan ofaf} ;
helpMsg N .main.fbutton.button.autoplay {Speel zetten automatisch  (toets: Ctrl+Z)}

# General buttons:
translate N Back {Terug}
translate N Browse {Bladeren} ;
translate N Cancel {Annuleren}
translate N Continue {Verder gaane}
translate N Clear {Leegmaken}
translate N Close {Sluiten}
translate N Contents {Inhoud} ;
translate N Defaults {Standaard}
translate N Delete {Wis}
translate N Graph {Grafiek}
translate N Help {Help}
translate N Import {Importeren}
translate N Index {Index}
translate N LoadGame {Partij laden}
translate N BrowseGame {Door de partij bladeren}
translate N MergeGame {Partij Samenvoegen}
translate N MergeGames {Voeg Partijen Samen}
translate N Preview {Proefbeeld}
translate N Revert {Terugkeren}
translate N Save {Bewaren}
translate N Search {Zoeken}
translate N Stop {Stop}
translate N Store {Opbergen}
translate N Update {Bijwerken}
translate N ChangeOrient {Wijzigen venster orientatie}
translate N ShowIcons {Toon Ikonen} ;
translate N None {Geen}
translate N First {Eerste}
translate N Current {Huidige}
translate N Last {Laatste}

# General messages:
translate N game {Partij}
translate N games {Partijen}
translate N move {Zet}
translate N moves {Zetten}
translate N all {Alle}
translate N Yes {Ja}
translate N No {Nee}
translate N Both {Beide}
translate N King {Koning}
translate N Queen {Dame}
translate N Rook {Toren}
translate N Bishop {Loper}
translate N Knight {Paard}
translate N Pawn {Pion}
translate N White {Wit}
translate N Black {Zwart}
translate N Player {Speler}
translate N Rating {Eloklassering}
translate N RatingDiff {EloklasseringsVerschil (Wit - Zwart)}
translate N AverageRating {Gemiddelde elo rangschikking} ;
translate N Event {Evenement}
translate N Site {Plaats}
translate N Country {Land}
translate N IgnoreColors {Kleuren negeren}
translate N Date {Datum}
translate N EventDate {Datum evenement}
translate N Decade {Decennium}
translate N Year {Jaar}
translate N Month {Maand}
translate N Months {Januari Februari Maart April Mei Juni Juli Augustus September October November December}
translate N Days {Zon Maa Din Woe Don Vri Zat}
translate N YearToToday {Een jaar geleden}
translate N Result {Uitslag}
translate N Round {Ronde}
translate N Length {Lengte}
translate N ECOCode {ECO Code}
translate N ECO {ECO}
translate N Deleted {Verwijderd}
translate N SearchResults {Zoekresultaten}
translate N OpeningTheDatabase {Database aan het Openen}
translate N Database {Database}
translate N Filter {Filter}
translate N noGames {Geen partijen}
translate N allGames {Alle partijen}
translate N empty {leeg}
translate N clipbase {Klembord}
translate N score {Score}
translate N StartPos {Begin stelling}
translate N Total {Totaal}
translate N readonly {alleen-lezen}

# Standard error messages:
translate N ErrNotOpen {Deze database is niet geopend.} ;
translate N ErrReadOnly {Deze database is alleen lezen; kan niet veranderd worded.} ;
translate N ErrSearchInterrupted {Zoeken werd onderbroken; de resultaten zijn onvolledig.} ;

# Game information:
translate N twin {Dubbele partijen}
translate N deleted {Gewist}
translate N comment {Commentaar}
translate N hidden {Verborgen}
translate N LastMove {Laatste zet}
translate N NextMove {Volgende zet}
translate N GameStart {Start partij}
translate N LineStart {Start variant}
translate N GameEnd {Einde partij}
translate N LineEnd {Einde variant}

# Player information:
translate N PInfoAll {Resultaten voor <b>alle</b> partijen}
translate N PInfoFilter {Resultaten voor <b>filter</b> partijen}
translate N PInfoAgainst {Resultaten tegen}
translate N PInfoMostWhite {Meest gespeelde opening als Wit}
translate N PInfoMostBlack {Meest gespeelde opening als Zwart}
translate N PInfoRating {Geschiedenis Elo Klassering}
translate N PInfoBio {Biografie}
translate N PInfoEditRatings {Bewerk elo rangschikking} ;

# Tablebase information:
translate N Draw {Remise}
translate N stalemate {Pat}
translate N withAllMoves {met alle zetten}
translate N withAllButOneMove {alle zetten behalve n}
translate N with {met}
translate N only {alleen}
translate N lose {verliezen}
translate N loses {verliest}
translate N allOthersLose {alle overigen verliezen}
translate N matesIn {Mat in}
translate N hasCheckmated {geeft mat}
translate N longest {langste}
translate N WinningMoves {Winnende zetten} ;
translate N DrawingMoves {Remise zetten} ;
translate N LosingMoves {Verliezende zetten} ;
translate N UnknownMoves {Onbekend resultaat zetten} ;

# Tip of the day:
translate N Tip {Tip}
translate N TipAtStartup {Tip bij opstarten}

# Tree window menus:
menuText N TreeFile "BoomDataBestand" 0
menuText N TreeFileFillWithBase "Vul de Cache met DataBestand" 0 {Vul het cache bestand met alle partijen in het huidige databestand}
menuText N TreeFileFillWithGame "Vul de cache met de partij" 0 {Vul het cache bestand met het huidige speel in het huidige databestand}
menuText N TreeFileSetCacheSize "Cache grootte" 0 {Stel de grootte van het cache bestand in}
menuText N TreeFileCacheInfo "Cache info" 0 {Vraag informatie over het gebruik van de cache}
menuText N TreeFileSave " BoomData Bewaren" 0 {Bewaar de boomdata in een boomcache (.stc) bestand}
menuText N TreeFileFill "Vullen boomcache bestand" 0 \
  {Vul het boomcache bestand met algemene opening stellingen}
menuText N TreeFileBest "Lijst beste partijen" 0 {Weergeven van de lijst met beste partijen}
menuText N TreeFileGraph "Grafiek-venster" 0 \
  {Weergeven van de grafiek voor deze tak}
menuText N TreeFileCopy "Kopieer boom tekst naar klembord" 0 \
  {Kopieren van de boomstatistieken naar het klembord}
menuText N TreeFileClose "Zoekboom venster sluiten" 0 {Sluiten van het zoekboom venster}
menuText N TreeMask "Masker" 0
menuText N TreeMaskNew "Nieuw" 0 {Nieuw masker}
menuText N TreeMaskOpen "Open" 0 {Open mask}
menuText N TreeMaskOpenRecent "Open recent" 0 {Open recent masker}
menuText N TreeMaskSave "Bewaar" 0 {Bewaar het masker}
menuText N TreeMaskClose "Sluiten" 0 {Sluit het masker}
menuText N TreeMaskFillWithGame "Vullen met partij" 0 {Vul het masker met de partij}
menuText N TreeMaskFillWithBase "Vullen met databestand" 0 {Vul het masker met alle partijen in het databestand}
menuText N TreeMaskInfo "Info" 0 {Toon de statistieken voor het huidige masker}
menuText N TreeMaskDisplay "Toon masker overzicht" 0 {Toon maskerdata in boomvorm}
menuText N TreeMaskSearch "Zoek" 0 {Zoek in huidig masker}
menuText N TreeSort "Sorteren" 0
menuText N TreeSortAlpha "Alfabetisch" 0
menuText N TreeSortECO "ECO code" 0
menuText N TreeSortFreq "Frequentie" 0
menuText N TreeSortScore "Punten" 0
menuText N TreeOpt "Opties" 0
menuText N TreeOptSlowmode "Trage modus" 0 {Trage modus voor updates (hoge nauwkeurigheid)}
menuText N TreeOptFastmode "Snelle modus" 0 {Snelle modus voor updates (geen omwisselingen van zetten)}
menuText N TreeOptFastAndSlowmode "Snelle en trage modus" 0 {Eerst snelle modus en daarna trage modus voor updates}
menuText N TreeOptStartStop "Auto verversing" 0 {Zet automatische verversing van het boomvenster op/af}
menuText N TreeOptLock "Vergrendelen" 0 {Vergrendelen/Ontgrendelen van de boom bij de huidige database}
menuText N TreeOptTraining "Training" 0 {Aan/Uit zetten training modus}
menuText N TreeOptAutosave "Autom.cache-data Bewaren" 4 \
  {Automatisch bewaren van het cache bestand bij sluiten boomvenster}
menuText N TreeHelp "Help" 0
menuText N TreeHelpTree "Hulp bij zoekboom" 0
menuText N TreeHelpIndex "Index" 0
translate N SaveCache {Cache Bewaren}
translate N Training {Training}
translate N LockTree {Boom Vergrendelen}
translate N TreeLocked {Vergrendeld}
translate N TreeBest {Beste}
translate N TreeBestGames {Boom Beste partijen}
# Note: the next message is the tree window title row. After editing it,
# check the tree window to make sure it lines up with the actual columns.
translate N TreeTitleRow \
  {    Zet   ECO       Frekwentie    Score  GemElo Prest GemJaar %Remises} ;
translate N TreeTotal {TOTAAL}
translate N DoYouWantToSaveFirst {Wil u eerst de verandering bewaren?}
translate N AddToMask {Toevoegen aan het Masker}
translate N RemoveFromMask {Verwijderen uit het Masker}
translate N AddThisMoveToMask {Voeg deze zet toe aan het Masker}
translate N SearchMask {Zoek in Masker}
translate N DisplayMask {Toon Masker}
translate N Nag {Nag code}
translate N Marker {Aanwijzer}
translate N Include {Invoegen}
translate N Exclude {Weglaten}
translate N MainLine {Hoofdvariant}
translate N Bookmark {Bladwijzer}
translate N NewLine {Nieuwe variant}
translate N ToBeVerified {Na te kijken}
translate N ToTrain {Trainen}
translate N Dubious {Twijfelachtig}
translate N ToRemove {Verwijderen}
translate N NoMarker {Geen aanwijzer}
translate N ColorMarker {Kleur}
translate N WhiteMark {Wit}
translate N GreenMark {Groen}
translate N YellowMark {Geel}
translate N BlueMark {Blauw}
translate N RedMark {Rood}
translate N CommentMove {Commentaar op zet}
translate N CommentPosition {Commentaar op stelling}
translate N AddMoveToMaskFirst {Voeg de zet eerst toe aan het masker}
translate N OpenAMaskFileFirst {Open eerst een maskerbestand}
translate N Positions {Stellingen}
translate N Moves {Zetten}

# Finder window:
menuText N FinderFile "Bestand" 0
menuText N FinderFileSubdirs "Kijken in subdirectories" 0
menuText N FinderFileClose "Sluiten bestandszoeker" 0
menuText N FinderSort "Sorteren" 0
menuText N FinderSortType "Type" 0
menuText N FinderSortSize "Grootte" 0
menuText N FinderSortMod "Gewijzigd" 0
menuText N FinderSortName "Naam" 0
menuText N FinderSortPath "Pad" 0
menuText N FinderTypes "Types" 0
menuText N FinderTypesScid "Scid databases" 0
menuText N FinderTypesOld "Oud formaat Scid databases" 0
menuText N FinderTypesPGN "PGN bestanden" 0
menuText N FinderTypesEPD "EPD (boek) bestanden" 0
menuText N FinderTypesRep "Repertorium bestanden" 0
menuText N FinderHelp "Help" 0
menuText N FinderHelpFinder "Bestandszoeker Help" 0
menuText N FinderHelpIndex " Bestandszoeker Help Inhoud" 0
translate N FileFinder {Bestandszoeker}
translate N FinderDir {Folder}
translate N FinderDirs {Folders}
translate N FinderFiles {Bestanden}
translate N FinderUpDir {Hogere Folder}
translate N FinderCtxOpen {Open}
translate N FinderCtxBackup {Reservecopie}
translate N FinderCtxCopy {Copieren}
translate N FinderCtxMove {Verplaatsen}
translate N FinderCtxDelete {Verwijderen}

# Player finder:
menuText N PListFile "Bestand" 0
menuText N PListFileUpdate "Bijwerken" 0
menuText N PListFileClose "Dichtbij Speler Vinder" 0 ;
menuText N PListSort "Sorteren" 0
menuText N PListSortName "Naam" 0 ;
menuText N PListSortElo "Elo" 0
menuText N PListSortGames "Partijen" 0 ;
menuText N PListSortOldest "Oudste" 0 ;
menuText N PListSortNewest "Niewste" 0 ;

# Tournament finder:
menuText N TmtFile "Bestand" 0
menuText N TmtFileUpdate "Bijwerken" 0
menuText N TmtFileClose "Sluiten Toernooi zoeker" 0
menuText N TmtSort "Sorteren" 0
menuText N TmtSortDate "Datum" 0
menuText N TmtSortPlayers "Spelers" 0
menuText N TmtSortGames "Partijen" 0
menuText N TmtSortElo "Elo" 0
menuText N TmtSortSite "Plaats" 0
menuText N TmtSortEvent "Evenement" 1
menuText N TmtSortWinner "Winnaar" 0
translate N TmtLimit "Limiet Lijst"
translate N TmtMeanElo "Laagste gem. Elo" 
translate N TmtNone "Geen toernooien gevonden."

# Graph windows:
menuText N GraphFile "Bestand" 0
menuText N GraphFileColor "Bewaren als kleuren Postscript..." 8
menuText N GraphFileGrey "Bewaren als grijze Postscript..." 8
menuText N GraphFileClose "Venster sluiten" 0
menuText N GraphOptions "Opties" 0
menuText N GraphOptionsWhite "Wit" 0
menuText N GraphOptionsBlack "Zwart" 0
menuText N GraphOptionsBoth "Beide" 1
menuText N GraphOptionsPInfo "Speler informatie" 0
translate N GraphFilterTitle "Filtergrafiek: frequentie per 1000 partijen"
translate N GraphAbsFilterTitle "Filtergrafiek: frequentie van de partijen"
translate N ConfigureFilter {Configureer de X-as voor Jaar, Elo en Zetten}
translate N FilterEstimate "Schat"
translate N TitleFilterGraph "Scid: Filtergrafiek"

# Analysis window:
translate N AddVariation {Toevoegen variant}
translate N AddAllVariations {Voeg alle varianten toe}
translate N AddMove {Toevoegen zet}
translate N Annotate {Annotatie}
translate N ShowAnalysisBoard {Toon het analysebord}
translate N ShowInfo {Toon engine informatie}
translate N FinishGame {Beeindig de partij}
translate N StopEngine {Stop de engine}
translate N StartEngine {Start de engine}
translate N LockEngine {Fixeer de engine op de huidige stelling}
translate N AnalysisCommand {Analyse commando}
translate N PreviousChoices {Voorgaande keuzes}
translate N AnnotateTime {Geef de analysetijd in seconden per zet}
translate N AnnotateWhich {Voeg varianten toe}
translate N AnnotateAll {Voor zetten van beide zijden}
translate N AnnotateAllMoves {Annotateer alle zetten}
translate N AnnotateWhite {Alleen voor zetten door Wit}
translate N AnnotateBlack { Alleen voor zetten door Zwart}
translate N AnnotateBlundersOnly {Als de partijzet een klaarblijkelijke blunder is}
translate N AnnotateBlundersOnlyScoreChange {Blunder Analyse rapport, met scorewijziging van/naar: }
translate N BlundersThreshold {Ondergrens}
# TODO: Translate
translate N ScoreAllMoves {Waardeer alle zetten}
translate N LowPriority {Lage CPU prioriteit} ;
translate N ClickHereToSeeMoves {Klik hier om de zetten te zien}
translate N ConfigureInformant {Configureer de Informant}
translate N Informant!? {Interessante zet}
translate N Informant? {Slechte zet}
translate N Informant?? {Blunder}
translate N Informant?! {Twijfelachtige zet}
translate N Informant+= {Wit heeft een klein voordeel}
translate N Informant+/- {Wit heeft een gematigd voordeel}
translate N Informant+- {Wit heeft een beslissend voordeel}
translate N Informant++- {Deze partij kan als gewonnen beschouwd worden}
translate N Book {Openingenboek}
translate N OtherBookMoves {Boek van de tegenspeler}
translate N OtherBookMovesTooltip {Zetten waarvoor de tegenspeler een antwoord heeft}

# Analysis Engine open dialog:
translate N EngineList {Analyse Engine Lijst}
translate N EngineName {Naam}
translate N EngineCmd {Commando}
translate N EngineArgs {Parameters}
translate N EngineDir {Folder}
translate N EngineElo {Elo}
translate N EngineTime {Datum}
translate N EngineNew {Nieuw}
translate N EngineEdit {Bewerk}
translate N EngineRequired {Velden in <b>vet</b> zijn vereist; de andere facultatief}

# Stats window menus:
menuText N StatsFile "Bestand" 0
menuText N StatsFilePrint "Data als tekstbestand Bewaren..." 0
menuText N StatsFileClose "Venster sluiten" 0
menuText N StatsOpt "Opties" 0

# PGN window menus:
menuText N PgnFile "Bestand" 0
menuText N PgnFileCopy "Copieer Partij naar Klipbord" 0 ;#
menuText N PgnFilePrint "Als pgn bestand Bewaren..." 0
menuText N PgnFileClose "PGN-venster sluiten" 0
menuText N PgnOpt "Opties" 0
menuText N PgnOptColor "Instellen kleuren" 10
menuText N PgnOptShort "Korte (3 regelige) kop" 0
menuText N PgnOptSymbols "Symbolen annotaties" 10
menuText N PgnOptIndentC "Inspringen (commentaar)" 12
menuText N PgnOptIndentV "Inspringen (variant)" 12
menuText N PgnOptColumn "Kolom stijl (een zet per regel)" 0
menuText N PgnOptSpace "Spatie na zetnummer" 0
menuText N PgnOptStripMarks "Verwijder gekleurde vierkante haken codes" 1
menuText N PgnOptBoldMainLine "Gebrui Dikke Tekst voo Hoofdvariant Zetten" 4 ;
menuText N PgnColor "Kleuren" 0
menuText N PgnColorHeader "Kop..." 0
menuText N PgnColorAnno "Annotaties..." 0
menuText N PgnColorComments "Commentaar..." 0
menuText N PgnColorVars "Varianten..." 0
menuText N PgnColorBackground "Achtergrond kleur..." 0
 
menuText N PgnColorMain "Main line..." 0
 
menuText N PgnColorCurrent "Current move background..." 1
 
menuText N PgnColorNextMove "Next move background..." 0
menuText N PgnHelp "Help" 0
menuText N PgnHelpPgn "PGN help" 0
menuText N PgnHelpIndex "Inhoud" 0
translate N PgnWindowTitle {Partij Notatie - partij %u} ;

# Crosstable window menus:
menuText N CrosstabFile "Bestand" 0
menuText N CrosstabFileText "Bewaren in tekstformaat..." 13
menuText N CrosstabFileHtml " Bewaren in HTML-formaat..." 13
menuText N CrosstabFileLaTeX " Bewaren in LaTeX-formaat..." 13
menuText N CrosstabFileClose "Kruistabel sluiten" 0
menuText N CrosstabEdit "Bewerken" 0
menuText N CrosstabEditEvent "Evenement" 0
menuText N CrosstabEditSite "Plaats" 0
menuText N CrosstabEditDate "Datum" 0
menuText N CrosstabOpt "Opties" 0
menuText N CrosstabOptAll "Gesloten" 0
menuText N CrosstabOptSwiss "Zwitsers" 0
menuText N CrosstabOptKnockout "Knockout" 0
menuText N CrosstabOptAuto "Auto" 0
menuText N CrosstabOptAges "Leeftijd in jaren" 8
menuText N CrosstabOptNats "Nationaliteiten" 1
menuText N CrosstabOptRatings "Elo" 0
menuText N CrosstabOptTitles "Titels" 0
menuText N CrosstabOptBreaks "Tie-break scores" 4
menuText N CrosstabOptDeleted "Inclusief gewiste partijen" 8
menuText N CrosstabOptColors "Kleuren (alleen bij Zwitsers)" 0
menuText N CrosstabOptColumnNumbers "Genummerde kolommen (Alleen bij gesloten tabel)" 2
menuText N CrosstabOptGroup "Punten (groep)" 0
menuText N CrosstabSort "Sorteren" 0
menuText N CrosstabSortName "Naam" 0
menuText N CrosstabSortRating "Elo" 0
menuText N CrosstabSortScore "Score" 0
menuText N CrosstabColor "Kleuren" 0
menuText N CrosstabColorPlain "Tekst" 0
menuText N CrosstabColorHyper "Hypertekst" 1
menuText N CrosstabHelp "Help" 0
menuText N CrosstabHelpCross "Help (kruistabel)" 0
menuText N CrosstabHelpIndex "Inhoud" 0
translate N SetFilter {Zet Filter}
translate N AddToFilter {Toevoegen aan selectie}
translate N Swiss {Zwitsers}
translate N Category {Categorie} ;

# Opening report window menus:
menuText N OprepFile "Bestand" 0
menuText N OprepFileText "Bewaren in tekstformaat..." 13
menuText N OprepFileHtml " Bewaren in HTML-formaat..." 13
menuText N OprepFileLaTeX " Bewaren in LaTeX-formaat..." 13
menuText N OprepFileOptions "Opties..." 0
menuText N OprepFileClose "Sluit rapportvenster" 0
menuText N OprepFavorites "Favorieten" 1 ;
menuText N OprepFavoritesAdd "Voeg Rapport toe..." 0 ;
menuText N OprepFavoritesEdit "Bewerk Favoriete Rapport..." 0 ;
menuText N OprepFavoritesGenerate "Genereer Rapporten..." 0 ;
menuText N OprepHelp "Help" 0
menuText N OprepHelpReport "Help (openingsrapport)" 0
menuText N OprepHelpIndex "Inhoud" 0

# Repertoire editor:
menuText N RepFile "Bestand" 0
menuText N RepFileNew "Nieuw" 0
menuText N RepFileOpen "Openen..." 0
menuText N RepFileSave "Bewaren..." 0
menuText N RepFileSaveAs "Bewaren als..." 5
menuText N RepFileClose "Sluit venster" 2
menuText N RepEdit "Bewerken" 0
menuText N RepEditGroup "Toevoegen Groep" 4
menuText N RepEditInclude "Toevoegen inclusief variant" 4
menuText N RepEditExclude "Toevoegen exclusief variant" 4
menuText N RepView "Bekijken" 0
menuText N RepViewExpand "Uitklappen alle groepen" 0
menuText N RepViewCollapse "Inklappen alle groepen" 0
menuText N RepSearch "Selecteren" 0
menuText N RepSearchAll "Alles van repertorium..." 0
menuText N RepSearchDisplayed "Alleen weergegeven varianten..." 0
menuText N RepHelp "Help" 0
menuText N RepHelpRep "Repertorium help" 0
menuText N RepHelpIndex "Inhoud" 0
translate N RepSearch "Zoeken repertorium"
translate N RepIncludedLines "inclusief varianten"
translate N RepExcludedLines "exclusief varianten"
translate N RepCloseDialog {Dit repetorium heeft onopgeslagen wijzigingen.

Wilt u echt doorgaan en de wijzigingen niet Bewaren?
}

# Header search:
translate N HeaderSearch {Zoek naar kop}
translate N EndSideToMove {Zijde aan zet bij partijeinde} ;
translate N GamesWithNoECO {Partijen zonder ECO?}
translate N GameLength {Lengte partij}
translate N FindGamesWith {Vind partijen met vlag}
translate N StdStart {Ab-normaal begin}
translate N Promotions {Promoties}
translate N Comments {Commentaar}
translate N Variations {Varianten}
translate N Annotations {Annotaties}
translate N DeleteFlag {Gewist-markeringen}
translate N WhiteOpFlag {Wit opening}
translate N BlackOpFlag {Zwart opening}
translate N MiddlegameFlag {Middenspel}
translate N EndgameFlag {Eindspel}
translate N NoveltyFlag {Nieuwtje}
translate N PawnFlag {Pionnenstructur}
translate N TacticsFlag {Tactiek}
translate N QsideFlag {Damevleugel}
translate N KsideFlag {Koningsvleugel}
translate N BrilliancyFlag {Briljant}
translate N BlunderFlag {Blunder}
translate N UserFlag {Gebruiker}
translate N PgnContains {PGN bevat tekst}
# ====== TODO To be translated ======
translate N Annotator {Annotator}
# ====== TODO To be translated ======
translate N Cmnts {Annotated games only}

# Game list window:
translate N GlistNumber {Nummer}
translate N GlistWhite {Wit}
translate N GlistBlack {Zwart}
translate N GlistWElo {W-Elo}
translate N GlistBElo {Z-Elo}
translate N GlistEvent {Evenement}
translate N GlistSite {Plaats}
translate N GlistRound {Ronde}
translate N GlistDate {Datum}
translate N GlistYear {Jaar}
translate N GlistEDate {Datum evenement}
translate N GlistResult {Uitslag}
translate N GlistLength {Lengte}
translate N GlistCountry {Country}
translate N GlistECO {ECO}
translate N GlistOpening {Opening}
translate N GlistEndMaterial {Eind-Material}
translate N GlistDeleted {Verwijderd}
translate N GlistFlags {Markeringen}
translate N GlistVars {Varianten}
translate N GlistComments {Commentaar}
translate N GlistAnnos {Annotaties}
translate N GlistStart {Start}
translate N GlistGameNumber {Partij nummer}
# ====== TODO To be translated ======
translate N GlistAverageElo {Average Elo}
# ====== TODO To be translated ======
translate N GlistRating {Rating}
translate N GlistFindText {Tekst vinden}
translate N GlistMoveField {Zet}
translate N GlistEditField {Configuratie}
translate N GlistAddField {Voeg toe}
translate N GlistDeleteField {Verwijder}
translate N GlistWidth {Breedte}
translate N GlistAlign {Uitlijnen}
# ====== TODO To be translated ======
translate N GlistAlignL {Align: left}
# ====== TODO To be translated ======
translate N GlistAlignR {Align: right}
# ====== TODO To be translated ======
translate N GlistAlignC {Align: center}
translate N GlistColor {Kleuren}
translate N GlistSep {Separator}
# ====== TODO To be translated ======
translate N GlistCurrentSep {-- Current --}
# ====== TODO To be translated ======
translate N GlistNewSort {New}
# ====== TODO To be translated ======
translate N GlistAddToSort {Add}
# ====== TODO To be translated ======
translate N GsortSort {Sort...}
# ====== TODO To be translated ======
translate N GsortDate {Date}
# ====== TODO To be translated ======
translate N GsortYear {Year}
# ====== TODO To be translated ======
translate N GsortEvent {Event}
# ====== TODO To be translated ======
translate N GsortSite {Site}
# ====== TODO To be translated ======
translate N GsortRound {Round}
# ====== TODO To be translated ======
translate N GsortWhiteName {White Name}
# ====== TODO To be translated ======
translate N GsortBlackName {Black Name}
# ====== TODO To be translated ======
translate N GsortECO {ECO}
# ====== TODO To be translated ======
translate N GsortResult {Result}
# ====== TODO To be translated ======
translate N GsortMoveCount {Move Count}
# ====== TODO To be translated ======
translate N GsortAverageElo {Average Elo}
# ====== TODO To be translated ======
translate N GsortCountry {Country}
# ====== TODO To be translated ======
translate N GsortDeleted {Deleted}
# ====== TODO To be translated ======
translate N GsortEventDate {Event Date}
# ====== TODO To be translated ======
translate N GsortWhiteElo {White Elo}
# ====== TODO To be translated ======
translate N GsortBlackElo {Black Elo}
# ====== TODO To be translated ======
translate N GsortComments {Comments}
# ====== TODO To be translated ======
translate N GsortVariations {Variations}
# ====== TODO To be translated ======
translate N GsortNAGs {NAGs}
# ====== TODO To be translated ======
translate N GsortAscending {Ascending}
# ====== TODO To be translated ======
translate N GsortDescending {Descending}
# ====== TODO To be translated ======
translate N GsortAdd {Add}
# ====== TODO To be translated ======
translate N GsortStore {Store}
# ====== TODO To be translated ======
translate N GsortLoad {Load}
 
translate N GlistRemoveThisGameFromFilter  {Remove this game from Filter}
 
translate N GlistRemoveGameAndAboveFromFilter  {Remove game (and all above it) from Filter}
 
translate N GlistRemoveGameAndBelowFromFilter  {Remove game (and all below it) from Filter}
translate N GlistDeleteGame {Maak de verwijdering van deze partij ongedaan} 
translate N GlistDeleteAllGames {Verwijder alle partijen in de filter} 
translate N GlistUndeleteAllGames {Maak de verwijdering van alle partijen in de filter ongedaan} 
translate N GlistMergeGameInBase {Voeg Partij toe aan een andere database} 

# Maintenance windows
translate N DatabaseName {Naam database:}
translate N TypeIcon {Type icoon:}
translate N NumOfGames {Partijen:}
translate N NumDeletedGames {Gewiste partijen:}
translate N NumFilterGames {Partijen in selectie:}
translate N YearRange {JaarBereik:}
translate N RatingRange {EloBereik (laag/hoog):}
translate N Description {Beschrijving} ;
translate N Flag {Markering}
translate N CustomFlags {Markering volgens keus}
translate N DeleteCurrent {Wis huidige partij}
translate N DeleteFilter {Wis geselecteerde partijen}
translate N DeleteAll {Wis alle partijen}
translate N UndeleteCurrent {Haal huidige partij terug}
translate N UndeleteFilter {Haal geselecteerde partijen terug}
translate N UndeleteAll {Haal alle partijen terug}
translate N DeleteTwins {Wis doublures}
translate N MarkCurrent {Markeer huidige partij}
translate N MarkFilter {Markeer geselecteerde partijen}
translate N MarkAll {Markeer alle partijen}
translate N UnmarkCurrent {Verwijder Markering huidige partij)}
translate N UnmarkFilter {Verwijder Markering geselecteerde partijen)}
translate N UnmarkAll {Verwijder Markering alle partijen)}
translate N Spellchecking {Spellingscontrole}
translate N Players {Spelers}
translate N Events {Evenementen}
translate N Sites {Plaatsen}
translate N Rounds {Rondes}
translate N DatabaseOps {Database bewerkingen}
translate N ReclassifyGames {Partijen ECO-classificeren...}
translate N CompactDatabase {Database compact maken = optimaliseren}
translate N SortDatabase {Database sorteren}
translate N AddEloRatings {Toevoegen Elo classificatie}
translate N AutoloadGame {Auto-laden partij nummer}
translate N StripTags {Verwijder PGN labels}
translate N StripTag {Verwijder label}
translate N Cleaner {Reiniger}
translate N CleanerHelp {
De Scid Reiniger zal alle onderhoudsactiviteiten die u selecteert uit onderstaande lijst, uitvoeren op de huidige database. 
De dialogen van de huidige instellingen in de ECO classificatie en verwijderen van doublures zullen worden toegepast indien u deze functies selecteert.
}
translate N CleanerConfirm {
Eens het Reiniger onderhoud is gestart, kan dit niet worden onderbroken!

Dit kan lang duren op een grote database, afhankelijk van de geselecteerde functies en de huidige instellingen.

Weet u zeker dat u de geselecteerde onderhoudsfuncties wilt uitvoeren?
}
translate N TwinCheckUndelete {omwisselen; "u" maakt de verwijdering van beide ongedaan)}
translate N TwinCheckprevPair {Vorige paar}
translate N TwinChecknextPair {Volgende paar}
translate N TwinChecker {Scid: Tweeling partij verifieerder}
translate N TwinCheckTournament {Partijen in het toernooi:}
translate N TwinCheckNoTwin {Geen tweeling  }
translate N TwinCheckNoTwinfound {Er werd geen tweeling gedetecteerd voor deze partij.\n
Om tweelingen te laten zien met dit venster moet U eerst de "Verwijder tweeling partijen..." functie gebruiken. }
translate N TwinCheckTag {Deel etiket...}
translate N TwinCheckFound1 {Scid vond $result tweeling partijen}
translate N TwinCheckFound2 { en zet hun verwijder vlaggen}
translate N TwinCheckNoDelete {Er zijn geen partijen in deze databank om te verwijderen.}
translate N TwinCriteria1 { Uw instellingen voor het vinden van tweeling partijen kunnen mogelijkerwijs \n tot gevolg hebben dat partijen met gelijkaardige zetten ten onrechte als tweelingen worden aangegeven.}
translate N TwinCriteria2 {Het wordt aangeraden dat indien U "Nee" selecteert voor "dezelfde zetten" dat U dan "Ja" selecteert voor de kleuren, event, plaats, ronde, jaar en maand instellingen.\n Wil U doorgaan en de tweelingen toch verwijderen?}
translate N TwinCriteria3 {Het wordt aangeraden dat U "Ja" selecteert voor tenminste twee instellingen uit "zelfde plaats", "zelfde ronde" en "zelfde jaar".\n Wil U doorgaan en de tweelingen toch verwijderen?}
translate N TwinCriteriaConfirm {Scid: Bevestig tweeling instellingen}
translate N TwinChangeTag "Veranderder de volgende partij labels:\n\n"
translate N AllocRatingDescription "Dit commando zal het huidige spellingscontrole bestand gebruiken om Elo punten toe te voegen aan partijen in deze databank. Indien een speler geen huidige Elo punten heeft maar zijn/haar punten op het moment van het spel zijn aanwezig in het spellingscontrole bestand dan zullen deze punten toegevoegd worden."
translate N RatingOverride "Overschrijf bestaande, van nul verschillende, punten?"
translate N AddRatings "Voeg Elo punten to aan:"
translate N AddedRatings {Scid voegde $r Elo punten toe aan $g partijen.}
translate N NewSubmenu "Nieuw submenu"

# Comment editor:
translate N AnnotationSymbols  {Symbolen voor annotatie:}
translate N Comment {Commentaar:}
translate N InsertMark {Voeg markering toe} ;
translate N InsertMarkHelp {
Voeg toe/verwijder markering: Selecteer  kleur, type, veld.
Voeg toe/verwijder pijl: Rechtsklik twee velden.
} ;

# Nag buttons in comment editor:
translate N GoodMove {Goede zet} ;
translate N PoorMove {Slechte zet} ;
translate N ExcellentMove {Excellente zet} ;
translate N Blunder {Blunder}
translate N InterestingMove {Interessante zet} ;
translate N DubiousMove {Twijfelachtige zet} ;
translate N WhiteDecisiveAdvantage {Wit heeft beslissend voordeel} ;
translate N BlackDecisiveAdvantage {Zwart heeft beslissend voordee} ;
translate N WhiteClearAdvantage {Wit heeft duidelijk voordeel} ;
translate N BlackClearAdvantage {Zwart heeft beslissend voordeel} ;
translate N WhiteSlightAdvantage {Wit heeft licht voordeel} ;
translate N BlackSlightAdvantage {Zwart heeft licht voordee} ;
translate N Equality {Gelijk} ;
translate N Unclear {Onduidelijk} ;
translate N Diagram {Diagram} ;

# Board search:
translate N BoardSearch {Zoeken Bord}
translate N FilterOperation {Toepassen op huidige selectie:}
translate N FilterAnd {AND (Selectie beperken)}
translate N FilterOr {OR (Selectie uitbreiden)}
translate N FilterIgnore {Selectie Ongedaan maken}
translate N SearchType {Zoek type stelling:}
translate N SearchBoardExact {Exacte stelling (stukken op dezelfde velden)}
translate N SearchBoardPawns {Pionnen (hetzelfde materiaal, alle pionnen op dezelfde velden)}
translate N SearchBoardFiles {Lijnen (hetzelfde materiaal, alle pionnen op dezelfde lijnen)}
translate N SearchBoardAny {Willekeurig (hetzelfde materiaal, pionnen en stukken willekeurig)}
translate N SearchInRefDatabase { Zoek in database }
translate N LookInVars {Zoek in varianten}

# Material search:
translate N MaterialSearch {Zoeken Materiaal}
translate N Material {Materiaal}
translate N Patterns {Patroon}
translate N Zero {Niets}
translate N Any {Willekeurig}
translate N CurrentBoard {Huidige stelling}
translate N CommonEndings {Veel Voorkomende Eindspelen}
translate N CommonPatterns { Veel Voorkomende patronen}
translate N MaterialDiff {Material onevenwicht}
translate N squares {Velden}
translate N SameColor {Gelijke kleur}
translate N OppColor {Ongelijke kleur}
translate N Either {Beide}
translate N MoveNumberRange {Zet bereik }
translate N MatchForAtLeast {Op z'n minst gelijk}
translate N HalfMoves {halve zetten}

# Common endings in material search:
translate N EndingPawns {Pionnen eindspel} ;
translate N EndingRookVsPawns {Toren tegen Pion(nen)} ;
translate N EndingRookPawnVsRook {Toren en 1 Pion tegen Toren} ;
translate N EndingRookPawnsVsRook {Toren en Pionnen tegen Toren} ;
translate N EndingRooks {Toren tegen Toren Eindspel} ;
translate N EndingRooksPassedA {Toren tegen Toren met een vrije a-pion} ;
translate N EndingRooksDouble {Dubbele Toren eindspelen} ;
translate N EndingBishops {Loper tegen Loper eindspel} ;
translate N EndingBishopVsKnight {Loper tegen Paard eindspe} ;
translate N EndingKnights {Paard tegenPaard eindspel} ;
translate N EndingQueens {Dame tegen Dame eindspel} ;
translate N EndingQueenPawnVsQueen {Dame +1 pion tegen Dame} ;
translate N BishopPairVsKnightPair {Loperpaar tegen 2 Paarden middenspel} ;

# Common patterns in material search:
translate N PatternWhiteIQP {Witte Gesoleerde pion} ;
translate N PatternWhiteIQPBreakE6 {Witte Gesoleerde pion: d4-d5 doorbraak vs. e6} ;
translate N PatternWhiteIQPBreakC6 {Witte Gesoleerde pion: d4-d5 doorbraak vs. c6} ;
translate N PatternBlackIQP {Zwarte Gesoleerde pion} ;
translate N PatternWhiteBlackIQP {Witte Gesoleerde pion  vs. Zwarte Gesoleerde pion} ;
translate N PatternCoupleC3D4 {Witte hangende pionnen c3+d4 } ;
translate N PatternHangingC5D5 {Zwarte hangende pionnen c5+d5} ;
translate N PatternMaroczy {Maroczy Centrum ( Pionnen op c4 en e4)} ;
translate N PatternRookSacC3 {Torenoffer op c3} ;
translate N PatternKc1Kg8 {O-O-O vs. O-O (Kc1 vs. Kg8)} ;
translate N PatternKg1Kc8 {O-O vs. O-O-O (Kg1 vs. Kc8)} ;
translate N PatternLightFian {Light-Square Fianchettos (Loper-g2 vs. Loper-b7)} ;
translate N PatternDarkFian {Dark-Square Fianchettos (Loper-b2 vs. Loper-g7)} ;
translate N PatternFourFian {Four Fianchettos (Lopers op b2,g2,b7,g7)} ;

# Game saving:
translate N Today {Nu}
translate N ClassifyGame {Partij classificeren}

# Setup position:
translate N EmptyBoard {Bord leegmaken}
translate N InitialBoard {Beginstelling}
translate N SideToMove {Aan zet:}
translate N MoveNumber {Zetnummer}
translate N Castling {Rokade}
translate N EnPassantFile {En Passant lijn}
translate N ClearFen {FEN leegmaken}
translate N PasteFen {FEN plakken}
translate N SaveAndContinue {Bewaar en ga door}
translate N DiscardChangesAndContinue {Laat veranderingen vallen\nen ga door}
translate N GoBack {Ga terug}

# Replace move dialog:
translate N ReplaceMove {Zet vervangen}
translate N AddNewVar {Voeg Nieuwe Variant Toe}
translate N NewMainLine {Nieuwe Hoofd Variant}
translate N ReplaceMoveMessage {Hier is al een zet.  

U kunt hem vervangen en alle volgende zetten wissen, of uw zet toevoegen als een nieuwe variant.

(U kunt deze boodschap in de toekeomst vermijden door de optie "Zet vervangen bevestigen" uit te zetten in het menu:Zetten)}

# Make database read-only dialog:
translate N ReadOnlyDialog {Als u deze database "alleen-lezen" maakt, zijn geen veranderingen toegestaan.
Er kunnen geen partijen meer worden opgeslagen of veranderd en ook geen wis-markeringen toegevoegd of verwijderd.
Elke sortering of ECO-classificering zal tijdelijk zijn dan voor deze database.

U kunt de database weer schrijf-toegankelijk maken door hem te sluiten en weer te openen.

Wilt u echt deze database alleen-lezen maken?}

# Clear game dialog:
translate N ClearGameDialog {Deze partij is gewijzigd.

Wilt u echt doorgaan en de wijzigingen niet doorvoeren?
}

# Exit dialog:
translate N ExitDialog {Wilt u Scid werkelijk afsluiten?}
translate N ExitUnsaved {De volgende databases hebben nog onopgeslagen wijzigingen in hun partijen.  Als u nu afsluit zullen deze wijzigingen verloren gaan.}

# Import window:
translate N PasteCurrentGame {Plak huidige partij}
translate N ImportHelp1 {Invoeren of plak een PGN-formaat partij in het venster hierboven.}
translate N ImportHelp2 {Alle import-fouten worden hier weergegeven.}
translate N OverwriteExistingMoves {Overschrijf bestaande zetten ?}

# ECO Browser:
translate N ECOAllSections {alle ECO code secties}
translate N ECOSection {ECO sectie}
translate N ECOSummary {Samenvatting voor}
translate N ECOFrequency {Frequentie van subcodes voor}

# Opening Report:
translate N OprepTitle {Openings Rapportage}
translate N OprepReport {Rapportage}
translate N OprepGenerated {Samengesteld door }
translate N OprepStatsHist {Statistieken en Geschiedenis}
translate N OprepStats {Statistieken}
translate N OprepStatAll {Alle Rapportage Partijen}
translate N OprepStatBoth {Beide Spelers Elo}
translate N OprepStatSince {Sinds}
translate N OprepOldest {Oudste partijen}
translate N OprepNewest {Meest recente partijen}
translate N OprepPopular {Huidige Populariteit}
translate N OprepFreqAll {Frequentie over alle jaren: }
translate N OprepFreq1   {In het afgelopen jaar:      }
translate N OprepFreq5   {In de afgelopen 5 jaar:    }
translate N OprepFreq10  {In de afgelopen 10 jaar:    }
translate N OprepEvery {Eens per %u partijen}
translate N OprepUp {%u%s hoger dan alle jaren}
translate N OprepDown {%u%s lager dan alle jaren}
translate N OprepSame {zelfde als alle jaren}
translate N OprepMostFrequent {Meest frequente spelers}
translate N OprepMostFrequentOpponents {Frekwentste tegenstanders} ;
translate N OprepRatingsPerf {Elo Classificatie en Resultaten}
translate N OprepAvgPerf {Gemiddelde Elo Classificatie en Resultaten }
translate N OprepWRating {Witte Elo Classificatie }
translate N OprepBRating {Zwarte Elo Classificatie }
translate N OprepWPerf {Prestatie wit}
translate N OprepBPerf {Prestatie zwart}
translate N OprepHighRating {Partijen met de hoogste gemiddelde Elo Classificatie }
translate N OprepTrends {Resultaten trends}
translate N OprepResults {Resultaat lengtes en frequenties}
translate N OprepLength {Partij lengte}
translate N OprepFrequency {Frequentie}
translate N OprepWWins {Overwinningen wit:   }
translate N OprepBWins {Overwinningen zwart: }
translate N OprepDraws {Remises: }
translate N OprepWholeDB {hele database}
translate N OprepShortest {Kortste winst}
# translate N OprepShortWhite {Kortste witte overwinningen}
# translate N OprepShortBlack {Kortste zwarte overwinningen}
translate N OprepMovesThemes {Zetten en thema's}
translate N OprepMoveOrders {Zetvolgorde om rapportstelling te bereiken}
translate N OprepMoveOrdersOne \
  {Er was slechts 1 volgorde om deze stelling te bereiken:}
translate N OprepMoveOrdersAll \
  {Er waren %u zet-volgordes om deze stelling te bereiken:}
translate N OprepMoveOrdersMany \
  {Er waren %u zet-volgordes om deze stelling te bereiken. De top %u zijn:}
translate N OprepMovesFrom {Zetten vanuit de rapportstelling:}
translate N OprepMostFrequentEcoCodes {Frekwentste ECO codes} ;
translate N OprepThemes {Positionele Thema's}
translate N OprepThemeDescription {Frekwentie van  themas in de eerste %u zetten van elke partij} ;
translate N OprepThemeSameCastling {Gelijke rochades}
translate N OprepThemeOppCastling {Tegengestelde rochades}
translate N OprepThemeNoCastling {Beide zijden niet gerocheerd}
translate N OprepThemeKPawnStorm {Pionnenstorm op koningsvleugel}
translate N OprepThemeQueenswap {Dameruil}
translate N OprepThemeWIQP {Witte Gesoleerde Damepion} ;
translate N OprepThemeBIQP {Zwarte Gesoleerde Damepion} ;
translate N OprepThemeWP567 {Witte pion op de 5/6/7de rij}
translate N OprepThemeBP234 {Zwarte pion op de 2/3/4de rij}
translate N OprepThemeOpenCDE {Open c/d/e lijn}
translate N OprepTheme1BishopPair {Slechts 1 kant heeft loperpaar}
translate N OprepEndgames {Eindspelen}
translate N OprepReportGames {Rapportage partijen}
translate N OprepAllGames {Alle partijen}
translate N OprepEndClass {Materiaal classificatie van eindstellingen}
translate N OprepTheoryTable {Theorie tabel}
translate N OprepTableComment {Samengesteld uit de %u partijen met de hoogste Elo classificatie.}
translate N OprepExtraMoves {Extra zetten in theorie tabel}
translate N OprepMaxGames {Maximaal aantal partijen in theorie tabel}
translate N OprepViewHTML { HTML zicht} ;
translate N OprepViewLaTeX {LaTeX zicht} ;

# Player Report:
translate N PReportTitle {Speler Rapport} ;
translate N PReportColorWhite {met Wit} ;
translate N PReportColorBlack {mee Zwart} ;
translate N PReportMoves {na %s} ;
translate N PReportOpenings {Openingen} ;
translate N PReportClipbase {Maak klipbord leeg en copieer de aan voorwaarden vervullende partijen ernaar} ;

# Piece Tracker window:
translate N TrackerSelectSingle {Linkse muisknop selecteert dit stuk.}
translate N TrackerSelectPair { Linkse muisknop selecteert dit stuk; de rechtermuisknop selecteert zijn buur.}
translate N TrackerSelectPawn { Linkse muisknop selcteert deze pion; ; de rechtermuisknop selecteert alle 8 pionnen.}
translate N TrackerStat {Statistiek}
translate N TrackerGames {% partijen met zet naar dit veld.}
translate N TrackerTime {% keer op ieder veld.}
translate N TrackerMoves {Zetten}
translate N TrackerMovesStart {Voer de zet in waar de Spoorvolger moet beginnen.}
translate N TrackerMovesStop { Voer de zet in waar de Spoorvolger moet stoppen.}

# Game selection dialogs:
translate N SelectAllGames {Alle partijen in de database}
translate N SelectFilterGames {Alleen partijen uit selectiefilter}
translate N SelectTournamentGames {Alleen partijen in huidig toernooi}
translate N SelectOlderGames {Alleen oudere partijen}

# Delete Twins window:
translate N TwinsNote {Om een dubbele partij te zijn moet deze minimaal dezelfde twee spelers en de onderstaande te selecteren criteria bevatten. Bij vondst van twee dubbele partijen wordt de kortste verwijderd. Hint: Controleer de database op spelfouten voordat doublures worden verwijderd. Dit verhoogt de kans op vinden van dubbele partijen. }
translate N TwinsCriteria {Criteria: Dubbele partijen moeten hebben...}
translate N TwinsWhich {Onderzoek welke partijen}
translate N TwinsColors {Spelers dezelfde kleur?}
translate N TwinsEvent {Hetzelfde evenement?}
translate N TwinsSite {Dezelfde lokatie?}
translate N TwinsRound {Dezelfde ronde?}
translate N TwinsYear {Hetzelfde jaar?}
translate N TwinsMonth {Dezelfde maand?}
translate N TwinsDay {Dezelfde dag?}
translate N TwinsResult {Hetzelfde resultaat?}
translate N TwinsECO {Dezelfde ECO code?}
translate N TwinsMoves {Dezelfde zetten?}
translate N TwinsPlayers {Vergelijken speler namen:}
translate N TwinsPlayersExact {Exacte overeenkomst}
translate N TwinsPlayersPrefix {Alleen eerste 4 letters}
translate N TwinsWhen {Wanner doublures verwijderen}
translate N TwinsSkipShort {Negeer alle partijen korter dan 5 zetten?}
translate N TwinsUndelete {Haal alle voor wissen gemarkeerde partijen eerst terug?}
translate N TwinsSetFilter {Selecteer alle verwijderde dubbele partijen?}
translate N TwinsComments {Altijd partijen met commentaar bewaren?}
translate N TwinsVars {Altijd partijen met varianten bewaren?}
translate N TwinsDeleteWhich {Welke partij wissen:}
translate N TwinsDeleteShorter {Kortste partij}
translate N TwinsDeleteOlder {Laagste partijnummer}
translate N TwinsDeleteNewer {Hoogste partijnummer}
translate N TwinsDelete {Verwijder partijen}

# Name editor window:
translate N NameEditType {Type naam om te wijzigen}
translate N NameEditSelect {Partijen om te wijzigen}
translate N NameEditReplace {Vervangen}
translate N NameEditWith {met}
translate N NameEditMatches {Gelijken: Druk Ctrl+1 tot Ctrl+9 om te selecteren}
# ====== TODO To be translated ======
translate N CheckGames {Check games}
# ====== TODO To be translated ======
translate N CheckGamesWhich {Check games}
# ====== TODO To be translated ======
translate N CheckAll {All games}
# ====== TODO To be translated ======
translate N CheckSelectFilterGames {Only games in filter}

# Classify window:
translate N Classify {Classificeren}
translate N ClassifyWhich {ECO-Classificatie: welke partijen}
translate N ClassifyAll {Alle partijen (overschrijven oude ECO codes)}
translate N ClassifyYear {Alle partijen gespeeld in het afgelopen jaar}
translate N ClassifyMonth {Alle partijen gespeeld in de afgelopen maand}
translate N ClassifyNew {Alleen partijen zonder ECO code}
translate N ClassifyCodes {ECO Codes om te gebruiken}
translate N ClassifyBasic {Alleen basis codes ("B12", ...)}
translate N ClassifyExtended {Scid extenties ("B12j", ...)}

# Compaction:
translate N NameFile {Namen Bestand}
translate N GameFile {Partijen Bestand}
translate N Names {Namen}
translate N Unused {Ongebruikt}
translate N SizeKb {Grootte (Kb)}
translate N CurrentState {Huidige toestand}
translate N AfterCompaction {Na comprimeren}
translate N CompactNames {Gecomprimeerde namen bestand}
translate N CompactGames {Gecomprimeerd partijen bestand}
translate N NoUnusedNames "Er zijn geen ongebruikte namen dus het naambestand is reeds volledig gecomprimeerd."
translate N NoUnusedGames "Het partijen bestand is reeds volledig gecomprimeerd."
translate N NameFileCompacted {Het namen bestand voor de databank "[file tail [sc_base filename]]" werd gecomprimeerd.}
translate N GameFileCompacted {Het namen bestand voor de databank "[file tail [sc_base filename]]" werd comprimeerd.}

# Sorting:
translate N SortCriteria {Criteria}
translate N AddCriteria {Toevoegen criteria}
translate N CommonSorts {Algemene sorteringen}
translate N Sort {Sorteren}

# Exporting:
translate N AddToExistingFile {Toevoegen partijen aan bestaand bestand?}
translate N ExportComments {Exporteren commentaar?}
translate N ExportVariations {Exporteren varianten?}
translate N IndentComments {Inspringen commentaar?}
translate N IndentVariations {Inspringen varianten?}
translate N ExportColumnStyle {Kolomstijl (een zet per regel)?}
translate N ExportSymbolStyle {Symbolische annotatie stijl:}
translate N ExportStripMarks {Wis vierkante haken/pijlen markeer codes uit de commentaar?}

# Goto game/move dialogs:
translate N LoadGameNumber {Geef het nummer van de te laden partij:}
translate N GotoMoveNumber {Ga naar zetnummer:}

# Copy games dialog:
translate N CopyGames {Kopiren partijen}
translate N CopyConfirm {
 Wilt u echt kopieren
 de [::utils::thousands $nGamesToCopy] geselecteerde partijen
 van database "$fromName"
 naar database "$targetName"?
}
translate N CopyErr {Kan partijen niet kopieren}
translate N CopyErrSource {de bron database}
translate N CopyErrTarget {de doel database}
translate N CopyErrNoGames {heeft geen partijen in het filter}
translate N CopyErrReadOnly {is alleen-lezen}
translate N CopyErrNotOpen {is niet geopend}

# Colors:
translate N LightSquares {Lichte velden}
translate N DarkSquares {Donkere velden}
translate N SelectedSquares {Geselecteerde velden}
translate N SuggestedSquares {Zetsuggestie velden}
translate N WhitePieces {Witte stukken}
translate N BlackPieces {Zwarte stukken}
translate N WhiteBorder {Witte rand}
translate N BlackBorder {Zwarte rand}

# Novelty window:
translate N FindNovelty {Vind Nieuwtje}
translate N Novelty {Nieuwtje}
translate N NoveltyInterrupt {Zoeken nieuwtje onderbroken}
translate N NoveltyNone {In deze partij is geen nieuwtje gevonden}
translate N NoveltyHelp {
Scid zal de eerste zet vinden in de huidige partij, waarna een stelling ontstaat die nog niet was gevonden in de database of in het ECO openingsboek.
}

# Sounds configuration:
translate N SoundsFolder {Geluidsbestanden Map} ;
translate N SoundsFolderHelp {De map moet de bestanden King.wav, a.wav, 1.wav, enz. bevatten} ;
translate N SoundsAnnounceOptions {Zet Aankondigingen Opties} ;
translate N SoundsAnnounceNew {Kondig nieuwe zetten aan als ze gedaan worden} ;
translate N SoundsAnnounceForward {Kondig  aan als n zet vooruit gedaan wordt} ;
translate N SoundsAnnounceBack {Kondig  aan als n zet terug gedaan of genomen wordt} ;

# Upgrading databases:
translate N Upgrading {Bijwerken}
translate N ConfirmOpenNew {
Dit is een oud formaat (Scid 3) database welke in Scid 4 niet kan worden geopend. Maar een nieuwe versie (Scid 4) is reeds aangemaakt.

Wilt u de database in het nieuwe formaat openen?
}
translate N ConfirmUpgrade {
Dit is een oud formaat (Scid 3) database. Een versie in het nieuwe formaat moet worden gemaakt, voordat het in Scid 4 kan worden gebruikt.

Bijwerken creert een nieuwe versie van de database.

Dit kan enige tijd duren, maar het hoeft slechts eenmalig plaats te vinden. U kunt het afbreken indien het te lang duurt.

Wilt u de database nu bijwerken?
}

# Recent files options:
translate N RecentFilesMenu {Aantal recente bestanden in Bestand menu}
translate N RecentFilesExtra {Aantal recente bestand in extra submenu}

# My Player Names options:
translate N MyPlayerNamesDescription {Voeg hieronder een lijst met voorkeur spelernamen in, 1 speler per regel. Jokers (bvb "?" voor elke letter, "*" voor een reeks letters) zijn toegelaten.
Telkens een partij uit de lijst word geladen, zal het schaakbord worden gedraaid indien nodig om de partij vanuit die speler zijn perspektief te tonen.
} ;

translate N showblunderexists {toon dat er een blunder is}
translate N showblundervalue {toon blunder waarde}
translate N showscore {toon score}
translate N coachgame {coach partij}
translate N configurecoachgame {configureer coach partij}
translate N configuregame {Partij instellingen}
translate N Phalanxengine {Phalanx engine}
translate N Coachengine {Coach machiee}
translate N difficulty {moeilijkheid}
translate N hard {erg moeilijk}
translate N easy {gemakkelijk}
translate N Playwith {Speel met}
 
translate N white {wit}
 
translate N black {zwart}
 
translate N both {beide}
 
translate N Play {Spel}
 
translate N Noblunder {Geen blunder}
 
translate N blunder {Blunder}
 
translate N Noinfo {-- Geen info --}
translate N PhalanxOrTogaMissing {Phalanx of Toga werden niet gevonden}
 
 
 
translate N moveblunderthreshold {zet is blunder als het verlies groter is dan}
 
translate N limitanalysis {limiet engine analyse tijd}
 
translate N seconds {seconden}
 
translate N Abort {Breek af}
translate N Resume {Herneem}
 
translate N OutOfOpening {Uit de opening}
 
translate N NotFollowedLine {Je volgde de variant niet}
 
translate N DoYouWantContinue {Wil je verder gaan?}
translate N CoachIsWatching {De coach kijkt toe}
translate N Ponder {Altijd denken}
translate N LimitELO {Beperk ELO sterkte}
translate N DubiousMovePlayedTakeBack {Twijfelachtige zet gespeeld. Wil je terugnemen ?}
translate N WeakMovePlayedTakeBack {Zwakke zet gespeeld, wil je terugnemen ?}
translate N BadMovePlayedTakeBack {Slechte zet gespeeld, wil je terugnemen ?}
 
translate N Iresign {Ik geef op}
 
translate N yourmoveisnotgood {Je zet is niet goed}
 
translate N EndOfVar {Eind van variant}
 
translate N Openingtrainer {Opening trainer}
 
translate N DisplayCM {Toon kandidaat zetten}
 
translate N DisplayCMValue {Toon waarde kandidaat zetten}
translate N DisplayOpeningStats {Toon statistieken}
translate N ShowReport {Toon het rapport}
translate N NumberOfGoodMovesPlayed {gespeelde goede zetten}
translate N NumberOfDubiousMovesPlayed {gespeelde twijfelachtige zetten}
translate N NumberOfMovesPlayedNotInRepertoire {gespeelde zetten niet in het repertorium}
translate N NumberOfTimesPositionEncountered {aantal keer dat deze stelling voorkwam}
 
translate N PlayerBestMove  {Laat alleen beste zetten toe}
 
translate N OpponentBestMove {Tegenstander speelt beste zetten}
 
translate N OnlyFlaggedLines {Enkel gemarkeerde varianten}
translate N resetStats {Herstart de statistieken}
 
translate N Repertoiretrainingconfiguration {Repertorium training configuratie}
 
translate N Loadingrepertoire {Repertorium Laden}
 
translate N Movesloaded {Zetten geladen}
 
translate N Repertoirenotfound {Repertorium niet gevonden}
 
translate N Openfirstrepertoirewithtype {Open eerste repertorium database met ikoon/type aan rechterzijde gezet}
 
translate N Movenotinrepertoire {Zet niet in Repertorium}
translate N PositionsInRepertoire {Stellingen in het repertorium}
translate N PositionsNotPlayed {Niet gespeelde stellingen}
translate N PositionsPlayed {Gespeelde stellingen}
translate N Success {Succes}
translate N DubiousMoves {Twijfelachtige zetten}
translate N OutOfRepertoire {Uit het repertorium}
  
translate N ConfigureTactics {Configureer takiek}
 
translate N ResetScores {Initialiseer scores}
 
translate N LoadingBase {Laad database}
 
translate N Tactics {Taktiek}
 
translate N ShowSolution {Toon oplossing}
translate N NextExercise {Volgende oefening}
translate N PrevExercise {Voorgaande oefening}
translate N StopTraining {Stop training}
 
translate N Next {Volgende}
 
translate N ResettingScore {Initialiseer score}
 
translate N LoadingGame {Laad partij}
 
translate N MateFound {Mat gevonden}
 
translate N BestSolutionNotFound {Beste oplossing NIET gevonden!}
 
translate N MateNotFound {Mat NIET gevonden}
 
translate N ShorterMateExists {Korter mat bestaat}
 
translate N ScorePlayed {Score gespeeld}
 
translate N Expected {verwacht}
 
translate N ChooseTrainingBase {Kies training base}
 
translate N Thinking {Denkend}
 
translate N AnalyzeDone {Analyse gedaan}
 
translate N WinWonGame {Win gewonnen partij}
 
translate N Lines {Varianten}
 
translate N ConfigureUCIengine {Configureer UCI engine}
 
translate N SpecificOpening {Specifieke opening}
translate N StartNewGame {Start nieuwe partij}
translate N FixedLevel {Vast niveau}
translate N Opening {Opening}
translate N RandomLevel {Willekeurig niveau}
translate N StartFromCurrentPosition {Start vanaf de huidige stelling}
translate N FixedDepth {Vaste diepte}
translate N Nodes {Knooppunten} 
translate N Depth {Diepte}
translate N Time {Tijd} 
translate N SecondsPerMove {Seconden per zet}
translate N Engine {Engine}
translate N TimeMode {Tijd methode}
translate N TimeBonus {Tiid + bonus}
translate N TimeMin {min}
translate N TimeSec {sec}
 
translate N AllExercisesDone {Alle oefeningen gedaan}
 
translate N MoveOutOfBook {Zet buiten boek}
 
translate N LastBookMove {Laatste zet boek}
 
translate N AnnotateSeveralGames {Becommentarieer verschillende partijen \n van huidig tot :}
 
translate N FindOpeningErrors {Vind openingsfouten}
translate N MarkTacticalExercises {Markeer de tactische oefeningen}
 
translate N UseBook {Gebruik boek}
 
translate N MultiPV {Meerder varianten}
 
translate N Hash {Hash Geheugentabel}
 
translate N OwnBook {Gebruik engine boek}
 
translate N BookFile {Opening boek}
 
translate N AnnotateVariations {Becommentarieer varianten}
translate N ShortAnnotations {Korte commentaren}
translate N addAnnotatorTag {Voeg een commentaar label toe}
translate N AddScoreToShortAnnotations {Voeg de score toe aan de korte commentaren}
 
translate N Export {Export}
 
translate N BookPartiallyLoaded {Boek gedeeltelijk geladen}
translate N Calvar {Berekening van de varianten}
translate N ConfigureCalvar {Configuratie}
 
 
translate N Reti {Reti}
 
translate N English {Engels}
 
translate N d4Nf6Miscellaneous {1.d4 Nf6 Verscheidene}
 
translate N Trompowsky {Trompowsky}
 
translate N Budapest {Boedapest}
 
translate N OldIndian {Oud Indisch}
 
translate N BenkoGambit {Benko Gambiet}
 
translate N ModernBenoni {Moderne Benoni}
 
translate N DutchDefence {Dutch Defence}
 
translate N Scandinavian {Scandinavian}
 
translate N AlekhineDefence {Alechin Verdediging}
 
translate N Pirc {Pirc}
 
translate N CaroKann {Caro-Kann}
 
translate N CaroKannAdvance {Caro-Kann Doorschuif}
 
translate N Sicilian {Siciliaans}
 
translate N SicilianAlapin {Siciliaans Alapin}
 
translate N SicilianClosed {Siciliaans Gesloten}
 
translate N SicilianRauzer {Siciliaans Rauzer}
 
translate N SicilianDragon {Siciliaans Draak}
 
translate N SicilianScheveningen {Siciliaans Scheveningen}
 
translate N SicilianNajdorf {Siciliaans Najdorf}
 
translate N OpenGame {Open Spel}
 
translate N Vienna {Weens}
 
translate N KingsGambit {Konings Gambiet}
 
translate N RussianGame {Russisch}
 
translate N ItalianTwoKnights {Italiaans/Tweepaardenspel}
 
translate N Spanish {Spaans}
 
translate N SpanishExchange {Spaans Ruil}
 
translate N SpanishOpen {Spaans Open}
 
translate N SpanishClosed {Spaans Gesloten}
 
translate N FrenchDefence {Frans}
 
translate N FrenchAdvance {Frans Doorschuif}
 
translate N FrenchTarrasch {Frans Tarrasch}
 
translate N FrenchWinawer {Frans Winawer}
 
translate N FrenchExchange {Frans Ruil}
 
translate N QueensPawn {Damepion}
 
translate N Slav {Slavisch}
 
translate N QGA {Aangenomen Damegambiet}
 
translate N QGD {Damegambiet}
 
translate N QGDExchange {Damegambiet Ruil}
 
translate N SemiSlav {Half-Slavisch}
 
translate N QGDwithBg5 {Damegambiet met Lg5}
 
translate N QGDOrthodox {Damegambiet Orthodox}
 
translate N Grunfeld {Grnfeld}
 
translate N GrunfeldExchange {Grnfeld Ruil}
 
translate N GrunfeldRussian {Grnfeld Russisch}
 
translate N Catalan {Catalaans}
 
translate N CatalanOpen {Catalaans Open}
 
translate N CatalanClosed {Catalaans Gesloten}
 
translate N QueensIndian {Dameindisch}
 
translate N NimzoIndian {Nimzo-Indisch}
 
translate N NimzoIndianClassical {Nimzo-Indisch Klassiek Dc2}
 
translate N NimzoIndianRubinstein {Nimzo-Indisch Rubinstein}
 
translate N KingsIndian {Koningsindisch}
 
translate N KingsIndianSamisch {Koningsindisch Smisch}

translate N KingsIndianMainLine {Koningsindisch Hoofdvariant}
translate N ConfigureFics {Configureer FICS}
translate N FICSGuest {Login als Gast}
translate N FICSServerPort {Server poort}
translate N FICSServerAddress {IP Addres}
translate N FICSRefresh {Ververs}
translate N FICSTimesealPort {Tijdsoverschrijdingspoort}
translate N FICSSilence {Stilte}
translate N FICSOffers {Biedt aan}
translate N FICSConsole {Console}
translate N FICSGames {Partiejen}
translate N FICSUnobserve {Stop gadeslaan partij}
translate N FICSProfile {Toon jouw geschiedenis en profiel}
translate N FICSRelayedGames {Doorgezonden partijen}
translate N FICSFindOpponent {Zoek opponent}
translate N FICSTakeback {Terugnemen}
translate N FICSTakeback2 {Terugnemen 2}
translate N FICSInitTime {Initile tijd (min)}
translate N FICSIncrement {Toename (sec)}
translate N FICSRatedGame {De Betreffende Partij}
translate N FICSAutoColour {Automatisch}
translate N FICSManualConfirm {Bevestig manueel}
translate N FICSFilterFormula {Filter met fromule}
translate N FICSIssueSeek {Zoek uitdager}
translate N FICSChallenge {Uitdagen}
translate N FICSAccept {Aanvaard}
translate N FICSDecline {weiger}
translate N FICSColour {Kleur}
translate N FICSSend {Zend}
translate N FICSConnect {Verbind}
translate N FICSdefaultuservars {Gebruik standaard waarden}
translate N FICSObserveconfirm {Wil je de partij gadeslaan}
translate N GameReview {Partij herbekijken}
translate N GameReviewTimeExtended {Tijd overschreden}
translate N GameReviewMargin {Fout marge}
translate N GameReviewAutoContinue {Auto vervolg als de zet juist is}
translate N GameReviewReCalculate {Gebruik verlengde tijd}
translate N GameReviewAnalyzingMovePlayedDuringTheGame {Analyseer de gespeelde zet tijdens de partij}
translate N GameReviewAnalyzingThePosition {Analyseer de stelling}
translate N GameReviewEnterYourMove {Voer je zet in}
translate N GameReviewCheckingYourMove {Controle van je zet}
translate N GameReviewYourMoveWasAnalyzed {Je zet werd geanalyseerd}
translate N GameReviewYouPlayedSameMove {Je speelde dezelfde zet als in de partij}
translate N GameReviewScoreOfYourMove {Score van je zet}
translate N GameReviewGameMoveScore {Partijzet score}
translate N GameReviewEngineScore {Score van engine}
translate N GameReviewYouPlayedLikeTheEngine {Je speelde zoals de engine}
translate N GameReviewNotEngineMoveButGoodMove {Geen engine zet maar ook goed}
translate N GameReviewMoveNotGood {Deze zet is niet goed, de score is}
translate N GameReviewMovesPlayedLike {Zetten gespeeld zoals}
translate N GameReviewMovesPlayedEngine {Zetten gespeeld zoals de engine}
translate N CCDlgConfigureWindowTitle {Configureer Correspondentie Schaak}
translate N CCDlgCGeneraloptions {Algemene Opties}
translate N CCDlgDefaultDB {Default Databank:}
translate N CCDlgInbox {Inbox (pad):}
translate N CCDlgOutbox {Outbox (pad):}
translate N CCDlgXfcc {Xfcc Configuratie:}
translate N CCDlgExternalProtocol {Externe Protocol Verwerker (b.v. Xfcc)}
translate N CCDlgFetchTool {Verwerf Tool:}
translate N CCDlgSendTool {Zend Tool:}
translate N CCDlgEmailCommunication {eMail Communicatie}
translate N CCDlgMailPrg {Mail programma:}
translate N CCDlgBCCAddr {(B)CC Address:}
translate N CCDlgMailerMode {Mode:}
translate N CCDlgThunderbirdEg {b.v. Thunderbird, Mozilla Mail, Icedove...}
translate N CCDlgMailUrlEg {b.v. Evolution}
translate N CCDlgClawsEg {b.v Sylpheed Claws}
translate N CCDlgmailxEg {b.v. mailx, mutt, nail...}
translate N CCDlgAttachementPar {Aanhangsel parameter:}
translate N CCDlgInternalXfcc {Gebruik interne Xfcc ondersteuning}
translate N CCDlgConfirmXfcc {Bevestig de zetten}
translate N CCDlgSubjectPar {Onderwerp parameter:}
translate N CCDlgDeleteBoxes {Lege In-/Uitbox}
translate N CCDlgDeleteBoxesText {Wil je echt de  In- and Uitbox mappen voor Correspondentieschaak ledigen? Dit vereist een nieuwe synchronisatie om de laatste staat van je partijen te tonen.}
translate N CCDlgConfirmMove {Bevestig zet}
translate N CCDlgConfirmMoveText {Als je bevestigt zal volgende zet en commentaar naar de server gestuurd worden:}
translate N CCDlgDBGameToLong {Onverenigbare Hoofdvariant}
translate N CCDlgDBGameToLongError {De hoofdvariant in jouw database is langer dan de partij in je Inbox. Als de Inbox huidige partijen bevat bvb. vlak na een synchronisatie, dan werden enkele verkeerde zetten toegevoegd aan de hoofdvariant.\nIn dit geval verkort de hoofdvariant tot (max) zetten\n}
translate N CCDlgStartEmail {Start een nieuwe eMail partij}
translate N CCDlgYourName {Uw Naam:}
translate N CCDlgYourMail {Uw eMail Addres:}
translate N CCDlgOpponentName {Naam van de tegenstander:}
translate N CCDlgOpponentMail {EMail Addres van de tegenstander:}
translate N CCDlgGameID {Game ID (uniek):}
translate N CCDlgTitNoOutbox {Scid: Correspondentie Schaak Outbox}
translate N CCDlgTitNoInbox {Scid: Correspondentie Schaak Inbox}
translate N CCDlgTitNoGames {Scid: Geen Correspondentie Schaak partijen}
translate N CCErrInboxDir {Correspondentie Schaak inbox folder:}
translate N CCErrOutboxDir {Correspondentie Schaak outbox folder:}
translate N CCErrDirNotUsable {dit bestaat niet of is niet toegankelijk!\nVerifieer en corrigeer de instellingen.}
translate N CCErrNoGames {dit bevat geen partijen!\nHaal ze alstublieft eerst op.}
translate N CCDlgTitNoCCDB {Scid: No Correspondentie Databank}
translate N CCErrNoCCDB {Er werd geen databank van type 'Correspondentie' geopend. U moet er eerst een openen alvorens de correspondentie schaak functies te gebruiken.}
translate N CCFetchBtn {Haal de partijen van de server en verwerk de Inbox}
translate N CCPrevBtn {Ga naar de vorige partij}
translate N CCNextBtn {Ga naar de volgende}
translate N CCSendBtn {Stuur de zet op}
translate N CCEmptyBtn {Ledig In- en Outbox}
translate N CCHelpBtn {Hulp over iconen en status indicatoren.\nVoor algemen hulp: druk F1!}
translate N CCDlgServerName {Server Naam:}
translate N CCDlgLoginName  {Login Naam:}
translate N CCDlgPassword   {Paswoord:}
translate N CCDlgURL        {Xfcc-URL:}
translate N CCDlgRatingType {Klassering Type:}
translate N CCDlgDuplicateGame {Niet-unieke partij ID}
translate N CCDlgDuplicateGameError {This game exists more than once in your database. Please delete all duplicates and compact your game file (File/Maintenance/Compact Database).}
translate N CCDlgSortOption {Rangschikken:}
translate N CCDlgListOnlyOwnMove {De enige partijen waarvan ik de zet heb}
translate N CCOrderClassicTxt {Plaats, Wedstrijd, Ronde, Resultaat, Wit, Zwart}
translate N CCOrderMyTimeTxt {Mijn klok}
translate N CCOrderTimePerMoveTxt {Tijd per zet tot de volgende tijdscontrole}
translate N CCOrderStartDate {Start datum}
translate N CCOrderOppTimeTxt {Tegenstander Klok}
# ====== TODO To be translated ======
translate N CCDlgConfigRelay {Observe games}
# ====== TODO To be translated ======
translate N CCDlgConfigRelayHelp {Go to the games page on http://www.iccf-webchess.com and display the game to be observed.  If you see the chessboard copy the URL from your browser to the list below. One URL per line only!\nExample: http://www.iccf-webchess.com/MakeAMove.aspx?id=266452}
translate N ExtHWConfigConnection {Configureer externe hardware}
translate N ExtHWPort {Poort}
translate N ExtHWEngineCmd {Engine commando}
translate N ExtHWEngineParam {Engine parameters}
translate N ExtHWShowButton {Toon de knop}
translate N ExtHWHardware {Hardware}
translate N ExtHWNovag {Novag Citrine}
translate N ExtHWInputEngine {Invoer Engine}
translate N ExtHWNoBoard {Geen bord}
translate N NovagReferee {Scheidsrechter}
translate N IEConsole {Invoer Engine Console}
translate N IESending {Zetten verzonden voor}
translate N IESynchronise {Synchroniseer}
translate N IERotate  {Roteer}
translate N IEUnableToStart {De Input engine start niet:}
translate N DoneWithPosition {Klaar met deze stelling}
translate N Board {Bord}
translate N showGameInfo {Toon de partij informatie}
translate N autoResizeBoard {Verander bord automatisch van grootte}
translate N DockTop {Zend naar eeste plaats}
translate N DockBottom {Zend naar laatste plaats}
translate N DockLeft {Zend naar links}
translate N DockRight {Zend naar rechts}
translate N Undock {Undock}
translate N ChangeIcon {Verander ikoon...}
}
# End of nederlan.tcl










































































# norsk.tcl
# Text for menu names and status bar help messages in Norwegian.
# First created for Scid 3.2.beta2 by morten.skarstad@sapphire.no.
# Edited for Scid 3.2.beta4
# Thanks to Martin Skjldebrand, swedish.tcl was of great help to me.

addLanguage O Norsk 1 ;#iso8859-1

proc setLanguage_O {} {

# File menu:
menuText O File "Fil" 0
menuText O FileNew "Ny..." 0 {Lag en ny Scid-database}
menuText O FileOpen "pne..." 0 {pne en Scid-database}
menuText O FileClose "Lukk" 0 {Lukk aktiv Scid-database}
menuText O FileFinder "Sk" 0 {pne skevinduet}
menuText O FileBookmarks "Bokmerker" 0 {Bokmerkemeny (snarvei: Ctrl+B)}
menuText O FileBookmarksAdd "Legg til bokmerke" 0 \
  {Sett bokmerke til nvrende database, parti og stilling}
menuText O FileBookmarksFile "Lagre bokmerke" 0 \
  {Lagre et bokmerke for nvrende database, parti og stilling}
menuText O FileBookmarksEdit "Ordne bokmerker" 0 \
  {Vedlikehold av bokmerkene}
menuText O FileBookmarksList "Vis kataloger som enkel liste" 24 \
  {Vis bokmerker som liste, ikke undermenyer}
menuText O FileBookmarksSub "Vis kataloger som undermenyer" 18 \
  {Vis bokmerke-katalogene som undermenyer, ikke liste}
menuText O FileMaint "Vedlikehold" 0 {Verkty for  vedlikeholde Scid-databasen}
menuText O FileMaintWin "Vedlikeholdsvindu" 0 \
  {pne/lukk Scids vedlikeholdsvindu}
menuText O FileMaintCompact "Komprimer database..." 0 \
  {Sletter ubrukte partier og navn}
menuText O FileMaintClass "ECO-klassifiser partier..." 0 \
  {Regn om ECO-koden for alle partier}
menuText O FileMaintSort "Sorter database..." 0 \
  {Sorter alle partier i databasen}
menuText O FileMaintDelete "Slett duplikater..." 6 \
  {Finner like partier og merker en av dem for sletting}
menuText O FileMaintTwin "Duplikatsjekkvindu" 1 \
  {pne/oppdatere duplikatsjekkvinduet}
menuText O FileMaintName "Navnestaving" 0 {Redigering og stavekontroll av navn}
menuText O FileMaintNameEditor "Navneredigering" 5 \
  {pne/lukk vinduet for navneredigering}
menuText O FileMaintNamePlayer "Kontroller navn..." 0 \
  {Sammenlign navn med stavekontroll-filen}
menuText O FileMaintNameEvent "Kontroller anledninger..." 11 \
  {Sammenlign anledninger med stavekontroll-filen}
menuText O FileMaintNameSite "Kontroller stedsnavn..." 12 \
  {Sammenlign stedsnavn med stavekontroll-filen}
menuText O FileMaintNameRound "Kontroller runde-navn..." 11 \
  {Sammenlign rundenavn med stavekontroll-filen}
menuText O FileReadOnly "Skrivebeskytt..." 6 \
  {Hindrer endringer p databasen}
menuText O FileSwitch "Switch to database" 0 \
  {Switch to a different opened database} ;# ***
menuText O FileExit "Avslutt" 0 {Avslutt Scid}
# ====== TODO To be translated ======
menuText O FileMaintFixBase "Fix corrupted base" 0 {Try to fix a corrupted base}

# Edit menu:
menuText O Edit "Rediger" 0
menuText O EditAdd "Legg til variasjon" 0 {Legg til en variasjon av dette trekket i partiet}
menuText O EditDelete "Slett variasjon" 0 {Slett en variasjon av dette trekket}
menuText O EditFirst "Flytt variasjon verst" 0 \
  {Gjr variasjonen til den verste p listen}
menuText O EditMain "Gjr variasjon til hovedlinje" 0 \
  {Gjr variasjon til hovedlinje}
menuText O EditTrial "Prv variasjon" 0 \
  {Start/avslutt prvemodus, for  teste ut en ide p brettet}
menuText O EditStrip "Fjern" 0 {Fjern kommentarer eller variasjoner fra partiet}
# ====== TODO To be translated ======
menuText O EditUndo "Undo" 0 {Undo last game change}
menuText O EditStripComments "Kommentarer" 0 \
  {Fjern alle kommentarer og annotasjoner fra dette partiet}
menuText O EditStripVars "Variasjoner" 0 {Fjern alle variasjoner fra dette partiet}
menuText O EditStripBegin "Moves from the beginning" 1 \
  {Strip moves from the beginning of the game} ;# ***
menuText O EditStripEnd "Moves to the end" 0 \
  {Strip moves to the end of the game} ;# ***
menuText O EditReset "Rensk utklippsbase" 0 \
  {Tmmer utklippsbasen fullstendig}
menuText O EditCopy "Kopier partiet til utklippsbasen" 0 \
  {Kopier dette partiet til utklippsbasen}
menuText O EditPaste "Lim inn siste parti fra utklippsbasen" 0 \
  {Limer inn gjeldende parti fra utklippsbasen her}
menuText O EditPastePGN "Paste Clipboard text as PGN game..." 10 \
  {Interpret the clipboard text as a game in PGN notation and paste it here} ;# ***
menuText O EditSetup "Still opp stilling..." 0 \
  {Lag en startstilling for dette partiet}
menuText O EditCopyBoard "Copy position" 6 \
  {Copy the current board in FEN notation to the text selection (clipboard)} ;# ***
menuText O EditPasteBoard "Lim inn stilling" 0 \
  {Lag en startstilling fra gjeldende utvalg (utklippstavle)}

# Game menu:
menuText O Game "Parti" 0
menuText O GameNew "Nytt parti" 0 \
  {Sletter alle trekk og starter et nytt parti}
menuText O GameFirst "Hent frste parti" 0 {Henter frste parti fra filteret}
menuText O GamePrev "Hent forrige parti" 0 {Henter forrige parti fra filteret}
menuText O GameReload "Hent dette partiet" 0 \
  {Henter dette partiet p nytt og fjerner alle endringer}
menuText O GameNext "Hent neste parti" 0 {Henter neste parti fra filteret}
menuText O GameLast "Hent siste parti" 0 {Henter siste parti fra filteret}
menuText O GameRandom "Hent tilfeldig parti" 8 {Hent tilfeldig parti fra filteret}
menuText O GameNumber "Hent parti nummer..." 0 \
  {Finn et parti ved  angi nummeret}
menuText O GameReplace "Lagre: Erstatt parti..." 0 \
  {Lagre og overskriv dette partiet}
menuText O GameAdd "Lagre som nytt parti..." 0 \
  {Lagre dette partiet som et nytt parti}
menuText O GameDeepest "Identifiser pning" 0 \
  {G til dypeste posisjon i dette partiet listet i ECO-boken}
menuText O GameGotoMove "G til trekk..." 0 \
  {G til et angitt trekk i dette partiet}
menuText O GameNovelty "Finn avvik..." 0 \
  {Finn det frste trekket i dette partiet som ikke har blitt spilt tidligere}

# Search Menu:
menuText O Search "Sk" 0
menuText O SearchReset "Nullstill filter" 0 {Nullstill filteret til  inneholde alle partier}
menuText O SearchNegate "Snu filter" 0 {Reverserer filteret til  kun inneholde eksluderte partier}
menuText O SearchCurrent "Stilling..." 0 {Sk etter denne stillingen}
menuText O SearchHeader "Header..." 0 {Sk etter Header (partier, turnering etc) informasjon}
menuText O SearchMaterial "Kvalitet/stilling..." 0 {Sk p kvalitet eller stilling}
menuText O SearchUsing "Bruk skefil..." 0 {Sk vha lagrede skevilkr}

# Windows menu:
menuText O Windows "Vinduer" 0
menuText O WindowsComment "Kommentarer" 0 {pne/lukk kommentarvinduet}
menuText O WindowsGList "Partioversikt" 0 {pne/lukk partioversikten}
menuText O WindowsPGN "PGN-vindu" 0 \
  {pne/lukk PGN-vinduet}
menuText O WindowsPList "Player Finder" 2 {Open/close the player finder} ;# ***
menuText O WindowsTmt "Turneringsker" 0 {pne/lukk turneringsskeren}
menuText O WindowsSwitcher "Databasebytter" 0 \
  {pne/lukk databasebytteren}
menuText O WindowsMaint "Vedlikeholdsvindu" 0 \
  {pne/lukk vedlikeholdsvinduet}
menuText O WindowsECO "ECO-oversikt" 0 {pne/lukk ECO-oversikten}
menuText O WindowsRepertoire "Repertoirvindu" 0 \
  {pne/lukk pningsreportoiret}
menuText O WindowsStats "Statistikkvindu" 0 \
  {pne/lukk statistikk for filteret}
menuText O WindowsTree "Trevindu" 0 {pne/lukk trevinduet}
menuText O WindowsTB "Sluttspilltabellvindu" 0 \
  {pne/lukk sluttspilltabellen}
# ====== TODO To be translated ======
menuText O WindowsBook "Book Window" 0 {Open/close the Book window}
# ====== TODO To be translated ======
menuText O WindowsCorrChess "Correspondence Window" 0 {Open/close the Correspondence window}

# Tools menu:
menuText O Tools "Verkty" 0
menuText O ToolsAnalysis "Analysemotor..." 0 \
  {Start/stopp en sjakkanalysemotor}
menuText O ToolsAnalysis2 "Analysemotor #2..." 0 \
  {Start/stopp enda en sjakkanalysemotor}
menuText O ToolsCross "Krysstabell" 0 {Vis turnerigskrystabellen for dette partiet}
menuText O ToolsEmail "Epostbehandler" 0 \
  {pne/lukk epostbehandlingsvinduet}
menuText O ToolsFilterGraph "Filtergraf" 7 \
  {pne/lukk filtergrafvinduet}
# ====== TODO To be translated ======
menuText O ToolsAbsFilterGraph "Abs. Filter Graph" 7 {Open/close the filter graph window for absolute values}
menuText O ToolsOpReport "pningsrapport" 0 \
  {Lager en pningsrapport for denne stillingen}
# ====== TODO To be translated ======
menuText O ToolsOpenBaseAsTree "Open base as tree" 0   {Open a base and use it in Tree window}
# ====== TODO To be translated ======
menuText O ToolsOpenRecentBaseAsTree "Open recent base as tree" 0   {Open a recent base and use it in Tree window}
menuText O ToolsTracker "Brikkesporing"  0 {pne brikkesporingsvinduet}
# ====== TODO To be translated ======
menuText O ToolsTraining "Training"  0 {Training tools (tactics, openings,...) }
# ====== TODO To be translated ======
menuText O ToolsTacticalGame "Tactical game"  0 {Play a game with tactics}
# ====== TODO To be translated ======
menuText O ToolsSeriousGame "Serious game"  0 {Play a serious game}
# ====== TODO To be translated ======
menuText O ToolsTrainOpenings "Openings"  0 {Train with a repertoire}
# ====== TODO To be translated ======
menuText O ToolsTrainReviewGame "Review game"  0 {Guess moves played in a game}
# ====== TODO To be translated ======
menuText O ToolsTrainTactics "Tactics"  0 {Solve tactics}
# ====== TODO To be translated ======
menuText O ToolsTrainCalvar "Calculation of variations"  0 {Calculation of variations training}
# ====== TODO To be translated ======
menuText O ToolsTrainFindBestMove "Find best move"  0 {Find best move}
# ====== TODO To be translated ======
menuText O ToolsTrainFics "Play on internet"  0 {Play on freechess.org}
# ====== TODO To be translated ======
menuText O ToolsBookTuning "Book tuning" 0 {Book tuning}
# ====== TODO To be translated ======
menuText O ToolsConnectHardware "Connect Hardware" 0 {Connect external hardware}
# ====== TODO To be translated ======
menuText O ToolsConnectHardwareConfigure "Configure..." 0 {Configure external hardware and connection}
# ====== TODO To be translated ======
menuText O ToolsConnectHardwareNovagCitrineConnect "Connect Novag Citrine" 0 {Connect Novag Citrine}
# ====== TODO To be translated ======
menuText O ToolsConnectHardwareInputEngineConnect "Connect Input Engine" 0 {Connect Input Engine (e.g. DGT)}
menuText O ToolsPInfo "Spillerinformasjon"  0 \
  {pne/oppdater informasjonsvinduet for denne spilleren}
menuText O ToolsPlayerReport "Player Report..." 3 \
  {Generate a player report} ;# ***
menuText O ToolsRating "Ratinggraf" 0 \
  {Tegner ratingen til disse spillerene over tid}
menuText O ToolsScore "Poeng-graf" 0 {Viser poeng-grafen}
menuText O ToolsExpCurrent "Eksporter parti" 0 \
  {Skriv dette partiet til en tekstfil}
menuText O ToolsExpCurrentPGN "Eksporter parti til PGN-fil..." 0 \
  {Skriv dette partiet til en PGN-fil}
menuText O ToolsExpCurrentHTML "Eksporter parti til HTML fil..." 0 \
  {Skriv dette partiet til en HTML-fil}
# ====== TODO To be translated ======
menuText O ToolsExpCurrentHTMLJS "Export Game to HTML and JavaScript File..." 15 {Write current game to a HTML and JavaScript file}  
menuText O ToolsExpCurrentLaTeX "Eksporter partil til LaTeX fil..." 0 \
  {Skriv dette partiet til en LaTeX-fil}
menuText O ToolsExpFilter "Eksporter alle partier i filteret" 0 \
  {Skriv alle partier i filteret til en tekstfil}
menuText O ToolsExpFilterPGN "Eksporter filter til PGN-fil..." 0 \
  {Skriv alle partier i filteret til en PGN-fil}
menuText O ToolsExpFilterHTML "Eksporter filter til HTML-fil..." 0 \
  {Skriv alle partier i filteret til en HTML-fil}
# ====== TODO To be translated ======
menuText O ToolsExpFilterHTMLJS "Export Filter to HTML and JavaScript File..." 17 {Write all filtered games to a HTML and JavaScript file}  
menuText O ToolsExpFilterLaTeX "Eksporter filter til LaTeX-fil..." 0 \
  {Skriv alle partier i filteret til en LaTeX-fil}
menuText O ToolsImportOne "Importer ett PGN-parti..." 0 \
  {Importer ett parti fra en PGN-fil}
menuText O ToolsImportFile "Importer fil med PGN-partier..." 0 \
  {Importer partier fra en PGN-fil}
# ====== TODO To be translated ======
menuText O ToolsStartEngine1 "Start engine 1" 0  {Start engine 1}
# ====== TODO To be translated ======
menuText O ToolsStartEngine2 "Start engine 2" 0  {Start engine 2}
# ====== TODO To be translated ======
menuText O ToolsCaptureBoard "Capture Current Board..." 0  {Save the current board as an image.}
# ====== TODO To be translated ======
menuText O Play "Play" 0
# ====== TODO To be translated ======
menuText O CorrespondenceChess "Correspondence Chess" 0 {Functions for eMail and Xfcc based correspondence chess}
# ====== TODO To be translated ======
menuText O CCConfigure "Configure..." 0 {Configure external tools and general setup}
# ====== TODO To be translated ======
menuText O CCConfigRelay "Configure observations..." 10 {Configure games to be observed}
# ====== TODO To be translated ======
menuText O CCOpenDB "Open Database..." 0 {Open the default Correspondence database}
# ====== TODO To be translated ======
menuText O CCRetrieve "Retrieve Games" 0 {Retrieve games via external (Xfcc-)helper}
# ====== TODO To be translated ======
menuText O CCInbox "Process Inobx" 0 {Process all files in scids Inbox}
# ====== TODO To be translated ======
menuText O CCSend "Send Move" 0 {Send your move via eMail or external (Xfcc-)helper}
# ====== TODO To be translated ======
menuText O CCResign "Resign" 0 {Resign (not via eMail)}
# ====== TODO To be translated ======
menuText O CCClaimDraw "Claim Draw" 0 {Send move and claim a draw (not via eMail)}
# ====== TODO To be translated ======
menuText O CCOfferDraw "Offer Draw" 0 {Send move and offer a draw (not via eMail)}
# ====== TODO To be translated ======
menuText O CCAcceptDraw "Accept Draw" 0 {Accept a draw offer (not via eMail)}
# ====== TODO To be translated ======
menuText O CCNewMailGame "New eMail Game..." 0 {Start a new eMail game}
# ====== TODO To be translated ======
menuText O CCMailMove "Mail Move..." 0 {Send the move via eMail to the opponent}
# ====== TODO To be translated ======
menuText O CCGamePage "Game Page..." 0 {Call up the game via the web browser}
# ====== TODO To be translated ======
menuText O CCEditCopy "Copy Gamelist to Clipbase" 0 {Copy the games as CSV list to clipbase}

# Options menu:
menuText O Options "Innstillinger" 0
menuText O OptionsBoard "Chessboard" 0 {Chess board appearance options} ;# ***
menuText O OptionsBoardSize "Brettstrrelse" 0 {Endre brettstrrelse}
menuText O OptionsBoardPieces "Brikkeutseende" 6 \
  {Endrer utseendet p brikkene}
menuText O OptionsBoardColors "Farger..." 0 {Endre farger p brettet}
# ====== TODO To be translated ======
menuText O OptionsBoardGraphics "Squares..." 0 {Select textures for squares}
# ====== TODO To be translated ======
translate O OptionsBGW {Select texture for squares}
# ====== TODO To be translated ======
translate O OptionsBoardGraphicsText {Select graphic files for white and black squares:}
menuText O OptionsBoardNames "My Player Names..." 0 {Edit my player names} ;# ***
menuText O OptionsExport "Eksport" 0 {Endre innstillinger for eksport av tekst}
menuText O OptionsFonts "Skrifttyper" 0 {Endre skrifttyper}
menuText O OptionsFontsRegular "Vanlig" 0 {Endre den vanlige skrifttypen}
menuText O OptionsFontsMenu "Menu" 0 {Change the menu font} ;# ***
menuText O OptionsFontsSmall "Liten" 0 {Endre den lille skrifttypen}
# ====== TODO To be translated ======
menuText O OptionsFontsTiny "Tiny" 0 {Change the tiny font}
menuText O OptionsFontsFixed "Fastbredde" 0 {Endre fastbreddeskrifttypen}
menuText O OptionsGInfo "Partiinformasjon" 0 {Informasjonsinnstillinger}
menuText O OptionsLanguage "Sprk" 0 {Velg menysprk}
# ====== TODO To be translated ======
menuText O OptionsMovesTranslatePieces "Translate pieces" 0 {Translate first letter of pieces}
# ====== TODO To be translated ======
menuText O OptionsMovesHighlightLastMove "Highlight last move" 0 {Highlight last move}
# ====== TODO To be translated ======
menuText O OptionsMovesHighlightLastMoveDisplay "Show" 0 {Display last move Highlight}
# ====== TODO To be translated ======
menuText O OptionsMovesHighlightLastMoveWidth "Width" 0 {Thickness of line}
# ====== TODO To be translated ======
menuText O OptionsMovesHighlightLastMoveColor "Color" 0 {Color of line}
menuText O OptionsMoves "Trekk" 0 {Innstillinger for hvordan trekk angis}
menuText O OptionsMovesAsk "Spr fr trekk erstattes" 0 \
  {Spr fr eksisterende trekk erstattes av et nytt}
menuText O OptionsMovesAnimate "Animation time" 1 \
  {Set the amount of time used to animate moves} ;# ***
menuText O OptionsMovesDelay "Autospillforsinkelse..." 0 \
  {Sett forsinkelsen ved automatisk gjennomgang av partiet}
menuText O OptionsMovesCoord "Koordinater" 0 \
  {Tillat angivelse av koordinater ("g1f3")}
menuText O OptionsMovesSuggest "Vis foresltte trekk" 0 \
  {Sl av/p forslag til trekk}
# ====== TODO To be translated ======
menuText O OptionsShowVarPopup "Show variations window" 0 {Turn on/off the display of a variations window}  
# ====== TODO To be translated ======
menuText O OptionsMovesSpace "Add spaces after move number" 0 {Add spaces after move number}  
menuText O OptionsMovesKey "Autofullfr" 0 \
  {Sl av/p autofullfriring av tastaturtrekk}
# ====== TODO To be translated ======
menuText O OptionsMovesShowVarArrows "Show Arrows for Variations" 0 {Turn on/off arrows showing moves in variations}
menuText O OptionsNumbers "Tallformat" 0 {Angi tallformat}
menuText O OptionsStartup "Oppstart" 0 {Angi vinduer som skal pne ved oppstart}
# ====== TODO To be translated ======
menuText O OptionsTheme "Theme" 0 {Change look of interface}
menuText O OptionsWindows "Vinduer" 0 {Vindusinnstillinger}
menuText O OptionsWindowsIconify "Auto-minimer" 5 \
  {Minimerer alle vinduer sammen med hovedvinduet}
menuText O OptionsWindowsRaise "Autoheving" 0 \
  {Hever visse vinduer (fremdriftsvisere etc) nr de er skjult}
menuText O OptionsSounds "Sounds..." 2 {Configure move announcement sounds} ;# ***
# ====== TODO To be translated ======
menuText O OptionsWindowsDock "Dock windows" 0 {Dock windows}
# ====== TODO To be translated ======
menuText O OptionsWindowsSaveLayout "Save layout" 0 {Save layout}
# ====== TODO To be translated ======
menuText O OptionsWindowsRestoreLayout "Restore layout" 0 {Restore layout}
# ====== TODO To be translated ======
menuText O OptionsWindowsShowGameInfo "Show game info" 0 {Show game info}
# ====== TODO To be translated ======
menuText O OptionsWindowsAutoLoadLayout "Auto load first layout" 0 {Auto load first layout at startup}
menuText O OptionsToolbar "Verktylinje i hovedvindu" 0 \
  {Vis/skjul menylinjen i hovedvinduet}
menuText O OptionsECO "Hent ECO-fil..." 0 {Henter filen med ECO-klassifiseringer}
menuText O OptionsSpell "Hent stavekontrollfil..." 0 \
  {Henter filen med stavekontrollen til Scid}
menuText O OptionsTable "Tabellbasekatalog..." 0 \
  {Velg en tabellbase; Alle tabellbaser i katalogen vil bli brukt}
menuText O OptionsRecent "Recent files..." 0 \
  {Change the number of recent files displayed in the File menu} ;# ***
# ====== TODO To be translated ======
menuText O OptionsBooksDir "Books directory..." 0 {Sets the opening books directory}
# ====== TODO To be translated ======
menuText O OptionsTacticsBasesDir "Bases directory..." 0 {Sets the tactics (training) bases directory}
menuText O OptionsSave "Lagre innstillinger" 0 \
  "Lagre alle instillinger til $::optionsFile"
menuText O OptionsAutoSave "Autolagre innstillinger ved avslutning" 0 \
  {Autolagre alle innstillinger nr Scid avsluttes}

# Help menu:
menuText O Help "Hjelp" 0
menuText O HelpContents "Contents" 0 {Show the help contents page} ;# ***
menuText O HelpIndex "Innhold" 0 {Hjelpesystemets innhold}
menuText O HelpGuide "Lynguide" 0 {Vis lynguiden}
menuText O HelpHints "Hint" 0 {Vis hint}
menuText O HelpContact "Kontaktinformasjon" 0 {Vis kontaktinformasjon}
menuText O HelpTip "Dagens tips" 0 {Vis et nyttig Scid-tips}
menuText O HelpStartup "Oppstartsvindu" 0 {Vis oppstartsvindu}
menuText O HelpAbout "Om Scid" 0 {Informasjon om Scid}

# Game info box popup menu:
menuText O GInfoHideNext "Skjul neste trekk" 0
menuText O GInfoMaterial "Vis kvalitet" 0
menuText O GInfoFEN "Vis FEN" 0
menuText O GInfoMarks "Vis fargede ruter og piler" 0
menuText O GInfoWrap "Tekstbryting" 0
menuText O GInfoFullComment "Vis full kommentar" 0
menuText O GInfoPhotos "Show Photos" 5 ;# ***
menuText O GInfoTBNothing "Tabellbaser: ingenting" 0
menuText O GInfoTBResult "Tabellbaser: kun resultater" 0
menuText O GInfoTBAll "Tabellbaser: resultater og beste trekk" 0
menuText O GInfoDelete "Slett/gjenopprett dette partiet" 0
menuText O GInfoMark "(Av)Merk dette partiet" 0
# ====== TODO To be translated ======
menuText O GInfoInformant "Configure informant values" 0

# Main window buttons:
helpMsg O .main.fbutton.button.start {G til begynnelsen av partiet (tast: Home)}
helpMsg O .main.fbutton.button.end {G til slutten av partiet (tast: End)}
helpMsg O .main.fbutton.button.back {G ett trekk tilbake (tast: LeftArrow)}
helpMsg O .main.fbutton.button.forward {G et trekk fremover (tast: RightArrow)}
helpMsg O .main.fbutton.button.intoVar {G inn i en variasjon (snarvei: v)}
helpMsg O .main.fbutton.button.exitVar {Forlat variasjon (snarvei: z)}
helpMsg O .main.fbutton.button.flip {Roter brett (snarvei: .)}
helpMsg O .main.fbutton.button.coords {Sl av/p brettkoordinater (snarvei: 0)}
helpMsg O .main.fbutton.button.stm {Turn the side-to-move icon on or off} ;# ***
helpMsg O .main.fbutton.button.autoplay {Automatisk spill (tast: Ctrl+Z)}

# General buttons:
translate O Back {Tilbake}
translate O Browse {Browse} ;# ***
translate O Cancel {Avbryt}
# ====== TODO To be translated ======
translate O Continue {Continue}
translate O Clear {Slett}
translate O Close {Lukk}
translate O Contents {Contents} ;# ***
translate O Defaults {Standard}
translate O Delete {Slett}
translate O Graph {Graf}
translate O Help {Hjelp}
translate O Import {Importer}
translate O Index {Innhold}
translate O LoadGame {Hent parti}
translate O BrowseGame {Bla gjennom parti}
translate O MergeGame {Smelt parti}
# ====== TODO To be translated ======
translate O MergeGames {Merge Games}
translate O Preview {Forhndsvis}
translate O Revert {Gjr om}
translate O Save {Lagre}
translate O Search {Sk}
translate O Stop {Stopp}
translate O Store {Lagre}
translate O Update {Oppdater}
translate O ChangeOrient {Vend vindu}
translate O ShowIcons {Show Icons} ;# ***
translate O None {Ingen}
translate O First {Frste}
translate O Current {Gjeldende}
translate O Last {Siste}

# General messages:
translate O game {parti}
translate O games {partier}
translate O move {trekk}
translate O moves {trekk}
translate O all {alle}
translate O Yes {Ja}
translate O No {Nei}
translate O Both {Begge}
translate O King {Konge}
translate O Queen {Dronning}
translate O Rook {Trn}
translate O Bishop {Lper}
translate O Knight {Springer}
translate O Pawn {Bonde}
translate O White {Hvit}
translate O Black {Sort}
translate O Player {Spiller}
translate O Rating {Rating}
translate O RatingDiff {Ratingforskjell (Hvit - Sort)}
translate O AverageRating {Average Rating} ;# ***
translate O Event {Anledning}
translate O Site {Sted}
translate O Country {Land}
translate O IgnoreColors {Overse farger}
translate O Date {Dato}
translate O EventDate {Anledningsdato}
translate O Decade {Decade} ;# ***
translate O Year {r}
translate O Month {Mned}
translate O Months {Januar Februar Mars April Mai Juni Juli August September Oktober November Desember}
translate O Days {Sn Man Tir Ons Tor Fre Lr}
translate O YearToToday {r til i dag}
translate O Result {Utfall}
translate O Round {Runde}
translate O Length {Lengde}
translate O ECOCode {ECO-kode}
translate O ECO {ECO}
translate O Deleted {Slettet}
translate O SearchResults {Sk i resultater}
translate O OpeningTheDatabase {pningsdatabase}
translate O Database {Database}
translate O Filter {Filter}
translate O noGames {ingen partier}
translate O allGames {alle partier}
translate O empty {tom}
translate O clipbase {utklippsbase}
translate O score {poeng}
translate O StartPos {Utgangsstilling}
translate O Total {Sammenlagt}
translate O readonly {skrivebeskyttet}

# Standard error messages:
translate O ErrNotOpen {This is not an open database.} ;# ***
translate O ErrReadOnly {This database is read-only; it cannot be altered.} ;# ***
translate O ErrSearchInterrupted {Search was interrupted; results are incomplete.} ;# ***

# Game information:
translate O twin {duplikat}
translate O deleted {slettet}
translate O comment {kommentar}
translate O hidden {skjult}
translate O LastMove {Siste trekk}
translate O NextMove {Neste}
translate O GameStart {Begynnelse p parti}
translate O LineStart {Begynnelse p linje}
translate O GameEnd {Slutt p parti}
translate O LineEnd {Slutt p linje}

# Player information:
translate O PInfoAll {Resultater for <b>alle</b> partier}
translate O PInfoFilter {Resultater for partier i <b>filteret</b>}
translate O PInfoAgainst {Resultater mot}
translate O PInfoMostWhite {Hyppigste pning som hvit}
translate O PInfoMostBlack {Hyppigste pning som sort}
translate O PInfoRating {Historisk rating}
translate O PInfoBio {Biografi}
translate O PInfoEditRatings {Edit Ratings} ;# ***

# Tablebase information:
translate O Draw {Uavgjort}
translate O stalemate {patt}
translate O withAllMoves {med alle trekk}
translate O withAllButOneMove {med alle trekk unntatt ett}
translate O with {med}
translate O only {kun}
translate O lose {taper} ;# tap?
translate O loses {taper}
translate O allOthersLose {alle andre taper}
translate O matesIn {setter matt i}
translate O hasCheckmated {har satt matt}
translate O longest {lengste}
translate O WinningMoves {Winning moves} ;# ***
translate O DrawingMoves {Drawing moves} ;# ***
translate O LosingMoves {Losing moves} ;# ***
translate O UnknownMoves {Unknown-result moves} ;# ***

# Tip of the day:
translate O Tip {Tips}
translate O TipAtStartup {Tips ved oppstart}

# Tree window menus:
menuText O TreeFile "Fil" 0
# ====== TODO To be translated ======
menuText O TreeFileFillWithBase "Fill Cache with base" 0 {Fill the cache file with all games in current base}
# ====== TODO To be translated ======
menuText O TreeFileFillWithGame "Fill Cache with game" 0 {Fill the cache file with current game in current base}
# ====== TODO To be translated ======
menuText O TreeFileSetCacheSize "Cache size" 0 {Set the cache size}
# ====== TODO To be translated ======
menuText O TreeFileCacheInfo "Cache info" 0 {Get info on cache usage}
menuText O TreeFileSave "Lagre hurtigbuffer" 0 {Lagrer hurtigbufferfilen (.stc)}
menuText O TreeFileFill "Fyll hurtigbuffer" 0 \
  {Fyller hurtigbufferet med de hyppigste pningsstillingene}
menuText O TreeFileBest "Idealparti" 0 {Show the best tree games list}
menuText O TreeFileGraph "Grafikk" 0 {Vis grafen for denne grenen av treet}
menuText O TreeFileCopy "Kopier treet til utklippstavlen" 0 \
  {Kopier statistikken for treet til utklippstavlen}
menuText O TreeFileClose "Lukk trevindu" 0 {Lukker trevinduet}
# ====== TODO To be translated ======
menuText O TreeMask "Mask" 0
# ====== TODO To be translated ======
menuText O TreeMaskNew "New" 0 {New mask}
# ====== TODO To be translated ======
menuText O TreeMaskOpen "Open" 0 {Open mask}
# ====== TODO To be translated ======
menuText O TreeMaskOpenRecent "Open recent" 0 {Open recent mask}
# ====== TODO To be translated ======
menuText O TreeMaskSave "Save" 0 {Save mask}
# ====== TODO To be translated ======
menuText O TreeMaskClose "Close" 0 {Close mask}
# ====== TODO To be translated ======
menuText O TreeMaskFillWithGame "Fill with game" 0 {Fill mask with game}
# ====== TODO To be translated ======
menuText O TreeMaskFillWithBase "Fill with base" 0 {Fill mask with all games in base}
# ====== TODO To be translated ======
menuText O TreeMaskInfo "Info" 0 {Show statistics for current mask}
# ====== TODO To be translated ======
menuText O TreeMaskDisplay "Display mask map" 0 {Show mask data in a tree form}
# ====== TODO To be translated ======
menuText O TreeMaskSearch "Search" 0 {Search in current mask}
menuText O TreeSort "Sorter" 0
menuText O TreeSortAlpha "Alfabetisk" 0
menuText O TreeSortECO "ECO-kode" 0
menuText O TreeSortFreq "Hyppighet" 0
menuText O TreeSortScore "Poeng" 0
menuText O TreeOpt "Innstillinger" 0
# ====== TODO To be translated ======
menuText O TreeOptSlowmode "slow mode" 0 {Slow mode for updates (high accuracy)}
# ====== TODO To be translated ======
menuText O TreeOptFastmode "Fast mode" 0 {Fast mode for updates (no move transposition)}
# ====== TODO To be translated ======
menuText O TreeOptFastAndSlowmode "Fast and slow mode" 0 {Fast mode then slow mode for updates}
# ====== TODO To be translated ======
menuText O TreeOptStartStop "Auto refreshing" 0 {Toggles automatic refreshing of the tree window}
menuText O TreeOptLock "Ls" 0 {Lser treet til nvrende database}
menuText O TreeOptTraining "Trening" 0 {Slr av/p treningsmodus}
menuText O TreeOptAutosave "Autolagre hurtigbuffer" 0 \
  {Autolagrer hurtigbufferet nr vinduet lukkes}
menuText O TreeHelp "Hjelp" 0
menuText O TreeHelpTree "Tre hjelp" 0
menuText O TreeHelpIndex "Innholdsfortegnelse" 0
translate O SaveCache {Lagre hurtigbuffer}
translate O Training {Trening}
translate O LockTree {Ls}
translate O TreeLocked {lst}
translate O TreeBest {Beste}
translate O TreeBestGames {Idealtrepartier}
# Note: the next message is the tree window title row. After editing it,
# check the tree window to make sure it lines up with the actual columns.
translate O TreeTitleRow \
  {    Move   ECO       Frequency    Score  AvElo Perf AvYear %Draws} ;# ***
translate O TreeTotal {SAMMENLAGT}
# ====== TODO To be translated ======
translate O DoYouWantToSaveFirst {Do you want to save first}
# ====== TODO To be translated ======
translate O AddToMask {Add to Mask}
# ====== TODO To be translated ======
translate O RemoveFromMask {Remove from Mask}
# ====== TODO To be translated ======
translate O AddThisMoveToMask {Add this move to Mask}
# ====== TODO To be translated ======
translate O SearchMask {Search in Mask}
# ====== TODO To be translated ======
translate O DisplayMask {Display Mask}
# ====== TODO To be translated ======
translate O Nag {Nag code}
# ====== TODO To be translated ======
translate O Marker {Marker}
# ====== TODO To be translated ======
translate O Include {Include}
# ====== TODO To be translated ======
translate O Exclude {Exclude}
# ====== TODO To be translated ======
translate O MainLine {Main line}
# ====== TODO To be translated ======
translate O Bookmark {Bookmark}
# ====== TODO To be translated ======
translate O NewLine {New line}
# ====== TODO To be translated ======
translate O ToBeVerified {To be verified}
# ====== TODO To be translated ======
translate O ToTrain {To train}
# ====== TODO To be translated ======
translate O Dubious {Dubious}
# ====== TODO To be translated ======
translate O ToRemove {To remove}
# ====== TODO To be translated ======
translate O NoMarker {No marker}
# ====== TODO To be translated ======
translate O ColorMarker {Color}
# ====== TODO To be translated ======
translate O WhiteMark {White}
# ====== TODO To be translated ======
translate O GreenMark {Green}
# ====== TODO To be translated ======
translate O YellowMark {Yellow}
# ====== TODO To be translated ======
translate O BlueMark {Blue}
# ====== TODO To be translated ======
translate O RedMark {Red}
# ====== TODO To be translated ======
translate O CommentMove {Comment move}
# ====== TODO To be translated ======
translate O CommentPosition {Comment position}
# ====== TODO To be translated ======
translate O AddMoveToMaskFirst {Add move to mask first}
# ====== TODO To be translated ======
translate O OpenAMaskFileFirst {Open a mask file first}
# ====== TODO To be translated ======
translate O Positions {Positions}
# ====== TODO To be translated ======
translate O Moves {Moves}

# Finder window:
menuText O FinderFile "Fil" 0
menuText O FinderFileSubdirs "Let i underkataloger" 0
menuText O FinderFileClose "Lukk skevindu" 0
menuText O FinderSort "Sorter" 0
menuText O FinderSortType "Type" 0
menuText O FinderSortSize "Strrelse" 0
menuText O FinderSortMod "Endret" 0
menuText O FinderSortName "Navn" 0
menuText O FinderSortPath "Sti" 0
menuText O FinderTypes "Typer" 0
menuText O FinderTypesScid "Scid-databaser" 0
menuText O FinderTypesOld "Scid-databaser i gammelt format" 0
menuText O FinderTypesPGN "PGN-filer" 0
menuText O FinderTypesEPD "EPD-filer" 0
menuText O FinderTypesRep "Repertoire-filer" 0
menuText O FinderHelp "Hjelp" 0
menuText O FinderHelpFinder "Skehjelp" 0
menuText O FinderHelpIndex "Innholdsfortegnelse" 0
translate O FileFinder {Skeverkty}
translate O FinderDir {Katalog}
translate O FinderDirs {Kataloger}
translate O FinderFiles {Filer}
translate O FinderUpDir {opp}
# ====== TODO To be translated ======
translate O FinderCtxOpen {Open}
# ====== TODO To be translated ======
translate O FinderCtxBackup {Backup}
# ====== TODO To be translated ======
translate O FinderCtxCopy {Copy}
# ====== TODO To be translated ======
translate O FinderCtxMove {Move}
# ====== TODO To be translated ======
translate O FinderCtxDelete {Delete}

# Player finder:
menuText O PListFile "Fil" 0
menuText O PListFileUpdate "Oppdater" 0
menuText O PListFileClose "Close Player Finder" 0 ;# ***
menuText O PListSort "Sorter" 0
menuText O PListSortName "Name" 0 ;# ***
menuText O PListSortElo "Elo" 0
menuText O PListSortGames "Partier" 0
menuText O PListSortOldest "Oldest" 0 ;# ***
menuText O PListSortNewest "Newest" 0 ;# ***

# Tournament finder:
menuText O TmtFile "Fil" 0
menuText O TmtFileUpdate "Oppdater" 0
menuText O TmtFileClose "Lukk turneringssker" 0
menuText O TmtSort "Sorter" 0
menuText O TmtSortDate "Dato" 0
menuText O TmtSortPlayers "Players" 0
menuText O TmtSortGames "Partier" 0
menuText O TmtSortElo "Elo" 0
menuText O TmtSortSite "Sted" 0
menuText O TmtSortEvent "Anledning" 1
menuText O TmtSortWinner "Vinner" 0
translate O TmtLimit "Listegrense"
translate O TmtMeanElo "Laveste middel-ELO"
translate O TmtNone "Ingen passende turneringer funnet."

# Graph windows:
menuText O GraphFile "Fil" 0
menuText O GraphFileColor "Lagre som farget PostScript..." 0
menuText O GraphFileGrey "Lagre som grtonet PostScript..." 0
menuText O GraphFileClose "Lukk vindu" 0
menuText O GraphOptions "Innstillinger" 0
menuText O GraphOptionsWhite "Hvit" 0
menuText O GraphOptionsBlack "Sort" 0
menuText O GraphOptionsBoth "Begge" 0
menuText O GraphOptionsPInfo "Spiller Info spiller" 0
translate O GraphFilterTitle "Filtergraf: hyppighet per 1000 partier"
# ====== TODO To be translated ======
translate O GraphAbsFilterTitle "Filter Graph: frequency of the games"
# ====== TODO To be translated ======
translate O ConfigureFilter {Configure X-Axes for Year, Rating and Moves}
# ====== TODO To be translated ======
translate O FilterEstimate "Estimate"
# ====== TODO To be translated ======
translate O TitleFilterGraph "Scid: Filter Graph"

# Analysis window:
translate O AddVariation {Legg til variasjon}
# ====== TODO To be translated ======
translate O AddAllVariations {Add All Variations}
translate O AddMove {Legg til trekk}
translate O Annotate {Annoter}
# ====== TODO To be translated ======
translate O ShowAnalysisBoard {Show analysis board}
# ====== TODO To be translated ======
translate O ShowInfo {Show engine info}
# ====== TODO To be translated ======
translate O FinishGame {Finish game}
# ====== TODO To be translated ======
translate O StopEngine {Stop engine}
# ====== TODO To be translated ======
translate O StartEngine {Start engine}
# ====== TODO To be translated ======
translate O LockEngine {Lock engine to current position}
translate O AnalysisCommand {Analysekommando}
translate O PreviousChoices {Tidligere valg}
translate O AnnotateTime {Tid mellom trekk i sekunder}
translate O AnnotateWhich {Legg til variasjoner}
translate O AnnotateAll {For trekk av begge sider}
# ====== TODO To be translated ======
translate O AnnotateAllMoves {Annotate all moves}
translate O AnnotateWhite {Kun for hvite trekk}
translate O AnnotateBlack {Kun for sorte trekk}
# ====== TODO To be translated ======
translate O AnnotateBlundersOnly {When game move is an obvious blunder}
# ====== TODO To be translated ======
translate O AnnotateBlundersOnlyScoreChange {Analysis reports blunder, with score change from/to: }
# ====== TODO To be translated ======
translate O BlundersThreshold {Threshold}
# TODO: Translate
translate O ScoreAllMoves {Score all moves}
translate O LowPriority {Low CPU priority} ;# ***
# ====== TODO To be translated ======
translate O ClickHereToSeeMoves {Click here to see moves}
# ====== TODO To be translated ======
translate O ConfigureInformant {Configure Informant}
# ====== TODO To be translated ======
translate O Informant!? {Interesting move}
# ====== TODO To be translated ======
translate O Informant? {Poor move}
# ====== TODO To be translated ======
translate O Informant?? {Blunder}
# ====== TODO To be translated ======
translate O Informant?! {Dubious move}
# ====== TODO To be translated ======
translate O Informant+= {White has a slight advantage}
# ====== TODO To be translated ======
translate O Informant+/- {White has a moderate advantage}
# ====== TODO To be translated ======
translate O Informant+- {White has a decisive advantage}
# ====== TODO To be translated ======
translate O Informant++- {The game is considered won}
# ====== TODO To be translated ======
translate O Book {Book}
# ====== TODO To be translated ======
translate O OtherBookMoves {Opponent's book}
# ====== TODO To be translated ======
translate O OtherBookMovesTooltip {Moves to which the opponent has a reply}

# Analysis Engine open dialog:
translate O EngineList {Liste over analysemotorer}
translate O EngineName {Navn}
translate O EngineCmd {Kommandolinje}
translate O EngineArgs {Parametre}
translate O EngineDir {Katalog}
translate O EngineElo {Elo}
translate O EngineTime {Dato}
translate O EngineNew {Ny}
translate O EngineEdit {Rediger}
translate O EngineRequired {Fete felter er ndvendige, de vrige er valgfrie}

# Stats window menus:
menuText O StatsFile "Fil" 0
menuText O StatsFilePrint "Skriv til fil..." 0
menuText O StatsFileClose "Lukk vindu" 0
menuText O StatsOpt "Innstillinger" 0

# PGN window menus:
menuText O PgnFile "Fil" 0
menuText O PgnFileCopy "Copy Game to Clipboard" 0 ;# ***
menuText O PgnFilePrint "Skriv til fil..." 0
menuText O PgnFileClose "Lukk PGN-vindu" 0
menuText O PgnOpt "Vis" 0
menuText O PgnOptColor "Vis farger" 0
menuText O PgnOptShort "Kort (3 linjer) header" 0
menuText O PgnOptSymbols "Symbolnotasjon" 0
menuText O PgnOptIndentC "Rykk inn kommentarer" 0
menuText O PgnOptIndentV "Rykk inn variasjoner" 0
menuText O PgnOptColumn "Bruk kolonner (ett trekk per linje)" 0
menuText O PgnOptSpace "Mellomrom etter trekknummer" 0
menuText O PgnOptStripMarks "Fjern fargekoder" 0
menuText O PgnOptBoldMainLine "Use Bold Text for Main Line Moves" 4 ;# ***
menuText O PgnColor "Farger" 0
menuText O PgnColorHeader "Header..." 0
menuText O PgnColorAnno "Annotasjoner..." 0
menuText O PgnColorComments "Kommentarer..." 0
menuText O PgnColorVars "Variasjoner..." 0
menuText O PgnColorBackground "Bakgrunn..." 0
# ====== TODO To be translated ======
menuText O PgnColorMain "Main line..." 0
# ====== TODO To be translated ======
menuText O PgnColorCurrent "Current move background..." 1
# ====== TODO To be translated ======
menuText O PgnColorNextMove "Next move background..." 0
menuText O PgnHelp "Hjelp" 0
menuText O PgnHelpPgn "PGN-hjelp" 0
menuText O PgnHelpIndex "Innholdsfortegnelse" 0
translate O PgnWindowTitle {Game Notation - game %u} ;# ***

# Crosstable window menus:
menuText O CrosstabFile "Fil" 0
menuText O CrosstabFileText "Skriv til tekstfil..." 0
menuText O CrosstabFileHtml "Skriv til HTML-fil..." 0
menuText O CrosstabFileLaTeX "Skriv til LaTeX-fil..." 0
menuText O CrosstabFileClose "Lukk krysstabellvindu" 0
menuText O CrosstabEdit "Rediger" 0
menuText O CrosstabEditEvent "Anledning" 0
menuText O CrosstabEditSite "Sted" 0
menuText O CrosstabEditDate "Dato" 0
menuText O CrosstabOpt "Vis" 0
menuText O CrosstabOptAll "Alle-mot-alle" 0
menuText O CrosstabOptSwiss "Sveitsisk" 0
menuText O CrosstabOptKnockout "Kun vinnere" 0
menuText O CrosstabOptAuto "Auto" 0
menuText O CrosstabOptAges "Aldre i r" 0
menuText O CrosstabOptNats "Nasjonaliteter" 0
menuText O CrosstabOptRatings "Ratinger" 0
menuText O CrosstabOptTitles "Titler" 0
menuText O CrosstabOptBreaks "Poengfordel" 0
menuText O CrosstabOptDeleted "Include deleted games" 8 ;# ***
menuText O CrosstabOptColors "Farger (kun sveitsisk)" 0
menuText O CrosstabOptColumnNumbers "Nummererte kolonner (kun alle-mot-alle-tabeller)" 0
menuText O CrosstabOptGroup "Gruppepoeng" 0
menuText O CrosstabSort "Sorter" 0
menuText O CrosstabSortName "Navn" 0
menuText O CrosstabSortRating "Rating" 0
menuText O CrosstabSortScore "Poeng" 0
menuText O CrosstabColor "Farge" 0
menuText O CrosstabColorPlain "Ren tekst" 0
menuText O CrosstabColorHyper "Hypertekst" 0
menuText O CrosstabHelp "Hjelp" 0
menuText O CrosstabHelpCross "Krysstabell hjelp" 0
menuText O CrosstabHelpIndex "Innholdsfortegnelse" 0
translate O SetFilter {Sett filter}
translate O AddToFilter {Legg til i filter}
translate O Swiss {Sveitsisk}
translate O Category {Category} ;# ***

# Opening report window menus:
menuText O OprepFile "Fil" 0
menuText O OprepFileText "Skriv til tekstfil..." 0
menuText O OprepFileHtml "Skriv til HTML-fil..." 0
menuText O OprepFileLaTeX "Skriv til LaTeX-fil..." 0
menuText O OprepFileOptions "Innstillinger..." 0
menuText O OprepFileClose "Lukk rapport-vindu" 0
menuText O OprepFavorites "Favorites" 1 ;# ***
menuText O OprepFavoritesAdd "Add Report..." 0 ;# ***
menuText O OprepFavoritesEdit "Edit Report Favorites..." 0 ;# ***
menuText O OprepFavoritesGenerate "Generate Reports..." 0 ;# ***
menuText O OprepHelp "Hjelp" 0
menuText O OprepHelpReport "pningsrapport hjelp" 0
menuText O OprepHelpIndex "Innholdsfortegnelse" 0

# Repertoire editor:
menuText O RepFile "Fil" 0
menuText O RepFileNew "Ny" 0
menuText O RepFileOpen "pne..." 0
menuText O RepFileSave "Lagre..." 0
menuText O RepFileSaveAs "Lagre som..." 0
menuText O RepFileClose "Lukk vindu" 0
menuText O RepEdit "Rediger" 0
menuText O RepEditGroup "Legg til gruppe" 0
menuText O RepEditInclude "Inkluder" 0
menuText O RepEditExclude "Ekskluder" 0
menuText O RepView "Vis" 0
menuText O RepViewExpand "Utvid alle grupper" 0
menuText O RepViewCollapse "Trekk sammen alle grupper" 0
menuText O RepSearch "Sk" 0
menuText O RepSearchAll "Alle i reportoir..." 0
menuText O RepSearchDisplayed "Kun viste linjer..." 0
menuText O RepHelp "Hjelp" 0
menuText O RepHelpRep "Repertoir hjelp" 0
menuText O RepHelpIndex "Innholdsfortegnelse" 0
translate O RepSearch "Repertoirsk"
translate O RepIncludedLines "inkluderte linjer"
translate O RepExcludedLines "ekskluderte linjer"
translate O RepCloseDialog {Gjeldende reportoir har ulagrede endringer.

Vil du virkelig fortsette og miste disse endringene?
}

# Header search:
translate O HeaderSearch {Headersk}
translate O EndSideToMove {Side to move at end of game} ;# ***
translate O GamesWithNoECO {Partier uten ECO?}
translate O GameLength {Partilengde}
translate O FindGamesWith {Finn partier merket med...}
translate O StdStart {Vanlig utgangsstilling}
translate O Promotions {Forfremmelser}
translate O Comments {Kommentarer}
translate O Variations {Variasjoner}
translate O Annotations {Annotasjoner}
translate O DeleteFlag {Slettet}
translate O WhiteOpFlag {Hvit pning}
translate O BlackOpFlag {Sort pning}
translate O MiddlegameFlag {Midtspill}
translate O EndgameFlag {Sluttspill}
translate O NoveltyFlag {Avvik}
translate O PawnFlag {Bondestruktur}
translate O TacticsFlag {Taktikk}
translate O QsideFlag {Spill p dronningsiden}
translate O KsideFlag {Spill p kongesiden}
translate O BrilliancyFlag {Brillians}
translate O BlunderFlag {Tabbe}
translate O UserFlag {Bruker}
translate O PgnContains {PGN inneholder tekst}
# ====== TODO To be translated ======
translate O Annotator {Annotator}
# ====== TODO To be translated ======
translate O Cmnts {Annotated games only}

# Game list window:
translate O GlistNumber {Nummer}
translate O GlistWhite {Hvit}
translate O GlistBlack {Sort}
translate O GlistWElo {H-Elo}
translate O GlistBElo {S-Elo}
translate O GlistEvent {Anledning}
translate O GlistSite {Sted}
translate O GlistRound {Runde}
translate O GlistDate {Dato}
translate O GlistYear {r}
translate O GlistEDate {AnledningDato}
translate O GlistResult {Resultat}
translate O GlistLength {Lengde}
translate O GlistCountry {Land}
translate O GlistECO {ECO}
translate O GlistOpening {pning}
translate O GlistEndMaterial {Slutt-kvalitet}
translate O GlistDeleted {Slettet}
translate O GlistFlags {Flagg}
translate O GlistVars {Variasjoner}
translate O GlistComments {Kommentarer}
translate O GlistAnnos {Annotasjoner}
translate O GlistStart {Start}
translate O GlistGameNumber {Parti nummer}
# ====== TODO To be translated ======
translate O GlistAverageElo {Average Elo}
# ====== TODO To be translated ======
translate O GlistRating {Rating}
translate O GlistFindText {Finn tekst}
translate O GlistMoveField {Trekk}
translate O GlistEditField {Still inn}
translate O GlistAddField {Legg til}
translate O GlistDeleteField {Fjern}
translate O GlistWidth {Bredde}
translate O GlistAlign {Justering}
# ====== TODO To be translated ======
translate O GlistAlignL {Align: left}
# ====== TODO To be translated ======
translate O GlistAlignR {Align: right}
# ====== TODO To be translated ======
translate O GlistAlignC {Align: center}
translate O GlistColor {Farge}
translate O GlistSep {Skilletegn}
# ====== TODO To be translated ======
translate O GlistCurrentSep {-- Current --}
# ====== TODO To be translated ======
translate O GlistNewSort {New}
# ====== TODO To be translated ======
translate O GlistAddToSort {Add}
# ====== TODO To be translated ======
translate O GsortSort {Sort...}
# ====== TODO To be translated ======
translate O GsortDate {Date}
# ====== TODO To be translated ======
translate O GsortYear {Year}
# ====== TODO To be translated ======
translate O GsortEvent {Event}
# ====== TODO To be translated ======
translate O GsortSite {Site}
# ====== TODO To be translated ======
translate O GsortRound {Round}
# ====== TODO To be translated ======
translate O GsortWhiteName {White Name}
# ====== TODO To be translated ======
translate O GsortBlackName {Black Name}
# ====== TODO To be translated ======
translate O GsortECO {ECO}
# ====== TODO To be translated ======
translate O GsortResult {Result}
# ====== TODO To be translated ======
translate O GsortMoveCount {Move Count}
# ====== TODO To be translated ======
translate O GsortAverageElo {Average Elo}
# ====== TODO To be translated ======
translate O GsortCountry {Country}
# ====== TODO To be translated ======
translate O GsortDeleted {Deleted}
# ====== TODO To be translated ======
translate O GsortEventDate {Event Date}
# ====== TODO To be translated ======
translate O GsortWhiteElo {White Elo}
# ====== TODO To be translated ======
translate O GsortBlackElo {Black Elo}
# ====== TODO To be translated ======
translate O GsortComments {Comments}
# ====== TODO To be translated ======
translate O GsortVariations {Variations}
# ====== TODO To be translated ======
translate O GsortNAGs {NAGs}
# ====== TODO To be translated ======
translate O GsortAscending {Ascending}
# ====== TODO To be translated ======
translate O GsortDescending {Descending}
# ====== TODO To be translated ======
translate O GsortAdd {Add}
# ====== TODO To be translated ======
translate O GsortStore {Store}
# ====== TODO To be translated ======
translate O GsortLoad {Load}
# ====== TODO To be translated ======
translate O GlistRemoveThisGameFromFilter  {Remove this game from Filter}
# ====== TODO To be translated ======
translate O GlistRemoveGameAndAboveFromFilter  {Remove game (and all above it) from Filter}
# ====== TODO To be translated ======
translate O GlistRemoveGameAndBelowFromFilter  {Remove game (and all below it) from Filter}
# ====== TODO To be translated ======
translate O GlistDeleteGame {(Un)Delete this game} 
# ====== TODO To be translated ======
translate O GlistDeleteAllGames {Delete all games in filter} 
# ====== TODO To be translated ======
translate O GlistUndeleteAllGames {Undelete all games in filter} 
# ====== TODO To be translated ======
translate O GlistMergeGameInBase {Merge Game in other base} 

# Maintenance window:
translate O DatabaseName {Databasenavn:}
translate O TypeIcon {Ikon:}
translate O NumOfGames {Partier:}
translate O NumDeletedGames {Slettede partier:}
translate O NumFilterGames {Partier i filter:}
translate O YearRange {Til/fra r:}
translate O RatingRange {Til/fra rating:}
translate O Description {Description} ;# ***
translate O Flag {Flagg}
# ====== TODO To be translated ======
translate O CustomFlags {Custom flags}
translate O DeleteCurrent {Slett gjeldende parti}
translate O DeleteFilter {Slett filtrerte partier}
translate O DeleteAll {Slett alle partier}
translate O UndeleteCurrent {Gjenopprett gjeldende parti}
translate O UndeleteFilter {Gjenopprett filtrerte partier}
translate O UndeleteAll {Gjenopprett alle partier}
translate O DeleteTwins {Slett duplikatpartier}
translate O MarkCurrent {Merk gjeldende parti}
translate O MarkFilter {Merk filtrerte partier}
translate O MarkAll {Merk alle partier}
translate O UnmarkCurrent {Fjern merking p gjeldende parti}
translate O UnmarkFilter {Fjern merking p filtrerte partier}
translate O UnmarkAll {Fjern merking p alle partier}
translate O Spellchecking {Stavekontroll}
translate O Players {Spillere}
translate O Events {Anledninger}
translate O Sites {Steder}
translate O Rounds {Runder}
translate O DatabaseOps {Databasebehandling}
translate O ReclassifyGames {ECO-klassifiser partier}
translate O CompactDatabase {Komprimer database}
translate O SortDatabase {Sorter database}
translate O AddEloRatings {Legg til ELO-ratinger}
translate O AutoloadGame {Start med parti nummer}
translate O StripTags {Fjern PGN-merker}
translate O StripTag {Fjern merke}
translate O Cleaner {Opprydding}
translate O CleanerHelp {
Scid-opprydding vil utfre alle handlinger du velger fra listen under p gjeldende database.

Gjeldende innstillinger i ECO-klassifiseringen og duplikatslettingdialogene vil virke inn om du velger disse funksjonene.
}
translate O CleanerConfirm {
Nr oppryddingen er i gang kan den ikke avbrytes!

Dette kan ta lang tid p en stor databse, avhengig av funksjonene du har valgt og disses gjeldende innstillinger.

Er du sikker p at du vil starte vedlikeholdsfunksjonene du har valgt?
}
# ====== TODO To be translated ======
translate O TwinCheckUndelete {to flip; "u" undeletes both)}
# ====== TODO To be translated ======
translate O TwinCheckprevPair {Previous pair}
# ====== TODO To be translated ======
translate O TwinChecknextPair {Next pair}
# ====== TODO To be translated ======
translate O TwinChecker {Scid: Twin game checker}
# ====== TODO To be translated ======
translate O TwinCheckTournament {Games in tournament:}
# ====== TODO To be translated ======
translate O TwinCheckNoTwin {No twin  }
# ====== TODO To be translated ======
translate O TwinCheckNoTwinfound {No twin was detected for this game.\nTo show twins using this window, you must first use the "Delete twin games..." function. }
# ====== TODO To be translated ======
translate O TwinCheckTag {Share tags...}
# ====== TODO To be translated ======
translate O TwinCheckFound1 {Scid found $result twin games}
# ====== TODO To be translated ======
translate O TwinCheckFound2 { and set their delete flags}
# ====== TODO To be translated ======
translate O TwinCheckNoDelete {There are no games in this database to delete.}
# ====== TODO To be translated ======
translate O TwinCriteria1 { Your settings for finding twin games are potentially likely to\ncause non-twin games with similar moves to be marked as twins.}
# ====== TODO To be translated ======
translate O TwinCriteria2 {It is recommended that if you select "No" for "same moves", you should select "Yes" for the colors, event, site, round, year and month settings.\nDo you want to continue and delete twins anyway? }
# ====== TODO To be translated ======
translate O TwinCriteria3 {It is recommended that you specify "Yes" for at least two of the "same site", "same round" and "same year" settings.\nDo you want to continue and delete twins anyway?}
# ====== TODO To be translated ======
translate O TwinCriteriaConfirm {Scid: Confirm twin settings}
# ====== TODO To be translated ======
translate O TwinChangeTag "Change the following game tags:\n\n"
# ====== TODO To be translated ======
translate O AllocRatingDescription "This command will use the current spellcheck file to add Elo ratings to games in this database. Wherever a player has no currrent rating but his/her rating at the time of the game is listed in the spellcheck file, that rating will be added."
# ====== TODO To be translated ======
translate O RatingOverride "Overwrite existing non-zero ratings?"
# ====== TODO To be translated ======
translate O AddRatings "Add ratings to:"
# ====== TODO To be translated ======
translate O AddedRatings {Scid added $r Elo ratings in $g games.}
# ====== TODO To be translated ======
translate O NewSubmenu "New submenu"

# Comment editor:
translate O AnnotationSymbols  {Notasjonssymboler:}
translate O Comment {Kommentar:}
translate O InsertMark {Insert mark} ;# ***
translate O InsertMarkHelp {
Insert/remove mark: Select color, type, square.
Insert/remove arrow: Right-click two squares.
} ;# ***

# Nag buttons in comment editor:
translate O GoodMove {Good move} ;# ***
translate O PoorMove {Poor move} ;# ***
translate O ExcellentMove {Excellent move} ;# ***
translate O Blunder {Tabbe}
translate O InterestingMove {Interesting move} ;# ***
translate O DubiousMove {Dubious move} ;# ***
translate O WhiteDecisiveAdvantage {White has a decisive advantage} ;# ***
translate O BlackDecisiveAdvantage {Black has a decisive advantage} ;# ***
translate O WhiteClearAdvantage {White has a clear advantage} ;# ***
translate O BlackClearAdvantage {Black has a clear advantage} ;# ***
translate O WhiteSlightAdvantage {White has a slight advantage} ;# ***
translate O BlackSlightAdvantage {Black has a slight advantage} ;# ***
translate O Equality {Equality} ;# ***
translate O Unclear {Unclear} ;# ***
translate O Diagram {Diagram} ;# ***

# Board search:
translate O BoardSearch {Stillingsk}
translate O FilterOperation {Operasjoner p gjeldende filter:}
translate O FilterAnd {AND (Kun p filter)}
translate O FilterOr {OR (Legg til filter)}
translate O FilterIgnore {IGNORE (Nullstill filter)}
translate O SearchType {Sketype:}
translate O SearchBoardExact {Nyaktig stilling (alle brikker p samme felt)}
translate O SearchBoardPawns {Bnder (samme kvalitet, alle bnder p samme felt)}
translate O SearchBoardFiles {Kolonner (samme kvalitet, alle bnder p samme kolonner)}
translate O SearchBoardAny {Alle (samme kvalitet, bnder og brikker hvor som helst)}
# ====== TODO To be translated ======
translate O SearchInRefDatabase { Search in base }
translate O LookInVars {Sk i variasjoner}

# Material search:
translate O MaterialSearch {Kvalitetssk}
translate O Material {Kvalitet}
translate O Patterns {Mnstre}
translate O Zero {Null}
translate O Any {Hvilke som helst}
translate O CurrentBoard {Gjeldende stilling}
translate O CommonEndings {Vanlige sluttspill}
translate O CommonPatterns {Vanlige mnstre}
translate O MaterialDiff {Kvalitetsforskjell}
translate O squares {felt}
translate O SameColor {Samme farge}
translate O OppColor {Motsatt farge}
translate O Either {Begge}
translate O MoveNumberRange {Fra/til trekk nummer}
translate O MatchForAtLeast {Treff i minst}
translate O HalfMoves {halvtrekk}

# Common endings in material search:
translate O EndingPawns {Pawn endings} ;# ***
translate O EndingRookVsPawns {Rook vs. Pawn(s)} ;# ***
translate O EndingRookPawnVsRook {Rook and 1 Pawn vs. Rook} ;# ***
translate O EndingRookPawnsVsRook {Rook and Pawn(s) vs. Rook} ;# ***
translate O EndingRooks {Rook vs. Rook endings} ;# ***
translate O EndingRooksPassedA {Rook vs. Rook endings with a passed a-pawn} ;# ***
translate O EndingRooksDouble {Double Rook endings} ;# ***
translate O EndingBishops {Bishop vs. Bishop endings} ;# ***
translate O EndingBishopVsKnight {Bishop vs. Knight endings} ;# ***
translate O EndingKnights {Knight vs. Knight endings} ;# ***
translate O EndingQueens {Queen vs. Queen endings} ;# ***
translate O EndingQueenPawnVsQueen {Queen and 1 Pawn vs. Queen} ;# ***
translate O BishopPairVsKnightPair {Two Bishops vs. Two Knights middlegame} ;# ***

# Common patterns in material search:
translate O PatternWhiteIQP {White IQP} ;# ***
translate O PatternWhiteIQPBreakE6 {White IQP: d4-d5 break vs. e6} ;# ***
translate O PatternWhiteIQPBreakC6 {White IQP: d4-d5 break vs. c6} ;# ***
translate O PatternBlackIQP {Black IQP} ;# ***
translate O PatternWhiteBlackIQP {White IQP vs. Black IQP} ;# ***
translate O PatternCoupleC3D4 {White c3+d4 Isolated Pawn Couple} ;# ***
translate O PatternHangingC5D5 {Black Hanging Pawns on c5 and d5} ;# ***
translate O PatternMaroczy {Maroczy Center (with Pawns on c4 and e4)} ;# ***
translate O PatternRookSacC3 {Rook Sacrifice on c3} ;# ***
translate O PatternKc1Kg8 {O-O-O vs. O-O (Kc1 vs. Kg8)} ;# ***
translate O PatternKg1Kc8 {O-O vs. O-O-O (Kg1 vs. Kc8)} ;# ***
translate O PatternLightFian {Light-Square Fianchettos (Bishop-g2 vs. Bishop-b7)} ;# ***
translate O PatternDarkFian {Dark-Square Fianchettos (Bishop-b2 vs. Bishop-g7)} ;# ***
translate O PatternFourFian {Four Fianchettos (Bishops on b2,g2,b7,g7)} ;# ***

# Game saving:
translate O Today {I dag}
translate O ClassifyGame {Klassifiser parti}

# Setup position:
translate O EmptyBoard {Tm brett}
translate O InitialBoard {Utgangsstilling}
translate O SideToMove {Side i trekk}
translate O MoveNumber {Trekk nummer}
translate O Castling {Rokkade}
translate O EnPassantFile {En Passant-kolonne}
translate O ClearFen {Slett FEN}
translate O PasteFen {Lim inn FEN}
# ====== TODO To be translated ======
translate O SaveAndContinue {Save and continue}
# ====== TODO To be translated ======
translate O DiscardChangesAndContinue {Discard changes\nand continue}
# ====== TODO To be translated ======
translate O GoBack {Go back}

# Replace move dialog:
translate O ReplaceMove {Erstatt trekk}
translate O AddNewVar {Legg til ny variasjon}
# ====== TODO To be translated ======
translate O NewMainLine {New Main Line}
translate O ReplaceMoveMessage {Et trekk eksisterer allerede her.

Du kan erstatte det og slette alle flgende trekk, eller du kan legge det til som en variasjon.

(Du kan unng denne meldingen i fremtiden ved  sl av Spr fr trekk erstattes-innstillingen i Innstillinger:Trekk-menyen.)}

# Make database read-only dialog:
translate O ReadOnlyDialog {Hvis du skrivebeskytter denne databasen tillates ikke lenger endringer p den. Ingen partier kan lagres eller erstattes, og ingen sletteflagg kan endres. All sortering eller ECO-klassifisering vil vre midlertidig.

Du kan enkelt sl av skrivebeskyttelsen p databasen ved  lukke og gjenpne den.

Vil du virkelig skrivebeskytte denne databasen?}

# Clear game dialog:
translate O ClearGameDialog {Dette partiet har blitt endret.

Vil du virkelig forkaste endringene som er gjort?
}

# Exit dialog:
translate O ExitDialog {Vil du virkelig avslutte Scid?}
translate O ExitUnsaved {Flgende baser har ulagrede endringer i partier. Hvis du avslutter n vil disse endringene g tapt.}

# Import window:
translate O PasteCurrentGame {Lim inn gjeldende parti}
translate O ImportHelp1 {Skriv eller lim inn et PGN-parti i feltet over.}
translate O ImportHelp2 {Feil i importen vil vises her.}
# ====== TODO To be translated ======
translate O OverwriteExistingMoves {Overwrite existing moves ?}

# ECO Browser:
translate O ECOAllSections {alle ECO-deler}
translate O ECOSection {ECO-del}
translate O ECOSummary {Sammendrag for}
translate O ECOFrequency {Hyppighet eller underkoder for}

# Opening Report:
translate O OprepTitle {pningsrapport}
translate O OprepReport {Rapport}
translate O OprepGenerated {Generert av}
translate O OprepStatsHist {Statistikk og historie}
translate O OprepStats {Statistikk}
translate O OprepStatAll {Alle rapporterte partier}
translate O OprepStatBoth {Begge med rating}
translate O OprepStatSince {Siden}
translate O OprepOldest {Eldste partier}
translate O OprepNewest {Nyeste partier}
translate O OprepPopular {Trend}
translate O OprepFreqAll {Frekvens i r:   }
translate O OprepFreq1   {Det siste ret: }
translate O OprepFreq5   {De siste 5 rene: }
translate O OprepFreq10  {De siste 10 rene: }
translate O OprepEvery {hvert %u parti}
translate O OprepUp {opp %u%s fra alle r}
translate O OprepDown {ned %u%s fra alle r}
translate O OprepSame {ingen endring fra alle r}
translate O OprepMostFrequent {Hyppigste spillere}
translate O OprepMostFrequentOpponents {Most frequent opponents} ;# ***
translate O OprepRatingsPerf {Ratinger og resultater}
translate O OprepAvgPerf {Middelratinger og -resultater}
translate O OprepWRating {Hvit rating}
translate O OprepBRating {Sort rating}
translate O OprepWPerf {Hvite resultater}
translate O OprepBPerf {Sorte resultater}
translate O OprepHighRating {Parti med hyeste gjennomsnittsrating}
translate O OprepTrends {Resultattrend}
translate O OprepResults {Resultatlengde og -hyppighet}
translate O OprepLength {Partilengde}
translate O OprepFrequency {Hyppighet}
translate O OprepWWins {Hvit vinner: }
translate O OprepBWins {Sort vinner: }
translate O OprepDraws {Uavgjort:      }
translate O OprepWholeDB {hele databasen}
translate O OprepShortest {Korteste seire}
translate O OprepMovesThemes {Trekk og temaer}
translate O OprepMoveOrders {Trekkrekkeflger til rapportert stilling}
translate O OprepMoveOrdersOne \
  {Det var kun en trekkrekkeflge som frte til denne stillingen:}
translate O OprepMoveOrdersAll \
  {Det var %u trekkrekkeflger som frte til denne stillingen:}
translate O OprepMoveOrdersMany \
  {There were %u move orders reaching this position. The top %u are:}
translate O OprepMovesFrom {Trekk fra rapportert stilling}
translate O OprepMostFrequentEcoCodes {Most frequent ECO codes} ;# ***
translate O OprepThemes {Stillingstemaer}
translate O OprepThemeDescription {Frequency of themes in the first %u moves of each game} ;# ***
translate O OprepThemeSameCastling {Rokkade til samme side}
translate O OprepThemeOppCastling {Rokkade til motsatt side}
translate O OprepThemeNoCastling {Ingen konger rokert}
translate O OprepThemeKPawnStorm {Bondestorm p kongesiden}
translate O OprepThemeQueenswap {Byttede dronninger}
translate O OprepThemeWIQP {White Isolated Queen Pawn} ;# ***
translate O OprepThemeBIQP {Black Isolated Queen Pawn} ;# ***
translate O OprepThemeWP567 {Hvit bonde p rekke 5/6/7}
translate O OprepThemeBP234 {Sort bonde p rekke 2/3/4}
translate O OprepThemeOpenCDE {pen c/d/e-kolonne}
translate O OprepTheme1BishopPair {Kun en side har to lpere}
translate O OprepEndgames {Sluttspill}
translate O OprepReportGames {Rapporterte partier}
translate O OprepAllGames    {Alle partier}
translate O OprepEndClass {Materiale i sluttspillet}
translate O OprepTheoryTable {Teoritabell}
translate O OprepTableComment {Generert fra de %u hyest ratede partiene.}
translate O OprepExtraMoves {Ytterligere trekk notert i teoritabellen}
translate O OprepMaxGames {Maksimalt antall partier i teoritabellen}
translate O OprepViewHTML {View HTML} ;# ***
translate O OprepViewLaTeX {View LaTeX} ;# ***

# Player Report:
translate O PReportTitle {Player Report} ;# ***
translate O PReportColorWhite {with the White pieces} ;# ***
translate O PReportColorBlack {with the Black pieces} ;# ***
translate O PReportMoves {after %s} ;# ***
translate O PReportOpenings {Openings} ;# ***
translate O PReportClipbase {Empty clipbase and copy matching games to it} ;# ***

# Piece Tracker window:
translate O TrackerSelectSingle {Venstre museknapp merker denne brikken}
translate O TrackerSelectPair {Venstre museknapp merker denne brikken; hyre merker alle brikker av denne typen.}
translate O TrackerSelectPawn {Venstre museknapp merker denne brikken; hyre merker alle brikker av denne typen.}
translate O TrackerStat {Statistikk}
translate O TrackerGames {% partier med trekk til felt}
translate O TrackerTime {% tid p hvert felt}
translate O TrackerMoves {Trekk}
translate O TrackerMovesStart {Oppgi trekket hvor sporingen skal begynne.}
translate O TrackerMovesStop {Oppgi trekket hvor sporingen skal stoppe.}

# Game selection dialogs:
translate O SelectAllGames {Alle partier i databasen}
translate O SelectFilterGames {Kun partier i filteret}
translate O SelectTournamentGames {Kun partier i gjeldende turnering}
translate O SelectOlderGames {Kun eldre partier}

# Delete Twins window:
translate O TwinsNote {For  vre duplikater m to partier minst ha de samme to spillerene, og kriterier du kan angi under. Nr to duplikater finnes blir det korteste partiet slettet. Tips: Det er best  kjre en stavekontroll fr duplikatsjekken, da det forbedrer sket.}
translate O TwinsCriteria {Kriterier: Duplikater m ha...}
translate O TwinsWhich {Undersk hvilke partier}
translate O TwinsColors {Spillere samme farge?}
translate O TwinsEvent {Samme anledning?}
translate O TwinsSite {Samme sted?}
translate O TwinsRound {Samme runde?}
translate O TwinsYear {Samme r?}
translate O TwinsMonth {Samme mned?}
translate O TwinsDay {Samme dag?}
translate O TwinsResult {Samme utfall?}
translate O TwinsECO {Samme ECO-kode?}
translate O TwinsMoves {Samme trekk?}
translate O TwinsPlayers {Sammenlign spillernavn:}
translate O TwinsPlayersExact {Nyaktig like}
translate O TwinsPlayersPrefix {Kun frste 4 bokstaver}
translate O TwinsWhen {Nr duplikatpartier slettes}
translate O TwinsSkipShort {Overse alle partier kortere enn 5 trekk?}
translate O TwinsUndelete {Gjenopprett alle partier frst?}
translate O TwinsSetFilter {Sett filter til alle slettede duplikatpartier?}
translate O TwinsComments {Behold alltid partier med kommentarer?}
translate O TwinsVars {Behold alltid partier med variasjoner?}
translate O TwinsDeleteWhich {Slett hvilket parti:}
translate O TwinsDeleteShorter {Korteste parti}
translate O TwinsDeleteOlder {Laveste partinummer}
translate O TwinsDeleteNewer {Hyeste partinummer}
translate O TwinsDelete {Slett partier}

# Name editor window:
translate O NameEditType {Navnetype som skal redigeres}
translate O NameEditSelect {Partier som skal redigeres}
translate O NameEditReplace {Erstatt}
translate O NameEditWith {med}
translate O NameEditMatches {Treff: Trykk Ctrl+1 til Ctrl+9 for  velge}
# ====== TODO To be translated ======
translate O CheckGames {Check games}
# ====== TODO To be translated ======
translate O CheckGamesWhich {Check games}
# ====== TODO To be translated ======
translate O CheckAll {All games}
# ====== TODO To be translated ======
translate O CheckSelectFilterGames {Only games in filter}

# Classify window:
translate O Classify {Klassifiser}
translate O ClassifyWhich {ECO-klassifiser hvilke partier}
translate O ClassifyAll {Alle partier (overskriv gamle ECO-koder)}
translate O ClassifyYear {Aller partier det siste ret}
translate O ClassifyMonth {Alle partier den siste mneden}
translate O ClassifyNew {Kun partier uten ECO-kode}
translate O ClassifyCodes {ECO-koder som skal brukes}
translate O ClassifyBasic {Kun standardkoder ("B12", ...)}
translate O ClassifyExtended {Scid-utvidet ("B12j", ...)}

# Compaction:
translate O NameFile {Navnefil}
translate O GameFile {Partifil}
translate O Names {Navn}
translate O Unused {Ubrukte}
translate O SizeKb {Strrelse (kb)}
translate O CurrentState {Nvrende}
translate O AfterCompaction {Etter komprimering}
translate O CompactNames {Komrimer navnefil}
translate O CompactGames {Komprimer partifil}
# ====== TODO To be translated ======
translate O NoUnusedNames "There are no unused names, so the name file is already fully compacted."
# ====== TODO To be translated ======
translate O NoUnusedGames "The game file is already fully compacted."
# ====== TODO To be translated ======
translate O NameFileCompacted {The name file for the database "[file tail [sc_base filename]]" was compacted.}
# ====== TODO To be translated ======
translate O GameFileCompacted {The game file for the database "[file tail [sc_base filename]]" was compacted.}

# Sorting:
translate O SortCriteria {Kriterier}
translate O AddCriteria {Legg til kriterie}
translate O CommonSorts {Vanlige sorteringer}
translate O Sort {Sorter}

# Exporting:
# These lines do not use the excact notation of the original english.tcl, because this would cause inconsistency with the PGN window menus
translate O AddToExistingFile {Legg partier til en eksisterende fil}
translate O ExportComments {Eksporter kommentarer}
translate O ExportVariations {Eksporter variasjoner}
translate O IndentComments {Rykk inn kommentarer}
translate O IndentVariations {Rykk inn variasjoner}
translate O ExportColumnStyle {Bruk kolonner (ett trekk per linje)}
translate O ExportSymbolStyle {Symbolnotasjoner}
translate O ExportStripMarks {Fjern alle fargekoder og piler fra kommentarer?}

# Goto game/move dialogs:
translate O LoadGameNumber {Angi partinummer som skal lastes inn:}
translate O GotoMoveNumber {G til trekk nummer:}

# Copy games dialog:
translate O CopyGames {Kopier partier}
translate O CopyConfirm {
Vil du virkelig kopiere de [::utils::thousands $nGamesToCopy] filtrerte partiene fra "$fromName"
 til databasen "$targetName"?
}
translate O CopyErr {Kan ikke kopiere partiene}
translate O CopyErrSource {kildedatabasen}
translate O CopyErrTarget {mldatabasen}
translate O CopyErrNoGames {har ingen partier i sitt filter}
translate O CopyErrReadOnly {er skrivebeskyttet}
translate O CopyErrNotOpen {er ikke pnet}

# Colors:
translate O LightSquares {Lyse felt}
translate O DarkSquares {Mrke felt}
translate O SelectedSquares {Merkede felt}
translate O SuggestedSquares {Foresltte trekkfelt}
translate O WhitePieces {Hvite brikker}
translate O BlackPieces {Sorte brikker}
translate O WhiteBorder {Hvit ramme}
translate O BlackBorder {Sort ramme}

# Novelty window:
translate O FindNovelty {Finn avvik}
translate O Novelty {Avvik}
translate O NoveltyInterrupt {Avvikssk avbrutt}
translate O NoveltyNone {Ingen avvik ble funnet i dette partiet}
translate O NoveltyHelp {
Scid vil finne det frste trekket i det gjeldende partiet som frer til en stilling som ikke finnes i den valgte databasen eller i ECO-pningsboken.}

# Sounds configuration:
translate O SoundsFolder {Sound Files Folder} ;# ***
translate O SoundsFolderHelp {The folder should contain the files King.wav, a.wav, 1.wav, etc} ;# ***
translate O SoundsAnnounceOptions {Move Announcement Options} ;# ***
translate O SoundsAnnounceNew {Announce new moves as they are made} ;# ***
translate O SoundsAnnounceForward {Announce moves when moving forward one move} ;# ***
translate O SoundsAnnounceBack {Announce when retracting or moving back one move} ;# ***

# Upgrading databases:
translate O Upgrading {Oppgraderer}
translate O ConfirmOpenNew {
Dette er en database i gammelt format (Scid 3) som ikke kan pnes i Scid 4, men en ny versjon (Scid 4) har allerede blitt opprettet.

Vil du pne versjonen som er i det nye formatet?
}
translate O ConfirmUpgrade {
Dette er en database i gammelt format (Scid3). En versjon i nytt format m opprettes fr den kan brukes i Scid 4.

Oppgradering vil opprette en ny versjon av databasen.

Dette kan ta en stund, men det trenger kun  gjres en gang. Du kan avbryte om det tar for lang tid.

nsker du  oppgradere databasen n?
}

# Recent files options:
translate O RecentFilesMenu {Number of recent files in File menu} ;# ***
translate O RecentFilesExtra {Number of recent files in extra submenu} ;# ***

# My Player Names options:
translate O MyPlayerNamesDescription {
Enter a list of preferred player names below, one name per line. Wildcards (e.g. "?" for any single character, "*" for any sequence of characters) are permitted.

Every time a game with a player in the list is loaded, the main window chessboard will be rotated if necessary to show the game from that players perspective.
} ;# ***
# ====== TODO To be translated ======
translate O showblunderexists {show blunder exists}
# ====== TODO To be translated ======
translate O showblundervalue {show blunder value}
# ====== TODO To be translated ======
translate O showscore {show score}
# ====== TODO To be translated ======
translate O coachgame {coach game}
# ====== TODO To be translated ======
translate O configurecoachgame {configure coach game}
# ====== TODO To be translated ======
translate O configuregame {Game configuration}
# ====== TODO To be translated ======
translate O Phalanxengine {Phalanx engine}
# ====== TODO To be translated ======
translate O Coachengine {Coach engine}
# ====== TODO To be translated ======
translate O difficulty {difficulty}
# ====== TODO To be translated ======
translate O hard {hard}
# ====== TODO To be translated ======
translate O easy {easy}
# ====== TODO To be translated ======
translate O Playwith {Play with}
# ====== TODO To be translated ======
translate O white {white}
# ====== TODO To be translated ======
translate O black {black}
# ====== TODO To be translated ======
translate O both {both}
# ====== TODO To be translated ======
translate O Play {Play}
# ====== TODO To be translated ======
translate O Noblunder {No blunder}
# ====== TODO To be translated ======
translate O blunder {blunder}
# ====== TODO To be translated ======
translate O Noinfo {-- No info --}
# ====== TODO To be translated ======
translate O PhalanxOrTogaMissing {Phalanx or Toga not found}
# ====== TODO To be translated ======
# ====== TODO To be translated ======
# ====== TODO To be translated ======
translate O moveblunderthreshold {move is a blunder if loss is greater than}
# ====== TODO To be translated ======
translate O limitanalysis {limit engine analysis time}
# ====== TODO To be translated ======
translate O seconds {seconds}
# ====== TODO To be translated ======
translate O Abort {Abort}
# ====== TODO To be translated ======
translate O Resume {Resume}
# ====== TODO To be translated ======
translate O OutOfOpening {Out of opening}
# ====== TODO To be translated ======
translate O NotFollowedLine {You did not follow the line}
# ====== TODO To be translated ======
translate O DoYouWantContinue {Do you want yo continue ?}
# ====== TODO To be translated ======
translate O CoachIsWatching {Coach is watching}
# ====== TODO To be translated ======
translate O Ponder {Permanent thinking}
# ====== TODO To be translated ======
translate O LimitELO {Limit ELO strength}
# ====== TODO To be translated ======
translate O DubiousMovePlayedTakeBack {Dubious move played, do you want to take back ?}
# ====== TODO To be translated ======
translate O WeakMovePlayedTakeBack {Weak move played, do you want to take back ?}
# ====== TODO To be translated ======
translate O BadMovePlayedTakeBack {Bad move played, do you want to take back ?}
# ====== TODO To be translated ======
translate O Iresign {I resign}
# ====== TODO To be translated ======
translate O yourmoveisnotgood {your move is not good}
# ====== TODO To be translated ======
translate O EndOfVar {End of variation}
# ====== TODO To be translated ======
translate O Openingtrainer {Opening trainer}
# ====== TODO To be translated ======
translate O DisplayCM {Display candidate moves}
# ====== TODO To be translated ======
translate O DisplayCMValue {Display candidate moves value}
# ====== TODO To be translated ======
translate O DisplayOpeningStats {Show statistics}
# ====== TODO To be translated ======
translate O ShowReport {Show report}
# ====== TODO To be translated ======
translate O NumberOfGoodMovesPlayed {good moves played}
# ====== TODO To be translated ======
translate O NumberOfDubiousMovesPlayed {dubious moves played}
# ====== TODO To be translated ======
translate O NumberOfMovesPlayedNotInRepertoire {moves played not in repertoire}
# ====== TODO To be translated ======
translate O NumberOfTimesPositionEncountered {times position encountered}
# ====== TODO To be translated ======
translate O PlayerBestMove  {Allow only best moves}
# ====== TODO To be translated ======
translate O OpponentBestMove {Opponent plays best moves}
# ====== TODO To be translated ======
translate O OnlyFlaggedLines {Only flagged lines}
# ====== TODO To be translated ======
translate O resetStats {Reset statistics}
# ====== TODO To be translated ======
translate O Repertoiretrainingconfiguration {Repertoire training configuration}
# ====== TODO To be translated ======
translate O Loadingrepertoire {Loading repertoire}
# ====== TODO To be translated ======
translate O Movesloaded {Moves loaded}
# ====== TODO To be translated ======
translate O Repertoirenotfound {Repertoire not found}
# ====== TODO To be translated ======
translate O Openfirstrepertoirewithtype {Open first a repertoire database with icon/type set to the right side}
# ====== TODO To be translated ======
translate O Movenotinrepertoire {Move not in repertoire}
# ====== TODO To be translated ======
translate O PositionsInRepertoire {Positions in repertoire}
# ====== TODO To be translated ======
translate O PositionsNotPlayed {Positions not played}
# ====== TODO To be translated ======
translate O PositionsPlayed {Positions played}
# ====== TODO To be translated ======
translate O Success {Success}
# ====== TODO To be translated ======
translate O DubiousMoves {Dubious moves}
# ====== TODO To be translated ======
translate O OutOfRepertoire {OutOfRepertoire}
# ====== TODO To be translated ======
# ====== TODO To be translated ======
# ====== TODO To be translated ======
# ====== TODO To be translated ======
translate O ConfigureTactics {Configure tactics}
# ====== TODO To be translated ======
translate O ResetScores {Reset scores}
# ====== TODO To be translated ======
translate O LoadingBase {Loading base}
# ====== TODO To be translated ======
translate O Tactics {Tactics}
# ====== TODO To be translated ======
translate O ShowSolution {Show solution}
# ====== TODO To be translated ======
translate O NextExercise {Next exercise}
# ====== TODO To be translated ======
translate O PrevExercise {previous exercise}
# ====== TODO To be translated ======
translate O StopTraining {Stop training}
# ====== TODO To be translated ======
translate O Next {Next}
# ====== TODO To be translated ======
translate O ResettingScore {Resetting score}
# ====== TODO To be translated ======
translate O LoadingGame {Loading game}
# ====== TODO To be translated ======
translate O MateFound {Mate found}
# ====== TODO To be translated ======
translate O BestSolutionNotFound {Best solution NOT found !}
# ====== TODO To be translated ======
translate O MateNotFound {Mate not found}
# ====== TODO To be translated ======
translate O ShorterMateExists {Shorter mate exists}
# ====== TODO To be translated ======
translate O ScorePlayed {Score played}
# ====== TODO To be translated ======
translate O Expected {expected}
# ====== TODO To be translated ======
translate O ChooseTrainingBase {Choose training base}
# ====== TODO To be translated ======
translate O Thinking {Thinking}
# ====== TODO To be translated ======
translate O AnalyzeDone {Analyze done}
# ====== TODO To be translated ======
translate O WinWonGame {Win won game}
# ====== TODO To be translated ======
translate O Lines {Lines}
# ====== TODO To be translated ======
translate O ConfigureUCIengine {Configure UCI engine}
# ====== TODO To be translated ======
translate O SpecificOpening {Specific opening}
# ====== TODO To be translated ======
translate O StartNewGame {Start new game}
# ====== TODO To be translated ======
translate O FixedLevel {Fixed level}
# ====== TODO To be translated ======
translate O Opening {Opening}
# ====== TODO To be translated ======
translate O RandomLevel {Random level}
# ====== TODO To be translated ======
translate O StartFromCurrentPosition {Start from current position}
# ====== TODO To be translated ======
translate O FixedDepth {Fixed depth}
# ====== TODO To be translated ======
translate O Nodes {Nodes} 
# ====== TODO To be translated ======
translate O Depth {Depth}
# ====== TODO To be translated ======
translate O Time {Time} 
# ====== TODO To be translated ======
translate O SecondsPerMove {Seconds per move}
# ====== TODO To be translated ======
translate O Engine {Engine}
# ====== TODO To be translated ======
translate O TimeMode {Time mode}
# ====== TODO To be translated ======
translate O TimeBonus {Time + bonus}
# ====== TODO To be translated ======
# ====== TODO To be translated ======
translate O TimeMin {min}
# ====== TODO To be translated ======
translate O TimeSec {sec}
# ====== TODO To be translated ======
# ====== TODO To be translated ======
# ====== TODO To be translated ======
translate O AllExercisesDone {All exercises done}
# ====== TODO To be translated ======
translate O MoveOutOfBook {Move out of book}
# ====== TODO To be translated ======
translate O LastBookMove {Last book move}
# ====== TODO To be translated ======
translate O AnnotateSeveralGames {Annotate several games\nfrom current to :}
# ====== TODO To be translated ======
translate O FindOpeningErrors {Find opening errors}
# ====== TODO To be translated ======
translate O MarkTacticalExercises {Mark tactical exercises}
# ====== TODO To be translated ======
translate O UseBook {Use book}
# ====== TODO To be translated ======
translate O MultiPV {Multiple variations}
# ====== TODO To be translated ======
translate O Hash {Hash memory}
# ====== TODO To be translated ======
translate O OwnBook {Use engine book}
# ====== TODO To be translated ======
translate O BookFile {Opening book}
# ====== TODO To be translated ======
translate O AnnotateVariations {Annotate variations}
# ====== TODO To be translated ======
translate O ShortAnnotations {Short annotations}
# ====== TODO To be translated ======
translate O addAnnotatorTag {Add annotator tag}
# ====== TODO To be translated ======
translate O AddScoreToShortAnnotations {Add score to short annotations}
# ====== TODO To be translated ======
translate O Export {Export}
# ====== TODO To be translated ======
translate O BookPartiallyLoaded {Book partially loaded}
# ====== TODO To be translated ======
translate O Calvar {Calculation of variations}
# ====== TODO To be translated ======
translate O ConfigureCalvar {Configuration}
# ====== TODO To be translated ======
# ====== TODO To be translated ======
translate O Reti {Reti}
# ====== TODO To be translated ======
translate O English {English}
# ====== TODO To be translated ======
translate O d4Nf6Miscellaneous {1.d4 Nf6 Miscellaneous}
# ====== TODO To be translated ======
translate O Trompowsky {Trompowsky}
# ====== TODO To be translated ======
translate O Budapest {Budapest}
# ====== TODO To be translated ======
translate O OldIndian {Old Indian}
# ====== TODO To be translated ======
translate O BenkoGambit {Benko Gambit}
# ====== TODO To be translated ======
translate O ModernBenoni {Modern Benoni}
# ====== TODO To be translated ======
translate O DutchDefence {Dutch Defence}
# ====== TODO To be translated ======
translate O Scandinavian {Scandinavian}
# ====== TODO To be translated ======
translate O AlekhineDefence {Alekhine Defence}
# ====== TODO To be translated ======
translate O Pirc {Pirc}
# ====== TODO To be translated ======
translate O CaroKann {Caro-Kann}
# ====== TODO To be translated ======
translate O CaroKannAdvance {Caro-Kann Advance}
# ====== TODO To be translated ======
translate O Sicilian {Sicilian}
# ====== TODO To be translated ======
translate O SicilianAlapin {Sicilian Alapin}
# ====== TODO To be translated ======
translate O SicilianClosed {Sicilian Closed}
# ====== TODO To be translated ======
translate O SicilianRauzer {Sicilian Rauzer}
# ====== TODO To be translated ======
translate O SicilianDragon {Sicilian Dragon}
# ====== TODO To be translated ======
translate O SicilianScheveningen {Sicilian Scheveningen}
# ====== TODO To be translated ======
translate O SicilianNajdorf {Sicilian Najdorf}
# ====== TODO To be translated ======
translate O OpenGame {Open Game}
# ====== TODO To be translated ======
translate O Vienna {Vienna}
# ====== TODO To be translated ======
translate O KingsGambit {King's Gambit}
# ====== TODO To be translated ======
translate O RussianGame {Russian Game}
# ====== TODO To be translated ======
translate O ItalianTwoKnights {Italian/Two Knights}
# ====== TODO To be translated ======
translate O Spanish {Spanish}
# ====== TODO To be translated ======
translate O SpanishExchange {Spanish Exchange}
# ====== TODO To be translated ======
translate O SpanishOpen {Spanish Open}
# ====== TODO To be translated ======
translate O SpanishClosed {Spanish Closed}
# ====== TODO To be translated ======
translate O FrenchDefence {French Defence}
# ====== TODO To be translated ======
translate O FrenchAdvance {French Advance}
# ====== TODO To be translated ======
translate O FrenchTarrasch {French Tarrasch}
# ====== TODO To be translated ======
translate O FrenchWinawer {French Winawer}
# ====== TODO To be translated ======
translate O FrenchExchange {French Exchange}
# ====== TODO To be translated ======
translate O QueensPawn {Queen's Pawn}
# ====== TODO To be translated ======
translate O Slav {Slav}
# ====== TODO To be translated ======
translate O QGA {QGA}
# ====== TODO To be translated ======
translate O QGD {QGD}
# ====== TODO To be translated ======
translate O QGDExchange {QGD Exchange}
# ====== TODO To be translated ======
translate O SemiSlav {Semi-Slav}
# ====== TODO To be translated ======
translate O QGDwithBg5 {QGD with Bg5}
# ====== TODO To be translated ======
translate O QGDOrthodox {QGD Orthodox}
# ====== TODO To be translated ======
translate O Grunfeld {Grnfeld}
# ====== TODO To be translated ======
translate O GrunfeldExchange {Grnfeld Exchange}
# ====== TODO To be translated ======
translate O GrunfeldRussian {Grnfeld Russian}
# ====== TODO To be translated ======
translate O Catalan {Catalan}
# ====== TODO To be translated ======
translate O CatalanOpen {Catalan Open}
# ====== TODO To be translated ======
translate O CatalanClosed {Catalan Closed}
# ====== TODO To be translated ======
translate O QueensIndian {Queen's Indian}
# ====== TODO To be translated ======
translate O NimzoIndian {Nimzo-Indian}
# ====== TODO To be translated ======
translate O NimzoIndianClassical {Nimzo-Indian Classical}
# ====== TODO To be translated ======
translate O NimzoIndianRubinstein {Nimzo-Indian Rubinstein}
# ====== TODO To be translated ======
translate O KingsIndian {King's Indian}
# ====== TODO To be translated ======
translate O KingsIndianSamisch {King's Indian Smisch}
# ====== TODO To be translated ======
translate O KingsIndianMainLine {King's Indian Main Line}
# ====== TODO To be translated ======
translate O ConfigureFics {Configure FICS}
# ====== TODO To be translated ======
translate O FICSGuest {Login as Guest}
# ====== TODO To be translated ======
translate O FICSServerPort {Server port}
# ====== TODO To be translated ======
translate O FICSServerAddress {IP Address}
# ====== TODO To be translated ======
translate O FICSRefresh {Refresh}
# ====== TODO To be translated ======
translate O FICSTimesealPort {Timeseal port}
# ====== TODO To be translated ======
translate O FICSSilence {Silence}
# ====== TODO To be translated ======
translate O FICSOffers {Offers}
# ====== TODO To be translated ======
translate O FICSConsole {Console}
# ====== TODO To be translated ======
translate O FICSGames {Games}
# ====== TODO To be translated ======
translate O FICSUnobserve {Stop observing game}
# ====== TODO To be translated ======
translate O FICSProfile {Display your history and profile}
# ====== TODO To be translated ======
translate O FICSRelayedGames {Relayed games}
# ====== TODO To be translated ======
translate O FICSFindOpponent {Find opponent}
# ====== TODO To be translated ======
translate O FICSTakeback {Takeback}
# ====== TODO To be translated ======
translate O FICSTakeback2 {Takeback 2}
# ====== TODO To be translated ======
translate O FICSInitTime {Initial time (min)}
# ====== TODO To be translated ======
translate O FICSIncrement {Increment (sec)}
# ====== TODO To be translated ======
translate O FICSRatedGame {Rated Game}
# ====== TODO To be translated ======
translate O FICSAutoColour {automatic}
# ====== TODO To be translated ======
translate O FICSManualConfirm {confirm manually}
# ====== TODO To be translated ======
translate O FICSFilterFormula {Filter with formula}
# ====== TODO To be translated ======
translate O FICSIssueSeek {Issue seek}
# ====== TODO To be translated ======
translate O FICSChallenge {Challenge}
# ====== TODO To be translated ======
translate O FICSAccept {accept}
# ====== TODO To be translated ======
translate O FICSDecline {decline}
# ====== TODO To be translated ======
translate O FICSColour {Colour}
# ====== TODO To be translated ======
translate O FICSSend {send}
# ====== TODO To be translated ======
translate O FICSConnect {Connect}
# ====== TODO To be translated ======
translate O FICSdefaultuservars {Use default variables}
# ====== TODO To be translated ======
translate O FICSObserveconfirm {Do you want to observe game}
# ====== TODO To be translated ======
translate O GameReview {Game review}
# ====== TODO To be translated ======
translate O GameReviewTimeExtended {Time extended}
# ====== TODO To be translated ======
translate O GameReviewMargin {Error margin}
# ====== TODO To be translated ======
translate O GameReviewAutoContinue {Auto continue when move is correct}
# ====== TODO To be translated ======
translate O GameReviewReCalculate {Use extended time}
# ====== TODO To be translated ======
translate O GameReviewAnalyzingMovePlayedDuringTheGame {Analyzing move played during the game}
# ====== TODO To be translated ======
translate O GameReviewAnalyzingThePosition {Analyzing the position}
# ====== TODO To be translated ======
translate O GameReviewEnterYourMove {Enter your move}
# ====== TODO To be translated ======
translate O GameReviewCheckingYourMove {Checking your move}
# ====== TODO To be translated ======
translate O GameReviewYourMoveWasAnalyzed {Your move was analyzed}
# ====== TODO To be translated ======
translate O GameReviewYouPlayedSameMove {You played the same move as in match}
# ====== TODO To be translated ======
translate O GameReviewScoreOfYourMove {Score of your move}
# ====== TODO To be translated ======
translate O GameReviewGameMoveScore {Game move's score}
# ====== TODO To be translated ======
translate O GameReviewEngineScore {Engine's score}
# ====== TODO To be translated ======
translate O GameReviewYouPlayedLikeTheEngine {You played like the engine}
# ====== TODO To be translated ======
translate O GameReviewNotEngineMoveButGoodMove {Not the engine move, but is also a good move}
# ====== TODO To be translated ======
translate O GameReviewMoveNotGood {This move is not good, score is}
# ====== TODO To be translated ======
translate O GameReviewMovesPlayedLike {Moves played like}
# ====== TODO To be translated ======
translate O GameReviewMovesPlayedEngine {Moves played like engine}
# ====== TODO To be translated ======
translate O CCDlgConfigureWindowTitle {Configure Correspondence Chess}
# ====== TODO To be translated ======
translate O CCDlgCGeneraloptions {General Options}
# ====== TODO To be translated ======
translate O CCDlgDefaultDB {Default Database:}
# ====== TODO To be translated ======
translate O CCDlgInbox {Inbox (path):}
# ====== TODO To be translated ======
translate O CCDlgOutbox {Outbox (path):}
# ====== TODO To be translated ======
translate O CCDlgXfcc {Xfcc Configuration:}
# ====== TODO To be translated ======
translate O CCDlgExternalProtocol {External Protocol Handler (e.g. Xfcc)}
# ====== TODO To be translated ======
translate O CCDlgFetchTool {Fetch Tool:}
# ====== TODO To be translated ======
translate O CCDlgSendTool {Send Tool:}
# ====== TODO To be translated ======
translate O CCDlgEmailCommunication {eMail Communication}
# ====== TODO To be translated ======
translate O CCDlgMailPrg {Mail program:}
# ====== TODO To be translated ======
translate O CCDlgBCCAddr {(B)CC Address:}
# ====== TODO To be translated ======
translate O CCDlgMailerMode {Mode:}
# ====== TODO To be translated ======
translate O CCDlgThunderbirdEg {e.g. Thunderbird, Mozilla Mail, Icedove...}
# ====== TODO To be translated ======
translate O CCDlgMailUrlEg {e.g. Evolution}
# ====== TODO To be translated ======
translate O CCDlgClawsEg {e.g Sylpheed Claws}
# ====== TODO To be translated ======
translate O CCDlgmailxEg {e.g. mailx, mutt, nail...}
# ====== TODO To be translated ======
translate O CCDlgAttachementPar {Attachment parameter:}
# ====== TODO To be translated ======
translate O CCDlgInternalXfcc {Use internal Xfcc support}
# ====== TODO To be translated ======
translate O CCDlgConfirmXfcc {Confirm moves}
# ====== TODO To be translated ======
translate O CCDlgSubjectPar {Subject parameter:}
# ====== TODO To be translated ======
translate O CCDlgDeleteBoxes {Empty In-/Outbox}
# ====== TODO To be translated ======
translate O CCDlgDeleteBoxesText {Do you really want to empty your In- and Outbox folders for Correspondence Chess? This requires a new sync to show the last state of your games}
# ====== TODO To be translated ======
translate O CCDlgConfirmMove {Confirm move}
# ====== TODO To be translated ======
translate O CCDlgConfirmMoveText {If you confirm, the following move and comment will be sent to the server:}
# ====== TODO To be translated ======
translate O CCDlgDBGameToLong {Inconsistent Mainline}
# ====== TODO To be translated ======
translate O CCDlgDBGameToLongError {The mainline in your database is longer than the game in your Inbox. If the Inbox contains current games, i.e. right after a sync, some moves were added to the mainline in the database erroneously.\nIn this case please shorten the mainline to (at max) move\n}
# ====== TODO To be translated ======
translate O CCDlgStartEmail {Start new eMail game}
# ====== TODO To be translated ======
translate O CCDlgYourName {Your Name:}
# ====== TODO To be translated ======
translate O CCDlgYourMail {Your eMail Address:}
# ====== TODO To be translated ======
translate O CCDlgOpponentName {Opponents Name:}
# ====== TODO To be translated ======
translate O CCDlgOpponentMail {Opponents eMail Address:}
# ====== TODO To be translated ======
translate O CCDlgGameID {Game ID (unique):}
# ====== TODO To be translated ======
translate O CCDlgTitNoOutbox {Scid: Correspondence Chess Outbox}
# ====== TODO To be translated ======
translate O CCDlgTitNoInbox {Scid: Correspondence Chess Inbox}
# ====== TODO To be translated ======
translate O CCDlgTitNoGames {Scid: No Correspondence Chess Games}
# ====== TODO To be translated ======
translate O CCErrInboxDir {Correspondence Chess inbox directory:}
# ====== TODO To be translated ======
translate O CCErrOutboxDir {Correspondence Chess outbox directory:}
# ====== TODO To be translated ======
translate O CCErrDirNotUsable {does not exist or is not accessible!\nPlease check and correct the settings.}
# ====== TODO To be translated ======
translate O CCErrNoGames {does not contain any games!\nPlease fetch them first.}
# ====== TODO To be translated ======
translate O CCDlgTitNoCCDB {Scid: No Correspondence Database}
# ====== TODO To be translated ======
translate O CCErrNoCCDB {No Database of type 'Correspondence' is opened. Please open one before using correspondence chess functions.}
# ====== TODO To be translated ======
translate O CCFetchBtn {Fetch games from the server and process the Inbox}
# ====== TODO To be translated ======
translate O CCPrevBtn {Goto previous game}
# ====== TODO To be translated ======
translate O CCNextBtn {Goto next game}
# ====== TODO To be translated ======
translate O CCSendBtn {Send move}
# ====== TODO To be translated ======
translate O CCEmptyBtn {Empty In- and Outbox}
# ====== TODO To be translated ======
translate O CCHelpBtn {Help on icons and status indicators.\nFor general Help press F1!}
# ====== TODO To be translated ======
translate O CCDlgServerName {Server Name:}
# ====== TODO To be translated ======
translate O CCDlgLoginName  {Login Name:}
# ====== TODO To be translated ======
translate O CCDlgPassword   {Password:}
# ====== TODO To be translated ======
translate O CCDlgURL        {Xfcc-URL:}
# ====== TODO To be translated ======
translate O CCDlgRatingType {Rating Type:}
# ====== TODO To be translated ======
translate O CCDlgDuplicateGame {Non-unique game ID}
# ====== TODO To be translated ======
translate O CCDlgDuplicateGameError {This game exists more than once in your database. Please delete all duplicates and compact your game file (File/Maintenance/Compact Database).}
# ====== TODO To be translated ======
translate O CCDlgSortOption {Sorting:}
# ====== TODO To be translated ======
translate O CCDlgListOnlyOwnMove {Only games I have the move}
# ====== TODO To be translated ======
translate O CCOrderClassicTxt {Site, Event, Round, Result, White, Black}
# ====== TODO To be translated ======
translate O CCOrderMyTimeTxt {My Clock}
# ====== TODO To be translated ======
translate O CCOrderTimePerMoveTxt {Time per move till next time control}
# ====== TODO To be translated ======
translate O CCOrderStartDate {Start date}
# ====== TODO To be translated ======
translate O CCOrderOppTimeTxt {Opponents Clock}
# ====== TODO To be translated ======
translate O CCDlgConfigRelay {Configure ICCF observations}
# ====== TODO To be translated ======
translate O CCDlgConfigRelayHelp {Go to the games page on http://www.iccf-webchess.com and display the game to be observed.  If you see the chessboard copy the URL from your browser to the list below. One URL per line only!\nExample: http://www.iccf-webchess.com/MakeAMove.aspx?id=266452}
# ====== TODO To be translated ======
translate O ExtHWConfigConnection {Configure external hardware}
# ====== TODO To be translated ======
translate O ExtHWPort {Port}
# ====== TODO To be translated ======
translate O ExtHWEngineCmd {Engine command}
# ====== TODO To be translated ======
translate O ExtHWEngineParam {Engine parameter}
# ====== TODO To be translated ======
translate O ExtHWShowButton {Show button}
# ====== TODO To be translated ======
translate O ExtHWHardware {Hardware}
# ====== TODO To be translated ======
translate O ExtHWNovag {Novag Citrine}
# ====== TODO To be translated ======
translate O ExtHWInputEngine {Input Engine}
# ====== TODO To be translated ======
translate O ExtHWNoBoard {No board}
# ====== TODO To be translated ======
translate O NovagReferee {Referee}
# ====== TODO To be translated ======
translate O IEConsole {Input Engine Console}
# ====== TODO To be translated ======
translate O IESending {Moves sent for}
# ====== TODO To be translated ======
translate O IESynchronise {Synchronise}
# ====== TODO To be translated ======
translate O IERotate  {Rotate}
# ====== TODO To be translated ======
translate O IEUnableToStart {Unable to start Input Engine:}
# ====== TODO To be translated ======
translate O DoneWithPosition {Done with position}
# ====== TODO To be translated ======
translate O Board {Board}
# ====== TODO To be translated ======
translate O showGameInfo {Show game info}
# ====== TODO To be translated ======
translate O autoResizeBoard {Automatic resize of board}
# ====== TODO To be translated ======
translate O DockTop {Move to top}
# ====== TODO To be translated ======
translate O DockBottom {Move to bottom}
# ====== TODO To be translated ======
translate O DockLeft {Move to left}
# ====== TODO To be translated ======
translate O DockRight {Move to right}
# ====== TODO To be translated ======
translate O Undock {Undock}
# ====== TODO To be translated ======
translate O ChangeIcon {Change icon...}
# ====== TODO To be translated ======
}

# norsk.tcl

# Sjekkliste:
# - Snarveier











































































### Polish menus for Scid.
# Contributed by Michal Rudolf and Adam Umiastowski.

addLanguage P Polish 0 iso8859-2

proc setLanguage_P {} {

menuText P File "Plik" 0
menuText P FileNew "Nowy..." 0 {Twrz nowa baz Scid}
menuText P FileOpen "Otwrz..." 0 {Otwrz istniejc baz Scid}
menuText P FileClose "Zamknij" 0 {Zamknij aktywn baz Scid}
menuText P FileFinder "Poszukiwacz plikw" 0 {Otwrz okno poszukiwacza plikw}
menuText P FileBookmarks "Zakadki" 2 {Menu zakadek (klawisz: Ctrl+B)}
menuText P FileBookmarksAdd "Dodaj zakadk" 0 \
  {Dodaj zakadk do aktualnej bazy i pozycji}
menuText P FileBookmarksFile "Wstaw zakadk" 0 \
  {Wstaw do wybranego katalogu zakadk do aktualnej bazy i pozycji}
menuText P FileBookmarksEdit "Edycja zakadek..." 0 \
  {Edytuj menu zakadek}
menuText P FileBookmarksList "Wywietlaj katalogi jako list" 0 \
  {Wywietlaj katalogi zakadek jako list, nie jako zagniedone menu}
menuText P FileBookmarksSub "Wywietl katalogi jako menu" 0 \
  {Wywietlaj katalogi zakadek jako zagniedone menu, nie jako list}
menuText P FileMaint "Obsuga" 1 {Narzdzia obsugi bazy Scid}
menuText P FileMaintWin "Obsuga" 0 \
  {Otwrz/zamknij obsug bazy Scid}
menuText P FileMaintCompact "Porzdkuj baz..." 0 \
  {Porzdkuj baz, usuwajc skasowane partie i nieuywane nazwiska}
menuText P FileMaintClass "Klasyfikacja debiutowa partii..." 0 \
  {Przelicz klasyfikacj debiutowa wszystkich partii}
menuText P FileMaintSort "Sortuj baz..." 0 \
  {Sortuj wszystkie partie w bazie}
menuText P FileMaintDelete "Usu podwjne partie..." 0 \
  {Szukaj podwjnych partii i oznacz je do skasowania}
menuText P FileMaintTwin "Wyszukiwanie podwjnych partii" 0 \
  {Otwrz/uaktualnij wyszukiwanie podwjnych partii}
menuText P FileMaintName "Pisownia" 0 \
  {Edycja nazw/nazwisk i kontrola pisowni}
menuText P FileMaintNameEditor "Edytor nazwisk" 0 \
  {Otwrz/zamknij edytor nazwisk}
menuText P FileMaintNamePlayer "Sprawd pisowni nazwisk..." 17 \
  {Sprawd pisowni nazwisk przy pomocy pliku nazwisk}
menuText P FileMaintNameEvent "Sprawd pisowni nazw zawodw..." 22 \
  {Sprawd pisowni nazw zawodw przy pomocy pliku turniejw}
menuText P FileMaintNameSite "Sprawd pisowni nazw miejscowoci..." 22 \
  {Sprawd pisowni nazw miejscowoci przy pomocy pliku miejscowoci}
menuText P FileMaintNameRound "Sprawd numery rund..." 15 \
  {Sprawd numery rund przy pomocy pliku}
menuText P FileReadOnly "Tylko do odczytu..." 0 \
  {Zabezpiecz baz przed zapisem}
menuText P FileSwitch "Przecz baz" 1 \
  {Przecz na inn otwart baz} 
menuText P FileExit "Koniec" 0 {Zamknij Scida}
# ====== TODO To be translated ======
menuText P FileMaintFixBase "Fix corrupted base" 0 {Try to fix a corrupted base}

menuText P Edit "Edytuj" 0
menuText P EditAdd "Dodaj wariant" 0 {Dodaj wariant do ruchu w partii}
menuText P EditDelete "Usu wariant" 0 {Usu wariant dla tego posunicia}
menuText P EditFirst "Twrz pierwszy wariant" 0 \
  {Przesu wariant na pierwsze miejsce na licie}
menuText P EditMain "Zmie wariant na tekst partii" 0 \
   {Zamie wariant i tekst partii}
menuText P EditTrial "Sprawd wariant" 0 \
  {Wcz/wycz tryb sprawdzania wariantw}
menuText P EditStrip "Usu" 2 \
  {Usu komentatarze i warianty}
# ====== TODO To be translated ======
menuText P EditUndo "Undo" 0 {Undo last game change}
menuText P EditStripComments "Komentarze" 0 \
  {Usu wszystkie komentarze z aktualnej partii}
menuText P EditStripVars "Warianty" 0 \
  {Usu wszystkie warianty z aktualnej partii}
menuText P EditStripBegin "Poprzednie posunicia" 0 \
  {Usu wszystkie posunicia do biecej pozycji}
menuText P EditStripEnd "Nastpne posunicia" 0 \
  {Usu wszystkie posunicia od biecej pozycji do koca partii}
menuText P EditReset "Oprnij schowek" 0 \
  {Oprnij schowek bazy}
menuText P EditCopy "Kopiuj parti do schowka" 0 \
  {Kopiuj parti do schowka}
menuText P EditPaste "Wklej aktywn parti ze schowka" 0 \
  {Wklej aktywn parti ze schowka}
menuText P EditPastePGN "Paste Clipboard text as PGN game..." 10 \
  {Interpret the clipboard text as a game in PGN notation and paste it here} ;# ***
menuText P EditSetup "Ustaw pozycj pocztkow..." 6 \
  {Ustaw pozycj pocztkow partii}
menuText P EditCopyBoard "Kopiuj pozycj" 7 \
  {Kopiuj aktualn pozycj w notacji FEN do schowka}
menuText P EditPasteBoard "Ustaw pozycj ze schowka" 3 \
  {Ustaw pozycj ze schowka}

menuText P Game "Partia" 1
menuText P GameNew "Opu parti" 0 \
  {Opu parti, rezygnujc z wszelkich zmian}
menuText P GameFirst "Pierwsza partia" 2 {Wczytaj pierwsz parti z filtra}
menuText P GamePrev "Poka poprzedni parti" 0 \
  {Wczytaj poprzedni wyszukan parti}
menuText P GameReload "Przeaduj aktualn parti"  10 \
  {Wczytaj parti ponownie, rezygnujc z wszelkich zmian}
menuText P GameNext "Nastpna partia" 0 \
  {Wczytaj nastpn wyszukan parti}
menuText P GameLast "Ostatnia partia" 5 {Wczytaj ostatni parti z filtra}
menuText P GameRandom "Losowa partia z filtra" 8 {Wczytaj losow parti z filtra}
menuText P GameNumber "Wczytaj parti numer..." 17 \
  {Wczytaj parti wprowadzajc jej numer}
menuText P GameReplace "Zapisz: zastp parti..." 3 \
  {Zapisz parti, zastp poprzedni wersj}
menuText P GameAdd "Zapisz: dodaj now parti..." 8 \
  {Zapisz t parti jako nowa parti w bazie}
menuText P GameDeepest "Rozpoznaj debiut" 0 \
  {Przejd do najduszego wariantu z ksiki debiutowej}
menuText P GameGotoMove "Przejd do posunicia nr..." 13 \
  {Przejd do posunicia o podanym numerze}
menuText P GameNovelty "Znajd nowink..." 7 \
  {Znajd pierwsze posunicie partii niegrane wczeniej}

menuText P Search "Szukaj" 0
menuText P SearchReset "Resetuj filtr" 0 \
  {Wstaw wszystkie partie do filtra}
menuText P SearchNegate "Odwr filtr" 0 \
  {Zamie partie w filtrze i poza nim}
menuText P SearchCurrent "Aktualna pozycja..." 0 \
  {Szukaj aktualnej pozycji}
menuText P SearchHeader "Nagwek..." 0 \
  {Szukaj informacji o nagwkach (nazwiska, nazwy turnieju itp.)}
menuText P SearchMaterial "Materia/wzorzec..." 0 \
  {Szukaj wedug materiau lub wzorca}
menuText P SearchUsing "Stosuj plik poszukiwania..." 0 \
  {Szukaj stosujc plik z opcjami poszukiwania}

menuText P Windows "Okna" 1
menuText P WindowsComment "Edytor komentarzy" 0 \
  {Otwrz/zamknij edytor komentarzy}
menuText P WindowsGList "Lista partii" 0 {Otwrz/zamknij list partii}
menuText P WindowsPGN "Okno PGN" 0 {Otwrz/zamknij (zapis partii) PGN }
menuText P WindowsPList "Zawodnicy" 2 {Otwrz/zamknij przegldark zawodnikw}
menuText P WindowsTmt "Turnieje" 0 {Otwrz/zamknij przegldark turniejw}
menuText P WindowsSwitcher "Przecznik baz" 12 \
  {Otwrz/zamknij przecznik baz}
menuText P WindowsMaint "Zarzdzanie baz" 0 \
  {Otwrz/zamknij okno zarzdzania baz}
menuText P WindowsECO "Przegldarka kodw debiutowych" 0 \
  {Otwrz/zamknij przegldark kodw debiutowych}
menuText P WindowsRepertoire "Repertuar debiutowy" 0 \
  {Otwrz/zamknij okno repertuaru debiutowego}
menuText P WindowsStats "Statystyka" 0 \
  {Otwrz/zamknij statystyk}
menuText P WindowsTree "Drzewo wariantw" 0 {Otwrz/zamknij drzewo wariantw}
menuText P WindowsTB "Tablica kocwek" 8 \
  {Otwrz/zamknij okno tablicy kocwek}
# ====== TODO To be translated ======
menuText P WindowsBook "Book Window" 0 {Open/close the Book window}
# ====== TODO To be translated ======
menuText P WindowsCorrChess "Correspondence Window" 0 {Open/close the Correspondence window}

menuText P Tools "Narzdzia" 0
menuText P ToolsAnalysis "Program analizujcy..." 8 \
  {Uruchom/zatrzymaj program analizujcy}
menuText P ToolsAnalysis2 "Program analizujcy 2..." 21 \
  {Uruchom/zatrzymaj program analizujcy}
menuText P ToolsCross "Tabela turniejowa" 0 \
  {Poka tabel turniejow dla aktualnej partii}
menuText P ToolsEmail "Zarzdzanie poczt e-mail" 0 \
  {Otwrz/zamknij zarzdzanie adresami e-mail}
menuText P ToolsFilterGraph "Wykres filtra" 7 \
  {Otwrz/zamknij wykres filtra}
# ====== TODO To be translated ======
menuText P ToolsAbsFilterGraph "Abs. Filter Graph" 7 {Open/close the filter graph window for absolute values}
menuText P ToolsOpReport "Raport debiutowy" 0 \
  {Utwrz raport debiutowy dla aktualnej pozycji}
# ====== TODO To be translated ======
menuText P ToolsOpenBaseAsTree "Open base as tree" 0   {Open a base and use it in Tree window}
# ====== TODO To be translated ======
menuText P ToolsOpenRecentBaseAsTree "Open recent base as tree" 0   {Open a recent base and use it in Tree window}
menuText P ToolsTracker "ledzenie figur"  10 {Otwrz/zamknij okno ledzenia figur} 
# ====== TODO To be translated ======
menuText P ToolsTraining "Training"  0 {Training tools (tactics, openings,...) }
# ====== TODO To be translated ======
menuText P ToolsTacticalGame "Tactical game"  0 {Play a game with tactics}
# ====== TODO To be translated ======
menuText P ToolsSeriousGame "Serious game"  0 {Play a serious game}
# ====== TODO To be translated ======
menuText P ToolsTrainOpenings "Openings"  0 {Train with a repertoire}
# ====== TODO To be translated ======
menuText P ToolsTrainReviewGame "Review game"  0 {Guess moves played in a game}
# ====== TODO To be translated ======
menuText P ToolsTrainTactics "Tactics"  0 {Solve tactics}
# ====== TODO To be translated ======
menuText P ToolsTrainCalvar "Calculation of variations"  0 {Calculation of variations training}
# ====== TODO To be translated ======
menuText P ToolsTrainFindBestMove "Find best move"  0 {Find best move}
# ====== TODO To be translated ======
menuText P ToolsTrainFics "Play on internet"  0 {Play on freechess.org}
# ====== TODO To be translated ======
menuText P ToolsBookTuning "Book tuning" 0 {Book tuning}
# ====== TODO To be translated ======
menuText P ToolsConnectHardware "Connect Hardware" 0 {Connect external hardware}
# ====== TODO To be translated ======
menuText P ToolsConnectHardwareConfigure "Configure..." 0 {Configure external hardware and connection}
# ====== TODO To be translated ======
menuText P ToolsConnectHardwareNovagCitrineConnect "Connect Novag Citrine" 0 {Connect Novag Citrine}
# ====== TODO To be translated ======
menuText P ToolsConnectHardwareInputEngineConnect "Connect Input Engine" 0 {Connect Input Engine (e.g. DGT)}
menuText P ToolsPInfo "Informacje o zawodniku"  0 \
  {Otwrz/odwie okno informacji o zawodniku}
menuText P ToolsPlayerReport "Raport o graczu..." 9 \
  {Utwrz raport o graczu} 
menuText P ToolsRating "Wykres rankingu" 0 \
  {Wykres historii rankingu grajcych parti}
menuText P ToolsScore "Wykres wynikw" 1 {Poka wykres wynikw}
menuText P ToolsExpCurrent "Eksportuj parti" 0 \
  {Zapisz parti do pliku tekstowego}
menuText P ToolsExpCurrentPGN "Do pliku PGN..." 9 \
  {Zapisz parti do pliku PGN}
menuText P ToolsExpCurrentHTML "Do pliku HTML..." 9 \
  {Zapisz parti do pliku HTML}
# ====== TODO To be translated ======
menuText P ToolsExpCurrentHTMLJS "Export Game to HTML and JavaScript File..." 15 {Write current game to a HTML and JavaScript file}  
menuText P ToolsExpCurrentLaTeX "Do pliku LaTeX-a..." 9 \
  {Zapisz parti do pliku LaTeX-a}
menuText P ToolsExpFilter "Eksportuj wyszukane partie" 1 \
  {Zapisz wyszukane partie do pliku tekstowego}
menuText P ToolsExpFilterPGN "Do pliku PGN..." 9 \
  {Zapisz wyszukane partie do pliku PGN}
menuText P ToolsExpFilterHTML "Do pliku HTML..." 9 \
  {Zapisz wyszukane partie do pliku HTML}
# ====== TODO To be translated ======
menuText P ToolsExpFilterHTMLJS "Export Filter to HTML and JavaScript File..." 17 {Write all filtered games to a HTML and JavaScript file}  
menuText P ToolsExpFilterLaTeX "Do pliku LaTeX..." 9 \
  {Zapisz wyszukane partie do pliku LaTeX}
menuText P ToolsImportOne "Wklej parti w formacie PGN..." 0 \
  {Pobierz parti z pliku PGN}
menuText P ToolsImportFile "Importuj plik PGN..." 2 \
  {Pobierz partie z pliku PGN}
# ====== TODO To be translated ======
menuText P ToolsStartEngine1 "Start engine 1" 0  {Start engine 1}
# ====== TODO To be translated ======
menuText P ToolsStartEngine2 "Start engine 2" 0  {Start engine 2}
# ====== TODO To be translated ======
menuText P ToolsCaptureBoard "Capture Current Board..." 0  {Save the current board as an image.}
# ====== TODO To be translated ======
menuText P Play "Play" 0
# ====== TODO To be translated ======
menuText P CorrespondenceChess "Correspondence Chess" 0 {Functions for eMail and Xfcc based correspondence chess}
# ====== TODO To be translated ======
menuText P CCConfigure "Configure..." 0 {Configure external tools and general setup}
# ====== TODO To be translated ======
menuText P CCConfigRelay "Configure observations..." 10 {Configure games to be observed}
# ====== TODO To be translated ======
menuText P CCOpenDB "Open Database..." 0 {Open the default Correspondence database}
# ====== TODO To be translated ======
menuText P CCRetrieve "Retrieve Games" 0 {Retrieve games via external (Xfcc-)helper}
# ====== TODO To be translated ======
menuText P CCInbox "Process Inobx" 0 {Process all files in scids Inbox}
# ====== TODO To be translated ======
menuText P CCSend "Send Move" 0 {Send your move via eMail or external (Xfcc-)helper}
# ====== TODO To be translated ======
menuText P CCResign "Resign" 0 {Resign (not via eMail)}
# ====== TODO To be translated ======
menuText P CCClaimDraw "Claim Draw" 0 {Send move and claim a draw (not via eMail)}
# ====== TODO To be translated ======
menuText P CCOfferDraw "Offer Draw" 0 {Send move and offer a draw (not via eMail)}
# ====== TODO To be translated ======
menuText P CCAcceptDraw "Accept Draw" 0 {Accept a draw offer (not via eMail)}
# ====== TODO To be translated ======
menuText P CCNewMailGame "New eMail Game..." 0 {Start a new eMail game}
# ====== TODO To be translated ======
menuText P CCMailMove "Mail Move..." 0 {Send the move via eMail to the opponent}
# ====== TODO To be translated ======
menuText P CCGamePage "Game Page..." 0 {Call up the game via the web browser}
# ====== TODO To be translated ======
menuText P CCEditCopy "Copy Gamelist to Clipbase" 0 {Copy the games as CSV list to clipbase}

menuText P Options "Opcje" 0
menuText P OptionsBoard "Szachownica" 0 {Konfiguracja wygldu szachownicy}
menuText P OptionsBoardSize "Wielko" 0 {Zmie wielko szachownicy}
menuText P OptionsBoardPieces "Typ figur" 4 \
  {Zmienia typ wyswietlanych figur} 
menuText P OptionsBoardColors "Kolory..." 0 {Zmie kolory szachownicy}
# ====== TODO To be translated ======
menuText P OptionsBoardGraphics "Squares..." 0 {Select textures for squares}
# ====== TODO To be translated ======
translate P OptionsBGW {Select texture for squares}
# ====== TODO To be translated ======
translate P OptionsBoardGraphicsText {Select graphic files for white and black squares:}
menuText P OptionsBoardNames "Moje nazwiska" 0 {Modyfikuj list moich graczy}
menuText P OptionsExport "Eksport" 0 {Zmie opcje eksportu tekstu}
menuText P OptionsFonts "Czcionka" 0 {Zmie font}
menuText P OptionsFontsRegular "Podstawowa" 0 {Zmie podstawow czcionk}
menuText P OptionsFontsMenu "Menu" 0 {Zmie czcionk menu} 
menuText P OptionsFontsSmall "Maa" 0 {Zmie ma czcionk}
# ====== TODO To be translated ======
menuText P OptionsFontsTiny "Tiny" 0 {Change the tiny font}
menuText P OptionsFontsFixed "Staa" 0 {Zmie czcionk staej szerokoci}
menuText P OptionsGInfo "Informacje o partii" 0 {Sposb wywietlania informacji o partii}
menuText P OptionsLanguage "Jzyk" 0 {Wybierz jzyk}
# ====== TODO To be translated ======
menuText P OptionsMovesTranslatePieces "Translate pieces" 0 {Translate first letter of pieces}
# ====== TODO To be translated ======
menuText P OptionsMovesHighlightLastMove "Highlight last move" 0 {Highlight last move}
# ====== TODO To be translated ======
menuText P OptionsMovesHighlightLastMoveDisplay "Show" 0 {Display last move Highlight}
# ====== TODO To be translated ======
menuText P OptionsMovesHighlightLastMoveWidth "Width" 0 {Thickness of line}
# ====== TODO To be translated ======
menuText P OptionsMovesHighlightLastMoveColor "Color" 0 {Color of line}
menuText P OptionsMoves "Posunicia" 0 {Wprowadzanie posuni}
menuText P OptionsMovesAsk "Zapytaj przed zastpieniem posuni" 0 \
  {Zapytaj przed zastpieniem aktualnych posuni}
menuText P OptionsMovesAnimate "Szybko animacji" 1 \
  {Ustaw czas przeznaczony na animacj jednego posunicia} 
menuText P OptionsMovesDelay "Automatyczne przegldanie..." 0 \
  {Ustaw opnienie przy automatycznym przegldaniu partii}
menuText P OptionsMovesCoord "Posunicia w formacie \"g1f3\"" 0 \
  {Akceptuj posunicia wprowadzone w formacie "g1f3"}
menuText P OptionsMovesSuggest "Poka proponowane posunicia" 1 \
  {Wcz/wycz proponowanie posuni}
# ====== TODO To be translated ======
menuText P OptionsShowVarPopup "Show variations window" 0 {Turn on/off the display of a variations window}  
# ====== TODO To be translated ======
menuText P OptionsMovesSpace "Add spaces after move number" 0 {Add spaces after move number}  
menuText P OptionsMovesKey "Automatyczne dopenianie posuni" 1 \
  {Wcz/wycz automatyczne dopenianie posuni wprowadzanych z klawiatury}
# ====== TODO To be translated ======
menuText P OptionsMovesShowVarArrows "Show Arrows for Variations" 0 {Turn on/off arrows showing moves in variations}
menuText P OptionsNumbers "Format zapisu liczb" 0 {Wybierz format zapisu liczb}
menuText P OptionsStartup "Start" 0 {Wybierz okna, ktre maj by widoczne po uruchomieniu programu}
# ====== TODO To be translated ======
menuText P OptionsTheme "Theme" 0 {Change look of interface}
menuText P OptionsWindows "Okna" 0 {Opcje okien}
menuText P OptionsWindowsIconify "Minimalizuj wszystkie okna" 0 \
  {Schowaj wszystkie okna przy minimalizacji gwnego okna}
menuText P OptionsWindowsRaise "Automatyczne uaktywnianie" 0 \
  {Automatycznie uaktywniaj niektre okna (np. pasek postpu), gdy s zasonite}
menuText P OptionsSounds "Sounds..." 2 {Configure move announcement sounds} ;# ***
# ====== TODO To be translated ======
menuText P OptionsWindowsDock "Dock windows" 0 {Dock windows}
# ====== TODO To be translated ======
menuText P OptionsWindowsSaveLayout "Save layout" 0 {Save layout}
# ====== TODO To be translated ======
menuText P OptionsWindowsRestoreLayout "Restore layout" 0 {Restore layout}
# ====== TODO To be translated ======
menuText P OptionsWindowsShowGameInfo "Show game info" 0 {Show game info}
# ====== TODO To be translated ======
menuText P OptionsWindowsAutoLoadLayout "Auto load first layout" 0 {Auto load first layout at startup}
menuText P OptionsToolbar "Pasek narzdziowy" 6 \
  {Schowaj/poka pasek narzdziowy}
menuText P OptionsECO "Wczytaj ksik debiutow..." 16 \
  {Wczytaj plik z klasyfikacja debiutw}
menuText P OptionsSpell "Wczytaj plik sprawdzania pisowni..." 13 \
  {Wczytaj plik do sprawdzania pisowni nazwisk i nazw}
menuText P OptionsTable "Katalog z baz kocwek..." 10 \
  {Wybierz baz kocwek; uyte zostan wszystkie bazy z tego katalogu}
menuText P OptionsRecent "Ostatnie pliki..." 0 \
  {Zmie liczb ostatnio otwartych plikw, wywietlanych w menu Plik} 
# ====== TODO To be translated ======
menuText P OptionsBooksDir "Books directory..." 0 {Sets the opening books directory}
# ====== TODO To be translated ======
menuText P OptionsTacticsBasesDir "Bases directory..." 0 {Sets the tactics (training) bases directory}
menuText P OptionsSave "Zapamitaj opcje" 0 \
  "Zapamitaj wszystkie ustawienia w pliku $::optionsFile"
menuText P OptionsAutoSave "Automatycznie zapisuj opcje" 0 \
  {Automatycznie zapisz opcje przy zamykaniu programu}

menuText P Help "Pomoc" 2
menuText P HelpContents "Contents" 0 {Poka spis treci pomocy} 
menuText P HelpIndex "Spis treci" 0 {Poka indeks pomocy}
menuText P HelpGuide "Krtki przewodnik" 0 {Poka krtki przewodnik}
menuText P HelpHints "Podpowiedzi" 0 {Poka podpowiedzi}
menuText P HelpContact "Informacja o autorze" 0 \
  {Poka informacj o autorze i stronie Scid-a}
menuText P HelpTip "Porada dnia" 0 {Poka porad Scida}
menuText P HelpStartup "Okno powitalne" 2 {Pokazuj okno startowe}
menuText P HelpAbout "O programie" 0 {Informacje o programie Scid}

# Game info box popup menu:
menuText P GInfoHideNext "Ukryj nastpne posunicie" 0
menuText P GInfoMaterial "Poka materia" 0
menuText P GInfoFEN "Poka pozycj w formacie FEN" 16
menuText P GInfoMarks "Pokazuj kolorowe pola i strzaki" 5 
menuText P GInfoWrap "Zawijaj dugie linie" 0
menuText P GInfoFullComment "Poka cay komentarz" 6
menuText P GInfoPhotos "Poka zdjcia" 5
menuText P GInfoTBNothing "Tablica kocwek: nic" 0
menuText P GInfoTBResult "Tablica kocwek: tylko wynik" 18
menuText P GInfoTBAll "Tablica kocwek: wszystko" 18
menuText P GInfoDelete "Usu/przywr t parti" 0
menuText P GInfoMark "Wcz/wycz zaznaczenie tej partii" 0
# ====== TODO To be translated ======
menuText P GInfoInformant "Configure informant values" 0

# Main window buttons:
helpMsg P .main.fbutton.button.start {Id do pocztku partii (klawisz: Home)}
helpMsg P .main.fbutton.button.end {Id na koniec partii  (klawisz: End)}
helpMsg P .main.fbutton.button.back {Cofnij o jedno posunicie  (klawisz: strzaka w lewo)}
helpMsg P .main.fbutton.button.forward {Jedno posunicie do przodu (klawisz: strzaka w prawo)}
helpMsg P .main.fbutton.button.intoVar {Wejd w wariant (klawisz skrtu: v)}
helpMsg P .main.fbutton.button.exitVar {Opu wariant (klawisz skrtu: z)}
helpMsg P .main.fbutton.button.flip {Obr szachownic  (klawisz skrtu: .)}
helpMsg P .main.fbutton.button.coords {Przecz wywietlanie opisu szachownicy  (klawisz skrtu: 0)}
helpMsg P .main.fbutton.button.stm {Przecz wywietlanie ikony koloru strony na posuniciu} 
helpMsg P .main.fbutton.button.autoplay \
  {Automatyczne przestawianie bierek (klawisz skrtu: Ctrl+Z)}

# General buttons:
translate P Back {Z powrotem}
translate P Browse {Przegldaj}
translate P Cancel {Anuluj}
# ====== TODO To be translated ======
translate P Continue {Continue}
translate P Clear {Wyczy}
translate P Close {Zamknij}
translate P Contents {Spis treci}
translate P Defaults {Domylne}
translate P Delete {Usu}
translate P Graph {Wykres}
translate P Help {Pomoc}
translate P Import {Pobierz}
translate P Index {Indeks}
translate P LoadGame {Wczytaj parti}
translate P BrowseGame {Przegldaj parti}
translate P MergeGame {Docz parti}
# ====== TODO To be translated ======
translate P MergeGames {Merge Games}
translate P Preview {Podgld}
translate P Revert {Odwr}
translate P Save {Zapisz}
translate P Search {Szukaj}
translate P Stop {Stop}
translate P Store {Zapamitaj}
translate P Update {Uaktualnij}
translate P ChangeOrient {Zmie pooenie okna}
translate P ShowIcons {Show Icons} ;# ***
translate P None {Brak}
translate P First {Pierwsza}
translate P Current {Aktualn}
translate P Last {Ostatni}

# General messages:
translate P game {partia}
translate P games {partie}
translate P move {posunicie}
translate P moves {pos.}
translate P all {wszystkie}
translate P Yes {Tak}
translate P No {Nie}
translate P Both {Oba}
translate P King {Krl}
translate P Queen {Hetman}
translate P Rook {Wiea}
translate P Bishop {Goniec}
translate P Knight {Skoczek}
translate P Pawn {Pion}
translate P White {Biae}
translate P Black {Czarne}
translate P Player {Gracz}
translate P Rating {Ranking}
translate P RatingDiff {Rnica rankingw}
translate P AverageRating {redni ranking}
translate P Event {Turniej}
translate P Site {Miejsce}
translate P Country {Kraj}
translate P IgnoreColors {Ignoruj kolory}
translate P Date {Data}
translate P EventDate {Turniej data}
translate P Decade {Dekada} 
translate P Year {Rok}
translate P Month {Miesic}
translate P Months {Stycze Luty Marzec Kwiecie Maj Czerwiec Lipiec Sierpie Wrzesie Padziernik Listopad Grudzie}
translate P Days {N Pn Wt r Cz Pt So}
translate P YearToToday {Ostatni rok}
translate P Result {Wynik}
translate P Round {Runda}
translate P Length {Dugo}
translate P ECOCode {Kod ECO}
translate P ECO {ECO}
translate P Deleted {Usunita}
translate P SearchResults {Wyniki wyszukiwania}
translate P OpeningTheDatabase "Otwieranie bazy"
translate P Database {Bazy}
translate P Filter {Filtr}
translate P noGames {brak partii}
translate P allGames {wszystkie partie}
translate P empty {brak}
translate P clipbase {schowek}
translate P score {punkty}
translate P StartPos {Pozycja pocztkowa}
translate P Total {Razem}
translate P readonly {tylko do odczytu}

# Standard error messages:
translate P ErrNotOpen {To nie jest otwarta baza.} 
translate P ErrReadOnly {Ta baza jest tylko do odczytu; nie mona jej zmieni.}
translate P ErrSearchInterrupted {Wyszukiwanie zostao przerwane. Wyniki bd niepene.}

# Game information:
translate P twin {powtrzona}
translate P deleted {usunita}
translate P comment {komentarz}
translate P hidden {ukryte}
translate P LastMove {Poprzednie}
translate P NextMove {nastpne}
translate P GameStart {Pocztek partii}
translate P LineStart {Pocztek wariantu}
translate P GameEnd {Koniec partii}
translate P LineEnd {Koniec wariantu}

# Player information:
translate P PInfoAll {Wyniki - <b>wszystkie</b> partie}
translate P PInfoFilter {Wyniki - partie z <b>filtra</b>}
translate P PInfoAgainst {Wyniki - }
translate P PInfoMostWhite {Najczstsze debiuty biaymi}
translate P PInfoMostBlack {Najczstsze debiuty czarnymi}
translate P PInfoRating {Historia rankingu}
translate P PInfoBio {Biografia}
translate P PInfoEditRatings {Modyfikuj rankingi} 

# Tablebase information:
translate P Draw {remis}
translate P stalemate {pat}
translate P withAllMoves {po dowolnym posuniciu}
translate P withAllButOneMove {po dowolnym posuniciu oprcz}
translate P with {po}
translate P only {tylko}
translate P lose {przegrywaj}
translate P loses {przegrywa}
translate P allOthersLose {inne posunicia przegrywaj}
translate P matesIn {matuj w}
translate P hasCheckmated {matuj}
translate P longest {najlepsze}
translate P WinningMoves {Wygrywajce posunicia}
translate P DrawingMoves {Remisujce posunicia} 
translate P LosingMoves {Przegrywajce posunicia} 
translate P UnknownMoves {Posunicia o nieznanej ocenie} 

# Tip of the day:
translate P Tip {Porada}
translate P TipAtStartup {Poka porad przy starcie}

# Tree window menus:
menuText P TreeFile "Plik" 0
# ====== TODO To be translated ======
menuText P TreeFileFillWithBase "Fill Cache with base" 0 {Fill the cache file with all games in current base}
# ====== TODO To be translated ======
menuText P TreeFileFillWithGame "Fill Cache with game" 0 {Fill the cache file with current game in current base}
# ====== TODO To be translated ======
menuText P TreeFileSetCacheSize "Cache size" 0 {Set the cache size}
# ====== TODO To be translated ======
menuText P TreeFileCacheInfo "Cache info" 0 {Get info on cache usage}
menuText P TreeFileSave "Zapisz bufor" 7 {Zapisz plik bufora (.stc)}
menuText P TreeFileFill "Twrz standardowy plik cache" 0 {Wstaw typowe pozycje debiutowe do bufora}
menuText P TreeFileBest "Najlepsze partie" 0 {Poka list najlepszych partii}
menuText P TreeFileGraph "Poka wykres" 0 {Poka wykres dla tej gazi drzewa}
menuText P TreeFileCopy "Kopiuj drzewo do schowka" 0 \
  {Skopiuj drzewo ze statystykami do schowka}
menuText P TreeFileClose "Zamknij" 0 {Zamknij okno drzewa}
# ====== TODO To be translated ======
menuText P TreeMask "Mask" 0
# ====== TODO To be translated ======
menuText P TreeMaskNew "New" 0 {New mask}
# ====== TODO To be translated ======
menuText P TreeMaskOpen "Open" 0 {Open mask}
# ====== TODO To be translated ======
menuText P TreeMaskOpenRecent "Open recent" 0 {Open recent mask}
# ====== TODO To be translated ======
menuText P TreeMaskSave "Save" 0 {Save mask}
# ====== TODO To be translated ======
menuText P TreeMaskClose "Close" 0 {Close mask}
# ====== TODO To be translated ======
menuText P TreeMaskFillWithGame "Fill with game" 0 {Fill mask with game}
# ====== TODO To be translated ======
menuText P TreeMaskFillWithBase "Fill with base" 0 {Fill mask with all games in base}
# ====== TODO To be translated ======
menuText P TreeMaskInfo "Info" 0 {Show statistics for current mask}
# ====== TODO To be translated ======
menuText P TreeMaskDisplay "Display mask map" 0 {Show mask data in a tree form}
# ====== TODO To be translated ======
menuText P TreeMaskSearch "Search" 0 {Search in current mask}
menuText P TreeSort "Sortowanie" 0
menuText P TreeSortAlpha "Alfabetycznie" 0
menuText P TreeSortECO "Kod ECO" 0
menuText P TreeSortFreq "Czsto" 0
menuText P TreeSortScore "Punkty" 0
menuText P TreeOpt "Opcje" 0
# ====== TODO To be translated ======
menuText P TreeOptSlowmode "slow mode" 0 {Slow mode for updates (high accuracy)}
# ====== TODO To be translated ======
menuText P TreeOptFastmode "Fast mode" 0 {Fast mode for updates (no move transposition)}
# ====== TODO To be translated ======
menuText P TreeOptFastAndSlowmode "Fast and slow mode" 0 {Fast mode then slow mode for updates}
# ====== TODO To be translated ======
menuText P TreeOptStartStop "Auto refreshing" 0 {Toggles automatic refreshing of the tree window}
menuText P TreeOptLock "Blokada" 0 {Zablokuj/odblokuj drzewo na aktualnej bazie}
menuText P TreeOptTraining "Trening" 0 {Wcz/wycz tryb treningowy}
menuText P TreeOptAutosave "Automatyczny zapis bufora" 0 \
  {Automatycznie zapisz plik bufora przy wyjciu}
menuText P TreeHelp "Pomoc" 2
menuText P TreeHelpTree "Drzewo" 0
menuText P TreeHelpIndex "Spis treci" 0
translate P SaveCache {Zapisz bufor}
translate P Training {Trening}
translate P LockTree {Blokada}
translate P TreeLocked {zablokowane}
translate P TreeBest {Najlepsze}
translate P TreeBestGames {Najlepsze partie}
# Note: the next message is the tree window title row. After editing it,
# check the tree window to make sure it lines up with the actual columns.
translate P TreeTitleRow \
  {    Pos.   ECO       Czsto     Wynik  Rav   Rperf Rok   %Remis}
# {    Move   ECO       Frequency    Score  AvElo Perf AvYear %Draws}
translate P TreeTotal {RAZEM}
# ====== TODO To be translated ======
translate P DoYouWantToSaveFirst {Do you want to save first}
# ====== TODO To be translated ======
translate P AddToMask {Add to Mask}
# ====== TODO To be translated ======
translate P RemoveFromMask {Remove from Mask}
# ====== TODO To be translated ======
translate P AddThisMoveToMask {Add this move to Mask}
# ====== TODO To be translated ======
translate P SearchMask {Search in Mask}
# ====== TODO To be translated ======
translate P DisplayMask {Display Mask}
# ====== TODO To be translated ======
translate P Nag {Nag code}
# ====== TODO To be translated ======
translate P Marker {Marker}
# ====== TODO To be translated ======
translate P Include {Include}
# ====== TODO To be translated ======
translate P Exclude {Exclude}
# ====== TODO To be translated ======
translate P MainLine {Main line}
# ====== TODO To be translated ======
translate P Bookmark {Bookmark}
# ====== TODO To be translated ======
translate P NewLine {New line}
# ====== TODO To be translated ======
translate P ToBeVerified {To be verified}
# ====== TODO To be translated ======
translate P ToTrain {To train}
# ====== TODO To be translated ======
translate P Dubious {Dubious}
# ====== TODO To be translated ======
translate P ToRemove {To remove}
# ====== TODO To be translated ======
translate P NoMarker {No marker}
# ====== TODO To be translated ======
translate P ColorMarker {Color}
# ====== TODO To be translated ======
translate P WhiteMark {White}
# ====== TODO To be translated ======
translate P GreenMark {Green}
# ====== TODO To be translated ======
translate P YellowMark {Yellow}
# ====== TODO To be translated ======
translate P BlueMark {Blue}
# ====== TODO To be translated ======
translate P RedMark {Red}
# ====== TODO To be translated ======
translate P CommentMove {Comment move}
# ====== TODO To be translated ======
translate P CommentPosition {Comment position}
# ====== TODO To be translated ======
translate P AddMoveToMaskFirst {Add move to mask first}
# ====== TODO To be translated ======
translate P OpenAMaskFileFirst {Open a mask file first}
# ====== TODO To be translated ======
translate P Positions {Positions}
# ====== TODO To be translated ======
translate P Moves {Moves}

# Finder window:
menuText P FinderFile "Plik" 0
menuText P FinderFileSubdirs "Przeszukuj podkatalogi" 0
menuText P FinderFileClose "Zamknij wyszukiwacza plikw" 0
menuText P FinderSort "Sortowanie" 0
menuText P FinderSortType "Typ" 0
menuText P FinderSortSize "Rozmiar" 0
menuText P FinderSortMod "Zmieniony" 0
menuText P FinderSortName "Nazwa" 0
menuText P FinderSortPath "cieka" 0
menuText P FinderTypes "Typy" 0
menuText P FinderTypesScid "Bazy Scid-a" 0
menuText P FinderTypesOld "Bazy Scid-a (stary format)" 1
menuText P FinderTypesPGN "Pliki PGN" 0
menuText P FinderTypesEPD "Ksiki debiutowe EPD" 0
menuText P FinderTypesRep "Pliki repertuaru debiutowego" 0
menuText P FinderHelp "Pomoc" 2
menuText P FinderHelpFinder "Pomoc poszukiwacza plikw" 1
menuText P FinderHelpIndex "Spis treci" 0
translate P FileFinder {Poszukiwacz plikw}
translate P FinderDir {Katalog}
translate P FinderDirs {Katalogi}
translate P FinderFiles {Pliki}
translate P FinderUpDir {wyej}
# ====== TODO To be translated ======
translate P FinderCtxOpen {Open}
# ====== TODO To be translated ======
translate P FinderCtxBackup {Backup}
# ====== TODO To be translated ======
translate P FinderCtxCopy {Copy}
# ====== TODO To be translated ======
translate P FinderCtxMove {Move}
# ====== TODO To be translated ======
translate P FinderCtxDelete {Delete}

# Player finder:
menuText P PListFile "Plik" 0
menuText P PListFileUpdate "Uaktualnij" 0
menuText P PListFileClose "Zamknij przegldark zawodnikw" 0
menuText P PListSort "Sortowanie" 0
menuText P PListSortName "Nazwisko" 0
menuText P PListSortElo "Elo" 0
menuText P PListSortGames "Partie" 0
menuText P PListSortOldest "Najstarsza" 0
menuText P PListSortNewest "Najnowsza" 0

# Tournament finder:
menuText P TmtFile "Plik" 0
menuText P TmtFileUpdate "Uaktualnij" 0
menuText P TmtFileClose "Zamknij turnieje" 0
menuText P TmtSort "Sortowanie" 0
menuText P TmtSortDate "Data" 0
menuText P TmtSortPlayers "Zawodnicy" 0
menuText P TmtSortGames "Partie" 0
menuText P TmtSortElo "Elo" 0
menuText P TmtSortSite "Miejsce" 0
menuText P TmtSortEvent "Turniej" 0
menuText P TmtSortWinner "Zwycizca" 0
translate P TmtLimit "Wielko listy"
translate P TmtMeanElo "Min. rednie ELO"
translate P TmtNone "Nie znaleziono turniejw."

# Graph windows:
menuText P GraphFile "Plik" 0
menuText P GraphFileColor "Zapisz jako kolorowy PostScript" 12
menuText P GraphFileGrey "Zapisz jako zwyky PostScript..." 0
menuText P GraphFileClose "Zamknij okno" 6
menuText P GraphOptions "Opcje" 0
menuText P GraphOptionsWhite "Biae" 0
menuText P GraphOptionsBlack "Czarne" 0
menuText P GraphOptionsBoth "Oba kolory" 1
menuText P GraphOptionsPInfo "Gracz z Informacji o graczu" 0
translate P GraphFilterTitle "Filtr: czsto na 1000 partii" 
# ====== TODO To be translated ======
translate P GraphAbsFilterTitle "Filter Graph: frequency of the games"
# ====== TODO To be translated ======
translate P ConfigureFilter {Configure X-Axes for Year, Rating and Moves}
# ====== TODO To be translated ======
translate P FilterEstimate "Estimate"
# ====== TODO To be translated ======
translate P TitleFilterGraph "Scid: Filter Graph"

# Analysis window:
translate P AddVariation {Dodaj wariant}
# ====== TODO To be translated ======
translate P AddAllVariations {Add All Variations}
translate P AddMove {Dodaj posunicie}
translate P Annotate {Komentuj}
# ====== TODO To be translated ======
translate P ShowAnalysisBoard {Show analysis board}
# ====== TODO To be translated ======
translate P ShowInfo {Show engine info}
# ====== TODO To be translated ======
translate P FinishGame {Finish game}
# ====== TODO To be translated ======
translate P StopEngine {Stop engine}
# ====== TODO To be translated ======
translate P StartEngine {Start engine}
# ====== TODO To be translated ======
translate P LockEngine {Lock engine to current position}
translate P AnalysisCommand {Program do analizy}
translate P PreviousChoices {Poprzednie programy}
translate P AnnotateTime {Czas midzy ruchami (w sekundach)}
translate P AnnotateWhich {Dodaj warianty}
translate P AnnotateAll {Dla obu stron}
# ====== TODO To be translated ======
translate P AnnotateAllMoves {Annotate all moves}
translate P AnnotateWhite {Dla biaych}
translate P AnnotateBlack {Dla czarnych}
# ====== TODO To be translated ======
translate P AnnotateBlundersOnly {When game move is an obvious blunder}
# ====== TODO To be translated ======
translate P AnnotateBlundersOnlyScoreChange {Analysis reports blunder, with score change from/to: }
# ====== TODO To be translated ======
translate P BlundersThreshold {Threshold}
# TODO: Translate
translate P ScoreAllMoves {Score all moves}
translate P LowPriority {Niski priorytet CPU} 
# ====== TODO To be translated ======
translate P ClickHereToSeeMoves {Click here to see moves}
# ====== TODO To be translated ======
translate P ConfigureInformant {Configure Informant}
# ====== TODO To be translated ======
translate P Informant!? {Interesting move}
# ====== TODO To be translated ======
translate P Informant? {Poor move}
# ====== TODO To be translated ======
translate P Informant?? {Blunder}
# ====== TODO To be translated ======
translate P Informant?! {Dubious move}
# ====== TODO To be translated ======
translate P Informant+= {White has a slight advantage}
# ====== TODO To be translated ======
translate P Informant+/- {White has a moderate advantage}
# ====== TODO To be translated ======
translate P Informant+- {White has a decisive advantage}
# ====== TODO To be translated ======
translate P Informant++- {The game is considered won}
# ====== TODO To be translated ======
translate P Book {Book}
# ====== TODO To be translated ======
translate P OtherBookMoves {Opponent's book}
# ====== TODO To be translated ======
translate P OtherBookMovesTooltip {Moves to which the opponent has a reply}

# Analysis Engine open dialog:
translate P EngineList {Programy szachowe}
translate P EngineName {Nazwa}
translate P EngineCmd {Polecenie}
translate P EngineArgs {Parametry} 
translate P EngineDir {Katalog}
translate P EngineElo {Elo}
translate P EngineTime {Data}
translate P EngineNew {Dodaj}
translate P EngineEdit {Edytuj}
translate P EngineRequired {Pola wytuszczone s konieczne; reszta opcjonalna} 

# Stats window menus:
menuText P StatsFile "Plik" 0
menuText P StatsFilePrint "Zapisz do pliku..." 7
menuText P StatsFileClose "Zamknij" 0
menuText P StatsOpt "Opcje" 0

# PGN window menus:
menuText P PgnFile "Plik" 0
menuText P PgnFileCopy "Kopiuj parti do schowka" 0
menuText P PgnFilePrint "Zapisz do pliku..." 7
menuText P PgnFileClose "Zamknij" 0
menuText P PgnOpt "Wygld" 0
menuText P PgnOptColor "Wywietlanie w kolorach" 0
menuText P PgnOptShort "Krtki (3-wierszowy) nagwek" 0
menuText P PgnOptSymbols "Symbole Informatora" 0
menuText P PgnOptIndentC "Wcinaj komentarze" 7
menuText P PgnOptIndentV "Wcinaj warianty" 7
menuText P PgnOptColumn "Kolumny (jedno posunicie w wierszu)" 0
menuText P PgnOptSpace "Spacja po numerze ruchu" 0
menuText P PgnOptStripMarks "Usu kody kolorowych pl i strzaek" 0
menuText P PgnOptBoldMainLine "Use Bold Text for Main Line Moves" 4 ;# ***
menuText P PgnColor "Kolory" 0
menuText P PgnColorHeader "Nagwek..." 0
menuText P PgnColorAnno "Uwagi..." 3
menuText P PgnColorComments "Komentarze..." 0
menuText P PgnColorVars "Warianty..." 0
menuText P PgnColorBackground "To..." 0
# ====== TODO To be translated ======
menuText P PgnColorMain "Main line..." 0
# ====== TODO To be translated ======
menuText P PgnColorCurrent "Current move background..." 1
# ====== TODO To be translated ======
menuText P PgnColorNextMove "Next move background..." 0
menuText P PgnHelp "Pomoc" 2
menuText P PgnHelpPgn "PGN" 0
menuText P PgnHelpIndex "Spis treci" 0
translate P PgnWindowTitle {Game Notation - game %u} ;# ***

# Crosstable window menus:
menuText P CrosstabFile "Plik" 0
menuText P CrosstabFileText "Zapisz w pliku tekstowym..." 15
menuText P CrosstabFileHtml "Zapisz w pliku HTML..." 15
menuText P CrosstabFileLaTeX "Zapisz w pliku LaTeX-a..." 15
menuText P CrosstabFileClose "Zamknij" 0
menuText P CrosstabEdit "Edytuj" 0
menuText P CrosstabEditEvent "Turniej" 0
menuText P CrosstabEditSite "Miejsce" 0
menuText P CrosstabEditDate "Data" 0
menuText P CrosstabOpt "Wywietlanie" 0
menuText P CrosstabOptAll "Turniej koowy" 0
menuText P CrosstabOptSwiss "Szwajcar" 0
menuText P CrosstabOptKnockout "Knockout" 0
menuText P CrosstabOptAuto "Automatycznie" 0
menuText P CrosstabOptAges "Wiek" 0
menuText P CrosstabOptNats "Narodowo" 0
menuText P CrosstabOptRatings "Ranking" 0
menuText P CrosstabOptTitles "Tytu" 0
menuText P CrosstabOptBreaks "Punkty pomocnicze" 1
menuText P CrosstabOptDeleted "Uwzgldniaj usunite partie" 0
menuText P CrosstabOptColors "Kolory (tylko szwajcar)" 0
menuText P CrosstabOptColumnNumbers "Numerowane kolumny (tylko turniej koowy)" 0
menuText P CrosstabOptGroup "Grupuj po liczbie punktw" 0
menuText P CrosstabSort "Sortowanie" 0
menuText P CrosstabSortName "Nazwisko" 0
menuText P CrosstabSortRating "Ranking" 0
menuText P CrosstabSortScore "Punkty" 0
menuText P CrosstabColor "Kolor" 0
menuText P CrosstabColorPlain "Zwyky tekst" 0
menuText P CrosstabColorHyper "Hipertekst" 0
menuText P CrosstabHelp "Pomoc" 2
menuText P CrosstabHelpCross "Tabela turniejowa" 0
menuText P CrosstabHelpIndex "Spis treci" 0
translate P SetFilter {Ustaw filtr}
translate P AddToFilter {Dodaj do filtra}
translate P Swiss {Szwajcar}
translate P Category {Kategoria} 

# Opening report window menus:
menuText P OprepFile "Plik" 0
menuText P OprepFileText "Zapisz w pliku tekstowym..." 15
menuText P OprepFileHtml "Zapisz w pliku HTML..." 15
menuText P OprepFileLaTeX "Zapisz w pliku LaTeX-a..." 15
menuText P OprepFileOptions "Opcje" 2
menuText P OprepFileClose "Zamknij okno raportu" 0
menuText P OprepFavorites "Ulubione" 1 
menuText P OprepFavoritesAdd "Dodaj raport..." 0 
menuText P OprepFavoritesEdit "Modyfikuj ulubione..." 0
menuText P OprepFavoritesGenerate "Twrz raporty..." 0 
menuText P OprepHelp "Pomoc" 2
menuText P OprepHelpReport "Pomoc raportu debiutowego" 0
menuText P OprepHelpIndex "Spis treci" 0

# Repertoire editor:
menuText P RepFile "Plik" 0
menuText P RepFileNew "Nowy" 0
menuText P RepFileOpen "Otwrz..." 0
menuText P RepFileSave "Zapisz" 0
menuText P RepFileSaveAs "Zapisz jako..." 7
menuText P RepFileClose "Zamknij" 3
menuText P RepEdit "Edytuj" 0
menuText P RepEditGroup "Dodaj grup" 6
menuText P RepEditInclude "Wcz wariant" 0
menuText P RepEditExclude "Wycz wariant" 1
menuText P RepView "Widok" 0
menuText P RepViewExpand "Rozwi wszystkie grupy" 0
menuText P RepViewCollapse "Zwi wszystkie grupy" 0
menuText P RepSearch "Szukaj" 0
menuText P RepSearchAll "Wszystkie warianty..." 0
menuText P RepSearchDisplayed "Tylko widoczne warianty..." 0
menuText P RepHelp "Pomoc" 2
menuText P RepHelpRep "Repertuar debiutowy" 0
menuText P RepHelpIndex "Spis treci" 0
translate P RepSearch "Poszukiwanie wariantw"
translate P RepIncludedLines "wczone warianty"
translate P RepExcludedLines "wyczone warianty"
translate P RepCloseDialog {Ten repertuar ma niezapisane zmiany.

Na pewno zamkn repertuar, rezygnujc z wszelkich zmian?
}

# Header search:
translate P HeaderSearch {Wyszukiwanie wg nagwka}
translate P EndSideToMove {Side to move at end of game} ;# ***
translate P GamesWithNoECO {Partie bez ECO?}
translate P GameLength {Dugo}
translate P FindGamesWith {Znajd partie}
translate P StdStart {caa partia}
translate P Promotions {z promocj}
translate P Comments {Komentarze}
translate P Variations {Warianty}
translate P Annotations {Uwagi}
translate P DeleteFlag {Usuwanie}
translate P WhiteOpFlag {Debiut - biae}
translate P BlackOpFlag {Debiut - czarne}
translate P MiddlegameFlag {Gra rodkowa}
translate P EndgameFlag {Kocwka}
translate P NoveltyFlag {Nowinka}
translate P PawnFlag {Struktura pionowa}
translate P TacticsFlag {Taktyka}
translate P QsideFlag {Gra na skrzydle hetmaskim}
translate P KsideFlag {Gra na skrzydle krlewskim}
translate P BrilliancyFlag {Nagroda za pikno}
translate P BlunderFlag {Podstawka}
translate P UserFlag {Inne}
translate P PgnContains {PGN zawiera tekst}
# ====== TODO To be translated ======
translate P Annotator {Annotator}
# ====== TODO To be translated ======
translate P Cmnts {Annotated games only}

# Game list window:
translate P GlistNumber {Numer}
translate P GlistWhite {Biae}
translate P GlistBlack {Czarne}
translate P GlistWElo {B-Elo}
translate P GlistBElo {C-Elo}
translate P GlistEvent {Turniej}
translate P GlistSite {Miejsce}
translate P GlistRound {Runda}
translate P GlistDate {Data}
translate P GlistYear {Rok}
translate P GlistEDate {Turniej-Data}
translate P GlistResult {Wynik}
translate P GlistLength {Dugo}
translate P GlistCountry {Kraj}
translate P GlistECO {ECO}
translate P GlistOpening {Debiut}
translate P GlistEndMaterial {Materia}
translate P GlistDeleted {Usunita}
translate P GlistFlags {Oznaczenie}
translate P GlistVars {Warianty}
translate P GlistComments {Komentarze}
translate P GlistAnnos {Uwagi}
translate P GlistStart {Pozycja pocztkowa}
translate P GlistGameNumber {Numer partii}
# ====== TODO To be translated ======
translate P GlistAverageElo {Average Elo}
# ====== TODO To be translated ======
translate P GlistRating {Rating}
translate P GlistFindText {Znajd tekst}
translate P GlistMoveField {Przesu}
translate P GlistEditField {Konfiguruj}
translate P GlistAddField {Dodaj}
translate P GlistDeleteField {Usu}
translate P GlistWidth {Szeroko}
translate P GlistAlign {Wyrwnanie}
# ====== TODO To be translated ======
translate P GlistAlignL {Align: left}
# ====== TODO To be translated ======
translate P GlistAlignR {Align: right}
# ====== TODO To be translated ======
translate P GlistAlignC {Align: center}
translate P GlistColor {Kolor}
translate P GlistSep {Separator}
# ====== TODO To be translated ======
translate P GlistCurrentSep {-- Current --}
# ====== TODO To be translated ======
translate P GlistNewSort {New}
# ====== TODO To be translated ======
translate P GlistAddToSort {Add}
# ====== TODO To be translated ======
translate P GsortSort {Sort...}
# ====== TODO To be translated ======
translate P GsortDate {Date}
# ====== TODO To be translated ======
translate P GsortYear {Year}
# ====== TODO To be translated ======
translate P GsortEvent {Event}
# ====== TODO To be translated ======
translate P GsortSite {Site}
# ====== TODO To be translated ======
translate P GsortRound {Round}
# ====== TODO To be translated ======
translate P GsortWhiteName {White Name}
# ====== TODO To be translated ======
translate P GsortBlackName {Black Name}
# ====== TODO To be translated ======
translate P GsortECO {ECO}
# ====== TODO To be translated ======
translate P GsortResult {Result}
# ====== TODO To be translated ======
translate P GsortMoveCount {Move Count}
# ====== TODO To be translated ======
translate P GsortAverageElo {Average Elo}
# ====== TODO To be translated ======
translate P GsortCountry {Country}
# ====== TODO To be translated ======
translate P GsortDeleted {Deleted}
# ====== TODO To be translated ======
translate P GsortEventDate {Event Date}
# ====== TODO To be translated ======
translate P GsortWhiteElo {White Elo}
# ====== TODO To be translated ======
translate P GsortBlackElo {Black Elo}
# ====== TODO To be translated ======
translate P GsortComments {Comments}
# ====== TODO To be translated ======
translate P GsortVariations {Variations}
# ====== TODO To be translated ======
translate P GsortNAGs {NAGs}
# ====== TODO To be translated ======
translate P GsortAscending {Ascending}
# ====== TODO To be translated ======
translate P GsortDescending {Descending}
# ====== TODO To be translated ======
translate P GsortAdd {Add}
# ====== TODO To be translated ======
translate P GsortStore {Store}
# ====== TODO To be translated ======
translate P GsortLoad {Load}
# ====== TODO To be translated ======
translate P GlistRemoveThisGameFromFilter  {Remove this game from Filter}
# ====== TODO To be translated ======
translate P GlistRemoveGameAndAboveFromFilter  {Remove game (and all above it) from Filter}
# ====== TODO To be translated ======
translate P GlistRemoveGameAndBelowFromFilter  {Remove game (and all below it) from Filter}
# ====== TODO To be translated ======
translate P GlistDeleteGame {(Un)Delete this game} 
# ====== TODO To be translated ======
translate P GlistDeleteAllGames {Delete all games in filter} 
# ====== TODO To be translated ======
translate P GlistUndeleteAllGames {Undelete all games in filter} 
# ====== TODO To be translated ======
translate P GlistMergeGameInBase {Merge Game in other base} 

# Maintenance window:
translate P DatabaseName {Nazwa bazy:}
translate P TypeIcon {Ikona:}
translate P NumOfGames {Liczba partii:}
translate P NumDeletedGames {Liczba usunitych partii:}
translate P NumFilterGames {Liczba partii w filtrze:}
translate P YearRange {Data:}
translate P RatingRange {Ranking:}
translate P Description {Opis} 
translate P Flag {Oznaczenie:}
# ====== TODO To be translated ======
translate P CustomFlags {Custom flags}
translate P DeleteCurrent {Usu aktualn parti}
translate P DeleteFilter {Usu partie z filtra}
translate P DeleteAll {Usu wszystkie partie}
translate P UndeleteCurrent {Odzyskaj aktualn parti}
translate P UndeleteFilter {Odzyskaj partie z filtra}
translate P UndeleteAll {Odzyskaj wszystkie partie}
translate P DeleteTwins {Usu powtrzone partie}
translate P MarkCurrent {Zaznacz aktualn parti}
translate P MarkFilter {Zaznacz partie z filtra}
translate P MarkAll {Zaznacz wszystkie partie z filtra}
translate P UnmarkCurrent {Usu zaznaczenie aktualnej partii}
translate P UnmarkFilter {Usu zaznaczenie partii z filtra}
translate P UnmarkAll {Usu zaznaczenie wszystkich partii}
translate P Spellchecking {Pisownia}
translate P Players {Zawodnicy}
translate P Events {Turnieje}
translate P Sites {Miejsca}
translate P Rounds {Rundy}
translate P DatabaseOps {Operacje bazodanowe}
translate P ReclassifyGames {Klasyfikacja debiutowa}
translate P CompactDatabase {Uporzdkuj baz}
translate P SortDatabase {Sortuj baz}
translate P AddEloRatings {Dodaj rankingi ELO}
translate P AutoloadGame {Domylna partia}
translate P StripTags {Usu znaczniki PGN} 
translate P StripTag {Usu znacznik}
translate P Cleaner {Zestaw zada}
translate P CleanerHelp {
Zestaw zada pozwala wykona od razu kilka operacji porzdkowania bazy. Operacje wybrane z listy
zostan wykonane na aktualnej bazie.

Do klasyfikacji debiutowej i usuwania powtrzonych partii uyte zostan aktualne ustawienia.
}
translate P CleanerConfirm {
Kiedy wykonanie zestawu zada zostanie rozpoczte, nie bdzie mona ju go przerwa.

Na duej bazie moe to zaj duo czasu (zaley to rwnie od wybranego zestawu zada i ich
ustawie).

Na pewno wykona wybrane zadania?
}
# ====== TODO To be translated ======
translate P TwinCheckUndelete {to flip; "u" undeletes both)}
# ====== TODO To be translated ======
translate P TwinCheckprevPair {Previous pair}
# ====== TODO To be translated ======
translate P TwinChecknextPair {Next pair}
# ====== TODO To be translated ======
translate P TwinChecker {Scid: Twin game checker}
# ====== TODO To be translated ======
translate P TwinCheckTournament {Games in tournament:}
# ====== TODO To be translated ======
translate P TwinCheckNoTwin {No twin  }
# ====== TODO To be translated ======
translate P TwinCheckNoTwinfound {No twin was detected for this game.\nTo show twins using this window, you must first use the "Delete twin games..." function. }
# ====== TODO To be translated ======
translate P TwinCheckTag {Share tags...}
# ====== TODO To be translated ======
translate P TwinCheckFound1 {Scid found $result twin games}
# ====== TODO To be translated ======
translate P TwinCheckFound2 { and set their delete flags}
# ====== TODO To be translated ======
translate P TwinCheckNoDelete {There are no games in this database to delete.}
# ====== TODO To be translated ======
translate P TwinCriteria1 { Your settings for finding twin games are potentially likely to\ncause non-twin games with similar moves to be marked as twins.}
# ====== TODO To be translated ======
translate P TwinCriteria2 {It is recommended that if you select "No" for "same moves", you should select "Yes" for the colors, event, site, round, year and month settings.\nDo you want to continue and delete twins anyway? }
# ====== TODO To be translated ======
translate P TwinCriteria3 {It is recommended that you specify "Yes" for at least two of the "same site", "same round" and "same year" settings.\nDo you want to continue and delete twins anyway?}
# ====== TODO To be translated ======
translate P TwinCriteriaConfirm {Scid: Confirm twin settings}
# ====== TODO To be translated ======
translate P TwinChangeTag "Change the following game tags:\n\n"
# ====== TODO To be translated ======
translate P AllocRatingDescription "This command will use the current spellcheck file to add Elo ratings to games in this database. Wherever a player has no currrent rating but his/her rating at the time of the game is listed in the spellcheck file, that rating will be added."
# ====== TODO To be translated ======
translate P RatingOverride "Overwrite existing non-zero ratings?"
# ====== TODO To be translated ======
translate P AddRatings "Add ratings to:"
# ====== TODO To be translated ======
translate P AddedRatings {Scid added $r Elo ratings in $g games.}
# ====== TODO To be translated ======
translate P NewSubmenu "New submenu"

# Comment editor:
translate P AnnotationSymbols  {Symbole:}
translate P Comment {Komentarz:}
translate P InsertMark {Wstaw znak}
translate P InsertMarkHelp {
Insert/remove mark: Select color, type, square.
Insert/remove arrow: Right-click two squares.
} ;# ***

# Nag buttons in comment editor:
translate P GoodMove {Good move} ;# ***
translate P PoorMove {Poor move} ;# ***
translate P ExcellentMove {Excellent move} ;# ***
translate P Blunder {Podstawka}
translate P InterestingMove {Interesting move} ;# ***
translate P DubiousMove {Dubious move} ;# ***
translate P WhiteDecisiveAdvantage {White has a decisive advantage} ;# ***
translate P BlackDecisiveAdvantage {Black has a decisive advantage} ;# ***
translate P WhiteClearAdvantage {White has a clear advantage} ;# ***
translate P BlackClearAdvantage {Black has a clear advantage} ;# ***
translate P WhiteSlightAdvantage {White has a slight advantage} ;# ***
translate P BlackSlightAdvantage {Black has a slight advantage} ;# ***
translate P Equality {Equality} ;# ***
translate P Unclear {Unclear} ;# ***
translate P Diagram {Diagram} ;# ***

# Board search:
translate P BoardSearch {Wyszukiwanie wg pozycji}
translate P FilterOperation {Operacje na aktualnym filtrze:}
translate P FilterAnd {I (ogranicz filtr)}
translate P FilterOr {LUB (dodaj do filtra)}
translate P FilterIgnore {NOWY (ignoruj poprzedni filtr)}
translate P SearchType {Typ wyszukiwania:}
translate P SearchBoardExact {Identyczna pozycja (bierki na tych samych polach)}
translate P SearchBoardPawns {Pionki (ten sam materia, pionki na tych samych polach)}
translate P SearchBoardFiles {Kolumny (ten sam materia, pionki na tych samych kolumnach)}
translate P SearchBoardAny {Materia (ten sam materia, pozycja dowolna)}
# ====== TODO To be translated ======
translate P SearchInRefDatabase { Search in base }
translate P LookInVars {Przeszukuj warianty}

# Material search:
translate P MaterialSearch {Wyszukiwanie wg materiau}
translate P Material {Materia}
translate P Patterns {Wzorce}
translate P Zero {Brak}
translate P Any {Dowolny}
translate P CurrentBoard {Aktualna pozycja}
translate P CommonEndings {Typowe kocwki}
translate P CommonPatterns {Typowe wzorce}
translate P MaterialDiff {Przewaga materialna}
translate P squares {pola}
translate P SameColor {jednopolowe}
translate P OppColor {rnopolowe}
translate P Either {dowolne}
translate P MoveNumberRange {Zakres posuni}
translate P MatchForAtLeast {Pasuje min.}
translate P HalfMoves {pruchy}

# Common endings in material search:
translate P EndingPawns {Pawn endings} ;# ***
translate P EndingRookVsPawns {Rook vs. Pawn(s)} ;# ***
translate P EndingRookPawnVsRook {Rook and 1 Pawn vs. Rook} ;# ***
translate P EndingRookPawnsVsRook {Rook and Pawn(s) vs. Rook} ;# ***
translate P EndingRooks {Rook vs. Rook endings} ;# ***
translate P EndingRooksPassedA {Rook vs. Rook endings with a passed a-pawn} ;# ***
translate P EndingRooksDouble {Double Rook endings} ;# ***
translate P EndingBishops {Bishop vs. Bishop endings} ;# ***
translate P EndingBishopVsKnight {Bishop vs. Knight endings} ;# ***
translate P EndingKnights {Knight vs. Knight endings} ;# ***
translate P EndingQueens {Queen vs. Queen endings} ;# ***
translate P EndingQueenPawnVsQueen {Queen and 1 Pawn vs. Queen} ;# ***
translate P BishopPairVsKnightPair {Two Bishops vs. Two Knights middlegame} ;# ***

# Common patterns in material search:
translate P PatternWhiteIQP {White IQP} ;# ***
translate P PatternWhiteIQPBreakE6 {White IQP: d4-d5 break vs. e6} ;# ***
translate P PatternWhiteIQPBreakC6 {White IQP: d4-d5 break vs. c6} ;# ***
translate P PatternBlackIQP {Black IQP} ;# ***
translate P PatternWhiteBlackIQP {White IQP vs. Black IQP} ;# ***
translate P PatternCoupleC3D4 {White c3+d4 Isolated Pawn Couple} ;# ***
translate P PatternHangingC5D5 {Black Hanging Pawns on c5 and d5} ;# ***
translate P PatternMaroczy {Maroczy Center (with Pawns on c4 and e4)} ;# ***
translate P PatternRookSacC3 {Rook Sacrifice on c3} ;# ***
translate P PatternKc1Kg8 {O-O-O vs. O-O (Kc1 vs. Kg8)} ;# ***
translate P PatternKg1Kc8 {O-O vs. O-O-O (Kg1 vs. Kc8)} ;# ***
translate P PatternLightFian {Light-Square Fianchettos (Bishop-g2 vs. Bishop-b7)} ;# ***
translate P PatternDarkFian {Dark-Square Fianchettos (Bishop-b2 vs. Bishop-g7)} ;# ***
translate P PatternFourFian {Four Fianchettos (Bishops on b2,g2,b7,g7)} ;# ***

# Game saving:
translate P Today {Dzisiaj}
translate P ClassifyGame {Klasyfikacja debiutowa}

# Setup position:
translate P EmptyBoard {Pusta szachownica}
translate P InitialBoard {Pozycja pocztkowa}
translate P SideToMove {Na posuniciu}
translate P MoveNumber {Posunicie nr}
translate P Castling {Roszada}
translate P EnPassantFile {Bicie w przelocie}
translate P ClearFen {Kopiuj FEN}
translate P PasteFen {Wklej pozycj FEN}
# ====== TODO To be translated ======
translate P SaveAndContinue {Save and continue}
# ====== TODO To be translated ======
translate P DiscardChangesAndContinue {Discard changes\nand continue}
# ====== TODO To be translated ======
translate P GoBack {Go back}

# Replace move dialog:
translate P ReplaceMove {Zmie posunicie}
translate P AddNewVar {Dodaj wariant}
# ====== TODO To be translated ======
translate P NewMainLine {New Main Line}
translate P ReplaceMoveMessage {Posunicie ju istnieje.

Moesz je zastpi, usuwajc dalszy cig partii lub doda nowy wariant.

(Mona wyczy to ostrzeenie, wyczajc opcj  "Zapytaj przed zastpieniem posuni" w menu
Opcje:Posunicia)}

# Make database read-only dialog:
translate P ReadOnlyDialog {Jeli zabezpieczysz t baz przed zapisem, zmiany bd zablokowane
adna partia nie bdzie zapisana ani zmodyfikowana, adne flagi nie bd zmienione.
Sortowanie i klasyfikacja debiutowa bd tylko tymczasowe.

eby usun zabezpieczenie przez zapisem, wystarczy zamkn baz i otworzy j ponownie.

Na pewno zabezpieczy baz przed zapisem?}

# Clear game dialog:
translate P ClearGameDialog {Partia zostaa zmieniona.

Na pewno kontynuowa, rezygnujc z wszelkich zmian?
}

# Exit dialog:
translate P ExitDialog {Na pewno zakoczy prac z programem?}
translate P ExitUnsaved {Nastpujce bazy zawieraj niezapisane zmiany. Jeli zamkniesz program teraz, zmiany zostan utracone.} 

# Import window:
translate P PasteCurrentGame {Wklej aktualn parti}
translate P ImportHelp1 {Wprowad lub wklej parti w formacie PGN w ponisz ramk.}
translate P ImportHelp2 {Tu bd wywietlane bdy przy importowaniu partii.}
# ====== TODO To be translated ======
translate P OverwriteExistingMoves {Overwrite existing moves ?}

# ECO Browser:
translate P ECOAllSections {Wszystkie kody ECO}
translate P ECOSection {Cz ECO}
translate P ECOSummary {Podsumowanie dla}
translate P ECOFrequency {Czstoci kodw dla}

# Opening Report:
translate P OprepTitle {Raport debiutowy}
translate P OprepReport {Raport}
translate P OprepGenerated {Utworzony przez}
translate P OprepStatsHist {Statystyka i historia}
translate P OprepStats {Statystyka}
translate P OprepStatAll {Wszystkie partie}
translate P OprepStatBoth {Obaj zawodnicy z Elo}
translate P OprepStatSince {Od}
translate P OprepOldest {Najdawniejsze partie}
translate P OprepNewest {Ostatnie partie}
translate P OprepPopular {Popularno}
translate P OprepFreqAll {Czsto w caej bazie:         }
translate P OprepFreq1   {W ostatnim roku:                }
translate P OprepFreq5   {W ostatnich piciu latach:      }
translate P OprepFreq10  {W ostatnich dziesiciu latach:  }
translate P OprepEvery {co %u partii}
translate P OprepUp {wicej o %u%s ni w caej bazie}
translate P OprepDown {mniej o %u%s ni w caej bazie}
translate P OprepSame {jak w caej bazie}
translate P OprepMostFrequent {Gracze najczciej stosujcy wariant}
translate P OprepMostFrequentOpponents {Przeciwnicy} 
translate P OprepRatingsPerf {Rankingi i wyniki}
translate P OprepAvgPerf {rednie rankingi i wyniki}
translate P OprepWRating {Ranking biaych}
translate P OprepBRating {Ranking czarnych}
translate P OprepWPerf {Wynik biaych}
translate P OprepBPerf {Wynik czarnych}
translate P OprepHighRating {Partie graczy o najwyszym rednim rankingu}
translate P OprepTrends {Wyniki}
translate P OprepResults {Dugo partii i czstoci}
translate P OprepLength {Dugo partii}
translate P OprepFrequency {Czsto}
translate P OprepWWins {Zwycistwa biaych:  }
translate P OprepBWins {Zwycistwa czarnych: }
translate P OprepDraws {Remisy:              }
translate P OprepWholeDB {caa baza}
translate P OprepShortest {Najkrtsze zwycistwa}
translate P OprepMovesThemes {Posunicia i motywy}
translate P OprepMoveOrders {Posunicia prowadzce do badanej pozycji}
translate P OprepMoveOrdersOne \
  {Badana pozycja powstawaa jedynie po posuniciach:}
translate P OprepMoveOrdersAll \
  {Badana pozycja powstawaa na %u sposobw:}
translate P OprepMoveOrdersMany \
  {Badana pozycja powstawaa na %u sposobw. Najczstsze %u to:}
translate P OprepMovesFrom {Posunicia w badanej pozycji}
translate P OprepMostFrequentEcoCodes {Najczstsze kody ECO} 
translate P OprepThemes {Motywy pozycyjne}
translate P OprepThemeDescription {Czsto motyww w pierwszych %u posuniciach partii} 
translate P OprepThemeSameCastling {Jednostronne roszady}
translate P OprepThemeOppCastling {Rnostronne roszady}
translate P OprepThemeNoCastling {Obie strony bez roszady}
translate P OprepThemeKPawnStorm {Atak pionowy na skrzydle krlewskim}
translate P OprepThemeQueenswap {Wymiana hetmanw}
translate P OprepThemeWIQP {Izolowany pion biaych} 
translate P OprepThemeBIQP {Izolowany pion czarnych}
translate P OprepThemeWP567 {Biay pion na 5/6/7 linii}
translate P OprepThemeBP234 {Czarny pion na 2/3/4 linii}
translate P OprepThemeOpenCDE {Otwarta kolumna c/d/e}
translate P OprepTheme1BishopPair {Jedna ze stron ma par gocw}
translate P OprepEndgames {Kocwki}
translate P OprepReportGames {Partie raportu}
translate P OprepAllGames {Wszystkie partie}
translate P OprepEndClass {Materia w pozycji kocowej}
translate P OprepTheoryTable {Teoria}
translate P OprepTableComment {Utworzono z %u partii o najwyszym rednim rankingu.}
translate P OprepExtraMoves {Dodatkowe posunicia w przypisach}
translate P OprepMaxGames {Maksymalna liczba partii w teorii}
translate P OprepViewHTML {rdo HTML} 
translate P OprepViewLaTeX {rdo LaTeX} 

# Player Report:
translate P PReportTitle {Raport o graczu}
translate P PReportColorWhite {with the White pieces} ;# ***
translate P PReportColorBlack {with the Black pieces} ;# ***
translate P PReportMoves {po %s}
translate P PReportOpenings {Debiuty}
translate P PReportClipbase {Wyczy schowek i skopiuj do niego wybrane partie}

# Piece Tracker window:
translate P TrackerSelectSingle {Lewy przycisk wybiera t figur.}
translate P TrackerSelectPair {Lewy przycisk wybiera t figur; prawy obie takie figury.}
translate P TrackerSelectPawn {Lewy przycisk wybiera tego piona; prawy wszystkie 8 pionw.}
translate P TrackerStat {Statystyka}
translate P TrackerGames {% partie z posuniciem na tym pole}
translate P TrackerTime {% czasu na tym polu}
translate P TrackerMoves {Posunicia}
translate P TrackerMovesStart {Podaj numer posunicia, od ktrego zacz ledzenie.}
translate P TrackerMovesStop {Podaj numer posunicia, na ktrym skoczy ledzenie.}

# Game selection dialogs:
translate P SelectAllGames {Wszystkie partie w bazie}
translate P SelectFilterGames {Partie w filtrze}
translate P SelectTournamentGames {Tylko partie z aktualnego turnieju}
translate P SelectOlderGames {Tylko wczeniejsze partie}

# Delete Twins window:
translate P TwinsNote {Partie zostan uznane za identyczne, jeli zostay rozegrane przez tych samych graczy i speniaj ustawione poniej kryteria. Krtsza z partii zostanie usunita. Uwaga: dobrze przez wyszukaniem powtrzonych partii sprawdzi pisowni nazwisk.}
translate P TwinsCriteria {Kryteria: co musi by jednakowe w obu partiach?}
translate P TwinsWhich {Przeszukiwane partie}
translate P TwinsColors {Kolory}
translate P TwinsEvent {Turniej:}
translate P TwinsSite {Miejsce:}
translate P TwinsRound {Runda:}
translate P TwinsYear {Rok:}
translate P TwinsMonth {Miesic:}
translate P TwinsDay {Dzie:}
translate P TwinsResult {Wynik:}
translate P TwinsECO {Kod ECO:}
translate P TwinsMoves {Posunicia:}
translate P TwinsPlayers {Porwnywanie nazwisk:}
translate P TwinsPlayersExact {Dokadne}
translate P TwinsPlayersPrefix {Tylko pierwsze 4 litery}
translate P TwinsWhen {Usuwanie znalezionych powtrzonych partii}
translate P TwinsSkipShort {Pomija partie krtsze ni 5 posuni?}
translate P TwinsUndelete {Odzyska wszystkie partie przed poszukiwaniem?}
translate P TwinsSetFilter {Wstawi wszystkie usunite partie do filtra?}
translate P TwinsComments {Zawsze zachowywa partie komentowane?}
translate P TwinsVars {Zawsze zachowywa partie z wariantami?}
translate P TwinsDeleteWhich {Ktr parti usun:} 
translate P TwinsDeleteShorter {Krtsz} 
translate P TwinsDeleteOlder {O niszym numerze}
translate P TwinsDeleteNewer {O wyszym numerze}
translate P TwinsDelete {Usu partie}

# Name editor window:
translate P NameEditType {Nazwa do wyboru}
translate P NameEditSelect {Partie do edycji}
translate P NameEditReplace {Zastp}
translate P NameEditWith {przez}
translate P NameEditMatches {Pasujce: Ctrl+1 do Ctrl+9 wybiera}
# ====== TODO To be translated ======
translate P CheckGames {Check games}
# ====== TODO To be translated ======
translate P CheckGamesWhich {Check games}
# ====== TODO To be translated ======
translate P CheckAll {All games}
# ====== TODO To be translated ======
translate P CheckSelectFilterGames {Only games in filter}

# Classify window:
translate P Classify {Przyporzdkowanie ECO}
translate P ClassifyWhich {Partie do przyporzdkowania ECO}
translate P ClassifyAll {Wszystkie partie (zmiana starych kodw ECO)}
translate P ClassifyYear {Wszystkie partie z ostatniego roku}
translate P ClassifyMonth {Wszystkie partie z ostatniego miesica}
translate P ClassifyNew {Tylko partie bez kodu ECO}
translate P ClassifyCodes {Kody ECO}
translate P ClassifyBasic {Tylko podstawowe ("B12", ...)}
translate P ClassifyExtended {Rozszerzone kody Scida ("B12j", ...)}

# Compaction:
translate P NameFile {Plik nazw}
translate P GameFile {Plik z partiami}
translate P Names {Nazwy}
translate P Unused {Nieuywane}
translate P SizeKb {Rozmiar (kb)}
translate P CurrentState {Status}
translate P AfterCompaction {Po uporzdkowaniu}
translate P CompactNames {Uporzdkuj nazwy}
translate P CompactGames {Uporzdkuj partie}
# ====== TODO To be translated ======
translate P NoUnusedNames "There are no unused names, so the name file is already fully compacted."
# ====== TODO To be translated ======
translate P NoUnusedGames "The game file is already fully compacted."
# ====== TODO To be translated ======
translate P NameFileCompacted {The name file for the database "[file tail [sc_base filename]]" was compacted.}
# ====== TODO To be translated ======
translate P GameFileCompacted {The game file for the database "[file tail [sc_base filename]]" was compacted.}

# Sorting:
translate P SortCriteria {Kryteria sortowania}
translate P AddCriteria {Dodaj kryteria}
translate P CommonSorts {Standardowe kryteria}
translate P Sort {Sortuj}

# Exporting:
translate P AddToExistingFile {Doda partie do pliku?}
translate P ExportComments {Eksportowa komentarze?}
translate P ExportVariations {Eksportowa warianty?}
translate P IndentComments {Wcinaj komentarze?}
translate P IndentVariations {Wcinaj warianty?}
translate P ExportColumnStyle {Kolumny (jedno posunicie w wierszu)?}
translate P ExportSymbolStyle {Styl znakw komentarza:}
translate P ExportStripMarks {Usuwa z komentarzy kody kolorowania pl/strzaek?} 

# Goto game/move dialogs:
translate P LoadGameNumber {Podaj numer partii do wczytania:}
translate P GotoMoveNumber {Id do posunicia nr:}

# Copy games dialog:
translate P CopyGames {Kopiuj partie}
translate P CopyConfirm {
 Czy na pewno skopiowa
 [::utils::thousands $nGamesToCopy] partii z filtra
 w bazie "$fromName"
 do bazy "$targetName"?
}
translate P CopyErr {Nie mona skopiowa partii}
translate P CopyErrSource {baza rdowa}
translate P CopyErrTarget {baza docelowa}
translate P CopyErrNoGames {nie ma partii w filtrze}
translate P CopyErrReadOnly {jest tylko do odczytu}
translate P CopyErrNotOpen {nie jest otwarta}

# Colors:
translate P LightSquares {Jasne pola}
translate P DarkSquares {Ciemne pola}
translate P SelectedSquares {Wybrane pola}
translate P SuggestedSquares {Wybrane posunicie}
translate P WhitePieces {Biae figury}
translate P BlackPieces {Czarne figury}
translate P WhiteBorder {Kontur biaych figur}
translate P BlackBorder {Kontur czarnych figur}

# Novelty window:
translate P FindNovelty {Znajd nowink}
translate P Novelty {Nowinka}
translate P NoveltyInterrupt {Poszukiwanie nowinki przerwano}
translate P NoveltyNone {Nie znaleziono nowinki w partii}
translate P NoveltyHelp {
Scid znajdzie pierwsze posunicie w partii, po ktrym powstanie pozycja niewystpujca ani w bazie, ani w ksice debiutowej.
}

# Sounds configuration:
translate P SoundsFolder {Sound Files Folder} ;# ***
translate P SoundsFolderHelp {The folder should contain the files King.wav, a.wav, 1.wav, etc} ;# ***
translate P SoundsAnnounceOptions {Move Announcement Options} ;# ***
translate P SoundsAnnounceNew {Announce new moves as they are made} ;# ***
translate P SoundsAnnounceForward {Announce moves when moving forward one move} ;# ***
translate P SoundsAnnounceBack {Announce when retracting or moving back one move} ;# ***

# Upgrading databases:
translate P Upgrading {Konwersja}
translate P ConfirmOpenNew {
Ta baza jest zapisana w starym formacie (Scid 3) i nie moe zosta otwarta w nowszej wersji
Scid-a. Baza zostaa ju automatycznie przekonwertowana do nowego formatu.

Czy otworzy now wersj bazy?
}
translate P ConfirmUpgrade {
Ta baza jest zapisana w starym formacie (Scid 3) i nie moe zosta otwarta w nowszej wersji Scid-a. eby mc otworzy baz, trzeba przekonwertowa j do nowego formatu.

Konwersja utworzy now wersj bazy - stara wersja nie zostanie zmieniona ani usunita.

Moe to zaj troch czasu, ale jest to operacja jednorazowa. Moesz j przerwa, jeli potrwa za dugo.

Przekonwertowa baz?
}

# Recent files options:
translate P RecentFilesMenu {Liczba ostatnich plikw w menu Plik} 
translate P RecentFilesExtra {Liczba ostatnich plikw w dodatkowym podmenu} 

# My Player Names options:
translate P MyPlayerNamesDescription {
Podaj list preferowanych nazwisk graczy, po jednym w wierszu. W nazwiskach mona stosowa znaki specjalne (np. "?" - dowolny znak, "*" - dowolna sekwencja znakw).

Wszystkie partie grane przez jednego z graczy z listy bd wywietlane z jego perspektywy.
}
# ====== TODO To be translated ======
translate P showblunderexists {show blunder exists}
# ====== TODO To be translated ======
translate P showblundervalue {show blunder value}
# ====== TODO To be translated ======
translate P showscore {show score}
# ====== TODO To be translated ======
translate P coachgame {coach game}
# ====== TODO To be translated ======
translate P configurecoachgame {configure coach game}
# ====== TODO To be translated ======
translate P configuregame {Game configuration}
# ====== TODO To be translated ======
translate P Phalanxengine {Phalanx engine}
# ====== TODO To be translated ======
translate P Coachengine {Coach engine}
# ====== TODO To be translated ======
translate P difficulty {difficulty}
# ====== TODO To be translated ======
translate P hard {hard}
# ====== TODO To be translated ======
translate P easy {easy}
# ====== TODO To be translated ======
translate P Playwith {Play with}
# ====== TODO To be translated ======
translate P white {white}
# ====== TODO To be translated ======
translate P black {black}
# ====== TODO To be translated ======
translate P both {both}
# ====== TODO To be translated ======
translate P Play {Play}
# ====== TODO To be translated ======
translate P Noblunder {No blunder}
# ====== TODO To be translated ======
translate P blunder {blunder}
# ====== TODO To be translated ======
translate P Noinfo {-- No info --}
# ====== TODO To be translated ======
translate P PhalanxOrTogaMissing {Phalanx or Toga not found}
# ====== TODO To be translated ======
# ====== TODO To be translated ======
# ====== TODO To be translated ======
translate P moveblunderthreshold {move is a blunder if loss is greater than}
# ====== TODO To be translated ======
translate P limitanalysis {limit engine analysis time}
# ====== TODO To be translated ======
translate P seconds {seconds}
# ====== TODO To be translated ======
translate P Abort {Abort}
# ====== TODO To be translated ======
translate P Resume {Resume}
# ====== TODO To be translated ======
translate P OutOfOpening {Out of opening}
# ====== TODO To be translated ======
translate P NotFollowedLine {You did not follow the line}
# ====== TODO To be translated ======
translate P DoYouWantContinue {Do you want yo continue ?}
# ====== TODO To be translated ======
translate P CoachIsWatching {Coach is watching}
# ====== TODO To be translated ======
translate P Ponder {Permanent thinking}
# ====== TODO To be translated ======
translate P LimitELO {Limit ELO strength}
# ====== TODO To be translated ======
translate P DubiousMovePlayedTakeBack {Dubious move played, do you want to take back ?}
# ====== TODO To be translated ======
translate P WeakMovePlayedTakeBack {Weak move played, do you want to take back ?}
# ====== TODO To be translated ======
translate P BadMovePlayedTakeBack {Bad move played, do you want to take back ?}
# ====== TODO To be translated ======
translate P Iresign {I resign}
# ====== TODO To be translated ======
translate P yourmoveisnotgood {your move is not good}
# ====== TODO To be translated ======
translate P EndOfVar {End of variation}
# ====== TODO To be translated ======
translate P Openingtrainer {Opening trainer}
# ====== TODO To be translated ======
translate P DisplayCM {Display candidate moves}
# ====== TODO To be translated ======
translate P DisplayCMValue {Display candidate moves value}
# ====== TODO To be translated ======
translate P DisplayOpeningStats {Show statistics}
# ====== TODO To be translated ======
translate P ShowReport {Show report}
# ====== TODO To be translated ======
translate P NumberOfGoodMovesPlayed {good moves played}
# ====== TODO To be translated ======
translate P NumberOfDubiousMovesPlayed {dubious moves played}
# ====== TODO To be translated ======
translate P NumberOfMovesPlayedNotInRepertoire {moves played not in repertoire}
# ====== TODO To be translated ======
translate P NumberOfTimesPositionEncountered {times position encountered}
# ====== TODO To be translated ======
translate P PlayerBestMove  {Allow only best moves}
# ====== TODO To be translated ======
translate P OpponentBestMove {Opponent plays best moves}
# ====== TODO To be translated ======
translate P OnlyFlaggedLines {Only flagged lines}
# ====== TODO To be translated ======
translate P resetStats {Reset statistics}
# ====== TODO To be translated ======
translate P Repertoiretrainingconfiguration {Repertoire training configuration}
# ====== TODO To be translated ======
translate P Loadingrepertoire {Loading repertoire}
# ====== TODO To be translated ======
translate P Movesloaded {Moves loaded}
# ====== TODO To be translated ======
translate P Repertoirenotfound {Repertoire not found}
# ====== TODO To be translated ======
translate P Openfirstrepertoirewithtype {Open first a repertoire database with icon/type set to the right side}
# ====== TODO To be translated ======
translate P Movenotinrepertoire {Move not in repertoire}
# ====== TODO To be translated ======
translate P PositionsInRepertoire {Positions in repertoire}
# ====== TODO To be translated ======
translate P PositionsNotPlayed {Positions not played}
# ====== TODO To be translated ======
translate P PositionsPlayed {Positions played}
# ====== TODO To be translated ======
translate P Success {Success}
# ====== TODO To be translated ======
translate P DubiousMoves {Dubious moves}
# ====== TODO To be translated ======
translate P OutOfRepertoire {OutOfRepertoire}
# ====== TODO To be translated ======
# ====== TODO To be translated ======
# ====== TODO To be translated ======
# ====== TODO To be translated ======
translate P ConfigureTactics {Configure tactics}
# ====== TODO To be translated ======
translate P ResetScores {Reset scores}
# ====== TODO To be translated ======
translate P LoadingBase {Loading base}
# ====== TODO To be translated ======
translate P Tactics {Tactics}
# ====== TODO To be translated ======
translate P ShowSolution {Show solution}
# ====== TODO To be translated ======
translate P NextExercise {Next exercise}
# ====== TODO To be translated ======
translate P PrevExercise {previous exercise}
# ====== TODO To be translated ======
translate P StopTraining {Stop training}
# ====== TODO To be translated ======
translate P Next {Next}
# ====== TODO To be translated ======
translate P ResettingScore {Resetting score}
# ====== TODO To be translated ======
translate P LoadingGame {Loading game}
# ====== TODO To be translated ======
translate P MateFound {Mate found}
# ====== TODO To be translated ======
translate P BestSolutionNotFound {Best solution NOT found !}
# ====== TODO To be translated ======
translate P MateNotFound {Mate not found}
# ====== TODO To be translated ======
translate P ShorterMateExists {Shorter mate exists}
# ====== TODO To be translated ======
translate P ScorePlayed {Score played}
# ====== TODO To be translated ======
translate P Expected {expected}
# ====== TODO To be translated ======
translate P ChooseTrainingBase {Choose training base}
# ====== TODO To be translated ======
translate P Thinking {Thinking}
# ====== TODO To be translated ======
translate P AnalyzeDone {Analyze done}
# ====== TODO To be translated ======
translate P WinWonGame {Win won game}
# ====== TODO To be translated ======
translate P Lines {Lines}
# ====== TODO To be translated ======
translate P ConfigureUCIengine {Configure UCI engine}
# ====== TODO To be translated ======
translate P SpecificOpening {Specific opening}
# ====== TODO To be translated ======
translate P StartNewGame {Start new game}
# ====== TODO To be translated ======
translate P FixedLevel {Fixed level}
# ====== TODO To be translated ======
translate P Opening {Opening}
# ====== TODO To be translated ======
translate P RandomLevel {Random level}
# ====== TODO To be translated ======
translate P StartFromCurrentPosition {Start from current position}
# ====== TODO To be translated ======
translate P FixedDepth {Fixed depth}
# ====== TODO To be translated ======
translate P Nodes {Nodes} 
# ====== TODO To be translated ======
translate P Depth {Depth}
# ====== TODO To be translated ======
translate P Time {Time} 
# ====== TODO To be translated ======
translate P SecondsPerMove {Seconds per move}
# ====== TODO To be translated ======
translate P Engine {Engine}
# ====== TODO To be translated ======
translate P TimeMode {Time mode}
# ====== TODO To be translated ======
translate P TimeBonus {Time + bonus}
# ====== TODO To be translated ======
# ====== TODO To be translated ======
translate P TimeMin {min}
# ====== TODO To be translated ======
translate P TimeSec {sec}
# ====== TODO To be translated ======
# ====== TODO To be translated ======
# ====== TODO To be translated ======
translate P AllExercisesDone {All exercises done}
# ====== TODO To be translated ======
translate P MoveOutOfBook {Move out of book}
# ====== TODO To be translated ======
translate P LastBookMove {Last book move}
# ====== TODO To be translated ======
translate P AnnotateSeveralGames {Annotate several games\nfrom current to :}
# ====== TODO To be translated ======
translate P FindOpeningErrors {Find opening errors}
# ====== TODO To be translated ======
translate P MarkTacticalExercises {Mark tactical exercises}
# ====== TODO To be translated ======
translate P UseBook {Use book}
# ====== TODO To be translated ======
translate P MultiPV {Multiple variations}
# ====== TODO To be translated ======
translate P Hash {Hash memory}
# ====== TODO To be translated ======
translate P OwnBook {Use engine book}
# ====== TODO To be translated ======
translate P BookFile {Opening book}
# ====== TODO To be translated ======
translate P AnnotateVariations {Annotate variations}
# ====== TODO To be translated ======
translate P ShortAnnotations {Short annotations}
# ====== TODO To be translated ======
translate P addAnnotatorTag {Add annotator tag}
# ====== TODO To be translated ======
translate P AddScoreToShortAnnotations {Add score to short annotations}
# ====== TODO To be translated ======
translate P Export {Export}
# ====== TODO To be translated ======
translate P BookPartiallyLoaded {Book partially loaded}
# ====== TODO To be translated ======
translate P Calvar {Calculation of variations}
# ====== TODO To be translated ======
translate P ConfigureCalvar {Configuration}
# ====== TODO To be translated ======
# ====== TODO To be translated ======
translate P Reti {Reti}
# ====== TODO To be translated ======
translate P English {English}
# ====== TODO To be translated ======
translate P d4Nf6Miscellaneous {1.d4 Nf6 Miscellaneous}
# ====== TODO To be translated ======
translate P Trompowsky {Trompowsky}
# ====== TODO To be translated ======
translate P Budapest {Budapest}
# ====== TODO To be translated ======
translate P OldIndian {Old Indian}
# ====== TODO To be translated ======
translate P BenkoGambit {Benko Gambit}
# ====== TODO To be translated ======
translate P ModernBenoni {Modern Benoni}
# ====== TODO To be translated ======
translate P DutchDefence {Dutch Defence}
# ====== TODO To be translated ======
translate P Scandinavian {Scandinavian}
# ====== TODO To be translated ======
translate P AlekhineDefence {Alekhine Defence}
# ====== TODO To be translated ======
translate P Pirc {Pirc}
# ====== TODO To be translated ======
translate P CaroKann {Caro-Kann}
# ====== TODO To be translated ======
translate P CaroKannAdvance {Caro-Kann Advance}
# ====== TODO To be translated ======
translate P Sicilian {Sicilian}
# ====== TODO To be translated ======
translate P SicilianAlapin {Sicilian Alapin}
# ====== TODO To be translated ======
translate P SicilianClosed {Sicilian Closed}
# ====== TODO To be translated ======
translate P SicilianRauzer {Sicilian Rauzer}
# ====== TODO To be translated ======
translate P SicilianDragon {Sicilian Dragon}
# ====== TODO To be translated ======
translate P SicilianScheveningen {Sicilian Scheveningen}
# ====== TODO To be translated ======
translate P SicilianNajdorf {Sicilian Najdorf}
# ====== TODO To be translated ======
translate P OpenGame {Open Game}
# ====== TODO To be translated ======
translate P Vienna {Vienna}
# ====== TODO To be translated ======
translate P KingsGambit {King's Gambit}
# ====== TODO To be translated ======
translate P RussianGame {Russian Game}
# ====== TODO To be translated ======
translate P ItalianTwoKnights {Italian/Two Knights}
# ====== TODO To be translated ======
translate P Spanish {Spanish}
# ====== TODO To be translated ======
translate P SpanishExchange {Spanish Exchange}
# ====== TODO To be translated ======
translate P SpanishOpen {Spanish Open}
# ====== TODO To be translated ======
translate P SpanishClosed {Spanish Closed}
# ====== TODO To be translated ======
translate P FrenchDefence {French Defence}
# ====== TODO To be translated ======
translate P FrenchAdvance {French Advance}
# ====== TODO To be translated ======
translate P FrenchTarrasch {French Tarrasch}
# ====== TODO To be translated ======
translate P FrenchWinawer {French Winawer}
# ====== TODO To be translated ======
translate P FrenchExchange {French Exchange}
# ====== TODO To be translated ======
translate P QueensPawn {Queen's Pawn}
# ====== TODO To be translated ======
translate P Slav {Slav}
# ====== TODO To be translated ======
translate P QGA {QGA}
# ====== TODO To be translated ======
translate P QGD {QGD}
# ====== TODO To be translated ======
translate P QGDExchange {QGD Exchange}
# ====== TODO To be translated ======
translate P SemiSlav {Semi-Slav}
# ====== TODO To be translated ======
translate P QGDwithBg5 {QGD with Bg5}
# ====== TODO To be translated ======
translate P QGDOrthodox {QGD Orthodox}
# ====== TODO To be translated ======
translate P Grunfeld {Grnfeld}
# ====== TODO To be translated ======
translate P GrunfeldExchange {Grnfeld Exchange}
# ====== TODO To be translated ======
translate P GrunfeldRussian {Grnfeld Russian}
# ====== TODO To be translated ======
translate P Catalan {Catalan}
# ====== TODO To be translated ======
translate P CatalanOpen {Catalan Open}
# ====== TODO To be translated ======
translate P CatalanClosed {Catalan Closed}
# ====== TODO To be translated ======
translate P QueensIndian {Queen's Indian}
# ====== TODO To be translated ======
translate P NimzoIndian {Nimzo-Indian}
# ====== TODO To be translated ======
translate P NimzoIndianClassical {Nimzo-Indian Classical}
# ====== TODO To be translated ======
translate P NimzoIndianRubinstein {Nimzo-Indian Rubinstein}
# ====== TODO To be translated ======
translate P KingsIndian {King's Indian}
# ====== TODO To be translated ======
translate P KingsIndianSamisch {King's Indian Smisch}
# ====== TODO To be translated ======
translate P KingsIndianMainLine {King's Indian Main Line}
# ====== TODO To be translated ======
translate P ConfigureFics {Configure FICS}
# ====== TODO To be translated ======
translate P FICSGuest {Login as Guest}
# ====== TODO To be translated ======
translate P FICSServerPort {Server port}
# ====== TODO To be translated ======
translate P FICSServerAddress {IP Address}
# ====== TODO To be translated ======
translate P FICSRefresh {Refresh}
# ====== TODO To be translated ======
translate P FICSTimesealPort {Timeseal port}
# ====== TODO To be translated ======
translate P FICSSilence {Silence}
# ====== TODO To be translated ======
translate P FICSOffers {Offers}
# ====== TODO To be translated ======
translate P FICSConsole {Console}
# ====== TODO To be translated ======
translate P FICSGames {Games}
# ====== TODO To be translated ======
translate P FICSUnobserve {Stop observing game}
# ====== TODO To be translated ======
translate P FICSProfile {Display your history and profile}
# ====== TODO To be translated ======
translate P FICSRelayedGames {Relayed games}
# ====== TODO To be translated ======
translate P FICSFindOpponent {Find opponent}
# ====== TODO To be translated ======
translate P FICSTakeback {Takeback}
# ====== TODO To be translated ======
translate P FICSTakeback2 {Takeback 2}
# ====== TODO To be translated ======
translate P FICSInitTime {Initial time (min)}
# ====== TODO To be translated ======
translate P FICSIncrement {Increment (sec)}
# ====== TODO To be translated ======
translate P FICSRatedGame {Rated Game}
# ====== TODO To be translated ======
translate P FICSAutoColour {automatic}
# ====== TODO To be translated ======
translate P FICSManualConfirm {confirm manually}
# ====== TODO To be translated ======
translate P FICSFilterFormula {Filter with formula}
# ====== TODO To be translated ======
translate P FICSIssueSeek {Issue seek}
# ====== TODO To be translated ======
translate P FICSChallenge {Challenge}
# ====== TODO To be translated ======
translate P FICSAccept {accept}
# ====== TODO To be translated ======
translate P FICSDecline {decline}
# ====== TODO To be translated ======
translate P FICSColour {Colour}
# ====== TODO To be translated ======
translate P FICSSend {send}
# ====== TODO To be translated ======
translate P FICSConnect {Connect}
# ====== TODO To be translated ======
translate P FICSdefaultuservars {Use default variables}
# ====== TODO To be translated ======
translate P FICSObserveconfirm {Do you want to observe game}
# ====== TODO To be translated ======
translate P GameReview {Game review}
# ====== TODO To be translated ======
translate P GameReviewTimeExtended {Time extended}
# ====== TODO To be translated ======
translate P GameReviewMargin {Error margin}
# ====== TODO To be translated ======
translate P GameReviewAutoContinue {Auto continue when move is correct}
# ====== TODO To be translated ======
translate P GameReviewReCalculate {Use extended time}
# ====== TODO To be translated ======
translate P GameReviewAnalyzingMovePlayedDuringTheGame {Analyzing move played during the game}
# ====== TODO To be translated ======
translate P GameReviewAnalyzingThePosition {Analyzing the position}
# ====== TODO To be translated ======
translate P GameReviewEnterYourMove {Enter your move}
# ====== TODO To be translated ======
translate P GameReviewCheckingYourMove {Checking your move}
# ====== TODO To be translated ======
translate P GameReviewYourMoveWasAnalyzed {Your move was analyzed}
# ====== TODO To be translated ======
translate P GameReviewYouPlayedSameMove {You played the same move as in match}
# ====== TODO To be translated ======
translate P GameReviewScoreOfYourMove {Score of your move}
# ====== TODO To be translated ======
translate P GameReviewGameMoveScore {Game move's score}
# ====== TODO To be translated ======
translate P GameReviewEngineScore {Engine's score}
# ====== TODO To be translated ======
translate P GameReviewYouPlayedLikeTheEngine {You played like the engine}
# ====== TODO To be translated ======
translate P GameReviewNotEngineMoveButGoodMove {Not the engine move, but is also a good move}
# ====== TODO To be translated ======
translate P GameReviewMoveNotGood {This move is not good, score is}
# ====== TODO To be translated ======
translate P GameReviewMovesPlayedLike {Moves played like}
# ====== TODO To be translated ======
translate P GameReviewMovesPlayedEngine {Moves played like engine}
# ====== TODO To be translated ======
translate P CCDlgConfigureWindowTitle {Configure Correspondence Chess}
# ====== TODO To be translated ======
translate P CCDlgCGeneraloptions {General Options}
# ====== TODO To be translated ======
translate P CCDlgDefaultDB {Default Database:}
# ====== TODO To be translated ======
translate P CCDlgInbox {Inbox (path):}
# ====== TODO To be translated ======
translate P CCDlgOutbox {Outbox (path):}
# ====== TODO To be translated ======
translate P CCDlgXfcc {Xfcc Configuration:}
# ====== TODO To be translated ======
translate P CCDlgExternalProtocol {External Protocol Handler (e.g. Xfcc)}
# ====== TODO To be translated ======
translate P CCDlgFetchTool {Fetch Tool:}
# ====== TODO To be translated ======
translate P CCDlgSendTool {Send Tool:}
# ====== TODO To be translated ======
translate P CCDlgEmailCommunication {eMail Communication}
# ====== TODO To be translated ======
translate P CCDlgMailPrg {Mail program:}
# ====== TODO To be translated ======
translate P CCDlgBCCAddr {(B)CC Address:}
# ====== TODO To be translated ======
translate P CCDlgMailerMode {Mode:}
# ====== TODO To be translated ======
translate P CCDlgThunderbirdEg {e.g. Thunderbird, Mozilla Mail, Icedove...}
# ====== TODO To be translated ======
translate P CCDlgMailUrlEg {e.g. Evolution}
# ====== TODO To be translated ======
translate P CCDlgClawsEg {e.g Sylpheed Claws}
# ====== TODO To be translated ======
translate P CCDlgmailxEg {e.g. mailx, mutt, nail...}
# ====== TODO To be translated ======
translate P CCDlgAttachementPar {Attachment parameter:}
# ====== TODO To be translated ======
translate P CCDlgInternalXfcc {Use internal Xfcc support}
# ====== TODO To be translated ======
translate P CCDlgConfirmXfcc {Confirm moves}
# ====== TODO To be translated ======
translate P CCDlgSubjectPar {Subject parameter:}
# ====== TODO To be translated ======
translate P CCDlgDeleteBoxes {Empty In-/Outbox}
# ====== TODO To be translated ======
translate P CCDlgDeleteBoxesText {Do you really want to empty your In- and Outbox folders for Correspondence Chess? This requires a new sync to show the last state of your games}
# ====== TODO To be translated ======
translate P CCDlgConfirmMove {Confirm move}
# ====== TODO To be translated ======
translate P CCDlgConfirmMoveText {If you confirm, the following move and comment will be sent to the server:}
# ====== TODO To be translated ======
translate P CCDlgDBGameToLong {Inconsistent Mainline}
# ====== TODO To be translated ======
translate P CCDlgDBGameToLongError {The mainline in your database is longer than the game in your Inbox. If the Inbox contains current games, i.e. right after a sync, some moves were added to the mainline in the database erroneously.\nIn this case please shorten the mainline to (at max) move\n}
# ====== TODO To be translated ======
translate P CCDlgStartEmail {Start new eMail game}
# ====== TODO To be translated ======
translate P CCDlgYourName {Your Name:}
# ====== TODO To be translated ======
translate P CCDlgYourMail {Your eMail Address:}
# ====== TODO To be translated ======
translate P CCDlgOpponentName {Opponents Name:}
# ====== TODO To be translated ======
translate P CCDlgOpponentMail {Opponents eMail Address:}
# ====== TODO To be translated ======
translate P CCDlgGameID {Game ID (unique):}
# ====== TODO To be translated ======
translate P CCDlgTitNoOutbox {Scid: Correspondence Chess Outbox}
# ====== TODO To be translated ======
translate P CCDlgTitNoInbox {Scid: Correspondence Chess Inbox}
# ====== TODO To be translated ======
translate P CCDlgTitNoGames {Scid: No Correspondence Chess Games}
# ====== TODO To be translated ======
translate P CCErrInboxDir {Correspondence Chess inbox directory:}
# ====== TODO To be translated ======
translate P CCErrOutboxDir {Correspondence Chess outbox directory:}
# ====== TODO To be translated ======
translate P CCErrDirNotUsable {does not exist or is not accessible!\nPlease check and correct the settings.}
# ====== TODO To be translated ======
translate P CCErrNoGames {does not contain any games!\nPlease fetch them first.}
# ====== TODO To be translated ======
translate P CCDlgTitNoCCDB {Scid: No Correspondence Database}
# ====== TODO To be translated ======
translate P CCErrNoCCDB {No Database of type 'Correspondence' is opened. Please open one before using correspondence chess functions.}
# ====== TODO To be translated ======
translate P CCFetchBtn {Fetch games from the server and process the Inbox}
# ====== TODO To be translated ======
translate P CCPrevBtn {Goto previous game}
# ====== TODO To be translated ======
translate P CCNextBtn {Goto next game}
# ====== TODO To be translated ======
translate P CCSendBtn {Send move}
# ====== TODO To be translated ======
translate P CCEmptyBtn {Empty In- and Outbox}
# ====== TODO To be translated ======
translate P CCHelpBtn {Help on icons and status indicators.\nFor general Help press F1!}
# ====== TODO To be translated ======
translate P CCDlgServerName {Server Name:}
# ====== TODO To be translated ======
translate P CCDlgLoginName  {Login Name:}
# ====== TODO To be translated ======
translate P CCDlgPassword   {Password:}
# ====== TODO To be translated ======
translate P CCDlgURL        {Xfcc-URL:}
# ====== TODO To be translated ======
translate P CCDlgRatingType {Rating Type:}
# ====== TODO To be translated ======
translate P CCDlgDuplicateGame {Non-unique game ID}
# ====== TODO To be translated ======
translate P CCDlgDuplicateGameError {This game exists more than once in your database. Please delete all duplicates and compact your game file (File/Maintenance/Compact Database).}
# ====== TODO To be translated ======
translate P CCDlgSortOption {Sorting:}
# ====== TODO To be translated ======
translate P CCDlgListOnlyOwnMove {Only games I have the move}
# ====== TODO To be translated ======
translate P CCOrderClassicTxt {Site, Event, Round, Result, White, Black}
# ====== TODO To be translated ======
translate P CCOrderMyTimeTxt {My Clock}
# ====== TODO To be translated ======
translate P CCOrderTimePerMoveTxt {Time per move till next time control}
# ====== TODO To be translated ======
translate P CCOrderStartDate {Start date}
# ====== TODO To be translated ======
translate P CCOrderOppTimeTxt {Opponents Clock}
# ====== TODO To be translated ======
translate P CCDlgConfigRelay {Configure ICCF observations}
# ====== TODO To be translated ======
translate P CCDlgConfigRelayHelp {Go to the games page on http://www.iccf-webchess.com and display the game to be observed.  If you see the chessboard copy the URL from your browser to the list below. One URL per line only!\nExample: http://www.iccf-webchess.com/MakeAMove.aspx?id=266452}
# ====== TODO To be translated ======
translate P ExtHWConfigConnection {Configure external hardware}
# ====== TODO To be translated ======
translate P ExtHWPort {Port}
# ====== TODO To be translated ======
translate P ExtHWEngineCmd {Engine command}
# ====== TODO To be translated ======
translate P ExtHWEngineParam {Engine parameter}
# ====== TODO To be translated ======
translate P ExtHWShowButton {Show button}
# ====== TODO To be translated ======
translate P ExtHWHardware {Hardware}
# ====== TODO To be translated ======
translate P ExtHWNovag {Novag Citrine}
# ====== TODO To be translated ======
translate P ExtHWInputEngine {Input Engine}
# ====== TODO To be translated ======
translate P ExtHWNoBoard {No board}
# ====== TODO To be translated ======
translate P NovagReferee {Referee}
# ====== TODO To be translated ======
translate P IEConsole {Input Engine Console}
# ====== TODO To be translated ======
translate P IESending {Moves sent for}
# ====== TODO To be translated ======
translate P IESynchronise {Synchronise}
# ====== TODO To be translated ======
translate P IERotate  {Rotate}
# ====== TODO To be translated ======
translate P IEUnableToStart {Unable to start Input Engine:}
# ====== TODO To be translated ======
translate P DoneWithPosition {Done with position}
# ====== TODO To be translated ======
translate P Board {Board}
# ====== TODO To be translated ======
translate P showGameInfo {Show game info}
# ====== TODO To be translated ======
translate P autoResizeBoard {Automatic resize of board}
# ====== TODO To be translated ======
translate P DockTop {Move to top}
# ====== TODO To be translated ======
translate P DockBottom {Move to bottom}
# ====== TODO To be translated ======
translate P DockLeft {Move to left}
# ====== TODO To be translated ======
translate P DockRight {Move to right}
# ====== TODO To be translated ======
translate P Undock {Undock}
# ====== TODO To be translated ======
translate P ChangeIcon {Change icon...}
# ====== TODO To be translated ======
}

### Tips of the day in Polish:

set tips(P) {
  {
    Scid ma ponad 30 <a Index>stron pomocy</a> i w wikszoci okien Scida
    nacinicie klawisza <b>F1</b> spowoduje wywietlenie odpowiedniej
    strony.
  }
  {
    Niektre okna Scida (np. informacje pod szachownic,
    <a Switcher>przecznik baz</a>) maj menu przywoywane prawym przyciskiem
    myszy. Sprbuj nacisn prawy przycisk myszy w kadym oknie, by
    sprawdzi, czy menu jest dostpne i jakie funkcje zawiera.
  }
  {
    Scid pozwala wprowadza posunicia na kilka rnych sposobw.
    Moesz uy myszy (z wywietlaniem moliwych posuni lub bez)
    albo klawiatury (z opcjonalnym automatycznym dopenianiem).
    Wicej informacji mona znale na stronie pomocy
    <a Moves>Wprowadzenie posuni</a>.
  }
  {
    Jeli masz kilka baz, ktre otwierasz czsto, dodaj
    <a Bookmarks>zakadk</a> dla kadej z nich. Umoliwi to atwe
    otwieranie baz z menu.
  }
  {
    Moesz obejrze wszystkie posunicia w aktualnej partii
    (z wariantami i komentarzami lub bez) w <a PGN>Oknie PGN</a>.
    W oknie PGN moesz przej do dowolnego posunicia, klikajc
    na nim lewym przyciskiem myszy oraz uy rodkowego lub prawego
    przycisku myszy do obejrzenia aktualnej pozycji.
  }
  {
    Moesz kopiowa partie z bazy do bazy przecigajc je lewym
    przyciskiem myszy w oknie <a Switcher>Przecznika baz</a>.
  }
  {
    Scid moe otwiera pliki PGN, nawet jeli s one skompresowane
    Gzip-em (z rozszerzeniem .gz). Pliki PGN mog by jedynie
    czytane, wic jeli chcesz co zmieni, utwrz now baz Scida
    i skopiuj do niej partie z pliku PGN.
  }
  {
    Jeli masz du baz i czsto uywasz okna <a Tree>Drzewa wariantw</a>,
    warto wybra polecenie <b>Twrz standardowy plik cache/b>
    z menu Plik okna Drzewo wariantw. Statystyki dla najpopularniejszych
    pozycji debiutowych zostan zapamitane w pliku, co przyspieszy
    dziaanie drzewa.
  }
  {
    <a Tree>Drzewo wariantw</a> moe pokaza wszystkie posunicia
    z aktualnej pozycji, ale jeli chcesz zobaczy wszystkie kolejnoci
    posuni prowadzce do aktualnej pozycji, moesz uy
    <a OpReport>Raportu debiutowego</a>.
  }
  {
    W <a GameList>licie partii</a> kliknij lewym lub prawym przyciskiem
    myszy na nagwku wybranej kolumny, by zmieni jej szeroko.
  }
  {
    W oknie <a PInfo>Informacja o graczu</a> (kliknij na nazwisku gracza
    w polu pod szachownic, by je otworzy) moesz atwo ustawi
    <a Searches Filter>filtr</a> zawierajcy wszystkie partie danego
    gracza zakoczeone wybranym wynikiem, klikajc na dowolnej wartoci
    wywietlanej na <red>czerowono</red>.
  }
  {
    Podczas pracy nad debiutem warto uy funkcji
    <a Searches Board>wyszukiwania pozycji</a> z opcj <b>Pionki</b> lub
    <b>Kolumny</b>. Pozowli to znale inne warianty debiutowe z t
    sam struktur pionow.
  }
  {
    W polu informacji o partii (pod szachownic) mona uy prawego
    przycisku myszy, by wywietli menu konfiguracji pola. Mona
    np. ukry nastpne posunicie, co jest przydatne przy rozwizywaniu
    zada.
  }
  {
    Jeli czsto uywasz funkcji <a Maintenance>obsugi</a> na duej
    bazie, moesz uy okna <a Maintenance Cleaner>Zestaw zada</a>
    do wykonania kilka funkcji naraz.
  }
  {
    Jeli masz du baz, w ktrej wikszo partii ma ustawiony
    znacznik EventDate, moesz <a Sorting>posortowa</a> j
    wg tego znacznika (zamiast Daty). Dziki temu wszystkie partie
    z jednego turnieju znajd si koo siebie.
  }
  {
    Przed uyciem funkcji <a Maintenance Twins>usuwania podwjnych partii</a>
    dobrze jest <a Maintenance Spellcheck>sprawdzi pisowni</a>
    nazwisk w bazie, co usprawni wyszukiwanie powtrze.
  }
  {
    <a Flags>Flagi</a> s przydatne do oznaczania partii, ktre
    zawieraj wane motywy taktyczne, strkutury pionowe, nowinki itd.
    Potem moesz znale takie partie
    <a Searches Header>wyszukiwaniem wg nagwka</a>.
  }
  {
    Jeli przegldasz parti i chcesz sprawdzi jaki wariant nie
    zmieniajc partii, moesz wczy tryb testowania wariantu
    (klawisz <b>Ctrl+spacja</b> lub ikona na pasku narzdziowym).
    Po wyczeniu trybu testowania powrcisz do pozycji z partii.
  }
  {
    eby znale najwaniejsze partie (z najsilniejszymi przeciwnikami),
    w ktrych powstaa aktualna pozycja, otwrz <a Tree>Drzewo wariantw</a>
    i wybierz list najlepszych partii. Moesz nawet wybra tylko
    partie zakoczone konkretnym wynikiem.
  }
  {
    Dobr metod na nauk debiutu przy uyciu duej bazy jest
    wczenie trybu treningu w <a Tree>Drzewie wariantw</a>
    i gra z programem. Pozwala to sprawdzi, ktre posunicia s
    grane najczciej.
  }
  {
    Jeli masz otwarte dwie bazy i chcesz obejrze
    <a Tree>Drzewo wariantw</a> dla pierwszej bazy, przegldajc
    parti z drugiej, kliknij przycisk <b>Blokada</b> na drzewie,
    by zablokowa je na pierwszej bazie, a nastpnie przecz si
    do drugiej bazy.
  }
  {
    Okno <a Tmt>Turnieje</a> jest przydatne nie tylko do znajdowania
    turniejw, ale pozwala take sprawdzi, w jakich turniejach gra
    ostatnio dany zawodnik i jakie turnieje s rozgrywane w wybranym
    kraju.
  }
  {
    Moesz uy jednego z wielu typowych wzorcw w oknie
    <a Searches Material>Wyszukiwania wg materiau</a> do znalezienia
    partii do studiowania debiutw lub gry rodkowej.
  }
  {
    W oknie <a Searches Material>Wyszukiwanie wg materiau</a>, moesz
    ograniczy liczb znajdowanych partii przez warunek, by
    podany stosunek materiau utrzymywa si przynajmniej przez
    kilka pruchw.
  }
  {
    Jeli masz wan baz, ktrej nie chcesz przez przypadek zmieni,
    wcz <b>Tylko do odczytu...</b> w menu <b>Plik</b> po jej otwarciu
    (albo zmie prawa dostpu do pliku).
  }
  {
    Jeli uywasz XBoard-a lub WinBoard-a (albo programu szachowego,
    ktry pozwala na skopiowania pozycji w notacji FEN do schowka)
    i chcesz skopiowa aktualn pozycj do Scid-a, wybierz
    <b>Copy position</b> w menu File programu XBoard/Winboard, a potem
    <b>Wklej aktywn parti ze schowka</b> z menu Edycja Scid-a.
  }
  {
    W oknie <a Searches Header>Wyszukiwanie wg nagwka</a>,
    szukane nazwy graczy/turnieju/miejsca/rundy s znajdowane niezalenie
    od wielkoci liter i rwnie wewntrz nazw.
    Zamiast tego moesz uy poszukiwania z symbolami wieloznacznymi
    (gdzie "?" oznacza dowolny znak, za "*" - 0 lub wicej znakw),
    wpisujc szukany tekst w cudzysowie. Wielko liter zostanie
    uwzgldniona. Na przykad "*BEL" znajdzie wszystkie turnieje grane
    w Belgii (ale nie w Belgradzie).
  }
  {
    Jeli chcesz poprawi posunicie nie zmieniajc nastpnych,
    otwrz okno <a Import>Pobierz parti</a>, wcinij
    <b>Wklej aktualn parti</b>, zmie bdne posunicie i wcinij
    <b>Pobierz</b>.
  }
  {
    Jeli plik klasyfikacji debiutowej ECO jest wczytany, moesz przej
    do ostatniej sklasyfikowanej pozycji w partii za pomoc polecenia
    <b>Rozpoznaj debiut</b> w menu <b>Partia</b> (klawisz Ctrl+Shift+D).
  }
  {
    Jeli chcesz sprawdzi wielko lub dat modyfikacji pliku
    przed jego otwarciem, uyj okna <a Finder>Poszukiwacza plikw</a>.
  }
  {
    Plik<a Repertoire>repertuaru debiutowego</a> pozwala na ledzenie
    partii w ulubionych wariantach. Kiedy dodasz grane przez siebie
    debiuty do pliku repertuaru debiutowego, bdziesz mg atwo
    znajdowa je w nowych partiach.
  }
  {
    <a OpReport>Raport debiutowy</a> pozwala dowiedzie si wicej
    o konkretnej pozycji. Moesz zobaczy wyniki, nazwiska najczciej
    grajcych j zawodnikw, typowe motywy pozycyjne itd.
  }
  {
    Moesz doda wikszo typowych symboli (!, !?, += itd.) do
    aktualnego posunicia lub pozycji za pomoc skrtw klawiszowych,
    bez potrzeby otwierania okna <a Comment>Edytora komentarzy</a>
    -- np. wcinicie "!" i Enter spowoduje dodanie symbolu "!".
    Na stronie <a Moves>Wprowadzanie posuni</a> mona znale
    wicej informacji.
  }
  {
    Moesz atwo przeglda debiuty w bazie w oknie
    <a Tree>Drzewo wariantw</a>. W oknie Statystyka (klawisz Ctrl+I)
    mona znale informacje o ostatnich wynikach w wariancie oraz
    o partiach granych przez silnych graczy.
  }
  {
    Moesz zmieni wielko szachownicy, naciskajc <b>lewo</b> lub <b>prawo</b>
    przy wcinitych klawiszach <b>Ctrl</b> i <b>Shift</b>.
  }
  {
    Po <a Searches>wyszukiwaniu</a> moesz atwo przeglda wszystkie
    znalezione partie, naciskajc klawisz <b>gra</b> lub <b>d</b>
    przy wcinitym <b>Ctrl</b> by obejrze poprzedni/nastpn parti
    w filtrze.
  }
}

# end of polish.tcl











































































# portbr.tcl:
# Scid in Brazilian Portuguese.
# Translated by Gilberto de Almeida Peres.

addLanguage B {Brazil Portuguese} 0 ;#iso8859-1

proc setLanguage_B {} {

# File menu:
menuText B File "Arquivo" 0
menuText B FileNew "Novo..." 0 {Cria uma nova base de dados Scid}
menuText B FileOpen "Abrir..." 0 {Abre uma base de dados Scid existente}
menuText B FileClose "Fechar" 0 {Fecha a base de dados Scid ativa}
menuText B FileFinder "Buscador" 0 {Abre a janela do Buscador de Arquivos}
menuText B FileBookmarks "Favoritos" 0 {Menu de Favoritos (atalho: Ctrl+B)}
menuText B FileBookmarksAdd "Adicionar a Favoritos" 0 \
  {Adiciona o posicao do jogo do banco de dados atual}
menuText B FileBookmarksFile "Arquivar Favorito" 0 \
  {Arquiva um Favorito para a posicao do jogo atual}
menuText B FileBookmarksEdit "Editar favoritos..." 0 \
  {Editar o menu de favoritos}
menuText B FileBookmarksList "Mostrar pastas como lista" 0 \
  {Mostra as pastas de favoritos em lista unica}
menuText B FileBookmarksSub "Mostrar pastas como submenus" 0 \
  {Mostra as pastas de favoritos como submenus}
menuText B FileMaint "Manutencao" 0 {Ferramentas de manutencao de bases de dados Scid}
menuText B FileMaintWin "Janela de Manutencao" 0 \
  {Abre/Fecha a janela de manutencao de bases de dados Scid}
menuText B FileMaintCompact "Compactar base de dados..." 0 \
  {Compacta arquivos de bases de dados, removendo jogos deletados e nomes nao utilizados}
menuText B FileMaintClass "Classificar jogos por ECO..." 2 \
  {Recalcula o codigo ECO de todos os jogos}
menuText B FileMaintSort "Ordenar base de dados..." 0 \
  {Ordena todos os jogos da base de dados}
menuText B FileMaintDelete "Apagar jogos duplicados..." 13 \
  {Encontra jogos duplicados e os marca para exclusao}
menuText B FileMaintTwin "Janela de verificacao de duplicatas" 10 \
  {Abre/atualiza a janela de verificacao de duplicatas}
menuText B FileMaintName "Ortografia de nomes" 14 {Ferramentas de edicao e correcao ortografica de nomes}
menuText B FileMaintNameEditor "Editor de Nomes" 0 \
  {Abre/fecha a janela do editor de nomes}
menuText B FileMaintNamePlayer "Verificacao Ortografica de Nomes de Jogadores..." 11 \
  {Verifica a correcao dos nomes dos jogadores de acordo com o arquivo de correcao ortografica}
menuText B FileMaintNameEvent "Verificacao Ortografica de Nomes de Eventos..." 11 \
  {Verifica a correcao dos nomes de eventos de acordo com o arquivo de verificacao ortografica}
menuText B FileMaintNameSite "Verificacao Ortografica de Lugares..." 11 \
  {Verifica a correcao dos nomes de lugares usando o arquivo de correcao ortografica}
menuText B FileMaintNameRound "Verificacao Ortografica de Rodadas..." 11 \
  {Verificacao dos nomes de rodadas usando o arquivo de correcao ortografica}
menuText B FileReadOnly "Apenas Leitura..." 7 \
  {Trata a base de dados corrente como arquivo de leitura, impedindo mudancas}
menuText B FileSwitch "Mudar a base de dados" 0 \
  {Muda para uma base de dados diferente, j aberta} ;# ***
menuText B FileExit "Sair" 0 {Encerrar o Scid}
menuText B FileMaintFixBase "Corrigir base corrompida" 0 {Tenta corrigir uma base corrompida}

# Edit menu:
menuText B Edit "Editar" 0
menuText B EditAdd "Adiciona variante" 0 {Adiciona variante do movimento}
menuText B EditDelete "Deleta Variante" 0 {Exclui variante do movimento}
menuText B EditFirst "Converte para Primeira Variante" 14 \
  {Faz com que uma variante seja a primeira da lista}
menuText B EditMain "Converte variante para Linha Principal" 24 \
  {Faz com que uma variante se torne a Linha Principal}
menuText B EditTrial "Experimentar variante" 0 \
  {Inicia/Para experimentacao, para testar alguma nova ideia no tabuleiro}
menuText B EditStrip "Limpar Comentarios e Variantes" 2 \
  {Limpa comentarios e variantes no jogo atual}
menuText B EditUndo "Desfazer" 0 {Desfaz ltima mudana no jogo}
menuText B EditStripComments "Limpar Comentarios" 0 \
  {Limpa comentarios e anotacoes no jogo atual}
menuText B EditStripVars "Limpar Variantes" 0 \
  {Limpa todas as variantes no jogo atual}
menuText B EditStripBegin "Movimentos a partir do incio" 1 \
  {Remove movimentos a partir do incio do jogo} ;# ***
menuText B EditStripEnd "Movimentos at o final do jogo" 0 \
  {Remove movimentos at o final do jogo} ;# ***
menuText B EditReset "Limpar a base de trabalho" 0 \
  {Limpa completamente a base de trabalho}
menuText B EditCopy "Copiar jogo para a base de trabalho" 0 \
  {Copia o jogo corrente para a base de trabalho}
menuText B EditPaste "Colar jogo da base de trabalho" 1 \
  {Cola o jogo ativo da base de trabalho}
menuText B EditPastePGN "Colar como jogo em PGN..." 10 \
  {Interpreta o texto na rea de transferncia como um jogo em notao PGN e cola na posio corrente} ;# ***
menuText B EditSetup "Configura posicao inicial..." 12 \
  {Configura a posicao inicial para o jogo}
menuText B EditCopyBoard "Copia posio" 6 \
  {Copia o tabuleiro corrente em notao FEN para a rea de transferncia} ;# ***
menuText B EditPasteBoard "Colar Posicao" 12 \
  {Configura a posicao inicial a partir da area de transferencia}

# Game menu:
menuText B Game "Jogo" 0
menuText B GameNew "Limpar Jogo" 0 \
  {Limpa o jogo corrente, descartando qualquer alteracao}
menuText B GameFirst "Primeiro Jogo" 5 {Carrega o primeiro jogo filtrado}
menuText B GamePrev "Jogo Anterior" 5 {Carrega o jogo anterior}
menuText B GameReload "Recarrega o Jogo atual" 3 \
  {Recarrega o jogo, descartando qualquer alteracao}
menuText B GameNext "Proximo Jogo" 5 {Carrega o proximo jogo}
menuText B GameLast "Ultimo Jogo" 8 {Carrega o ultimo jogo}
menuText B GameRandom "Carrega jogo aleatrio" 8 {Carrega um jogo filtrado aleatoriamente} ;# ***
menuText B GameNumber "Carrega Jogo Numero..." 5 \
  {Carrega um jogo pelo seu numero}
menuText B GameReplace "Salvar: Substituir Jogo..." 8 \
  {Salva o jogo e substitui a versao antiga}
menuText B GameAdd "Salvar: Adicionar Jogo..." 9 \
  {Salva este jogo como um novo jogo na base de dados}
menuText B GameDeepest "Identificar Abertura" 0 \
  {Vai para a posicao mais avancada da partida, de acordo com o codigo ECO}
menuText B GameGotoMove "Ir para o movimento numero..." 5 \
  {Avanca o jogo ate o movimento desejado}
menuText B GameNovelty "Pesquisa Novidade..." 7 \
  {Procura o primeiro movimento deste jogo que nao tenha sido jogado antes}

# Search Menu:
menuText B Search "Pesquisa" 0
menuText B SearchReset "Limpar Filtragem" 0 {Limpa o criterio de pesquisa para incluir todos os jogos}
menuText B SearchNegate "Inverter Filtragem" 0 {Inverte o criterio de pesquisa para incluir apenas os jogos que nao atendem o criterio}
menuText B SearchCurrent "Posicao Atual..." 0 {Pesquisa a posicao atual do tabuleiro}
menuText B SearchHeader "Cabecalho..." 0 {Pesquisa por cabecalho (jogador, evento, etc)}
menuText B SearchMaterial "Material/Padrao..." 0 {Pesquisa por material ou padrao de posicao}
menuText B SearchUsing "Usar arquivo de opcoes de filtro..." 0 {Pesquisa usando arquivo com opcoes de filtro}

# Windows menu:
menuText B Windows "Janelas" 0
menuText B WindowsComment "Editor de Comentarios" 0 {Abre/fecha o editor de comentarios}
menuText B WindowsGList "Lista de Jogos" 0 {Abre/fecha a janela com a lista de jogos}
menuText B WindowsPGN "Notacao PGN" 0 \
  {Abre/fecha a janela com a notacao PGN do jogo}
menuText B WindowsPList "Procura Jogador" 2 {Abre/Fecha o buscador de jogadores} ;# ***
menuText B WindowsTmt "Buscador de Torneio" 2 {Abre/Fecha o buscador de torneio}
menuText B WindowsSwitcher "Intercambio de bases de dados" 0 \
  {Abre/fecha a janela de intercambio de bases de dados}
menuText B WindowsMaint "Manutencao" 0 \
  {Abre/fecha a janela de manutencao}
menuText B WindowsECO "Listagem ECO" 0 {Abre/fecha a janela de listagem de codigo ECO}
menuText B WindowsRepertoire "Editor de Repertorio" 0 \
  {Abre/fecha a janela do editor de repertorio}
menuText B WindowsStats "Estatisticas" 0 \
  {Abre/fecha a janela de estatisticas}
menuText B WindowsTree "Arvore" 0 {Abre/fecha a janela da Arvore de pesquisa}
menuText B WindowsTB "Tabela base de Finais" 1 \
  {Abre/fecha a janela da tabela base de finais}
menuText B WindowsBook "Janela do Livro de Aberturas" 0 {Abre/Fecha  a janela do livro de aberturas}
menuText B WindowsCorrChess "Janela de Correspondencia" 0 {Abre/Fecha a janela de correspondencia}

# Tools menu:
menuText B Tools "Ferramentas" 0
menuText B ToolsAnalysis "Analisador #1..." 0 \
  {Inicia ou para o 1o. Analisador}
menuText B ToolsAnalysis2 "Analisador #2..." 17 \
  {Inicia ou para o 2o. Analisador}
menuText B ToolsCross "Tabela de Cruzamento" 0 {Mostra a tabela de cruzamentos do torneio para o jogo corrente}
menuText B ToolsEmail "Gerenciador de e-mails" 0 \
  {Abre/fecha a janela do gerenciador de e-mails}
menuText B ToolsFilterGraph "Grfico de filtro" 7 \
  {Abre/Fecha a janela do grfico de filtro} ;# ***
menuText B ToolsAbsFilterGraph "Grafico de Filtro Absoluto" 7 {Abre/Fecha a janela do grafico de filtro por valor absoluto}
menuText B ToolsOpReport "Relatorio de abertura" 0 \
  {Gera um relatorio de abertura para a posicao corrente}
menuText B ToolsOpenBaseAsTree "Abre base como rvore" 0   {Abre uma base e a utiliza numa janela de rvore}
menuText B ToolsOpenRecentBaseAsTree "Abre base recente como rvore" 0   {Abre uma base recente e a utiliza numa janela de rvore}
menuText B ToolsTracker "Acompanha Pea"  0 {Abre a janela de acompanhamento de peas} ;# ***
menuText B ToolsTraining "Treinamento"  0 {Ferramentas de Treinamento (tticas, aberturas,...) }
menuText B ToolsTacticalGame "Jogo Ttico"  0 {Jogar com tticas}
menuText B ToolsSeriousGame "Jogo Srio"  0 {Jogar um jogo srio}
menuText B ToolsTrainOpenings "Aberturas"  0 {Treinamento com um repertrio}
menuText B ToolsTrainReviewGame "Rever jogo"  0 {Acompanhar movimentos de um jogo}
menuText B ToolsTrainTactics "Tticas"  0 {Exerccios de ttica}
menuText B ToolsTrainCalvar "Clculo de Variantes"  0 {Treinamento de clculo de variantes}
menuText B ToolsTrainFindBestMove "Procurar melhor movimento"  0 {Procura o melhor movimento}
menuText B ToolsTrainFics "Jogar na internet"  0 {Jogar em  freechess.org}
menuText B ToolsBookTuning "Sintonizar Livro" 0 {Sintonizar livro de aberturas}
menuText B ToolsConnectHardware "Conectar Hardware" 0 {Conectar hardware externo}
menuText B ToolsConnectHardwareConfigure "Configurar..." 0 {Configurar hardware e conexo externa}
menuText B ToolsConnectHardwareNovagCitrineConnect "Conectar Novag Citrine" 0 {Conectar Novag Citrine}
menuText B ToolsConnectHardwareInputEngineConnect "Conectar Engine de Entrada" 0 {Conectar engine de entrada (ex. DGT)}
menuText B ToolsPInfo "Informacao do Jogador"  0 \
  {Abre/atualiza a janela de informacao do jogador}
menuText B ToolsPlayerReport "Relatrio de jogador..." 3 \
  {Gera um relatrio de jogador} ;# ***
menuText B ToolsRating "Grafico de Rating" 0 \
  {Mostra, em um grafico, a evolucao do rating de um jogador}
menuText B ToolsScore "Grafico de Resultados" 0 {Mostra a janela com o grafico dos resultados}
menuText B ToolsExpCurrent "Exporta jogo corrente" 8 \
  {Grava o jogo corrente em um arquivo texto}
menuText B ToolsExpCurrentPGN "Exporta para PGN..." 15 \
  {Grava o jogo corrente em um arquivo PGN}
menuText B ToolsExpCurrentHTML "Exporta para HTML..." 15 \
  {Grava o jogo corrente em um arquivo HTML}
menuText B ToolsExpCurrentHTMLJS "Exportar jogo para arquivo HTML e JavaScript..." 15 {Escreve o jogo corrente em um arquivo HTML e JavaScript}  
menuText B ToolsExpCurrentLaTeX "Exporta para LaTex..." 15 \
  {Grava o jogo corrente em um arquivo LaTex}
menuText B ToolsExpFilter "Exporta jogos filtrados" 1 \
  {Exporta todos os jogos filtrados para um arquivo texto}
menuText B ToolsExpFilterPGN "Exporta jogos filtrados - PGN..." 17 \
  {Exporta todos os jogos filtrados para um arquivo PGN}
menuText B ToolsExpFilterHTML "Exporta jogos filtrados - HTML..." 17 \
  {Exporta todos os jogos filtrados para um arquivo HTML}
menuText B ToolsExpFilterHTMLJS "Exporta filtro para arquivo HTML e JavaScript..." 17 {Escreve todos os jogos filtrados para um arquivo HTML e JavaScript}  
menuText B ToolsExpFilterLaTeX "Exporta jogos filtrados - LaTex..." 17 \
  {Exporta todos os jogos filtrados para um arquivo LaTex}
menuText B ToolsImportOne "Importa PGN texto..." 0 \
  {Importa jogo de um texto em PGN}
menuText B ToolsImportFile "Importa arquivo de jogos PGN..." 7 \
  {Importa jogos de um arquivo PGN}
menuText B ToolsStartEngine1 "Iniciar engine 1" 0  {Inicia engine 1}
menuText B ToolsStartEngine2 "Iniciar engine 2" 0  {Inicia engine 2}
# ====== TODO To be translated ======
menuText B ToolsCaptureBoard "Capturar posicao atual..." 5  {Salva uma imagem da posicao atual.}
menuText B Play "Jogar" 0
menuText B CorrespondenceChess "Xadrez por correspondncia" 0 {Funes para jogar xadrez por correspondncia usando eMail e Xfcc}
menuText B CCConfigure "Configurar..." 0 {Configura ferramentas externas e configurao geral}
# ====== TODO To be translated ======
menuText B CCConfigRelay "Observar jogos..." 10 {Configura jogos para observar}
menuText B CCOpenDB "Abrir base..." 0 {Abre a base de correspondncia padro}
menuText B CCRetrieve "Recupera jogos" 0 {Recupera jogos via (Xfcc-)}
menuText B CCInbox "Processa caixa de entrada" 0 {Processa todos os arquivos na caixa de entrada do Scid}
menuText B CCSend "Enviar movimento" 0 {Envia seu movimento via eMail ou (Xfcc-)}
menuText B CCResign "Resignar" 0 {Aceita a derrota (no via eMail)}
menuText B CCClaimDraw "Declarar empate" 0 {Envia o movimento e declara empate (no via eMail)}
menuText B CCOfferDraw "Oferecer empate" 0 {Envia o movimento e oferece empate (no via eMail)}
menuText B CCAcceptDraw "Aceitar empate" 0 {Aceita uma oferta de empate (no via eMail)}
menuText B CCNewMailGame "Novo jogo por eMail..." 0 {Inicia um novo jogo por eMail}
menuText B CCMailMove "Enviar movimento..." 0 {Envia movimento ao oponente via eMaail}
menuText B CCGamePage "Pgina do jogo..." 0 {Chama o jogo atravs do browser}
menuText B CCEditCopy "Copiar Lista de Jogos para a base de cpia" 0 {Copia os jogos no formato CSV para a base de cpia}

# Options menu:
menuText B Options "Opcoes" 0
menuText B OptionsBoard "Tabuleiro" 0 {Opes de aparncia do tabuleiro} ;# ***
menuText B OptionsBoardSize "Tamanho do Tabuleiro" 0 {Muda o tamanho do tabuleiro}
menuText B OptionsBoardPieces "Estilo de Pecas no Tabuleiro" 10 \
  {Muda o estilo das pecas mostradas no tabuleiro}
menuText B OptionsBoardColors "Cores..." 0 {Muda as cores do tabuleiro}
menuText B OptionsBoardGraphics "Casas..." 0 {Seleciona texturas para as casas}
translate B OptionsBGW {Seleciona texturas para as casas}
translate B OptionsBoardGraphicsText {Seleciona arquivos grficos para as casas brancas e pretas:}
menuText B OptionsBoardNames "Meus nomes de jogadores..." 0 {Edita meus nomes de jogadores} ;# ***
menuText B OptionsExport "Exportacao" 0 {Muda as opcoes de exportacao de texto}
menuText B OptionsFonts "Fontes" 0 {Muda os fontes}
menuText B OptionsFontsRegular "Normal" 0 {Fonte Normal}
menuText B OptionsFontsMenu "Menu" 0 {Change the menu font} ;# ***
menuText B OptionsFontsSmall "Pequeno" 0 {Fonte pequeno}
# ====== TODO To be translated ======
menuText B OptionsFontsTiny "Pequeno" 0 {Muda o fonte pequeno}
menuText B OptionsFontsFixed "Fixo" 0 {Fonte de largura fixa}
menuText B OptionsGInfo "Informacoes do Jogo" 0 {Opcoes de informacao do jogo}
menuText B OptionsLanguage "Linguagem" 0 {Menu de selecao de linguagem}
menuText B OptionsMovesTranslatePieces "Traduzir Peas" 0 {Traduz a primeira letra do nome das peas}
menuText B OptionsMovesHighlightLastMove "Destacar ltimo movimento" 0 {Destaca o ltimo movimento}
menuText B OptionsMovesHighlightLastMoveDisplay "Mostrar" 0 {Mostra o destaque do ltimo movimento}
menuText B OptionsMovesHighlightLastMoveWidth "Espessura" 0 {Espessura da linha}
menuText B OptionsMovesHighlightLastMoveColor "Cor" 0 {Cor da linha}
menuText B OptionsMoves "Movimentos" 0 {Opcoes para entrada dos movimentos}
menuText B OptionsMovesAsk "Perguntar antes de substituir movimentos" 0 \
  {Pergunta antes de substituir movimentos existentes}
menuText B OptionsMovesAnimate "Tempo de animao" 1 \
  {Define a quantidade de tempo usada para animar os movimentos} ;# ***
menuText B OptionsMovesDelay "Tempo de atraso p/ Jogo automatico..." 1 \
  {Define o tempo de espera antes de entrar no modo de jogo automatico}
menuText B OptionsMovesCoord "Entrada de movimentos por coordenadas" 0 \
  {Aceita o estilo de entrada de movimentos por coordenadas ("g1f3")}
menuText B OptionsMovesSuggest "Mostrar movimentos sugeridos" 0 \
  {Liga/desliga sugestao de movimentos}
menuText B OptionsShowVarPopup "Mostrar janela de variantes" 0 {Liga/Desliga a janela de variantes}  
menuText B OptionsMovesSpace "Adicionar espaos aps o nmero do movimento" 0 {Adiciona espaos aps o nmero do movimento}  
menuText B OptionsMovesKey "Auto completar" 0 \
  {Liga/desliga auto completar a partir do que for digitado}
menuText B OptionsMovesShowVarArrows "Mostrar Setas para variantes" 0 {Liga/Desliga as setas que mostram movimentos em variantes}
menuText B OptionsNumbers "Formato de Numeros" 0 {Selecione o formato usado para numeros}
menuText B OptionsStartup "Iniciar" 1 \
  {Seleciona janelas que serao abertas ao iniciar o programa}
menuText B OptionsTheme "Tema" 0 {Muda a aparncia da interface}
menuText B OptionsWindows "Janelas" 0 {Opcoes para Janelas}
menuText B OptionsWindowsIconify "Auto-iconizar" 5 \
  {Iconizar todas as janelas quando a janela principal eh iconizada}
menuText B OptionsWindowsRaise "Manter no topo" 0 \
  {Mantem no topo certas janelas (ex. barras de progresso) sempre que sao obscurecidas por outras}
menuText B OptionsSounds "Sons..." 2 {Configura sons para anunciar os movimentos} ;# ***
menuText B OptionsWindowsDock "Estacionar janelas" 0 {Estaciona as janelas}
menuText B OptionsWindowsSaveLayout "Salvar layout" 0 {Salva o layout das janelas}
menuText B OptionsWindowsRestoreLayout "Restaurar layout" 0 {Restaura layout}
menuText B OptionsWindowsShowGameInfo "Mostrar Informaes do Jogo" 0 {Mostra informaes do jogo}
menuText B OptionsWindowsAutoLoadLayout "Carregar primeiro layout na entrada" 0 {Carrega automaticamente o primeiro layout ao entrar na aplicao}
menuText B OptionsToolbar "Barra de Ferramentas da Janela Principal" 12 \
  {Exibe/Oculta a barra de ferramentas da janela principal}
menuText B OptionsECO "Carregar arquivo ECO..." 7 {Carrega o arquivo com a classificacao ECO}
menuText B OptionsSpell "Carregar arquivo de verificacao ortografica..." 6 \
  {Carrega o arquivo de verificacao ortografica do Scid}
menuText B OptionsTable "Diretorio de tabelas de base..." 0 \
  {Selecione um arquivo de tabela de base; todas as tabelas nesse diretorio serao usadas}
menuText B OptionsRecent "Arquivos recentes..." 0 \
  {Muda o nmero de arquivos recentes no menu Arquivo} ;# ***
menuText B OptionsBooksDir "Diretrio de Livros..." 0 {Define o diretrio para os livros de aberturas}
menuText B OptionsTacticsBasesDir "Diretrio de bases..." 0 {Define o diretrio para as bases de treinamento de tticas}
menuText B OptionsSave "Salvar Configuracao" 0 \
  "Salva a configuracao no arquivo $::optionsFile"
menuText B OptionsAutoSave "Salva Opcoes ao sair" 0 \
  {Salva automaticamente todas as opcoes quando sair do Scid}

# Help menu:
menuText B Help "Ajuda" 0
menuText B HelpContents "Contents" 0 {Show the help contents page} ;# ***
menuText B HelpIndex "Indice" 0 {Indice da Ajuda}
menuText B HelpGuide "Consulta Rapida" 0 {Mostra a pagina de consulta rapida}
menuText B HelpHints "Dicas" 0 {Mostra a pagina de dicas}
menuText B HelpContact "Informacoes para contato" 0 {Mostra a pagina com informacoes para contato}
menuText B HelpTip "Dica do dia" 0 {Mostra uma dica util do Scid}
menuText B HelpStartup "Janela de Inicializacao" 0 {Mostra a janela de inicializacao}
menuText B HelpAbout "Sobre Scid" 0 {Informacoes sobre o Scid}

# Game info box popup menu:
menuText B GInfoHideNext "Ocultar proximo movimento" 0
menuText B GInfoMaterial "Mostra valor de material" 0
menuText B GInfoFEN "Mostra Diagrama FEN" 16
menuText B GInfoMarks "Mostra setas e casas coloridas" 7
menuText B GInfoWrap "Quebra de linhas longas" 0
menuText B GInfoFullComment "Mostrar comentario completo" 8
menuText B GInfoPhotos "Mostrar Fotos" 5 ;# ***
menuText B GInfoTBNothing "Tabelas de Base: nada" 12
menuText B GInfoTBResult "Tabelas de Base: apenas resultado" 12
menuText B GInfoTBAll "Tabelas de Base: resultado e melhores movimentos" 19
menuText B GInfoDelete "Recuperar este jogo" 0
menuText B GInfoMark "Desmarcar este jogo" 0
menuText B GInfoInformant "Configurar valores do informante" 0

# Main window buttons:
helpMsg B .main.fbutton.button.start {Ir para o inicio do jogo  (tecla: Home)}
helpMsg B .main.fbutton.button.end {Ir para o final do jogo  (tecla: End)}
helpMsg B .main.fbutton.button.back {Retroceder um movimento  (tecla: Seta Esquerda)}
helpMsg B .main.fbutton.button.forward {Avancar um movimento  (tecla: Seta Direita)}
helpMsg B .main.fbutton.button.intoVar {Entrar na variante  (tecla de atalho: v)}
helpMsg B .main.fbutton.button.exitVar {Sair da variante  (tecla de atalho: z)}
helpMsg B .main.fbutton.button.flip {Girar tabuleiro  (tecla de atalho: .)}
helpMsg B .main.fbutton.button.coords {Liga/desliga coordenadas  (tecla de atalho: 0)}
helpMsg B .main.fbutton.button.stm {Liga/Desliga o cone que indica o lado que tem o movimento} ;# ***
helpMsg B .main.fbutton.button.autoplay {Jogo automatico  (tecla: Ctrl+Z)}

# General buttons:
translate B Back {Voltar}
translate B Browse {Navegar} ;# ***
translate B Cancel {Cancelar}
translate B Continue {Continuar}
translate B Clear {Limpar}
translate B Close {Fechar}
translate B Contents {Contedo} ;# ***
translate B Defaults {Defaults}
translate B Delete {Deletar}
translate B Graph {Grafico}
translate B Help {Ajuda}
translate B Import {Importar}
translate B Index {Indice}
translate B LoadGame {Carrega jogo}
translate B BrowseGame {Listar jogo}
translate B MergeGame {Fazer merge do jogo}
translate B MergeGames {Merge dos jogos}
translate B Preview {Visualizacao}
translate B Revert {Reverter}
translate B Save {Salvar}
translate B Search {Pesquisar}
translate B Stop {Parar}
translate B Store {Guardar}
translate B Update {Atualizar}
translate B ChangeOrient {Muda orientacao da janela}
translate B ShowIcons {Mostrar cones} ;# ***
translate B None {Nenhum}
translate B First {Primeiro}
translate B Current {Atual}
translate B Last {Ultimo}

# General messages:
translate B game {jogo}
translate B games {jogos}
translate B move {movimento}
translate B moves {movimentos}
translate B all {tudo}
translate B Yes {Sim}
translate B No {Nao}
translate B Both {Ambos}
translate B King {Rei}
translate B Queen {Dama}
translate B Rook {Torre}
translate B Bishop {Bispo}
translate B Knight {Cavalo}
translate B Pawn {Peao}
translate B White {Branco}
translate B Black {Preto}
translate B Player {Jogador}
translate B Rating {Rating}
translate B RatingDiff {Diferenca de Rating (Brancas - Pretas)}
translate B AverageRating {Rating Mdio} ;# ***
translate B Event {Evento}
translate B Site {Lugar}
translate B Country {Pais}
translate B IgnoreColors {Ignorar cores}
translate B Date {Data}
translate B EventDate {Evento data}
translate B Decade {Dcada} ;# ***
translate B Year {Ano}
translate B Month {Mes}
translate B Months {Janeiro Fevereiro Marco Abril Maio Junho Julho Agosto Setembro Outubro Novembro Dezembro}
translate B Days {Dom Seg Ter Qua Qui Sex Sab}
translate B YearToToday {Anos ate hoje}
translate B Result {Resultado}
translate B Round {Rodada}
translate B Length {Tamanho}
translate B ECOCode {ECO}
translate B ECO {ECO}
translate B Deleted {Apagado}
translate B SearchResults {Resultados da Pesquisa}
translate B OpeningTheDatabase {Abrindo a Base de Dados}
translate B Database {Base de dados}
translate B Filter {Filtro}
translate B noGames {nenhum jogo}
translate B allGames {todos os jogos}
translate B empty {vazio}
translate B clipbase {base de trabalho}
translate B score {Pontuacao}
translate B StartPos {Posicao Inicial}
translate B Total {Total}
translate B readonly {apenas leitura}

# Standard error messages:
translate B ErrNotOpen {Esta base no est aberta.} ;# ***
translate B ErrReadOnly {Esta base  apenas para leitura; no pode ser alterada.} ;# ***
translate B ErrSearchInterrupted {Pesquisa interrompida; os resultados esto incompletos.} ;# ***

# Game information:
translate B twin {duplicata}
translate B deleted {apagado}
translate B comment {comentario}
translate B hidden {oculto}
translate B LastMove {Ultimo movimento}
translate B NextMove {Proximo}
translate B GameStart {Inicio do jogo}
translate B LineStart {Inicio da linha}
translate B GameEnd {Fim do jogo}
translate B LineEnd {Fim da linha}

# Player information:
translate B PInfoAll {Resultados para <b>todos</b> os jogos}
translate B PInfoFilter {Resultados para os jogos <b>filtrados</b>}
translate B PInfoAgainst {Resultados contra}
translate B PInfoMostWhite {Aberturas mais comuns com as Brancas}
translate B PInfoMostBlack {Aberturas mais comuns com as Pretas}
translate B PInfoRating {Historico de Rating}
translate B PInfoBio {Biografia}
translate B PInfoEditRatings {Editar Ratings} ;# ***

# Tablebase information:
translate B Draw {Empate}
translate B stalemate {mate afogado}
translate B withAllMoves {com todos os movimentos}
translate B withAllButOneMove {com um movimento a menos}
translate B with {com}
translate B only {apenas}
translate B lose {derrota}
translate B loses {derrotas}
translate B allOthersLose {qualquer outro perde}
translate B matesIn {mate em}
translate B hasCheckmated {recebeu xeque-mate}
translate B longest {mais longo}
translate B WinningMoves {Movimentos vencedores} ;# ***
translate B DrawingMoves {Movimentos para empate} ;# ***
translate B LosingMoves {Movimentos perdedores} ;# ***
translate B UnknownMoves {Movimentos com resultado desconhecido} ;# ***

# Tip of the day:
translate B Tip {Dica}
translate B TipAtStartup {Dica ao iniciar}

# Tree window menus: ***
menuText B TreeFile "Arquivo" 0
menuText B TreeFileFillWithBase "Carregar Cache com base" 0 {Carrega todos os jogos da base corrente no Cache}
menuText B TreeFileFillWithGame "Carregar Cache com jogo" 0 {Carrega o jogo corrente da base corrente no Cache}
menuText B TreeFileSetCacheSize "Tamanho do Cache" 0 {Define o tamanho do cache}
menuText B TreeFileCacheInfo "Informao do Cache" 0 {Informaes sobre a utilizao do cache}
menuText B TreeFileSave "Salvar arquivo de cache" 0 \
  {Salvar o arquivo de cache da arvore (.stc)}
menuText B TreeFileFill "Criar arquivo de cache" 0 \
  {Enche o arquivo de cache com as posicoes comuns na abertura}
menuText B TreeFileBest "Lista dos melhores jogos" 0 \
  {Mostra a lista dos melhores jogos da arvore}
menuText B TreeFileGraph "Janela de Grafico" 0 \
  {Mostra o grafico para este galho da arvore}
menuText B TreeFileCopy "Copiar texto da arvore para a area de transferencia" \
  1 {Copiar texto da arvore para a area de transferencia}
menuText B TreeFileClose "Fechar janela de arvore" 0 {Fechar janela de arvore}
menuText B TreeMask "Mscara" 0
menuText B TreeMaskNew "Nova" 0 {Nova mscara}
menuText B TreeMaskOpen "Abrir" 0 {Abrir mscara}
menuText B TreeMaskOpenRecent "Abrir recente" 0 {Abre mscara recente}
menuText B TreeMaskSave "Salvar" 0 {Salva mscara}
menuText B TreeMaskClose "Fechar" 0 {Fecha mscara}
menuText B TreeMaskFillWithGame "Preencher com jogo" 0 {Preenche mscara com jogo}
menuText B TreeMaskFillWithBase "Preencher com base" 0 {Preenche a mscara com todos os jogos da base}
menuText B TreeMaskInfo "Info" 0 {Mostrar estatisticas para a mscara corrente}
menuText B TreeMaskDisplay "Mostrar mapa da mscara" 0 {Mostra os dados da mscara em forma de rvore}
menuText B TreeMaskSearch "Pesquisar" 0 {Pesquisa na mscara corrente}
menuText B TreeSort "Ordenar" 0
menuText B TreeSortAlpha "Alfabetica" 0
menuText B TreeSortECO "ECO" 0
menuText B TreeSortFreq "Frequencia" 0
menuText B TreeSortScore "Pontuacao" 0
menuText B TreeOpt "Opcoes" 0
menuText B TreeOptSlowmode "Modo Lento" 0 {Modo lento para atualizaes (mais acurado)}
menuText B TreeOptFastmode "Modo Rpido" 0 {Modo rpido para atualizaes (sem transsposies de movimentos)}
menuText B TreeOptFastAndSlowmode "Modo rpido e lento" 0 {Modo rpido e lento para atualizaes}
menuText B TreeOptStartStop "Atualizao automtica" 0 {Liga/Desliga a atualizao automtica da janela de rvore}
menuText B TreeOptLock "Lock" 0 {Trava/Destrava a arvore para o banco corrente}
menuText B TreeOptTraining "Treinamento" 0 \
  {Liga/Desliga o modo treinamento na arvore}
menuText B TreeOptAutosave "Salvar automaticamente arquivo de cache" 0 \
  {Salvar automaticamente o arquivo de cache quando fechar a janela de arvore}
menuText B TreeHelp "Ajuda" 0
menuText B TreeHelpTree "Ajuda para arvore" 0
menuText B TreeHelpIndex "Indice da Ajuda" 0
translate B SaveCache {Salvar Cache}
translate B Training {Treinamento}
translate B LockTree {Travamento}
translate B TreeLocked {Travada} ;# ***
translate B TreeBest {Melhor}
translate B TreeBestGames {Melhores jogos da arvore}
# Note: the next message is the tree window title row. After editing it,
# check the tree window to make sure it lines up with the actual columns.
translate B TreeTitleRow \
  {    Mov.   ECO       Frequencia   Score  AvElo Perf AvYear %Empat} ;# ***
translate B TreeTotal {TOTAL}
translate B DoYouWantToSaveFirst {Quer salvar primeiro?}
translate B AddToMask {Adicionar  mscara}
translate B RemoveFromMask {Remover da mscara}
translate B AddThisMoveToMask {Adicionar este movimento  mscara}
translate B SearchMask {Pesquisar na mscara}
translate B DisplayMask {Mostrar mscara}
translate B Nag {Cdigo Nag}
translate B Marker {Marcador}
translate B Include {Incluir}
translate B Exclude {Excluir}
translate B MainLine {Linha Principal}
translate B Bookmark {Marcador}
translate B NewLine {Nova Linha}
translate B ToBeVerified {Verificar}
translate B ToTrain {Para treinar}
translate B Dubious {Duvidoso}
translate B ToRemove {Para remover}
translate B NoMarker {Sem marcador}
translate B ColorMarker {Cor}
translate B WhiteMark {Branca}
translate B GreenMark {Verde}
translate B YellowMark {Amarela}
translate B BlueMark {Azul}
translate B RedMark {Vermelha}
translate B CommentMove {Comentar movimento}
translate B CommentPosition {Comentar posio}
translate B AddMoveToMaskFirst {Adicionar movimento  mscara primeiro}
translate B OpenAMaskFileFirst {Abrir uma mscara primeiro}
translate B Positions {Posies}
translate B Moves {Movimentos}

# Finder window:
menuText B FinderFile "Arquivo" 0
menuText B FinderFileSubdirs "Buscar nos subdiretorios" 0
menuText B FinderFileClose "Fecha buscador de arquivos" 0
menuText B FinderSort "Ordenar" 0
menuText B FinderSortType "Tipo" 0
menuText B FinderSortSize "Tamanho" 0
menuText B FinderSortMod "Modificado" 0
menuText B FinderSortName "Nome" 0
menuText B FinderSortPath "Caminho" 0
menuText B FinderTypes "Tipos" 0
menuText B FinderTypesScid "Bases Scid" 0
menuText B FinderTypesOld "Bases Scid antigas" 0
menuText B FinderTypesPGN "Arquivos PGN" 0
menuText B FinderTypesEPD "Arquivos EPD (book)" 0
menuText B FinderTypesRep "Arquivos de Repertorio" 0
menuText B FinderHelp "Ajuda" 0
menuText B FinderHelpFinder "Ajuda do Buscador" 0
menuText B FinderHelpIndex "Indice da Ajuda" 0
translate B FileFinder {Buscador de Arquivos}
translate B FinderDir {Diretorio}
translate B FinderDirs {Diretorios}
translate B FinderFiles {Arquivos}
translate B FinderUpDir {Acima}
translate B FinderCtxOpen {Abrir}
translate B FinderCtxBackup {Backup}
translate B FinderCtxCopy {Copiar}
translate B FinderCtxMove {Mover}
translate B FinderCtxDelete {Apagar}

# Player finder:
menuText B PListFile "Arquivo" 0
menuText B PListFileUpdate "Atualizar" 0
menuText B PListFileClose "Close Player Finder" 0 ;# ***
menuText B PListSort "Ordenar" 0
menuText B PListSortName "Name" 0 ;# ***
menuText B PListSortElo "Elo" 0
menuText B PListSortGames "Jogos" 0
menuText B PListSortOldest "Mais antigo" 0 ;# ***
menuText B PListSortNewest "Mais novo" 0 ;# ***

# Tournament finder:
menuText B TmtFile "Arquivo" 0
menuText B TmtFileUpdate "Atualizar" 0
menuText B TmtFileClose "Fecha Buscador de Torneios" 0
menuText B TmtSort "Ordenar" 0
menuText B TmtSortDate "Data" 0
menuText B TmtSortPlayers "Jogadores" 0
menuText B TmtSortGames "Jogos" 0
menuText B TmtSortElo "Elo" 0
menuText B TmtSortSite "Lugar" 0
menuText B TmtSortEvent "Evento" 1
menuText B TmtSortWinner "Vencedor" 0
translate B TmtLimit "Limite de Lista"
translate B TmtMeanElo "Menor Elo"
translate B TmtNone "Nenhum torneio encontrado."

# Graph windows:
menuText B GraphFile "Arquivo" 0
menuText B GraphFileColor "Salvar como Postscript Colorido..." 12
menuText B GraphFileGrey "Salvar como Postscript Cinza..." 23
menuText B GraphFileClose "Fecha janela" 6
menuText B GraphOptions "Opcoes" 0
menuText B GraphOptionsWhite "Branco" 0
menuText B GraphOptionsBlack "Preto" 0
menuText B GraphOptionsBoth "Ambos" 0
menuText B GraphOptionsPInfo "Informacao do Jogador" 0
translate B GraphFilterTitle "Grfico de filtro: frequencia por 1000 jogos" ;# ***
translate B GraphAbsFilterTitle "Grfico de filtro: frequencia dos jogos"
translate B ConfigureFilter {Configurar Eixos X para Ano, Rating e Movimentos}
translate B FilterEstimate "Estimar"
translate B TitleFilterGraph "Scid: Grfico de Filtro"

# Analysis window:
translate B AddVariation {Adicionar variante}
translate B AddAllVariations {Adicionar todas as Variantes}
translate B AddMove {Adicionar movimento}
translate B Annotate {Anotar}
translate B ShowAnalysisBoard {Mostrar tabuleiro de anlise}
translate B ShowInfo {Mostrar informaes do engine}
translate B FinishGame {Encerrar jogo}
translate B StopEngine {Parar engine}
translate B StartEngine {Iniciar engine}
translate B LockEngine {Travar engine na posio corrente}
translate B AnalysisCommand {Comando de Analise}
translate B PreviousChoices {Escolhas Anteriores}
translate B AnnotateTime {Define o tempo entre movimentos em segundos}
translate B AnnotateWhich {Adiciona variante}
translate B AnnotateAll {Parar movimentos de ambos os lados}
translate B AnnotateAllMoves {Anotar todos os movimentos}
translate B AnnotateWhite {Apenas para movimentos das Brancas}
translate B AnnotateBlack {Apenas para movimentos das Pretas}
translate B AnnotateBlundersOnly {Quando o mivimento for um erro crasso}
translate B AnnotateBlundersOnlyScoreChange {As anlises indicam um erro crasso, com mudana de score de/para: }
translate B BlundersThreshold {Limite}
# TODO: Translate
translate B ScoreAllMoves {Score all moves}
translate B LowPriority {Baixa prioridade da CPU} ;# ***
translate B ClickHereToSeeMoves {Clique aqui para ver os movimentos}
translate B ConfigureInformant {Configurar Informante}
translate B Informant!? {Movimento interessante}
translate B Informant? {Movimento pobre}
translate B Informant?? {Erro crasso}
translate B Informant?! {Movimento duvidoso}
translate B Informant+= {Branca tem alguma vantagem}
translate B Informant+/- {Branca tem vantagem moderada}
translate B Informant+- {Branca tem vantagem decisiva}
translate B Informant++- {O jogo  considerado como ganho}
translate B Book {Livro}
translate B OtherBookMoves {Livro do oponente}
translate B OtherBookMovesTooltip {Movimentos para os quais o oponente tem resposta}

# Analysis Engine open dialog:
translate B EngineList {Lista de Programas de Analise}
translate B EngineName {Nome}
translate B EngineCmd {Comando}
translate B EngineArgs {Parametros}
translate B EngineDir {Diretorio}
translate B EngineElo {Elo}
translate B EngineTime {Data}
translate B EngineNew {Novo}
translate B EngineEdit {Editar}
translate B EngineRequired {Campos em negrito so obrigatrios; os demais so opcionais}

# Stats window menus:
menuText B StatsFile "Arquivo" 0
menuText B StatsFilePrint "Imprimir para arquivo..." 0
menuText B StatsFileClose "Fecha janela" 0
menuText B StatsOpt "Opcoes" 0

# PGN window menus:
menuText B PgnFile "Arquivo" 0
menuText B PgnFileCopy "Copiar o jogo para a rea de transferncia" 0 ;# ***
menuText B PgnFilePrint "Imprimir para arquivo..." 0
menuText B PgnFileClose "Fechar janela PGN" 0
menuText B PgnOpt "Monitor" 0
menuText B PgnOptColor "Monitor Colorido" 0
menuText B PgnOptShort "Cabecalho curto (3 linhas)" 0
menuText B PgnOptSymbols "Anotacoes simbolicas" 0
menuText B PgnOptIndentC "Identar comentarios" 0
menuText B PgnOptIndentV "Identar variantes" 7
menuText B PgnOptColumn "Estilo Coluna (um movimento por linha)" 0
menuText B PgnOptSpace "Espaco apos o numero do movimento" 0
menuText B PgnOptStripMarks "Remover os cdigos coloridos das casas/setas" 1 ;# ***
menuText B PgnOptBoldMainLine "Use negrito para movimentos da linha principal" 4 ;# ***
menuText B PgnColor "Cores" 0
menuText B PgnColorHeader "Cabecalho..." 0
menuText B PgnColorAnno "Anotacoes..." 0
menuText B PgnColorComments "Comentarios..." 0
menuText B PgnColorVars "Variantes..." 0
menuText B PgnColorBackground "Cor de fundo..." 0
menuText B PgnColorMain "Linha principal..." 0
menuText B PgnColorCurrent "Cor de fundo do movimento atual..." 1
menuText B PgnColorNextMove "Cor de fundo do prximo movimento..." 0
menuText B PgnHelp "Ajuda" 0
menuText B PgnHelpPgn "Ajuda PGN" 0
menuText B PgnHelpIndex "Indice" 0
translate B PgnWindowTitle {Notao do Jogo - jogo %u} ;# ***

# Crosstable window menus:
menuText B CrosstabFile "Arquivo" 0
menuText B CrosstabFileText "Imprime para arquivo texto..." 9
menuText B CrosstabFileHtml "Imprime para arquivo HTML..." 9
menuText B CrosstabFileLaTeX "Imprime para arquivo LaTex..." 9
menuText B CrosstabFileClose "Fechar tabela de cruzamentos" 0
menuText B CrosstabEdit "Editar" 0
menuText B CrosstabEditEvent "Evento" 0
menuText B CrosstabEditSite "Lugar" 0
menuText B CrosstabEditDate "Data" 0
menuText B CrosstabOpt "Monitor" 0
menuText B CrosstabOptAll "Todos contra todos" 0
menuText B CrosstabOptSwiss "Suio" 0
menuText B CrosstabOptKnockout "Knockout" 0
menuText B CrosstabOptAuto "Automatico" 0
menuText B CrosstabOptAges "Idade em anos" 0
menuText B CrosstabOptNats "Nacionalidades" 0
menuText B CrosstabOptRatings "Ratings" 0
menuText B CrosstabOptTitles "Titulos" 0
menuText B CrosstabOptBreaks "Scores de desempate" 0
menuText B CrosstabOptDeleted "Incluir jogos apagados" 8 ;# ***
menuText B CrosstabOptColors "Cores (apenas para tabela Swiss)" 0
menuText B CrosstabOptColumnNumbers "Colunas numeradas (apenas tabelas Todos-contra-Todos)" 2 ;# ***
menuText B CrosstabOptGroup "Pontuacao do Grupo" 0
menuText B CrosstabSort "Ordenar" 0
menuText B CrosstabSortName "Nome" 0
menuText B CrosstabSortRating "Rating" 0
menuText B CrosstabSortScore "Pontuacao" 0
menuText B CrosstabColor "Cor" 0
menuText B CrosstabColorPlain "Texto puro" 0
menuText B CrosstabColorHyper "Hipertexto" 0
menuText B CrosstabHelp "Ajuda" 0
menuText B CrosstabHelpCross "Ajuda para tabela de cruzamentos" 0
menuText B CrosstabHelpIndex "Indice da Ajuda" 0
translate B SetFilter {Setar filtro}
translate B AddToFilter {Adicionar ao filtro}
translate B Swiss {Suio}
translate B Category {Categoria} ;# ***

# Opening report window menus:
menuText B OprepFile "Arquivo" 0
menuText B OprepFileText "Imprimir para arquivo texto..." 9
menuText B OprepFileHtml "Imprimir para arquivo HTML..." 9
menuText B OprepFileLaTeX "Imprimir para arquivo LaTex..." 9
menuText B OprepFileOptions "Opcoes..." 0
menuText B OprepFileClose "Fechar janela de relatorio" 0
menuText B OprepFavorites "Favoritos" 1 ;# ***
menuText B OprepFavoritesAdd "Adicionar Relatrio..." 0 ;# ***
menuText B OprepFavoritesEdit "Editar Relatrio de Favoritos..." 0 ;# ***
menuText B OprepFavoritesGenerate "Gerar Relatrios..." 0 ;# ***
menuText B OprepHelp "Ajuda" 0
menuText B OprepHelpReport "Ajuda para Relatorio de abertura" 0
menuText B OprepHelpIndex "Indice da Ajuda" 0

# Repertoire editor:
menuText B RepFile "Arquivo" 0
menuText B RepFileNew "Novo" 0
menuText B RepFileOpen "Abrir..." 0
menuText B RepFileSave "Salvar..." 0
menuText B RepFileSaveAs "Salvar como..." 5
menuText B RepFileClose "Fechar janela" 0
menuText B RepEdit "Editar" 0
menuText B RepEditGroup "Adicionar grupo" 4
menuText B RepEditInclude "Adicionar linha incluida" 4
menuText B RepEditExclude "Adicionar linha excluida" 4
menuText B RepView "Visao" 0
menuText B RepViewExpand "Expandir todos os grupos" 0
menuText B RepViewCollapse "Contrair todos os grupos" 0
menuText B RepSearch "Pesquisa" 0
menuText B RepSearchAll "Tudo do repertorio..." 0
menuText B RepSearchDisplayed "Apenas linhas exibidas..." 0
menuText B RepHelp "Ajuda" 0
menuText B RepHelpRep "Ajuda de Repertorio" 0
menuText B RepHelpIndex "Indice da Ajuda" 0
translate B RepSearch "Pesquisa no repertorio"
translate B RepIncludedLines "linhas incluidas"
translate B RepExcludedLines "linhas excluidas"
translate B RepCloseDialog {Este repertorio sofreu alteracoes.

Voce realmente quer continuar e descartar as alteracoes que foram feitas?
}

# Header search:
translate B HeaderSearch {Busca por cabecalho}
translate B EndSideToMove {Lado que tem o mivimento ao final do jogo} ;# ***
translate B GamesWithNoECO {Jogos sem ECO?}
translate B GameLength {Tamanho do jogo}
translate B FindGamesWith {Encontrar jogos com}
translate B StdStart {Inicio padrao}
translate B Promotions {Promocoes}
translate B Comments {Comentarios}
translate B Variations {Variantes}
translate B Annotations {Anotacoes}
translate B DeleteFlag {Apagar Flag}
translate B WhiteOpFlag {Abertura Brancas}
translate B BlackOpFlag {Abertura Pretas}
translate B MiddlegameFlag {Meio-jogo}
translate B EndgameFlag {Final}
translate B NoveltyFlag {Novidade}
translate B PawnFlag {Estrutura de Peoes}
translate B TacticsFlag {Tatica}
translate B QsideFlag {Jogo na ala da Dama}
translate B KsideFlag {Jogo na ala do Rei}
translate B BrilliancyFlag {Brilhantismo}
translate B BlunderFlag {Erro!!!}
translate B UserFlag {Usuario}
translate B PgnContains {PGN contem texto}
# ====== TODO To be translated ======
translate B Annotator {Anotador}
# ====== TODO To be translated ======
translate B Cmnts {Apenas jogos anotados}

# Game list window:
translate B GlistNumber {Numero}
translate B GlistWhite {Branco}
translate B GlistBlack {Preto}
translate B GlistWElo {B-Elo}
translate B GlistBElo {P-Elo}
translate B GlistEvent {Evento}
translate B GlistSite {Lugar}
translate B GlistRound {Rodada}
translate B GlistDate {Data}
translate B GlistYear {Ano}
translate B GlistEDate {Evento-Data}
translate B GlistResult {Resultado}
translate B GlistLength {Tamanho}
translate B GlistCountry {Pais}
translate B GlistECO {ECO}
translate B GlistOpening {Abertura}
translate B GlistEndMaterial {Material-Final}
translate B GlistDeleted {Apagado}
translate B GlistFlags {Sinalizador}
translate B GlistVars {Variantes}
translate B GlistComments {Comentarios}
translate B GlistAnnos {Anotacoes}
translate B GlistStart {Iniciar}
translate B GlistGameNumber {Numero do Jogo}
# ====== TODO To be translated ======
translate B GlistAverageElo {Average Elo}
# ====== TODO To be translated ======
translate B GlistRating {Rating}
translate B GlistFindText {Encontrar texto}
translate B GlistMoveField {Mover}
translate B GlistEditField {Configurar}
translate B GlistAddField {Adicionar}
translate B GlistDeleteField {Remover}
translate B GlistWidth {Largura}
translate B GlistAlign {Alinhar}
# ====== TODO To be translated ======
translate B GlistAlignL {Align: left}
# ====== TODO To be translated ======
translate B GlistAlignR {Align: right}
# ====== TODO To be translated ======
translate B GlistAlignC {Align: center}
translate B GlistColor {Cor}
translate B GlistSep {Separador}
# ====== TODO To be translated ======
translate B GlistCurrentSep {-- Current --}
# ====== TODO To be translated ======
translate B GlistNewSort {New}
# ====== TODO To be translated ======
translate B GlistAddToSort {Add}
# ====== TODO To be translated ======
translate B GsortSort {Sort...}
# ====== TODO To be translated ======
translate B GsortDate {Date}
# ====== TODO To be translated ======
translate B GsortYear {Year}
# ====== TODO To be translated ======
translate B GsortEvent {Event}
# ====== TODO To be translated ======
translate B GsortSite {Site}
# ====== TODO To be translated ======
translate B GsortRound {Round}
# ====== TODO To be translated ======
translate B GsortWhiteName {White Name}
# ====== TODO To be translated ======
translate B GsortBlackName {Black Name}
# ====== TODO To be translated ======
translate B GsortECO {ECO}
# ====== TODO To be translated ======
translate B GsortResult {Result}
# ====== TODO To be translated ======
translate B GsortMoveCount {Move Count}
# ====== TODO To be translated ======
translate B GsortAverageElo {Average Elo}
# ====== TODO To be translated ======
translate B GsortCountry {Country}
# ====== TODO To be translated ======
translate B GsortDeleted {Deleted}
# ====== TODO To be translated ======
translate B GsortEventDate {Event Date}
# ====== TODO To be translated ======
translate B GsortWhiteElo {White Elo}
# ====== TODO To be translated ======
translate B GsortBlackElo {Black Elo}
# ====== TODO To be translated ======
translate B GsortComments {Comments}
# ====== TODO To be translated ======
translate B GsortVariations {Variations}
# ====== TODO To be translated ======
translate B GsortNAGs {NAGs}
# ====== TODO To be translated ======
translate B GsortAscending {Ascending}
# ====== TODO To be translated ======
translate B GsortDescending {Descending}
# ====== TODO To be translated ======
translate B GsortAdd {Add}
# ====== TODO To be translated ======
translate B GsortStore {Store}
# ====== TODO To be translated ======
translate B GsortLoad {Load}
translate B GlistRemoveThisGameFromFilter  {Remover este jogo do filtro}
translate B GlistRemoveGameAndAboveFromFilter  {Remover jogo (e todos antes dele) do filtro}
translate B GlistRemoveGameAndBelowFromFilter  {Remover jogo (e todos depois dele) do filtro}
translate B GlistDeleteGame {Recuperar este jogo} 
translate B GlistDeleteAllGames {Apagar todos os jogos no filtro} 
translate B GlistUndeleteAllGames {Recuperar todos os jogos no filtro} 
translate B GlistMergeGameInBase {Incorporar jogo em outra base} 

# Maintenance window:
translate B DatabaseName {Nome da base de dados:}
translate B TypeIcon {Icone de Tipo:}
translate B NumOfGames {Jogos:}
translate B NumDeletedGames {Jogos deletados:}
translate B NumFilterGames {Jogos no filtro:}
translate B YearRange {Faixa de Anos:}
translate B RatingRange {Faixa de Rating:}
translate B Description {Descrio} ;# ***
translate B Flag {Sinalizador}
translate B CustomFlags {Flags customizadas}
translate B DeleteCurrent {Deletar jogo corrente}
translate B DeleteFilter {Deletar jogos filtrados}
translate B DeleteAll {Deletar todos os jogos}
translate B UndeleteCurrent {Recuperar jogo corrente}
translate B UndeleteFilter {Recuperar jogos filtrados}
translate B UndeleteAll {Recuperar todos os jogos}
translate B DeleteTwins {Deletar duplicatas}
translate B MarkCurrent {Marcar jogo corrente}
translate B MarkFilter {Marcar jogos filtrados}
translate B MarkAll {Marcar todos os jogos}
translate B UnmarkCurrent {Desmarcar jogo corrente}
translate B UnmarkFilter {Desmarcar jogos filtrados}
translate B UnmarkAll {Desmarcar todos os jogos}
translate B Spellchecking {Verificacao Ortografica}
translate B Players {Jogadores}
translate B Events {Eventos}
translate B Sites {Lugares}
translate B Rounds {Rodadas}
translate B DatabaseOps {Operacoes na base de dados}
translate B ReclassifyGames {Jogos classificados por ECO}
translate B CompactDatabase {Compactar base de dados}
translate B SortDatabase {Ordenar base de dados}
translate B AddEloRatings {Adicionar ratings}
translate B AutoloadGame {Carregar autom. o jogo numero}
translate B StripTags {Remover tags PGN} ;# ***
translate B StripTag {Remover tag} ;# ***
translate B Cleaner {Limpador}
translate B CleanerHelp {
O Limpador do Scid executara todas as acoes de manutencao selecionadas da lista abaixo, no banco corrente.

As configuracoes atuais na classificacao por ECO e dialogos de exclusao de duplicatas serao aplicadas se voce escolher estas funcoes.
}
translate B CleanerConfirm {
Uma vez iniciado, o Limpador nao podera ser interrompido!

Esta operacao pode levar muito tempo para ser executada em uma grande base de dados, dependendo das funcoes selecionadas e das configuracoes atuais.

Voce esta certo de que quer iniciar as acoes de manutencao selecionadas?
}
translate B TwinCheckUndelete {para virar; "u" recupera ambos)}
translate B TwinCheckprevPair {Par anterior}
translate B TwinChecknextPair {Prximo par}
translate B TwinChecker {Scid: Verificador de duplicatas}
translate B TwinCheckTournament {Jogos no torneio:}
translate B TwinCheckNoTwin {Nenhuma duplicata  }
translate B TwinCheckNoTwinfound {Nenhuma duplicata foi detectada para este jogo.\nPara mostrar duplicatas nesta janela, voc deve usar primeiro a funo "Apagar Duplicatas...". }
translate B TwinCheckTag {Compartilhar tags...}
translate B TwinCheckFound1 {Scid encontrou $result duplicatas}
translate B TwinCheckFound2 { e definiu suas flags de excluso}
translate B TwinCheckNoDelete {No h jogos para excluir nesta base.}
translate B TwinCriteria1 { Suas configuraes para encontrar duplicatas podem \nfazer com que no duplicatas com movimentos similares sejam marcadas como se fossem.}
translate B TwinCriteria2 { recomendado que, se voc selecionar "No" para "mesmos movimentos", voc selecione "Sim" para as cores, evento, local, rodada, ano e ms.\nVoc quer continuar e excluir as duplicatas mesmo assim? }
translate B TwinCriteria3 { recomendado que voc especifique "Sim" para pelo menos duas das configuraes de "mesmo local", "mesma rodada" e "mesmo ano".\nVoc quer continuar e excluir as duplicatas mesmo assim?}
translate B TwinCriteriaConfirm {Scid: Confirme as configuraes de duplicatas}
translate B TwinChangeTag "Alterar as seguintes tags:\n\n"
translate B AllocRatingDescription "Este comando utilizar o arquivo corrente de verificao ortogrfica para adicionar ratings Elo aos jogos nesta base. Sempre que um jogador no tiver um rating corrente, mas seu rating no momento do jogo estiver listado no arquivo de verificao, esse rating ser adicionado."
translate B RatingOverride "Sobrescrever ratings existentes diferentes de zero?"
translate B AddRatings "Adicionar ratings a:"
translate B AddedRatings {Scid adicionou $r ratings Elo em $g jogos.}
translate B NewSubmenu "Novo Submenu"

# Comment editor:
translate B AnnotationSymbols  {Simbolos de Anotacao:}
translate B Comment {Comentario:}
translate B InsertMark {Inserir marca} ;# ***
translate B InsertMarkHelp {
Insere/remove marca: Seleciona cor, tipo, casa.
Insere/remove seta: Clique com o boto direito em duas casas.
} ;# ***

# Nag buttons in comment editor:
translate B GoodMove {Bom Movimento} ;# ***
translate B PoorMove {Movimento Pobre} ;# ***
translate B ExcellentMove {Movimento Excelente} ;# ***
translate B Blunder {Erro!!!} ;# ***
translate B InterestingMove {Movimento Interessante} ;# ***
translate B DubiousMove {Movimento Duvidoso} ;# ***
translate B WhiteDecisiveAdvantage {Branca tem vantagem decisiva} ;# ***
translate B BlackDecisiveAdvantage {Preta tem vantagem decisiva} ;# ***
translate B WhiteClearAdvantage {Branca tem clara vantagem} ;# ***
translate B BlackClearAdvantage {Preta tem clara vantagem} ;# ***
translate B WhiteSlightAdvantage {Branca tem alguma vantagem} ;# ***
translate B BlackSlightAdvantage {Preta tem alguma vantagem} ;# ***
translate B Equality {Igualdade} ;# ***
translate B Unclear {No claro} ;# ***
translate B Diagram {Diagrama} ;# ***

# Board search:
translate B BoardSearch {Pesquisa Tabuleiro}
translate B FilterOperation {Operacao no filtro corrente:}
translate B FilterAnd {E (Filtro restrito)}
translate B FilterOr {OU (Adicionar ao filtro)}
translate B FilterIgnore {IGNORAR (Limpar filtro)}
translate B SearchType {Tipo de pesquisa:}
translate B SearchBoardExact {Posicao exata (todas as pecas nas mesmas casas)}
translate B SearchBoardPawns {Peoes (mesmo material, todos os peoes nas mesmas casas)}
translate B SearchBoardFiles {Colunas (mesmo material, todos os peoes na mesma coluna)}
translate B SearchBoardAny {Qualquer (mesmo material, peoes e pecas em qualquer posicao)}
translate B SearchInRefDatabase { Pesquisa na base }
translate B LookInVars {Olhar nas variantes}

# Material search:
translate B MaterialSearch {Pesquisa Material}
translate B Material {Material}
translate B Patterns {Padroes}
translate B Zero {Zero}
translate B Any {Qualquer}
translate B CurrentBoard {Tabuleiro corrente}
translate B CommonEndings {Finais comuns}
translate B CommonPatterns {Padroes comuns}
translate B MaterialDiff {Diferenca de Material}
translate B squares {casas}
translate B SameColor {Mesma cor}
translate B OppColor {Cor oposta}
translate B Either {Qualquer}
translate B MoveNumberRange {Faixa do numero de movimentos}
translate B MatchForAtLeast {Conferem por pelo menos}
translate B HalfMoves {meios movimentos}

# Common endings in material search:
translate B EndingPawns {Finais com Pees} ;# ***
translate B EndingRookVsPawns {Torre contra Pees} ;# ***
translate B EndingRookPawnVsRook {Torre e 1 Peo contra Torre} ;# ***
translate B EndingRookPawnsVsRook {Torre e Pees contra Torre} ;# ***
translate B EndingRooks {Finais Torre contra Torre} ;# ***
translate B EndingRooksPassedA {Finais Torre contra Torre com Peo passado na coluna a} ;# ***
translate B EndingRooksDouble {Finais com Torres dobradas} ;# ***
translate B EndingBishops {Finais Bispo contra Bispo} ;# ***
translate B EndingBishopVsKnight {Finais Bispo contra Cavalo} ;# ***
translate B EndingKnights {Finais Cavalo contra Cavalo} ;# ***
translate B EndingQueens {Finais Dama contra Dama} ;# ***
translate B EndingQueenPawnVsQueen {Dama e 1 Peo contra Dama} ;# ***
translate B BishopPairVsKnightPair {Meio-jogo com 2 Bispos contra 2 Cavalos} ;# ***

# Common patterns in material search:
translate B PatternWhiteIQP {IQP Branca} ;# ***
translate B PatternWhiteIQPBreakE6 {IQP Branca: avano d4-d5 contra e6} ;# ***
translate B PatternWhiteIQPBreakC6 {IQP Branca: avano d4-d5 contra c6} ;# ***
translate B PatternBlackIQP {IQP Preta} ;# ***
translate B PatternWhiteBlackIQP {IQP Branca vs. IQP Preta} ;# ***
translate B PatternCoupleC3D4 {Pees Brancos isolados em c3+d4} ;# ***
translate B PatternHangingC5D5 {Pees Pretos em c5 e d5} ;# ***
translate B PatternMaroczy {Maroczy Center (com Pees em c4 e e4)} ;# ***
translate B PatternRookSacC3 {Sacrifcio de Torre em c3} ;# ***
translate B PatternKc1Kg8 {O-O-O vs. O-O (Rc1 vs. Rg8)} ;# ***
translate B PatternKg1Kc8 {O-O vs. O-O-O (Rg1 vs. Rc8)} ;# ***
translate B PatternLightFian {Fianchettos nas casas brancas(Bispo-g2 vs. Bispo-b7)} ;# ***
translate B PatternDarkFian {Fianchettos nas casas pretas (Bispo-b2 vs. Bispo-g7)} ;# ***
translate B PatternFourFian {Quatro Fianchettos (Bispos em b2,g2,b7,g7)} ;# ***

# Game saving:
translate B Today {Hoje}
translate B ClassifyGame {Classificar Jogo}

# Setup position:
translate B EmptyBoard {Tabuleiro vazio}
translate B InitialBoard {Tabuleiro Inicial}
translate B SideToMove {Lado que move}
translate B MoveNumber {No. do Movimento}
translate B Castling {Roque}
translate B EnPassantFile {coluna En Passant}
translate B ClearFen {Limpar FEN}
translate B PasteFen {Colar FEN}
translate B SaveAndContinue {Salvar e continuar}
translate B DiscardChangesAndContinue {Descartar alteraes\ne continuar}
translate B GoBack {Voltar}

# Replace move dialog:
translate B ReplaceMove {Substituir movimento}
translate B AddNewVar {Adicionar nova variante}
translate B NewMainLine {Nova linha principal}
translate B ReplaceMoveMessage {Um movimento ja existe nesta posicao.

Voce pode substitui-lo, descartar todos os movimentos que o seguem, ou adicionar seu movimento como uma nova variante.

(Voce pode evitar que esta mensagem apareca no futuro desligando a opcao "Perguntar antes de substituir movimentos" no menu Opcoes:Movimentos.)}

# Make database read-only dialog:
translate B ReadOnlyDialog {Se voce tornar esta base de dados apenas para leitura, nenhuma alteracao sera permitida.
Nenhum jogo podera ser salvo ou substituido, e nenhuma flag de exclusao podera ser alterada.
Qualquer ordenacao ou resultados de classificacao por ECO serao temporarios.

Para poder tornar a base de dados atualizavel novamente, feche-a e abra-a novamente.

Voce realmente quer que esta base de dados seja apenas de leitura?}

# Clear game dialog:
translate B ClearGameDialog {Este jogo foi alterado.

Voce realmente quer continuar e descartar as mudancas feitas?
}

# Exit dialog:
translate B ExitDialog {Voce quer realmente sair do Scid?}
translate B ExitUnsaved {As bases a seguir tem mudanas nos jogos que no foram salvas. Se voc sair agora, essas mudanas sero perdidas.} ;# ***

# Import window:
translate B PasteCurrentGame {Colar jogo corrente}
translate B ImportHelp1 {Introduzir ou colar um jogo em formato PGN no quadro acima.}
translate B ImportHelp2 {Quaisquer erros ao importar o jogo serao mostrados aqui.}
translate B OverwriteExistingMoves {Sobrescrever movimentos existentes ?}

# ECO Browser:
translate B ECOAllSections {todas as secoes ECO}
translate B ECOSection {secao ECO}
translate B ECOSummary {Resumo para}
translate B ECOFrequency {Frequencia de subcodigos para}

# Opening Report:
translate B OprepTitle {Relatorio de Abertura}
translate B OprepReport {Relatorio}
translate B OprepGenerated {Gerado por}
translate B OprepStatsHist {Estatisticas e Historico}
translate B OprepStats {Estatisticas}
translate B OprepStatAll {Todas as partidas do relatorio}
translate B OprepStatBoth {Ambos com rating}
translate B OprepStatSince {Desde}
translate B OprepOldest {Jogos mais antigos}
translate B OprepNewest {Jogos mais recentes}
translate B OprepPopular {Popularidade Atual}
translate B OprepFreqAll {Frequencia em todos os anos:   }
translate B OprepFreq1   {No ultimo ano: }
translate B OprepFreq5   {Nos ultimos 5 anos: }
translate B OprepFreq10  {Nos ultimos 10 anos: }
translate B OprepEvery {uma vez em cada %u jogos}
translate B OprepUp {ate %u%s de todos os anos}
translate B OprepDown {menos que %u%s de todos os anos}
translate B OprepSame {nenhuma mudanca em todos os anos}
translate B OprepMostFrequent {Jogadores mais frequentes}
translate B OprepMostFrequentOpponents {Oponentes mais frequentes} ;# ***
translate B OprepRatingsPerf {Ratings e Desempenho}
translate B OprepAvgPerf {Ratings e desempenho medios}
translate B OprepWRating {Rating Brancas}
translate B OprepBRating {Rating Pretas}
translate B OprepWPerf {Desempenho Brancas}
translate B OprepBPerf {Desempenho Pretas}
translate B OprepHighRating {Jogos com o maior rating medio}
translate B OprepTrends {Tendencias de Resultados}
translate B OprepResults {Qtd. e frequencia de resultados}
translate B OprepLength {Tamanho do jogo}
translate B OprepFrequency {Frequencia}
translate B OprepWWins {Brancas vencem: }
translate B OprepBWins {Pretas vencem:  }
translate B OprepDraws {Empates:        }
translate B OprepWholeDB {toda a base de dados}
translate B OprepShortest {Vitorias mais rapidas}
translate B OprepMovesThemes {Movimentos e Temas}
translate B OprepMoveOrders {Ordem dos movimentos para atingir a posicao do relatorio}
translate B OprepMoveOrdersOne \
  {Houve apenas uma ordem de movimentos que atinge esta posicao: }
translate B OprepMoveOrdersAll \
  {Houve apenas %u ordens de movimentos que atingem esta posicao:}
translate B OprepMoveOrdersMany \
  {Houve %u ordens de movimentos que atingem esta posicao. As %u primeiras sao:}
translate B OprepMovesFrom {Movimentos da posicao do relatorio}
translate B OprepMostFrequentEcoCodes {Cdigos ECO mais frequentes} ;# ***
translate B OprepThemes {Temas Posicionais}
translate B OprepThemeDescription {Frequencia dos temas nos primeiros  %u movimentos de cada jogo} ;# ***
translate B OprepThemeSameCastling {Roque do mesmo lado}
translate B OprepThemeOppCastling {Roques opostos}
translate B OprepThemeNoCastling {Ninguem efetuou o roque}
translate B OprepThemeKPawnStorm {Tempestade de Peoes no lado do Rei}
translate B OprepThemeQueenswap {Damas ja trocadas}
translate B OprepThemeWIQP {Peo branco da Dama isolado} ;# ***
translate B OprepThemeBIQP {Peo preto da Dama isolado} ;# ***
translate B OprepThemeWP567 {Peao Branco na 5/6/7a fila}
translate B OprepThemeBP234 {Peao Preto na 2/3/4a fila}
translate B OprepThemeOpenCDE {Colunas c/d/e abertas}
translate B OprepTheme1BishopPair {Um lado tem o par de Bispos}
translate B OprepEndgames {Finais}
translate B OprepReportGames {Jogos no Relatorio}
translate B OprepAllGames {Todos os jogos}
translate B OprepEndClass {Material ao fim de cada jogo}
translate B OprepTheoryTable {Tabela de Teoria}
translate B OprepTableComment {Gerada a partir dos %u jogos com rating mais alto.}
translate B OprepExtraMoves {Movimentos com nota extra na Tabela de Teoria}
translate B OprepMaxGames {Qtde. Maxima de jogos na tabela de teoria}
translate B OprepViewHTML {Visualizar HTML} ;# ***
translate B OprepViewLaTeX {Visualizar LaTeX} ;# ***

# Player Report:
translate B PReportTitle {Relatorio do Jogador} ;# ***
translate B PReportColorWhite {com as Brancas} ;# ***
translate B PReportColorBlack {com as Pretas} ;# ***
translate B PReportMoves {aps %s} ;# ***
translate B PReportOpenings {Aberturas} ;# ***
translate B PReportClipbase {Limpa base de cpia e copia os jogos encontrados para ela} ;# ***

# Piece Tracker window:
translate B TrackerSelectSingle {Use o boto esquerdo do mouse para selecionar esta pea.} ;# ***
translate B TrackerSelectPair {Boto esquerdo seleciona esta pea; boto direito seleciona sua parceira.}
translate B TrackerSelectPawn {Boto esquerdo seleciona este Peo; boto direito seleciona os 8 Pees}
translate B TrackerStat {Estatisticas}
translate B TrackerGames {% jogos com movimentos para a casa}
translate B TrackerTime {% tempo em cada casa}
translate B TrackerMoves {Movimentos}
translate B TrackerMovesStart {Entre o nmero do movimento a partir do qual o acompanhamento deve ser feito.}
translate B TrackerMovesStop {Entre com o numero do movimento onde deve parar o acompanhamento.}

# Game selection dialogs:
translate B SelectAllGames {Todos os jogos na base de dados}
translate B SelectFilterGames {Apenas jogos no filtro}
translate B SelectTournamentGames {Somente jogos no torneio atual}
translate B SelectOlderGames {Somente jogos antigos}

# Delete Twins window:
translate B TwinsNote {Para serem duplicatas, dois jogos devem ter pelo menos os mesmos dois jogadores, alem de criterios que voce pode definir abaixo. Quando um par de duplicatas e encontrado, o jogo menor e deletado. Dica: e melhor fazer a verificacao ortografica da base de dados antes de remover duplicatas, pois isso melhora o processo de deteccao de duplicatas. }
translate B TwinsCriteria {Criterio: Duplicatas devem ter...}
translate B TwinsWhich {Jogos a examinar}
translate B TwinsColors {Jogadores com a mesma cor?}
translate B TwinsEvent {Mesmo evento?}
translate B TwinsSite {Mesmo lugar?}
translate B TwinsRound {Mesma rodada?}
translate B TwinsYear {Mesmo ano?}
translate B TwinsMonth {Mesmo mes?}
translate B TwinsDay {Mesmo dia?}
translate B TwinsResult {Mesmo resultado?}
translate B TwinsECO {Mesmo codigo ECO?}
translate B TwinsMoves {Mesmos movimentos?}
translate B TwinsPlayers {Comparacao dos nomes dos jogadores:}
translate B TwinsPlayersExact {Comparacao exata}
translate B TwinsPlayersPrefix {Primeiras 4 letras apenas}
translate B TwinsWhen {Quando deletar duplicatas}
translate B TwinsSkipShort {Ignorar todos os jogos com menos de 5 movimentos?}
translate B TwinsUndelete {Recuperar todos os jogos antes?}
translate B TwinsSetFilter {Definir filtro para todas as duplicatas deletadas?}
translate B TwinsComments {Manter sempre os jogos com comentarios?}
translate B TwinsVars {Manter sempre os jogos com variantes?}
translate B TwinsDeleteWhich {Excluir qual jogo:} ;# ***
translate B TwinsDeleteShorter {Menor jogo} ;# ***
translate B TwinsDeleteOlder {Menor numero de jogo} ;# ***
translate B TwinsDeleteNewer {Maior numero de jogo} ;# ***
translate B TwinsDelete {Deletar jogos}

# Name editor window:
translate B NameEditType {Tipo de nome para editar}
translate B NameEditSelect {Jogos para editar}
translate B NameEditReplace {Substituir}
translate B NameEditWith {com}
translate B NameEditMatches {Confere: Pressione Ctrl+1 a Ctrl+9 para selecionar}
translate B CheckGames {Marcar jogos}
translate B CheckGamesWhich {Marcar jogos}
translate B CheckAll {Todos os jogos}
translate B CheckSelectFilterGames {Somente jogos filtrados}

# Classify window:
translate B Classify {Classificar}
translate B ClassifyWhich {Que jogos devem ser classificados por ECO}
translate B ClassifyAll {Todos os Jogos (substituir codigos ECO antigos)}
translate B ClassifyYear {Todos os jogos do ultimo ano}
translate B ClassifyMonth {Todos os jogos do ultimo mes}
translate B ClassifyNew {Somente jogos ainda sem codigo ECO}
translate B ClassifyCodes {Codigos ECO a serem usados}
translate B ClassifyBasic {Codigos Basicos apenas ("B12", ...)}
translate B ClassifyExtended {Extensoes Scid ("B12j", ...)}

# Compaction:
translate B NameFile {Arquivo de nomes}
translate B GameFile {Arquivo de jogos}
translate B Names {Nomes}
translate B Unused {Nao usado}
translate B SizeKb {Tamanho (kb)}
translate B CurrentState {Estado Atual}
translate B AfterCompaction {Apos compactacao}
translate B CompactNames {Compactar arquivo de nomes}
translate B CompactGames {Compactar arquivo de nomes}
translate B NoUnusedNames "No h nomes no utilizados, ento o arquivo j est totalmente compactado."
translate B NoUnusedGames "O arquivo de jogo j est totalmente compactado."
translate B NameFileCompacted {O arquivo de nomes para a base "[file tail [sc_base filename]]" est compactado.}
translate B GameFileCompacted {O arquivo de jogos para a base "[file tail [sc_base filename]]" est compactado.}

# Sorting:
translate B SortCriteria {Criterio}
translate B AddCriteria {Adicionar criterio}
translate B CommonSorts {Ordenacoes comuns}
translate B Sort {Ordenar}

# Exporting:
translate B AddToExistingFile {Adicionar jogos a um arquivo existente?}
translate B ExportComments {Exportar comentarios?}
translate B ExportVariations {Exportar variantes?}
translate B IndentComments {Identar Comentarios?}
translate B IndentVariations {Identar Variantes?}
translate B ExportColumnStyle {Estilo Coluna (um movimento por linha)?}
translate B ExportSymbolStyle {Estilo de anotacao simbolica:}
translate B ExportStripMarks {Remover cdigos de marca de casa/seta dos comentrios?} ;# ***

# Goto game/move dialogs:
translate B LoadGameNumber {Entre o numero do jogo a ser carregado:}
translate B GotoMoveNumber {Ir p/ o lance no.:}

# Copy games dialog:
translate B CopyGames {Copiar jogos}
translate B CopyConfirm {
 Voce realmente quer copiar
 os [::utils::thousands $nGamesToCopy] jogos filtrados
 da base de dados "$fromName"
 para a base de dados "$targetName"?
}
translate B CopyErr {Copia nao permitida}
translate B CopyErrSource {a base de dados origem}
translate B CopyErrTarget {a base de dados destino}
translate B CopyErrNoGames {nao tem jogos que atendam o filtro}
translate B CopyErrReadOnly {e apenas de leitura}
translate B CopyErrNotOpen {nao esta aberta}

# Colors:
translate B LightSquares {Casas Brancas}
translate B DarkSquares {Casas Pretas}
translate B SelectedSquares {Casas selecionadas}
translate B SuggestedSquares {Casas Sugeridas}
translate B WhitePieces {Pecas Brancas}
translate B BlackPieces {Pecas Pretas}
translate B WhiteBorder {Borda Branca}
translate B BlackBorder {Borda Preta}

# Novelty window:
translate B FindNovelty {Buscar Novidade}
translate B Novelty {Novidade}
translate B NoveltyInterrupt {Busca interrompida}
translate B NoveltyNone {Nenhuma novidade encontrada}
translate B NoveltyHelp {
Scid buscara o primeiro movimento do jogo atual que alcanca uma posicao nao encontrada na base selecionada ou no arquivo ECO.
}

# Sounds configuration:
translate B SoundsFolder {Pasta de arquivos de som} ;# ***
translate B SoundsFolderHelp {A pasta deve conter os arquivos King.wav, a.wav, 1.wav, etc} ;# ***
translate B SoundsAnnounceOptions {Opes de anuncio de movimentos} ;# ***
translate B SoundsAnnounceNew {Anuncia novos movimentos quando eles so feitos} ;# ***
translate B SoundsAnnounceForward {Anuncia movimentos quando avanar um movimento} ;# ***
translate B SoundsAnnounceBack {Anuncia movimentos quando retroceder um movimento} ;# ***

# Upgrading databases:
translate B Upgrading {Atualizando}
translate B ConfirmOpenNew {
Esta e uma base em formato antigo (Scid 3) que nao pode ser aberta pelo Scid 4, mas uma versao no novo formato (Scid 4) ja foi criada.

Voce quer abrir a nova versao da base Scid 4?
}
translate B ConfirmUpgrade {
Esta e uma base em formato antigo (Scid 3). Uma versao da base no novo formato deve ser criada antes de poder ser usada no Scid 4.

A atualizacao criara uma nova versao da base; isto nao altera nem remove os registros originais.

Este processo pode levar algum tempo, mas so precisa ser feito uma vez e pode ser cancelado se estiver demorando muito.

Voce quer atualizar esta base agora?
}

# Recent files options:
translate B RecentFilesMenu {Numero de arquivos recentes no menu Arquivo} ;# ***
translate B RecentFilesExtra {Numero de arquivos recentes no submenu extra} ;# ***

# My Player Names options:
translate B MyPlayerNamesDescription {
Entre com uma lista dos nomes de jogadores preferidos, abaixo, um nome por linha. Substitutos (ex. "?" para qualquer caracter nico, "*" para qualquer sequencia de caracteres) so permitidas.

Cada vez que um jogo com um jogador da lista  carregado, o tabuleiro da janela principal sofrer rotao, se necessrio, para mostrar o jogo da perspectiva desse jogador..
} ;# ***
translate B showblunderexists {mostra que existe um erro crasso}
translate B showblundervalue {mostra o valor do erro crasso}
translate B showscore {mostra o score}
translate B coachgame {auxilio ao jogo}
translate B configurecoachgame {configura auxilio ao jogo}
translate B configuregame {Configurao do jogo}
translate B Phalanxengine {Engine Phalanx}
translate B Coachengine {Engine de auxilio}
translate B difficulty {dificuldade}
translate B hard {dificil}
translate B easy {facil}
translate B Playwith {Jogar com}
translate B white {branca}
translate B black {preta}
translate B both {ambas}
translate B Play {Jogar}
translate B Noblunder {Nenhum erro crasso}
translate B blunder {erro crasso}
translate B Noinfo {-- Sem informaes --}
translate B PhalanxOrTogaMissing {Phalanx ou Toga no encontrado}
translate B moveblunderthreshold {movimento e um erro crasso se a perda e maior que}
translate B limitanalysis {limita tempo de analise do engine}
translate B seconds {segundos}
translate B Abort {Abortar}
translate B Resume {Continuar}
translate B OutOfOpening {Fora da abertura}
translate B NotFollowedLine {Voc no seguiu a linha}
translate B DoYouWantContinue {Voce quer continuar ?}
translate B CoachIsWatching {Auxilio esta observando}
translate B Ponder {Pensando permanentemente}
translate B LimitELO {Limite da fora ELO}
translate B DubiousMovePlayedTakeBack {Movimento duvidoso, quer voltar ?}
translate B WeakMovePlayedTakeBack {Movimento fraco, quer voltar ?}
translate B BadMovePlayedTakeBack {Movimento ruim, quer voltar ?}
translate B Iresign {Eu desisto}
translate B yourmoveisnotgood {seu movimento nao e bom}
translate B EndOfVar {Fim da variante}
translate B Openingtrainer {Treinador de aberturas}
translate B DisplayCM {Mostrar movimentos candidatos}
translate B DisplayCMValue {Mostrar valor dos movimentos candidatos}
translate B DisplayOpeningStats {Mostrar estatisticas}
translate B ShowReport {Mostrar relatorio}
translate B NumberOfGoodMovesPlayed {bom movimentos jogados}
translate B NumberOfDubiousMovesPlayed {movimentos duvidosos jogados}
translate B NumberOfMovesPlayedNotInRepertoire {movimentos jogados no existem no repertorio}
translate B NumberOfTimesPositionEncountered {vezes a posio foi encontrada}
translate B PlayerBestMove  {Permitir somente os melhores movimentos}
translate B OpponentBestMove {Oponente joga os melhores movimentos}
translate B OnlyFlaggedLines {Somente linhas marcadas}
translate B resetStats {Reiniciar estatisticas}
translate B Repertoiretrainingconfiguration {Configurao do repertorio de treinamento}
translate B Loadingrepertoire {Carregando repertorio}
translate B Movesloaded {Movimentos carregados}
translate B Repertoirenotfound {Repertorio no encontrado}
translate B Openfirstrepertoirewithtype {Abra primeiro uma base de repertorio com o cone/tipo definido do lado direito}
translate B Movenotinrepertoire {Movimento no existe no repertorio}
translate B PositionsInRepertoire {Posies no repertorio}
translate B PositionsNotPlayed {Posies no jogadas}
translate B PositionsPlayed {Posies jogadas}
translate B Success {Successo}
translate B DubiousMoves {Movimentos duvidosos}
translate B OutOfRepertoire {Fora do Repertorio}
translate B ConfigureTactics {Configurar taticas}
translate B ResetScores {Reiniciar scores}
translate B LoadingBase {Carregando base}
translate B Tactics {Taticas}
translate B ShowSolution {Mostrar soluo}
translate B NextExercise {Proximo exercicio}
translate B PrevExercise {exercicio anterior}
translate B StopTraining {Parar treinamento}
translate B Next {Proximo}
translate B ResettingScore {Reinicializando score}
translate B LoadingGame {Carregando jogo}
translate B MateFound {Mate encontrado}
translate B BestSolutionNotFound {Melhor soluo NO encontrada !}
translate B MateNotFound {Mate no encontrado}
translate B ShorterMateExists {Existe mate mais curto}
translate B ScorePlayed {Score obtido}
translate B Expected {esperado}
translate B ChooseTrainingBase {Escolher base de treinamento}
translate B Thinking {Pensando}
translate B AnalyzeDone {Analise completa}
translate B WinWonGame {Win venceu o jogo}
translate B Lines {Linhas}
translate B ConfigureUCIengine {Configurar engine UCI}
translate B SpecificOpening {Abertura especifica}
translate B StartNewGame {Iniciar novo jogo}
translate B FixedLevel {Nivel fixo}
translate B Opening {Abertura}
translate B RandomLevel {Nivel aleatorio}
translate B StartFromCurrentPosition {Iniciar a paartir da posio corrente}
translate B FixedDepth {Profundidade fixa}
translate B Nodes {Ns} 
translate B Depth {Profundidade}
translate B Time {Tempo} 
translate B SecondsPerMove {Segundos por movimento}
translate B Engine {Engine}
translate B TimeMode {Modo de tempo}
translate B TimeBonus {Bonus de tempo}
translate B TimeMin {min}
translate B TimeSec {seg}
translate B AllExercisesDone {Todos os exercicios completos}
translate B MoveOutOfBook {Movimento fora do livro}
translate B LastBookMove {Ultimo movimento do livro}
translate B AnnotateSeveralGames {Anotar diversos jogos\ndo atual at :}
translate B FindOpeningErrors {Encontrar erros na abertura}
translate B MarkTacticalExercises {Marcar exercicios taticos}
translate B UseBook {Usar livro}
translate B MultiPV {Variantes multiplas}
translate B Hash {Varrer memria}
translate B OwnBook {Usar livro do engine}
translate B BookFile {Livro de aberturas}
translate B AnnotateVariations {Anotar variantes}
translate B ShortAnnotations {Anotaes curtas}
translate B addAnnotatorTag {Adicionar tag do anotador}
translate B AddScoreToShortAnnotations {Adicionar o score s anotaes curtas}
translate B Export {Exportar}
translate B BookPartiallyLoaded {Livro parcialmente carregado}
translate B Calvar {Calculo de variantes}
translate B ConfigureCalvar {Configurao}
# ====== TODO To be translated ======
translate B Reti {Reti}
# ====== TODO To be translated ======
translate B English {Inglesa}
# ====== TODO To be translated ======
translate B d4Nf6Miscellaneous {1.d4 Nf6 Diversas}
# ====== TODO To be translated ======
translate B Trompowsky {Trompowsky}
# ====== TODO To be translated ======
translate B Budapest {Budapest}
# ====== TODO To be translated ======
translate B OldIndian {India antiga}
# ====== TODO To be translated ======
translate B BenkoGambit {Gambito Benko}
# ====== TODO To be translated ======
translate B ModernBenoni {Modern Benoni}
# ====== TODO To be translated ======
translate B DutchDefence {Defesa Holandesa}
# ====== TODO To be translated ======
translate B Scandinavian {Escandinava}
# ====== TODO To be translated ======
translate B AlekhineDefence {Defesa Alekhine}
# ====== TODO To be translated ======
translate B Pirc {Pirc}
# ====== TODO To be translated ======
translate B CaroKann {Caro-Kann}
# ====== TODO To be translated ======
translate B CaroKannAdvance {Caro-Kann Advance}
# ====== TODO To be translated ======
translate B Sicilian {Siciliana}
# ====== TODO To be translated ======
translate B SicilianAlapin {Siciliana Alapin}
# ====== TODO To be translated ======
translate B SicilianClosed {Siciliana Fechada}
# ====== TODO To be translated ======
translate B SicilianRauzer {Siciliana Rauzer}
# ====== TODO To be translated ======
translate B SicilianDragon {Siciliana Dragao}
# ====== TODO To be translated ======
translate B SicilianScheveningen {Siciliana Scheveningen}
# ====== TODO To be translated ======
translate B SicilianNajdorf {Siciliana Najdorf}
# ====== TODO To be translated ======
translate B OpenGame {Jogo aberto}
# ====== TODO To be translated ======
translate B Vienna {Vienna}
# ====== TODO To be translated ======
translate B KingsGambit {Gambito do Rei}
# ====== TODO To be translated ======
translate B RussianGame {Russa}
# ====== TODO To be translated ======
translate B ItalianTwoKnights {Italiana/Dois Cavalos}
# ====== TODO To be translated ======
translate B Spanish {Espanhola}
# ====== TODO To be translated ======
translate B SpanishExchange {Espanhola Trocas}
# ====== TODO To be translated ======
translate B SpanishOpen {Espanhola Aberta}
# ====== TODO To be translated ======
translate B SpanishClosed {Espanhola Fechada}
# ====== TODO To be translated ======
translate B FrenchDefence {Defesa Francesa}
# ====== TODO To be translated ======
translate B FrenchAdvance {Francesa Avanco}
# ====== TODO To be translated ======
translate B FrenchTarrasch {Francesa Tarrasch}
# ====== TODO To be translated ======
translate B FrenchWinawer {Francesa Winawer}
# ====== TODO To be translated ======
translate B FrenchExchange {Francesa Trocas}
# ====== TODO To be translated ======
translate B QueensPawn {Peao da Dama}
# ====== TODO To be translated ======
translate B Slav {Eslava}
# ====== TODO To be translated ======
translate B QGA {QGA}
# ====== TODO To be translated ======
translate B QGD {QGD}
# ====== TODO To be translated ======
translate B QGDExchange {QGD Trocas}
# ====== TODO To be translated ======
translate B SemiSlav {Semi-Eslava}
# ====== TODO To be translated ======
translate B QGDwithBg5 {QGD com Bg5}
# ====== TODO To be translated ======
translate B QGDOrthodox {QGD Ortodoxa}
# ====== TODO To be translated ======
translate B Grunfeld {Grnfeld}
# ====== TODO To be translated ======
translate B GrunfeldExchange {Grnfeld Trocas}
# ====== TODO To be translated ======
translate B GrunfeldRussian {Grnfeld Russa}
# ====== TODO To be translated ======
translate B Catalan {Catalan}
# ====== TODO To be translated ======
translate B CatalanOpen {Catalan Aberta}
# ====== TODO To be translated ======
translate B CatalanClosed {Catalan Fechada}
# ====== TODO To be translated ======
translate B QueensIndian {India da Dama}
# ====== TODO To be translated ======
translate B NimzoIndian {Nimzo-India}
# ====== TODO To be translated ======
translate B NimzoIndianClassical {Nimzo-India Classica}
# ====== TODO To be translated ======
translate B NimzoIndianRubinstein {Nimzo-India Rubinstein}
# ====== TODO To be translated ======
translate B KingsIndian {India do Rei}
# ====== TODO To be translated ======
translate B KingsIndianSamisch {India do Rei Smisch}
# ====== TODO To be translated ======
translate B KingsIndianMainLine {India do Rei Linha Principal}
translate B ConfigureFics {Configurar FICS}
translate B FICSGuest {Login como convidado}
translate B FICSServerPort {Porta do Servidor}
translate B FICSServerAddress {Endereo IP}
translate B FICSRefresh {Atualizar}
translate B FICSTimesealPort {Porta Timeseal}
translate B FICSSilence {Silencio}
translate B FICSOffers {Ofertas}
translate B FICSConsole {Console}
translate B FICSGames {Jogos}
translate B FICSUnobserve {Parar de observar jogo}
translate B FICSProfile {Exibir seu perfil e historico}
translate B FICSRelayedGames {Jogos conectados}
translate B FICSFindOpponent {Encontrar Oponente}
translate B FICSTakeback {Voltar}
translate B FICSTakeback2 {Voltar 2}
translate B FICSInitTime {Tempo inicial (min)}
translate B FICSIncrement {Incremento (seg)}
translate B FICSRatedGame {Jogo com rate}
translate B FICSAutoColour {automatico}
translate B FICSManualConfirm {confirmar manualmente}
translate B FICSFilterFormula {Filtro com formula}
translate B FICSIssueSeek {Busca item}
translate B FICSChallenge {Desafiar}
translate B FICSAccept {aceitar}
translate B FICSDecline {recusar}
translate B FICSColour {Cor}
translate B FICSSend {enviar}
translate B FICSConnect {Conectar}
translate B FICSdefaultuservars {Usar variaveis default}
translate B FICSObserveconfirm {Voce quer observar o jogo}
translate B GameReview {Rever jogo}
translate B GameReviewTimeExtended {Tempo estendido}
translate B GameReviewMargin {Mergem de erro}
translate B GameReviewAutoContinue {Continuar automaticamente quando o movimento estiver correto}
translate B GameReviewReCalculate {Usar tempo estendido}
translate B GameReviewAnalyzingMovePlayedDuringTheGame {Analisando movimento feito durante o jogo}
translate B GameReviewAnalyzingThePosition {Analisando a posio}
translate B GameReviewEnterYourMove {Entre seu movimento}
translate B GameReviewCheckingYourMove {Verificando seu movimento}
translate B GameReviewYourMoveWasAnalyzed {Seu movimento foi analisado}
translate B GameReviewYouPlayedSameMove {Voc usou o mesmo movimento como na resposta}
translate B GameReviewScoreOfYourMove {Score do seu movimento}
translate B GameReviewGameMoveScore {Score do movimento do jogo}
translate B GameReviewEngineScore {Score do Engine}
translate B GameReviewYouPlayedLikeTheEngine {Voce jogou como o engine}
translate B GameReviewNotEngineMoveButGoodMove {No  o movimento do engine, mas  um bom movimento}
translate B GameReviewMoveNotGood {Este movimento no  bom; seu score e}
translate B GameReviewMovesPlayedLike {Movimentos semelhantes}
translate B GameReviewMovesPlayedEngine {Movimentos semelhantes aos do engine}
translate B CCDlgConfigureWindowTitle {Configurar Xadrez por correspondencia}
translate B CCDlgCGeneraloptions {Opes Gerais}
translate B CCDlgDefaultDB {Base default:}
translate B CCDlgInbox {Caixa de Entrada (caminho):}
translate B CCDlgOutbox {Caixa de Saida (caminho):}
translate B CCDlgXfcc {Configuraao do Xfcc:}
translate B CCDlgExternalProtocol {Tratamento de protocolo externo (ex. Xfcc)}
translate B CCDlgFetchTool {Ferramenta de busca:}
translate B CCDlgSendTool {Ferramenta de envio:}
translate B CCDlgEmailCommunication {Comunicao por eMail}
translate B CCDlgMailPrg {Programa de Mail:}
translate B CCDlgBCCAddr {Endereo Cpia Oculta:}
translate B CCDlgMailerMode {Modo:}
translate B CCDlgThunderbirdEg {ex. Thunderbird, Mozilla Mail, Icedove...}
translate B CCDlgMailUrlEg {ex. Evolution}
translate B CCDlgClawsEg {ex. Sylpheed Claws}
translate B CCDlgmailxEg {ex. mailx, mutt, nail...}
translate B CCDlgAttachementPar {Parametro de anexos:}
translate B CCDlgInternalXfcc {Usar suporte internal Xfcc}
translate B CCDlgConfirmXfcc {Confirmar movimentos}
translate B CCDlgSubjectPar {Parametro de Assunto:}
translate B CCDlgDeleteBoxes {Esvaziar caixas de entrada e sada}
translate B CCDlgDeleteBoxesText {Voce quer realmente esvaziar as caixas de Entrada e Saida usadas para o Xadrez por correspondncia? Esta operao exige uma novaa sincronizao para mostrar o ultimo estado dos seus jogos}
translate B CCDlgConfirmMove {Confirmar movimento}
translate B CCDlgConfirmMoveText {Se voce confirmar, o movimento indicado a seguir e os comentrios sero enviados para o servidor:}
translate B CCDlgDBGameToLong {Linha principal inconsistente}
translate B CCDlgDBGameToLongError {A linha principal na sua base  maior do que o jogo que est na caixa de entrada. Se a caixa de entrada contem jogos correntes, isto  logo aps uma sincronizao, alguns movimentos foram adicionados erroneamente  linha principal na base.\nNeste caso, por favor, diminua a linha principal para (no maximo) movimentos\n}
translate B CCDlgStartEmail {Iniciar novo jogo por eMail}
translate B CCDlgYourName {Seu nome:}
translate B CCDlgYourMail {Seu eMail:}
translate B CCDlgOpponentName {Nome do Oponente:}
translate B CCDlgOpponentMail {eMail do Oponente:}
translate B CCDlgGameID {ID do jogo (unico):}
translate B CCDlgTitNoOutbox {Scid: Caixa de Saida}
translate B CCDlgTitNoInbox {Scid: Caixa de Entrada}
translate B CCDlgTitNoGames {Scid: Nenhum jogo por correspondncia}
translate B CCErrInboxDir {Diretorio da Caixa de Entrada:}
translate B CCErrOutboxDir {Diretorio da Caixa de Saida:}
translate B CCErrDirNotUsable {no existe ou no est acessivel!\nPor favor, verifique e corrija a configurao.}
translate B CCErrNoGames {no contem nenhum jogo!\nPor favor, localize-os primeiro.}
translate B CCDlgTitNoCCDB {Scid: Nenhuma base de correspondncia}
translate B CCErrNoCCDB {Nenhuma base do tipo 'Correspondencia' est aberta. Por favor, abra uma antes de usar as funcoes do xadrez por correspondencia.}
translate B CCFetchBtn {Busca jogos no servidor e processa a Caixa de Entrada}
translate B CCPrevBtn {Ir para o jogo anterior}
translate B CCNextBtn {Ir para o proximo jogo}
translate B CCSendBtn {Enviar movimento}
translate B CCEmptyBtn {Esvaziar caixas de entrada e saida}
translate B CCHelpBtn {Ajuda sobre icones e indicadores de estado.\nPara ajuda geral, use a tecla F1!}
translate B CCDlgServerName {Nome do Servidor:}
translate B CCDlgLoginName  {Login Name:}
translate B CCDlgPassword   {Senha:}
translate B CCDlgURL        {Xfcc-URL:}
translate B CCDlgRatingType {Tipo de Rating:}
translate B CCDlgDuplicateGame {ID de jogo no nico}
translate B CCDlgDuplicateGameError {Este jogo existe mais de uma vez em sua base. Exclua todas as duplicatas e compacte seu arquivo de jogos (Arquivo/Manuteno/Compactar Base).}
translate B CCDlgSortOption {Ordenando:}
translate B CCDlgListOnlyOwnMove {Somente jogos nos quais tenho o movimento}
translate B CCOrderClassicTxt {Local, Evento, Rodada, Resultado, Branca, Preta}
translate B CCOrderMyTimeTxt {Meu Relgio}
translate B CCOrderTimePerMoveTxt {Tempo por movimento at o prximo controle de tempo}
translate B CCOrderStartDate {Data de Inicio}
translate B CCOrderOppTimeTxt {Relogio do Oponente}

# ====== TODO To be translated ======
translate B CCDlgConfigRelay {Observar jogos}
# ====== TODO To be translated ======
translate B CCDlgConfigRelayHelp {Consulta a pagina de jogos em http://www.iccf-webchess.com e mostra o jogo a ser observado.  Se voce enxergar o tabuleiro, copie a URL do seu navegador para a lista abaixo. Apenas uma URL por linha!\nExemplo: http://www.iccf-webchess.com/MakeAMove.aspx?id=266452}

translate B ExtHWConfigConnection {Configurar hardware externo}
translate B ExtHWPort {Porta}
translate B ExtHWEngineCmd {Comando do Engine}
translate B ExtHWEngineParam {Parametro do Engine}
translate B ExtHWShowButton {Mostrar boto}
translate B ExtHWHardware {Hardware}
translate B ExtHWNovag {Novag Citrine}
translate B ExtHWInputEngine {Entrar com o Engine}
translate B ExtHWNoBoard {Nenhum tabuleiro}
translate B NovagReferee {Arbitro}
translate B IEConsole {Entrar na console do Engine}
translate B IESending {Movimentos enviados para}
translate B IESynchronise {Sincronizar}
translate B IERotate  {Girar}
translate B IEUnableToStart {No  possivel iniciar Engine:}
translate B DoneWithPosition {Posio definida}
translate B Board {Tabuleiro}
translate B showGameInfo {Mostrar informaes do jogo}
translate B autoResizeBoard {Tamanho automtico do tabuleiro}
translate B DockTop {Mover para cima}
translate B DockBottom {Mover para o final}
translate B DockLeft {Mover para a esquerda}
translate B DockRight {Mover para a direita}
translate B Undock {Desacoplar}
translate B ChangeIcon {Alterar icone...}
}

# end of portbr.tcl








### russian.tcl:
#  Russian language support for Scid.
#  Contributed by Alex Sedykh.
#  Untranslated messages are marked with a "***" comment.
#  Untranslated help page sections are in <NEW>...</NEW> tags.

addLanguage R Russian 1 iso8859-5

proc setLanguage_R {} {

# File menu:
menuText R File "" 0
menuText R FileNew "..." 0 {    Scid}
menuText R FileOpen "..." 0 {   Scid}
menuText R FileClose "" 0 {    Scid}
menuText R FileFinder "" 0 {   }
menuText R FileBookmarks "" 2 {  (: Ctrl+B)}
menuText R FileBookmarksAdd " " 0 \
  {       }
menuText R FileBookmarksFile " " 0 \
  {      }
menuText R FileBookmarksEdit " ..." 0 \
  {  }
menuText R FileBookmarksList "    " 0 \
  {  ,   ,   }
menuText R FileBookmarksSub "   " 1 \
  {    ,    }
menuText R FileMaint "" 2 {    Scid}
menuText R FileMaintWin " " 0 \
  {/     Scid}
menuText R FileMaintCompact "  ..." 0 \
  {   ,      }
menuText R FileMaintClass "ECO- ..." 0 \
  {  ECO   }
menuText R FileMaintSort "  ..." 2 \
  {     }
menuText R FileMaintDelete " -..." 0 \
  { -     }
menuText R FileMaintTwin "  " 14 \
  {/   }
menuText R FileMaintName " " 0 {    }
menuText R FileMaintNameEditor " " 0 \
  {/   }
menuText R FileMaintNamePlayer "  ..." 9 \
  {      }
menuText R FileMaintNameEvent "  ..." 18 \
  {      }
menuText R FileMaintNameSite "  ..." 18 \
  {      }
menuText R FileMaintNameRound "  ..." 20 \
  {      }
menuText R FileReadOnly "  ..." 0 \
  {       ,  }
menuText R FileSwitch "  " 6 \
  {     }
menuText R FileExit "" 0 {  Scid}
# ====== TODO To be translated ======
menuText R FileMaintFixBase "Fix corrupted base" 0 {Try to fix a corrupted base}

# Edit menu:
menuText R Edit "" 0
menuText R EditAdd " " 0 {     }
menuText R EditDelete " " 0 {    }
menuText R EditFirst "  " 0 \
  {      }
menuText R EditMain "   " 0 \
  {    }
menuText R EditTrial " " 0 \
  {/  ,     }
menuText R EditStrip "" 1 {     }
# ====== TODO To be translated ======
menuText R EditUndo "Undo" 0 {Undo last game change}
menuText R EditStripComments "" 0 \
  {       }
menuText R EditStripVars "" 0 {     }
menuText R EditStripBegin "Moves from the beginning" 1 \
  {Strip moves from the beginning of the game}
menuText R EditStripEnd "Moves to the end" 0 \
  {Strip moves to the end of the game}
menuText R EditReset " " 0 \
  {   }
menuText R EditCopy "     " 1 \
  {     }
menuText R EditPaste "     " 0 \
  {      }
# ====== TODO To be translated ======
menuText R EditPastePGN "Paste Clipboard text as PGN game..." 18 \
  {Interpret the clipboard text as a game in PGN notation and paste it here}
menuText R EditSetup " ..." 2 \
  {     }
menuText R EditCopyBoard " " 4 \
  {     FEN    ()}
menuText R EditPasteBoard "  " 3 \
  {       ()}

# Game menu:
menuText R Game "" 0
menuText R GameNew " " 0 \
  {    ,   }
menuText R GameFirst "  " 0 {   }
menuText R GamePrev "  " 1 {   }
menuText R GameReload "  " 1 \
  {  ,    }
menuText R GameNext "  " 2 {   }
menuText R GameLast "  " 3 {   }
menuText R GameRandom "  " 4 {   }
menuText R GameNumber "  ..." 6 \
  { ,   }
menuText R GameReplace ":  ..." 0 \
  {  ,   }
menuText R GameAdd ":   ..." 2 \
  {  ,     }
menuText R GameDeepest " " 0 \
  {    ,    ECO}
menuText R GameGotoMove "   ..." 5 \
  {     }
menuText R GameNovelty " ..." 2 \
  {     ,    }

# Search Menu:
menuText R Search "" 0
menuText R SearchReset " " 0 { ,    }
menuText R SearchNegate " " 0 { ,     }
menuText R SearchCurrent " ..." 0 {  }
menuText R SearchHeader "..." 0 {   (, ,  ..)}
menuText R SearchMaterial "/..." 0 {     }
menuText R SearchUsing "  ..." 0 {      }

# Windows menu:
menuText R Windows "" 0
menuText R WindowsComment " " 0 {/  }
menuText R WindowsGList " " 0 {/   }
menuText R WindowsPGN " PGN" 0 \
  {/  PGN ( )}
menuText R WindowsPList " " 2 {/   }
menuText R WindowsTmt " " 0 {/   }
menuText R WindowsSwitcher "  " 1 \
  {/    }
menuText R WindowsMaint " " 1 \
  {/  }
menuText R WindowsECO " ECO" 4 {/   ECO}
menuText R WindowsRepertoire " " 2 \
  {/    }
menuText R WindowsStats " " 2 \
  {/   }
menuText R WindowsTree " " 10 {/  }
menuText R WindowsTB "  " 10 \
  {/   }
# ====== TODO To be translated ======
menuText R WindowsBook "Book Window" 0 {Open/close the Book window}
# ====== TODO To be translated ======
menuText R WindowsCorrChess "Correspondence Window" 0 {Open/close the Correspondence window}

# Tools menu:
menuText R Tools "" 0
menuText R ToolsAnalysis " ..." 0 \
  {/   }
menuText R ToolsAnalysis2 "  2..." 22 \
  {/    }
menuText R ToolsCross " " 0 {     }
menuText R ToolsEmail " " 0 \
  {/    }
menuText R ToolsFilterGraph " " 0 \
  {/   }
# ====== TODO To be translated ======
menuText R ToolsAbsFilterGraph "Abs. Filter Graph" 7 {Open/close the filter graph window for absolute values}
menuText R ToolsOpReport " " 0 \
  {     }
# ====== TODO To be translated ======
menuText R ToolsOpenBaseAsTree "Open base as tree" 0   {Open a base and use it in Tree window}
# ====== TODO To be translated ======
menuText R ToolsOpenRecentBaseAsTree "Open recent base as tree" 0   {Open a recent base and use it in Tree window}
menuText R ToolsTracker " "  4 {   }
# ====== TODO To be translated ======
menuText R ToolsTraining "Training"  0 {Training tools (tactics, openings,...) }
# ====== TODO To be translated ======
menuText R ToolsTacticalGame "Tactical game"  0 {Play a game with tactics}
# ====== TODO To be translated ======
menuText R ToolsSeriousGame "Serious game"  0 {Play a serious game}
# ====== TODO To be translated ======
menuText R ToolsTrainOpenings "Openings"  0 {Train with a repertoire}
# ====== TODO To be translated ======
menuText R ToolsTrainReviewGame "Review game"  0 {Guess moves played in a game}
# ====== TODO To be translated ======
menuText R ToolsTrainTactics "Tactics"  0 {Solve tactics}
# ====== TODO To be translated ======
menuText R ToolsTrainCalvar "Calculation of variations"  0 {Calculation of variations training}
# ====== TODO To be translated ======
menuText R ToolsTrainFindBestMove "Find best move"  0 {Find best move}
# ====== TODO To be translated ======
menuText R ToolsTrainFics "Play on internet"  0 {Play on freechess.org}
# ====== TODO To be translated ======
menuText R ToolsBookTuning "Book tuning" 0 {Book tuning}
# ====== TODO To be translated ======
menuText R ToolsConnectHardware "Connect Hardware" 0 {Connect external hardware}
# ====== TODO To be translated ======
menuText R ToolsConnectHardwareConfigure "Configure..." 0 {Configure external hardware and connection}
# ====== TODO To be translated ======
menuText R ToolsConnectHardwareNovagCitrineConnect "Connect Novag Citrine" 0 {Connect Novag Citrine}
# ====== TODO To be translated ======
menuText R ToolsConnectHardwareInputEngineConnect "Connect Input Engine" 0 {Connect Input Engine (e.g. DGT)}
menuText R ToolsPInfo "  "  1 \
  {/    }
menuText R ToolsPlayerReport "Player Report..." 3 \
  {Generate a player report}
menuText R ToolsRating " " 1 \
  {      }
menuText R ToolsScore " " 2 {   }
menuText R ToolsExpCurrent "  " 0 \
  {     }
menuText R ToolsExpCurrentPGN "    PGN..." 0 \
  {     PGN}
menuText R ToolsExpCurrentHTML "    HTML..." 1 \
  {     HTML}
# ====== TODO To be translated ======
menuText R ToolsExpCurrentHTMLJS "Export Game to HTML and JavaScript File..." 15 {Write current game to a HTML and JavaScript file}  
menuText R ToolsExpCurrentLaTeX "    LaTeX..." 2 \
  {     LaTeX}
menuText R ToolsExpFilter "   " 11 \
  {      }
menuText R ToolsExpFilterPGN "     PGN..." 1 \
  {      PGN}
menuText R ToolsExpFilterHTML "     HTML..." 2 \
  {      HTML}
# ====== TODO To be translated ======
menuText R ToolsExpFilterHTMLJS "Export Filter to HTML and JavaScript File..." 17 {Write all filtered games to a HTML and JavaScript file}  
menuText R ToolsExpFilterLaTeX "     LaTeX..." 3 \
  {      LaTeX}
menuText R ToolsImportOne "   PGN..." 0 \
  {     PGN}
menuText R ToolsImportFile "   PGN..." 9 \
  {    PGN}
# ====== TODO To be translated ======
menuText R ToolsStartEngine1 "Start engine 1" 0  {Start engine 1}
# ====== TODO To be translated ======
menuText R ToolsStartEngine2 "Start engine 2" 0  {Start engine 2}
# ====== TODO To be translated ======
menuText R ToolsCaptureBoard "Capture Current Board..." 0  {Save the current board as an image.}
# ====== TODO To be translated ======
menuText R Play "Play" 0
# ====== TODO To be translated ======
menuText R CorrespondenceChess "Correspondence Chess" 0 {Functions for eMail and Xfcc based correspondence chess}
# ====== TODO To be translated ======
menuText R CCConfigure "Configure..." 0 {Configure external tools and general setup}
# ====== TODO To be translated ======
menuText R CCConfigRelay "Configure observations..." 10 {Configure games to be observed}
# ====== TODO To be translated ======
menuText R CCOpenDB "Open Database..." 0 {Open the default Correspondence database}
# ====== TODO To be translated ======
menuText R CCRetrieve "Retrieve Games" 0 {Retrieve games via external (Xfcc-)helper}
# ====== TODO To be translated ======
menuText R CCInbox "Process Inobx" 0 {Process all files in scids Inbox}
# ====== TODO To be translated ======
menuText R CCSend "Send Move" 0 {Send your move via eMail or external (Xfcc-)helper}
# ====== TODO To be translated ======
menuText R CCResign "Resign" 0 {Resign (not via eMail)}
# ====== TODO To be translated ======
menuText R CCClaimDraw "Claim Draw" 0 {Send move and claim a draw (not via eMail)}
# ====== TODO To be translated ======
menuText R CCOfferDraw "Offer Draw" 0 {Send move and offer a draw (not via eMail)}
# ====== TODO To be translated ======
menuText R CCAcceptDraw "Accept Draw" 0 {Accept a draw offer (not via eMail)}
# ====== TODO To be translated ======
menuText R CCNewMailGame "New eMail Game..." 0 {Start a new eMail game}
# ====== TODO To be translated ======
menuText R CCMailMove "Mail Move..." 0 {Send the move via eMail to the opponent}
# ====== TODO To be translated ======
menuText R CCGamePage "Game Page..." 0 {Call up the game via the web browser}
# ====== TODO To be translated ======
menuText R CCEditCopy "Copy Gamelist to Clipbase" 0 {Copy the games as CSV list to clipbase}

# Options menu:
menuText R Options "" 0
menuText R OptionsBoard "Chessboard" 0 {Chess board appearance options}
menuText R OptionsBoardSize " " 0 {  }
menuText R OptionsBoardPieces " " 0 {  }
menuText R OptionsBoardColors "..." 0 {  }
# ====== TODO To be translated ======
menuText R OptionsBoardGraphics "Squares..." 0 {Select textures for squares}
# ====== TODO To be translated ======
translate R OptionsBGW {Select texture for squares}
# ====== TODO To be translated ======
translate R OptionsBoardGraphicsText {Select graphic files for white and black squares:}
menuText R OptionsBoardNames "My Player Names..." 0 {Edit my player names}
menuText R OptionsExport "" 0 {  }
menuText R OptionsFonts "" 0 { }
menuText R OptionsFontsRegular "" 0 {  }
menuText R OptionsFontsMenu "" 0 {  }
menuText R OptionsFontsSmall "" 1 {  }
# ====== TODO To be translated ======
menuText R OptionsFontsTiny "Tiny" 0 {Change the tiny font}
menuText R OptionsFontsFixed "" 0 {  }
menuText R OptionsGInfo "  " 0 {   }
menuText R OptionsLanguage "" 0 {  }
# ====== TODO To be translated ======
menuText R OptionsMovesTranslatePieces "Translate pieces" 0 {Translate first letter of pieces}
# ====== TODO To be translated ======
menuText R OptionsMovesHighlightLastMove "Highlight last move" 0 {Highlight last move}
# ====== TODO To be translated ======
menuText R OptionsMovesHighlightLastMoveDisplay "Show" 0 {Display last move Highlight}
# ====== TODO To be translated ======
menuText R OptionsMovesHighlightLastMoveWidth "Width" 0 {Thickness of line}
# ====== TODO To be translated ======
menuText R OptionsMovesHighlightLastMoveColor "Color" 0 {Color of line}
menuText R OptionsMoves "" 0 {  }
menuText R OptionsMovesAsk "   " 0 \
  {    }
menuText R OptionsMovesAnimate " " 1 \
  {  ,    }
menuText R OptionsMovesDelay "  ..." 0 \
  {     }
menuText R OptionsMovesCoord " " 1 \
  {      ("g1f3")}
menuText R OptionsMovesSuggest "  " 0 \
  {/   }
# ====== TODO To be translated ======
menuText R OptionsShowVarPopup "Show variations window" 0 {Turn on/off the display of a variations window}  
# ====== TODO To be translated ======
menuText R OptionsMovesSpace "Add spaces after move number" 0 {Add spaces after move number}  
menuText R OptionsMovesKey " " 0 \
  {/   }
# ====== TODO To be translated ======
menuText R OptionsMovesShowVarArrows "Show Arrows for Variations" 0 {Turn on/off arrows showing moves in variations}
menuText R OptionsNumbers " " 0 {  }
menuText R OptionsStartup "" 0 { ,   }
# ====== TODO To be translated ======
menuText R OptionsTheme "Theme" 0 {Change look of interface}
menuText R OptionsWindows "" 0 { }
menuText R OptionsWindowsIconify "-" 0 \
  {  ,    }
menuText R OptionsWindowsRaise "-" 1 \
  {   (,  )  ,   }
# ====== TODO To be translated ======
menuText R OptionsSounds "Sounds..." 2 {Configure move announcement sounds}
# ====== TODO To be translated ======
menuText R OptionsWindowsDock "Dock windows" 0 {Dock windows}
# ====== TODO To be translated ======
menuText R OptionsWindowsSaveLayout "Save layout" 0 {Save layout}
# ====== TODO To be translated ======
menuText R OptionsWindowsRestoreLayout "Restore layout" 0 {Restore layout}
# ====== TODO To be translated ======
menuText R OptionsWindowsShowGameInfo "Show game info" 0 {Show game info}
# ====== TODO To be translated ======
menuText R OptionsWindowsAutoLoadLayout "Auto load first layout" 0 {Auto load first layout at startup}
menuText R OptionsToolbar " " 0 {    }
menuText R OptionsECO "  ECO..." 2 {    ECO}
menuText R OptionsSpell "   ..." 4 \
  { Scid   }
menuText R OptionsTable " ..." 15 \
  {  ;       }
menuText R OptionsRecent "  ..." 2 \
  {       }
# ====== TODO To be translated ======
menuText R OptionsBooksDir "Books directory..." 0 {Sets the opening books directory}
# ====== TODO To be translated ======
menuText R OptionsTacticsBasesDir "Bases directory..." 0 {Sets the tactics (training) bases directory}
menuText R OptionsSave " " 0 \
  "     $::optionsFile"
menuText R OptionsAutoSave "   " 0 \
  {      }

# Help menu:
menuText R Help "" 0
menuText R HelpContents "Contents" 0 {Show the help contents page}
menuText R HelpIndex "" 0 {   }
menuText R HelpGuide " " 0 {    }
menuText R HelpHints "" 0 {  }
menuText R HelpContact " " 0 {  }
menuText R HelpTip " " 2 {  }
menuText R HelpStartup " " 1 {  }
menuText R HelpAbout " Scid" 0 {  Scid}

# Game info box popup menu:
menuText R GInfoHideNext "  " 0
menuText R GInfoMaterial "  " 0
menuText R GInfoFEN " FEN" 1
menuText R GInfoMarks "    " 3
menuText R GInfoWrap "  " 0
menuText R GInfoFullComment "  " 7
menuText R GInfoPhotos " " 9
menuText R GInfoTBNothing " : " 0
menuText R GInfoTBResult " :  " 5
menuText R GInfoTBAll " :    " 7
menuText R GInfoDelete "()  " 1
menuText R GInfoMark "( )  " 2
# ====== TODO To be translated ======
menuText R GInfoInformant "Configure informant values" 0

# Main window buttons:
helpMsg R .main.fbutton.button.start {     (: Home)}
helpMsg R .main.fbutton.button.end {     (: End)}
helpMsg R .main.fbutton.button.back {    (: LeftArrow)}
helpMsg R .main.fbutton.button.forward {   (: RightArrow)}
helpMsg R .main.fbutton.button.intoVar {    (: v)}
helpMsg R .main.fbutton.button.exitVar {    (: z)}
helpMsg R .main.fbutton.button.flip {  (: .)}
helpMsg R .main.fbutton.button.coords {/   (: 0)}
helpMsg R .main.fbutton.button.stm {/   }
helpMsg R .main.fbutton.button.autoplay {    (: Ctrl+Z)}

# General buttons:
translate R Back {}
translate R Browse {Browse}
translate R Cancel {}
# ====== TODO To be translated ======
translate R Continue {Continue}
translate R Clear {}
translate R Close {}
translate R Contents {Contents}
translate R Defaults { }
translate R Delete {}
translate R Graph {}
translate R Help {}
translate R Import {}
translate R Index {}
translate R LoadGame { }
translate R BrowseGame { }
translate R MergeGame { }
# ====== TODO To be translated ======
translate R MergeGames {Merge Games}
translate R Preview { }
translate R Revert {}
translate R Save {}
translate R Search {}
translate R Stop {}
translate R Store {}
translate R Update {}
translate R ChangeOrient {  }
# ====== TODO To be translated ======
translate R ShowIcons {Show Icons}
translate R None {}
translate R First {}
translate R Current {}
translate R Last {}

# General messages:
translate R game {}
translate R games {}
translate R move {}
translate R moves {}
translate R all {}
translate R Yes {}
translate R No {}
translate R Both {}
translate R King {}
translate R Queen {}
translate R Rook {}
translate R Bishop {}
translate R Knight {}
translate R Pawn {}
translate R White {}
translate R Black {}
translate R Player {}
translate R Rating {}
translate R RatingDiff {  ( - )}
translate R AverageRating { }
translate R Event {}
translate R Site {}
translate R Country {}
translate R IgnoreColors { }
translate R Date {}
translate R EventDate { }
translate R Decade {}
translate R Year {}
translate R Month {}
translate R Months {           }
translate R Days {      }
translate R YearToToday { }
translate R Result {}
translate R Round {}
translate R Length {}
translate R ECOCode { ECO}
translate R ECO {ECO}
translate R Deleted {}
translate R SearchResults { }
translate R OpeningTheDatabase {  }
translate R Database { }
translate R Filter {}
translate R noGames { }
translate R allGames { }
translate R empty {}
translate R clipbase {}
translate R score {}
translate R StartPos { }
translate R Total {}
# ====== TODO To be translated ======
translate R readonly {read-only}

# Standard error messages:
translate R ErrNotOpen {    .}
translate R ErrReadOnly {     ;     .}
translate R ErrSearchInterrupted {  ;   .}

# Game information:
translate R twin {}
translate R deleted {}
translate R comment {}
translate R hidden {}
translate R LastMove { }
translate R NextMove {}
translate R GameStart { }
translate R LineStart { }
translate R GameEnd { }
translate R LineEnd { }

# Player information:
translate R PInfoAll { <b></b> }
translate R PInfoFilter { <b></b> }
translate R PInfoAgainst { }
translate R PInfoMostWhite {    }
translate R PInfoMostBlack {    }
translate R PInfoRating { }
translate R PInfoBio {}
translate R PInfoEditRatings {Edit Ratings}

# Tablebase information:
translate R Draw {}
translate R stalemate {}
translate R withAllMoves {  }
translate R withAllButOneMove {    }
translate R with {}
translate R only {}
translate R lose {}
translate R loses {}
translate R allOthersLose {  }
translate R matesIn { }
translate R hasCheckmated {}
translate R longest { }
translate R WinningMoves { }
translate R DrawingMoves { }
translate R LosingMoves { }
translate R UnknownMoves {,    }

# Tip of the day:
translate R Tip {}
translate R TipAtStartup {  }

# Tree window menus:
menuText R TreeFile "" 0
# ====== TODO To be translated ======
menuText R TreeFileFillWithBase "Fill Cache with base" 0 {Fill the cache file with all games in current base}
# ====== TODO To be translated ======
menuText R TreeFileFillWithGame "Fill Cache with game" 0 {Fill the cache file with current game in current base}
# ====== TODO To be translated ======
menuText R TreeFileSetCacheSize "Cache size" 0 {Set the cache size}
# ====== TODO To be translated ======
menuText R TreeFileCacheInfo "Cache info" 0 {Get info on cache usage}
menuText R TreeFileSave "  " 0 {    (.stc)}
menuText R TreeFileFill "  " 0 \
  {      }
menuText R TreeFileBest "  " 1 {    }
menuText R TreeFileGraph " " 0 {     }
menuText R TreeFileCopy "    " 1 \
  {    }
menuText R TreeFileClose "  " 4 {  }
# ====== TODO To be translated ======
menuText R TreeMask "Mask" 0
# ====== TODO To be translated ======
menuText R TreeMaskNew "New" 0 {New mask}
# ====== TODO To be translated ======
menuText R TreeMaskOpen "Open" 0 {Open mask}
# ====== TODO To be translated ======
menuText R TreeMaskOpenRecent "Open recent" 0 {Open recent mask}
# ====== TODO To be translated ======
menuText R TreeMaskSave "Save" 0 {Save mask}
# ====== TODO To be translated ======
menuText R TreeMaskClose "Close" 0 {Close mask}
# ====== TODO To be translated ======
menuText R TreeMaskFillWithGame "Fill with game" 0 {Fill mask with game}
# ====== TODO To be translated ======
menuText R TreeMaskFillWithBase "Fill with base" 0 {Fill mask with all games in base}
# ====== TODO To be translated ======
menuText R TreeMaskInfo "Info" 0 {Show statistics for current mask}
# ====== TODO To be translated ======
menuText R TreeMaskDisplay "Display mask map" 0 {Show mask data in a tree form}
# ====== TODO To be translated ======
menuText R TreeMaskSearch "Search" 0 {Search in current mask}
menuText R TreeSort "" 0
menuText R TreeSortAlpha "" 0
menuText R TreeSortECO "  ECO" 3
menuText R TreeSortFreq " " 3
menuText R TreeSortScore " " 3
menuText R TreeOpt "" 0
# ====== TODO To be translated ======
menuText R TreeOptSlowmode "slow mode" 0 {Slow mode for updates (high accuracy)}
# ====== TODO To be translated ======
menuText R TreeOptFastmode "Fast mode" 0 {Fast mode for updates (no move transposition)}
# ====== TODO To be translated ======
menuText R TreeOptFastAndSlowmode "Fast and slow mode" 0 {Fast mode then slow mode for updates}
# ====== TODO To be translated ======
menuText R TreeOptStartStop "Auto refreshing" 0 {Toggles automatic refreshing of the tree window}
menuText R TreeOptLock "" 0 {()    }
menuText R TreeOptTraining "" 0 {/  }
menuText R TreeOptAutosave "  " 0 \
  {  ,    }
menuText R TreeHelp "" 0
menuText R TreeHelpTree "  " 0
menuText R TreeHelpIndex " " 0
translate R SaveCache { }
translate R Training {}
translate R LockTree {}
translate R TreeLocked {}
translate R TreeBest {}
translate R TreeBestGames {  }
# Note: the next message is the tree window title row. After editing it,
# check the tree window to make sure it lines up with the actual columns.
translate R TreeTitleRow \
  {        ECO               Elo    %}
translate R TreeTotal {TOTAL}
# ====== TODO To be translated ======
translate R DoYouWantToSaveFirst {Do you want to save first}
# ====== TODO To be translated ======
translate R AddToMask {Add to Mask}
# ====== TODO To be translated ======
translate R RemoveFromMask {Remove from Mask}
# ====== TODO To be translated ======
translate R AddThisMoveToMask {Add this move to Mask}
# ====== TODO To be translated ======
translate R SearchMask {Search in Mask}
# ====== TODO To be translated ======
translate R DisplayMask {Display Mask}
# ====== TODO To be translated ======
translate R Nag {Nag code}
# ====== TODO To be translated ======
translate R Marker {Marker}
# ====== TODO To be translated ======
translate R Include {Include}
# ====== TODO To be translated ======
translate R Exclude {Exclude}
# ====== TODO To be translated ======
translate R MainLine {Main line}
# ====== TODO To be translated ======
translate R Bookmark {Bookmark}
# ====== TODO To be translated ======
translate R NewLine {New line}
# ====== TODO To be translated ======
translate R ToBeVerified {To be verified}
# ====== TODO To be translated ======
translate R ToTrain {To train}
# ====== TODO To be translated ======
translate R Dubious {Dubious}
# ====== TODO To be translated ======
translate R ToRemove {To remove}
# ====== TODO To be translated ======
translate R NoMarker {No marker}
# ====== TODO To be translated ======
translate R ColorMarker {Color}
# ====== TODO To be translated ======
translate R WhiteMark {White}
# ====== TODO To be translated ======
translate R GreenMark {Green}
# ====== TODO To be translated ======
translate R YellowMark {Yellow}
# ====== TODO To be translated ======
translate R BlueMark {Blue}
# ====== TODO To be translated ======
translate R RedMark {Red}
# ====== TODO To be translated ======
translate R CommentMove {Comment move}
# ====== TODO To be translated ======
translate R CommentPosition {Comment position}
# ====== TODO To be translated ======
translate R AddMoveToMaskFirst {Add move to mask first}
# ====== TODO To be translated ======
translate R OpenAMaskFileFirst {Open a mask file first}
# ====== TODO To be translated ======
translate R Positions {Positions}
# ====== TODO To be translated ======
translate R Moves {Moves}

# Finder window:
menuText R FinderFile "" 0
menuText R FinderFileSubdirs "  " 0
menuText R FinderFileClose "  " 0
menuText R FinderSort "" 0
menuText R FinderSortType "" 0
menuText R FinderSortSize "" 0
menuText R FinderSortMod "" 0
menuText R FinderSortName "" 0
menuText R FinderSortPath "" 0
menuText R FinderTypes "" 0
menuText R FinderTypesScid "  Scid" 0
menuText R FinderTypesOld "    Scid" 0
menuText R FinderTypesPGN " PGN" 0
menuText R FinderTypesEPD " EPD" 1
menuText R FinderTypesRep " " 6
menuText R FinderHelp "" 0
menuText R FinderHelpFinder "   " 0
menuText R FinderHelpIndex " " 0
translate R FileFinder { }
translate R FinderDir {}
translate R FinderDirs {}
translate R FinderFiles {}
translate R FinderUpDir {}
# ====== TODO To be translated ======
translate R FinderCtxOpen {Open}
# ====== TODO To be translated ======
translate R FinderCtxBackup {Backup}
# ====== TODO To be translated ======
translate R FinderCtxCopy {Copy}
# ====== TODO To be translated ======
translate R FinderCtxMove {Move}
# ====== TODO To be translated ======
translate R FinderCtxDelete {Delete}

# Player finder:
menuText R PListFile "" 0
menuText R PListFileUpdate "" 0
menuText R PListFileClose "  " 0
menuText R PListSort "" 0
menuText R PListSortName "" 0
menuText R PListSortElo "Elo" 0
menuText R PListSortGames "" 0
menuText R PListSortOldest "" 1
menuText R PListSortNewest "" 0

# Tournament finder:
menuText R TmtFile "" 0
menuText R TmtFileUpdate "" 0
menuText R TmtFileClose "  " 0
menuText R TmtSort "" 0
menuText R TmtSortDate "" 0
menuText R TmtSortPlayers "" 0
menuText R TmtSortGames "" 0
menuText R TmtSortElo "Elo" 0
menuText R TmtSortSite "" 0
menuText R TmtSortEvent "" 0
menuText R TmtSortWinner "" 2
translate R TmtLimit " "
translate R TmtMeanElo "  Elo"
translate R TmtNone "    ."

# Graph windows:
menuText R GraphFile "" 0
menuText R GraphFileColor "   PostScript..." 14
menuText R GraphFileGrey "  - PostScript..." 14
menuText R GraphFileClose " " 6
menuText R GraphOptions "" 0
menuText R GraphOptionsWhite "" 0
menuText R GraphOptionsBlack "" 0
menuText R GraphOptionsBoth "" 0
menuText R GraphOptionsPInfo " -   " 0
translate R GraphFilterTitle " :   1000 "
# ====== TODO To be translated ======
translate R GraphAbsFilterTitle "Filter Graph: frequency of the games"
# ====== TODO To be translated ======
translate R ConfigureFilter {Configure X-Axes for Year, Rating and Moves}
# ====== TODO To be translated ======
translate R FilterEstimate "Estimate"
# ====== TODO To be translated ======
translate R TitleFilterGraph "Scid: Filter Graph"

# Analysis window:
translate R AddVariation { }
# ====== TODO To be translated ======
translate R AddAllVariations {Add All Variations}
translate R AddMove { }
translate R Annotate {}
# ====== TODO To be translated ======
translate R ShowAnalysisBoard {Show analysis board}
# ====== TODO To be translated ======
translate R ShowInfo {Show engine info}
# ====== TODO To be translated ======
translate R FinishGame {Finish game}
# ====== TODO To be translated ======
translate R StopEngine {Stop engine}
# ====== TODO To be translated ======
translate R StartEngine {Start engine}
# ====== TODO To be translated ======
translate R LockEngine {Lock engine to current position}
translate R AnalysisCommand { }
translate R PreviousChoices { }
translate R AnnotateTime {     }
translate R AnnotateWhich { }
translate R AnnotateAll {   }
# ====== TODO To be translated ======
translate R AnnotateAllMoves {Annotate all moves}
translate R AnnotateWhite {   }
translate R AnnotateBlack {   }
# ====== TODO To be translated ======
translate R AnnotateBlundersOnly {When game move is an obvious blunder}
# ====== TODO To be translated ======
translate R AnnotateBlundersOnlyScoreChange {Analysis reports blunder, with score change from/to: }
# ====== TODO To be translated ======
translate R BlundersThreshold {Threshold}
# TODO: Translate
translate R ScoreAllMoves {Score all moves}
translate R LowPriority {  CPU}
# ====== TODO To be translated ======
translate R ClickHereToSeeMoves {Click here to see moves}
# ====== TODO To be translated ======
translate R ConfigureInformant {Configure Informant}
# ====== TODO To be translated ======
translate R Informant!? {Interesting move}
# ====== TODO To be translated ======
translate R Informant? {Poor move}
# ====== TODO To be translated ======
translate R Informant?? {Blunder}
# ====== TODO To be translated ======
translate R Informant?! {Dubious move}
# ====== TODO To be translated ======
translate R Informant+= {White has a slight advantage}
# ====== TODO To be translated ======
translate R Informant+/- {White has a moderate advantage}
# ====== TODO To be translated ======
translate R Informant+- {White has a decisive advantage}
# ====== TODO To be translated ======
translate R Informant++- {The game is considered won}
# ====== TODO To be translated ======
translate R Book {Book}
# ====== TODO To be translated ======
translate R OtherBookMoves {Opponent's book}
# ====== TODO To be translated ======
translate R OtherBookMovesTooltip {Moves to which the opponent has a reply}

# Analysis Engine open dialog:
translate R EngineList {  }
translate R EngineName {}
translate R EngineCmd {}
translate R EngineArgs {}
translate R EngineDir {}
translate R EngineElo {Elo}
translate R EngineTime {}
translate R EngineNew {}
translate R EngineEdit {}
translate R EngineRequired {,   ,  ,   }

# Stats window menus:
menuText R StatsFile "" 0
menuText R StatsFilePrint "  ..." 0
menuText R StatsFileClose " " 0
menuText R StatsOpt "" 0

# PGN window menus:
menuText R PgnFile "" 0
menuText R PgnFileCopy "Copy Game to Clipboard" 0
menuText R PgnFilePrint "  ..." 0
menuText R PgnFileClose "  PGN" 0
menuText R PgnOpt "" 0
menuText R PgnOptColor " " 0
menuText R PgnOptShort " () " 0
menuText R PgnOptSymbols " " 0
menuText R PgnOptIndentC "  " 2
menuText R PgnOptIndentV "  " 0
menuText R PgnOptColumn "  (   )" 4
menuText R PgnOptSpace "   " 0
menuText R PgnOptStripMarks "   /" 0
menuText R PgnOptBoldMainLine "Use Bold Text for Main Line Moves" 4
menuText R PgnColor "" 0
menuText R PgnColorHeader "..." 0
menuText R PgnColorAnno "..." 0
menuText R PgnColorComments "..." 0
menuText R PgnColorVars "..." 0
menuText R PgnColorBackground "..." 0
# ====== TODO To be translated ======
menuText R PgnColorMain "Main line..." 0
# ====== TODO To be translated ======
menuText R PgnColorCurrent "Current move background..." 1
# ====== TODO To be translated ======
menuText R PgnColorNextMove "Next move background..." 0
menuText R PgnHelp "" 0
menuText R PgnHelpPgn "  PGN" 0
menuText R PgnHelpIndex "" 0
translate R PgnWindowTitle {Game Notation - game %u}

# Crosstable window menus:
menuText R CrosstabFile "" 0
menuText R CrosstabFileText "   ..." 11
menuText R CrosstabFileHtml "  HTML ..." 11
menuText R CrosstabFileLaTeX "  LaTeX ..." 11
menuText R CrosstabFileClose "   " 0
menuText R CrosstabEdit "" 0
menuText R CrosstabEditEvent "" 0
menuText R CrosstabEditSite "" 0
menuText R CrosstabEditDate "" 0
menuText R CrosstabOpt "" 0
menuText R CrosstabOptAll "  " 0
menuText R CrosstabOptSwiss " " 0
menuText R CrosstabOptKnockout " " 0
menuText R CrosstabOptAuto "" 0
menuText R CrosstabOptAges "  " 2
menuText R CrosstabOptNats "" 2
menuText R CrosstabOptRatings "" 0
menuText R CrosstabOptTitles "" 0
menuText R CrosstabOptBreaks " -" 0
menuText R CrosstabOptDeleted "  " 1
menuText R CrosstabOptColors " (   )" 0
menuText R CrosstabOptColumnNumbers "  (    )" 2
menuText R CrosstabOptGroup " " 0
menuText R CrosstabSort "" 0
menuText R CrosstabSortName "" 0
menuText R CrosstabSortRating "" 0
menuText R CrosstabSortScore "" 0
menuText R CrosstabColor "" 0
menuText R CrosstabColorPlain " " 0
menuText R CrosstabColorHyper "" 0
menuText R CrosstabHelp "" 0
menuText R CrosstabHelpCross "   " 0
menuText R CrosstabHelpIndex " " 0
translate R SetFilter { }
translate R AddToFilter {  }
translate R Swiss { }
translate R Category {}

# Opening report window menus:
menuText R OprepFile "" 0
menuText R OprepFileText "   ..." 11
menuText R OprepFileHtml "  HTML ..." 11
menuText R OprepFileLaTeX "  LaTeX ..." 11
menuText R OprepFileOptions "..." 0
menuText R OprepFileClose "  " 0
menuText R OprepFavorites "Favorites" 1
menuText R OprepFavoritesAdd "Add Report..." 0
menuText R OprepFavoritesEdit "Edit Report Favorites..." 0
menuText R OprepFavoritesGenerate "Generate Reports..." 0
menuText R OprepHelp "" 0
menuText R OprepHelpReport "   " 0
menuText R OprepHelpIndex " " 0

# Repertoire editor:
menuText R RepFile "" 0
menuText R RepFileNew "" 0
menuText R RepFileOpen "..." 0
menuText R RepFileSave ".." 0
menuText R RepFileSaveAs " ..." 2
menuText R RepFileClose " " 0
menuText R RepEdit "" 0
menuText R RepEditGroup " " 9
menuText R RepEditInclude "  " 9
menuText R RepEditExclude "  " 9
menuText R RepView "" 0
menuText R RepViewExpand "  " 0
menuText R RepViewCollapse "  " 0
menuText R RepSearch "" 0
menuText R RepSearchAll " ..." 0
menuText R RepSearchDisplayed "  ..." 0
menuText R RepHelp "" 4
menuText R RepHelpRep "  " 0
menuText R RepHelpIndex " " 0
translate R RepSearch " "
translate R RepIncludedLines " "
translate R RepExcludedLines " "
translate R RepCloseDialog {     .

       ,   ?
}

# Header search:
translate R HeaderSearch {  }
# ====== TODO To be translated ======
translate R EndSideToMove {Side to move at end of game}
translate R GamesWithNoECO {  ECO?}
translate R GameLength { }
translate R FindGamesWith {   }
translate R StdStart { }
translate R Promotions {}
translate R Comments {}
translate R Variations {}
translate R Annotations {}
translate R DeleteFlag { }
translate R WhiteOpFlag { }
translate R BlackOpFlag { }
translate R MiddlegameFlag {}
translate R EndgameFlag {}
translate R NoveltyFlag {}
translate R PawnFlag { }
translate R TacticsFlag {}
translate R QsideFlag {   }
translate R KsideFlag {   }
translate R BrilliancyFlag {}
translate R BlunderFlag {}
translate R UserFlag {}
translate R PgnContains { PGN}
# ====== TODO To be translated ======
translate R Annotator {Annotator}
# ====== TODO To be translated ======
translate R Cmnts {Annotated games only}

# Game list window:
translate R GlistNumber {}
translate R GlistWhite {}
translate R GlistBlack {}
translate R GlistWElo {-Elo}
translate R GlistBElo {-Elo}
translate R GlistEvent {}
translate R GlistSite {}
translate R GlistRound {}
translate R GlistDate {}
translate R GlistYear {}
translate R GlistEDate { }
translate R GlistResult {}
translate R GlistLength {}
translate R GlistCountry {}
translate R GlistECO {ECO}
translate R GlistOpening {}
translate R GlistEndMaterial { }
translate R GlistDeleted {}
translate R GlistFlags {}
translate R GlistVars {}
translate R GlistComments {}
translate R GlistAnnos {}
translate R GlistStart {}
translate R GlistGameNumber { }
# ====== TODO To be translated ======
translate R GlistAverageElo {Average Elo}
# ====== TODO To be translated ======
translate R GlistRating {Rating}
translate R GlistFindText { }
translate R GlistMoveField {}
translate R GlistEditField {}
translate R GlistAddField {}
translate R GlistDeleteField {}
translate R GlistWidth {}
translate R GlistAlign {}
# ====== TODO To be translated ======
translate R GlistAlignL {Align: left}
# ====== TODO To be translated ======
translate R GlistAlignR {Align: right}
# ====== TODO To be translated ======
translate R GlistAlignC {Align: center}
translate R GlistColor {}
translate R GlistSep {}
# ====== TODO To be translated ======
translate R GlistCurrentSep {-- Current --}
# ====== TODO To be translated ======
translate R GlistNewSort {New}
# ====== TODO To be translated ======
translate R GlistAddToSort {Add}
# ====== TODO To be translated ======
translate R GsortSort {Sort...}
# ====== TODO To be translated ======
translate R GsortDate {Date}
# ====== TODO To be translated ======
translate R GsortYear {Year}
# ====== TODO To be translated ======
translate R GsortEvent {Event}
# ====== TODO To be translated ======
translate R GsortSite {Site}
# ====== TODO To be translated ======
translate R GsortRound {Round}
# ====== TODO To be translated ======
translate R GsortWhiteName {White Name}
# ====== TODO To be translated ======
translate R GsortBlackName {Black Name}
# ====== TODO To be translated ======
translate R GsortECO {ECO}
# ====== TODO To be translated ======
translate R GsortResult {Result}
# ====== TODO To be translated ======
translate R GsortMoveCount {Move Count}
# ====== TODO To be translated ======
translate R GsortAverageElo {Average Elo}
# ====== TODO To be translated ======
translate R GsortCountry {Country}
# ====== TODO To be translated ======
translate R GsortDeleted {Deleted}
# ====== TODO To be translated ======
translate R GsortEventDate {Event Date}
# ====== TODO To be translated ======
translate R GsortWhiteElo {White Elo}
# ====== TODO To be translated ======
translate R GsortBlackElo {Black Elo}
# ====== TODO To be translated ======
translate R GsortComments {Comments}
# ====== TODO To be translated ======
translate R GsortVariations {Variations}
# ====== TODO To be translated ======
translate R GsortNAGs {NAGs}
# ====== TODO To be translated ======
translate R GsortAscending {Ascending}
# ====== TODO To be translated ======
translate R GsortDescending {Descending}
# ====== TODO To be translated ======
translate R GsortAdd {Add}
# ====== TODO To be translated ======
translate R GsortStore {Store}
# ====== TODO To be translated ======
translate R GsortLoad {Load}
# ====== TODO To be translated ======
translate R GlistRemoveThisGameFromFilter  {Remove this game from Filter}
# ====== TODO To be translated ======
translate R GlistRemoveGameAndAboveFromFilter  {Remove game (and all above it) from Filter}
# ====== TODO To be translated ======
translate R GlistRemoveGameAndBelowFromFilter  {Remove game (and all below it) from Filter}
# ====== TODO To be translated ======
translate R GlistDeleteGame {(Un)Delete this game} 
# ====== TODO To be translated ======
translate R GlistDeleteAllGames {Delete all games in filter} 
# ====== TODO To be translated ======
translate R GlistUndeleteAllGames {Undelete all games in filter} 
# ====== TODO To be translated ======
translate R GlistMergeGameInBase {Merge Game in other base} 

# Maintenance window:
translate R DatabaseName {  :}
translate R TypeIcon { :}
translate R NumOfGames {:}
translate R NumDeletedGames { :}
translate R NumFilterGames {  :}
translate R YearRange { :}
translate R RatingRange { :}
translate R Description {}
translate R Flag {}
# ====== TODO To be translated ======
translate R CustomFlags {Custom flags}
translate R DeleteCurrent {  }
translate R DeleteFilter {  }
translate R DeleteAll {  }
translate R UndeleteCurrent {  }
translate R UndeleteFilter {  }
translate R UndeleteAll {  }
translate R DeleteTwins {  }
translate R MarkCurrent {  }
translate R MarkFilter {  }
translate R MarkAll {  }
translate R UnmarkCurrent {    }
translate R UnmarkFilter {    }
translate R UnmarkAll {    }
translate R Spellchecking { }
translate R Players {}
translate R Events {}
translate R Sites {}
translate R Rounds {}
translate R DatabaseOps {   }
translate R ReclassifyGames {   ECO}
translate R CompactDatabase {  }
translate R SortDatabase {  }
translate R AddEloRatings {  Elo}
translate R AutoloadGame {  }
translate R StripTags {  PGN}
translate R StripTag { }
translate R Cleaner {}
translate R CleanerHelp {
 Scid    ,      ,    .

   ECO      ,     .
}
translate R CleanerConfirm {
   ,     !

        ,    ,       .

 ,     ,   ?
}
# ====== TODO To be translated ======
translate R TwinCheckUndelete {to flip; "u" undeletes both)}
# ====== TODO To be translated ======
translate R TwinCheckprevPair {Previous pair}
# ====== TODO To be translated ======
translate R TwinChecknextPair {Next pair}
# ====== TODO To be translated ======
translate R TwinChecker {Scid: Twin game checker}
# ====== TODO To be translated ======
translate R TwinCheckTournament {Games in tournament:}
# ====== TODO To be translated ======
translate R TwinCheckNoTwin {No twin  }
# ====== TODO To be translated ======
translate R TwinCheckNoTwinfound {No twin was detected for this game.\nTo show twins using this window, you must first use the "Delete twin games..." function. }
# ====== TODO To be translated ======
translate R TwinCheckTag {Share tags...}
# ====== TODO To be translated ======
translate R TwinCheckFound1 {Scid found $result twin games}
# ====== TODO To be translated ======
translate R TwinCheckFound2 { and set their delete flags}
# ====== TODO To be translated ======
translate R TwinCheckNoDelete {There are no games in this database to delete.}
# ====== TODO To be translated ======
translate R TwinCriteria1 { Your settings for finding twin games are potentially likely to\ncause non-twin games with similar moves to be marked as twins.}
# ====== TODO To be translated ======
translate R TwinCriteria2 {It is recommended that if you select "No" for "same moves", you should select "Yes" for the colors, event, site, round, year and month settings.\nDo you want to continue and delete twins anyway? }
# ====== TODO To be translated ======
translate R TwinCriteria3 {It is recommended that you specify "Yes" for at least two of the "same site", "same round" and "same year" settings.\nDo you want to continue and delete twins anyway?}
# ====== TODO To be translated ======
translate R TwinCriteriaConfirm {Scid: Confirm twin settings}
# ====== TODO To be translated ======
translate R TwinChangeTag "Change the following game tags:\n\n"
# ====== TODO To be translated ======
translate R AllocRatingDescription "This command will use the current spellcheck file to add Elo ratings to games in this database. Wherever a player has no currrent rating but his/her rating at the time of the game is listed in the spellcheck file, that rating will be added."
# ====== TODO To be translated ======
translate R RatingOverride "Overwrite existing non-zero ratings?"
# ====== TODO To be translated ======
translate R AddRatings "Add ratings to:"
# ====== TODO To be translated ======
translate R AddedRatings {Scid added $r Elo ratings in $g games.}
# ====== TODO To be translated ======
translate R NewSubmenu "New submenu"

# Comment editor:
translate R AnnotationSymbols  { :}
translate R Comment {:}
translate R InsertMark { }
translate R InsertMarkHelp {
Insert/remove mark: Select color, type, square.
Insert/remove arrow: Right-click two squares.
}

# Nag buttons in comment editor:
translate R GoodMove {Good move}
translate R PoorMove {Poor move}
translate R ExcellentMove {Excellent move}
# ====== TODO To be translated ======
translate R Blunder {Blunder}
translate R InterestingMove {Interesting move}
translate R DubiousMove {Dubious move}
translate R WhiteDecisiveAdvantage {White has a decisive advantage}
translate R BlackDecisiveAdvantage {White has a decisive advantage}
translate R WhiteClearAdvantage {White has a clear advantage}
translate R BlackClearAdvantage {White has a clear advantage}
translate R WhiteSlightAdvantage {White has a slight advantage}
translate R BlackSlightAdvantage {White has a slight advantage}
translate R Equality {Equality}
translate R Unclear {Unclear}
translate R Diagram {Diagram}

# Board search:
translate R BoardSearch { }
translate R FilterOperation {   :}
translate R FilterAnd {AND ( )}
translate R FilterOr {OR (  )}
translate R FilterIgnore {IGNORE ( )}
translate R SearchType { :}
translate R SearchBoardExact {  (     )}
translate R SearchBoardPawns { (  ,      )}
translate R SearchBoardFiles { (  ,      )}
translate R SearchBoardAny { (  ,      )}
# ====== TODO To be translated ======
translate R SearchInRefDatabase { Search in base }
translate R LookInVars {  }

# Material search:
translate R MaterialSearch { }
translate R Material {}
translate R Patterns {}
translate R Zero {}
translate R Any {}
translate R CurrentBoard { }
translate R CommonEndings { }
translate R CommonPatterns { }
translate R MaterialDiff { }
translate R squares {}
translate R SameColor {  }
translate R OppColor { }
translate R Either {}
translate R MoveNumberRange {  }
translate R MatchForAtLeast {   }
translate R HalfMoves {}
# ====== TODO To be translated ======
translate R EndingPawns {Pawn endings}
# ====== TODO To be translated ======
translate R EndingRookVsPawns {Rook vs. Pawn(s)}
# ====== TODO To be translated ======
translate R EndingRookPawnVsRook {Rook and 1 Pawn vs. Rook}
# ====== TODO To be translated ======
translate R EndingRookPawnsVsRook {Rook and Pawn(s) vs. Rook}
# ====== TODO To be translated ======
translate R EndingRooks {Rook vs. Rook endings}
# ====== TODO To be translated ======
translate R EndingRooksPassedA {Rook vs. Rook endings with a passed a-pawn}
# ====== TODO To be translated ======
translate R EndingRooksDouble {Double Rook endings}
# ====== TODO To be translated ======
translate R EndingBishops {Bishop vs. Bishop endings}
# ====== TODO To be translated ======
translate R EndingBishopVsKnight {Bishop vs. Knight endings}
# ====== TODO To be translated ======
translate R EndingKnights {Knight vs. Knight endings}
# ====== TODO To be translated ======
translate R EndingQueens {Queen vs. Queen endings}
# ====== TODO To be translated ======
translate R EndingQueenPawnVsQueen {Queen and 1 Pawn vs. Queen}
# ====== TODO To be translated ======
translate R BishopPairVsKnightPair {Two Bishops vs. Two Knights middlegame}
# ====== TODO To be translated ======
translate R PatternWhiteIQP {White IQP}
# ====== TODO To be translated ======
translate R PatternWhiteIQPBreakE6 {White IQP: d4-d5 break vs. e6}
# ====== TODO To be translated ======
translate R PatternWhiteIQPBreakC6 {White IQP: d4-d5 break vs. c6}
# ====== TODO To be translated ======
translate R PatternBlackIQP {Black IQP}
# ====== TODO To be translated ======
translate R PatternWhiteBlackIQP {White IQP vs. Black IQP}
# ====== TODO To be translated ======
translate R PatternCoupleC3D4 {White c3+d4 Isolated Pawn Couple}
# ====== TODO To be translated ======
translate R PatternHangingC5D5 {Black Hanging Pawns on c5 and d5}
# ====== TODO To be translated ======
translate R PatternMaroczy {Maroczy Center (with Pawns on c4 and e4)}
# ====== TODO To be translated ======
translate R PatternRookSacC3 {Rook Sacrifice on c3}
# ====== TODO To be translated ======
translate R PatternKc1Kg8 {O-O-O vs. O-O (Kc1 vs. Kg8)}
# ====== TODO To be translated ======
translate R PatternKg1Kc8 {O-O vs. O-O-O (Kg1 vs. Kc8)}
# ====== TODO To be translated ======
translate R PatternLightFian {Light-Square Fianchettos (Bishop-g2 vs. Bishop-b7)}
# ====== TODO To be translated ======
translate R PatternDarkFian {Dark-Square Fianchettos (Bishop-b2 vs. Bishop-g7)}
# ====== TODO To be translated ======
translate R PatternFourFian {Four Fianchettos (Bishops on b2,g2,b7,g7)}

# Game saving:
translate R Today {}
translate R ClassifyGame { }

# Setup position:
translate R EmptyBoard { }
translate R InitialBoard { }
translate R SideToMove { }
translate R MoveNumber { }
translate R Castling {}
translate R EnPassantFile { }
translate R ClearFen { FEN}
translate R PasteFen { FEN}
# ====== TODO To be translated ======
translate R SaveAndContinue {Save and continue}
# ====== TODO To be translated ======
translate R DiscardChangesAndContinue {Discard changes\nand continue}
# ====== TODO To be translated ======
translate R GoBack {Go back}

# Replace move dialog:
translate R ReplaceMove { }
translate R AddNewVar {  }
# ====== TODO To be translated ======
translate R NewMainLine {New Main Line}
translate R ReplaceMoveMessage {   .

   ,     ,    ,   .

(       ,   "   "   : .)}

# Make database read-only dialog:
translate R ReadOnlyDialog {        ,     .
      ,       .
     ECO  .

           .

         ?}

# Clear game dialog:
translate R ClearGameDialog {   .

   ,    ?
}

# Exit dialog:
translate R ExitDialog {     Scid?}
translate R ExitUnsaved {       .    ,   .}

# Import window:
translate R PasteCurrentGame {  }
translate R ImportHelp1 {      PGN   .}
translate R ImportHelp2 {      .}
# ====== TODO To be translated ======
translate R OverwriteExistingMoves {Overwrite existing moves ?}

# ECO Browser:
translate R ECOAllSections {  ECO}
translate R ECOSection { ECO}
translate R ECOSummary { }
translate R ECOFrequency {  }

# Opening Report:
translate R OprepTitle { }
translate R OprepReport {}
translate R OprepGenerated {}
translate R OprepStatsHist {  }
translate R OprepStats {}
translate R OprepStatAll {  }
translate R OprepStatBoth {  }
translate R OprepStatSince {}
translate R OprepOldest { }
translate R OprepNewest { }
translate R OprepPopular { }
translate R OprepFreqAll {   :   }
translate R OprepFreq1   {  : }
translate R OprepFreq5   {   : }
translate R OprepFreq10  {   : }
translate R OprepEvery {   %u }
translate R OprepUp { - %u%s   }
translate R OprepDown { - %u%s   }
translate R OprepSame {    }
translate R OprepMostFrequent {   }
translate R OprepMostFrequentOpponents {Most frequent opponents}
translate R OprepRatingsPerf {  }
translate R OprepAvgPerf {   }
translate R OprepWRating { }
translate R OprepBRating { }
translate R OprepWPerf { }
translate R OprepBPerf { }
translate R OprepHighRating {    }
translate R OprepTrends { }
translate R OprepResults {   }
translate R OprepLength { }
translate R OprepFrequency {}
translate R OprepWWins { : }
translate R OprepBWins { : }
translate R OprepDraws {:      }
translate R OprepWholeDB {  }
translate R OprepShortest {  }
translate R OprepMovesThemes {  }
translate R OprepMoveOrders {      }
translate R OprepMoveOrdersOne \
  {        :}
translate R OprepMoveOrdersAll \
  { %u       :}
translate R OprepMoveOrdersMany \
  { %u       .  %u:}
translate R OprepMovesFrom {   }
translate R OprepMostFrequentEcoCodes {Most frequent ECO codes}
translate R OprepThemes { }
translate R OprepThemeDescription {Frequency of themes in the first %u moves of each game}
translate R OprepThemeSameCastling { }
translate R OprepThemeOppCastling { }
translate R OprepThemeNoCastling {   }
translate R OprepThemeKPawnStorm {  }
translate R OprepThemeQueenswap { }
translate R OprepThemeWIQP {White Isolated Queen Pawn}
translate R OprepThemeBIQP {Black Isolated Queen Pawn}
translate R OprepThemeWP567 {   5/6/7 }
translate R OprepThemeBP234 {   2/3/4 }
translate R OprepThemeOpenCDE { c/d/e }
translate R OprepTheme1BishopPair {     }
translate R OprepEndgames {}
translate R OprepReportGames { }
translate R OprepAllGames    { }
translate R OprepEndClass {    }
translate R OprepTheoryTable { }
translate R OprepTableComment {  %u  .}
translate R OprepExtraMoves {      }
translate R OprepMaxGames {    }
translate R OprepViewHTML {View HTML}
translate R OprepViewLaTeX {View LaTeX}

# Player Report:
translate R PReportTitle {Player Report}
translate R PReportColorWhite {with the White pieces}
translate R PReportColorBlack {with the Black pieces}
translate R PReportMoves {after %s}
translate R PReportOpenings {Openings}
translate R PReportClipbase {Empty clipbase and copy matching games to it}

# Piece Tracker window:
translate R TrackerSelectSingle {     .}
translate R TrackerSelectPair {     ;     .}
translate R TrackerSelectPawn {     ;    8 .}
translate R TrackerStat {}
translate R TrackerGames {%      }
translate R TrackerTime {%    }
translate R TrackerMoves {}
translate R TrackerMovesStart {  ,    .}
translate R TrackerMovesStop {  ,   .}

# Game selection dialogs:
translate R SelectAllGames {    }
translate R SelectFilterGames {  }
translate R SelectTournamentGames {   }
translate R SelectOlderGames {  }

# Delete Twins window:
translate R TwinsNote {  ,         ,  ,    .    ,    . :      ,    . }
translate R TwinsCriteria {:   ...}
translate R TwinsWhich {  }
translate R TwinsColors {    ?}
translate R TwinsEvent {  ?}
translate R TwinsSite {  ?}
translate R TwinsRound {  ?}
translate R TwinsYear {  ?}
translate R TwinsMonth {  ?}
translate R TwinsDay {  ?}
translate R TwinsResult {  ?}
translate R TwinsECO {   ECO?}
translate R TwinsMoves {  ?}
translate R TwinsPlayers {  :}
translate R TwinsPlayersExact { }
translate R TwinsPlayersPrefix {  4 }
translate R TwinsWhen {   }
translate R TwinsSkipShort {  ,   5 ?}
translate R TwinsUndelete {   ?}
translate R TwinsSetFilter {     ?}
translate R TwinsComments {    ?}
translate R TwinsVars {    ?}
translate R TwinsDeleteWhich {  :}
translate R TwinsDeleteShorter {  }
translate R TwinsDeleteOlder {  }
translate R TwinsDeleteNewer {  }
translate R TwinsDelete { }

# Name editor window:
translate R NameEditType {   }
translate R NameEditSelect {  }
translate R NameEditReplace {}
translate R NameEditWith {}
translate R NameEditMatches {:  Ctrl+1 - Ctrl+9  }
# ====== TODO To be translated ======
translate R CheckGames {Check games}
# ====== TODO To be translated ======
translate R CheckGamesWhich {Check games}
# ====== TODO To be translated ======
translate R CheckAll {All games}
# ====== TODO To be translated ======
translate R CheckSelectFilterGames {Only games in filter}

# Classify window:
translate R Classify {}
translate R ClassifyWhich {   ECO}
translate R ClassifyAll {  (  ECO)}
translate R ClassifyYear { ,    }
translate R ClassifyMonth { ,    }
translate R ClassifyNew {    ECO}
translate R ClassifyCodes { ECO  }
translate R ClassifyBasic {   ("B12", ...)}
translate R ClassifyExtended {Scid  ("B12j", ...)}

# Compaction:
translate R NameFile { }
translate R GameFile { }
translate R Names {}
translate R Unused { }
translate R SizeKb { (kb)}
translate R CurrentState { }
translate R AfterCompaction { }
translate R CompactNames {  }
translate R CompactGames {  }
# ====== TODO To be translated ======
translate R NoUnusedNames "There are no unused names, so the name file is already fully compacted."
# ====== TODO To be translated ======
translate R NoUnusedGames "The game file is already fully compacted."
# ====== TODO To be translated ======
translate R NameFileCompacted {The name file for the database "[file tail [sc_base filename]]" was compacted.}
# ====== TODO To be translated ======
translate R GameFileCompacted {The game file for the database "[file tail [sc_base filename]]" was compacted.}

# Sorting:
translate R SortCriteria {}
translate R AddCriteria { }
translate R CommonSorts { }
translate R Sort {}

# Exporting:
translate R AddToExistingFile {    ?}
translate R ExportComments { ?}
translate R ExportVariations { ?}
translate R IndentComments {  ?}
translate R IndentVariations {  ?}
translate R ExportColumnStyle {  (   )?}
translate R ExportSymbolStyle {  :}
translate R ExportStripMarks {   /  ?}

# Goto game/move dialogs:
translate R LoadGameNumber {    :}
translate R GotoMoveNumber {   :}

# Copy games dialog:
translate R CopyGames { }
translate R CopyConfirm {
    
 [::utils::thousands $nGamesToCopy]  
    "$fromName"
    "$targetName"?
}
translate R CopyErr {   }
translate R CopyErrSource {  }
translate R CopyErrTarget {  }
translate R CopyErrNoGames {has no games in its filter}
translate R CopyErrReadOnly {  }
translate R CopyErrNotOpen { }

# Colors:
translate R LightSquares { }
translate R DarkSquares { }
translate R SelectedSquares { }
translate R SuggestedSquares {  }
translate R WhitePieces { }
translate R BlackPieces { }
translate R WhiteBorder { }
translate R BlackBorder { }

# Novelty window:
translate R FindNovelty { }
translate R Novelty {}
translate R NoveltyInterrupt {  }
translate R NoveltyNone {     }
translate R NoveltyHelp {Scid      ,    ,        .}
# ====== TODO To be translated ======
translate R SoundsFolder {Sound Files Folder}
# ====== TODO To be translated ======
translate R SoundsFolderHelp {The folder should contain the files King.wav, a.wav, 1.wav, etc}
# ====== TODO To be translated ======
translate R SoundsAnnounceOptions {Move Announcement Options}
# ====== TODO To be translated ======
translate R SoundsAnnounceNew {Announce new moves as they are made}
# ====== TODO To be translated ======
translate R SoundsAnnounceForward {Announce moves when moving forward one move}
# ====== TODO To be translated ======
translate R SoundsAnnounceBack {Announce when retracting or moving back one move}

# Upgrading databases:
translate R Upgrading {}
translate R ConfirmOpenNew {
   (Scid 2)  ,       Scid 3,     (Scid 3)    .

       ?
}
translate R ConfirmUpgrade {
   (Scid 2)  .              Scid 3.

     ;        .

   ,      .   ,      .

     ?
}

# Recent files options:
translate R RecentFilesMenu {      }
translate R RecentFilesExtra {      }

# My Player Names options:
translate R MyPlayerNamesDescription {
Enter a list of preferred player names below, one name per line. Wildcards (e.g. "?" for any single character, "*" for any sequence of characters) are permitted.

Every time a game with a player in the list is loaded, the main window chessboard will be rotated if necessary to show the game from that players perspective.
}
# ====== TODO To be translated ======
translate R showblunderexists {show blunder exists}
# ====== TODO To be translated ======
translate R showblundervalue {show blunder value}
# ====== TODO To be translated ======
translate R showscore {show score}
# ====== TODO To be translated ======
translate R coachgame {coach game}
# ====== TODO To be translated ======
translate R configurecoachgame {configure coach game}
# ====== TODO To be translated ======
translate R configuregame {Game configuration}
# ====== TODO To be translated ======
translate R Phalanxengine {Phalanx engine}
# ====== TODO To be translated ======
translate R Coachengine {Coach engine}
# ====== TODO To be translated ======
translate R difficulty {difficulty}
# ====== TODO To be translated ======
translate R hard {hard}
# ====== TODO To be translated ======
translate R easy {easy}
# ====== TODO To be translated ======
translate R Playwith {Play with}
# ====== TODO To be translated ======
translate R white {white}
# ====== TODO To be translated ======
translate R black {black}
# ====== TODO To be translated ======
translate R both {both}
# ====== TODO To be translated ======
translate R Play {Play}
# ====== TODO To be translated ======
translate R Noblunder {No blunder}
# ====== TODO To be translated ======
translate R blunder {blunder}
# ====== TODO To be translated ======
translate R Noinfo {-- No info --}
# ====== TODO To be translated ======
translate R PhalanxOrTogaMissing {Phalanx or Toga not found}
# ====== TODO To be translated ======
# ====== TODO To be translated ======
# ====== TODO To be translated ======
translate R moveblunderthreshold {move is a blunder if loss is greater than}
# ====== TODO To be translated ======
translate R limitanalysis {limit engine analysis time}
# ====== TODO To be translated ======
translate R seconds {seconds}
# ====== TODO To be translated ======
translate R Abort {Abort}
# ====== TODO To be translated ======
translate R Resume {Resume}
# ====== TODO To be translated ======
translate R OutOfOpening {Out of opening}
# ====== TODO To be translated ======
translate R NotFollowedLine {You did not follow the line}
# ====== TODO To be translated ======
translate R DoYouWantContinue {Do you want yo continue ?}
# ====== TODO To be translated ======
translate R CoachIsWatching {Coach is watching}
# ====== TODO To be translated ======
translate R Ponder {Permanent thinking}
# ====== TODO To be translated ======
translate R LimitELO {Limit ELO strength}
# ====== TODO To be translated ======
translate R DubiousMovePlayedTakeBack {Dubious move played, do you want to take back ?}
# ====== TODO To be translated ======
translate R WeakMovePlayedTakeBack {Weak move played, do you want to take back ?}
# ====== TODO To be translated ======
translate R BadMovePlayedTakeBack {Bad move played, do you want to take back ?}
# ====== TODO To be translated ======
translate R Iresign {I resign}
# ====== TODO To be translated ======
translate R yourmoveisnotgood {your move is not good}
# ====== TODO To be translated ======
translate R EndOfVar {End of variation}
# ====== TODO To be translated ======
translate R Openingtrainer {Opening trainer}
# ====== TODO To be translated ======
translate R DisplayCM {Display candidate moves}
# ====== TODO To be translated ======
translate R DisplayCMValue {Display candidate moves value}
# ====== TODO To be translated ======
translate R DisplayOpeningStats {Show statistics}
# ====== TODO To be translated ======
translate R ShowReport {Show report}
# ====== TODO To be translated ======
translate R NumberOfGoodMovesPlayed {good moves played}
# ====== TODO To be translated ======
translate R NumberOfDubiousMovesPlayed {dubious moves played}
# ====== TODO To be translated ======
translate R NumberOfMovesPlayedNotInRepertoire {moves played not in repertoire}
# ====== TODO To be translated ======
translate R NumberOfTimesPositionEncountered {times position encountered}
# ====== TODO To be translated ======
translate R PlayerBestMove  {Allow only best moves}
# ====== TODO To be translated ======
translate R OpponentBestMove {Opponent plays best moves}
# ====== TODO To be translated ======
translate R OnlyFlaggedLines {Only flagged lines}
# ====== TODO To be translated ======
translate R resetStats {Reset statistics}
# ====== TODO To be translated ======
translate R Repertoiretrainingconfiguration {Repertoire training configuration}
# ====== TODO To be translated ======
translate R Loadingrepertoire {Loading repertoire}
# ====== TODO To be translated ======
translate R Movesloaded {Moves loaded}
# ====== TODO To be translated ======
translate R Repertoirenotfound {Repertoire not found}
# ====== TODO To be translated ======
translate R Openfirstrepertoirewithtype {Open first a repertoire database with icon/type set to the right side}
# ====== TODO To be translated ======
translate R Movenotinrepertoire {Move not in repertoire}
# ====== TODO To be translated ======
translate R PositionsInRepertoire {Positions in repertoire}
# ====== TODO To be translated ======
translate R PositionsNotPlayed {Positions not played}
# ====== TODO To be translated ======
translate R PositionsPlayed {Positions played}
# ====== TODO To be translated ======
translate R Success {Success}
# ====== TODO To be translated ======
translate R DubiousMoves {Dubious moves}
# ====== TODO To be translated ======
translate R OutOfRepertoire {OutOfRepertoire}
# ====== TODO To be translated ======
# ====== TODO To be translated ======
# ====== TODO To be translated ======
# ====== TODO To be translated ======
translate R ConfigureTactics {Configure tactics}
# ====== TODO To be translated ======
translate R ResetScores {Reset scores}
# ====== TODO To be translated ======
translate R LoadingBase {Loading base}
# ====== TODO To be translated ======
translate R Tactics {Tactics}
# ====== TODO To be translated ======
translate R ShowSolution {Show solution}
# ====== TODO To be translated ======
translate R NextExercise {Next exercise}
# ====== TODO To be translated ======
translate R PrevExercise {previous exercise}
# ====== TODO To be translated ======
translate R StopTraining {Stop training}
# ====== TODO To be translated ======
translate R Next {Next}
# ====== TODO To be translated ======
translate R ResettingScore {Resetting score}
# ====== TODO To be translated ======
translate R LoadingGame {Loading game}
# ====== TODO To be translated ======
translate R MateFound {Mate found}
# ====== TODO To be translated ======
translate R BestSolutionNotFound {Best solution NOT found !}
# ====== TODO To be translated ======
translate R MateNotFound {Mate not found}
# ====== TODO To be translated ======
translate R ShorterMateExists {Shorter mate exists}
# ====== TODO To be translated ======
translate R ScorePlayed {Score played}
# ====== TODO To be translated ======
translate R Expected {expected}
# ====== TODO To be translated ======
translate R ChooseTrainingBase {Choose training base}
# ====== TODO To be translated ======
translate R Thinking {Thinking}
# ====== TODO To be translated ======
translate R AnalyzeDone {Analyze done}
# ====== TODO To be translated ======
translate R WinWonGame {Win won game}
# ====== TODO To be translated ======
translate R Lines {Lines}
# ====== TODO To be translated ======
translate R ConfigureUCIengine {Configure UCI engine}
# ====== TODO To be translated ======
translate R SpecificOpening {Specific opening}
# ====== TODO To be translated ======
translate R StartNewGame {Start new game}
# ====== TODO To be translated ======
translate R FixedLevel {Fixed level}
# ====== TODO To be translated ======
translate R Opening {Opening}
# ====== TODO To be translated ======
translate R RandomLevel {Random level}
# ====== TODO To be translated ======
translate R StartFromCurrentPosition {Start from current position}
# ====== TODO To be translated ======
translate R FixedDepth {Fixed depth}
# ====== TODO To be translated ======
translate R Nodes {Nodes} 
# ====== TODO To be translated ======
translate R Depth {Depth}
# ====== TODO To be translated ======
translate R Time {Time} 
# ====== TODO To be translated ======
translate R SecondsPerMove {Seconds per move}
# ====== TODO To be translated ======
translate R Engine {Engine}
# ====== TODO To be translated ======
translate R TimeMode {Time mode}
# ====== TODO To be translated ======
translate R TimeBonus {Time + bonus}
# ====== TODO To be translated ======
# ====== TODO To be translated ======
translate R TimeMin {min}
# ====== TODO To be translated ======
translate R TimeSec {sec}
# ====== TODO To be translated ======
# ====== TODO To be translated ======
# ====== TODO To be translated ======
translate R AllExercisesDone {All exercises done}
# ====== TODO To be translated ======
translate R MoveOutOfBook {Move out of book}
# ====== TODO To be translated ======
translate R LastBookMove {Last book move}
# ====== TODO To be translated ======
translate R AnnotateSeveralGames {Annotate several games\nfrom current to :}
# ====== TODO To be translated ======
translate R FindOpeningErrors {Find opening errors}
# ====== TODO To be translated ======
translate R MarkTacticalExercises {Mark tactical exercises}
# ====== TODO To be translated ======
translate R UseBook {Use book}
# ====== TODO To be translated ======
translate R MultiPV {Multiple variations}
# ====== TODO To be translated ======
translate R Hash {Hash memory}
# ====== TODO To be translated ======
translate R OwnBook {Use engine book}
# ====== TODO To be translated ======
translate R BookFile {Opening book}
# ====== TODO To be translated ======
translate R AnnotateVariations {Annotate variations}
# ====== TODO To be translated ======
translate R ShortAnnotations {Short annotations}
# ====== TODO To be translated ======
translate R addAnnotatorTag {Add annotator tag}
# ====== TODO To be translated ======
translate R AddScoreToShortAnnotations {Add score to short annotations}
# ====== TODO To be translated ======
translate R Export {Export}
# ====== TODO To be translated ======
translate R BookPartiallyLoaded {Book partially loaded}
# ====== TODO To be translated ======
translate R Calvar {Calculation of variations}
# ====== TODO To be translated ======
translate R ConfigureCalvar {Configuration}
# ====== TODO To be translated ======
# ====== TODO To be translated ======
translate R Reti {Reti}
# ====== TODO To be translated ======
translate R English {English}
# ====== TODO To be translated ======
translate R d4Nf6Miscellaneous {1.d4 Nf6 Miscellaneous}
# ====== TODO To be translated ======
translate R Trompowsky {Trompowsky}
# ====== TODO To be translated ======
translate R Budapest {Budapest}
# ====== TODO To be translated ======
translate R OldIndian {Old Indian}
# ====== TODO To be translated ======
translate R BenkoGambit {Benko Gambit}
# ====== TODO To be translated ======
translate R ModernBenoni {Modern Benoni}
# ====== TODO To be translated ======
translate R DutchDefence {Dutch Defence}
# ====== TODO To be translated ======
translate R Scandinavian {Scandinavian}
# ====== TODO To be translated ======
translate R AlekhineDefence {Alekhine Defence}
# ====== TODO To be translated ======
translate R Pirc {Pirc}
# ====== TODO To be translated ======
translate R CaroKann {Caro-Kann}
# ====== TODO To be translated ======
translate R CaroKannAdvance {Caro-Kann Advance}
# ====== TODO To be translated ======
translate R Sicilian {Sicilian}
# ====== TODO To be translated ======
translate R SicilianAlapin {Sicilian Alapin}
# ====== TODO To be translated ======
translate R SicilianClosed {Sicilian Closed}
# ====== TODO To be translated ======
translate R SicilianRauzer {Sicilian Rauzer}
# ====== TODO To be translated ======
translate R SicilianDragon {Sicilian Dragon}
# ====== TODO To be translated ======
translate R SicilianScheveningen {Sicilian Scheveningen}
# ====== TODO To be translated ======
translate R SicilianNajdorf {Sicilian Najdorf}
# ====== TODO To be translated ======
translate R OpenGame {Open Game}
# ====== TODO To be translated ======
translate R Vienna {Vienna}
# ====== TODO To be translated ======
translate R KingsGambit {King's Gambit}
# ====== TODO To be translated ======
translate R RussianGame {Russian Game}
# ====== TODO To be translated ======
translate R ItalianTwoKnights {Italian/Two Knights}
# ====== TODO To be translated ======
translate R Spanish {Spanish}
# ====== TODO To be translated ======
translate R SpanishExchange {Spanish Exchange}
# ====== TODO To be translated ======
translate R SpanishOpen {Spanish Open}
# ====== TODO To be translated ======
translate R SpanishClosed {Spanish Closed}
# ====== TODO To be translated ======
translate R FrenchDefence {French Defence}
# ====== TODO To be translated ======
translate R FrenchAdvance {French Advance}
# ====== TODO To be translated ======
translate R FrenchTarrasch {French Tarrasch}
# ====== TODO To be translated ======
translate R FrenchWinawer {French Winawer}
# ====== TODO To be translated ======
translate R FrenchExchange {French Exchange}
# ====== TODO To be translated ======
translate R QueensPawn {Queen's Pawn}
# ====== TODO To be translated ======
translate R Slav {Slav}
# ====== TODO To be translated ======
translate R QGA {QGA}
# ====== TODO To be translated ======
translate R QGD {QGD}
# ====== TODO To be translated ======
translate R QGDExchange {QGD Exchange}
# ====== TODO To be translated ======
translate R SemiSlav {Semi-Slav}
# ====== TODO To be translated ======
translate R QGDwithBg5 {QGD with Bg5}
# ====== TODO To be translated ======
translate R QGDOrthodox {QGD Orthodox}
# ====== TODO To be translated ======
translate R Grunfeld {Gr?nfeld}
# ====== TODO To be translated ======
translate R GrunfeldExchange {Gr?nfeld Exchange}
# ====== TODO To be translated ======
translate R GrunfeldRussian {Gr?nfeld Russian}
# ====== TODO To be translated ======
translate R Catalan {Catalan}
# ====== TODO To be translated ======
translate R CatalanOpen {Catalan Open}
# ====== TODO To be translated ======
translate R CatalanClosed {Catalan Closed}
# ====== TODO To be translated ======
translate R QueensIndian {Queen's Indian}
# ====== TODO To be translated ======
translate R NimzoIndian {Nimzo-Indian}
# ====== TODO To be translated ======
translate R NimzoIndianClassical {Nimzo-Indian Classical}
# ====== TODO To be translated ======
translate R NimzoIndianRubinstein {Nimzo-Indian Rubinstein}
# ====== TODO To be translated ======
translate R KingsIndian {King's Indian}
# ====== TODO To be translated ======
translate R KingsIndianSamisch {King's Indian S?misch}
# ====== TODO To be translated ======
translate R KingsIndianMainLine {King's Indian Main Line}
# ====== TODO To be translated ======
translate R ConfigureFics {Configure FICS}
# ====== TODO To be translated ======
translate R FICSGuest {Login as Guest}
# ====== TODO To be translated ======
translate R FICSServerPort {Server port}
# ====== TODO To be translated ======
translate R FICSServerAddress {IP Address}
# ====== TODO To be translated ======
translate R FICSRefresh {Refresh}
# ====== TODO To be translated ======
translate R FICSTimesealPort {Timeseal port}
# ====== TODO To be translated ======
translate R FICSSilence {Silence}
# ====== TODO To be translated ======
translate R FICSOffers {Offers}
# ====== TODO To be translated ======
translate R FICSConsole {Console}
# ====== TODO To be translated ======
translate R FICSGames {Games}
# ====== TODO To be translated ======
translate R FICSUnobserve {Stop observing game}
# ====== TODO To be translated ======
translate R FICSProfile {Display your history and profile}
# ====== TODO To be translated ======
translate R FICSRelayedGames {Relayed games}
# ====== TODO To be translated ======
translate R FICSFindOpponent {Find opponent}
# ====== TODO To be translated ======
translate R FICSTakeback {Takeback}
# ====== TODO To be translated ======
translate R FICSTakeback2 {Takeback 2}
# ====== TODO To be translated ======
translate R FICSInitTime {Initial time (min)}
# ====== TODO To be translated ======
translate R FICSIncrement {Increment (sec)}
# ====== TODO To be translated ======
translate R FICSRatedGame {Rated Game}
# ====== TODO To be translated ======
translate R FICSAutoColour {automatic}
# ====== TODO To be translated ======
translate R FICSManualConfirm {confirm manually}
# ====== TODO To be translated ======
translate R FICSFilterFormula {Filter with formula}
# ====== TODO To be translated ======
translate R FICSIssueSeek {Issue seek}
# ====== TODO To be translated ======
translate R FICSChallenge {Challenge}
# ====== TODO To be translated ======
translate R FICSAccept {accept}
# ====== TODO To be translated ======
translate R FICSDecline {decline}
# ====== TODO To be translated ======
translate R FICSColour {Colour}
# ====== TODO To be translated ======
translate R FICSSend {send}
# ====== TODO To be translated ======
translate R FICSConnect {Connect}
# ====== TODO To be translated ======
translate R FICSdefaultuservars {Use default variables}
# ====== TODO To be translated ======
translate R FICSObserveconfirm {Do you want to observe game}
# ====== TODO To be translated ======
translate R GameReview {Game review}
# ====== TODO To be translated ======
translate R GameReviewTimeExtended {Time extended}
# ====== TODO To be translated ======
translate R GameReviewMargin {Error margin}
# ====== TODO To be translated ======
translate R GameReviewAutoContinue {Auto continue when move is correct}
# ====== TODO To be translated ======
translate R GameReviewReCalculate {Use extended time}
# ====== TODO To be translated ======
translate R GameReviewAnalyzingMovePlayedDuringTheGame {Analyzing move played during the game}
# ====== TODO To be translated ======
translate R GameReviewAnalyzingThePosition {Analyzing the position}
# ====== TODO To be translated ======
translate R GameReviewEnterYourMove {Enter your move}
# ====== TODO To be translated ======
translate R GameReviewCheckingYourMove {Checking your move}
# ====== TODO To be translated ======
translate R GameReviewYourMoveWasAnalyzed {Your move was analyzed}
# ====== TODO To be translated ======
translate R GameReviewYouPlayedSameMove {You played the same move as in match}
# ====== TODO To be translated ======
translate R GameReviewScoreOfYourMove {Score of your move}
# ====== TODO To be translated ======
translate R GameReviewGameMoveScore {Game move's score}
# ====== TODO To be translated ======
translate R GameReviewEngineScore {Engine's score}
# ====== TODO To be translated ======
translate R GameReviewYouPlayedLikeTheEngine {You played like the engine}
# ====== TODO To be translated ======
translate R GameReviewNotEngineMoveButGoodMove {Not the engine move, but is also a good move}
# ====== TODO To be translated ======
translate R GameReviewMoveNotGood {This move is not good, score is}
# ====== TODO To be translated ======
translate R GameReviewMovesPlayedLike {Moves played like}
# ====== TODO To be translated ======
translate R GameReviewMovesPlayedEngine {Moves played like engine}
# ====== TODO To be translated ======
translate R CCDlgConfigureWindowTitle {Configure Correspondence Chess}
# ====== TODO To be translated ======
translate R CCDlgCGeneraloptions {General Options}
# ====== TODO To be translated ======
translate R CCDlgDefaultDB {Default Database:}
# ====== TODO To be translated ======
translate R CCDlgInbox {Inbox (path):}
# ====== TODO To be translated ======
translate R CCDlgOutbox {Outbox (path):}
# ====== TODO To be translated ======
translate R CCDlgXfcc {Xfcc Configuration:}
# ====== TODO To be translated ======
translate R CCDlgExternalProtocol {External Protocol Handler (e.g. Xfcc)}
# ====== TODO To be translated ======
translate R CCDlgFetchTool {Fetch Tool:}
# ====== TODO To be translated ======
translate R CCDlgSendTool {Send Tool:}
# ====== TODO To be translated ======
translate R CCDlgEmailCommunication {eMail Communication}
# ====== TODO To be translated ======
translate R CCDlgMailPrg {Mail program:}
# ====== TODO To be translated ======
translate R CCDlgBCCAddr {(B)CC Address:}
# ====== TODO To be translated ======
translate R CCDlgMailerMode {Mode:}
# ====== TODO To be translated ======
translate R CCDlgThunderbirdEg {e.g. Thunderbird, Mozilla Mail, Icedove...}
# ====== TODO To be translated ======
translate R CCDlgMailUrlEg {e.g. Evolution}
# ====== TODO To be translated ======
translate R CCDlgClawsEg {e.g Sylpheed Claws}
# ====== TODO To be translated ======
translate R CCDlgmailxEg {e.g. mailx, mutt, nail...}
# ====== TODO To be translated ======
translate R CCDlgAttachementPar {Attachment parameter:}
# ====== TODO To be translated ======
translate R CCDlgInternalXfcc {Use internal Xfcc support}
# ====== TODO To be translated ======
translate R CCDlgConfirmXfcc {Confirm moves}
# ====== TODO To be translated ======
translate R CCDlgSubjectPar {Subject parameter:}
# ====== TODO To be translated ======
translate R CCDlgDeleteBoxes {Empty In-/Outbox}
# ====== TODO To be translated ======
translate R CCDlgDeleteBoxesText {Do you really want to empty your In- and Outbox folders for Correspondence Chess? This requires a new sync to show the last state of your games}
# ====== TODO To be translated ======
translate R CCDlgConfirmMove {Confirm move}
# ====== TODO To be translated ======
translate R CCDlgConfirmMoveText {If you confirm, the following move and comment will be sent to the server:}
# ====== TODO To be translated ======
translate R CCDlgDBGameToLong {Inconsistent Mainline}
# ====== TODO To be translated ======
translate R CCDlgDBGameToLongError {The mainline in your database is longer than the game in your Inbox. If the Inbox contains current games, i.e. right after a sync, some moves were added to the mainline in the database erroneously.\nIn this case please shorten the mainline to (at max) move\n}
# ====== TODO To be translated ======
translate R CCDlgStartEmail {Start new eMail game}
# ====== TODO To be translated ======
translate R CCDlgYourName {Your Name:}
# ====== TODO To be translated ======
translate R CCDlgYourMail {Your eMail Address:}
# ====== TODO To be translated ======
translate R CCDlgOpponentName {Opponents Name:}
# ====== TODO To be translated ======
translate R CCDlgOpponentMail {Opponents eMail Address:}
# ====== TODO To be translated ======
translate R CCDlgGameID {Game ID (unique):}
# ====== TODO To be translated ======
translate R CCDlgTitNoOutbox {Scid: Correspondence Chess Outbox}
# ====== TODO To be translated ======
translate R CCDlgTitNoInbox {Scid: Correspondence Chess Inbox}
# ====== TODO To be translated ======
translate R CCDlgTitNoGames {Scid: No Correspondence Chess Games}
# ====== TODO To be translated ======
translate R CCErrInboxDir {Correspondence Chess inbox directory:}
# ====== TODO To be translated ======
translate R CCErrOutboxDir {Correspondence Chess outbox directory:}
# ====== TODO To be translated ======
translate R CCErrDirNotUsable {does not exist or is not accessible!\nPlease check and correct the settings.}
# ====== TODO To be translated ======
translate R CCErrNoGames {does not contain any games!\nPlease fetch them first.}
# ====== TODO To be translated ======
translate R CCDlgTitNoCCDB {Scid: No Correspondence Database}
# ====== TODO To be translated ======
translate R CCErrNoCCDB {No Database of type 'Correspondence' is opened. Please open one before using correspondence chess functions.}
# ====== TODO To be translated ======
translate R CCFetchBtn {Fetch games from the server and process the Inbox}
# ====== TODO To be translated ======
translate R CCPrevBtn {Goto previous game}
# ====== TODO To be translated ======
translate R CCNextBtn {Goto next game}
# ====== TODO To be translated ======
translate R CCSendBtn {Send move}
# ====== TODO To be translated ======
translate R CCEmptyBtn {Empty In- and Outbox}
# ====== TODO To be translated ======
translate R CCHelpBtn {Help on icons and status indicators.\nFor general Help press F1!}
# ====== TODO To be translated ======
translate R CCDlgServerName {Server Name:}
# ====== TODO To be translated ======
translate R CCDlgLoginName  {Login Name:}
# ====== TODO To be translated ======
translate R CCDlgPassword   {Password:}
# ====== TODO To be translated ======
translate R CCDlgURL        {Xfcc-URL:}
# ====== TODO To be translated ======
translate R CCDlgRatingType {Rating Type:}
# ====== TODO To be translated ======
translate R CCDlgDuplicateGame {Non-unique game ID}
# ====== TODO To be translated ======
translate R CCDlgDuplicateGameError {This game exists more than once in your database. Please delete all duplicates and compact your game file (File/Maintenance/Compact Database).}
# ====== TODO To be translated ======
translate R CCDlgSortOption {Sorting:}
# ====== TODO To be translated ======
translate R CCDlgListOnlyOwnMove {Only games I have the move}
# ====== TODO To be translated ======
translate R CCOrderClassicTxt {Site, Event, Round, Result, White, Black}
# ====== TODO To be translated ======
translate R CCOrderMyTimeTxt {My Clock}
# ====== TODO To be translated ======
translate R CCOrderTimePerMoveTxt {Time per move till next time control}
# ====== TODO To be translated ======
translate R CCOrderStartDate {Start date}
# ====== TODO To be translated ======
translate R CCOrderOppTimeTxt {Opponents Clock}
# ====== TODO To be translated ======
translate R CCDlgConfigRelay {Configure ICCF observations}
# ====== TODO To be translated ======
translate R CCDlgConfigRelayHelp {Go to the games page on http://www.iccf-webchess.com and display the game to be observed.  If you see the chessboard copy the URL from your browser to the list below. One URL per line only!\nExample: http://www.iccf-webchess.com/MakeAMove.aspx?id=266452}
# ====== TODO To be translated ======
translate R ExtHWConfigConnection {Configure external hardware}
# ====== TODO To be translated ======
translate R ExtHWPort {Port}
# ====== TODO To be translated ======
translate R ExtHWEngineCmd {Engine command}
# ====== TODO To be translated ======
translate R ExtHWEngineParam {Engine parameter}
# ====== TODO To be translated ======
translate R ExtHWShowButton {Show button}
# ====== TODO To be translated ======
translate R ExtHWHardware {Hardware}
# ====== TODO To be translated ======
translate R ExtHWNovag {Novag Citrine}
# ====== TODO To be translated ======
translate R ExtHWInputEngine {Input Engine}
# ====== TODO To be translated ======
translate R ExtHWNoBoard {No board}
# ====== TODO To be translated ======
translate R NovagReferee {Referee}
# ====== TODO To be translated ======
translate R IEConsole {Input Engine Console}
# ====== TODO To be translated ======
translate R IESending {Moves sent for}
# ====== TODO To be translated ======
translate R IESynchronise {Synchronise}
# ====== TODO To be translated ======
translate R IERotate  {Rotate}
# ====== TODO To be translated ======
translate R IEUnableToStart {Unable to start Input Engine:}
# ====== TODO To be translated ======
translate R DoneWithPosition {Done with position}
# ====== TODO To be translated ======
translate R Board {Board}
# ====== TODO To be translated ======
translate R showGameInfo {Show game info}
# ====== TODO To be translated ======
translate R autoResizeBoard {Automatic resize of board}
# ====== TODO To be translated ======
translate R DockTop {Move to top}
# ====== TODO To be translated ======
translate R DockBottom {Move to bottom}
# ====== TODO To be translated ======
translate R DockLeft {Move to left}
# ====== TODO To be translated ======
translate R DockRight {Move to right}
# ====== TODO To be translated ======
translate R Undock {Undock}
# ====== TODO To be translated ======
translate R ChangeIcon {Change icon...}
# ====== TODO To be translated ======
}
# end of russian.tcl











































































### serbian.tcl:
# Serbian menus for Scid.
# Contributed by Milos Pejovic.

addLanguage Y Serbian 2 iso8859-2

proc setLanguage_Y {} {

# File menu:
menuText Y File "Fajl" 0
menuText Y FileNew "Novi..." 0 {Kreiraj novu Scid bazu podataka}
menuText Y FileOpen "Otvori..." 0 {Otvori postojeu Scid bazu podataka}
menuText Y FileClose "Zatvori" 0 {Zatvori aktivnu Scid bazu podataka}
menuText Y FileFinder "Traga" 0 {Pokreni Fajl Traga}
menuText Y FileBookmarks "Markeri" 0 {Meni sa markerima (preica: Ctrl+B)}
menuText Y FileBookmarksAdd "Dodaj u markere" 0 \
  {Dodaj u markere tekuu partiju iz baze i poziciju}
menuText Y FileBookmarksFile "Arhiviraj marker" 0 \
  {Arhiviraj marker za tekuu partiju i poziciju}
menuText Y FileBookmarksEdit "Izmeni markere..." 0 \
  {Izmeni menije markera}
menuText Y FileBookmarksList "Prikai foldere kao jedinstvenu listu" 0 \
  {Prikai foldere markera kao jedinstvenu listu, bez podmenija}
menuText Y FileBookmarksSub "Prikai foldere kao podmenije" 0 \
  {Prikai foldere markera kao podmenije, ne jedinstvenu listu}
menuText Y FileMaint "Odravanje" 0 {Alati za odravanje Scid baze podataka}
menuText Y FileMaintWin "Prozor odravanja" 0 \
  {Otvori/zatvori prozor odravanja Scid baze podataka}
menuText Y FileMaintCompact "Komprimuj bazu..." 0 \
  {Uini fajlove baze kompaktnijim, uklanjajui obrisane partije i nekoriena imena}
menuText Y FileMaintClass "EO-Klasifikacija partija..." 2 \
  {Klasifikacija svih partija po otvaranju}
menuText Y FileMaintSort "Sortiraj bazu..." 0 \
  {Sortiraj sve partije u bazi podataka}
menuText Y FileMaintDelete "Izbrii udvojene partije..." 0 \
  {Nai udvojene partije i oznai ih za brisanje}
menuText Y FileMaintTwin "Provera udvojenih partija" 0 \
  {Otvori/osvei prozor za proveru udvojenih partija}
menuText Y FileMaintName "Imena" 0 {Promena imena i kontrola pravopisa}
menuText Y FileMaintNameEditor "Editor imena" 0 \
  {Otvori/zatvori editor imena}
menuText Y FileMaintNamePlayer "Provera pravopisa imena igraa..." 11 \
  {Provera pravopisa imena igraa pomou spellcheck fajla}
menuText Y FileMaintNameEvent "Provera pravopisa imena turnira..." 11 \
  {Provera pravopisa imena turnira pomou spellcheck fajla}
menuText Y FileMaintNameSite "Provera pravopisa imena mesta..." 11 \
  {Provera pravopisa imena mesta pomou spellcheck fajla}
menuText Y FileMaintNameRound "Provera pravopisa kola..." 11 \
  {Provera pravopisa kola pomou spellcheck fajla}
menuText Y FileReadOnly "Read-only..." 0 \
  {Sprei izmene u tekuoj bazi}
menuText Y FileSwitch "Switch to database" 0 \
  {Switch to a different opened database} ;# ***
menuText Y FileExit "Izai" 1 {Izlazak iz Scid-a}
# ====== TODO To be translated ======
menuText Y FileMaintFixBase "Fix corrupted base" 0 {Try to fix a corrupted base}

# Edit menu:
menuText Y Edit "Izmene" 0
menuText Y EditAdd "Dodaj varijantu" 0 {Dodaj varijantu potezu u partiji}
menuText Y EditDelete "Obrii varijantu" 0 {Obrii varijantu za ovaj potez}
menuText Y EditFirst "Postavi prvu varijantu" 5 \
  {Postavi varijantu kao prvu u listi}
menuText Y EditMain "Postavi varijantu na glavnu liniju" 21 \
  {Postavi varijantu na glavnu liniju}
menuText Y EditTrial "Probaj varijantu" 0 \
  {Pokreni/zaustavi mod za testiranje ideje na tabli}
menuText Y EditStrip "Ukloni" 2 {Ukloni komentare ili varijante iz ove partije}
# ====== TODO To be translated ======
menuText Y EditUndo "Undo" 0 {Undo last game change}
menuText Y EditStripComments "Komentare" 0 \
  {Ukloni sve komentare i napomene iz ove partije}
menuText Y EditStripVars "Varijante" 0 {Ukloni sve varijante iz ove partije}
menuText Y EditStripBegin "Moves from the beginning" 1 \
  {Strip moves from the beginning of the game} ;# ***
menuText Y EditStripEnd "Moves to the end" 0 \
  {Strip moves to the end of the game} ;# ***
menuText Y EditReset "Isprazni Clipbase" 0 \
  {Resetuje clipbase da bude potpuno prazan}
menuText Y EditCopy "Kopiraj ovu partiju na Clipbase" 0 \
  {Kopiraj ovu partiju na clipbase partija}
menuText Y EditPaste "Prenesi poslednju clipbase partiju" 0 \
  {Prenesi aktivnu clipbase partiju ovde}
menuText Y EditPastePGN "Paste Clipboard text as PGN game..." 10 \
  {Interpret the clipboard text as a game in PGN notation and paste it here} ;# ***
menuText Y EditSetup "Namesti poetnu poziciju..." 0 \
  {Namesti poetnu poziciju za ovu partiju}
menuText Y EditCopyBoard "Copy position" 6 \
  {Copy the current board in FEN notation to the text selection (klipbord)} ;# ***
menuText Y EditPasteBoard "Prenesi poetnu poziciju" 9 \
  {Postavi poetnu poziciju na osnovu trenutno izabranog teksta (klipbord)}

# Game menu:
menuText Y Game "Partija" 0
menuText Y GameNew "Nova partija" 0 \
  {Pokreni novu partiju, sa gubljenjem svih izmena}
menuText Y GameFirst "Uitaj prvu partiju" 5 {Uitaj prvu filtriranu partiju}
menuText Y GamePrev "Uitaj prethodnu partiju" 5 {Uitaj prethodnu filtriranu partiju}
menuText Y GameReload "Osvei trenutnu partiju" 3 \
  {Osvei ovu partiju, sa gubljenjem svih izmena}
menuText Y GameNext "Uitaj sledeu partiju" 5 {Uitaj sledeu filtriranu partiju}
menuText Y GameLast "Uitaj poslednju partiju" 8 {Uitaj poslednju filtriranu partiju}
menuText Y GameRandom "Load Random Game" 8 {Load a random filtered game} ;# ***
menuText Y GameNumber "Uitaj partiju broj..." 5 \
  {Uitaj partiju, unosei njen broj}
menuText Y GameReplace "Sauvaj: Zameni partiju..." 6 \
  {Sauvaj ovu partiju preko stare partiju u bazi}
menuText Y GameAdd "Sauvaj: Dodaj novu partiju..." 6 \
  {Sauvaj ovu partiju kao novu u bazi}
menuText Y GameDeepest "Identifikuj otvaranje" 0 \
  {Idi na poslednju poziciju partije koja odgovara knjizi otvaranja}
menuText Y GameGotoMove "Idi na potez broj..." 5 \
  {Idi na odreeni broj potez u tekuoj partiji}
menuText Y GameNovelty "Pronai novost..." 8 \
  {Pronai prvi potez ove partije koji nije igran ranije}

# Search Menu:
menuText Y Search "Pretrai" 3
menuText Y SearchReset "Resetuj filter" 0 {Resetuj filter da bi sve partije bile ukljuene}
menuText Y SearchNegate "Invertuj filter" 0 {Invertuj filter da ukljui samo iskljuene partije}
menuText Y SearchCurrent "Tekua pozicija..." 0 {Pretrauj prema tekuoj poziciji na tabli}
menuText Y SearchHeader "Zaglavlje..." 0 {Pretrauj prema informacijama iz zaglavlja (igra, turnir, itd)}
menuText Y SearchMaterial "Materijal/Pozicije..." 0 {Pretrauj prema materijalu i poziciji}
menuText Y SearchUsing "Pomou Search fajla..." 0 {Pretrauj pomou Search fajla}

# Windows menu:
menuText Y Windows "Prozori" 1
menuText Y WindowsComment "Editor komentara" 0 {Otvori/zatvori editor komentara}
menuText Y WindowsGList "Lista partija" 0 {Otvori/zatvori listu partija}
menuText Y WindowsPGN "PGN prozor" 0 \
  {Otvori/zatvori PGN prozor (sa podacima o partiji)}
menuText Y WindowsPList "Player Finder" 2 {Open/close the player finder} ;# ***
menuText Y WindowsTmt "Turnir traga" 2 {Otvori/zatvori turnir traga}
menuText Y WindowsSwitcher "Bira baza" 0 \
  {Otvori/zatvori bira baza}
menuText Y WindowsMaint "Prozor odravanja" 0 \
  {Otvori/zatvori prozor odravanja}
menuText Y WindowsECO "EO prikaziva" 0 {Otvori/zatvori EO prikaziva}
menuText Y WindowsRepertoire "Editor repertoara otvaranja" 0 \
  {Otvori/zatvori editor repertoara otvaranja}
menuText Y WindowsStats "Statistiki prozor" 0 \
  {Otvori/zatvori prozor statistika filtera}
menuText Y WindowsTree "Stablo varijanata" 0 {Otvori/zatvori stablo varijanata}
menuText Y WindowsTB "Tabela zavrnica" 1 \
  {Otvori/zatvori tabelu zavrnica}
# ====== TODO To be translated ======
menuText Y WindowsBook "Book Window" 0 {Open/close the Book window}
# ====== TODO To be translated ======
menuText Y WindowsCorrChess "Correspondence Window" 0 {Open/close the Correspondence window}

# Tools menu:
menuText Y Tools "Alati" 0
menuText Y ToolsAnalysis "Program za analizu..." 0 \
  {Pokreni/zaustavi ahovski program za analizu}
menuText Y ToolsAnalysis2 "Program za analizu #2..." 17 \
  {Pokreni/zaustavi drugi ahovski program za analizu}
menuText Y ToolsCross "Tabela turnira" 0 {Pokai tabelu turnira za ovu partiju}
menuText Y ToolsEmail "Email menader" 0 \
  {Otvori/zatvori menader za korespodentske partije preko email-a}
menuText Y ToolsFilterGraph "Filter graph" 7 \
  {Open/close the filter graph window} ;# ***
# ====== TODO To be translated ======
menuText Y ToolsAbsFilterGraph "Abs. Filter Graph" 7 {Open/close the filter graph window for absolute values}
menuText Y ToolsOpReport "Izvetaj o otvaranjima" 0 \
  {Napravi izvetaj o otvaranjima za trenutnu poziciju}
# ====== TODO To be translated ======
menuText Y ToolsOpenBaseAsTree "Open base as tree" 0   {Open a base and use it in Tree window}
# ====== TODO To be translated ======
menuText Y ToolsOpenRecentBaseAsTree "Open recent base as tree" 0   {Open a recent base and use it in Tree window}
menuText Y ToolsTracker "Piece Tracker"  0 {Open the Piece Tracker window} ;# ***
# ====== TODO To be translated ======
menuText Y ToolsTraining "Training"  0 {Training tools (tactics, openings,...) }
# ====== TODO To be translated ======
menuText Y ToolsTacticalGame "Tactical game"  0 {Play a game with tactics}
# ====== TODO To be translated ======
menuText Y ToolsSeriousGame "Serious game"  0 {Play a serious game}
# ====== TODO To be translated ======
menuText Y ToolsTrainOpenings "Openings"  0 {Train with a repertoire}
# ====== TODO To be translated ======
menuText Y ToolsTrainReviewGame "Review game"  0 {Guess moves played in a game}
# ====== TODO To be translated ======
menuText Y ToolsTrainTactics "Tactics"  0 {Solve tactics}
# ====== TODO To be translated ======
menuText Y ToolsTrainCalvar "Calculation of variations"  0 {Calculation of variations training}
# ====== TODO To be translated ======
menuText Y ToolsTrainFindBestMove "Find best move"  0 {Find best move}
# ====== TODO To be translated ======
menuText Y ToolsTrainFics "Play on internet"  0 {Play on freechess.org}
# ====== TODO To be translated ======
menuText Y ToolsBookTuning "Book tuning" 0 {Book tuning}
# ====== TODO To be translated ======
menuText Y ToolsConnectHardware "Connect Hardware" 0 {Connect external hardware}
# ====== TODO To be translated ======
menuText Y ToolsConnectHardwareConfigure "Configure..." 0 {Configure external hardware and connection}
# ====== TODO To be translated ======
menuText Y ToolsConnectHardwareNovagCitrineConnect "Connect Novag Citrine" 0 {Connect Novag Citrine}
# ====== TODO To be translated ======
menuText Y ToolsConnectHardwareInputEngineConnect "Connect Input Engine" 0 {Connect Input Engine (e.g. DGT)}
menuText Y ToolsPInfo "Informacije o igrau"  0 \
  {Otvori/osvei informacije o igrau}
menuText Y ToolsPlayerReport "Player Report..." 3 \
  {Generate a player report} ;# ***
menuText Y ToolsRating "Grafikon rejtinga" 0 \
  {Iscrtava grafik istorije rejtinga igraa u tekuoj partiji}
menuText Y ToolsScore "Grafikon skora" 0 {Prikai grafikon skora}
menuText Y ToolsExpCurrent "Izvezi tekuu partiju" 8 \
  {Snimi tekuu partiju u tekstualni fajl}
menuText Y ToolsExpCurrentPGN "Izvezi partiju u PGN fajl..." 17 \
  {Snimi tekuu partiju u PGN fajl}
menuText Y ToolsExpCurrentHTML "Izvezi partiju u HTML fajl..." 17 \
  {Snimi tekuu partiju u HTML fajl}
# ====== TODO To be translated ======
menuText Y ToolsExpCurrentHTMLJS "Export Game to HTML and JavaScript File..." 15 {Write current game to a HTML and JavaScript file}  
menuText Y ToolsExpCurrentLaTeX "Izvezi partiju u LaTeX fajl..." 17 \
  {Snimi tekuu partiju u LaTeX fajl}
menuText Y ToolsExpFilter "Izvezi sve filtrirane partije" 1 \
  {Snimi sve filtrirane partije u tekstualni fajl}
menuText Y ToolsExpFilterPGN "Izvezi filtrirane partije u PGN fajl..." 28 \
  {Snimi sve filtrirane partije u PGN fajl}
menuText Y ToolsExpFilterHTML "Izvezi filtrirane partije u HTML fajl..." 28 \
  {Snimi sve filtrirane partije u HTML fajl}
# ====== TODO To be translated ======
menuText Y ToolsExpFilterHTMLJS "Export Filter to HTML and JavaScript File..." 17 {Write all filtered games to a HTML and JavaScript file}  
menuText Y ToolsExpFilterLaTeX "Izvezi filtrirane partije u LaTeX fajl..." 28 \
  {Snimi sve filtrirane partije u LaTeX fajl}
menuText Y ToolsImportOne "Uvezi jednu PGN partiju..." 0 \
  {Uvezi jednu partiju iz PGN fajla}
menuText Y ToolsImportFile "Uvezi vie PGN partija..." 6 \
  {Uvezi vie partija iz PGN fajla}
# ====== TODO To be translated ======
menuText Y ToolsStartEngine1 "Start engine 1" 0  {Start engine 1}
# ====== TODO To be translated ======
menuText Y ToolsStartEngine2 "Start engine 2" 0  {Start engine 2}
# ====== TODO To be translated ======
menuText Y ToolsCaptureBoard "Capture Current Board..." 0  {Save the current board as an image.}
# ====== TODO To be translated ======
menuText Y Play "Play" 0
# ====== TODO To be translated ======
menuText Y CorrespondenceChess "Correspondence Chess" 0 {Functions for eMail and Xfcc based correspondence chess}
# ====== TODO To be translated ======
menuText Y CCConfigure "Configure..." 0 {Configure external tools and general setup}
# ====== TODO To be translated ======
menuText Y CCConfigRelay "Configure observations..." 10 {Configure games to be observed}
# ====== TODO To be translated ======
menuText Y CCOpenDB "Open Database..." 0 {Open the default Correspondence database}
# ====== TODO To be translated ======
menuText Y CCRetrieve "Retrieve Games" 0 {Retrieve games via external (Xfcc-)helper}
# ====== TODO To be translated ======
menuText Y CCInbox "Process Inobx" 0 {Process all files in scids Inbox}
# ====== TODO To be translated ======
menuText Y CCSend "Send Move" 0 {Send your move via eMail or external (Xfcc-)helper}
# ====== TODO To be translated ======
menuText Y CCResign "Resign" 0 {Resign (not via eMail)}
# ====== TODO To be translated ======
menuText Y CCClaimDraw "Claim Draw" 0 {Send move and claim a draw (not via eMail)}
# ====== TODO To be translated ======
menuText Y CCOfferDraw "Offer Draw" 0 {Send move and offer a draw (not via eMail)}
# ====== TODO To be translated ======
menuText Y CCAcceptDraw "Accept Draw" 0 {Accept a draw offer (not via eMail)}
# ====== TODO To be translated ======
menuText Y CCNewMailGame "New eMail Game..." 0 {Start a new eMail game}
# ====== TODO To be translated ======
menuText Y CCMailMove "Mail Move..." 0 {Send the move via eMail to the opponent}
# ====== TODO To be translated ======
menuText Y CCGamePage "Game Page..." 0 {Call up the game via the web browser}
# ====== TODO To be translated ======
menuText Y CCEditCopy "Copy Gamelist to Clipbase" 0 {Copy the games as CSV list to clipbase}

# Options menu:
menuText Y Options "Opcije" 0
menuText Y OptionsBoard "Chessboard" 0 {Chess board appearance options} ;# ***
menuText Y OptionsBoardSize "Veliina table" 0 {Promeni veliinu table}
menuText Y OptionsBoardPieces "Board Piece Style" 6 \
  {Change the board piece style} ;# ***
menuText Y OptionsBoardColors "Boje" 0 {Promeni boje table}
# ====== TODO To be translated ======
menuText Y OptionsBoardGraphics "Squares..." 0 {Select textures for squares}
# ====== TODO To be translated ======
translate Y OptionsBGW {Select texture for squares}
# ====== TODO To be translated ======
translate Y OptionsBoardGraphicsText {Select graphic files for white and black squares:}
menuText Y OptionsBoardNames "My Player Names..." 0 {Edit my player names} ;# ***
menuText Y OptionsExport "Izvoz" 0 {Promeni opcije tekstualnog izvoza}
menuText Y OptionsFonts "Fontovi" 0 {Promeni fontove}
menuText Y OptionsFontsRegular "Obian" 0 {Promeni obian font}
menuText Y OptionsFontsMenu "Menu" 0 {Change the menu font} ;# ***
menuText Y OptionsFontsSmall "Mali" 0 {Promeni mali font}
# ====== TODO To be translated ======
menuText Y OptionsFontsTiny "Tiny" 0 {Change the tiny font}
menuText Y OptionsFontsFixed "Neproporcionalni" 0 {Promeni neproporcionalni font}
menuText Y OptionsGInfo "Informacije o Partiji" 0 {Opcije informacija o partiji}
menuText Y OptionsLanguage "Jezik" 0 {Izaberi jezik}
# ====== TODO To be translated ======
menuText Y OptionsMovesTranslatePieces "Translate pieces" 0 {Translate first letter of pieces}
# ====== TODO To be translated ======
menuText Y OptionsMovesHighlightLastMove "Highlight last move" 0 {Highlight last move}
# ====== TODO To be translated ======
menuText Y OptionsMovesHighlightLastMoveDisplay "Show" 0 {Display last move Highlight}
# ====== TODO To be translated ======
menuText Y OptionsMovesHighlightLastMoveWidth "Width" 0 {Thickness of line}
# ====== TODO To be translated ======
menuText Y OptionsMovesHighlightLastMoveColor "Color" 0 {Color of line}
menuText Y OptionsMoves "Potezi" 0 {Opcije unoenja poteza}
menuText Y OptionsMovesAsk "Pitaj pre zamene poteza" 0 \
  {Pitaj, da li se moe postojei zameniti novim potezom}
menuText Y OptionsMovesAnimate "Animation time" 1 \
  {Set the amount of time used to animate moves} ;# ***
menuText Y OptionsMovesDelay "Odlaganje izmeu poteza..." 1 \
  {Podesi vreme odlaganja pri automatskom pregledanju poteza}
menuText Y OptionsMovesCoord "Unoenje koordinata poteza" 0 \
  {Prihvati unoenje poteza pomou koordinata ("g1f3")}
menuText Y OptionsMovesSuggest "Pokai preporuene poteze" 0 \
  {Ukljui/iskljui preporuene poteze}
# ====== TODO To be translated ======
menuText Y OptionsShowVarPopup "Show variations window" 0 {Turn on/off the display of a variations window}  
# ====== TODO To be translated ======
menuText Y OptionsMovesSpace "Add spaces after move number" 0 {Add spaces after move number}  
menuText Y OptionsMovesKey "Dopunjavanje poteza" 0 \
  {Ukljui/iskljui dopunjavanje poteza zadatih tastaturom}
# ====== TODO To be translated ======
menuText Y OptionsMovesShowVarArrows "Show Arrows for Variations" 0 {Turn on/off arrows showing moves in variations}
menuText Y OptionsNumbers "Format brojeva" 0 {Izaberi format brojeva}
menuText Y OptionsStartup "Startup" 3 {Select windows to open at startup} ;# ***
# ====== TODO To be translated ======
menuText Y OptionsTheme "Theme" 0 {Change look of interface}
menuText Y OptionsWindows "Prozori" 0 {Opcije prozora}
menuText Y OptionsWindowsIconify "Auto-iconify" 5 \
  {Iconify all windows when the main window is iconified} ;# ***
menuText Y OptionsWindowsRaise "Auto podizanje" 0 \
  {Podigni odreene prozore kad god su pokriveni}
menuText Y OptionsSounds "Sounds..." 2 {Configure move announcement sounds} ;# ***
# ====== TODO To be translated ======
menuText Y OptionsWindowsDock "Dock windows" 0 {Dock windows}
# ====== TODO To be translated ======
menuText Y OptionsWindowsSaveLayout "Save layout" 0 {Save layout}
# ====== TODO To be translated ======
menuText Y OptionsWindowsRestoreLayout "Restore layout" 0 {Restore layout}
# ====== TODO To be translated ======
menuText Y OptionsWindowsShowGameInfo "Show game info" 0 {Show game info}
# ====== TODO To be translated ======
menuText Y OptionsWindowsAutoLoadLayout "Auto load first layout" 0 {Auto load first layout at startup}
menuText Y OptionsToolbar "Toolbar glavnog prozora" 12 \
  {Prikai/sakrij toolbar glavnog prozora}
menuText Y OptionsECO "Uitaj EO fajl..." 7 {Uitaj EO klasifikacioni fajl}
menuText Y OptionsSpell "Uitaj fajl za kontrolu pravopisa..." 13 \
  {Uitaj fajl za kontrolu pravopisa}
menuText Y OptionsTable "Direktorijum baza zavrnica..." 0 \
  {Izaberi fajl baze zavrnica; sve baze u direktorijumu e biti koriene}
menuText Y OptionsRecent "Recent files..." 0 \
  {Change the number of recent files displayed in the File menu} ;# ***
# ====== TODO To be translated ======
menuText Y OptionsBooksDir "Books directory..." 0 {Sets the opening books directory}
# ====== TODO To be translated ======
menuText Y OptionsTacticsBasesDir "Bases directory..." 0 {Sets the tactics (training) bases directory}
menuText Y OptionsSave "Sauvaj opcije" 0 \
  "Sauvaj sve opcije u fajl $::optionsFile"
menuText Y OptionsAutoSave "Auto-sauvaj opcije na izlasku" 0 \
  {Auto-sauvaj sve opcije pri izlasku iz Scid-a}

# Help menu:
menuText Y Help "Pomo" 2
menuText Y HelpContents "Contents" 0 {Show the help contents page} ;# ***
menuText Y HelpIndex "Sadraj" 0 {Prikai glavnu stranu pomoi}
menuText Y HelpGuide "Brzi vodi" 0 {Prikai brzi vodi}
menuText Y HelpHints "Saveti" 0 {Prikai savete}
menuText Y HelpContact "Kontakt" 0 {Prikai informacije o kontaktu}
menuText Y HelpTip "Tip of the day" 0 {Show a useful Scid tip} ;# ***
menuText Y HelpStartup "Startup prozor" 0 {Prikai startup prozor}
menuText Y HelpAbout "O programu Scid" 0 {Informacije o programu Scid}

# Game info box popup menu:
menuText Y GInfoHideNext "Sakrij sledei potez" 0
menuText Y GInfoMaterial "Prikai vrednosti materijala" 0
menuText Y GInfoFEN "Prikai FEN" 8
menuText Y GInfoMarks "Show colored squares and arrows" 5 ;# ***
menuText Y GInfoWrap "Prelomi dugake linije" 0
menuText Y GInfoFullComment "Show Full Comment" 10 ;# ***
menuText Y GInfoPhotos "Show Photos" 5 ;# ***
menuText Y GInfoTBNothing "Baza zavrnica: nita" 16
menuText Y GInfoTBResult "Baza zavrnica: samo rezultati" 16
menuText Y GInfoTBAll "Baza zavrnica: rezultat i najbolji potezi" 16
menuText Y GInfoDelete "Obrii/vrati ovu partiju" 0
menuText Y GInfoMark "Mark/Unmark this game" 0 ;# ***
# ====== TODO To be translated ======
menuText Y GInfoInformant "Configure informant values" 0

# Main window buttons:
helpMsg Y .main.fbutton.button.start {Idi na poetak partije  (taster: Home)}
helpMsg Y .main.fbutton.button.end {Idi na kraj partije  (taster: End)}
helpMsg Y .main.fbutton.button.back {Idi jedan potez nazad  (taster: Levo)}
helpMsg Y .main.fbutton.button.forward {Idi jedan potez napred  (taster: Desno)}
helpMsg Y .main.fbutton.button.intoVar {Prei na varijantu  (taster preica: v)}
helpMsg Y .main.fbutton.button.exitVar {Ostavi tekuu varijantu  (taster preica: z)}
helpMsg Y .main.fbutton.button.flip {Rotiraj tablu  (taster preica: .)}
helpMsg Y .main.fbutton.button.coords {Ukljui/iskljui koordinate table  (taster preica: 0)}
helpMsg Y .main.fbutton.button.stm {Turn the side-to-move icon on or off} ;# ***
helpMsg Y .main.fbutton.button.autoplay {Automatski menjaj poteze  (taster: Ctrl+Z)}

# General buttons:
translate Y Back {Nazad}
translate Y Browse {Browse} ;# ***
translate Y Cancel {Poniti}
# ====== TODO To be translated ======
translate Y Continue {Continue}
translate Y Clear {Oisti}
translate Y Close {Zatvori}
translate Y Contents {Contents} ;# ***
translate Y Defaults {Podrazumevano}
translate Y Delete {Obrii}
translate Y Graph {Grafikon}
translate Y Help {Pomo}
translate Y Import {Uvoz}
translate Y Index {Indeks}
translate Y LoadGame {Uitaj partiju}
translate Y BrowseGame {Browse game} ;# ***
translate Y MergeGame {Merge game} ;# ***
# ====== TODO To be translated ======
translate Y MergeGames {Merge Games}
translate Y Preview {Preview} ;# ***
translate Y Revert {Vrati se}
translate Y Save {Sauvaj}
translate Y Search {Trai}
translate Y Stop {Stop}
translate Y Store {Sauvaj}
translate Y Update {Osvei}
translate Y ChangeOrient {Promeni orijentaciju prozora}
translate Y ShowIcons {Show Icons} ;# ***
translate Y None {None} ;# ***
translate Y First {Prvu}
translate Y Current {Trenutna}
translate Y Last {Poslednju}

# General messages:
translate Y game {partija}
translate Y games {partije}
translate Y move {potez}
translate Y moves {potezi}
translate Y all {sve}
translate Y Yes {Da}
translate Y No {Ne}
translate Y Both {Oba}
translate Y King {Kralj}
translate Y Queen {Dama}
translate Y Rook {Top}
translate Y Bishop {Lovac}
translate Y Knight {Skaka}
translate Y Pawn {Peak}
translate Y White {Beli}
translate Y Black {Crni}
translate Y Player {Igra}
translate Y Rating {Rejting}
translate Y RatingDiff {Razlika u rejtingu (Beli - Crni)}
translate Y AverageRating {Average Rating} ;# ***
translate Y Event {Turnir}
translate Y Site {Mesto}
translate Y Country {Zemlja}
translate Y IgnoreColors {Ignorii boje}
translate Y Date {Datum}
translate Y EventDate {Datum turnira}
translate Y Decade {Decade} ;# ***
translate Y Year {Godina}
translate Y Month {Mesec}
translate Y Months {Januar Februar Mart April Maj Jun Jul Avgust Septembar Oktobar Novembar Decembar}
translate Y Days {Ned Pon Uto Sre et Pet Sub}
translate Y YearToToday {Godina do danas}
translate Y Result {Rezultat}
translate Y Round {Kolo}
translate Y Length {Duina}
translate Y ECOCode {EO kd}
translate Y ECO {EO}
translate Y Deleted {Izbrisano}
translate Y SearchResults {Trai rezultate}
translate Y OpeningTheDatabase {Otvaranje baze}
translate Y Database {Baza}
translate Y Filter {Filter}
translate Y noGames {ni jedna partija}
translate Y allGames {sve partije}
translate Y empty {prazno}
translate Y clipbase {clipbase}
translate Y score {skor}
translate Y StartPos {Poetna pozicija}
translate Y Total {Ukupno}
translate Y readonly {read-only} ;# ***

# Standard error messages:
translate Y ErrNotOpen {This is not an open database.} ;# ***
translate Y ErrReadOnly {This database is read-only; it cannot be altered.} ;# ***
translate Y ErrSearchInterrupted {Search was interrupted; results are incomplete.} ;# ***

# Game information:
translate Y twin {udvojena}
translate Y deleted {izbrisana}
translate Y comment {komentar}
translate Y hidden {sakrivena}
translate Y LastMove {Poslednji potez}
translate Y NextMove {Sledei}
translate Y GameStart {Poetak partije}
translate Y LineStart {Poetak serije poteza}
translate Y GameEnd {Kraj partije}
translate Y LineEnd {Kraj serije poteza}

# Player information:
translate Y PInfoAll {Rezultati <b>svih</b> partija}
translate Y PInfoFilter {Rezultati <b>filtriranih</b> partija}
translate Y PInfoAgainst {Rezultati protiv}
translate Y PInfoMostWhite {Najee igrana otvaranja sa belim figurama}
translate Y PInfoMostBlack {Najee igrana otvaranja sa crnim figurama}
translate Y PInfoRating {Istorija rejtinga}
translate Y PInfoBio {Biography} ;# ***
translate Y PInfoEditRatings {Edit Ratings} ;# ***

# Tablebase information:
translate Y Draw {Remi}
translate Y stalemate {pat}
translate Y withAllMoves {sa svim potezima}
translate Y withAllButOneMove {sa svim osim jednog poteza}
translate Y with {sa}
translate Y only {samo}
translate Y lose {gubi}
translate Y loses {gubi}
translate Y allOthersLose {svi ostali gube}
translate Y matesIn {matira u}
translate Y hasCheckmated {je matirao}
translate Y longest {najdui}
translate Y WinningMoves {Winning moves} ;# ***
translate Y DrawingMoves {Drawing moves} ;# ***
translate Y LosingMoves {Losing moves} ;# ***
translate Y UnknownMoves {Unknown-result moves} ;# ***

# Tip of the day:
translate Y Tip {Tip} ;# ***
translate Y TipAtStartup {Tip at startup} ;# ***

# Tree window menus:
menuText Y TreeFile "Fajl" 0
# ====== TODO To be translated ======
menuText Y TreeFileFillWithBase "Fill Cache with base" 0 {Fill the cache file with all games in current base}
# ====== TODO To be translated ======
menuText Y TreeFileFillWithGame "Fill Cache with game" 0 {Fill the cache file with current game in current base}
# ====== TODO To be translated ======
menuText Y TreeFileSetCacheSize "Cache size" 0 {Set the cache size}
# ====== TODO To be translated ======
menuText Y TreeFileCacheInfo "Cache info" 0 {Get info on cache usage}
menuText Y TreeFileSave "Sauvaj cache fajl" 0 {Sauvaj cache (.stc) fajl stabla}
menuText Y TreeFileFill "Ispuni cache fajl" 0 \
  {Ispuni cache fajl estim pozicijama otvaranja}
menuText Y TreeFileBest "Lista najboljih partija" 0 {Prikai listu najboljih partija stabla}
menuText Y TreeFileGraph "Prozor grafika" 0 {Prikai grafik za ovu granu stabla}
menuText Y TreeFileCopy "Kopiraj tekst stabla u clipboard" 0 \
  {Kopiraj statistike stabla u clipboard}
menuText Y TreeFileClose "Zatvori stablo varijanata" 0 {Zatvori prozor stabla}
# ====== TODO To be translated ======
menuText Y TreeMask "Mask" 0
# ====== TODO To be translated ======
menuText Y TreeMaskNew "New" 0 {New mask}
# ====== TODO To be translated ======
menuText Y TreeMaskOpen "Open" 0 {Open mask}
# ====== TODO To be translated ======
menuText Y TreeMaskOpenRecent "Open recent" 0 {Open recent mask}
# ====== TODO To be translated ======
menuText Y TreeMaskSave "Save" 0 {Save mask}
# ====== TODO To be translated ======
menuText Y TreeMaskClose "Close" 0 {Close mask}
# ====== TODO To be translated ======
menuText Y TreeMaskFillWithGame "Fill with game" 0 {Fill mask with game}
# ====== TODO To be translated ======
menuText Y TreeMaskFillWithBase "Fill with base" 0 {Fill mask with all games in base}
# ====== TODO To be translated ======
menuText Y TreeMaskInfo "Info" 0 {Show statistics for current mask}
# ====== TODO To be translated ======
menuText Y TreeMaskDisplay "Display mask map" 0 {Show mask data in a tree form}
# ====== TODO To be translated ======
menuText Y TreeMaskSearch "Search" 0 {Search in current mask}
menuText Y TreeSort "Sortiraj" 0
menuText Y TreeSortAlpha "Abecedno" 0
menuText Y TreeSortECO "EO kd" 0
menuText Y TreeSortFreq "Uestalost" 0
menuText Y TreeSortScore "Skor" 0
menuText Y TreeOpt "Opcije" 0
# ====== TODO To be translated ======
menuText Y TreeOptSlowmode "slow mode" 0 {Slow mode for updates (high accuracy)}
# ====== TODO To be translated ======
menuText Y TreeOptFastmode "Fast mode" 0 {Fast mode for updates (no move transposition)}
# ====== TODO To be translated ======
menuText Y TreeOptFastAndSlowmode "Fast and slow mode" 0 {Fast mode then slow mode for updates}
# ====== TODO To be translated ======
menuText Y TreeOptStartStop "Auto refreshing" 0 {Toggles automatic refreshing of the tree window}
menuText Y TreeOptLock "Zakljuaj" 0 {Zakljuaj/otkljuaj stablo za tekuu bazu}
menuText Y TreeOptTraining "Trening" 0 {Ukljui/iskljui trening mod stabla}
menuText Y TreeOptAutosave "Automatski sauvaj cache fajl" 0 \
  {Automatski sauvaj cache fajl pri zatvaranju prozora stabla}
menuText Y TreeHelp "Pomo" 0
menuText Y TreeHelpTree "Pomo za stablo" 0
menuText Y TreeHelpIndex "Sadraj pomoi" 0
translate Y SaveCache {Sauvaj cache}
translate Y Training {Trening}
translate Y LockTree {Zakljuaj}
translate Y TreeLocked {zakljuano}
translate Y TreeBest {Najbolje}
translate Y TreeBestGames {Najbolje partije stabla}
# Note: the next message is the tree window title row. After editing it,
# check the tree window to make sure it lines up with the actual columns.
translate Y TreeTitleRow \
  {    Move   ECO       Frequency    Score  AvElo Perf AvYear %Draws} ;# ***
translate Y TreeTotal {UKUPNO}
# ====== TODO To be translated ======
translate Y DoYouWantToSaveFirst {Do you want to save first}
# ====== TODO To be translated ======
translate Y AddToMask {Add to Mask}
# ====== TODO To be translated ======
translate Y RemoveFromMask {Remove from Mask}
# ====== TODO To be translated ======
translate Y AddThisMoveToMask {Add this move to Mask}
# ====== TODO To be translated ======
translate Y SearchMask {Search in Mask}
# ====== TODO To be translated ======
translate Y DisplayMask {Display Mask}
# ====== TODO To be translated ======
translate Y Nag {Nag code}
# ====== TODO To be translated ======
translate Y Marker {Marker}
# ====== TODO To be translated ======
translate Y Include {Include}
# ====== TODO To be translated ======
translate Y Exclude {Exclude}
# ====== TODO To be translated ======
translate Y MainLine {Main line}
# ====== TODO To be translated ======
translate Y Bookmark {Bookmark}
# ====== TODO To be translated ======
translate Y NewLine {New line}
# ====== TODO To be translated ======
translate Y ToBeVerified {To be verified}
# ====== TODO To be translated ======
translate Y ToTrain {To train}
# ====== TODO To be translated ======
translate Y Dubious {Dubious}
# ====== TODO To be translated ======
translate Y ToRemove {To remove}
# ====== TODO To be translated ======
translate Y NoMarker {No marker}
# ====== TODO To be translated ======
translate Y ColorMarker {Color}
# ====== TODO To be translated ======
translate Y WhiteMark {White}
# ====== TODO To be translated ======
translate Y GreenMark {Green}
# ====== TODO To be translated ======
translate Y YellowMark {Yellow}
# ====== TODO To be translated ======
translate Y BlueMark {Blue}
# ====== TODO To be translated ======
translate Y RedMark {Red}
# ====== TODO To be translated ======
translate Y CommentMove {Comment move}
# ====== TODO To be translated ======
translate Y CommentPosition {Comment position}
# ====== TODO To be translated ======
translate Y AddMoveToMaskFirst {Add move to mask first}
# ====== TODO To be translated ======
translate Y OpenAMaskFileFirst {Open a mask file first}
# ====== TODO To be translated ======
translate Y Positions {Positions}
# ====== TODO To be translated ======
translate Y Moves {Moves}

# Finder window:
menuText Y FinderFile "Fajl" 0
menuText Y FinderFileSubdirs "Pogledaj u poddirektorijumima" 0
menuText Y FinderFileClose "Zatvori Fajl traga" 0
menuText Y FinderSort "Sortiraj" 0
menuText Y FinderSortType "Tip" 0
menuText Y FinderSortSize "Veliina" 0
menuText Y FinderSortMod "Modifikovano" 0
menuText Y FinderSortName "Ime" 0
menuText Y FinderSortPath "Staza" 0
menuText Y FinderTypes "Tipovi" 0
menuText Y FinderTypesScid "Scid baze" 0
menuText Y FinderTypesOld "Scid baze u starom formatu" 0
menuText Y FinderTypesPGN "PGN fajlovi" 0
menuText Y FinderTypesEPD "EPD (book) fajlovi" 0
menuText Y FinderTypesRep "Repertoar fajlovi" 0
menuText Y FinderHelp "Pomo" 0
menuText Y FinderHelpFinder "Pomo - Fajl traga" 0
menuText Y FinderHelpIndex "Sadraj pomoi" 0
translate Y FileFinder {Fajl traga}
translate Y FinderDir {Direktorijum}
translate Y FinderDirs {Direktorijumi}
translate Y FinderFiles {Fajlovi}
translate Y FinderUpDir {gore}
# ====== TODO To be translated ======
translate Y FinderCtxOpen {Open}
# ====== TODO To be translated ======
translate Y FinderCtxBackup {Backup}
# ====== TODO To be translated ======
translate Y FinderCtxCopy {Copy}
# ====== TODO To be translated ======
translate Y FinderCtxMove {Move}
# ====== TODO To be translated ======
translate Y FinderCtxDelete {Delete}

# Player finder:
menuText Y PListFile "Fajl" 0
menuText Y PListFileUpdate "Osvei" 0
menuText Y PListFileClose "Close Player Finder" 0 ;# ***
menuText Y PListSort "Sortiraj" 0
menuText Y PListSortName "Name" 0 ;# ***
menuText Y PListSortElo "Elo" 0
menuText Y PListSortGames "Partije" 0
menuText Y PListSortOldest "Oldest" 0 ;# ***
menuText Y PListSortNewest "Newest" 0 ;# ***

# Tournament finder:
menuText Y TmtFile "Fajl" 0
menuText Y TmtFileUpdate "Osvei" 0
menuText Y TmtFileClose "Zatvori Turnir traga" 0
menuText Y TmtSort "Sortiraj" 0
menuText Y TmtSortDate "Datum" 0
menuText Y TmtSortPlayers "Igrai" 0
menuText Y TmtSortGames "Partije" 0
menuText Y TmtSortElo "Elo" 0
menuText Y TmtSortSite "Mesto" 0
menuText Y TmtSortEvent "Turnir" 1
menuText Y TmtSortWinner "Pobednik" 0
translate Y TmtLimit "Ogranienje liste"
translate Y TmtMeanElo "Najnii Elo"
translate Y TmtNone "Nije pronaen odgovarajui turnir."

# Graph windows:
menuText Y GraphFile "Fajl" 0
menuText Y GraphFileColor "Sauvaj kao Postscript u boji..." 25
menuText Y GraphFileGrey "Sauvaj kao Postscript u sivim nivoima..." 25
menuText Y GraphFileClose "Zatvori prozor" 6
menuText Y GraphOptions "Opcije" 0
menuText Y GraphOptionsWhite "Beli" 0
menuText Y GraphOptionsBlack "Crni" 0
menuText Y GraphOptionsBoth "Oba" 1
menuText Y GraphOptionsPInfo "Informacije o igrau" 0
translate Y GraphFilterTitle "Filter graph: frequency per 1000 games" ;# ***
# ====== TODO To be translated ======
translate Y GraphAbsFilterTitle "Filter Graph: frequency of the games"
# ====== TODO To be translated ======
translate Y ConfigureFilter {Configure X-Axes for Year, Rating and Moves}
# ====== TODO To be translated ======
translate Y FilterEstimate "Estimate"
# ====== TODO To be translated ======
translate Y TitleFilterGraph "Scid: Filter Graph"

# Analysis window:
translate Y AddVariation {Dodaj varijantu}
# ====== TODO To be translated ======
translate Y AddAllVariations {Add All Variations}
translate Y AddMove {Dodaj potez}
translate Y Annotate {Dodaj napomenu}
# ====== TODO To be translated ======
translate Y ShowAnalysisBoard {Show analysis board}
# ====== TODO To be translated ======
translate Y ShowInfo {Show engine info}
# ====== TODO To be translated ======
translate Y FinishGame {Finish game}
# ====== TODO To be translated ======
translate Y StopEngine {Stop engine}
# ====== TODO To be translated ======
translate Y StartEngine {Start engine}
# ====== TODO To be translated ======
translate Y LockEngine {Lock engine to current position}
translate Y AnalysisCommand {Komanda analize}
translate Y PreviousChoices {Prethodni izbori}
translate Y AnnotateTime {Set the time between moves in seconds} ;# ***
translate Y AnnotateWhich {Add variations} ;# ***
translate Y AnnotateAll {For moves by both sides} ;# ***
# ====== TODO To be translated ======
translate Y AnnotateAllMoves {Annotate all moves}
translate Y AnnotateWhite {For White moves only} ;# ***
translate Y AnnotateBlack {For Black moves only} ;# ***
# ====== TODO To be translated ======
translate Y AnnotateBlundersOnly {When game move is an obvious blunder}
# ====== TODO To be translated ======
translate Y AnnotateBlundersOnlyScoreChange {Analysis reports blunder, with score change from/to: }
# ====== TODO To be translated ======
translate Y BlundersThreshold {Threshold}
# TODO: Translate
translate Y ScoreAllMoves {Score all moves}
translate Y LowPriority {Low CPU priority} ;# ***
# ====== TODO To be translated ======
translate Y ClickHereToSeeMoves {Click here to see moves}
# ====== TODO To be translated ======
translate Y ConfigureInformant {Configure Informant}
# ====== TODO To be translated ======
translate Y Informant!? {Interesting move}
# ====== TODO To be translated ======
translate Y Informant? {Poor move}
# ====== TODO To be translated ======
translate Y Informant?? {Blunder}
# ====== TODO To be translated ======
translate Y Informant?! {Dubious move}
# ====== TODO To be translated ======
translate Y Informant+= {White has a slight advantage}
# ====== TODO To be translated ======
translate Y Informant+/- {White has a moderate advantage}
# ====== TODO To be translated ======
translate Y Informant+- {White has a decisive advantage}
# ====== TODO To be translated ======
translate Y Informant++- {The game is considered won}
# ====== TODO To be translated ======
translate Y Book {Book}
# ====== TODO To be translated ======
translate Y OtherBookMoves {Opponent's book}
# ====== TODO To be translated ======
translate Y OtherBookMovesTooltip {Moves to which the opponent has a reply}

# Analysis Engine open dialog:
translate Y EngineList {Analysis Engine List} ;# ***
translate Y EngineName {Name} ;# ***
translate Y EngineCmd {Command} ;# ***
translate Y EngineArgs {Parameters} ;# ***
translate Y EngineDir {Directory} ;# ***
translate Y EngineElo {Elo}
translate Y EngineTime {Datum}
translate Y EngineNew {New} ;# ***
translate Y EngineEdit {Edit} ;# ***
translate Y EngineRequired {Fields in bold are required; others are optional} ;# ***

# Stats window menus:
menuText Y StatsFile "Fajl" 0
menuText Y StatsFilePrint "Print to file..." 0 ;# ***
menuText Y StatsFileClose "Close window" 0 ;# ***
menuText Y StatsOpt "Opcije" 0

# PGN window menus:
menuText Y PgnFile "Fajl" 0
menuText Y PgnFileCopy "Copy Game to Clipboard" 0 ;# ***
menuText Y PgnFilePrint "tampaj u fajl..." 1
menuText Y PgnFileClose "Zatvori PGN prozor" 0
menuText Y PgnOpt "Prikaz" 0
menuText Y PgnOptColor "Prikaz u boji" 0
menuText Y PgnOptShort "Kratko (3-linije) zaglavlje" 0
menuText Y PgnOptSymbols "Simboliki komentari" 0
menuText Y PgnOptIndentC "Uvuci pasus kod komentara" 0
menuText Y PgnOptIndentV "Uvuci pasus kod varijanata" 16
menuText Y PgnOptColumn "Pasus stil (jedan potez po liniji)" 1
menuText Y PgnOptSpace "Blanko posle broja poteza" 0
menuText Y PgnOptStripMarks "Strip out colored square/arrow codes" 1 ;# ***
menuText Y PgnOptBoldMainLine "Use Bold Text for Main Line Moves" 4 ;# ***
menuText Y PgnColor "Boje" 0
menuText Y PgnColorHeader "Zaglavlje..." 0
menuText Y PgnColorAnno "Napomene..." 0
menuText Y PgnColorComments "Komentari..." 0
menuText Y PgnColorVars "Varijante..." 0
menuText Y PgnColorBackground "Pozadina..." 0
# ====== TODO To be translated ======
menuText Y PgnColorMain "Main line..." 0
# ====== TODO To be translated ======
menuText Y PgnColorCurrent "Current move background..." 1
# ====== TODO To be translated ======
menuText Y PgnColorNextMove "Next move background..." 0
menuText Y PgnHelp "Pomo" 1
menuText Y PgnHelpPgn "PGN pomo" 0
menuText Y PgnHelpIndex "Sadraj" 0
translate Y PgnWindowTitle {Game Notation - game %u} ;# ***

# Crosstable window menus:
menuText Y CrosstabFile "Fajl" 0
menuText Y CrosstabFileText "tampaj u Tekst fajl..." 10
menuText Y CrosstabFileHtml "tampaj u HTML fajl..." 10
menuText Y CrosstabFileLaTeX "tampaj u LaTeX fajl..." 10
menuText Y CrosstabFileClose "Zatvori tabelu turnira" 0
menuText Y CrosstabEdit "Izmena" 0
menuText Y CrosstabEditEvent "Turnir" 0
menuText Y CrosstabEditSite "Mesto" 0
menuText Y CrosstabEditDate "Datum" 0
menuText Y CrosstabOpt "Prikaz" 0
menuText Y CrosstabOptAll "Svako sa svakim" 0
menuText Y CrosstabOptSwiss "vajcarski sistem" 0
menuText Y CrosstabOptKnockout "Nokaut" 0
menuText Y CrosstabOptAuto "Auto" 0 ;# ***
menuText Y CrosstabOptAges "Starost u godinama" 10
menuText Y CrosstabOptNats "Narodnost" 0
menuText Y CrosstabOptRatings "Rejtinzi" 0
menuText Y CrosstabOptTitles "Titule" 0
menuText Y CrosstabOptBreaks "Tie-break rezultati" 4
menuText Y CrosstabOptDeleted "Include deleted games" 8 ;# ***
menuText Y CrosstabOptColors "Boje (samo za vajcarski sistem)" 0
menuText Y CrosstabOptColumnNumbers "Numbered columns (All-play-all table only)" 2 ;# ***
menuText Y CrosstabOptGroup "Grupii rezultate" 0
menuText Y CrosstabSort "Sortiraj" 0
menuText Y CrosstabSortName "Ime" 0
menuText Y CrosstabSortRating "Rejting" 0
menuText Y CrosstabSortScore "Rezultat" 0
menuText Y CrosstabColor "Boja" 0
menuText Y CrosstabColorPlain "Obian tekst" 0
menuText Y CrosstabColorHyper "Hipertekst" 0
menuText Y CrosstabHelp "Pomo" 0
menuText Y CrosstabHelpCross "Pomo - Tabela turnira" 0
menuText Y CrosstabHelpIndex "Sadraj pomoi" 0
translate Y SetFilter {Postavi filter}
translate Y AddToFilter {Dodaj u filter}
translate Y Swiss {vajcarski sistem}
translate Y Category {Category} ;# ***

# Opening report window menus:
menuText Y OprepFile "Fajl" 0
menuText Y OprepFileText "tampaj u Tekst fajl..." 10
menuText Y OprepFileHtml "tampaj u HTML fajl..." 10
menuText Y OprepFileLaTeX "tampaj u LaTeX fajl..." 10
menuText Y OprepFileOptions "Opcije..." 0
menuText Y OprepFileClose "Zatvori izvetaj o otvaranjima" 0
menuText Y OprepFavorites "Favorites" 1 ;# ***
menuText Y OprepFavoritesAdd "Add Report..." 0 ;# ***
menuText Y OprepFavoritesEdit "Edit Report Favorites..." 0 ;# ***
menuText Y OprepFavoritesGenerate "Generate Reports..." 0 ;# ***
menuText Y OprepHelp "Pomo" 0
menuText Y OprepHelpReport "Pomo - Izvetaj o otvaranjima" 0
menuText Y OprepHelpIndex "Sadraj pomoi" 0

# Repertoire editor:
menuText Y RepFile "File" 0
menuText Y RepFileNew "Novi" 0
menuText Y RepFileOpen "Otvori..." 0
menuText Y RepFileSave "Sauvaj..." 0
menuText Y RepFileSaveAs "Sauvaj kao..." 9
menuText Y RepFileClose "Zatvori prozor" 0
menuText Y RepEdit "Izmena" 0
menuText Y RepEditGroup "Dodaj grupu" 6
menuText Y RepEditInclude "Dodaj ukljuenu liniju" 6
menuText Y RepEditExclude "Dodaj iskljuenu liniju" 6
menuText Y RepView "Prikaz" 0
menuText Y RepViewExpand "Razgranaj sve grupe" 0
menuText Y RepViewCollapse "Sami sve grupe" 0
menuText Y RepSearch "Pretrai" 3
menuText Y RepSearchAll "Ceo repertoar..." 0
menuText Y RepSearchDisplayed "Samo prikazane linije..." 0
menuText Y RepHelp "Pomo" 1
menuText Y RepHelpRep "Pomo - repertoar" 0
menuText Y RepHelpIndex "Sadraj pomoi" 0
translate Y RepSearch "Pretraga repertoara"
translate Y RepIncludedLines "ukljuene linije"
translate Y RepExcludedLines "iskljuene linije"
translate Y RepCloseDialog {Ovaj repertoar ima nesauvane izmene.

Da li zaista elite da nastavite i odbacite izmene koje ste napravili?
}

# Header search:
translate Y HeaderSearch {Pretraga zaglavlja}
translate Y EndSideToMove {Side to move at end of game} ;# ***
translate Y GamesWithNoECO {Partije bez EO-a?}
translate Y GameLength {Duina partije}
translate Y FindGamesWith {Pronai partije sa}
translate Y StdStart {standardnim poetkom}
translate Y Promotions {sa promocijama}
translate Y Comments {Komentari}
translate Y Variations {Varijante}
translate Y Annotations {Napomene}
translate Y DeleteFlag {Znak za brisanje}
translate Y WhiteOpFlag {Otvaranje belog}
translate Y BlackOpFlag {Otvaranje crnog}
translate Y MiddlegameFlag {Sredinjica}
translate Y EndgameFlag {Zavrnica}
translate Y NoveltyFlag {Novost}
translate Y PawnFlag {Peaka struktura}
translate Y TacticsFlag {Taktika}
translate Y QsideFlag {Igra na daminom krilu}
translate Y KsideFlag {Igra na kraljevom krilu}
translate Y BrilliancyFlag {Brilijantnost}
translate Y BlunderFlag {Greka}
translate Y UserFlag {Korisnik}
translate Y PgnContains {PGN contains text} ;# ***
# ====== TODO To be translated ======
translate Y Annotator {Annotator}
# ====== TODO To be translated ======
translate Y Cmnts {Annotated games only}

# Game list window:
translate Y GlistNumber {Broj}
translate Y GlistWhite {Beli}
translate Y GlistBlack {Crni}
translate Y GlistWElo {B-Elo}
translate Y GlistBElo {C-Elo}
translate Y GlistEvent {Turnir}
translate Y GlistSite {Mesto}
translate Y GlistRound {Kolo}
translate Y GlistDate {Datum}
translate Y GlistYear {Year}
translate Y GlistEDate {Datum turnira}
translate Y GlistResult {Rezultat}
translate Y GlistLength {Duina}
translate Y GlistCountry {Zemlja}
translate Y GlistECO {EO}
translate Y GlistOpening {Otvaranje}
translate Y GlistEndMaterial {End-Material} ;# ***
translate Y GlistDeleted {Izbrisano}
translate Y GlistFlags {Oznaka}
translate Y GlistVars {Varijante}
translate Y GlistComments {Komentari}
translate Y GlistAnnos {Napomene}
translate Y GlistStart {Start} ;# ***
translate Y GlistGameNumber {Broj partije}
# ====== TODO To be translated ======
translate Y GlistAverageElo {Average Elo}
# ====== TODO To be translated ======
translate Y GlistRating {Rating}
translate Y GlistFindText {Nai tekst}
translate Y GlistMoveField {Move} ;# ***
translate Y GlistEditField {Configure} ;# ***
translate Y GlistAddField {Add} ;# ***
translate Y GlistDeleteField {Remove} ;# ***
translate Y GlistWidth {Width} ;# ***
translate Y GlistAlign {Align} ;# ***
# ====== TODO To be translated ======
translate Y GlistAlignL {Align: left}
# ====== TODO To be translated ======
translate Y GlistAlignR {Align: right}
# ====== TODO To be translated ======
translate Y GlistAlignC {Align: center}
translate Y GlistColor {Color} ;# ***
translate Y GlistSep {Separator} ;# ***
# ====== TODO To be translated ======
translate Y GlistCurrentSep {-- Current --}
# ====== TODO To be translated ======
translate Y GlistNewSort {New}
# ====== TODO To be translated ======
translate Y GlistAddToSort {Add}
# ====== TODO To be translated ======
translate Y GsortSort {Sort...}
# ====== TODO To be translated ======
translate Y GsortDate {Date}
# ====== TODO To be translated ======
translate Y GsortYear {Year}
# ====== TODO To be translated ======
translate Y GsortEvent {Event}
# ====== TODO To be translated ======
translate Y GsortSite {Site}
# ====== TODO To be translated ======
translate Y GsortRound {Round}
# ====== TODO To be translated ======
translate Y GsortWhiteName {White Name}
# ====== TODO To be translated ======
translate Y GsortBlackName {Black Name}
# ====== TODO To be translated ======
translate Y GsortECO {ECO}
# ====== TODO To be translated ======
translate Y GsortResult {Result}
# ====== TODO To be translated ======
translate Y GsortMoveCount {Move Count}
# ====== TODO To be translated ======
translate Y GsortAverageElo {Average Elo}
# ====== TODO To be translated ======
translate Y GsortCountry {Country}
# ====== TODO To be translated ======
translate Y GsortDeleted {Deleted}
# ====== TODO To be translated ======
translate Y GsortEventDate {Event Date}
# ====== TODO To be translated ======
translate Y GsortWhiteElo {White Elo}
# ====== TODO To be translated ======
translate Y GsortBlackElo {Black Elo}
# ====== TODO To be translated ======
translate Y GsortComments {Comments}
# ====== TODO To be translated ======
translate Y GsortVariations {Variations}
# ====== TODO To be translated ======
translate Y GsortNAGs {NAGs}
# ====== TODO To be translated ======
translate Y GsortAscending {Ascending}
# ====== TODO To be translated ======
translate Y GsortDescending {Descending}
# ====== TODO To be translated ======
translate Y GsortAdd {Add}
# ====== TODO To be translated ======
translate Y GsortStore {Store}
# ====== TODO To be translated ======
translate Y GsortLoad {Load}
# ====== TODO To be translated ======
translate Y GlistRemoveThisGameFromFilter  {Remove this game from Filter}
# ====== TODO To be translated ======
translate Y GlistRemoveGameAndAboveFromFilter  {Remove game (and all above it) from Filter}
# ====== TODO To be translated ======
translate Y GlistRemoveGameAndBelowFromFilter  {Remove game (and all below it) from Filter}
# ====== TODO To be translated ======
translate Y GlistDeleteGame {(Un)Delete this game} 
# ====== TODO To be translated ======
translate Y GlistDeleteAllGames {Delete all games in filter} 
# ====== TODO To be translated ======
translate Y GlistUndeleteAllGames {Undelete all games in filter} 
# ====== TODO To be translated ======
translate Y GlistMergeGameInBase {Merge Game in other base} 

# Maintenance window:
translate Y DatabaseName {Ime baze:}
translate Y TypeIcon {Ikona:}
translate Y NumOfGames {Partija:}
translate Y NumDeletedGames {Obrisanih partija:}
translate Y NumFilterGames {Partija u filteru:}
translate Y YearRange {Raspon godina:}
translate Y RatingRange {Raspon rejtinga:}
translate Y Description {Description} ;# ***
translate Y Flag {Oznaka}
# ====== TODO To be translated ======
translate Y CustomFlags {Custom flags}
translate Y DeleteCurrent {Obrii tekuu partiju}
translate Y DeleteFilter {Obrii filtrirane partije}
translate Y DeleteAll {Obrii sve partije}
translate Y UndeleteCurrent {Obnovi tekuu partiju}
translate Y UndeleteFilter {Obnovi filtrirane partije}
translate Y UndeleteAll {Obnovi sve partije}
translate Y DeleteTwins {Obrii udvojene partije}
translate Y MarkCurrent {Markiraj tekuu partiju}
translate Y MarkFilter {Markiraj filtrirane partije}
translate Y MarkAll {Markiraj sve partije}
translate Y UnmarkCurrent {Demarkiraj tekuu partiju}
translate Y UnmarkFilter {Demarkiraj filtrirane partije}
translate Y UnmarkAll {Demarkiraj sve partije}
translate Y Spellchecking {Provera pravopisa}
translate Y Players {Igrai}
translate Y Events {Turniri}
translate Y Sites {Mesta}
translate Y Rounds {Kola}
translate Y DatabaseOps {Operacije sa bazom}
translate Y ReclassifyGames {Klasifikuj partije po EO}
translate Y CompactDatabase {Komprimuj bazu}
translate Y SortDatabase {Sortiraj bazu}
translate Y AddEloRatings {Dodaj Elo rejtinge}
translate Y AutoloadGame {Autoload game number} ;# ***
translate Y StripTags {Strip PGN tags} ;# ***
translate Y StripTag {Strip tag} ;# ***
translate Y Cleaner {ista}
translate Y CleanerHelp {
Scid ista e da primeni sve akcije odravanja koje izaberete iz donje liste, na tekuu bazu.

Trenutna podeavanja u dijalozima EO klasifikacija i brisanje udvojenih partija e se primeniti ako ste izabrali te funkcije.
}
translate Y CleanerConfirm {
Kada je ista jednom pokrenut, ne moe se prekinuti!

Ovo moe potrajati na velikoj bazi, zavisno od funkcija koje ste izabrali i njihovih trenutnih podeavanja.

Da li ste sigurni da elite da ponete funkcije odravanja koje ste izabrali?
}
# ====== TODO To be translated ======
translate Y TwinCheckUndelete {to flip; "u" undeletes both)}
# ====== TODO To be translated ======
translate Y TwinCheckprevPair {Previous pair}
# ====== TODO To be translated ======
translate Y TwinChecknextPair {Next pair}
# ====== TODO To be translated ======
translate Y TwinChecker {Scid: Twin game checker}
# ====== TODO To be translated ======
translate Y TwinCheckTournament {Games in tournament:}
# ====== TODO To be translated ======
translate Y TwinCheckNoTwin {No twin  }
# ====== TODO To be translated ======
translate Y TwinCheckNoTwinfound {No twin was detected for this game.\nTo show twins using this window, you must first use the "Delete twin games..." function. }
# ====== TODO To be translated ======
translate Y TwinCheckTag {Share tags...}
# ====== TODO To be translated ======
translate Y TwinCheckFound1 {Scid found $result twin games}
# ====== TODO To be translated ======
translate Y TwinCheckFound2 { and set their delete flags}
# ====== TODO To be translated ======
translate Y TwinCheckNoDelete {There are no games in this database to delete.}
# ====== TODO To be translated ======
translate Y TwinCriteria1 { Your settings for finding twin games are potentially likely to\ncause non-twin games with similar moves to be marked as twins.}
# ====== TODO To be translated ======
translate Y TwinCriteria2 {It is recommended that if you select "No" for "same moves", you should select "Yes" for the colors, event, site, round, year and month settings.\nDo you want to continue and delete twins anyway? }
# ====== TODO To be translated ======
translate Y TwinCriteria3 {It is recommended that you specify "Yes" for at least two of the "same site", "same round" and "same year" settings.\nDo you want to continue and delete twins anyway?}
# ====== TODO To be translated ======
translate Y TwinCriteriaConfirm {Scid: Confirm twin settings}
# ====== TODO To be translated ======
translate Y TwinChangeTag "Change the following game tags:\n\n"
# ====== TODO To be translated ======
translate Y AllocRatingDescription "This command will use the current spellcheck file to add Elo ratings to games in this database. Wherever a player has no currrent rating but his/her rating at the time of the game is listed in the spellcheck file, that rating will be added."
# ====== TODO To be translated ======
translate Y RatingOverride "Overwrite existing non-zero ratings?"
# ====== TODO To be translated ======
translate Y AddRatings "Add ratings to:"
# ====== TODO To be translated ======
translate Y AddedRatings {Scid added $r Elo ratings in $g games.}
# ====== TODO To be translated ======
translate Y NewSubmenu "New submenu"

# Comment editor:
translate Y AnnotationSymbols  {Simboli napomena:}
translate Y Comment {Komentari:}
translate Y InsertMark {Insert mark} ;# ***
translate Y InsertMarkHelp {
Insert/remove mark: Select color, type, square.
Insert/remove arrow: Right-click two squares.
} ;# ***

# Nag buttons in comment editor:
translate Y GoodMove {Good move} ;# ***
translate Y PoorMove {Poor move} ;# ***
translate Y ExcellentMove {Excellent move} ;# ***
translate Y Blunder {Blunder} ;# ***
translate Y InterestingMove {Interesting move} ;# ***
translate Y DubiousMove {Dubious move} ;# ***
translate Y WhiteDecisiveAdvantage {White has a decisive advantage} ;# ***
translate Y BlackDecisiveAdvantage {Black has a decisive advantage} ;# ***
translate Y WhiteClearAdvantage {White has a clear advantage} ;# ***
translate Y BlackClearAdvantage {Black has a clear advantage} ;# ***
translate Y WhiteSlightAdvantage {White has a slight advantage} ;# ***
translate Y BlackSlightAdvantage {Black has a slight advantage} ;# ***
translate Y Equality {Equality} ;# ***
translate Y Unclear {Unclear} ;# ***
translate Y Diagram {Diagram} ;# ***

# Board search:
translate Y BoardSearch {Pretraga po poziciji}
translate Y FilterOperation {Operacije na tekuem filteru:}
translate Y FilterAnd {I (Ogranii filter)}
translate Y FilterOr {ILI (Dodaj u filter)}
translate Y FilterIgnore {IGNORII (Resetuj filter)}
translate Y SearchType {Tip pretrage:}
translate Y SearchBoardExact {Ista pozicija (sve figure na istim poljima)}
translate Y SearchBoardPawns {Peaci (isti materijal, svi peaci na istim poljima)}
translate Y SearchBoardFiles {Linije (isti materijal, svi peaci na istim linijama)}
translate Y SearchBoardAny {Materijal (isti materijal, peaci i figure bilo gde)}
# ====== TODO To be translated ======
translate Y SearchInRefDatabase { Search in base }
translate Y LookInVars {Pogledaj u varijantama}

# Material search:
translate Y MaterialSearch {Pretraga po materijalu}
translate Y Material {Materijal}
translate Y Patterns {Pozicije}
translate Y Zero {Nita}
translate Y Any {Bilo koje}
translate Y CurrentBoard {Trenutna pozicija}
translate Y CommonEndings {Tipine zavrnice}
translate Y CommonPatterns {Tipine pozicije}
translate Y MaterialDiff {Material difference} ;# ***
translate Y squares {polja}
translate Y SameColor {Ista boja}
translate Y OppColor {Suprotna boja}
translate Y Either {Oba}
translate Y MoveNumberRange {Raspon broja poteza}
translate Y MatchForAtLeast {Nai za najmanje}
translate Y HalfMoves {polupoteza}

# Common endings in material search:
translate Y EndingPawns {Pawn endings} ;# ***
translate Y EndingRookVsPawns {Rook vs. Pawn(s)} ;# ***
translate Y EndingRookPawnVsRook {Rook and 1 Pawn vs. Rook} ;# ***
translate Y EndingRookPawnsVsRook {Rook and Pawn(s) vs. Rook} ;# ***
translate Y EndingRooks {Rook vs. Rook endings} ;# ***
translate Y EndingRooksPassedA {Rook vs. Rook endings with a passed a-pawn} ;# ***
translate Y EndingRooksDouble {Double Rook endings} ;# ***
translate Y EndingBishops {Bishop vs. Bishop endings} ;# ***
translate Y EndingBishopVsKnight {Bishop vs. Knight endings} ;# ***
translate Y EndingKnights {Knight vs. Knight endings} ;# ***
translate Y EndingQueens {Queen vs. Queen endings} ;# ***
translate Y EndingQueenPawnVsQueen {Queen and 1 Pawn vs. Queen} ;# ***
translate Y BishopPairVsKnightPair {Two Bishops vs. Two Knights middlegame} ;# ***

# Common patterns in material search:
translate Y PatternWhiteIQP {White IQP} ;# ***
translate Y PatternWhiteIQPBreakE6 {White IQP: d4-d5 break vs. e6} ;# ***
translate Y PatternWhiteIQPBreakC6 {White IQP: d4-d5 break vs. c6} ;# ***
translate Y PatternBlackIQP {Black IQP} ;# ***
translate Y PatternWhiteBlackIQP {White IQP vs. Black IQP} ;# ***
translate Y PatternCoupleC3D4 {White c3+d4 Isolated Pawn Couple} ;# ***
translate Y PatternHangingC5D5 {Black Hanging Pawns on c5 and d5} ;# ***
translate Y PatternMaroczy {Maroczy Center (with Pawns on c4 and e4)} ;# ***
translate Y PatternRookSacC3 {Rook Sacrifice on c3} ;# ***
translate Y PatternKc1Kg8 {O-O-O vs. O-O (Kc1 vs. Kg8)} ;# ***
translate Y PatternKg1Kc8 {O-O vs. O-O-O (Kg1 vs. Kc8)} ;# ***
translate Y PatternLightFian {Light-Square Fianchettos (Bishop-g2 vs. Bishop-b7)} ;# ***
translate Y PatternDarkFian {Dark-Square Fianchettos (Bishop-b2 vs. Bishop-g7)} ;# ***
translate Y PatternFourFian {Four Fianchettos (Bishops on b2,g2,b7,g7)} ;# ***

# Game saving:
translate Y Today {Danas}
translate Y ClassifyGame {Klasifikuj partiju}

# Setup position:
translate Y EmptyBoard {Isprazni tablu}
translate Y InitialBoard {Poetna pozicija}
translate Y SideToMove {Na potezu je}
translate Y MoveNumber {Broj poteza}
translate Y Castling {Rokada}
translate Y EnPassantFile {En Passant linija}
translate Y ClearFen {Oisti FEN}
translate Y PasteFen {Prenesi FEN}
# ====== TODO To be translated ======
translate Y SaveAndContinue {Save and continue}
# ====== TODO To be translated ======
translate Y DiscardChangesAndContinue {Discard changes\nand continue}
# ====== TODO To be translated ======
translate Y GoBack {Go back}

# Replace move dialog:
translate Y ReplaceMove {Zameni potez}
translate Y AddNewVar {Dodaj novu varijantu}
# ====== TODO To be translated ======
translate Y NewMainLine {New Main Line}
translate Y ReplaceMoveMessage {Ovde ve postoji potez.

Moete ga zameniti, odbacujui sve poteze posle njega, ili dodajte svoj potez kao novu varijantu.

(Moete izbei pojavljivanje ove poruke ubudue ako iskljuite "Pitaj pre zamene poteza" opciju u meniju Opcije:Potezi.)}

# Make database read-only dialog:
translate Y ReadOnlyDialog {Ako omoguite samo itanje iz ove baze, nee biti dozvoljene izmene.
Nijedna partije nee biti sauvana ili zamenjena, i nijedan znak za brisanje ne moe biti izmenjen.
Bilo kakvo sortiranje ili rezultati EO klasifikacije e biti privremeni.

Moete lako ponovo omoguiti pisanje po bazi, ako je zatvorite i ponovo otvorite.

Da li zaista elite da ova baza bude samo za itanje?}

# Clear game dialog:
translate Y ClearGameDialog {Ova partija je izmenjena.

Da li zaista elite da nastavite i odbacite sve uinjene promene?
}

# Exit dialog:
translate Y ExitDialog {Da li zaista elite da napustite Scid?}
translate Y ExitUnsaved {The following databases have unsaved game changes. If you exit now, these changes will be lost.} ;# ***

# Import window:
translate Y PasteCurrentGame {Prenesi tekuu partiju}
translate Y ImportHelp1 {Unesi ili prenesi partiju u PGN formatu u gornji okvir.}
translate Y ImportHelp2 {Bilo koja greka u uvozu partije e biti prikazana ovde.}
# ====== TODO To be translated ======
translate Y OverwriteExistingMoves {Overwrite existing moves ?}

# ECO Browser:
translate Y ECOAllSections {sve EO sekcije}
translate Y ECOSection {EO sekcija}
translate Y ECOSummary {Pregled za}
translate Y ECOFrequency {Uestanost subkodova za}

# Opening Report:
translate Y OprepTitle {Izvetaj o otvaranjima}
translate Y OprepReport {Izvetaj}
translate Y OprepGenerated {Generisao}
translate Y OprepStatsHist {Statistika i Istorija}
translate Y OprepStats {Statistika}
translate Y OprepStatAll {Sve partije iz iz izvetaja}
translate Y OprepStatBoth {Oba sa rejtingom}
translate Y OprepStatSince {Od}
translate Y OprepOldest {Najstarije partije}
translate Y OprepNewest {Najnovije partije}
translate Y OprepPopular {Trenutna popularnost}
translate Y OprepFreqAll {Uetanost za sve godine:    }
translate Y OprepFreq1   {Tokom  1 poslednje godine:  }
translate Y OprepFreq5   {Tokom  5 poslednjih godina: }
translate Y OprepFreq10  {Tokom 10 poslednjih godina: }
translate Y OprepEvery {jednom svakih %u partija}
translate Y OprepUp {vie za %u%s tokom svih godina}
translate Y OprepDown {manje za %u%s tokom svih godina}
translate Y OprepSame {bez promena tokom svih godina}
translate Y OprepMostFrequent {Najei igrai}
translate Y OprepMostFrequentOpponents {Most frequent opponents} ;# ***
translate Y OprepRatingsPerf {Rejtinzi i umenost}
translate Y OprepAvgPerf {Proseni rejtinzi i umenost}
translate Y OprepWRating {Rejting belog}
translate Y OprepBRating {Rejting crnog}
translate Y OprepWPerf {Umenost belog}
translate Y OprepBPerf {Umenost crnog}
translate Y OprepHighRating {Partije sa najveim prosenim rejtingom}
translate Y OprepTrends {Rezultatski trendovi}
translate Y OprepResults {Duine rezultata i uestanosti}
translate Y OprepLength {Duina partije}
translate Y OprepFrequency {Uestanost}
translate Y OprepWWins {Pobede belog: }
translate Y OprepBWins {Pobede crnog: }
translate Y OprepDraws {Remiji:       }
translate Y OprepWholeDB {cela baza}
translate Y OprepShortest {Najkraa pobeda} ;# ***
# translate Y OprepShortWhite {Najkraa pobeda belog}
# translate Y OprepShortBlack {Najkraa pobeda crnog}
translate Y OprepMovesThemes {Potezi i teme}
translate Y OprepMoveOrders {Redosledi poteza koji su dosegli poziciju iz izvetaja}
translate Y OprepMoveOrdersOne \
  {Samo je jedan redosled poteza koji je dostigao ovu poziciju:}
translate Y OprepMoveOrdersAll \
  {Bilo je %u redosleda poteza koji su dostigli ovu poziciju:}
translate Y OprepMoveOrdersMany \
  {Bilo je %u redosleda poteza koji su dostigli ovu poziciju. Prvih %u su:}
translate Y OprepMovesFrom {Potezi iz pozicije iz izvetaja}
translate Y OprepMostFrequentEcoCodes {Most frequent ECO codes} ;# ***
translate Y OprepThemes {Pozicione teme}
translate Y OprepThemeDescription {Frequency of themes in the first %u moves of each game} ;# ***
translate Y OprepThemeSameCastling {Rokade sa iste strane}
translate Y OprepThemeOppCastling {Rokade sa suprotne strane}
translate Y OprepThemeNoCastling {Obe strane bez rokada}
translate Y OprepThemeKPawnStorm {Prodor peaka na kraljevom krilu}
translate Y OprepThemeQueenswap {Zamena dama}
translate Y OprepThemeWIQP {White Isolated Queen Pawn} ;# ***
translate Y OprepThemeBIQP {Black Isolated Queen Pawn} ;# ***
translate Y OprepThemeWP567 {Beli peak na 5., 6. ili 7. redu}
translate Y OprepThemeBP234 {Crni peak na 2., 3. ili 4. redu}
translate Y OprepThemeOpenCDE {Otvorena c, d ili e linija}
translate Y OprepTheme1BishopPair {Jedna strana ima par lovaca}
translate Y OprepEndgames {Zavrnice}
translate Y OprepReportGames {Partije iz izvetaja}
translate Y OprepAllGames {Sve partije}
translate Y OprepEndClass {Materijal na kraju svake partije}
translate Y OprepTheoryTable {Tabela teorije}
translate Y OprepTableComment {Generisano iz %u najbolje rejtiranih partija.}
translate Y OprepExtraMoves {Posebno notirani potezi u tabeli teorije}
translate Y OprepMaxGames {Maksimum partija u tabeli teorije}
translate Y OprepViewHTML {View HTML} ;# ***
translate Y OprepViewLaTeX {View LaTeX} ;# ***

# Player Report:
translate Y PReportTitle {Player Report} ;# ***
translate Y PReportColorWhite {with the White pieces} ;# ***
translate Y PReportColorBlack {with the Black pieces} ;# ***
translate Y PReportMoves {after %s} ;# ***
translate Y PReportOpenings {Openings} ;# ***
translate Y PReportClipbase {Empty clipbase and copy matching games to it} ;# ***

# Piece Tracker window:
translate Y TrackerSelectSingle {Left mouse button selects this piece.} ;# ***
translate Y TrackerSelectPair {Left mouse button selects this piece; right button also selects its sibling.}
translate Y TrackerSelectPawn {Left mouse button selects this pawn; right button selects all 8 pawns.}
translate Y TrackerStat {Statistic}
translate Y TrackerGames {% games with move to square}
translate Y TrackerTime {% time on each square}
translate Y TrackerMoves {Moves}
translate Y TrackerMovesStart {Enter the move number where tracking should begin.}
translate Y TrackerMovesStop {Enter the move number where tracking should stop.}

# Game selection dialogs:
translate Y SelectAllGames {Sve partije u bazi}
translate Y SelectFilterGames {Samo partije u filteru}
translate Y SelectTournamentGames {Samo partije u tekuem turniru}
translate Y SelectOlderGames {Samo starije partije}

# Delete Twins window:
translate Y TwinsNote {Da bi bile udvojene, dve partije moraju da najmanje imaju istu dvojicu igraa, i kriterijume koje nie moete podesiti. Kada se par udvojenih partija otkrije, kraa partija se brie. Savet: Najbolje je proveriti pravopis u bazi pre brisanja udvojenih partija, jer to unapreuje detekciju. }
translate Y TwinsCriteria {Kriterijumi: Udvojene partije moraju imati...}
translate Y TwinsWhich {Koje partije da proverim?}
translate Y TwinsColors {Iste boje igraa?}
translate Y TwinsEvent {Isti turnir?}
translate Y TwinsSite {Isto mesto?}
translate Y TwinsRound {Isto kolo?}
translate Y TwinsYear {Ista godina?}
translate Y TwinsMonth {Isti mesec?}
translate Y TwinsDay {Isti dan?}
translate Y TwinsResult {Isti rezultat?}
translate Y TwinsECO {Isti EO kd?}
translate Y TwinsMoves {Isti potezi?}
translate Y TwinsPlayers {Uporeivanje imena igraa:}
translate Y TwinsPlayersExact {Potpuna podudarnost}
translate Y TwinsPlayersPrefix {Samo prva 4 slova}
translate Y TwinsWhen {Kod brisanja udvojenih partija}
translate Y TwinsSkipShort {Ignore all games under 5 moves long?} ;# ***
translate Y TwinsUndelete {Obnovi prvo sve partije?}
translate Y TwinsSetFilter {Postavi filter na sve obrisane udvojene partije?}
translate Y TwinsComments {Uvek sauvaj partije sa komentarima?}
translate Y TwinsVars {Uvek sauvaj partije sa varijantama?}
translate Y TwinsDeleteWhich {Delete which game:} ;# ***
translate Y TwinsDeleteShorter {Shorter game} ;# ***
translate Y TwinsDeleteOlder {Smaller game number} ;# ***
translate Y TwinsDeleteNewer {Larger game number} ;# ***
translate Y TwinsDelete {Obrii partije}

# Name editor window:
translate Y NameEditType {Tip imena za izmenu}
translate Y NameEditSelect {Partije za izmenu}
translate Y NameEditReplace {Zameni}
translate Y NameEditWith {sa}
translate Y NameEditMatches {Podudara se: Pritisni Ctrl+1 do Ctrl+9 za izbor}
# ====== TODO To be translated ======
translate Y CheckGames {Check games}
# ====== TODO To be translated ======
translate Y CheckGamesWhich {Check games}
# ====== TODO To be translated ======
translate Y CheckAll {All games}
# ====== TODO To be translated ======
translate Y CheckSelectFilterGames {Only games in filter}

# Classify window:
translate Y Classify {Klasifikuj}
translate Y ClassifyWhich {Klasifikuj partije po EO}
translate Y ClassifyAll {Sve partije (prebrii stare EO kdove)}
translate Y ClassifyYear {Sve partije igrane poslednje godine}
translate Y ClassifyMonth {Sve partije igrane poslednjeg meseca}
translate Y ClassifyNew {Samo partije koje su jo bez EO kda}
translate Y ClassifyCodes {Koristi EO kdove}
translate Y ClassifyBasic {Samo osnovne kdove ("B12", ...)}
translate Y ClassifyExtended {Proireni Scid ("B12j", ...)}

# Compaction:
translate Y NameFile {Fajl imena}
translate Y GameFile {Fajl partija}
translate Y Names {Imena}
translate Y Unused {Nekoriena}
translate Y SizeKb {Veliina (kb)}
translate Y CurrentState {Trenutno stanje}
translate Y AfterCompaction {Posle komprimacije}
translate Y CompactNames {Komprimuj fajl imena}
translate Y CompactGames {Komprimuj fajl partija}
# ====== TODO To be translated ======
translate Y NoUnusedNames "There are no unused names, so the name file is already fully compacted."
# ====== TODO To be translated ======
translate Y NoUnusedGames "The game file is already fully compacted."
# ====== TODO To be translated ======
translate Y NameFileCompacted {The name file for the database "[file tail [sc_base filename]]" was compacted.}
# ====== TODO To be translated ======
translate Y GameFileCompacted {The game file for the database "[file tail [sc_base filename]]" was compacted.}

# Sorting:
translate Y SortCriteria {Kriterijumi}
translate Y AddCriteria {Dodaj kriterijum}
translate Y CommonSorts {Uobiajena sortiranja}
translate Y Sort {Sortiraj}

# Exporting:
translate Y AddToExistingFile {Dodaj partije u postojei fajl?}
translate Y ExportComments {Izvezi komentare?}
translate Y ExportVariations {Izvezi varijante?}
translate Y IndentComments {Uvuci pasus kod komentara?}
translate Y IndentVariations {Uvuci pasus kod varijanata?}
translate Y ExportColumnStyle {Pasus stil (jedan potez po liniji)?}
translate Y ExportSymbolStyle {Stil simbolikih napomena:}
translate Y ExportStripMarks {Strip square/arrow mark codes from comments?} ;# ***

# Goto game/move dialogs:
translate Y LoadGameNumber {Unesi broj partije za uitavanje:}
translate Y GotoMoveNumber {Idi na potez broj:}

# Copy games dialog:
translate Y CopyGames {Kopiraj partije}
translate Y CopyConfirm {
 Da li zaista elite da kopirate
 [::utils::thousands $nGamesToCopy] filtriranih partija
 iz baze "$fromName"
 u bazu "$targetName"?
}
translate Y CopyErr {Ne mogu da kopiram partije}
translate Y CopyErrSource {izvorina baza}
translate Y CopyErrTarget {odredina baza}
translate Y CopyErrNoGames {nema partija u svom filteru}
translate Y CopyErrReadOnly {je samo za itanje}
translate Y CopyErrNotOpen {nije otvorena}

# Colors:
translate Y LightSquares {Svetla polja}
translate Y DarkSquares {Tamna polja}
translate Y SelectedSquares {Izabrana polja}
translate Y SuggestedSquares {Polja preporuenog poteza}
translate Y WhitePieces {Bele figure}
translate Y BlackPieces {Crne figure}
translate Y WhiteBorder {Ivica belih figura}
translate Y BlackBorder {Ivica crnih figura}

# Novelty window:
translate Y FindNovelty {Pronai novost}
translate Y Novelty {Novost}
translate Y NoveltyInterrupt {Traenje novosti prekinuto}
translate Y NoveltyNone {Nijedna novost nije pronaena u ovoj partiji}
translate Y NoveltyHelp {
Scid e nai prvi potez tekue partije, koji dostie poziciju koja nije naena u izabranoj bazi ili u EO knjizi otvaranja.
}

# Sounds configuration:
translate Y SoundsFolder {Sound Files Folder} ;# ***
translate Y SoundsFolderHelp {The folder should contain the files King.wav, a.wav, 1.wav, etc} ;# ***
translate Y SoundsAnnounceOptions {Move Announcement Options} ;# ***
translate Y SoundsAnnounceNew {Announce new moves as they are made} ;# ***
translate Y SoundsAnnounceForward {Announce moves when moving forward one move} ;# ***
translate Y SoundsAnnounceBack {Announce when retracting or moving back one move} ;# ***

# Upgrading databases:
translate Y Upgrading {Unapreivanje}
translate Y ConfirmOpenNew {
Ovo je baza u starom formatu (Scid 3), koju ne moe da otvori Scid 4, ve je kreirana verzija u novom formatu (Scid 4).

Da li elite da otvorite verziju baze u novom formatu?
}
translate Y ConfirmUpgrade {
Ovo je baza u starom formatu (Scid 3). Verzija baze u novom formatu mora biti kreirana pre korienja u Scid-u 4.

Unapreivanjem e se kreirati nova verzija baze.

Ovo moe potrajati, ali treba da se uradi samo jednom. Moete prekinuti ukoliko bude predugo trajalo.

Da li elite da sada unapredite ovu bazu?
}

# Recent files options:
translate Y RecentFilesMenu {Number of recent files in File menu} ;# ***
translate Y RecentFilesExtra {Number of recent files in extra submenu} ;# ***

# My Player Names options:
translate Y MyPlayerNamesDescription {
Enter a list of preferred player names below, one name per line. Wildcards (e.g. "?" for any single character, "*" for any sequence of characters) are permitted.

Every time a game with a player in the list is loaded, the main window chessboard will be rotated if necessary to show the game from that players perspective.
} ;# ***
# ====== TODO To be translated ======
translate Y showblunderexists {show blunder exists}
# ====== TODO To be translated ======
translate Y showblundervalue {show blunder value}
# ====== TODO To be translated ======
translate Y showscore {show score}
# ====== TODO To be translated ======
translate Y coachgame {coach game}
# ====== TODO To be translated ======
translate Y configurecoachgame {configure coach game}
# ====== TODO To be translated ======
translate Y configuregame {Game configuration}
# ====== TODO To be translated ======
translate Y Phalanxengine {Phalanx engine}
# ====== TODO To be translated ======
translate Y Coachengine {Coach engine}
# ====== TODO To be translated ======
translate Y difficulty {difficulty}
# ====== TODO To be translated ======
translate Y hard {hard}
# ====== TODO To be translated ======
translate Y easy {easy}
# ====== TODO To be translated ======
translate Y Playwith {Play with}
# ====== TODO To be translated ======
translate Y white {white}
# ====== TODO To be translated ======
translate Y black {black}
# ====== TODO To be translated ======
translate Y both {both}
# ====== TODO To be translated ======
translate Y Play {Play}
# ====== TODO To be translated ======
translate Y Noblunder {No blunder}
# ====== TODO To be translated ======
translate Y blunder {blunder}
# ====== TODO To be translated ======
translate Y Noinfo {-- No info --}
# ====== TODO To be translated ======
translate Y PhalanxOrTogaMissing {Phalanx or Toga not found}
# ====== TODO To be translated ======
# ====== TODO To be translated ======
# ====== TODO To be translated ======
translate Y moveblunderthreshold {move is a blunder if loss is greater than}
# ====== TODO To be translated ======
translate Y limitanalysis {limit engine analysis time}
# ====== TODO To be translated ======
translate Y seconds {seconds}
# ====== TODO To be translated ======
translate Y Abort {Abort}
# ====== TODO To be translated ======
translate Y Resume {Resume}
# ====== TODO To be translated ======
translate Y OutOfOpening {Out of opening}
# ====== TODO To be translated ======
translate Y NotFollowedLine {You did not follow the line}
# ====== TODO To be translated ======
translate Y DoYouWantContinue {Do you want yo continue ?}
# ====== TODO To be translated ======
translate Y CoachIsWatching {Coach is watching}
# ====== TODO To be translated ======
translate Y Ponder {Permanent thinking}
# ====== TODO To be translated ======
translate Y LimitELO {Limit ELO strength}
# ====== TODO To be translated ======
translate Y DubiousMovePlayedTakeBack {Dubious move played, do you want to take back ?}
# ====== TODO To be translated ======
translate Y WeakMovePlayedTakeBack {Weak move played, do you want to take back ?}
# ====== TODO To be translated ======
translate Y BadMovePlayedTakeBack {Bad move played, do you want to take back ?}
# ====== TODO To be translated ======
translate Y Iresign {I resign}
# ====== TODO To be translated ======
translate Y yourmoveisnotgood {your move is not good}
# ====== TODO To be translated ======
translate Y EndOfVar {End of variation}
# ====== TODO To be translated ======
translate Y Openingtrainer {Opening trainer}
# ====== TODO To be translated ======
translate Y DisplayCM {Display candidate moves}
# ====== TODO To be translated ======
translate Y DisplayCMValue {Display candidate moves value}
# ====== TODO To be translated ======
translate Y DisplayOpeningStats {Show statistics}
# ====== TODO To be translated ======
translate Y ShowReport {Show report}
# ====== TODO To be translated ======
translate Y NumberOfGoodMovesPlayed {good moves played}
# ====== TODO To be translated ======
translate Y NumberOfDubiousMovesPlayed {dubious moves played}
# ====== TODO To be translated ======
translate Y NumberOfMovesPlayedNotInRepertoire {moves played not in repertoire}
# ====== TODO To be translated ======
translate Y NumberOfTimesPositionEncountered {times position encountered}
# ====== TODO To be translated ======
translate Y PlayerBestMove  {Allow only best moves}
# ====== TODO To be translated ======
translate Y OpponentBestMove {Opponent plays best moves}
# ====== TODO To be translated ======
translate Y OnlyFlaggedLines {Only flagged lines}
# ====== TODO To be translated ======
translate Y resetStats {Reset statistics}
# ====== TODO To be translated ======
translate Y Repertoiretrainingconfiguration {Repertoire training configuration}
# ====== TODO To be translated ======
translate Y Loadingrepertoire {Loading repertoire}
# ====== TODO To be translated ======
translate Y Movesloaded {Moves loaded}
# ====== TODO To be translated ======
translate Y Repertoirenotfound {Repertoire not found}
# ====== TODO To be translated ======
translate Y Openfirstrepertoirewithtype {Open first a repertoire database with icon/type set to the right side}
# ====== TODO To be translated ======
translate Y Movenotinrepertoire {Move not in repertoire}
# ====== TODO To be translated ======
translate Y PositionsInRepertoire {Positions in repertoire}
# ====== TODO To be translated ======
translate Y PositionsNotPlayed {Positions not played}
# ====== TODO To be translated ======
translate Y PositionsPlayed {Positions played}
# ====== TODO To be translated ======
translate Y Success {Success}
# ====== TODO To be translated ======
translate Y DubiousMoves {Dubious moves}
# ====== TODO To be translated ======
translate Y OutOfRepertoire {OutOfRepertoire}
# ====== TODO To be translated ======
# ====== TODO To be translated ======
# ====== TODO To be translated ======
# ====== TODO To be translated ======
translate Y ConfigureTactics {Configure tactics}
# ====== TODO To be translated ======
translate Y ResetScores {Reset scores}
# ====== TODO To be translated ======
translate Y LoadingBase {Loading base}
# ====== TODO To be translated ======
translate Y Tactics {Tactics}
# ====== TODO To be translated ======
translate Y ShowSolution {Show solution}
# ====== TODO To be translated ======
translate Y NextExercise {Next exercise}
# ====== TODO To be translated ======
translate Y PrevExercise {previous exercise}
# ====== TODO To be translated ======
translate Y StopTraining {Stop training}
# ====== TODO To be translated ======
translate Y Next {Next}
# ====== TODO To be translated ======
translate Y ResettingScore {Resetting score}
# ====== TODO To be translated ======
translate Y LoadingGame {Loading game}
# ====== TODO To be translated ======
translate Y MateFound {Mate found}
# ====== TODO To be translated ======
translate Y BestSolutionNotFound {Best solution NOT found !}
# ====== TODO To be translated ======
translate Y MateNotFound {Mate not found}
# ====== TODO To be translated ======
translate Y ShorterMateExists {Shorter mate exists}
# ====== TODO To be translated ======
translate Y ScorePlayed {Score played}
# ====== TODO To be translated ======
translate Y Expected {expected}
# ====== TODO To be translated ======
translate Y ChooseTrainingBase {Choose training base}
# ====== TODO To be translated ======
translate Y Thinking {Thinking}
# ====== TODO To be translated ======
translate Y AnalyzeDone {Analyze done}
# ====== TODO To be translated ======
translate Y WinWonGame {Win won game}
# ====== TODO To be translated ======
translate Y Lines {Lines}
# ====== TODO To be translated ======
translate Y ConfigureUCIengine {Configure UCI engine}
# ====== TODO To be translated ======
translate Y SpecificOpening {Specific opening}
# ====== TODO To be translated ======
translate Y StartNewGame {Start new game}
# ====== TODO To be translated ======
translate Y FixedLevel {Fixed level}
# ====== TODO To be translated ======
translate Y Opening {Opening}
# ====== TODO To be translated ======
translate Y RandomLevel {Random level}
# ====== TODO To be translated ======
translate Y StartFromCurrentPosition {Start from current position}
# ====== TODO To be translated ======
translate Y FixedDepth {Fixed depth}
# ====== TODO To be translated ======
translate Y Nodes {Nodes} 
# ====== TODO To be translated ======
translate Y Depth {Depth}
# ====== TODO To be translated ======
translate Y Time {Time} 
# ====== TODO To be translated ======
translate Y SecondsPerMove {Seconds per move}
# ====== TODO To be translated ======
translate Y Engine {Engine}
# ====== TODO To be translated ======
translate Y TimeMode {Time mode}
# ====== TODO To be translated ======
translate Y TimeBonus {Time + bonus}
# ====== TODO To be translated ======
# ====== TODO To be translated ======
translate Y TimeMin {min}
# ====== TODO To be translated ======
translate Y TimeSec {sec}
# ====== TODO To be translated ======
# ====== TODO To be translated ======
# ====== TODO To be translated ======
translate Y AllExercisesDone {All exercises done}
# ====== TODO To be translated ======
translate Y MoveOutOfBook {Move out of book}
# ====== TODO To be translated ======
translate Y LastBookMove {Last book move}
# ====== TODO To be translated ======
translate Y AnnotateSeveralGames {Annotate several games\nfrom current to :}
# ====== TODO To be translated ======
translate Y FindOpeningErrors {Find opening errors}
# ====== TODO To be translated ======
translate Y MarkTacticalExercises {Mark tactical exercises}
# ====== TODO To be translated ======
translate Y UseBook {Use book}
# ====== TODO To be translated ======
translate Y MultiPV {Multiple variations}
# ====== TODO To be translated ======
translate Y Hash {Hash memory}
# ====== TODO To be translated ======
translate Y OwnBook {Use engine book}
# ====== TODO To be translated ======
translate Y BookFile {Opening book}
# ====== TODO To be translated ======
translate Y AnnotateVariations {Annotate variations}
# ====== TODO To be translated ======
translate Y ShortAnnotations {Short annotations}
# ====== TODO To be translated ======
translate Y addAnnotatorTag {Add annotator tag}
# ====== TODO To be translated ======
translate Y AddScoreToShortAnnotations {Add score to short annotations}
# ====== TODO To be translated ======
translate Y Export {Export}
# ====== TODO To be translated ======
translate Y BookPartiallyLoaded {Book partially loaded}
# ====== TODO To be translated ======
translate Y Calvar {Calculation of variations}
# ====== TODO To be translated ======
translate Y ConfigureCalvar {Configuration}
# ====== TODO To be translated ======
# ====== TODO To be translated ======
translate Y Reti {Reti}
# ====== TODO To be translated ======
translate Y English {English}
# ====== TODO To be translated ======
translate Y d4Nf6Miscellaneous {1.d4 Nf6 Miscellaneous}
# ====== TODO To be translated ======
translate Y Trompowsky {Trompowsky}
# ====== TODO To be translated ======
translate Y Budapest {Budapest}
# ====== TODO To be translated ======
translate Y OldIndian {Old Indian}
# ====== TODO To be translated ======
translate Y BenkoGambit {Benko Gambit}
# ====== TODO To be translated ======
translate Y ModernBenoni {Modern Benoni}
# ====== TODO To be translated ======
translate Y DutchDefence {Dutch Defence}
# ====== TODO To be translated ======
translate Y Scandinavian {Scandinavian}
# ====== TODO To be translated ======
translate Y AlekhineDefence {Alekhine Defence}
# ====== TODO To be translated ======
translate Y Pirc {Pirc}
# ====== TODO To be translated ======
translate Y CaroKann {Caro-Kann}
# ====== TODO To be translated ======
translate Y CaroKannAdvance {Caro-Kann Advance}
# ====== TODO To be translated ======
translate Y Sicilian {Sicilian}
# ====== TODO To be translated ======
translate Y SicilianAlapin {Sicilian Alapin}
# ====== TODO To be translated ======
translate Y SicilianClosed {Sicilian Closed}
# ====== TODO To be translated ======
translate Y SicilianRauzer {Sicilian Rauzer}
# ====== TODO To be translated ======
translate Y SicilianDragon {Sicilian Dragon}
# ====== TODO To be translated ======
translate Y SicilianScheveningen {Sicilian Scheveningen}
# ====== TODO To be translated ======
translate Y SicilianNajdorf {Sicilian Najdorf}
# ====== TODO To be translated ======
translate Y OpenGame {Open Game}
# ====== TODO To be translated ======
translate Y Vienna {Vienna}
# ====== TODO To be translated ======
translate Y KingsGambit {King's Gambit}
# ====== TODO To be translated ======
translate Y RussianGame {Russian Game}
# ====== TODO To be translated ======
translate Y ItalianTwoKnights {Italian/Two Knights}
# ====== TODO To be translated ======
translate Y Spanish {Spanish}
# ====== TODO To be translated ======
translate Y SpanishExchange {Spanish Exchange}
# ====== TODO To be translated ======
translate Y SpanishOpen {Spanish Open}
# ====== TODO To be translated ======
translate Y SpanishClosed {Spanish Closed}
# ====== TODO To be translated ======
translate Y FrenchDefence {French Defence}
# ====== TODO To be translated ======
translate Y FrenchAdvance {French Advance}
# ====== TODO To be translated ======
translate Y FrenchTarrasch {French Tarrasch}
# ====== TODO To be translated ======
translate Y FrenchWinawer {French Winawer}
# ====== TODO To be translated ======
translate Y FrenchExchange {French Exchange}
# ====== TODO To be translated ======
translate Y QueensPawn {Queen's Pawn}
# ====== TODO To be translated ======
translate Y Slav {Slav}
# ====== TODO To be translated ======
translate Y QGA {QGA}
# ====== TODO To be translated ======
translate Y QGD {QGD}
# ====== TODO To be translated ======
translate Y QGDExchange {QGD Exchange}
# ====== TODO To be translated ======
translate Y SemiSlav {Semi-Slav}
# ====== TODO To be translated ======
translate Y QGDwithBg5 {QGD with Bg5}
# ====== TODO To be translated ======
translate Y QGDOrthodox {QGD Orthodox}
# ====== TODO To be translated ======
translate Y Grunfeld {Grnfeld}
# ====== TODO To be translated ======
translate Y GrunfeldExchange {Grnfeld Exchange}
# ====== TODO To be translated ======
translate Y GrunfeldRussian {Grnfeld Russian}
# ====== TODO To be translated ======
translate Y Catalan {Catalan}
# ====== TODO To be translated ======
translate Y CatalanOpen {Catalan Open}
# ====== TODO To be translated ======
translate Y CatalanClosed {Catalan Closed}
# ====== TODO To be translated ======
translate Y QueensIndian {Queen's Indian}
# ====== TODO To be translated ======
translate Y NimzoIndian {Nimzo-Indian}
# ====== TODO To be translated ======
translate Y NimzoIndianClassical {Nimzo-Indian Classical}
# ====== TODO To be translated ======
translate Y NimzoIndianRubinstein {Nimzo-Indian Rubinstein}
# ====== TODO To be translated ======
translate Y KingsIndian {King's Indian}
# ====== TODO To be translated ======
translate Y KingsIndianSamisch {King's Indian Smisch}
# ====== TODO To be translated ======
translate Y KingsIndianMainLine {King's Indian Main Line}
# ====== TODO To be translated ======
translate Y ConfigureFics {Configure FICS}
# ====== TODO To be translated ======
translate Y FICSGuest {Login as Guest}
# ====== TODO To be translated ======
translate Y FICSServerPort {Server port}
# ====== TODO To be translated ======
translate Y FICSServerAddress {IP Address}
# ====== TODO To be translated ======
translate Y FICSRefresh {Refresh}
# ====== TODO To be translated ======
translate Y FICSTimesealPort {Timeseal port}
# ====== TODO To be translated ======
translate Y FICSSilence {Silence}
# ====== TODO To be translated ======
translate Y FICSOffers {Offers}
# ====== TODO To be translated ======
translate Y FICSConsole {Console}
# ====== TODO To be translated ======
translate Y FICSGames {Games}
# ====== TODO To be translated ======
translate Y FICSUnobserve {Stop observing game}
# ====== TODO To be translated ======
translate Y FICSProfile {Display your history and profile}
# ====== TODO To be translated ======
translate Y FICSRelayedGames {Relayed games}
# ====== TODO To be translated ======
translate Y FICSFindOpponent {Find opponent}
# ====== TODO To be translated ======
translate Y FICSTakeback {Takeback}
# ====== TODO To be translated ======
translate Y FICSTakeback2 {Takeback 2}
# ====== TODO To be translated ======
translate Y FICSInitTime {Initial time (min)}
# ====== TODO To be translated ======
translate Y FICSIncrement {Increment (sec)}
# ====== TODO To be translated ======
translate Y FICSRatedGame {Rated Game}
# ====== TODO To be translated ======
translate Y FICSAutoColour {automatic}
# ====== TODO To be translated ======
translate Y FICSManualConfirm {confirm manually}
# ====== TODO To be translated ======
translate Y FICSFilterFormula {Filter with formula}
# ====== TODO To be translated ======
translate Y FICSIssueSeek {Issue seek}
# ====== TODO To be translated ======
translate Y FICSChallenge {Challenge}
# ====== TODO To be translated ======
translate Y FICSAccept {accept}
# ====== TODO To be translated ======
translate Y FICSDecline {decline}
# ====== TODO To be translated ======
translate Y FICSColour {Colour}
# ====== TODO To be translated ======
translate Y FICSSend {send}
# ====== TODO To be translated ======
translate Y FICSConnect {Connect}
# ====== TODO To be translated ======
translate Y FICSdefaultuservars {Use default variables}
# ====== TODO To be translated ======
translate Y FICSObserveconfirm {Do you want to observe game}
# ====== TODO To be translated ======
translate Y GameReview {Game review}
# ====== TODO To be translated ======
translate Y GameReviewTimeExtended {Time extended}
# ====== TODO To be translated ======
translate Y GameReviewMargin {Error margin}
# ====== TODO To be translated ======
translate Y GameReviewAutoContinue {Auto continue when move is correct}
# ====== TODO To be translated ======
translate Y GameReviewReCalculate {Use extended time}
# ====== TODO To be translated ======
translate Y GameReviewAnalyzingMovePlayedDuringTheGame {Analyzing move played during the game}
# ====== TODO To be translated ======
translate Y GameReviewAnalyzingThePosition {Analyzing the position}
# ====== TODO To be translated ======
translate Y GameReviewEnterYourMove {Enter your move}
# ====== TODO To be translated ======
translate Y GameReviewCheckingYourMove {Checking your move}
# ====== TODO To be translated ======
translate Y GameReviewYourMoveWasAnalyzed {Your move was analyzed}
# ====== TODO To be translated ======
translate Y GameReviewYouPlayedSameMove {You played the same move as in match}
# ====== TODO To be translated ======
translate Y GameReviewScoreOfYourMove {Score of your move}
# ====== TODO To be translated ======
translate Y GameReviewGameMoveScore {Game move's score}
# ====== TODO To be translated ======
translate Y GameReviewEngineScore {Engine's score}
# ====== TODO To be translated ======
translate Y GameReviewYouPlayedLikeTheEngine {You played like the engine}
# ====== TODO To be translated ======
translate Y GameReviewNotEngineMoveButGoodMove {Not the engine move, but is also a good move}
# ====== TODO To be translated ======
translate Y GameReviewMoveNotGood {This move is not good, score is}
# ====== TODO To be translated ======
translate Y GameReviewMovesPlayedLike {Moves played like}
# ====== TODO To be translated ======
translate Y GameReviewMovesPlayedEngine {Moves played like engine}
# ====== TODO To be translated ======
translate Y CCDlgConfigureWindowTitle {Configure Correspondence Chess}
# ====== TODO To be translated ======
translate Y CCDlgCGeneraloptions {General Options}
# ====== TODO To be translated ======
translate Y CCDlgDefaultDB {Default Database:}
# ====== TODO To be translated ======
translate Y CCDlgInbox {Inbox (path):}
# ====== TODO To be translated ======
translate Y CCDlgOutbox {Outbox (path):}
# ====== TODO To be translated ======
translate Y CCDlgXfcc {Xfcc Configuration:}
# ====== TODO To be translated ======
translate Y CCDlgExternalProtocol {External Protocol Handler (e.g. Xfcc)}
# ====== TODO To be translated ======
translate Y CCDlgFetchTool {Fetch Tool:}
# ====== TODO To be translated ======
translate Y CCDlgSendTool {Send Tool:}
# ====== TODO To be translated ======
translate Y CCDlgEmailCommunication {eMail Communication}
# ====== TODO To be translated ======
translate Y CCDlgMailPrg {Mail program:}
# ====== TODO To be translated ======
translate Y CCDlgBCCAddr {(B)CC Address:}
# ====== TODO To be translated ======
translate Y CCDlgMailerMode {Mode:}
# ====== TODO To be translated ======
translate Y CCDlgThunderbirdEg {e.g. Thunderbird, Mozilla Mail, Icedove...}
# ====== TODO To be translated ======
translate Y CCDlgMailUrlEg {e.g. Evolution}
# ====== TODO To be translated ======
translate Y CCDlgClawsEg {e.g Sylpheed Claws}
# ====== TODO To be translated ======
translate Y CCDlgmailxEg {e.g. mailx, mutt, nail...}
# ====== TODO To be translated ======
translate Y CCDlgAttachementPar {Attachment parameter:}
# ====== TODO To be translated ======
translate Y CCDlgInternalXfcc {Use internal Xfcc support}
# ====== TODO To be translated ======
translate Y CCDlgConfirmXfcc {Confirm moves}
# ====== TODO To be translated ======
translate Y CCDlgSubjectPar {Subject parameter:}
# ====== TODO To be translated ======
translate Y CCDlgDeleteBoxes {Empty In-/Outbox}
# ====== TODO To be translated ======
translate Y CCDlgDeleteBoxesText {Do you really want to empty your In- and Outbox folders for Correspondence Chess? This requires a new sync to show the last state of your games}
# ====== TODO To be translated ======
translate Y CCDlgConfirmMove {Confirm move}
# ====== TODO To be translated ======
translate Y CCDlgConfirmMoveText {If you confirm, the following move and comment will be sent to the server:}
# ====== TODO To be translated ======
translate Y CCDlgDBGameToLong {Inconsistent Mainline}
# ====== TODO To be translated ======
translate Y CCDlgDBGameToLongError {The mainline in your database is longer than the game in your Inbox. If the Inbox contains current games, i.e. right after a sync, some moves were added to the mainline in the database erroneously.\nIn this case please shorten the mainline to (at max) move\n}
# ====== TODO To be translated ======
translate Y CCDlgStartEmail {Start new eMail game}
# ====== TODO To be translated ======
translate Y CCDlgYourName {Your Name:}
# ====== TODO To be translated ======
translate Y CCDlgYourMail {Your eMail Address:}
# ====== TODO To be translated ======
translate Y CCDlgOpponentName {Opponents Name:}
# ====== TODO To be translated ======
translate Y CCDlgOpponentMail {Opponents eMail Address:}
# ====== TODO To be translated ======
translate Y CCDlgGameID {Game ID (unique):}
# ====== TODO To be translated ======
translate Y CCDlgTitNoOutbox {Scid: Correspondence Chess Outbox}
# ====== TODO To be translated ======
translate Y CCDlgTitNoInbox {Scid: Correspondence Chess Inbox}
# ====== TODO To be translated ======
translate Y CCDlgTitNoGames {Scid: No Correspondence Chess Games}
# ====== TODO To be translated ======
translate Y CCErrInboxDir {Correspondence Chess inbox directory:}
# ====== TODO To be translated ======
translate Y CCErrOutboxDir {Correspondence Chess outbox directory:}
# ====== TODO To be translated ======
translate Y CCErrDirNotUsable {does not exist or is not accessible!\nPlease check and correct the settings.}
# ====== TODO To be translated ======
translate Y CCErrNoGames {does not contain any games!\nPlease fetch them first.}
# ====== TODO To be translated ======
translate Y CCDlgTitNoCCDB {Scid: No Correspondence Database}
# ====== TODO To be translated ======
translate Y CCErrNoCCDB {No Database of type 'Correspondence' is opened. Please open one before using correspondence chess functions.}
# ====== TODO To be translated ======
translate Y CCFetchBtn {Fetch games from the server and process the Inbox}
# ====== TODO To be translated ======
translate Y CCPrevBtn {Goto previous game}
# ====== TODO To be translated ======
translate Y CCNextBtn {Goto next game}
# ====== TODO To be translated ======
translate Y CCSendBtn {Send move}
# ====== TODO To be translated ======
translate Y CCEmptyBtn {Empty In- and Outbox}
# ====== TODO To be translated ======
translate Y CCHelpBtn {Help on icons and status indicators.\nFor general Help press F1!}
# ====== TODO To be translated ======
translate Y CCDlgServerName {Server Name:}
# ====== TODO To be translated ======
translate Y CCDlgLoginName  {Login Name:}
# ====== TODO To be translated ======
translate Y CCDlgPassword   {Password:}
# ====== TODO To be translated ======
translate Y CCDlgURL        {Xfcc-URL:}
# ====== TODO To be translated ======
translate Y CCDlgRatingType {Rating Type:}
# ====== TODO To be translated ======
translate Y CCDlgDuplicateGame {Non-unique game ID}
# ====== TODO To be translated ======
translate Y CCDlgDuplicateGameError {This game exists more than once in your database. Please delete all duplicates and compact your game file (File/Maintenance/Compact Database).}
# ====== TODO To be translated ======
translate Y CCDlgSortOption {Sorting:}
# ====== TODO To be translated ======
translate Y CCDlgListOnlyOwnMove {Only games I have the move}
# ====== TODO To be translated ======
translate Y CCOrderClassicTxt {Site, Event, Round, Result, White, Black}
# ====== TODO To be translated ======
translate Y CCOrderMyTimeTxt {My Clock}
# ====== TODO To be translated ======
translate Y CCOrderTimePerMoveTxt {Time per move till next time control}
# ====== TODO To be translated ======
translate Y CCOrderStartDate {Start date}
# ====== TODO To be translated ======
translate Y CCOrderOppTimeTxt {Opponents Clock}
# ====== TODO To be translated ======
translate Y CCDlgConfigRelay {Configure ICCF observations}
# ====== TODO To be translated ======
translate Y CCDlgConfigRelayHelp {Go to the games page on http://www.iccf-webchess.com and display the game to be observed.  If you see the chessboard copy the URL from your browser to the list below. One URL per line only!\nExample: http://www.iccf-webchess.com/MakeAMove.aspx?id=266452}
# ====== TODO To be translated ======
translate Y ExtHWConfigConnection {Configure external hardware}
# ====== TODO To be translated ======
translate Y ExtHWPort {Port}
# ====== TODO To be translated ======
translate Y ExtHWEngineCmd {Engine command}
# ====== TODO To be translated ======
translate Y ExtHWEngineParam {Engine parameter}
# ====== TODO To be translated ======
translate Y ExtHWShowButton {Show button}
# ====== TODO To be translated ======
translate Y ExtHWHardware {Hardware}
# ====== TODO To be translated ======
translate Y ExtHWNovag {Novag Citrine}
# ====== TODO To be translated ======
translate Y ExtHWInputEngine {Input Engine}
# ====== TODO To be translated ======
translate Y ExtHWNoBoard {No board}
# ====== TODO To be translated ======
translate Y NovagReferee {Referee}
# ====== TODO To be translated ======
translate Y IEConsole {Input Engine Console}
# ====== TODO To be translated ======
translate Y IESending {Moves sent for}
# ====== TODO To be translated ======
translate Y IESynchronise {Synchronise}
# ====== TODO To be translated ======
translate Y IERotate  {Rotate}
# ====== TODO To be translated ======
translate Y IEUnableToStart {Unable to start Input Engine:}
# ====== TODO To be translated ======
translate Y DoneWithPosition {Done with position}
# ====== TODO To be translated ======
translate Y Board {Board}
# ====== TODO To be translated ======
translate Y showGameInfo {Show game info}
# ====== TODO To be translated ======
translate Y autoResizeBoard {Automatic resize of board}
# ====== TODO To be translated ======
translate Y DockTop {Move to top}
# ====== TODO To be translated ======
translate Y DockBottom {Move to bottom}
# ====== TODO To be translated ======
translate Y DockLeft {Move to left}
# ====== TODO To be translated ======
translate Y DockRight {Move to right}
# ====== TODO To be translated ======
translate Y Undock {Undock}
# ====== TODO To be translated ======
translate Y ChangeIcon {Change icon...}
# ====== TODO To be translated ======
}
# end of serbian.tcl











































































# spanish.tcl:
# Spanish translations for Scid.
# Contributed by Jordi Gonzlez Boada.
# Updated by Enrique Lopez.
# Updated by Benigno Hernndez Bacallado.
# Updated by Pedro Reina.
# Untranslated messages are marked with a "***" comment.

addLanguage S Espaol 1 ;#iso8859-1

proc setLanguage_S {} {

# File menu:
menuText S File "Archivo" 0
menuText S FileNew "Nuevo..." 0 {Crea una nueva base de datos Scid vaca}
menuText S FileOpen "Abrir..." 1 {Abre una base de datos Scid ya existente}
menuText S FileClose "Cerrar" 0 {Cierra la base de datos Scid activa}
menuText S FileFinder "Visor..." 0 {Abre la ventana del visor de archivos}
menuText S FileBookmarks "Partidas favoritas" 0 {Seleccionar partidas favoritas (Ctrl+B)}
menuText S FileBookmarksAdd "Aadir" 0 \
  {Seala la partida y posicin actual de la base de datos}
menuText S FileBookmarksFile "Archivar" 8 \
  {Archiva un marcador para la partida y posicin actual}
menuText S FileBookmarksEdit "Editar partidas favoritas..." 0 \
  {Edita los mens de las partidas favoritas}
menuText S FileBookmarksList "Mostrar partidas favoritas" 0 \
  {Muestra las carpetas de favoritas en una sola lista, sin submens}
menuText S FileBookmarksSub "Mostrar partidas marcadas con submens" 0 \
  {Muestra las carpetas de favoritas como submens, no una sola lista}
menuText S FileMaint "Mantenimiento" 0 \
  {Herramientas de mantenimiento de la base de datos Scid}
menuText S FileMaintWin "Ventana de mantenimiento" 0 \
  {Abre/cierra la ventana de mantenimiento de la base de datos Scid}
menuText S FileMaintCompact "Compactar base de datos..." 0 \
  {Compacta los archivos de la base de datos, quitando partidas borradas y nombres no usados}
menuText S FileMaintClass "Clasificar partidas por ECO..." 24 \
  {Recalcula el cdigo ECO de todas las partidas}
menuText S FileMaintSort "Ordenar base de datos..." 0 \
  {Ordena todas las partidas de la base de datos}
menuText S FileMaintDelete "Borrar partidas dobles..." 0 \
  {Encuentra partidas dobles y las coloca para ser borradas}
menuText S FileMaintTwin "Ventana de inspeccin de dobles" 11 \
  {Abre/actualiza la ventana de inspeccin de dobles}
menuText S FileMaintName "Ortografa de nombres" 0 {Herramientas de ortografa y edicin de nombres}
menuText S FileMaintNameEditor "Ventana de edicin de nombres" 22 \
  {Abre/cierra la ventana de edicin de nombres}
menuText S FileMaintNamePlayer "Comprobacin ortogrfica de nombres de jugadores..." 39 \
  {Comprobacin ortogrfica de jugadores usando archivo de comprobacin ortogrfica}
menuText S FileMaintNameEvent "Comprobacin ortogrfica de nombres de eventos..." 39 \
  {Comprobacin ortogrfica de eventos usando el archivo de comprobacin ortogrfica}
menuText S FileMaintNameSite "Comprobacin ortogrfica de nombres de lugares..." 39 \
  {Comprobacin ortogrfica de lugares usando el archivo de comprobacin ortogrfica}
menuText S FileMaintNameRound "Comprobacin ortogrfica de rondas..." 28 \
  {Comprobacin ortogrfica de rondas usando el archivo de comprobacin ortogrfica}
menuText S FileReadOnly "Slo lectura..." 5 \
  {Trata la actual base de datos como de slo lectura, previniendo cambios}
menuText S FileSwitch "Cambiar de base de datos" 0 \
  {Cambia a una base de datos abierta diferente}
menuText S FileExit "Salir" 0 {Salir de Scid}
menuText S FileMaintFixBase "Arreglar base corrupta" 0 {Intenta arreglar una base corrupta}

# Edit menu:
menuText S Edit "Editar" 0
menuText S EditAdd "Aadir variacin" 0 \
  {Aade una variacin a este movimiento en la partida}
menuText S EditDelete "Borrar variacin" 0 {Borra variacin para este movimiento}
menuText S EditFirst "Convertir en primera variacin" 0 \
  {Hace que una variacin sea la primera en la lista}
menuText S EditMain "Variacin a lnea principal" 0 \
   {Promover una variacin para que sea la lnea principal}
menuText S EditTrial "Probar variacin" 1 \
  {Inicia/para el modo de prueba, para ensayar una idea en el tablero}
menuText S EditStrip "Eliminar" 2 \
  {Elimina comentarios o variaciones de esta partida}
menuText S EditUndo "Deshacer" 0 {Deshace el ltimo cambio en la partida}
menuText S EditStripComments "Comentarios" 0 \
  {Quita todos los comentarios y variaciones de esta partida}
menuText S EditStripVars "Variaciones" 0 {Quita todas las variaciones de esta partida}
menuText S EditStripBegin "Movimientos desde el principio" 1 \
  {Quita los movimientos desde el principio de la partida}
menuText S EditStripEnd "Movimientos hasta el final" 0 \
  {Quita los movimientos hasta el final de la partida}
menuText S EditReset "Poner a cero la base de trabajo" 0 \
  {Pone a cero la base de trabajo (clipbase) para que est completamente vaca}
menuText S EditCopy "Copiar esta partida a la base de trabajo" 1 \
  {Copia esta partida a la base de trabajo (clipbase)}
menuText S EditPaste "Pegar la ltima partida de la base de trabajo" 2 \
  {Pega en la base actual la partida activa en la base de trabajo (clipbase)}
menuText S EditPastePGN "Pegar el texto del portapapeles como partida PGN..." 10 \
  {Interpreta el texto de la base de trabajo (clipbase) como una partida en notacin PGN y la pega aqu}
menuText S EditSetup "Iniciar tablero de posicin..." 26 \
  {Inicia el tablero de posicin con la posicin de la partida}
menuText S EditCopyBoard "Copiar posicin" 8 \
  {Copia el tablero actual en notacin FEN al portapapeles}
menuText S EditPasteBoard "Pegar tablero inicial" 6 \
  {Coloca el tablero inicial en el portapapeles}

# Game menu:
menuText S Game "Partida" 0
menuText S GameNew "Partida nueva" 0 \
  {Partida nueva, descarta cambios de la partida actual}
menuText S GameFirst "Cargar primera partida" 7 {Carga la primera partida filtrada}
menuText S GamePrev "Cargar partida anterior" 16 {Carga la anterior partida filtrada}
menuText S GameReload "Recargar partida actual" 0 \
  {Vuelve a cargar esta partida, descartando cualquier cambio hecho}
menuText S GameNext "Cargar siguiente partida" 7 {Carga la siguiente partida filtrada}
menuText S GameLast "Cargar ltima partida" 9 {Carga la ltima partida filtrada}
menuText S GameRandom "Cargar partida aleatoria" 16 {Carga aleatoriamente una partida filtrada}
menuText S GameNumber "Cargar partida nmero..." 3 \
  {Carga una partida poniendo su nmero}
menuText S GameReplace "Guardar: reemplazar partida..." 10 \
  {Guarda esta partida, reemplazando la antigua versin}
menuText S GameAdd "Guardar: aadir nueva partida..." 9 \
  {Guarda esta partida como una nueva partida en la base de datos}
menuText S GameDeepest "Identificar apertura" 1 \
  {Va a la posicin ms avanzada de la partida segn el libro ECO}
menuText S GameGotoMove "Ir al movimiento nmero..." 6 \
  {Ir al nmero de movimiento especificado en la partida actual}
menuText S GameNovelty "Encontrar novedad..." 12 \
  {Encuentra el primer movimiento de esta partida que no se ha jugado antes}

# Search Menu:
menuText S Search "Buscar" 0
menuText S SearchReset "Poner a cero el filtro" 0 \
  {Pone a cero el filtro para que todas la partidas estn incluidas}
menuText S SearchNegate "Invertir filtro" 0 \
  {Invierte el filtro para slo incluir las partidas excluidas}
menuText S SearchCurrent "Tablero actual..." 0 \
  {Busca por la posicin actual del tablero}
menuText S SearchHeader "Encabezamiento..." 0 \
  {Busca por informacin de encabezamiento (jugador, evento, etc.)}
menuText S SearchMaterial "Material/Patrn..." 0 \
  {Busca por material o patrn del tablero}
menuText S SearchUsing "Usar archivo de bsqueda..." 0 \
  {Busca usando un archivo de opciones de bsqueda}

# Windows menu:
menuText S Windows "Ventanas" 0
menuText S WindowsComment "Editor de comentarios" 0 \
  {Abre/cierra el editor de comentarios}
menuText S WindowsGList "Listado de partidas" 0 \
  {Abre/cierra la  ventana de listado de partidas}
menuText S WindowsPGN "Ventana PGN" 8 \
  {Abre/cierra la ventana de PGN (notacin de partida)}
menuText S WindowsPList "Buscador de jugadores" 2 {Abre/cierra el buscador de jugadores}
menuText S WindowsTmt "Visor de torneos" 9 {Abre/cierra el visor de torneos}
menuText S WindowsSwitcher "Bases de datos" 0 \
  {Abre/cierra la ventana de bases de datos}
menuText S WindowsMaint "Ventana de mantenimiento" 11 \
  {Abre/cierra la ventana de mantenimiento}
menuText S WindowsECO "Buscador ECO" 0 {Abre/cierra la ventana del buscador ECO}
menuText S WindowsRepertoire "Editor de repertorio" 10 \
  {Abrir/cerrar el editor de repertorio de aperturas}
menuText S WindowsStats "Ventana de estadsticas" 12 \
  {Abre/cierra la ventana de estadsticas del filtro}
menuText S WindowsTree "Ventana de rbol de aperturas" 6 {Abre/cierra la ventana de rbol de aperturas (Book)}
menuText S WindowsTB "Ventana de tablas de finales (TBs)" 8 \
  {Abre/cierra la ventana de TBs}
menuText S WindowsBook "Ventana de libros de aperturas (Book)" 0 {Abrir/Cerrar la ventana de libros de aperturas (Book)}
menuText S WindowsCorrChess "Ventana de Correo" 0 {Abrir/Cerrar la ventra de Correo}

# Tools menu:
menuText S Tools "Herramientas" 0
menuText S ToolsAnalysis "Motor de anlisis #1..." 0 \
  {Inicia/para el anlisis del motor de ajedrez #1}
menuText S ToolsAnalysis2 "Motor de anlisis #2..." 18 \
  {Inicia/para el anlisis del motor de ajedrez #2}
menuText S ToolsCross "Tabla cruzada" 0 {Muestra la tabla cruzada para esta partida}
menuText S ToolsEmail "Administrador de Email" 0 \
  {Abre/cierra la ventana del administrador de Email}
menuText S ToolsFilterGraph "Filtro grfico" 7 \
  {Abre/cierra la ventana del filtro grfico}
menuText S ToolsAbsFilterGraph "Filtro grfico Abs." 7 {Abrir/Cerrar la ventana de filtro grfico para valores absolutos}
menuText S ToolsOpReport "Informe de la apertura" 1 \
  {Crea un informe de la apertura para la posicin actual}
menuText S ToolsOpenBaseAsTree "Abrir base como rbol" 0   {Abrir una base y usarla en la ventana de rbol (Tree)}
menuText S ToolsOpenRecentBaseAsTree "Abrir base reciente como rbol" 0   {Abre una base reciente y la usa en ventana de rbol (Tree)} 
menuText S ToolsTracker "Rastreador de piezas"  14 {Abre la ventana del rastreador de piezas}
menuText S ToolsTraining "Entrenamiento"  0 {Entrenamiento (tctica, aperturas,...)}
menuText S ToolsTacticalGame "Partida tctica..."  0 {Juega una partida tctica}
menuText S ToolsSeriousGame "Partida seria..."  0 {Juega una partida seria}
menuText S ToolsTrainOpenings "Entrenamiento de aperturas"  0 {Entrenamiento con un repertorio}
menuText S ToolsTrainReviewGame "Revisar partida"  0 {Adivina movimientos jugados en una partida}
menuText S ToolsTrainTactics "Tctica (problemas)"  0 {Resuelve problemas de tctica}
menuText S ToolsTrainCalvar "Clculo de variaciones"  0 {Clculo de variaciones}
menuText S ToolsTrainFindBestMove "Encontrar la mejor jugada"  0 {Busca el movimiento mejor}
menuText S ToolsTrainFics "Jugar en internet..."  0 {Conecta a freechess.org}
menuText S ToolsBookTuning "Sintonizar libro de aperturas" 0 {Sintoniza el libro (Book)}
menuText S ToolsConnectHardware "Conectar hardware" 0 {Conecta hardware externo"}
menuText S ToolsConnectHardwareConfigure "Configuracin..." 1 {Configuracin}
menuText S ToolsConnectHardwareNovagCitrineConnect "Conectar Novag" 0 {Conecta Novag}
menuText S ToolsConnectHardwareInputEngineConnect "Conectar motor de entrada" 0 {Conecta un motor de entrada (e.d. DGT)}
menuText S ToolsPInfo "Informacin del jugador" 16 \
  {Abre/actualiza la ventana de informacin del jugador}
menuText S ToolsPlayerReport "Informe del jugador..." 3 \
  {Crea un informe sobre un jugador}
menuText S ToolsRating "Grfico del Elo..." 0 \
  {Grfico de la historia del Elo de los jugadores de la actual partida}
menuText S ToolsScore "Grfico de puntuacin..." 1 \
  {Muestra la ventana del grfico de puntuacin}
menuText S ToolsExpCurrent "Exportar la partida actual..." 0 \
  {Escribe la partida actual en un archivo de texto}
menuText S ToolsExpCurrentPGN "Exportar la partida a un archivo PGN..." 33 \
  {Escribe la partida actual en un archivo PGN}
menuText S ToolsExpCurrentHTML "Exportar la partida a un archivo HTML..." 33 \
  {Escribe la partida actual en un archivo HTML}
menuText S ToolsExpCurrentHTMLJS "Exportar la partida a un archivo HTML y JavaScript..." 15 \
  {Escribe la partida actual a un fichero HTML y JavaScript} 
menuText S ToolsExpCurrentLaTeX "Exportar la partida a un archivo LaTeX..." 33 \
  {Escribe la partida actual en un archivo LaTeX}
menuText S ToolsExpFilter "Exportar todas las partidas filtradas..." 1 \
  {Escribe todas las partidas filtradas en un archivo de texto}
menuText S ToolsExpFilterPGN "Exportar filtro a un archivo PGN..." 29 \
  {Escribe todas las partidas filtradas en un archivo PGN}
menuText S ToolsExpFilterHTML "Exportar filtro a un archivo HTML..." 29 \
  {Escribe todas las partidas filtradas en un archivo HTML}
menuText S ToolsExpFilterHTMLJS "Exportar filtro a un archivo HTML y JavaScript..." 17 \
  {Escribe todas las partidas filtradas a ficheros HTML y JavaScript}  
menuText S ToolsExpFilterLaTeX "Exportar filtro a un archivo LaTeX..." 29 \
  {Escribe todas las partidas filtradas en un archivo LaTeX}
menuText S ToolsImportOne "Importar una partida PGN..." 0 \
  {Importa una partida de un texto PGN}
menuText S ToolsImportFile "Importar un archivo de partidas PGN..." 2 \
  {Importa partidas de un archivo PGN}
menuText S ToolsStartEngine1 "Empezar motor 1" 0  {Empieza el motor 1}
menuText S ToolsStartEngine2 "Empezar motor 2" 0  {Empieza el motor 2}
menuText S ToolsCaptureBoard "Capturar Tablero Actual..." 0  {Guardar el tablero actual como imagen.}
menuText S Play "Jugar" 0
menuText S CorrespondenceChess "Ajedrez por correo" 0 \
  {Funciones para ajedrez por correo basado en email y Xfcc}
menuText S CCConfigure "Configurar..." 0 \
  {Configura herramientas externas y configuracin general}
menuText S CCConfigRelay "Configurar observaciones..." 10 {Configurar partidas para ser observadas}
menuText S CCOpenDB "Abrir base de datos..." 0 \
  {Abrir la base de correo por defecto}
menuText S CCRetrieve "Reparar partidas" 0 \
  {Repara partidas va ayuda externa (Xfcc)}
menuText S CCInbox "Procesar correo entrante" 0 \
  {Procesa todos los ficheros en correo entrante de Scid (Inbox)}
menuText S CCSend "Enviar movimiento" 0 \
  {Envia tu movimiento via eMail o ayuda externa (Xfcc)}
menuText S CCResign "Abandonar" 0 {Abandona}
menuText S CCClaimDraw "Reclamar tablas" 0 \
  {Envia un movimiento y reclama tablas}
menuText S CCOfferDraw "Ofrecer tablas" 0 \
  {Envia un movimiento y ofrecer tablas}
menuText S CCAcceptDraw "Aceptar tablas" 0 {Acepta un ofrecimiento de tablas}
menuText S CCNewMailGame "Nueva partida email..." 0 \
  {Empeza una nueva partida por email}
menuText S CCMailMove "Enviar jugada via email..." 0 \
  {Enva el movimiento via email al oponente}
menuText S CCGamePage "Pgina de la partida..." 0 \
  {Abre la partida desde el navegador}
menuText S CCEditCopy "Copiar lista de partidas a Clipbase" 0 \
  {Copia las partidas como una lista CSV a Clipbase}

# Options menu:
menuText S Options "Opciones" 0
menuText S OptionsBoard "Tablero" 0 {Opciones sobre el aspecto del tablero}
menuText S OptionsBoardSize "Tamao del tablero" 0 {Cambia el tamao del tablero}
menuText S OptionsBoardPieces "Estilo de piezas" 10 \
  {Cambia el estilo de piezas del tablero}
menuText S OptionsBoardColors "Colores..." 0 {Cambia los colores del tablero}
menuText S OptionsBoardGraphics "Escaques..." 0 {Elige texturas para escaques}
translate S OptionsBGW {Elegir textura para escaques}
translate S OptionsBoardGraphicsText {Elegir fichero grfico para escaques blancos y negros}
menuText S OptionsBoardNames "Nombres de jugador..." 0 {Edita lista de nombres de jugador}
menuText S OptionsExport "Exportacin" 0 {Cambia las opciones de exportacin de texto}
menuText S OptionsFonts "Fuentes" 0 {Cambia las fuentes}
menuText S OptionsFontsRegular "Habitual" 0 {Cambia la fuente habitual}
menuText S OptionsFontsMenu "Men" 0 {Cambia la fuente del men}
menuText S OptionsFontsSmall "Pequea" 0 {Cambia la fuente pequea}
menuText S OptionsFontsTiny "Tiny" 0 {Cambia la fuente diminuta}
menuText S OptionsFontsFixed "Ancho fijo" 0 {Cambia la fuente de ancho fijo}
menuText S OptionsGInfo "Informacin de la partida" 0 {Informacin de la partida}
menuText S OptionsLanguage "Idioma" 0 {Selecciona el idioma del programa}
menuText S OptionsMovesTranslatePieces "Traducir piezas" 0 \
  {Traduce la primera letra de las piezas}
menuText S OptionsMovesHighlightLastMove "Iluminar ltima jugada" 0 \
  {Ilumina la ltima jugada}
menuText S OptionsMovesHighlightLastMoveDisplay "Mostrar" 0 \
  {Muestra la ltima jugada iluminada}
menuText S OptionsMovesHighlightLastMoveWidth "Ancho" 0 {Espesor de la lnea}
menuText S OptionsMovesHighlightLastMoveColor "Color" 0 {Color de lnea}
menuText S OptionsMoves "Movimientos" 0 {Opciones de la entrada de movimientos}
menuText S OptionsMovesAsk "Preguntar antes de reemplazar movimientos" 0 \
  {Pregunta antes de sobreescribir cualquier movimiento existente}
menuText S OptionsMovesAnimate "Velocidad de la animacin" 1 \
  {Pone el tiempo usado para animar las jugadas}
menuText S OptionsMovesDelay "Demora del automovimiento..." 0 \
  {Pone el tiempo de demora para el modo de automovimiento}
menuText S OptionsMovesCoord "Entrada de movimientos coordinada" 0 \
  {Acepta entrada de movimientos en sistema "coordinado" ("g1f3")}
menuText S OptionsMovesSuggest "Mostrar movimientos sugeridos" 20 \
  {Activa/desactiva la sugerencia de movimientos}
menuText S OptionsShowVarPopup "Mostrar ventana de variaciones" 0 \
  {Activa/desactiva la ventana de variaciones}
menuText S OptionsMovesSpace "Aadir espacios detrs del nmero de movimiento" 0 \
  {Aade espacios detrs del nmero de movimiento}
menuText S OptionsMovesKey "Teclado inteligente" 0 \
  {Activa/desactiva la funcin de autocompletado inteligente de movimientos con teclado}
menuText S OptionsMovesShowVarArrows "Mostrar flechas para las variaciones" 0 \
  {Activa/desactiva mostrar flechas para las variaciones}
menuText S OptionsNumbers "Formato de nmeros" 11 \
  {Selecciona el formato de nmeros}
menuText S OptionsStartup "Inicio" 3 \
  {Selecciona las ventanas que se abren al comenzar}
menuText S OptionsTheme "Tema" 0 {Cambia el aspecto del interfaz}
menuText S OptionsWindows "Ventanas" 0 {Opciones de ventana}
menuText S OptionsWindowsIconify "Autominimizar" 4 \
  {Minimiza todas las ventanas cuando la ventana principal es minimizada}
menuText S OptionsWindowsRaise "Poner a la vista automticamente" 0 \
  {Hace visibles ciertas ventanas (ej. barras de progreso) siempre que sean tapadas}
menuText S OptionsSounds "Sonidos..." 2 \
  {Configura el sonido del anuncio de las jugadas}
menuText S OptionsWindowsDock "Ventanas en dique" 0 {Ventanas en dique}
menuText S OptionsWindowsSaveLayout "Salvar disposicin" 0 {Salva la disposicin}
menuText S OptionsWindowsRestoreLayout "Restaurar disposicin" 0 \
  {Restaura la disposicin}
menuText S OptionsWindowsShowGameInfo "Mostrar informacin de la partida" 0 \
  {Muestrar informacin de la partida}
menuText S OptionsWindowsAutoLoadLayout "Auto cargar primera disposicin" 0 \
  {Autocarga la primera disposicin al iniciar}
menuText S OptionsToolbar "Barra de herramientas ventana principal" 9 \
  {Muestra/oculta la barra de herramientas de la ventana principal}
menuText S OptionsECO "Cargar archivo ECO..." 7 \
  {Cargar el archivo de clasificacin ECO}
menuText S OptionsSpell "Cargar archivo de comprobacin ortogrfica..." 2 \
  {Carga el archivo de comprobacin ortogrfica Scid}
menuText S OptionsTable "Directorio de las tablas de finales (TB)..." 19 \
  {Selecciona el directorio de tablas finales; todas las TB de ese directorio sern usadas}
menuText S OptionsRecent "Archivos recientes..." 9 \
  {Cambia el nmero de archivos recientes mostrados en el men Archivo}
menuText S OptionsBooksDir "Carpeta de libros de aperturas..." 0 \
  {Fija la carpeta de los libros de aperturas (Books)}
menuText S OptionsTacticsBasesDir "Carpeta de bases de datos..." 0 \
  {Fija la carpeta de la base de entrenamiento tctico}
menuText S OptionsSave "Guardar opciones" 0 \
  "Guarda todas las opciones en el fichero $::optionsFile"
menuText S OptionsAutoSave "Autoguardar opciones al salir" 0 \
  {Guarda automticamente todas las opciones cuando se sale de Scid}

# Help menu:
menuText S Help "Ayuda" 1
menuText S HelpContents "Contenidos" 0 {Show the help contents page}
menuText S HelpIndex "ndice" 0 {Muestra la pgina ndice de la ayuda}
menuText S HelpGuide "Gua rpida" 0 {Muestra la pgina de la ayuda gua rpida}
menuText S HelpHints "Sugerencias" 1 {Muestra la pgina de la ayuda sugerencias}
menuText S HelpContact "Informacin de contacto" 15 \
  {Muestra la pgina de la ayuda de la informacin de contacto}
menuText S HelpTip "Sugerencia del da" 0 {Muestra una til sugerencia para Scid}
menuText S HelpStartup "Ventana de inicio" 0 {Muestra la ventana de inicio}
menuText S HelpAbout "Acerca de Scid" 10 {Informacin acerca de Scid}

# Game info box popup menu:
menuText S GInfoHideNext "Ocultar siguiente movimiento" 0
menuText S GInfoMaterial "Mostrar valor del material" 0
menuText S GInfoFEN "Mostrar FEN" 8
menuText S GInfoMarks "Mostrar casillas y flechas coloreadas" 29
menuText S GInfoWrap "Dividir lneas largas" 0
menuText S GInfoFullComment "Mostrar comentarios completos" 8
menuText S GInfoPhotos "Mostrar fotos" 5
menuText S GInfoTBNothing "TBs: nada" 5
menuText S GInfoTBResult  "TBs: slo resultado" 10
menuText S GInfoTBAll "TBs: resultado y mejor movimiento" 23
menuText S GInfoDelete "(No)Borrar esta partida" 4
menuText S GInfoMark "(No)Marcar esta partida" 4
menuText S GInfoInformant "Configurar valores de informacin" 0

# Main window buttons:
helpMsg S .main.fbutton.button.start {Ir al principio de la partida  (Tecla: Inicio)}
helpMsg S .main.fbutton.button.end {Ir al final de la partida  (Tecla: Fin)}
helpMsg S .main.fbutton.button.back {Ir atrs un movimiento  (Tecla: Flecha izquierda)}
helpMsg S .main.fbutton.button.forward {Ir adelante un movimiento  (Tecla: Flecha derecha)}
helpMsg S .main.fbutton.button.intoVar {Moverse dentro de una variacin  (Tecla rpida: v)}
helpMsg S .main.fbutton.button.exitVar {Dejar la variacin actual  (Tecla rpida: z)}
helpMsg S .main.fbutton.button.flip {Girar tablero  (Tecla rpida: .)}
helpMsg S .main.fbutton.button.coords {Poner/quitar las coordenadas del tablero  (Tecla rpida: 0)}
helpMsg S .main.fbutton.button.stm {Activa/desactiva el icono de turno de juego}
helpMsg S .main.fbutton.button.autoplay {Automovimiento de los movimientos  (Tecla: Ctrl+Z)}

# General buttons:
translate S Back {Atrs}
translate S Browse {Hojear}
translate S Cancel {Cancelar}
translate S Continue {Continuar}
translate S Clear {Limpiar}
translate S Close {Cerrar}
translate S Contents {Contenidos}
translate S Defaults {Por defecto}
translate S Delete {Borrar}
translate S Graph {Grfico}
translate S Help {Ayuda}
translate S Import {Importar}
translate S Index {ndice}
translate S LoadGame {Cargar partida}
translate S BrowseGame {Hojear partida}
translate S MergeGame {Incorporar partida}
translate S MergeGames {Mezclar o fusionar partidas}
translate S Preview {Vista previa}
translate S Revert {Retroceder}
translate S Save {Guardar}
translate S Search {Buscar}
translate S Stop {Parar}
translate S Store {Almacenar}
translate S Update {Actualizar}
translate S ChangeOrient {Cambiar orientacin de la ventana}
translate S ShowIcons {Mostrar iconos}
translate S None {Ninguno}
translate S First {Primera}
translate S Current {Actual}
translate S Last {ltima}

# General messages:
translate S game {partida}
translate S games {partidas}
translate S move {movimiento}
translate S moves {movimientos}
translate S all {todo}
translate S Yes {S}
translate S No {No}
translate S Both {Ambos}
translate S King {Rey}
translate S Queen {Dama}
translate S Rook {Torre}
translate S Bishop {Alfil}
translate S Knight {Caballo}
translate S Pawn {Pen}
translate S White {Blancas}
translate S Black {Negras}
translate S Player {Jugador}
translate S Rating {Elo}
translate S RatingDiff {Diferencia de Elo (Blancas - Negras)}
translate S AverageRating {Elo promedio}
translate S Event {Evento}
translate S Site {Lugar}
translate S Country {Pas}
translate S IgnoreColors {Ignorar colores}
translate S Date {Fecha}
translate S EventDate {Evento fecha}
translate S Decade {Dcada}
translate S Year {Ao}
translate S Month {Mes}
translate S Months {enero febrero marzo abril mayo junio julio agosto septiembre octubre noviembre diciembre}
translate S Days {dom lun mar mi jue vie sb}
translate S YearToToday {ltimo ao hasta hoy}
translate S Result {Resultado}
translate S Round {Ronda}
translate S Length {Longitud}
translate S ECOCode {Cdigo ECO}
translate S ECO {ECO}
translate S Deleted {Borrar}
translate S SearchResults {Buscar resultados}
translate S OpeningTheDatabase {Abriendo base de datos}
translate S Database {Base de datos}
translate S Filter {Filtro}
translate S noGames {no hay partidas}
translate S allGames {todas las partidas}
translate S empty {vaca}
translate S clipbase {clipbase}
translate S score {puntuacin}
translate S StartPos {Posicin inicial}
translate S Total {Total}
translate S readonly {slo lectura}

# Standard error messages:
translate S ErrNotOpen {Esta base de datos no est abierta.}
translate S ErrReadOnly {Esta base de datos es de slo lectura; no puede ser cambiada.}
translate S ErrSearchInterrupted {La busqueda se interrumpi; los resultados son incompletos.}

# Game information:
translate S twin {doble}
translate S deleted {borradas}
translate S comment {comentario}
translate S hidden {oculto}
translate S LastMove {ltimo movimiento}
translate S NextMove {Siguiente}
translate S GameStart {Inicio de partida}
translate S LineStart {Inicio de lnea}
translate S GameEnd {Fin de partida}
translate S LineEnd {Fin de lnea}

# Player information:
translate S PInfoAll {Resultados para <b>todas</b> las partidas}
translate S PInfoFilter {Resultados para las partidas <b>filtradas</b>}
translate S PInfoAgainst {Resultados contra}
translate S PInfoMostWhite {Aperturas ms comunes con blancas}
translate S PInfoMostBlack {Aperturas ms comunes con negras}
translate S PInfoRating {Historial de clasificacin}
translate S PInfoBio {Biografa}
translate S PInfoEditRatings {Editar Elos}

# Tablebase information:
translate S Draw {Tablas}
translate S stalemate {rey ahogado}
translate S withAllMoves {con todos los movimientos}
translate S withAllButOneMove {con todos los movimientos excepto uno}
translate S with {con}
translate S only {slo}
translate S lose {formas de perder}
translate S loses {hace perder}
translate S allOthersLose {todos los dems hacen perder}
translate S matesIn {mate en}
translate S hasCheckmated {jaque mate}
translate S longest {el mate ms largo}
translate S WinningMoves {Movimientos ganadores}
translate S DrawingMoves {Movimientos para tablas}
translate S LosingMoves {Movimientos perdedores}
translate S UnknownMoves {Movimientos de resultado desconocido}

# Tip of the day:
translate S Tip {Sugerencia}
translate S TipAtStartup {Sugerencia al iniciar}

# Tree window menus:
menuText S TreeFile "Archivo" 0
menuText S TreeFileFillWithBase "Rellenar cach con base" 0 \
  {Rellena el archivo cach con todas las partidas de la base actual}
menuText S TreeFileFillWithGame "Rellenar cach con partida" 0 \
  {Rellena el fichero cach con movimientos de la partida actual en la base actual}
menuText S TreeFileSetCacheSize "Tamao de cach" 0 {Fija el tamao del cach}
menuText S TreeFileCacheInfo "Informacin de cach" 0 \
  {Informacin y uso del cach}
menuText S TreeFileSave "Guardar archivo cach" 0 \
  {Guarda el archivo cach del rbol (.stc)}
menuText S TreeFileFill "Construir archivo cach" 2 \
  {Construye archivo cach con posiciones de apertura comunes}
menuText S TreeFileBest "Lista de mejores partidas" 9 \
  {Muestra la lista del rbol de mejores partidas}
menuText S TreeFileGraph "Ventana del grfico" 0 \
  {Muestra el grfico para esta rama del rbol}
menuText S TreeFileCopy "Copiar texto del rbol al portapapeles" 1 \
  {Copia texto del rbol al portapapeles}
menuText S TreeFileClose "Cerrar ventana del rbol" 0 \
  {Cerra ventana del rbol}
menuText S TreeMask "Mscara" 0
menuText S TreeMaskNew "Nuevo" 0 {Nueva mscara}
menuText S TreeMaskOpen "Abrir" 0 {Abre mscara}
menuText S TreeMaskOpenRecent "Abrir reciente" 0 {Abre mscara reciente}
menuText S TreeMaskSave "Salvar" 0 {Salva mscara}
menuText S TreeMaskClose "Cerrar" 0 {Cierra mscara}
menuText S TreeMaskFillWithGame "Llenar con partida" 0 \
  {Llena mscara con partida}
menuText S TreeMaskFillWithBase "Llenar con base" 0 \
  {Llena mscara con todas las partidas de la base}
menuText S TreeMaskInfo "Info" 0 {Muestra estadsticas para la mscara actual}
menuText S TreeMaskDisplay "Mostrar mapa de la mscara" 0 \
  {Muestra mscara en forma de rbol}
menuText S TreeMaskSearch "Buscar" 0 {Busca en mscara actual}
menuText S TreeSort "Ordenar" 0
menuText S TreeSortAlpha "Alfabticamente" 0
menuText S TreeSortECO "Por cdigo ECO" 11
menuText S TreeSortFreq "Por frecuencia" 4
menuText S TreeSortScore "Por puntuacin" 4
menuText S TreeOpt "Opciones" 1
menuText S TreeOptSlowmode "Modo Lento" 0 \
  {Movimiento lento para actualizaciones (alta calidad)}
menuText S TreeOptFastmode "Modo Rpido" 0 \
  {Movimiento rpido para actualizaciones (no transpone movimientos)}
menuText S TreeOptFastAndSlowmode "Modo rpido y lento" 0 \
  {Movimiento rpido y modo lento para actualizaciones}
menuText S TreeOptStartStop "Auto actualizado" 0 \
  {Actualizado automtico de la ventana del rbol}
menuText S TreeOptLock "Bloquear" 1 \
  {Bloquea/desbloquea el rbol de la base de datos actual}
menuText S TreeOptTraining "Entrenamiento" 2 \
  {Activa/desactiva el modo de entrenamiento de rbol}
menuText S TreeOptAutosave "Autoguardar archivo cach" 0 \
  {Guarda automticamente el archivo cach cuando se cierra la ventana de rbol}
menuText S TreeHelp "Ayuda" 1
menuText S TreeHelpTree "Ayuda del rbol" 4
menuText S TreeHelpIndex "ndice de la ayuda" 0
translate S SaveCache {Guardar cach}
translate S Training {Entrenamiento}
translate S LockTree {Bloquear}
translate S TreeLocked {Bloqueado}
translate S TreeBest {Mejor}
translate S TreeBestGames {Mejores partidas del rbol}
# Note: the next message is the tree window title row. After editing it,
# check the tree window to make sure it lines up with the actual columns.
translate S TreeTitleRow \
  {    Movim. ECO       Frecuencia   Puntu. AvElo Perf AvAo %Tablas}
translate S TreeTotal {TOTAL}
translate S DoYouWantToSaveFirst {Quieres salvar primero?}
translate S AddToMask {Aadir a mscara}
translate S RemoveFromMask {Eliminar desde la mscara}
translate S AddThisMoveToMask {Aadir este movimiento a la Mscara}
translate S SearchMask {Buscar en mscara}
translate S DisplayMask {Mostrar mscara}
translate S Nag {Cdigo de regao}
translate S Marker {Marcador}
translate S Include {Incluir}
translate S Exclude {Excluir}
translate S MainLine {Lnea principal}
translate S Bookmark {Marcador}
translate S NewLine {Lnea nueva}
translate S ToBeVerified {Para ser verificado}
translate S ToTrain {Para entrenar}
translate S Dubious {Dudoso}
translate S ToRemove {Para quitar}
translate S NoMarker {Sin marcador}
translate S ColorMarker {Color}
translate S WhiteMark {Blanco}
translate S GreenMark {Verde}
translate S YellowMark {Amarillo}
translate S BlueMark {Azul}
translate S RedMark {Rojo}
translate S CommentMove {Comentar movimiento}
translate S CommentPosition {Comentar posicin}
translate S AddMoveToMaskFirst {Aadir primero el movimiento a la mscara}
translate S OpenAMaskFileFirst {Abrir primero un fichero de mscara}
translate S Positions {Posiciones}
translate S Moves {Jugadas}

# Finder window:
menuText S FinderFile "Archivo" 0
menuText S FinderFileSubdirs "Mirar en subdirectorios" 0
menuText S FinderFileClose "Cierra visor de archivos" 0
menuText S FinderSort "Ordenar" 0
menuText S FinderSortType "Tipo" 0
menuText S FinderSortSize "Tamao" 0
menuText S FinderSortMod "Modificado" 0
menuText S FinderSortName "Nombre" 0
menuText S FinderSortPath "Camino" 0
menuText S FinderTypes "Tipos" 0
menuText S FinderTypesScid "Bases de datos Scid" 0
menuText S FinderTypesOld "Bases de datos Scid en formato antiguo" 12
menuText S FinderTypesPGN "Archivos PGN" 9
menuText S FinderTypesEPD "Archivos EPD (libro)" 0
menuText S FinderTypesRep "Archivos de repertorio" 12
menuText S FinderHelp "Ayuda" 1
menuText S FinderHelpFinder "Ayuda del visor de archivos" 0
menuText S FinderHelpIndex "ndice de la ayuda" 0
translate S FileFinder {Visor de archivos}
translate S FinderDir {Directorio}
translate S FinderDirs {Directorios}
translate S FinderFiles {Archivos}
translate S FinderUpDir {Arriba}
translate S FinderCtxOpen {Abrir}
translate S FinderCtxBackup {Copia de seguridad (Backup)}
translate S FinderCtxCopy {Copia}
translate S FinderCtxMove {Jugada}
translate S FinderCtxDelete {Borrar}

# Player finder:
menuText S PListFile "Archivo" 0
menuText S PListFileUpdate "Actualizar" 0
menuText S PListFileClose "Cierra el buscador de jugadores" 0
menuText S PListSort "Ordenar" 0
menuText S PListSortName "Nombre" 0
menuText S PListSortElo "Elo" 0
menuText S PListSortGames "Partidas" 0
menuText S PListSortOldest "Ms antiguo" 10
menuText S PListSortNewest "Ms nuevo" 4

# Tournament finder:
menuText S TmtFile "Archivo" 0
menuText S TmtFileUpdate "Actualizar" 0
menuText S TmtFileClose "Cierra el visor de torneos" 0
menuText S TmtSort "Ordenar" 0
menuText S TmtSortDate "Fecha" 0
menuText S TmtSortPlayers "Jugadores" 0
menuText S TmtSortGames "Partidas" 0
menuText S TmtSortElo "Elo" 0
menuText S TmtSortSite "Lugar" 0
menuText S TmtSortEvent "Evento" 1
menuText S TmtSortWinner "Ganador" 0
translate S TmtLimit "Lmite de lista"
translate S TmtMeanElo "Media de Elo inferior"
translate S TmtNone "No se han encontrado torneos concordantes."

# Graph windows:
menuText S GraphFile "Archivo" 0
menuText S GraphFileColor "Guardar como Postscript en color..." 24
menuText S GraphFileGrey "Guardar como Postscript en escala de grises..." 34
menuText S GraphFileClose "Cerrar ventana" 7
menuText S GraphOptions "Opciones" 0
menuText S GraphOptionsWhite "Blancas" 0
menuText S GraphOptionsBlack "Negras" 0
menuText S GraphOptionsBoth "Ambos" 0
menuText S GraphOptionsPInfo "Jugador Informacin jugador" 0
translate S GraphFilterTitle "Filtro grfico: frecuencia por 1000 partidas"
translate S GraphAbsFilterTitle "Filtro grfico: frecuencia de las partidas"
translate S ConfigureFilter {Configurar Eje-X para Ao, Rating y Movimientos}
translate S FilterEstimate "Estimar"
translate S TitleFilterGraph "Scid: Filtro Grfico"

# Analysis window:
translate S AddVariation {Aadir variacin}
translate S AddAllVariations {Aadir todas las variaciones}
translate S AddMove {Aadir movimiento}
translate S Annotate {Anotar}
translate S ShowAnalysisBoard {Mostrar tablero de anlisis}
translate S ShowInfo {Muestra info del motor}
translate S FinishGame {Finalizar partida}
translate S StopEngine {Parar motor}
translate S StartEngine {Empezar motor}
translate S LockEngine {Bloquea motor en posicin actual}
translate S AnalysisCommand {Direccin de anlisis}
translate S PreviousChoices {Eleccin previa}
translate S AnnotateTime {Poner el tiempo entre movimientos en segundos}
translate S AnnotateWhich {Aadir variaciones}
translate S AnnotateAll {Para movimientos de ambos lados}
translate S AnnotateAllMoves {Anotar todos los movimientos}
translate S AnnotateWhite {Slo para movimientos de las blancas}
translate S AnnotateBlack {Slo para movimientos de las negras}
translate S AnnotateBlundersOnly {Cuando el movimiento de la partida es un error}
translate S AnnotateBlundersOnlyScoreChange {Anlisis reporta errores, con cambio de puntuacin desde: }
translate S BlundersThreshold {Umbral del error }
translate S ScoreAllMoves {Puntuar todos los movimientos}
translate S LowPriority {Baja prioridad del procesador}
translate S ClickHereToSeeMoves {Pulsa aqu para ver movimientos}
translate S ConfigureInformant {Configurar informaciones}
translate S Informant!? {Movimiento interesante}
translate S Informant? {Movimiento malo}
translate S Informant?? {Desastroso}
translate S Informant?! {Movimiento dudoso}
translate S Informant+= {Blancas tienen una ligera ventaja}
translate S Informant+/- {Blancas tienen ventaja}
translate S Informant+- {Blancas tienen una ventaja decisiva}
translate S Informant++- {La partida es considerada ganada}
translate S Book {Libro}
translate S OtherBookMoves {Otros movimientos del libro}
translate S OtherBookMovesTooltip {Movimientos para los que el oponente tiene una respuesta}

# Analysis Engine open dialog:
translate S EngineList {Lista de motores de anlisis}
translate S EngineName {Nombre}
translate S EngineCmd {Orden}
translate S EngineArgs {Parmetros}
translate S EngineDir {Directorio}
translate S EngineElo {Elo}
translate S EngineTime {Fecha}
translate S EngineNew {Nuevo}
translate S EngineEdit {Editar}
translate S EngineRequired {Los campos en negrita son obligatorios; los dems opcionales}

# Stats window menus:
menuText S StatsFile "Archivo" 0
menuText S StatsFilePrint "Imprimir en archivo..." 0
menuText S StatsFileClose "Cerrar ventana" 0
menuText S StatsOpt "Opciones" 0

# PGN window menus:
menuText S PgnFile "Archivo" 0
menuText S PgnFileCopy "Copiar partida al portapapeles" 0
menuText S PgnFilePrint "Imprimir en archivo..." 0
menuText S PgnFileClose "Cerrar ventana PGN" 0
menuText S PgnOpt "Presentacin" 0
menuText S PgnOptColor "Color de la presentacin" 0
menuText S PgnOptShort "Encabezado pequeo (3 lneas)" 13
menuText S PgnOptSymbols "Anotaciones simblicas" 0
menuText S PgnOptIndentC "Sangra en comentarios" 0
menuText S PgnOptIndentV "Sangra en variaciones" 11
menuText S PgnOptColumn "Estilo de columna (un movimiento por lnea)" 1
menuText S PgnOptSpace "Espacio despus del nmero del movimiento" 0
menuText S PgnOptStripMarks "Quitar cdigos de color en casilla/flecha" 3
menuText S PgnOptBoldMainLine "Usar texto en negrita para las jugadas principales" 4
menuText S PgnColor "Colores" 1
menuText S PgnColorHeader "Encabezamiento..." 0
menuText S PgnColorAnno "Anotaciones..." 0
menuText S PgnColorComments "Comentarios..." 0
menuText S PgnColorVars "Variaciones..." 0
menuText S PgnColorBackground "Fondo..." 0
menuText S PgnColorMain "Lnea principal..." 0
menuText S PgnColorCurrent "Color de fondo del ltimo movimiento..." 1
menuText S PgnColorNextMove "Color de fondo del siguiente movimiento..." 0
menuText S PgnHelp "Ayuda" 1
menuText S PgnHelpPgn "Ayuda de PGN" 9
menuText S PgnHelpIndex "ndice de la ayuda" 0
translate S PgnWindowTitle {Planilla - partida %u}

# Crosstable window menus:
menuText S CrosstabFile "Archivo" 0
menuText S CrosstabFileText "Imprimir en archivo texto..." 20
menuText S CrosstabFileHtml "Imprimir en archivo HTML..." 20
menuText S CrosstabFileLaTeX "Imprimir en archivo LaTeX..." 20
menuText S CrosstabFileClose "Cerrar ventana de tabla cruzada" 0
menuText S CrosstabEdit "Editar" 0
menuText S CrosstabEditEvent "Evento" 0
menuText S CrosstabEditSite "Lugar" 0
menuText S CrosstabEditDate "Fecha" 0
menuText S CrosstabOpt "Presentacin" 0
menuText S CrosstabOptAll "Todos contra todos" 0
menuText S CrosstabOptSwiss "Suizo" 0
menuText S CrosstabOptKnockout "Eliminatoria directa" 0
menuText S CrosstabOptAuto "Auto" 0
menuText S CrosstabOptAges "Edad en aos" 1
menuText S CrosstabOptNats "Nacionalidades" 0
menuText S CrosstabOptRatings "Elo" 0
menuText S CrosstabOptTitles "Ttulos" 0
menuText S CrosstabOptBreaks "Puntuaciones de desempate" 0
menuText S CrosstabOptDeleted "Incluir partidas borradas" 17
menuText S CrosstabOptColors "Colores (slo en tabla de suizos)" 0
menuText S CrosstabOptColumnNumbers "Columnas numeradas (Slo en tabla todos contra todos)" 11
menuText S CrosstabOptGroup "Grupos de clasificacin" 0
menuText S CrosstabSort "Ordenar" 0
menuText S CrosstabSortName "Por nombre" 4
menuText S CrosstabSortRating "Por Elo" 4
menuText S CrosstabSortScore "Por puntuacin" 4
menuText S CrosstabColor "Color" 2
menuText S CrosstabColorPlain "Texto simple" 0
menuText S CrosstabColorHyper "Hipertexto" 0
menuText S CrosstabHelp "Ayuda" 1
menuText S CrosstabHelpCross "Ayuda de tabla cruzada" 9
menuText S CrosstabHelpIndex "ndice de la ayuda" 0
translate S SetFilter {Poner filtro}
translate S AddToFilter {Aadir al filtro}
translate S Swiss {Suizo}
translate S Category {Categora}

# Opening report window menus:
menuText S OprepFile "Archivo" 0
menuText S OprepFileText "Imprimir en archivo texto..." 20
menuText S OprepFileHtml "Imprimir en archivo HTML..." 20
menuText S OprepFileLaTeX "Imprimir en archivo LaTeX..." 20
menuText S OprepFileOptions "Opciones..." 0
menuText S OprepFileClose "Cerrar ventana del informe de la apertura" 0
menuText S OprepFavorites "Favoritos" 1
menuText S OprepFavoritesAdd "Aadir informe..." 0
menuText S OprepFavoritesEdit "Editar informe favorito..." 0
menuText S OprepFavoritesGenerate "Generar informe..." 0
menuText S OprepHelp "Ayuda" 1
menuText S OprepHelpReport "Ayuda del informe de la apertura" 11
menuText S OprepHelpIndex "ndice de la ayuda" 0

# Repertoire editor:
menuText S RepFile "Archivo" 0
menuText S RepFileNew "Nuevo" 0
menuText S RepFileOpen "Abrir..." 0
menuText S RepFileSave "Guardar..." 0
menuText S RepFileSaveAs "Guardar como..." 1
menuText S RepFileClose "Cerrar ventana" 0
menuText S RepEdit "Editar" 0
menuText S RepEditGroup "Aadir grupo" 7
menuText S RepEditInclude "Aadir lnea incluida" 13
menuText S RepEditExclude "Aadir lnea excluida" 13
menuText S RepView "Ver" 0
menuText S RepViewExpand "Expandir todos los grupos" 0
menuText S RepViewCollapse "Colapsar todos los grupos" 0
menuText S RepSearch "Buscar" 0
menuText S RepSearchAll "Todo el repertorio..." 0
menuText S RepSearchDisplayed "Slo las lneas mostradas..." 16
menuText S RepHelp "Ayuda" 1
menuText S RepHelpRep "Ayuda del repertorio" 10
menuText S RepHelpIndex "ndice de la ayuda" 0
translate S RepSearch "Bsqueda del repertorio"
translate S RepIncludedLines "Lneas incluidas"
translate S RepExcludedLines "Lneas excluidas"
translate S RepCloseDialog {Este repertorio tiene cambios no guardados.

Realmente quieres continuar y descartar los cambios que has hecho?
}

# Header search:
translate S HeaderSearch {Bsqueda por encabezamiento}
translate S EndSideToMove {Bando a mover al final de la partida}
translate S GamesWithNoECO {Partidas sin ECO?}
translate S GameLength {Duracin:}
translate S FindGamesWith {Encontrar partidas con}
translate S StdStart {Inicio estndar}
translate S Promotions {Promociones}
translate S Comments {Comentarios}
translate S Variations {Variaciones}
translate S Annotations {Anotaciones}
translate S DeleteFlag {Seal de borrado}
translate S WhiteOpFlag {Apertura de las blancas}
translate S BlackOpFlag {Apertura de las negras}
translate S MiddlegameFlag {Mediojuego}
translate S EndgameFlag {Finales}
translate S NoveltyFlag {Novedad}
translate S PawnFlag {Estructura de peones}
translate S TacticsFlag {Tcticas}
translate S QsideFlag {Juego del lado de dama}
translate S KsideFlag {Juego del lado de rey}
translate S BrilliancyFlag {Genialidad}
translate S BlunderFlag {Error}
translate S UserFlag {Usuario}
translate S PgnContains {PGN contiene texto}
translate S Annotator {Comentarista}
translate S Cmnts {Slo partidas comentadas}

# Game list window:
translate S GlistNumber {Nmero}
translate S GlistWhite {Blancas}
translate S GlistBlack {Negras}
translate S GlistWElo {B-Elo}
translate S GlistBElo {N-Elo}
translate S GlistEvent {Evento}
translate S GlistSite {Lugar}
translate S GlistRound {Ronda}
translate S GlistDate {Fecha}
translate S GlistYear {Ao}
translate S GlistEDate {Evento-Fecha}
translate S GlistResult {Resultado}
translate S GlistLength {Longitud}
translate S GlistCountry {Pas}
translate S GlistECO {ECO}
translate S GlistOpening {Apertura}
translate S GlistEndMaterial {Material final}
translate S GlistDeleted {Borrado}
translate S GlistFlags {Seal}
translate S GlistVars {Variaciones}
translate S GlistComments {Comentarios}
translate S GlistAnnos {Anotaciones}
translate S GlistStart {Inicio}
translate S GlistGameNumber {Nmero de partida}
# ====== TODO To be translated ======
translate S GlistAverageElo {Average Elo}
# ====== TODO To be translated ======
translate S GlistRating {Rating}
translate S GlistFindText {Encontrar texto}
translate S GlistMoveField {Movimiento}
translate S GlistEditField {Configurar}
translate S GlistAddField {Aadir}
translate S GlistDeleteField {Quitar}
translate S GlistWidth {Anchura}
translate S GlistAlign {Alinear}
# ====== TODO To be translated ======
translate S GlistAlignL {Align: left}
# ====== TODO To be translated ======
translate S GlistAlignR {Align: right}
# ====== TODO To be translated ======
translate S GlistAlignC {Align: center}
translate S GlistColor {Color}
translate S GlistSep {Separador}
# ====== TODO To be translated ======
translate S GlistCurrentSep {-- Current --}
# ====== TODO To be translated ======
translate S GlistNewSort {New}
# ====== TODO To be translated ======
translate S GlistAddToSort {Add}
# ====== TODO To be translated ======
translate S GsortSort {Sort...}
# ====== TODO To be translated ======
translate S GsortDate {Date}
# ====== TODO To be translated ======
translate S GsortYear {Year}
# ====== TODO To be translated ======
translate S GsortEvent {Event}
# ====== TODO To be translated ======
translate S GsortSite {Site}
# ====== TODO To be translated ======
translate S GsortRound {Round}
# ====== TODO To be translated ======
translate S GsortWhiteName {White Name}
# ====== TODO To be translated ======
translate S GsortBlackName {Black Name}
# ====== TODO To be translated ======
translate S GsortECO {ECO}
# ====== TODO To be translated ======
translate S GsortResult {Result}
# ====== TODO To be translated ======
translate S GsortMoveCount {Move Count}
# ====== TODO To be translated ======
translate S GsortAverageElo {Average Elo}
# ====== TODO To be translated ======
translate S GsortCountry {Country}
# ====== TODO To be translated ======
translate S GsortDeleted {Deleted}
# ====== TODO To be translated ======
translate S GsortEventDate {Event Date}
# ====== TODO To be translated ======
translate S GsortWhiteElo {White Elo}
# ====== TODO To be translated ======
translate S GsortBlackElo {Black Elo}
# ====== TODO To be translated ======
translate S GsortComments {Comments}
# ====== TODO To be translated ======
translate S GsortVariations {Variations}
# ====== TODO To be translated ======
translate S GsortNAGs {NAGs}
# ====== TODO To be translated ======
translate S GsortAscending {Ascending}
# ====== TODO To be translated ======
translate S GsortDescending {Descending}
# ====== TODO To be translated ======
translate S GsortAdd {Add}
# ====== TODO To be translated ======
translate S GsortStore {Store}
# ====== TODO To be translated ======
translate S GsortLoad {Load}
translate S GlistRemoveThisGameFromFilter  {Quita esta partida del filtro}
translate S GlistRemoveGameAndAboveFromFilter  {Quita esta partida y todas las de arriba del filtro}
translate S GlistRemoveGameAndBelowFromFilter  {Quita esta partida y todas las de abajo del filtro}
translate S GlistDeleteGame {Elimina/recupera esta partida de la base}
translate S GlistDeleteAllGames {Elimina todas las partidas de la base que aparecen en el filtro}
translate S GlistUndeleteAllGames {Recupera todas las partidas borradas de la base que aparecen en el filtro}
translate S GlistMergeGameInBase {Fusionar la partida en otra base} 

# Maintenance window:
translate S DatabaseName {Nombre de la base:}
translate S TypeIcon {Tipo de icono:}
translate S NumOfGames {Partidas:}
translate S NumDeletedGames {Partidas borradas:}
translate S NumFilterGames {Partidas en el filtro:}
translate S YearRange {Rango de aos:}
translate S RatingRange {Rango de Elo:}
translate S Description {Descripcin}
translate S Flag {Seal}
translate S CustomFlags {Seales personalizadas}
translate S DeleteCurrent {Borrar partida actual}
translate S DeleteFilter {Borrar partidas filtradas}
translate S DeleteAll {Borrar todas las partidas}
translate S UndeleteCurrent {No borrar partida actual}
translate S UndeleteFilter {No borrar partidas filtradas}
translate S UndeleteAll {No borrar todas las partidas}
translate S DeleteTwins {Borrar partidas dobles}
translate S MarkCurrent {Marcar partida actual}
translate S MarkFilter {Marcar partidas filtradas}
translate S MarkAll {Marcar todas las partidas}
translate S UnmarkCurrent {No marcar partida actual}
translate S UnmarkFilter {No marcar partidas filtradas}
translate S UnmarkAll {No marcar todas las partidas}
translate S Spellchecking {Revisin ortogrfica}
translate S Players {Jugadores}
translate S Events {Eventos}
translate S Sites {Lugares}
translate S Rounds {Rondas}
translate S DatabaseOps {Operaciones con la base de datos}
translate S ReclassifyGames {Reclasificar partidas por ECO...}
translate S CompactDatabase {Compactar base de datos}
translate S SortDatabase {Ordenar base de datos}
translate S AddEloRatings {Aadir clasificacin Elo}
translate S AutoloadGame {Autocargar nmero de partida}
translate S StripTags {Quitar etiquetas PGN}
translate S StripTag {Quitar etiquetas}
translate S Cleaner {MultiHerramienta}
translate S CleanerHelp {
Scid ejecutar, en la actual base de datos, todas las acciones de mantenimiento
que selecciones de la siguiente lista.

Se aplicar el estado actual en la clasificacin ECO y el dilogo de borrado de
dobles si seleccionas esas funciones.
}
translate S CleanerConfirm {
Una vez que la MultiHerramienta de mantenimiento se inicia no puede ser interrumpida!

Esto puede tomar mucho tiempo en una base de datos grande, dependiendo de las funciones que hallas seleccionado y su estado actual.

Ests seguro de querer comenzar las funciones de mantenimiento que has seleccionado?
}
translate S TwinCheckUndelete {Pulsar "u" para no borrar ninguna (undelete)}
translate S TwinCheckprevPair {Pareja anterior}
translate S TwinChecknextPair {Pareja siguiente}
translate S TwinChecker {Scid: Verificar partidas dobles}
translate S TwinCheckTournament {Partidas en torneo:}
translate S TwinCheckNoTwin {No doble  }
translate S TwinCheckNoTwinfound {No fueron detectados dobles para esta partida.\nPara mostrar dobles usando esta ventana debes usar la funcin Borrar partidas dobles..." }
translate S TwinCheckTag {Compartir etiquetas...}
translate S TwinCheckFound1 {Scid encontr $result partidas dobles}
translate S TwinCheckFound2 {y pone pone sus banderas de borrado}
translate S TwinCheckNoDelete {No hay partidas en esta base para borrar.}
translate S TwinCriteria1 {Tus parmetros para encontrar partidas dobles potencialmente pueden causar partidas no-dobles con movimientos similares a ser marcadas como dobles.}
translate S TwinCriteria2 {Es recomendable que si elijes "No" para "algunos movimientos", elijas "S" para los parmetros colores, eventos, lugar, ronda, ao y mes.\nQuieres continuar y borrar partidas dobles en cualquier caso?}
translate S TwinCriteria3 {Es recomendable que especifiques "S" para al menos dos parmetros de "mismo lugar", "misma ronda" y "mismo ao".\nQuieres continuar y borrar dobles en todo caso?}
translate S TwinCriteriaConfirm {Scid: Confirmar parmetros para partidas dobles}
translate S TwinChangeTag "Cambiar las siguientes etiquetas de las:\n\n partidas"
translate S AllocRatingDescription "Este comando usar el actual fichero SpellCheck para aadir  puntuaciones ELO y partidas en esta base. Donde quiera que un jugador no tenga puntuacin pero su puntuacin en el listado del  fichero  spellcheck , su puntuacin ser aadida."
translate S RatingOverride "Sobreescribir puntuaciones existentes no nulas?"
translate S AddRatings "Aadir puntuaciones a:"
translate S AddedRatings {Scid aadi $r puntuaciones Elo en $g partidas.}
translate S NewSubmenu "Nuevo submenu"

# Comment editor:
translate S AnnotationSymbols  {Smbolos de anotacin:}
translate S Comment {Comentario:}
translate S InsertMark {Insertar marca}
translate S InsertMarkHelp {
Insertar/quitar marca: Selecciona color, tipo, casilla.
Insertar/quitar flecha: Botn derecho sobre dos casillas.
}

# Nag buttons in comment editor:
translate S GoodMove {Buena jugada}
translate S PoorMove {Mala jugada}
translate S ExcellentMove {Jugada excelente}
translate S Blunder {Error}
translate S InterestingMove {Jugada interesante}
translate S DubiousMove {Jugada dudosa}
translate S WhiteDecisiveAdvantage {Las blancas tienen decisiva ventaja}
translate S BlackDecisiveAdvantage {Las negras tienen decisiva ventaja}
translate S WhiteClearAdvantage {Las blancas tienen clara ventaja}
translate S BlackClearAdvantage {Las negras tienen clara ventaja}
translate S WhiteSlightAdvantage {Las blancas tienen ligera ventaja}
translate S BlackSlightAdvantage {Las negras tienen ligera ventaja}
translate S Equality {Igualdad}
translate S Unclear {Incierto}
translate S Diagram {Diagrama}

# Board search:
translate S BoardSearch {Tablero de bsqueda}
translate S FilterOperation {Operacin en filtro actual:}
translate S FilterAnd {Y (Restringir filtro)}
translate S FilterOr {O (Aadir al filtro)}
translate S FilterIgnore {IGNORAR (Poner a cero el filtro)}
translate S SearchType {Tipo de bsqueda:}
translate S SearchBoardExact {Posicin exacta (todas las piezas en las mismas casillas)}
translate S SearchBoardPawns {Peones (igual material, todos los peones en las mismas casillas)}
translate S SearchBoardFiles {Columnas (igual material, todos los peones en las mismas columnas)}
translate S SearchBoardAny {Cualquiera (igual material, peones y piezas en cualquier parte)}
translate S SearchInRefDatabase {Bsqueda en la base de referencia}
translate S LookInVars {Mirar en variaciones}

# Material search:
translate S MaterialSearch {Bsqueda de material}
translate S Material {Material}
translate S Patterns {Patrones}
translate S Zero {Cero}
translate S Any {Cualquiera}
translate S CurrentBoard {Tablero actual}
translate S CommonEndings {Finales comunes}
translate S CommonPatterns {Patrones comunes}
translate S MaterialDiff {Diferencia de material}
translate S squares {casillas}
translate S SameColor {Igual color}
translate S OppColor {Color opuesto}
translate S Either {Cualquiera}
translate S MoveNumberRange {Rango de nmero de movimientos}
translate S MatchForAtLeast {Encuentro de al menos}
translate S HalfMoves {medios movimientos}

# Common endings in material search:
translate S EndingPawns {Finales de peones}
translate S EndingRookVsPawns {Torre vs. peon(es)}
translate S EndingRookPawnVsRook {Torre y un pen vs. torre}
translate S EndingRookPawnsVsRook {Torre y peon(es) vs. torre}
translate S EndingRooks {Finales de torre vs. torre}
translate S EndingRooksPassedA {Finales de torre vs. torre con pen pasado}
translate S EndingRooksDouble {Finales de dos torres}
translate S EndingBishops {Finales de alfil vs. alfil}
translate S EndingBishopVsKnight {Finales de alfil vs. caballo}
translate S EndingKnights {Finales de caballo vs. caballo}
translate S EndingQueens {Finales de dama vs. dama}
translate S EndingQueenPawnVsQueen {Dama y un pen vs. dama}
translate S BishopPairVsKnightPair {Medio juego de dos alfiles vs. dos caballos}

# Common patterns in material search:
translate S PatternWhiteIQP {PDA blanco}
translate S PatternWhiteIQPBreakE6 {PDA blanco: d4-d5 ruptura vs. e6}
translate S PatternWhiteIQPBreakC6 {PDA blanco: d4-d5 ruptura vs. c6}
translate S PatternBlackIQP {PDA negro}
translate S PatternWhiteBlackIQP {PDA blanco vs. PDA negro}
translate S PatternCoupleC3D4 {Pareja de peones aislados blancos c3+d4}
translate S PatternHangingC5D5 {Peones colgantes negros en c5 y d5}
translate S PatternMaroczy {Centro Maroczy (con peones en c4 y e4)}
translate S PatternRookSacC3 {Sacrificio de torre en c3}
translate S PatternKc1Kg8 {O-O-O vs. O-O (Rc1 vs. Rg8)}
translate S PatternKg1Kc8 {O-O vs. O-O-O (Rg1 vs. Rc8)}
translate S PatternLightFian {Fianchettos de casillas claras (Alfil-g2 vs. Alfil-b7)}
translate S PatternDarkFian {Fianchettos de casillas oscuras (Alfil-b2 vs. Alfil-g7)}
translate S PatternFourFian {Cuatro Fianchettos (Alfiles en b2,g2,b7,g7)}

# Game saving:
translate S Today {Hoy}
translate S ClassifyGame {Clasificar partida}

# Setup position:
translate S EmptyBoard {Tablero vaco}
translate S InitialBoard {Tablero inicial}
translate S SideToMove {Lado que mueve}
translate S MoveNumber {Movimiento nmero}
translate S Castling {Enroque}
translate S EnPassantFile {Columna al paso}
translate S ClearFen {Quitar FEN}
translate S PasteFen {Pegar FEN}
translate S SaveAndContinue {Salvar (grabar) y continuar}
translate S DiscardChangesAndContinue {Descartar \n cambios y continuar}
translate S GoBack {Volver atrs}

# Replace move dialog:
translate S ReplaceMove {Reemplazar movimiento}
translate S AddNewVar {Aadir nueva variacin}
translate S NewMainLine {Nueva lnea principal}
translate S ReplaceMoveMessage {Ya existe un movimiento.

Puedes reemplazarlo, descartando todos los movimientos posteriores, o aadirlo como una nueva variacin.

(Puedes evitar seguir viendo este mensaje en el futuro desactivando la opcin "Preguntar antes de reemplazar movimientos" en el men Opciones: Movimientos.)}

# Make database read-only dialog:
translate S ReadOnlyDialog {Si haces que esta base de datos sea de slo lectura no se permitirn hacer cambios. No se podrn guardar o reemplazar partidas y no se podrn alterar las seales de borrada. Cualquier ordenacin o clasificacin por ECO ser temporal.

Puedes hacer fcilmente escribible la base de datos otra vez cerrndola y abrindola.

Realmente quieres hacer que esta base de datos sea de slo lectura?}

# Clear game dialog:
translate S ClearGameDialog {Esta partida ha sido cambiada.

Realmente quieres continuar y eliminar los cambios hechos en ella?
}

# Exit dialog:
translate S ExitDialog {Realmente quieres salir de Scid?}
translate S ExitUnsaved {La siguiente base de datos tiene cambios en partidas no guardados. Si sales ahora se perdern estos cambios.}

# Import window:
translate S PasteCurrentGame {Pegar partida actual}
translate S ImportHelp1 \
  {Introducir o pegar una partida en formato PGN en el marco superior.}
translate S ImportHelp2 \
  {Cualquier error importando la partida ser mostrado aqu.}
translate S OverwriteExistingMoves {Sobreescribir movimientos existentes?}

# ECO Browser:
translate S ECOAllSections {todas las divisiones ECO}
translate S ECOSection {divisin ECO}
translate S ECOSummary {Resumen de}
translate S ECOFrequency {Frecuencia de los subcdigos para}

# Opening Report:
translate S OprepTitle {Informe de la apertura}
translate S OprepReport {Informe}
translate S OprepGenerated {Generado por}
translate S OprepStatsHist {Estadsticas e historia}
translate S OprepStats {Estadsticas}
translate S OprepStatAll {Todas las partidas referidas}
translate S OprepStatBoth {Ambos con Elo}
translate S OprepStatSince {Desde}
translate S OprepOldest {Partidas ms antiguas}
translate S OprepNewest {Partidas ms nuevas}
translate S OprepPopular {Popularidad actual}
translate S OprepFreqAll {Frecuencia durante todos los aos: }
translate S OprepFreq1   {Desde el ltimo ao hasta hoy:     }
translate S OprepFreq5   {En los ltimos 5 aos hasta hoy:   }
translate S OprepFreq10  {En los ltimos 10 aos hasta hoy:  }
translate S OprepEvery {una vez cada %u partidas}
translate S OprepUp {sube un %u%s respecto al total de aos}
translate S OprepDown {baja un %u%s respecto al total de aos}
translate S OprepSame {no hay cambios respecto al total de aos}
translate S OprepMostFrequent {Jugadores ms frecuentes}
translate S OprepMostFrequentOpponents {Rivales ms frecuentes}
translate S OprepRatingsPerf {Elo y rendimiento}
translate S OprepAvgPerf {Promedio de Elo y rendimiento}
translate S OprepWRating {Elo de las blancas}
translate S OprepBRating {Elo de las negras}
translate S OprepWPerf {Rendimiento de las blancas}
translate S OprepBPerf {Rendimiento de las negras}
translate S OprepHighRating {Partida con el mayor promedio de Elo}
translate S OprepTrends {Tendencias de resultados}
translate S OprepResults {Resultado de duraciones y frecuencias}
translate S OprepLength {Duracin de la partida}
translate S OprepFrequency {Frecuencia}
translate S OprepWWins {Blancas ganan: }
translate S OprepBWins {Negras ganan:  }
translate S OprepDraws {Tablas:        }
translate S OprepWholeDB {en el conjunto de la base de datos}
translate S OprepShortest {Triunfos ms cortos}
translate S OprepMovesThemes {Movimientos y temas}
translate S OprepMoveOrders {Lneas de movimientos que alcanzan la posicin del informe}
translate S OprepMoveOrdersOne \
  {Slo hay una lnea de movimientos que alcanza esta posicin:}
translate S OprepMoveOrdersAll \
  {Hay %u lneas de movimiento que alcanzan esta posicin:}
translate S OprepMoveOrdersMany \
  {Hay %u lneas de movimiento que alcanzan esta posicin. Las %u ms comunes son:}
translate S OprepMovesFrom {Movimientos desde la posicin del informe}
translate S OprepMostFrequentEcoCodes {Aperturas ms frecuentes}
translate S OprepThemes {Temas posicionales}
translate S OprepThemeDescription {Frecuencia de los temas en las primeras %u jugadas de cada partida}
translate S OprepThemeSameCastling {Enroque al mismo lado}
translate S OprepThemeOppCastling {Enroque en lados opuestos}
translate S OprepThemeNoCastling {Ambos reyes no enrocados}
translate S OprepThemeKPawnStorm {Avanzada de los peones del rey}
translate S OprepThemeQueenswap {Damas intercambiadas}
translate S OprepThemeWIQP {Pen de dama aislado de las blancas}
translate S OprepThemeBIQP {Pen de dama aislado de las negras}
translate S OprepThemeWP567 {Peones blancos en 5/6/7 fila}
translate S OprepThemeBP234 {Peones negros en 2/3/4 fila}
translate S OprepThemeOpenCDE {Columnas c/d/e abiertas}
translate S OprepTheme1BishopPair {Un lado tiene los dos alfiles}
translate S OprepEndgames {Finales}
translate S OprepReportGames {Informe de partidas}
translate S OprepAllGames {Todas las partidas}
translate S OprepEndClass {Tipos de finales segn la ltima posicin de las partidas}
translate S OprepTheoryTable {Tabla terica}
translate S OprepTableComment {Generado a partir de las %u partidas con mejor Elo.}
translate S OprepExtraMoves {Anotacin extra de movimientos en la tabla terica}
translate S OprepMaxGames {Mximas partidas en la tabla terica}
translate S OprepViewHTML {Ver HTML}
translate S OprepViewLaTeX {Ver LaTeX}

# Player Report:
translate S PReportTitle {Informe del jugador}
translate S PReportColorWhite {con las piezas blancas}
translate S PReportColorBlack {con las piezas negras}
translate S PReportMoves {%s despus}
translate S PReportOpenings {Aperturas}
translate S PReportClipbase {Vaciar portapapeles y copiar las partidas}

# Piece Tracker window:
translate S TrackerSelectSingle {El botn izquierdo selecciona esta pieza.}
translate S TrackerSelectPair {El botn izquierdo selecciona esta pieza; el botn derecho tambin selecciona su hermana.}
translate S TrackerSelectPawn {El botn izquierdo selecciona este pen; el botn derecho selecciona los ocho peones.}
translate S TrackerStat {Estadstica}
translate S TrackerGames {% de partidas con movimiento a esta casilla}
translate S TrackerTime {% de tiempo en esta casilla}
translate S TrackerMoves {Movimientos}
translate S TrackerMovesStart {Escribe el nmero del movimiento desde donde debe empezar el rastreo.}
translate S TrackerMovesStop {Escribe el nmero del movimiento donde debe parar el rastreo.}

# Game selection dialogs:
translate S SelectAllGames {Todas las partidas de la base de datos}
translate S SelectFilterGames {Slo las partidas filtradas}
translate S SelectTournamentGames {Slo las partidas del actual torneo}
translate S SelectOlderGames {Slo partidas antiguas}

# Delete Twins window:
translate S TwinsNote {Para ser dobles, dos partidas deben de tener al menos los mismos dos jugadores y los criterios que fijes debajo. Cuando un par de dobles es encontrado, la partida ms corta es borrada. Sugerencia: es mejor hacer la correccin ortogrfica de la base de datos antes de iniciar el borrado de dobles, porque esto mejora su deteccin.}
translate S TwinsCriteria {Criterios: Las partidas dobles deben tener...}
translate S TwinsWhich {Partidas a examinar}
translate S TwinsColors {Jugadores con igual color?}
translate S TwinsEvent {Mismo evento?}
translate S TwinsSite {Mismo sitio?}
translate S TwinsRound {Misma ronda?}
translate S TwinsYear {Mismo ao?}
translate S TwinsMonth {Mismo mes?}
translate S TwinsDay {Mismo da?}
translate S TwinsResult {Mismo resultado?}
translate S TwinsECO {Mismo cdigo ECO?}
translate S TwinsMoves {Mismos movimientos?}
translate S TwinsPlayers {Comparando nombres de jugadores:}
translate S TwinsPlayersExact {Encuentro exacto}
translate S TwinsPlayersPrefix {Slo las primeras 4 letras}
translate S TwinsWhen {Cuando se borren partidas dobles}
translate S TwinsSkipShort {Ignorar todas las partidas con menos de cinco movimientos?}
translate S TwinsUndelete {Quitar marcas de borrado primero?}
translate S TwinsSetFilter {Poner filtro a todas las partidas borradas?}
translate S TwinsComments {Saltar siempre partidas con comentarios?}
translate S TwinsVars {Saltar siempre partidas con variaciones?}
translate S TwinsDeleteWhich {Qu partida borrar:}
translate S TwinsDeleteShorter {Partida ms corta}
translate S TwinsDeleteOlder {Nmero de partida menor}
translate S TwinsDeleteNewer {Nmero de partida mayor}
translate S TwinsDelete {Borrar partidas}

# Name editor window:
translate S NameEditType {Tipo de dato a editar}
translate S NameEditSelect {Partidas a editar}
translate S NameEditReplace {Reemplazar}
translate S NameEditWith {con}
translate S NameEditMatches {Encuentros: Presionar Ctrl+1 a Ctrl+9 para seleccionarlo}
translate S CheckGames {Revisar partidas}
translate S CheckGamesWhich {Revisar partidas}
translate S CheckAll {Todas las partidas}
translate S CheckSelectFilterGames {Slo las partidas del filtro}

# Classify window:
translate S Classify {Clasificar}
translate S ClassifyWhich {Clasificar por cdigos ECO}
translate S ClassifyAll {Todas las partidas (sobreescribir cdigo ECO)}
translate S ClassifyYear {Todas las partidas jugadas en el ltimo ao}
translate S ClassifyMonth {Todas las partidas jugadas en el ltimo mes}
translate S ClassifyNew {Slo las partidas todava sin cdigo ECO}
translate S ClassifyCodes {Cdigo ECO a usar}
translate S ClassifyBasic {Slo cdigo bsico ("B12", ...)}
translate S ClassifyExtended {Extensiones Scid ("B12j", ...)}

# Compaction:
translate S NameFile {Archivo de nombres}
translate S GameFile {Archivo de partidas}
translate S Names {Nombres}
translate S Unused {No usado}
translate S SizeKb {Tamao (kb)}
translate S CurrentState {Estado actual}
translate S AfterCompaction {Despus de la compactacin}
translate S CompactNames {Compactar archivo de nombres}
translate S CompactGames {Compactar archivo de partidas}
translate S NoUnusedNames "No hay nombres sin usar, por tanto el nombre del fichero est ya totalmente compactado."
translate S NoUnusedGames "El fichero ya est totalmente compactado."
translate S NameFileCompacted {El fichero de nombre para la base de datos "[file tail [sc_base filename]]" fue compactado.}
translate S GameFileCompacted {El fichero de partidas para la base de datos "[file tail [sc_base filename]]" fue compactado.}

# Sorting:
translate S SortCriteria {Criterio}
translate S AddCriteria {Aadir criterio}
translate S CommonSorts {Ordenaciones comunes}
translate S Sort {Ordenar}

# Exporting:
translate S AddToExistingFile {Aadir partidas a un archivo existente?}
translate S ExportComments {Exportar comentarios?}
translate S ExportVariations {Exportar variaciones?}
translate S IndentComments {Sangrar comentarios?}
translate S IndentVariations {Sangrar variaciones?}
translate S ExportColumnStyle {Estilo de columna (un movimiento por lnea)?}
translate S ExportSymbolStyle {Estilo de anotacin simblico:}
translate S ExportStripMarks {Quitar marca de cdigos de casilla/flecha de los comentarios?}

# Goto game/move dialogs:
translate S LoadGameNumber {Escribe el nmero de la partida a cargar:}
translate S GotoMoveNumber {Ir al movimiento nmero:}

# Copy games dialog:
translate S CopyGames {Copiar partidas}
translate S CopyConfirm {
 Realmente deseas copiar las [::utils::thousands $nGamesToCopy] partidas fitradas
 de la base de datos "$fromName"
 a la base de datos "$targetName"?
}
translate S CopyErr {No se pueden copiar las partidas}
translate S CopyErrSource {la base de datos fuente}
translate S CopyErrTarget {la base de datos de destino}
translate S CopyErrNoGames {no tiene partidas en su filtro}
translate S CopyErrReadOnly {es slo de lectura}
translate S CopyErrNotOpen {no est abierta}

# Colors:
translate S LightSquares {Casillas claras}
translate S DarkSquares {Casillas oscuras}
translate S SelectedSquares {Casillas seleccionadas}
translate S SuggestedSquares {Casillas de movimiento sugerido}
translate S WhitePieces {Piezas blancas}
translate S BlackPieces {Piezas negras}
translate S WhiteBorder {Borde blancas}
translate S BlackBorder {Borde negras}

# Novelty window:
translate S FindNovelty {Encontrar novedad}
translate S Novelty {Novedad}
translate S NoveltyInterrupt {Busqueda de novedades interrumpida}
translate S NoveltyNone {Ninguna novedad encontrada para esta partida}
translate S NoveltyHelp {
Scid encontrar el primer movimiento de la actual partida que alcanza una posicin no encontrada en la base de datos seleccionada o en el libro de aperturas ECO.
}

# Sounds configuration:
translate S SoundsFolder {Directorio de los archivos de sonido}
translate S SoundsFolderHelp {El directorio debe contener los archivos King.wav, a.wav, 1.wav, etc.}
translate S SoundsAnnounceOptions {Opciones de anunciamiento de movimientos}
translate S SoundsAnnounceNew {Anunciar nuevos movimientos cuando sean hechos}
translate S SoundsAnnounceForward {Anunciar movimientos cuando avancemos un movimiento}
translate S SoundsAnnounceBack {Anunciar movimiento cuando rectifiquemos o retrocedamos una jugada}

# Upgrading databases:
translate S Upgrading {Actualizacin}
translate S ConfirmOpenNew {
Este es un formato de base de datos antiguo (Scid 3) que no puede ser abierto con Scid 4, pero ya se ha creado una versin de formato nuevo (Scid 4).

Quieres abrir la versin de formato nuevo de la base de datos?
}
translate S ConfirmUpgrade {
Esta es una base de datos en un formato antiguo (Scid 3). Se debe crear una versin de formato nuevo de base de datos antes de poder ser usada en Scid 4.

La actualizacin crear una nueva versin de la base de datos.

Esto puede tomar un tiempo, pero slo es necesario hacerlo una vez. Puedes cancelar si toma demasiado tiempo.

Quieres actualizar esta base de datos ahora?
}

# Recent files options:
translate S RecentFilesMenu {Nmero de archivos recientes en el men Archivo}
translate S RecentFilesExtra {Nmero de archivos recientes en submen extra}

# My Player Names options:
translate S MyPlayerNamesDescription {
Escriba una lista de nombres de jugadores preferidos, un nombre por cada lnea. Estn permitidos los comodines (por ejemplo "?" para un slo caracter, "*" para varios caracteres).

Cada vez que carge una partida con un jugador de la lista se girar el tablero, si fuese necesario, para ver la partida desde la perspectiva del jugador.
}
translate S showblunderexists {Mostrar metedura de pata}
translate S showblundervalue {Mostrar valor de la metedura de pata}
translate S showscore {Mostrar marcador}
translate S coachgame {Entrenador}
translate S configurecoachgame {Configurar entrenador}
translate S configuregame {Configuracin de partida}
translate S Phalanxengine {Motor Phalanx}
translate S Coachengine {Motor entrenador}
translate S difficulty {Dificultad}
translate S hard {Duro}
translate S easy {Fcil}
translate S Playwith {Juega con}
translate S white {blancas}
translate S black {negras}
translate S both {ambos}
translate S Play {Jugar}
translate S Noblunder {Sin errores}
translate S blunder {Meteduras de pata}
translate S Noinfo {-- Sin informacin --}
translate S PhalanxOrTogaMissing {Phalanx o Toga no encontrado}
translate S moveblunderthreshold {El movimiento es una metedura de pata si la prdida de puntuacin es mayor que }
translate S limitanalysis {Tiempo lmite para anlisis del motor}
translate S seconds {segundos}
translate S Abort {Abortar}
translate S Resume {Reanudar}
translate S OutOfOpening {Fuera de apertura}
translate S NotFollowedLine {T no sigues la lnea}
translate S DoYouWantContinue {Quieres continuar?}
translate S CoachIsWatching {Entrenador}
translate S Ponder {Pensar siempre (el motor)}
translate S LimitELO {Limitar fuerza Elo}
translate S DubiousMovePlayedTakeBack {Movimiento dudoso, quieres rectificar?}
translate S WeakMovePlayedTakeBack {Movimiento flojo, quieres rectificar ?}
translate S BadMovePlayedTakeBack {Movimiento malo, quieres rectificar ?}
translate S Iresign {Yo abandono}
translate S yourmoveisnotgood {tu movimiento no es bueno}
translate S EndOfVar {Fin de la variante}
translate S Openingtrainer {Entrenador de aperturas}
translate S DisplayCM {Muestra posibles movimientos}
translate S DisplayCMValue {Muestra valor de posibles movimientos}
translate S DisplayOpeningStats {Muestra estadsticas}
translate S ShowReport {Muestra informe}
translate S NumberOfGoodMovesPlayed {buenos movimientos jugados}
translate S NumberOfDubiousMovesPlayed {dudosos momientos jugados}
translate S NumberOfMovesPlayedNotInRepertoire {movimientos jugados fuera de repertorio}
translate S NumberOfTimesPositionEncountered {veces encontrada la posicin}
translate S PlayerBestMove  {Permite nicamente movimientos mejores}
translate S OpponentBestMove {Oponente juega mejores movimientos}
translate S OnlyFlaggedLines {Slo lneas marcadas}
translate S resetStats {Reinicia estadsticas}
translate S Repertoiretrainingconfiguration {Configuracin del repertorio de entrenamiento}
translate S Loadingrepertoire {Cargando repertorio}
translate S Movesloaded {Movimientos cargados}
translate S Repertoirenotfound {Repertorio no encontrado}
translate S Openfirstrepertoirewithtype {Abrir primero una base con icono/tipo de repertorio colocado en el lado derecho}
translate S Movenotinrepertoire {Movimiento no est en el repertorio}
translate S PositionsInRepertoire {Posiciones en repertorio}
translate S PositionsNotPlayed {Posiciones no jugadas}
translate S PositionsPlayed {Posiciones jugadas}
translate S Success {xitos}
translate S DubiousMoves {Movimientos dudosos}
translate S OutOfRepertoire {Fuera de repertorio}
translate S ConfigureTactics {Configurar tctica}
translate S ResetScores {Reiniciar marcadores (puntuaciones)}
translate S LoadingBase {Cargando base}
translate S Tactics {Tcticas}
translate S ShowSolution {Mostrar solucin}
translate S NextExercise {Ejercicio siguiente}
translate S PrevExercise {Ejercicio anterior}
translate S StopTraining {Parar entrenamiento}
translate S Next {Siguiente}
translate S ResettingScore {Reiniciando marcador}
translate S LoadingGame {Cargando partida}
translate S MateFound {Mate encontrado}
translate S BestSolutionNotFound {No fue encontrada la mejor solucin!}
translate S MateNotFound {Mate no encontrado}
translate S ShorterMateExists {Esiste un mate ms corto}
translate S ScorePlayed {Marcador jugado}
translate S Expected {Esperado}
translate S ChooseTrainingBase {Elegir base de entrenamiento}
translate S Thinking {Pensando}
translate S AnalyzeDone {Anlisis hecho}
translate S WinWonGame {Gana la partida ganada}
translate S Lines {Lneas}
translate S ConfigureUCIengine {Configurar motor UCI}
translate S SpecificOpening {Apertura especfica}
translate S StartNewGame {Empezar partida nueva}
translate S FixedLevel {Nivel fijado}
translate S Opening {Abriendo}
translate S RandomLevel {Nivel aleatorio}
translate S StartFromCurrentPosition {Empezar desde la posicin actual}
translate S FixedDepth {Profundidad fija}
translate S Nodes {Nodos} 
translate S Depth {Profundidad}
translate S Time {Tiempo} 
translate S SecondsPerMove {Segundos por movimiento}
translate S Engine {Motor}
translate S TimeMode {Modo de tiempo}
translate S TimeBonus {Tiempo + bonus}
translate S TimeMin {min}
translate S TimeSec {seg}
translate S AllExercisesDone {Todos los ejercicios hechos}
translate S MoveOutOfBook {Movimiento fuera del libro}
translate S LastBookMove {ltimo movimiento del libro}
translate S AnnotateSeveralGames {Anotar las partidas\ndesde la actual hasta la partida: }
translate S FindOpeningErrors {Encontrar errores en los primeros }
translate S MarkTacticalExercises {Marca ejercicios tcticos}
translate S UseBook {Usar libro de aperturas (Book)}
translate S MultiPV {Variantes mltiples}
translate S Hash {Memoria Hash}
translate S OwnBook {Usar libro (book) del motor}
translate S BookFile {Libro de aperturas}
translate S AnnotateVariations {Anotar variantes}
translate S ShortAnnotations {Anotaciones cortas}
translate S addAnnotatorTag {Aadir etiqueta de anotador}
translate S AddScoreToShortAnnotations {Aadir puntuacin para anotaciones cortas}
translate S Export {Exportar}
translate S BookPartiallyLoaded {Libro parcialmente cargado}
translate S Calvar {Clculo de variantes}
translate S ConfigureCalvar {Configuracin}
translate S Reti {Apertura Reti}
translate S English {Apertura inglesa}
translate S d4Nf6Miscellaneous {1.d4 Cf6 variadas}
translate S Trompowsky {Apertura Trompowsky}
translate S Budapest {Gambito Budapest}
translate S OldIndian {Defensa india antigua}
translate S BenkoGambit {Gambito Benko}
translate S ModernBenoni {Defensa Benoni moderna}
translate S DutchDefence {Defensa holandesa}
translate S Scandinavian {Defensa escandinava}
translate S AlekhineDefence {Defensa Alekhine}
translate S Pirc {Defensa Pirc}
translate S CaroKann {Defensa Caro-Kann}
translate S CaroKannAdvance {Defensa Caro-Kann, variante del avance}
translate S Sicilian {Defensa Siciliana}
translate S SicilianAlapin {Defensa Siciliana, variante Alapin}
translate S SicilianClosed {Defensa Siciliana, variante cerrada}
translate S SicilianRauzer {Defensa Siciliana, variante Rauzer}
translate S SicilianDragon {Defensa Siciliana, variante del dragon}
translate S SicilianScheveningen {Defensa Siciliana, variante Scheveningen}
translate S SicilianNajdorf {Defensa Siciliana, Variante Najdorf}
translate S OpenGame {Apertura abierta}
translate S Vienna {Apertura Vienesa}
translate S KingsGambit {Gambito de rey}
translate S RussianGame {Partida rusa}
translate S ItalianTwoKnights {Apertura italiana, variante de los dos caballos}
translate S Spanish {Apertura espaola}
translate S SpanishExchange {Apertura espaola, variante del cambio}
translate S SpanishOpen {Apertura espaola}
translate S SpanishClosed {Apertura espaola, variante cerrada}
translate S FrenchDefence {Defensa francesa}
translate S FrenchAdvance {Defensa francesa, variante del avance}
translate S FrenchTarrasch {Defensa francesa, variante Tarrasch}
translate S FrenchWinawer {Defensa francesa, variante Winawer}
translate S FrenchExchange {Defensa francesa, variante del cambio}
translate S QueensPawn {Apertura de pen de dama}
translate S Slav {Defensa eslava}
translate S QGA {Gambito de dama aceptado}
translate S QGD {Gambito de dama declinado}
translate S QGDExchange {Gambito de dama declinado, variante del cambio}
translate S SemiSlav {Defensa semieslava del gambito de dama declinado}
translate S QGDwithBg5 {Gambito de dama declinado con Ag5}
translate S QGDOrthodox {Gambito de dama declinado, defensa ortodoxa}
translate S Grunfeld {Defensa Grnfeld}
translate S GrunfeldExchange {Variante del cambio de la defensa Grnfeld }
translate S GrunfeldRussian {Variante rusa de la defensa Grnfeld}
translate S Catalan {Catalana}
translate S CatalanOpen {Apertura catalana}
translate S CatalanClosed {Apertura catalana, variante cerrada}
translate S QueensIndian {Defensa india de dama}
translate S NimzoIndian {Apertura Nimzo-India}
translate S NimzoIndianClassical {Apertura Nimzo-India clsica}
translate S NimzoIndianRubinstein {Variante Rubinstein de la Nimzo-India}
translate S KingsIndian {India de rey}
translate S KingsIndianSamisch {Ataque Smish de la india de rey}
translate S KingsIndianMainLine {Lnea principal india de rey}
translate S ConfigureFics {Configurar FICS}
translate S FICSGuest {Autentificacin como invitado}
translate S FICSServerPort {Puerto del servidor}
translate S FICSServerAddress {Direccin IP}
translate S FICSRefresh {Refrescar}
translate S FICSTimesealPort {Puerto Timeseal}
translate S FICSSilence {Silencio}
translate S FICSOffers {Ofertas}
translate S FICSConsole {Consola}
translate S FICSGames {Partidas}
translate S FICSUnobserve {Parar vistazo de partida}
translate S FICSProfile {Muestra tu historia y perfil}
translate S FICSRelayedGames {Partidas retransmitidas}
translate S FICSFindOpponent {Buscar oponente}
translate S FICSTakeback {Retrocede}
translate S FICSTakeback2 {Retrocede 2}
translate S FICSInitTime {Tiempo inicial (min)}
translate S FICSIncrement {Incremento (seg)}
translate S FICSRatedGame {Partida valorada}
translate S FICSAutoColour {automtico}
translate S FICSManualConfirm {confirma manualmente}
translate S FICSFilterFormula {Filtrar con frmula}
translate S FICSIssueSeek {Panel de retos}
translate S FICSChallenge {Retar}
translate S FICSAccept {aceptar}
translate S FICSDecline {rechazar}
translate S FICSColour {Color}
translate S FICSSend {enviar}
translate S FICSConnect {Conectar}
translate S FICSdefaultuservars {Usa valores por defecto}
translate S FICSObserveconfirm {Quieres observar la partida}
translate S GameReview {Revisin de partida}
translate S GameReviewTimeExtended {Tiempo extendido}
translate S GameReviewMargin {Margen de error}
translate S GameReviewAutoContinue {Autocontinuar cuando el movimiento es correcto}
translate S GameReviewReCalculate {Usar tiempo extendido}
translate S GameReviewAnalyzingMovePlayedDuringTheGame {Analizando movimiento jugado durante la partida}
translate S GameReviewAnalyzingThePosition {Analizando la posicin}
translate S GameReviewEnterYourMove {Introduce tu movimiento}
translate S GameReviewCheckingYourMove {Comprobando tu movimiento}
translate S GameReviewYourMoveWasAnalyzed {Tu movimiento fue analizado}
translate S GameReviewYouPlayedSameMove {Jugaste el mismo movimiento que en la partida}
translate S GameReviewScoreOfYourMove {Puntuacin de tu movimiento}
translate S GameReviewGameMoveScore {Puntuacin del movimiento de la partida}
translate S GameReviewEngineScore {Puntuacin del motor}
translate S GameReviewYouPlayedLikeTheEngine {T jugaste como el motor}
translate S GameReviewNotEngineMoveButGoodMove {No es el movimiento del motor, pero es tambin un buen movimiento}
translate S GameReviewMoveNotGood {Este movimiento no es bueno, la puntuacin es }
translate S GameReviewMovesPlayedLike {Movimientos jugados como}
translate S GameReviewMovesPlayedEngine {Movimientos jugados como motor}
translate S CCDlgConfigureWindowTitle {Configurar Ajedrez por correo}
translate S CCDlgCGeneraloptions {Opciones generales}
translate S CCDlgDefaultDB {Base por defecto:}
translate S CCDlgInbox {Entrante (Carpeta):}
translate S CCDlgOutbox {Saliente (carpeta):}
translate S CCDlgXfcc {Configuracin Xfcc:}
translate S CCDlgExternalProtocol {Protocolo externo (e.g. Xfcc)}
translate S CCDlgFetchTool {Herramienta de traer:}
translate S CCDlgSendTool {Herramienta de envo:}
translate S CCDlgEmailCommunication {Comunicacin email}
translate S CCDlgMailPrg {Programa de correo:}
translate S CCDlgBCCAddr {(B)CC Direccin:}
translate S CCDlgMailerMode {Modo:}
translate S CCDlgThunderbirdEg {p.e. Thunderbird, Mozilla Mail, Icedove...}
translate S CCDlgMailUrlEg {p.e. Evolution}
translate S CCDlgClawsEg {p.e. Sylpheed Claws}
translate S CCDlgmailxEg {p.e. mailx, mutt, nail...}
translate S CCDlgAttachementPar {Parmetro Adjunto (Attachment):}
translate S CCDlgInternalXfcc {Usar soporte interno Xfcc}
translate S CCDlgConfirmXfcc {Confirmar jugadas}
translate S CCDlgSubjectPar {Parmetro Sujeto (Subject):}
translate S CCDlgDeleteBoxes {Vaciar Entrante/Saliente}
translate S CCDlgDeleteBoxesText {Quieres realmente vaciar tus carpetas Entrante y Saliente para Ajedrez por correspondencia? Esto requiere una nueva sincronizacin para mostrar el estado ltimo de tus partidas}
translate S CCDlgConfirmMove {Confirmar jugada}
translate S CCDlgConfirmMoveText {Si t confirmas, la siguiente jugada y comentario ser enviado al servidor:}
translate S CCDlgDBGameToLong {Lnea principal inconsistente}
translate S CCDlgDBGameToLongError {La lnea principal en tu base es ms larga que de la partida en la bandeja de entrada. Si la bandeja de entrada contiene la partida actual, algunos movimientos fueron aadidos a la lnea principal en la base errneamente.\nEn este caso acorte la lnea principal a la (max) jugada\n}
translate S CCDlgStartEmail {Empezar nueva partida por email}
translate S CCDlgYourName {Tu nombre:}
translate S CCDlgYourMail {Tu direccin email:}
translate S CCDlgOpponentName {Nombre de oponente:}
translate S CCDlgOpponentMail {Direccin email de oponente:}
translate S CCDlgGameID {Partida ID (nico):}
translate S CCDlgTitNoOutbox {Scid: Salida del Correo de Ajedrez}
translate S CCDlgTitNoInbox {Scid: Entrada del Correo de Ajedrez}
translate S CCDlgTitNoGames {Scid: No hay partidas de Ajedrez por Correo}
translate S CCErrInboxDir {Carpeta de entrada del Correo de Ajedrez (Entrante):}
translate S CCErrOutboxDir {Carpeta de salida del Correo de Ajedrez (Saliente):}
translate S CCErrDirNotUsable {No existe o no est accesible!\nPor favor, compruebe y corrija los parmetros.}
translate S CCErrNoGames {No contiene ninguna partida!\nPor favor, trigala primero.}
translate S CCDlgTitNoCCDB {Scid: No es una Base de Ajedrez por Correo}
translate S CCErrNoCCDB {No hay una Base del tipo 'Correo' abierta. Por favor, abra una antes de usar funciones de ajedrez por correo.}
translate S CCFetchBtn {Traer partidas desde el servidor y procesar correo entrante}
translate S CCPrevBtn {Ir a partida anterior}
translate S CCNextBtn {Ir a partida siguiente}
translate S CCSendBtn {Enviar movimiento}
translate S CCEmptyBtn {Correos entrante y saliente vacos}
translate S CCHelpBtn {Ayuda en iconos e indicadores de estatus. \n Para ayuda general, pulse F1}
translate S CCDlgServerName {Nombre del servidor:}
translate S CCDlgLoginName  {Nombre de registro:}
translate S CCDlgPassword   {Contrasea:}
translate S CCDlgURL        {Xfcc-URL:}
translate S CCDlgRatingType {Tipo de puntuacin (Rating):}
translate S CCDlgDuplicateGame {El ID de la partida no es nico}
translate S CCDlgDuplicateGameError {Esta partida existe ms de una vez en tu base. Por favor, borra todos los duplicados y compacta tu fichero de partidas (Fichero/Mantenimiento/Compactar base de datos).}
translate S CCDlgSortOption {Ordenando:}
translate S CCDlgListOnlyOwnMove {Slo partidas que tienen el movimiento}
translate S CCOrderClassicTxt {Lugar, Evento, Ronda, Resultado, Blancas, Negras}
translate S CCOrderMyTimeTxt {Mi reloj}
translate S CCOrderTimePerMoveTxt {Tiempo por movimiento falta el prximo control de tiempo}
translate S CCOrderStartDate {Empezar fecha}
translate S CCOrderOppTimeTxt {Reloj de los oponentes}
translate S CCDlgConfigRelay {Configurar observaciones ICCF}
translate S CCDlgConfigRelayHelp {Ir a las partidas de la pgina en http://www.iccf-webchess.com y mostrar la partida a ser observada. Si tu ves el tablero de ajedrez copia la URL desde tu explorador a la lista. !Una sola URL por lnea!\nExample: http://www.iccf-webchess.com/MakeAMove.aspx?id=266452}
translate S ExtHWConfigConnection {Configurar hardware externo}
translate S ExtHWPort {Puerto}
translate S ExtHWEngineCmd {Comando del motor}
translate S ExtHWEngineParam {Parmetro del motor}
translate S ExtHWShowButton {Mostrar botn}
translate S ExtHWHardware {Hardware}
translate S ExtHWNovag {Novag Citrine}
translate S ExtHWInputEngine {Motor de entrada}
translate S ExtHWNoBoard {Sin tablero}
translate S NovagReferee {rbitro}
translate S IEConsole {Consola de entrada del motor}
translate S IESending {Movimientos enviados por}
translate S IESynchronise {Sincronizar}
translate S IERotate  {Rotar}
translate S IEUnableToStart {Imposible empezar con el motor de entrada:}
translate S DoneWithPosition {Terminado con la posicin}
translate S Board {Tablero}
translate S showGameInfo {Mostrar informacin de la partida}
translate S autoResizeBoard {Tamao automtico del tablero}
translate S DockTop {Mover arriba}
translate S DockBottom {Mover abajo}
translate S DockLeft {Mover a la izquierda}
translate S DockRight {Mover a la derecha}
translate S Undock {Ventana flotante}
translate S ChangeIcon {Cambiar icono...}

}
# end of spanish.tcl








# Text for menu names and status bar help messages in English.
# Part of Scid (Shane's Chess Information Database).
#
# Instructions for adding a new language:
#
# (1) Choose a letter code for the language. Currently assigned codes are:
#      E=English, D=Deutsch, F=Francais, S=Spanish, B=Brasil Portuguese,
#      P=Polish, N=Nederlands, W=Swedish, O=Norsk, C=Czech, H=Hungarian,
#      Y=Serbian.
#
# (2) Edit the code below that has the lines "addLanguage ..." and add your
#     new language. The final digit in each line is the index of the
#     letter to underline in the menu, counting from 0 as the first letter.
#
# (3) Copy the section of English menu and help message details below (all
#     the commands that start "menuText E ..." or "helpMsg E ..." or
#     "translate E ...") and change all the "E" letters to the letter you
#     assigned for the new language.
#
# (4) Write the translations. This involves changing anything "in quotes"
#     or {in braces} for the menuText, helpMsg and translate commands.
#
#     A menu command has the format:
#         menuText L tag "Name..." underline {HelpMessage...}
#
#     A status bar help message for a button has the format:
#         helpMsg L tag {HelpMessage...}
#
#     A general word or message translation has the format:
#         translate L tag {message...}
#
#     where "L" is the language letter, "tag" is the name of the menu entry
#     or the button widget name, and "underline" is the index of the letter
#     to underline, counting from zero as the first letter. Two menu entries
#     that appear in the same menu should have a different underlined letter.
#     If in doubt, just make them all "0" and I'll assign sensible underlined
#     letters when your translations are incorporated into Scid.
#
# Additions, corrections? Email: sgh@users.sourceforge.net


addLanguage U Suomi 1 iso8859-1

proc setLanguage_U {} {

# File menu:
menuText U File "Tiedosto" 0
menuText U FileNew "Uusi..." 0 {Luo uusi Scid-tietokanta}
menuText U FileOpen "Avaa..." 0 {Avaa olemassaoleva Scid-tietokanta}
menuText U FileClose "Sulje" 0 {Sulje Scid-tietokanta}
menuText U FileFinder "Etsi" 0 {Avaa tiedostonhakuikkuna}
menuText U FileBookmarks "Kirjanmerkit" 0 {Kirjanmerkit-valikko (pikanppin: Ctrl+K)}
menuText U FileBookmarksAdd "Lis kirjanmerkki" 7 \
  {Lis kirjanmerkki nykyiseen peliin ja asemaan tietokannassa}
menuText U FileBookmarksFile "Tallenna kirjanmerkki" 5 \
  {Tallenna kirjanmerkki nykyisest pelist ja asemasta}
menuText U FileBookmarksEdit "Muokkaa kirjanmerkkej..." 0 \
  {Muokkaa kirjanmerkkivalikkoja}
menuText U FileBookmarksList "Nyt kansiot yhdess listassa" 0 \
  {Nyt kirjanmerkit yhdess listassa, ei alivalikoissa}
menuText U FileBookmarksSub "Nyt kansiot alivalikoina" 0 \
  {Nyt kirjanmerkkikansiot alivalikkoina, ei yhdess listassa}
menuText U FileMaint "Yllpito" 0 {Yllpitotykalut Scid-tietokannoille}
menuText U FileMaintWin "Yllpitoikkuna" 0 \
  {Avaa/sulje yllpitoikkuna}
menuText U FileMaintCompact "Tiivist tietokanta..." 0 \
  {Tiivist tietokannan, tuhoaa poistetuksi merkityt pelit ja kyttmttmt nimet}
menuText U FileMaintClass "ECO-luokittelu..." 2 \
  {Tarkista kaikkien pelien ECO-koodi}
menuText U FileMaintSort "Lajittele tietokanta..." 0 \
  {Lajittele tietokannan pelit}
menuText U FileMaintDelete "Poista kaksoiskappaleet..." 0 \
  {Etsii pelien kaksoiskappaleet ja merkitsee ne poistettaviksi}
menuText U FileMaintTwin "Kaksoiskappaleet" 0 \
  {Avaa/pivit kaksoiskappaleet-ikkuna}
menuText U FileMaintName "Nimet ja oikeinkirjoitus" 0 {Nimien muokkaus- ja oikeinkirjoitustykalut}
menuText U FileMaintNameEditor "Nimet" 0 \
  {Avaa/sulje nimien muokkausikkuna}
menuText U FileMaintNamePlayer "Pelaajien nimet..." 0 \
  {Tarkista pelaajien nimien oikeinkirjoitus}
menuText U FileMaintNameEvent "Tapahtumien nimet..." 0 \
  {Tarkista tapahtumien nimien oikeinkirjoitus}
menuText U FileMaintNameSite "Paikannimet..." 1 \
  {Tarkista paikannimien oikeinkirjoitus}
menuText U FileMaintNameRound "Kierrosten nimet..." 0 \
  {Tarkista kierrosten nimien oikeinkirjoitus}
menuText U FileReadOnly "Vain luku..." 0 \
  {Est muutokset nykyiseen tietokantaan}
menuText U FileSwitch "Vaihda tietokanta" 3 \
  {Vaihda toiseen avattuun tietokantaan}
menuText U FileExit "Lopeta" 0 {Lopeta ja sulje Scid}
menuText U FileMaintFixBase "Korjaa tietokanta" 0 {Yrit korjata vaurioitunut tietokanta}
  
# Edit menu:
menuText U Edit "Muokkaa" 0
menuText U EditAdd "Lis muunnelma" 0 {Lis muunnelma tmn siirron kohdalle}
menuText U EditDelete "Poista muunnelma" 0 {Poista tmn siirron kohdalla oleva muunnelma}
menuText U EditFirst "Ensimmiseksi" 0 \
  {Ylenn muunnelma ensimmiseksi sivumuunnelmaksi}
menuText U EditMain "Plinjaksi" 1 \
  {Ylenn muuunnelma plinjaksi}
menuText U EditTrial "Kokeile muunnelmaa" 0 \
  {Aloita/lopeta tila, jossa voit testata muunnelmiasi laudalla}
menuText U EditStrip "Poista" 2 {Poista siirtoja, kommentteja tai muunnelmia}
menuText U EditUndo "Kumoa" 1 {Peruuta viimeisin muutos}
menuText U EditStripComments "Kommentit" 1 \
  {Poista kaikki kommentit ja arvioinnit pelist}
menuText U EditStripVars "Muunnelmat" 3 {Poista kaikki muunnelmat pelist}
menuText U EditStripBegin "Siirtoja alusta" 1 \
  {Poista siirtoja pelin alusta}
menuText U EditStripEnd "Siirtoja lopusta" 3 \
  {Poista siirtoja lopusta}
menuText U EditReset "Tyhjenn leikekanta" 0 \
  {Poista kaikki pelit leiketietokannasta}
menuText U EditCopy "Kopioi peli leikekantaan" 0 \
  {Kopioi nykyinen peli leiketietokantaan}
menuText U EditPaste "Liit leikekannasta" 0 \
  {Liit leiketietokannan aktiivinen peli thn}
menuText U EditPastePGN "Liit leikepydn teksti PGN-pelin..." 12 \
  {Tulkitse leikepydll oleva teksti PGN-muotoiseksi peliksi ja liit thn}
menuText U EditSetup "Uusi asema..." 0 \
  {Luo uusi alkuasema pelille}
menuText U EditCopyBoard "Kopioi asema" 0 \
  {Kopioi nykyinen asema leikepydlle FEN-muodossa}
menuText U EditPasteBoard "Liit asema" 0 \
  {Liit leikepydll oleva FEN-teksti alkuasemaksi}

# Game menu:
menuText U Game "Peli" 0
menuText U GameNew "Uusi peli" 0 \
  {Aloita uusi peli, poista kaikki vanhat siirrot}
menuText U GameFirst "Lataa ensimminen" 6 {Lataa ensimminen suodatetuista peleist}
menuText U GamePrev "Lataa edellinen" 7 {Lataa edellinen peli suodatetuista}
menuText U GameReload "Lataa uudelleen" 1 \
  {Lataa nykyinen peli uudelleen, poista tehdyt muutokset}
menuText U GameNext "Lataa seuraava" 6 {Lataa seuraava peli suodatetuista}
menuText U GameLast "Lataa viimeinen" 6 {Lataa viimeinen suodatetuista peleist}
menuText U GameRandom "Lataa satunnainen" 2 {Lataa sattumanvaraisesti valittu peli suodatetuista}
menuText U GameNumber "Lataa numero..." 8 \
  {Lataa peli, jonka numeron annat avautuvassa ikkunassa}
menuText U GameReplace "Tallenna: Korvaa..." 8 \
  {Tallenna nykyinen peli korvaten vanha versio uusilla tiedoilla}
menuText U GameAdd "Tallenna: Lis uusi..." 13 \
  {Tallenna nykyinen peli tietokantaan uudeksi peliksi}
menuText U GameDeepest "Tunnista avaus" 0 \
  {Tunnista avauksen ECO-koodi avauskirjaa kytten}
menuText U GameGotoMove "Siirry siirtoon..." 5 \
  {Siirry mritetyn siirron kohdalle nykyisess peliss}
menuText U GameNovelty "Etsi uutuus..." 0 \
  {Etsi pelin ensimminen ennen pelaamaton siirto}

# Search Menu:
menuText U Search "Etsi" 0
menuText U SearchReset "Alusta suodatin" 0 {Nyt kaikki pelit, nollaa suodatin}
menuText U SearchNegate "Knteinen suodatin" 0 {Suodatin nytt aiemmin poissuodatetut pelit}
menuText U SearchCurrent "Nykyinen asema..." 0 {Etsi nykyist asemaa tietokannasta}
menuText U SearchHeader "Otsikko..." 0 {Etsi otsikkotiedon perusteella (pelaaja, tapahtuma jne.)}
menuText U SearchMaterial "Materiaali/asema..." 0 {Etsi materiaalin tai aseman tunnusmerkkien perusteella}
menuText U SearchUsing "Haku tiedostolla..." 0 {Etsi kytten apuna erillist hakutiedostoa}

# Windows menu:
menuText U Windows "Ikkunat" 0
menuText U WindowsComment "Kommentit" 0 {Avaa/sulje kommenttimuokkain}
menuText U WindowsGList "Peliluettelo" 0 {Avaa/sulje peliluettelo}
menuText U WindowsPGN "PGN-listaus" 1 \
  {Avaa/sulje  PGN-listaus (pelinotaatio)}
menuText U WindowsPList "Pelaajahaku" 1 {Avaa/sulje pelaajahaku}
menuText U WindowsTmt "Turnaushaku" 1 {Avaa/sulje turnaushaku}
menuText U WindowsSwitcher "Tietokannan vaihto" 0 \
  {Avaa/sulje Tietokannan vaihtoikkuna}
menuText U WindowsMaint "Yllpito" 0 \
  {Avaa/sulje yllpitoikkuna}
menuText U WindowsECO "ECO-selain" 1 {Avaa/sulje ECO-avauskirjaston selain}
menuText U WindowsRepertoire "Repertuaari" 0 \
  {Avaa/sulje oman avausrepertuaarisi muokkain}
menuText U WindowsStats "Tilastot" 6 \
  {Avaa/sulje tilastoikkuna}
menuText U WindowsTree "Puunkym" 3 {Avaa/sulje puunkym}
menuText U WindowsTB "Loppupelitietokanta" 15 {Avaa/sulje loppupelitietokanta}
menuText U WindowsBook "Avauskirja" 8 {Avaa/sulje avauskirja}
menuText U WindowsCorrChess "Kirjeshakki" 6 {Avaa/sulje kirjeshakki-ikkuna}

# Tools menu:
menuText U Tools "Tykalut" 1
menuText U ToolsAnalysis "Analyysimoottori #1..." 18 \
  {Kynnist/pysyt analyysimoottori}
menuText U ToolsAnalysis2 "Analyysimoottori #2..." 18 \
  {Kynnist/pysyt toinen analyysimoottori}
menuText U ToolsCross "Ristitaulukko" 0 {Nyt turnauksen ristitaulukko tlle pelille}
menuText U ToolsEmail "Email" 0 {Avaa/sulje email-shakin hallintaikkuna}
menuText U ToolsFilterGraph "Suhteellinen graafi" 13 {Avaa/sulje suodatingraafi suhteellisilla arvoilla}
menuText U ToolsAbsFilterGraph "Absoluuttinen graafi" 17 {Avaa/sulje suodatingraafi absoluuttisilla arvoilla}
menuText U ToolsOpReport "Avausraportti" 0 {Luo nykyisest asemasta avausraportti}
menuText U ToolsOpenBaseAsTree "Avaa kanta puuna..." 0   {Avaa tietokanta ja ksittele sit puurakenteena}
menuText U ToolsOpenRecentBaseAsTree "Avaa viimeaikainen kanta puuna" 1   {Avaa viimeaikainen tietokanta ja ksittele sit puurakenteena}
menuText U ToolsTracker "Nappuloiden liikkuminen"  0 {Avaa ikkuna, jossa seuraat napppuloiden sijaintia ja liikkumista laudalla}
menuText U ToolsTraining "Valmennus"  2 {Tykaluja valmennukseen (taktiikka, avaukset...) }
menuText U ToolsTacticalGame "Taktinen peli"  2 {Pelaa taktisesti painottunut peli}
menuText U ToolsSeriousGame "Virallinen peli"  7 {Pelaa virallinen peli}
menuText U ToolsTrainOpenings "Avaukset"  5 {Harjoittele repertuaariasi}
menuText U ToolsTrainReviewGame "Arvaa siirto"  11 {Arvaa pelin seuraava siirto}
menuText U ToolsTrainTactics "Taktiikkaharjoitukset"  9 {Ratko taktiikoita}
menuText U ToolsTrainCalvar "Muunnelmien laskeminen"  0 {Harjoittele muunnelmien laskemista}
menuText U ToolsTrainFindBestMove "Etsi paras siirto"  5 {Etsi aseman paras siirto}
menuText U ToolsTrainFics "FICS"  0 {Pelaa palvelimella freechess.org}
menuText U ToolsBookTuning "Virit avaukset" 0 {Muokkaa avauskirjastoasi}
menuText U ToolsConnectHardware "Liit syttlaite" 8 {Liit ulkoinen syttlaite (elektroninen lauta tms.)}
menuText U ToolsConnectHardwareConfigure "Asetukset..." 0 {Sd ulkoisen syttlaitteen asetuksia}
menuText U ToolsConnectHardwareNovagCitrineConnect "Liit Novag Citrine" 0 {Liit Novag Citrine shakkitietokone}
menuText U ToolsConnectHardwareInputEngineConnect "Liit muu syttlaite" 0 {Esimerkiksi elektroninen DGT-lauta}

menuText U ToolsPInfo "Pelaajatiedot"  0 \
  {Avaa/pivit pelaajatiedot-ikkuna}
menuText U ToolsPlayerReport "Pelaajaraportti..." 1 \
  {Luo pelaajaraportti}
menuText U ToolsRating "Vahvuusluvut" 0 \
  {Kaavio pelaajien vahvuuslukuhistoriasta}
menuText U ToolsScore "Tuloskaavio" 0 {Nyt tuloskaavio}
menuText U ToolsExpCurrent "Vie tekstitiedostoon" 1 \
  {Kirjoita nykyinen peli tekstitiedostoon}
menuText U ToolsExpCurrentPGN "Vie PGN-tiedostoon" 6 \
  {Kirjoita nykyinen peli PGN-tiedostoon}
menuText U ToolsExpCurrentHTML "Vie HTML-tiedostoon" 4 \
  {Kirjoita nykyinen peli HTML-tiedostoon}
menuText U ToolsExpCurrentHTMLJS "Vie HTML- ja JavaScript-tiedostoihin" 6 {Kirjoita nykyinen peli HTML- ja JavaScript-tiedostoihin}  
menuText U ToolsExpCurrentLaTeX "Vie LaTeX-tiedostoon" 8 \
  {Kirjoita nykyinen peli LaTeX-tiedostoon}
menuText U ToolsExpFilter "Vie suodatetut pelit tekstitiedostoon" 0 \
  {Kirjoita kaikki suodatetut pelit tekstitiedostoon}
menuText U ToolsExpFilterPGN "Vie suodatetut pelit PGN-tiedostoon" 0 \
  {Kirjoita kaikki suodatetut pelit PGN-tiedostoon}
menuText U ToolsExpFilterHTML "Vie suodatetut pelit HTML-tiedostoon" 0 \
  {Kirjoita kaikki suodatetut pelit HTML-tiedostoon}
menuText U ToolsExpFilterHTMLJS "Vie suodatetut pelit HTML- ja JavaScript-tiedostoihin" 0 {Kirjoita kaikki suodatetut pelit HTML- ja JavaScript-tiedostoihin}  
menuText U ToolsExpFilterLaTeX "Vie suodatetut pelit LaTeX-tiedostoon" 0 \
  {Kirjoita kaikki suodatetut pelit LaTeX-tiedostoon}
menuText U ToolsImportOne "Tuo yksi PGN-peli" 0 \
  {Tuo yksittinen peli PGN-tekstist}
menuText U ToolsImportFile "Tuo PGN pelitiedosto" 0 {Tuo yksi tai useampia pelej sisltv PGN-tiedosto}
menuText U ToolsStartEngine1 "Kynnist moottori 1" 19  {Kynnist moottori 1}
menuText U ToolsStartEngine2 "Kynnist moottori 2" 19  {Kynnist moottori 2}
menuText U ToolsCaptureBoard "Kuvakaappaus asemasta..." 1  {Tallenna asema kuvana.}

# Play menue
menuText U Play "Pelaa" 0

# --- Correspondence Chess
menuText U CorrespondenceChess "Kirjeshakki" 0 {Toiminnot shkposti- ja Xfcc-pohjaista kirjeshakkia varten}
menuText U CCConfigure "Asetukset" 0 {Mrit ohjelmat ja tee kirjeshakkiin liittyvt asetukset}
menuText U CCConfigRelay "Seuraa pelej..." 12 {Seurattavien pelien asetukset}
menuText U CCOpenDB "Avaa tietokanta" 1 {Avaa kirjeshakin oletustietokanta}
menuText U CCRetrieve "Nouda pelit" 0 {Hae pelit ulkoisella (Xfcc-) avustajalla}
menuText U CCInbox "Ksittele Saapuneet" 1 {Ksittele kaikki saapuneet tiedostot}
menuText U CCSend "Lhet siirto" 2 {Lhet siirtosi shkpostina tai (Xfcc-) avustajalla}

menuText U CCResign "Luovuta" 0 {Luovuta (ei shkposti)}
menuText U CCClaimDraw "Vaadi tasapeli" 0 {Lhet siirto ja vaadi tasapeli (ei shkposti)}
menuText U CCOfferDraw "Tarjoa tasapeli" 2 {Lhet siirto ja ehdota tasapeli (ei shkposti)}
menuText U CCAcceptDraw "Hyvksy tasapeli" 1 {Hyvksy vastustajan tarjoama tasapeli (ei shkposti)}

menuText U CCNewMailGame "Uusi shkpostipeli" 0 {Aloita uusi shkpostipeli}
menuText U CCMailMove "Shkpostisiirto" 0 {Lhet siirto shkpostilla vastustajalle}
menuText U CCGamePage "Pelisivusto" 0 {Avaa pelisivusto selaimessa}

# menu in cc window:
menuText U CCEditCopy "Kopioi pelilista leikekantaan" 0 {Kopioi pelit leikekantaan CSV-tiedostona (pilkuilla erotettu teksti)}

#  B    GHiJKL    Q  TUV XYZ

# Options menu:
menuText U Options "Asetukset" 0
menuText U OptionsBoard "Shakkilauta" 0 {Shakkilaudan ulkonkn liittyvt asetukset}
menuText U OptionsBoardSize "Koko" 0 {Muuta laudan kokoa}
menuText U OptionsBoardPieces "Nappulat" 0 {Muuta nappuloiden ulkomuotoa}
menuText U OptionsBoardColors "Vrit" 0 {Vaihda laudan vrej}
#Klimmek
menuText U OptionsBoardGraphics "Ruudut" 0 {Valitse ruuduissa kytettv tekstuuri}
translate U OptionsBGW {Valitse ruuduissa kytettv tekstuuri}
translate U OptionsBoardGraphicsText {Valitse ruuduissa kytettv grafiikkatiedosto:}
menuText U OptionsBoardNames "Omat nimet" 0 {Lis ja muokkaa kyttmisi pelaajanimi}
menuText U OptionsExport "Vientiasetukset" 0 {Muuta eri tekstimuotojen vientiin liittyvi asetuksia}
menuText U OptionsFonts "Fontit" 0 {Muuta fontteja}
menuText U OptionsFontsRegular "Oletusfontti" 0 {Vaihda oletusfontti}
menuText U OptionsFontsMenu "Valikko" 0 {Vaihda valikoissa kytetty fontti}
menuText U OptionsFontsSmall "Pieni" 0 {Vaihda pieni fontti}
menuText U OptionsFontsTiny "Hyvin pieni" 0 {CVaihda hyvin pieni fontti}
menuText U OptionsFontsFixed "Tasalevyinen" 0 {Vaihda tasalevyinen fontti}
menuText U OptionsGInfo "Pelitiedot" 0 {Pelitietoihin liittyvt asetukset}
menuText U OptionsLanguage "Kieli" 0 {Valitse valikoissa kytettv kieli}
menuText U OptionsMovesTranslatePieces "Knnkset" 0 {Knn nappuloiden ensimmiset kirjaimet}
menuText U OptionsMovesHighlightLastMove "Korosta viimeisin siirto" 0 {Korosta viimeisin siirto}
menuText U OptionsMovesHighlightLastMoveDisplay "Nyt" 0 {Nyt viimeisin siirto korostettuna}
menuText U OptionsMovesHighlightLastMoveWidth "Viiva" 0 {Laudalla nytettvn viivan paksuus}
menuText U OptionsMovesHighlightLastMoveColor "Vri" 0 {Laudalla nytettvn viivan vri}
menuText U OptionsMoves "Siirrot" 0 {Siirtojen syttmiseen liittyvt asetukset}
menuText U OptionsMovesAsk "Kysy ennen korvaamista" 0 \
  {Ohjelma kysyy luvan ennen kuin kirjoittaa vanhojen tietojen plle}
menuText U OptionsMovesAnimate "Animaation nopeus" 1 \
  {Siirtojen animoinnin nopeus}
menuText U OptionsMovesDelay "Toiston siirtonopeus" 1 \
  {Automaattisesti toistetun pelin siirtonopeus}
menuText U OptionsMovesCoord "Siirrot koordinaatteina" 0 \
  {Hyvksy nppimistlt annetut siirtokoordinaatit (esim "g1f3")}
menuText U OptionsMovesSuggest "Nyt suositetut siirrot" 0 \
  {Siirtosuositukset plle/plt}
menuText U OptionsShowVarPopup "Nyt muunnelmaikkuna" 0 {Nyt/sulje muunnelmaikkuna}  
menuText U OptionsMovesSpace "Vlilynti siirtoihin" 0 {Lis vlilynti siirron numeron pern}  
menuText U OptionsMovesKey "Automaattinen tydennys" 0 \
  {Kytek siirtojen automaattinen tydennys plle/plt}
menuText U OptionsMovesShowVarArrows "Muunnelmat nuolin" 0 {Nyt/l nyt muunnelmia nuolilla laudalla}
menuText U OptionsNumbers "Numerointi" 0 {Numeroformaatit, 1-3 desimaalipisteell, 4-6 -pilkulla}
menuText U OptionsStartup "Kynnistys" 0 {Valitse lisikkunat, jotka avataan ohjelmaa kynnistettess}
menuText U OptionsTheme "Teema" 0 {Valitse kyttliittymn teema}
menuText U OptionsWindows "Ikkunat" 0 {Ikkunoiden asetukset}
menuText U OptionsWindowsIconify "Pienenn automaattisesti" 0 \
  {Pienenn mys muut ikkunat, kun pikkuna pienennetn}
menuText U OptionsWindowsRaise "Nosta automaattisesti" 0 \
  {Nosta ert ikkunat automaattisesti ylimmksi}
menuText U OptionsSounds "net" 0 {Muokaa siirtoilmoitusni}
menuText U OptionsWindowsDock "Telakoi ikkunat" 0 {Telakoi irti olevat ikkunat (vaatii uudelleenkynnistyksen)}
menuText U OptionsWindowsSaveLayout "Tallenna layout" 0 {Tallenna nimelle ikkunoiden ja tykalupalkkien sijainti}
menuText U OptionsWindowsRestoreLayout "Palauta layout" 0 {Palauta tallennettu layout}
menuText U OptionsWindowsShowGameInfo "Pelin tiedot" 0 {Nyt/piilota pelin tiedot (pelaajanimet, turnaus...)}
menuText U OptionsWindowsAutoLoadLayout "Ensimminen layout automaattisesti" 0 {Lataa ensimminen tallennettu layout automaattisesti}
menuText U OptionsToolbar "Tykalupalkki" 0 {Muokkaa pikkunan tykalupalkkia}
menuText U OptionsECO "Lataa ECO-tiedosto" 7 {Lataa ECO avausluokittelu tiedostosta}
menuText U OptionsSpell "Lataa oikeinkirjoitustiedosto" 0 \
  {Lataa Scidin oikeinkirjoitustiedosto}
menuText U OptionsTable "Loppupelitietokannat" 0 \
  {Valitse hakemisto, jossa kannat sijaitsevat. Kaikki kannat otetaan kyttn}
menuText U OptionsRecent "Viimeaikaiset tiedostot" 0 {Kuinka monta tiedostoa nytetn Tiedosto-valikon viimeaikaisten listassa}
menuText U OptionsBooksDir "Avauskirjat" 0 {Hakemisto, jossa avauskirjat sijaitsevat}
menuText U OptionsTacticsBasesDir "Taktiikkakannat" 0 {Hakemisto, jossa taktiikka (harjoitus) tietokannat sijaitsevat}
menuText U OptionsSave "Tallenna asetukset" 0 "Tallenna kaikki asetukset tiedostoon $::optionsFile"
menuText U OptionsAutoSave "Automaattinen asetusten tallennus" 0 \
  {Tallenna asetukset automaattisesti ohjelmasta poistuttaessa}

# Help menu:
menuText U Help "Ohje" 0
menuText U HelpContents "Sisllysluettelo" 0 {Nyt ohjeen sisllysluettelo}
menuText U HelpIndex "Hakemisto" 0 {Nyt ohjeen aakkosellinen luettelo}
menuText U HelpGuide "Pikaopas" 0 {Nyt Scidin pikaopas}
menuText U HelpHints "Vinkit" 0 {Nyt sivu, jolla Scidin kytt helpottavia vihjeit}
menuText U HelpContact "Yhteystietoja" 0 {Nyt yhteystiedot}
menuText U HelpTip "Pivn vinkki" 1 {Nyt vihje}
menuText U HelpStartup "Kynnistys-popup" 2 {Nyt ohjelman kynnistys-popup}
menuText U HelpAbout "Tietoja Scidist" 9 {Tietoja ohjelmasta}

# Game info box popup menu:
menuText U GInfoHideNext "Piilota seuraava siirto" 0
menuText U GInfoMaterial "Nyt materiaaliarvot" 0
menuText U GInfoFEN "Nyt FEN" 6
menuText U GInfoMarks "Nyt vriruudut ja nuolet" 6
menuText U GInfoWrap "Rivit automaattisesti" 0
menuText U GInfoFullComment "Nyt koko kommentti" 6
menuText U GInfoPhotos "Nyt valokuvat" 7
menuText U GInfoTBNothing "Loppupelikannat: ei mitn" 0
menuText U GInfoTBResult "Loppupelikannat: vain tulos" 1
menuText U GInfoTBAll "Loppupelikannat: tulos ja parhaat siirrot" 4
menuText U GInfoDelete "Poista peli (kumoa)" 3
menuText U GInfoMark "Merkitse peli (kumoa)" 3
menuText U GInfoInformant "Informant-asetukset" 5

# Main window buttons:
helpMsg U .main.fbutton.button.start {Pelin alkuun  (pika: Home)}
helpMsg U .main.fbutton.button.end {Pelin loppuun  (pika: End)}
helpMsg U .main.fbutton.button.back {Takaisin yksi siirto  (pika: Vasen nuoli)}
helpMsg U .main.fbutton.button.forward {Eteenpin yksi siirto  (pika: Oikea nuoli)}
helpMsg U .main.fbutton.button.intoVar {Siirry muunnelmaan  (pika: v)}
helpMsg U .main.fbutton.button.exitVar {Poistu muunnelmasta  (pika: z)}
helpMsg U .main.fbutton.button.flip {Knn lauta  (pika: piste)}
helpMsg U .main.fbutton.button.coords {Nyt/piilota koordinaatit  (pika: 0)}
helpMsg U .main.fbutton.button.stm {Nyt/piilota siirtovuoron osoitin}
helpMsg U .main.fbutton.button.autoplay {Siirr automaattisesti  (pika: Ctrl+Z)}

# General buttons:
translate U Back {Palaa}
translate U Browse {Selaa}
translate U Cancel {Peruuta}
translate U Continue {Jatka}
translate U Clear {Tyhjenn}
translate U Close {Sulje}
translate U Contents {Sisllys}
translate U Defaults {Oletukset}
translate U Delete {Poista}
translate U Graph {Graafi}
translate U Help {Ohje}
translate U Import {Tuo}
translate U Index {Hakemisto}
translate U LoadGame {Lataa peli}
translate U BrowseGame {Selaa peli}
translate U MergeGame {Yhdist peli}
translate U MergeGames {Yhdist pelit}
translate U Preview {Esikatselu}
translate U Revert {Palauta}
translate U Save {Tallenna}
translate U Search {Etsi}
translate U Stop {Seis}
translate U Store {Talleta}
translate U Update {Pivit}
translate U ChangeOrient {Muuta ikkunan muotoa}
translate U ShowIcons {Nyt kuvakkeet}
translate U None {Tyhj}
translate U First {Ensimminen}
translate U Current {Nykyinen}
translate U Last {Viimeinen}

# General messages:
translate U game {peli}
translate U games {pelit}
translate U move {siirto}
translate U moves {siirrot}
translate U all {kaikki}
translate U Yes {Kyll}
translate U No {Ei}
translate U Both {Molemmat}
translate U King {Kuningas}
translate U Queen {Kuningatar}
translate U Rook {Torni}
translate U Bishop {Lhetti}
translate U Knight {Ratsu}
translate U Pawn {Sotilas}
translate U White {Valkea}
translate U Black {Musta}
translate U Player {Pelaaja}
translate U Rating {Vahvuusluku}
translate U RatingDiff {Vahvuuksien ero (Valkea - Musta)}
translate U AverageRating {Keskivahvuus}
translate U Event {Tapahtuma}
translate U Site {Paikka}
translate U Country {Maa}
translate U IgnoreColors {l huomioi vrej}
translate U Date {Pvm.}
translate U EventDate {Tapahtuman pvm.}
translate U Decade {Vuosikymmen}
translate U Year {Vuosi}
translate U Month {Kuukausi}
translate U Months {Tammikuu Helmikuu Maaliskuu Huhtikuu Toukokuu Keskuu Heinkuu Elokuu Syyskuu Lokakuu Marraskuu Joulukuu}
translate U Days {Su Ma Ti Ke To Pe La}
translate U YearToToday {Vuoden alusta}
translate U Result {Tulos}
translate U Round {Kierros}
translate U Length {Pituus}
translate U ECOCode {ECO-koodi}
translate U ECO {ECO}
translate U Deleted {Poistettu}
translate U SearchResults {Haun tulokset}
translate U OpeningTheDatabase {Avaustietokanta}
translate U Database {Tietokanta}
translate U Filter {Suodatin}
translate U noGames {ei pelej}
translate U allGames {kaikki pelit}
translate U empty {tyhj}
translate U clipbase {leikekanta}
translate U score {tulos}
translate U StartPos {Alkuasema}
translate U Total {Yhteens}
translate U readonly {vain luku}

# Standard error messages:
translate U ErrNotOpen {Tm ei ole avoin tietokanta.}
translate U ErrReadOnly {Tm tietokanta on vain luku -moodissa; sit ei voi muokata.}
translate U ErrSearchInterrupted {Haku keskeytyi; tulokset ovat vaillinaiset.}

# Game information:
translate U twin {tupla}
translate U deleted {poistettu}
translate U comment {kommentti}
translate U hidden {piilotettu}
translate U LastMove {Viimeinen siirto}
translate U NextMove {Seuraava}
translate U GameStart {Pelin alku}
translate U LineStart {Rivin alku}
translate U GameEnd {Pelin loppu}
translate U LineEnd {Rivin loppu}

# Player information:
translate U PInfoAll {<b>Kaikki</b> tulokset}
translate U PInfoFilter {<b>Suodatetut</b> tulokset}
translate U PInfoAgainst {Tulokset vastaan}
translate U PInfoMostWhite {Yleisimmt avaukset: Valkea}
translate U PInfoMostBlack {Yleisimmt avaukset: Musta}
translate U PInfoRating {Vahvuuslukuhistoria}
translate U PInfoBio {Biografia}
translate U PInfoEditRatings {Muokkaa vahvuuslukuja}

# Tablebase information:
translate U Draw {Tasapeli}
translate U stalemate {patti}
translate U withAllMoves {kaikilla siirroilla}
translate U withAllButOneMove {yht vaille kaikilla siirroilla}
translate U with {kanssa}
translate U only {vain}
translate U lose {hvi}
translate U loses {hvi}
translate U allOthersLose {kaikki muut hvivt}
translate U matesIn {matti}
translate U hasCheckmated {on matti}
translate U longest {pisin}
translate U WinningMoves {Voittavat siirrot}
translate U DrawingMoves {Tasapeliin vievt siirrot}
translate U LosingMoves {Hvivt siirrot}
translate U UnknownMoves {Epvarma tulos}

# Tip of the day:
translate U Tip {Vihje}
translate U TipAtStartup {Kynnistysvihje}

# Tree window menus:
menuText U TreeFile "Tiedosto" 0
menuText U TreeFileFillWithBase "Kanta vlimuistiin" 0 {Tyt vlimuisti nykyisen tietokannan peleill}
menuText U TreeFileFillWithGame "Peli vlimuistiin" 0 {Siirr nykyisen kannan aktiivinen peli vlimuistiin}
menuText U TreeFileSetCacheSize "Vlimuistin koko" 0 {Aseta vlimuistin koko}
menuText U TreeFileCacheInfo "Tietoja vlimuistista" 1 {Nyt tiedot vlimuistista ja sen kytst}
menuText U TreeFileSave "Tallenna vlimuisti" 2 {Tallenna vlimuisti (.stc) tiedostoksi}
menuText U TreeFileFill "Tyt vlimuisti" 1 \
  {Tyt vlimuisti yleisill asemilla}
menuText U TreeFileBest "Parhaat pelit" 2 {Nyt parhaat pelit}
menuText U TreeFileGraph "Graafi-ikkuna" 0 {Nyt puun haara graafina}
menuText U TreeFileCopy "Puu leikepydlle" 1 \
  {Kopioi puun tilastot leikepydlle}
menuText U TreeFileClose "Sulje puu" 2 {Sulje ikkuna}
menuText U TreeMask "Maski" 0
menuText U TreeMaskNew "Uusi" 2 {Uusi maski}
menuText U TreeMaskOpen "Avaa" 0 {Avaa maski}
menuText U TreeMaskOpenRecent "Avaa viimeaikainen" 0 {Avaa viimeaikainen maski}
menuText U TreeMaskSave "Tallenna" 0 {Tallenna maski}
menuText U TreeMaskClose "Close" 0 {Sulje maski}
menuText U TreeMaskFillWithGame "Tyt pelill" 0 {Tyt maski pelill}
menuText U TreeMaskFillWithBase "Tyt kannalla" 0 {Tyt maski kannan kaikilla peleill}
menuText U TreeMaskInfo "Tiedot" 0 {Nyt nykyisen maskin tilastot}
menuText U TreeMaskDisplay "Nyt maski" 0 {Nyt maski puumuodossa}
menuText U TreeMaskSearch "Etsi" 0 {Etsi nykyisest maskista}
menuText U TreeSort "Lajittele" 0
menuText U TreeSortAlpha "Aakkosta" 0
menuText U TreeSortECO "ECO-koodi" 0
menuText U TreeSortFreq "Yleisyys" 0
menuText U TreeSortScore "Tulos" 0
menuText U TreeOpt "Asetukset" 0
menuText U TreeOptSlowmode "Hidas moodi" 0 {Pivit asemat hitaasti (suurempi tarkkuus)}
menuText U TreeOptFastmode "Nopea moodi" 0 {Pivit nopeati (Ei lyd siirtovaihtoja)}
menuText U TreeOptFastAndSlowmode "Hidas ja nopea" 0 {Pivit ensin nopeasti, sitten tarkasti}
menuText U TreeOptStartStop "Automaattinen pivitys" 0 {Ikkunan automaattinen pivitys plle/plt}
menuText U TreeOptLock "Lukitse" 0 {Lukitse/vapauta puu nykyiseen tietokantaan}
menuText U TreeOptTraining "Valmennus" 0 {Puun valmennusmoodii plle/plt}
menuText U TreeOptAutosave "Tallenna vlimuisti automaattisesti" 0 \
  {Tallenna vlimuisti tiedostoon automaattisesti, kun puu-ikkuna suljetaan}
menuText U TreeHelp "Ohje" 0
menuText U TreeHelpTree "Puun ohje" 0
menuText U TreeHelpIndex "Aakkosellinen ohje" 0
translate U SaveCache {Tallenna vlimuisti}
translate U Training {Valmennus}
translate U LockTree {Lukitse}
translate U TreeLocked {lukittu}
translate U TreeBest {Paras}
translate U TreeBestGames {Parhaat pelit}
# Note: the next message is the tree window title row. After editing it,
# check the tree window to make sure it lines up with the actual columns.
translate U TreeTitleRow \
  {  Siirto   ECO       Yleisyys     Tulos  AvElo Perf AvYear %Draws}
translate U TreeTotal {TOTAL}
translate U DoYouWantToSaveFirst {Haluatko tallentaa ensin}
translate U AddToMask {Lis maskiin}
translate U RemoveFromMask {Poista maskista}
translate U AddThisMoveToMask {Lis siirto maskiin}
translate U SearchMask {Etsi maskista}
translate U DisplayMask {Nyt maski}
translate U Nag {Nag-koodi}
translate U Marker {Merkki}
translate U Include {Sisllyt}
translate U Exclude {l sisllyt}
translate U MainLine {Pmuunnelma}
translate U Bookmark {Kirjanmerkki}
translate U NewLine {Uusi rivi}
translate U ToBeVerified {Varmennetaan}
translate U ToTrain {Harjoiteltavaksi}
translate U Dubious {Arveluttava}
translate U ToRemove {Poistettavaksi}
translate U NoMarker {Ei merkki}
translate U ColorMarker {Vri}
translate U WhiteMark {Valkea}
translate U GreenMark {Vihre}
translate U YellowMark {Keltainen}
translate U BlueMark {Sininen}
translate U RedMark {Punainen}
translate U CommentMove {Kommentoi siirto}
translate U CommentPosition {Komentoi asema}
translate U AddMoveToMaskFirst {Lis siirto ensin maskiin}
translate U OpenAMaskFileFirst {Avaa maski-tiedosto ensin}
translate U Positions {Asemat}
translate U Moves {Siirrot}

# Finder window:
menuText U FinderFile "Tiedosto" 0
menuText U FinderFileSubdirs "Etsi alihakemistoista" 0
menuText U FinderFileClose "Sulje haku" 0
menuText U FinderSort "Lajittele" 0
menuText U FinderSortType "Tyyppi" 0
menuText U FinderSortSize "Koko" 0
menuText U FinderSortMod "Muokattu" 0
menuText U FinderSortName "Nimi" 0
menuText U FinderSortPath "Polku" 0
menuText U FinderTypes "Tyypit" 0
menuText U FinderTypesScid "Scid-tietokannat" 0
menuText U FinderTypesOld "Vanhat Scid-kannat" 0
menuText U FinderTypesPGN "PGN-tiedostot" 0
menuText U FinderTypesEPD "EPD-tiedostot" 0
menuText U FinderTypesRep "Repertuaari-tiedostot" 0
menuText U FinderHelp "Ohje" 0
menuText U FinderHelpFinder "Tiedostohaun ohje" 0
menuText U FinderHelpIndex "Aakkosellinen ohje" 0
translate U FileFinder {Tiedostohaku}
translate U FinderDir {Hakemisto}
translate U FinderDirs {Hakemistot}
translate U FinderFiles {Tiedostot}
translate U FinderUpDir {yls}
translate U FinderCtxOpen {Avaa}
translate U FinderCtxBackup {Varmista}
translate U FinderCtxCopy {Kopioi}
translate U FinderCtxMove {Siirr}
translate U FinderCtxDelete {Poista}
 
# Player finder:
menuText U PListFile "Tiedosto" 0
menuText U PListFileUpdate "Pivit" 0
menuText U PListFileClose "Sulje pelaajahaku" 0
menuText U PListSort "Lajittele" 0
menuText U PListSortName "Nimi" 0
menuText U PListSortElo "Elo" 0
menuText U PListSortGames "Pelit" 3
menuText U PListSortOldest "Vanhin" 0
menuText U PListSortNewest "Uusin" 0

# Tournament finder:
menuText U TmtFile "Tiedosto" 0
menuText U TmtFileUpdate "Pivit" 0
menuText U TmtFileClose "Sulje kilpailuhaku" 0
menuText U TmtSort "Lajittele" 0
menuText U TmtSortDate "Pivmr" 1
menuText U TmtSortPlayers "Pelaajar" 1
menuText U TmtSortGames "Pelit" 2
menuText U TmtSortElo "Elo" 2
menuText U TmtSortSite "Paikka" 3
menuText U TmtSortEvent "Tapahtuma" 4
menuText U TmtSortWinner "Voittaja" 0
translate U TmtLimit "Luettelon raja"
translate U TmtMeanElo "Keski-Elo"
translate U TmtNone "Turnauksia ei lytynyt."

# Graph windows:
menuText U GraphFile "Tiedosto" 0
menuText U GraphFileColor "Tallenna Color PostScript..." 9
menuText U GraphFileGrey "Tallenna Greyscale PostScript..." 9
menuText U GraphFileClose "Sulje ikkuna" 0
menuText U GraphOptions "Asetukset" 0
menuText U GraphOptionsWhite "Valkea" 0
menuText U GraphOptionsBlack "Musta" 0
menuText U GraphOptionsBoth "Molemmat" 1
menuText U GraphOptionsPInfo "Pelaaja Info pelaaja" 0
translate U GraphFilterTitle "Graafi: yleisyys per 1000 peli"
translate U GraphAbsFilterTitle "graafi: pelien yleisyys"
translate U ConfigureFilter "Muokkaa X-akseli; vuosi, vahvuus, siirrot"
translate U FilterEstimate "Arvioi"
translate U TitleFilterGraph "Scid: graafi"

# Analysis window:
translate U AddVariation {Lis muunnelma}
translate U AddAllVariations {Lis kaikki muunnelmat}
translate U AddMove {Lis siirto}
translate U Annotate {Kommentoi}
translate U ShowAnalysisBoard {Nyt analyysilauta}
translate U ShowInfo {Nyt tiedot moottorista}
translate U FinishGame {Lopeta peli}
translate U StopEngine {Pysyt moottori}
translate U StartEngine {Kynnist moottori}
translate U LockEngine {Lukitse moottori nykyiseen asemaan}
translate U AnalysisCommand {Analyysi-komento}
translate U PreviousChoices {Aikaisemmat vaihtoehdot}
translate U AnnotateTime {Siirtojen vlinen aika sekunteina}
translate U AnnotateWhich {Lis muunnelmat}
translate U AnnotateAll {molemmille osapuolille}
translate U AnnotateAllMoves {Kommentoi kaikki siirrot}
translate U AnnotateWhite {Vain valkealle}
translate U AnnotateBlack {Vain mustalle}
translate U AnnotateBlundersOnly {Kun pelisiirto on virhe (blunder)}
translate U AnnotateBlundersOnlyScoreChange {Analyysi raportoi virheet, muuuttaen pisteytyksen: }
translate U BlundersThreshold {Virhekynnys}
translate U ScoreAllMoves {Pisteyt kaikki siirrot}
translate U LowPriority {Matala CPUn kyttaste}
translate U ClickHereToSeeMoves {Klikkaa nhdksesi siirrot}
translate U ConfigureInformant {Tee Informant-asetukset}
translate U Informant!? {Mielenkiintoinen siirto}
translate U Informant? {Heikko siirto}
translate U Informant?? {Virhe}
translate U Informant?! {Epilyttv siirto}
translate U Informant+= {Valkean pieni etu}
translate U Informant+/- {Valkean etu}
translate U Informant+- {Valkean ratkaiseva etu}
translate U Informant++- {Voittoasema}
  
# Book window
translate U Book {Kirja}
translate U OtherBookMoves {Vastustajan kirja}
translate U OtherBookMovesTooltip {Siirrot, joihin vastustajalla on vastaus}

# Analysis Engine open dialog:
translate U EngineList {Analyysimoottorilista}
translate U EngineName {Nimi}
translate U EngineCmd {Komento}
translate U EngineArgs {Parametrit}
translate U EngineDir {Hakemisto}
translate U EngineElo {Elo}
translate U EngineTime {Pvm}
translate U EngineNew {Uusi}
translate U EngineEdit {Muokkaa}
translate U EngineRequired {Lihavoidut kentt ovat pakollisia}

# Stats window menus:
menuText U StatsFile "Tiedosto" 0
menuText U StatsFilePrint "Tulosta tiedostoon..." 1
menuText U StatsFileClose "Sulje ikkuna" 0
menuText U StatsOpt "Asetukset" 0

# PGN window menus:
menuText U PgnFile "Tiedosto" 0
menuText U PgnFileCopy "Kopioi peli leikepydlle" 0
menuText U PgnFilePrint "Tulosta tiedostoon..." 1
menuText U PgnFileClose "Sulje PGN-ikkuna" 6
menuText U PgnOpt "Nytt" 0
menuText U PgnOptColor "Vrit" 0
menuText U PgnOptShort "Lyhyet otsikkotiedot (3-rivinen)" 0
menuText U PgnOptSymbols "Merkinnt symboleina" 1
menuText U PgnOptIndentC "Sisenn kommentit" 0
menuText U PgnOptIndentV "Sisenn muunnelmat" 1
menuText U PgnOptColumn "Sarakkeina (siirto per rivi)" 1
menuText U PgnOptSpace "Vlilynti siirtonumeron jlkeen" 1
menuText U PgnOptStripMarks "Poista vri-/nuolikoodit" 1
menuText U PgnOptBoldMainLine "Lihavoi pmuunnelma" 2
menuText U PgnColor "Vrit" 2
menuText U PgnColorHeader "Otsikko..." 0
menuText U PgnColorAnno "Merkinnt..." 0
menuText U PgnColorComments "Kommentit..." 0
menuText U PgnColorVars "Muunnelmat..." 0
menuText U PgnColorBackground "Tausta..." 0
menuText U PgnColorMain "Pmuunnelma..." 0
menuText U PgnColorCurrent "Nykyisen siirron tausta..." 0
menuText U PgnColorNextMove "Seuraavan siirron tausta..." 0
menuText U PgnHelp "Ohje" 0
menuText U PgnHelpPgn "PGN-ohje" 0
menuText U PgnHelpIndex "Aakkosellinen" 0
translate U PgnWindowTitle {Siirrot - peli %u}

# Crosstable window menus:
menuText U CrosstabFile "Tiedosto" 0
menuText U CrosstabFileText "Tulosta tekstitiedostoon..." 9
menuText U CrosstabFileHtml "Tulosta HTML-tiedostoon..." 8
menuText U CrosstabFileLaTeX "Tulosta LaTeX-tiedostoon..." 8
menuText U CrosstabFileClose "Sulje ristitaulukko" 0
menuText U CrosstabEdit "Muokkaa" 0
menuText U CrosstabEditEvent "Tapahtuma" 0
menuText U CrosstabEditSite "Paikka" 0
menuText U CrosstabEditDate "Pvm" 0
menuText U CrosstabOpt "Nytt" 0
menuText U CrosstabOptAll "Tyskierroskilpailu" 0
menuText U CrosstabOptSwiss "Swiss" 0
menuText U CrosstabOptKnockout "Cup-kilpailu" 0
menuText U CrosstabOptAuto "Auto" 0
menuText U CrosstabOptAges "Ik" 0
menuText U CrosstabOptNats "Kansallisuudet" 0
menuText U CrosstabOptRatings "Vahvuusluvuut" 0
menuText U CrosstabOptTitles "Tittelit" 0
menuText U CrosstabOptBreaks "Tie-Break" 4
menuText U CrosstabOptDeleted "Huomioi poistetut pelit" 0
menuText U CrosstabOptColors "Vrit (vain Swiss)" 0
menuText U CrosstabOptColumnNumbers "Numeroidut sarakkeet (vain tyskierroskilpailu)" 0
menuText U CrosstabOptGroup "Ryhmtulokset" 0
menuText U CrosstabSort "Lajittele" 0
menuText U CrosstabSortName "Nimi" 0
menuText U CrosstabSortRating "Vahvuusluku" 0
menuText U CrosstabSortScore "Tulos" 0
menuText U CrosstabColor "Vri" 0
menuText U CrosstabColorPlain "Teksti" 0
menuText U CrosstabColorHyper "Hyperteksti" 0
menuText U CrosstabHelp "Ohje" 0
menuText U CrosstabHelpCross "Ristitaulukon ohje" 0
menuText U CrosstabHelpIndex "Aakkosellinen ohje" 0
translate U SetFilter {Aseta suodatin}
translate U AddToFilter {Lis suodattimeen}
translate U Swiss {Swiss}
translate U Category {Kategoria}

# Opening report window menus:
menuText U OprepFile "Tiedosto" 0
menuText U OprepFileText "Tulosta tekstitiedostoon..." 1
menuText U OprepFileHtml "Tulosta HTML-tiedostoon..." 8
menuText U OprepFileLaTeX "Tulosta LaTeXtiedostoon..." 8
menuText U OprepFileOptions "Asetukset..." 0
menuText U OprepFileClose "Sulje raportti-ikkuna" 0
menuText U OprepFavorites "Suosikit" 2
menuText U OprepFavoritesAdd "Lis raportti..." 3
menuText U OprepFavoritesEdit "Muokkaa raportin suosikkeja..." 0
menuText U OprepFavoritesGenerate "Luo raportteja..." 4
menuText U OprepHelp "Ohje" 2
menuText U OprepHelpReport "Avausraportin ohje" 0
menuText U OprepHelpIndex "Aakkosellinen ohje" 0

# Repertoire editor:
menuText U RepFile "Tiedosto" 0
menuText U RepFileNew "Uusi" 0
menuText U RepFileOpen "Avaa..." 0
menuText U RepFileSave "Tallenna..." 2
menuText U RepFileSaveAs "Tallenna nimell..." 4
menuText U RepFileClose "Sulje ikkuna" 0
menuText U RepEdit "Muokkaa" 0
menuText U RepEditGroup "Lis ryhm" 3
menuText U RepEditInclude "Lis mukaan otettava linja" 0
menuText U RepEditExclude "Lis poistettava linja" 0
menuText U RepView "Nyt" 0
menuText U RepViewExpand "Laajenna kaikki ryhmt" 0
menuText U RepViewCollapse "Pienenn kaikki ryhmt" 0
menuText U RepSearch "Haku" 0
menuText U RepSearchAll "Kaikkialta..." 0
menuText U RepSearchDisplayed "Vain nytetyist riveist..." 0
menuText U RepHelp "Ohje" 3
menuText U RepHelpRep "Repertuaarin ohje" 0
menuText U RepHelpIndex "aakkosellinen ohje" 0
translate U RepSearch "Repertuaarihaku"
translate U RepIncludedLines "mukaan otettavat linjat"
translate U RepExcludedLines "poistettavat linjat"
translate U RepCloseDialog {Tss repertuaarissa on tallentamattomia muutoksia.

Haluatko jatkaa ja hylt tekemsi mutokset?
}

# Header search:
translate U HeaderSearch {Haku otsikkotiedoista}
translate U EndSideToMove {Siirtovuoro pelin lopussa}
translate U GamesWithNoECO {Ei ECO-koodia}
translate U GameLength {Pelin pituus}
translate U FindGamesWith {Merkityt pelit}
translate U StdStart {Ei-standardi alku}
translate U Promotions {Korotukset}
translate U Comments {Kommentit}
translate U Variations {Muunnelmat}
translate U Annotations {Annotaatiot}
translate U DeleteFlag {Poistomerkki}
translate U WhiteOpFlag {Valkean avaus}
translate U BlackOpFlag {Mustan avaus}
translate U MiddlegameFlag {Keskipeli}
translate U EndgameFlag {Loppupeli}
translate U NoveltyFlag {Uutuus}
translate U PawnFlag {Sotilasasema}
translate U TacticsFlag {Taktiikka}
translate U QsideFlag {Kuningatarsivustan peli}
translate U KsideFlag {Kuningassivustan peli}
translate U BrilliancyFlag {Loistosiirto}
translate U BlunderFlag {Virhe (Blunder)}
translate U UserFlag {Kyttj}
translate U PgnContains {PGN sislt teksti}
translate U Annotator {Annotoija}
translate U Cmnts {Vain annotoidut pelit}

# Game list window:
translate U GlistNumber {Numero}
translate U GlistWhite {Valkea}
translate U GlistBlack {Musta}
translate U GlistWElo {V-Elo}
translate U GlistBElo {M-Elo}
translate U GlistEvent {Tapahtuma}
translate U GlistSite {Paikka}
translate U GlistRound {Kierros}
translate U GlistDate {Pvm}
translate U GlistYear {Vuosi}
translate U GlistEDate {Tapahtuman pvm}
translate U GlistResult {Tulos}
translate U GlistLength {Pituus}
translate U GlistCountry {Maa}
translate U GlistECO {ECO}
translate U GlistOpening {Avaus}
translate U GlistEndMaterial {Loppumateriaali}
translate U GlistDeleted {Poistettu}
translate U GlistFlags {Merkit}
translate U GlistVars {Muunnelmat}
translate U GlistComments {Kommentit}
translate U GlistAnnos {Annotaatiot}
translate U GlistStart {Alk}
translate U GlistGameNumber {Peli nro}
translate U GlistAverageElo {Keskim. Elo}
translate U GlistRating {Vahvuusluku}
translate U GlistFindText {Etsi teksti}
translate U GlistMoveField {Siirto}
translate U GlistEditField {Asetukset}
translate U GlistAddField {Lis}
translate U GlistDeleteField {Poista}
translate U GlistWidth {Leveys}
translate U GlistAlign {Tasaus}
translate U GlistAlignL {Tasaa vasen}
translate U GlistAlignR {Tasaa oikea}
translate U GlistAlignC {Keskit}
translate U GlistColor {Vri}
translate U GlistSep {Erotin}
translate U GlistCurrentSep {-- Nykyinen --}
translate U GlistNewSort {Uusi}
translate U GlistAddToSort {Lis}
translate U GsortSort {Lajittele...}
translate U GsortDate {Pvm.}
translate U GsortYear {Vuosi}
translate U GsortEvent {Tapahtuma}
translate U GsortSite {Paikka}
translate U GsortRound {Kierros}
translate U GsortWhiteName {Valkea nimi}
translate U GsortBlackName {Musta nimi}
translate U GsortECO {ECO}
translate U GsortResult {Tulos}
translate U GsortMoveCount {Siirtolkm.}
translate U GsortAverageElo {Keskim. Elo}
translate U GsortCountry {Maa}
translate U GsortDeleted {Poistettu}
translate U GsortEventDate {Tapahtuman pvm.}
translate U GsortWhiteElo {Valkea Elo}
translate U GsortBlackElo {Musta Elo}
translate U GsortComments {Kommentit}
translate U GsortVariations {Muunnelmat}
translate U GsortNAGs {NAG}
translate U GsortAscending {Nouseva}
translate U GsortDescending {Laskeva}
translate U GsortAdd {Lis}
translate U GsortStore {Varastoi}
translate U GsortLoad {Lataa}

# menu shown with right mouse button down on game list. 
translate U GlistRemoveThisGameFromFilter  {Tm peli pois suodattimesta}
translate U GlistRemoveGameAndAboveFromFilter  {Tm ja kaikki edeltvt pois suodattimesta}
translate U GlistRemoveGameAndBelowFromFilter  {Tm ja kaikki seuraavat pois suodattimesta}
translate U GlistDeleteGame {Poista tm peli (kumoa)} 
translate U GlistDeleteAllGames {Poista kaikki suodatetut pelit} 
translate U GlistUndeleteAllGames {Kumoa kaikkien suodatettujen pelien poisto}  
translate U GlistMergeGameInBase {Yhdist peli toiseen kantaan}

# Maintenance window:
translate U DatabaseName {Tietokannan nimi:}
translate U TypeIcon {Tyyppi:}
translate U NumOfGames {Pelit:}
translate U NumDeletedGames {Poistetut pelit:}
translate U NumFilterGames {Suodatetut pelit:}
translate U YearRange {Vuodet:}
translate U RatingRange {Vahvuusluvut:}
translate U Description {Kuvaus}
translate U Flag {Merkit}
translate U CustomFlags {Omat merkit}
translate U DeleteCurrent {Poista nykyinen peli}
translate U DeleteFilter {Poista suodatetut pelit}
translate U DeleteAll {Poista kaikki pelit}
translate U UndeleteCurrent {Kumoa nykyisen poisto}
translate U UndeleteFilter {Kumoa suodatettujen poisto}
translate U UndeleteAll {Kumoa kaikkien poisto}
translate U DeleteTwins {Poista tuplat}
translate U MarkCurrent {Merkitse nykyinen peli}
translate U MarkFilter {Merkitse suodatetut pelit}
translate U MarkAll {Merkite kaikki pelit}
translate U UnmarkCurrent {Poista merkint nykyisest}
translate U UnmarkFilter {Poista merkint suodatetuista}
translate U UnmarkAll {Poista merkint kaikista}
translate U Spellchecking {Oikeinkirjoitus}
translate U Players {Pelaajat}
translate U Events {Tapahtumat}
translate U Sites {Paikat}
translate U Rounds {Kierrokset}
translate U DatabaseOps {Tietokantaoperaatiot}
translate U ReclassifyGames {ECO-luokittele pelit}
translate U CompactDatabase {Tiivist kanta}
translate U SortDatabase {Lajittele kanta}
translate U AddEloRatings {Lis Elo-luvut}
translate U AutoloadGame {Lataa automaattisesti peli nro}
translate U StripTags {Poista PGN-merkinnt}
translate U StripTag {Poista merkint}
translate U Cleaner {Puhdistaja}
translate U CleanerHelp {
Scidin Puhdistaja tekee nykyiselle tietokannalle alla olevasta listasta valitsemasi yllpitotoimet.

Voit valita kytettviksi mys nykyiset ECO- ja tuplien poistoasetukset.
}
translate U CleanerConfirm {
Puhdistajaa ei voi pysytt!

Suurilla tietokannoilla puhdistusajo voi kest todella kauan, riippuen valitsemistasi asetuksista.

Oletko varma, ett haluat ajaa puhdistusajon?
}
# Twinchecker
translate U TwinCheckUndelete {Vaihda valinta; "u" peruu poiston}
translate U TwinCheckprevPair {Edellinen pari}
translate U TwinChecknextPair {Seuraava pari}
translate U TwinChecker {Scid: Tuplien poisto}
translate U TwinCheckTournament {Pelit turnauksessa:}
translate U TwinCheckNoTwin {Ei tupla}
translate U TwinCheckNoTwinfound {Pelille ei lytynyt tuplaa.\nNhdksesi tuplat tss ikkunassa valitse "Poista tuplat..." -toiminto.}
translate U TwinCheckTag {Yhteiset merkinnt...}
translate U TwinCheckFound1 {Scid lysi $result tuplaa}
translate U TwinCheckFound2 { ja asetti niille poistomerkinnn}
translate U TwinCheckNoDelete {Ei poistettavia pelej tietokannassa.}
translate U TwinCriteria1 { Asetuksillasi lytyy todennkisesti valetuplia,\neli pelej joissa on samat siirrot, mutta jotka eivt ole tuplia.}
translate U TwinCriteria2 {Mikli valitset "Ei" samoille siirroille, sinun pitisi valita "Kyll" vreille, tapahtumalle, kierrokselle, vuodelle ja kuukaudelle.\nHaluatko silti jatkaa? }
translate U TwinCriteria3 {Kannattaa valita "Kyll" ainakin kahdelle seuraavista "sama paikka", "sama kierros" ja "sama vuosi".\nHaluatko silti jatkaa?}
translate U TwinCriteriaConfirm {Scid: Vahvista tupla-asetukset}
translate U TwinChangeTag "Muuta seuraavat merkinnt:\n\n"
translate U AllocRatingDescription "Tm komento kytt oikeinkirjoitustiedostoa mrittkseen Elo-luvut tietokannan peleille. Mikli pelaajalla ei ole voimassa olevaa lukua, kytetn oikeinkirjoitustiedostossa olevaa lukua peliajankohtana - mikli sellainen on olemassa."
translate U RatingOverride "Kirjoita yli olemassaolevat luvut?"
translate U AddRatings "Lis vahvuusluvut:"
translate U AddedRatings {Scid lissi $r Elo-lukua $g peliin.}

#Bookmark editor
translate U NewSubmenu "Uusi alivalikko"

# Comment editor:
translate U AnnotationSymbols  {Annotaatiosymbolit:}
translate U Comment {Kommentti:}
translate U InsertMark {Lis merkint}
translate U InsertMarkHelp {
Lis/poista merkint: Valitse vri, tyyppi, ruutu.
Lis/poista nuoli: Hiiren kakkosnapilla kaksi ruutua.
}

# Nag buttons in comment editor:
translate U GoodMove {Hyv siirto}
translate U PoorMove {Huono siirto}
translate U ExcellentMove {Erinomainen siirto}
translate U Blunder {Virhe (Blunder)}
translate U InterestingMove {Mielenkiintoinen siirto}
translate U DubiousMove {Epilyttv siirto}
translate U WhiteDecisiveAdvantage {Valkealla on ratkaiseva etu}
translate U BlackDecisiveAdvantage {Mustalla on ratkaiseva etu}
translate U WhiteClearAdvantage {Valkealla on selv etu}
translate U BlackClearAdvantage {Mustalla on selv etu}
translate U WhiteSlightAdvantage {Valkealla on hieman etua}
translate U BlackSlightAdvantage {Mustalla on hieman etua}
translate U Equality {Tasa-asema}
translate U Unclear {Epselv}
translate U Diagram {Kaavio}

# Board search:
translate U BoardSearch {Asemahaku}
translate U FilterOperation {Operaatio nykyiselle suodattimelle:}
translate U FilterAnd {AND (rajoita suodatinta)}
translate U FilterOr {OR (Lis suodattimeen)}
translate U FilterIgnore {IGNORE (Alusta suodatin)}
translate U SearchType {Hakutapa:}
translate U SearchBoardExact {Tsmllinen (kaikki nappulat samoissa ruuduissa)}
translate U SearchBoardPawns {Sotilaat (sama materiaali, sotilaat samoissa ruuduissa)}
translate U SearchBoardFiles {Rivit (sama materiaali, sotilaat samoilla riveill)}
translate U SearchBoardAny {Kaikki (sama materiaali, sotilaat ja upseerit miss tahansa)}
translate U SearchInRefDatabase { Etsi referenssikannasta }
translate U LookInVars {Etsi mys muunnelmista}

# Material search:
translate U MaterialSearch {Materiaalhaku}
translate U Material {Materiaali}
translate U Patterns {Tunnusmerkit}
translate U Zero {Nolla}
translate U Any {Kaikki}
translate U CurrentBoard {Nykyinen lauta}
translate U CommonEndings {Yleiset loppupelit}
translate U CommonPatterns {Yleiset tunnusmerkit}
translate U MaterialDiff {Materiaaliero}
translate U squares {ruudut}
translate U SameColor {Sama vri}
translate U OppColor {Vastavri}
translate U Either {Molemmat}
translate U MoveNumberRange {Siirtonumerot}
translate U MatchForAtLeast {Yhteisen vhintn}
translate U HalfMoves {puolisiirtoa}

# Common endings in material search:
translate U EndingPawns {Sotilasloppupelit}
translate U EndingRookVsPawns {Torni vs. sotilas(-aat)}
translate U EndingRookPawnVsRook {Torni ja 1 sotilas vs. torni}
translate U EndingRookPawnsVsRook {Torni ja sotilaita vs. torni}
translate U EndingRooks {Torni vs. torni}
translate U EndingRooksPassedA {Torni vs. torni ja a-vapaasotilas}
translate U EndingRooksDouble {Nelitorniloppupelit}
translate U EndingBishops {Lhetti vs. lhetti}
translate U EndingBishopVsKnight {Lhetti vs. ratsu}
translate U EndingKnights {Ratsu vs. ratsu}
translate U EndingQueens {Kuningatar vs. kuningatar}
translate U EndingQueenPawnVsQueen {Kuningatar ja 1 sotilas vs. kuningatar}
translate U BishopPairVsKnightPair {Kaksi lhetti vs. kaksi ratsua keskipeliss}

# Common patterns in material search:
translate U PatternWhiteIQP {Valkea IQP}
translate U PatternWhiteIQPBreakE6 {Valkea IQP: d4-d5 murto vs. e6}
translate U PatternWhiteIQPBreakC6 {Valkea IQP: d4-d5 murto vs. c6}
translate U PatternBlackIQP {Musta IQP}
translate U PatternWhiteBlackIQP {Valkea IQP vs. musta IQP}
translate U PatternCoupleC3D4 {Valkea c3+d4 eristetty sotilaspari}
translate U PatternHangingC5D5 {Musta riippuvat sotilaat c5 ja d5}
translate U PatternMaroczy {Maroczy-keskusta (sotilaat c4 ja e4)}
translate U PatternRookSacC3 {Tornin uhraus c3:een}
translate U PatternKc1Kg8 {O-O-O vs. O-O (Kc1 vs. Kg8)}
translate U PatternKg1Kc8 {O-O vs. O-O-O (Kg1 vs. Kc8)}
translate U PatternLightFian {Vaalearuutuiset sivustoinnit (lhetti g2 vs. lhetti b7)}
translate U PatternDarkFian {Tummaruutuiset sivustoinnit (lhetti b2 vs. lhetti g7)}
translate U PatternFourFian {Nelj sivustointia (Lhetit b2,g2,b7,g7)}

# Game saving:
translate U Today {Tnn}
translate U ClassifyGame {Luokittele peli}

# Setup position:
translate U EmptyBoard {Tyhj lauta}
translate U InitialBoard {Alkuasema}
translate U SideToMove {Siirtovuorossa}
translate U MoveNumber {Siirto nro}
translate U Castling {Linnoitus}
translate U EnPassantFile {Ohestalynti}
translate U ClearFen {Tyhjenn FEN}
translate U PasteFen {Liit FEN}

translate U SaveAndContinue {Tallenna ja jatka}
translate U DiscardChangesAndContinue {Hylk mutokset\nja jatka}
translate U GoBack {Takaisin}

# Replace move dialog:
translate U ReplaceMove {Korvaa siirto}
translate U AddNewVar {Lis uusi muunnelma}
translate U NewMainLine {Uusi pmuunnelma}
translate U ReplaceMoveMessage {Siirto on jo olemassa.

Voit korvata sen ja poistaa samalla kaiki seuraavat siirrot tai list siirtosi uutena muunnelmana.

(Jos et halua nhd tt varoitusta jatkossa, muuta toiminto "Kysy ennen korvaamista" valikosta.)}

# Make database read-only dialog:
translate U ReadOnlyDialog {Jos muutat tmn kannan vain luku -moodiin, mitn muutoksia ei sallita.
Pelej ei voi tallentaa tai korvata, eik poistomerkintj muuttaa.
Kaikki tekemsi ECO-luokitukset ja lajittelut ovat tilapisi.

Voit helposti muuttaa kannan takaisin kirjoitusmoodiin sulkemalla ja avaamalla sen uudestaan.

Haluatko varmasti muuttaa kannan vain luku -moodiin?}

# Clear game dialog:
translate U ClearGameDialog {Tt peli on muutettu.

Haluatko jatkaa ja hylt kaikki tehdyt muutokset?
}

# Exit dialog:
translate U ExitDialog {Haluatko todella sulkea Scidin?}
translate U ExitUnsaved {Seuraavissa kannoissa on tallentamattomia muutoksia. Jos lopetat, muutokset menetetn.}

# Import window:
translate U PasteCurrentGame {Liit nykyinen peli}
translate U ImportHelp1 {Syt tai liit peli yllolevaan kehykseen PGN-muodossa.}
translate U ImportHelp2 {Pelin tuonnissa ilmenneet virheet nytetn tss.}
translate U OverwriteExistingMoves {Kirjoitetaanko vanhojen siirtojen plle?}

# ECO Browser:
translate U ECOAllSections {Kaikki ECO-osiot}
translate U ECOSection {ECO-osio}
translate U ECOSummary {Yhteenveto:}
translate U ECOFrequency {Alikoodien yleisyys:}

# Opening Report:
translate U OprepTitle {Avausraportti}
translate U OprepReport {Raportti}
translate U OprepGenerated {Luonut:}
translate U OprepStatsHist {Tilastot ja historia}
translate U OprepStats {Tilastot}
translate U OprepStatAll {Kaikki raportin pelit}
translate U OprepStatBoth {Molemmilla vahvuusluku}
translate U OprepStatSince {alkaen}
translate U OprepOldest {Vanhimmat pelit}
translate U OprepNewest {Uusimmat pelit}
translate U OprepPopular {Nykyinen suosio}
translate U OprepFreqAll {Yleisyys kaikkina vuosina:   }
translate U OprepFreq1   {Viimeisimpn vuotena: }
translate U OprepFreq5   {Viimeisimpin 5 vuotena thn pivn: }
translate U OprepFreq10  {Viimeisimpin 10 vuotena thn pivn: }
translate U OprepEvery {kerran joka %u peliss}
translate U OprepUp {yls %u%s kaikista vuosista}
translate U OprepDown {alas %u%s kaikista vuosista}
translate U OprepSame {ei muutosta kaikista vuosista}
translate U OprepMostFrequent {Yleisimmt pelaajat}
translate U OprepMostFrequentOpponents {Yleisimmt vastustajat}
translate U OprepRatingsPerf {Vahvuusluvut ja suoritusluvut}
translate U OprepAvgPerf {Keskivahvuudet ja -suoritusluvut}
translate U OprepWRating {Valkean vahvuusluku}
translate U OprepBRating {Mustan vahvuusluku}
translate U OprepWPerf {Valkean suoritusluku}
translate U OprepBPerf {Mustan suoritusluku}
translate U OprepHighRating {Pelit, joilla korkein keskivahvuus}
translate U OprepTrends {Tulostrendit}
translate U OprepResults {Tulosten pituudet ja yleisyys}
translate U OprepLength {Pelin pituus}
translate U OprepFrequency {Yleisyys}
translate U OprepWWins {Valkea voittaa: }
translate U OprepBWins {Musta voittaa: }
translate U OprepDraws {Tasapeli:      }
translate U OprepWholeDB {koko tietokanta}
translate U OprepShortest {Lyhimmt voitot}
translate U OprepMovesThemes {Siirrot ja teemat}
translate U OprepMoveOrders {Siirtojrjestykset raportin asemaan}
translate U OprepMoveOrdersOne \
  {Vain yksi siirtojrjestys, jolla thn asemaan on pdytty:}
translate U OprepMoveOrdersAll \
  { %u siirtojrjestyst johti thn asemaan:}
translate U OprepMoveOrdersMany \
  {%u siirtojrjestyst johti thn asemaan. Yleisimmt %u ovat:}
translate U OprepMovesFrom {Siirrot raportin asemasta}
translate U OprepMostFrequentEcoCodes {Yleisimmt ECO-koodit}
translate U OprepThemes {Asemalliset teemat}
translate U OprepThemeDescription {Teemojen yleisyys ensimmisiss %u siirrossa}
translate U OprepThemeSameCastling {Linnoitukset samalle puolelle}
translate U OprepThemeOppCastling {Linnoitukset vastakkaisille puolille}
translate U OprepThemeNoCastling {Kumpikaan ei linnoita}
translate U OprepThemeKPawnStorm {Kuningassivustan sotilasvyry}
translate U OprepThemeQueenswap {Kuningatarten vaihto}
translate U OprepThemeWIQP {Valkean eristetty kuningatarsotilas}
translate U OprepThemeBIQP {Mustan eristetty kuningatarsotilas}
translate U OprepThemeWP567 {Valkean sotilas 5./6./7. rivill}
translate U OprepThemeBP234 {Mustan sotilas 2./3./4. rivill}
translate U OprepThemeOpenCDE {Avoin c/d/e-linja}
translate U OprepTheme1BishopPair {Lhettipari vain toisella}
translate U OprepEndgames {Loppupelit}
translate U OprepReportGames {Raportin pelit}
translate U OprepAllGames    {Kaikki pelit}
translate U OprepEndClass {Materiaali pelin lopussa}
translate U OprepTheoryTable {Teoriataulukko}
translate U OprepTableComment {Luotu %u korkeimmalle rankatusta pelist.}
translate U OprepExtraMoves {Erikoisesti huomioitavat siirrot teoriataulukossa}
translate U OprepMaxGames {Maksimimr pelej teoriataulukossa}
translate U OprepViewHTML {Nyt HTML}
translate U OprepViewLaTeX {Nyt LaTeX}

# Player Report:
translate U PReportTitle {Pelaajaraportti}
translate U PReportColorWhite {valkeilla}
translate U PReportColorBlack {mustilla}
translate U PReportMoves { %s jlkeen}
translate U PReportOpenings {Avaukset}
translate U PReportClipbase {Tyhjenn leikekanta ja kopioi suodatetut pelit siihen}

# Piece Tracker window:
translate U TrackerSelectSingle {Hiiren ykksnappi valitsee tmn nappulan.}
translate U TrackerSelectPair {Hiiren ykksnappi valitsee tmn nappulan; kakkosnappi valitsee mys toisen samanlaisen.}
translate U TrackerSelectPawn {Hiiren ykksnappi valitsee tmn sotilaan; kakkosnappi valitsee kaikki 8 sotilasta.}
translate U TrackerStat {Tilastot}
translate U TrackerGames {% peleist, joissa siirto ruutuun}
translate U TrackerTime {% ajasta kussakin ruudussa}
translate U TrackerMoves {Siirrot}
translate U TrackerMovesStart {Seuranta alkaa siirrosta:}
translate U TrackerMovesStop {Seuranta loppuu siirtoon:}

# Game selection dialogs:
translate U SelectAllGames {Kaikki tietokannan pelit}
translate U SelectFilterGames {Vain suodatetut pelit}
translate U SelectTournamentGames {Vain nykyisen turnauksen pelit}
translate U SelectOlderGames {Vain vanhemmat pelit}

# Delete Twins window:
translate U TwinsNote {Peli on tupla jonkin toisen pelin kanssa: Peleill on samat pelaajat ja lisksi alla mritetyt kriteerit tyttyvt. Kun tuplapari lytyy, lyhyempi peleist poistetaan. Vihje: Kannattaa tarkistaa kannan oikeinkirjoitus ennen tuplien poistoa, koska monien pelaajien nimist on useita kirjoitustapoja. }
translate U TwinsCriteria {Kriteerit: Tuplissa tytyy olla...}
translate U TwinsWhich {Mit pelej tarkastellaan}
translate U TwinsColors {Samat pelaajien vrit?}
translate U TwinsEvent {Sama tapahtuma (turnaus)?}
translate U TwinsSite {Sama paikka?}
translate U TwinsRound {Sama kierros?}
translate U TwinsYear {Sama vuosi?}
translate U TwinsMonth {Sama kuukausi?}
translate U TwinsDay {Sama piv?}
translate U TwinsResult {Sama tulos?}
translate U TwinsECO {Sama ECO-koodi?}
translate U TwinsMoves {Samat siirrot?}
translate U TwinsPlayers {Verrataan pelaajien nimi:}
translate U TwinsPlayersExact {Tsmlleen samat}
translate U TwinsPlayersPrefix {Ensimmiset 4 kirjainta}
translate U TwinsWhen {Tuplia poistettaessa:}
translate U TwinsSkipShort {Ohita kaikki alle 5 siirron pelit?}
translate U TwinsUndelete {Ensin kumoa kaikkien pelien poisto?}
translate U TwinsSetFilter {Aseta suodatin nyttmn kaikki poistetut tuplat?}
translate U TwinsComments {Silyt aina pelit, joissa on kommentteja?}
translate U TwinsVars {Silyt aina pelit, joissa on muunnelmia?}
translate U TwinsDeleteWhich {Mik peli poistetaan:}
translate U TwinsDeleteShorter {Lyhyempi}
translate U TwinsDeleteOlder {Pienempi numero pelilistauksessa}
translate U TwinsDeleteNewer {Suurempi numero pelilistauksessa}
translate U TwinsDelete {Poista pelit}

# Name editor window:
translate U NameEditType {Muokattavan nimen tyyppi}
translate U NameEditSelect {Muokattavat pelit}
translate U NameEditReplace {Korvaa}
translate U NameEditWith {kanssa}
translate U NameEditMatches {Osumat: Tee valinta painamalla Ctrl+1 - Ctrl+9}
translate U CheckGames {Tarkista pelit}
translate U CheckGamesWhich {Tarkista pelit}
translate U CheckAll {Kaikki pelit}
translate U CheckSelectFilterGames {Vain suodattimen pelit}

# Classify window:
translate U Classify {Luokittele}
translate U ClassifyWhich {Mitk pelit ECO-luokitellaan}
translate U ClassifyAll {Kaikki pelit (kirjoita yli vanhat ECO-koodit)}
translate U ClassifyYear {Viimeisimmn vuoden aikana pelatut}
translate U ClassifyMonth {Viimeisimmn kuukauden aikana pelatut}
translate U ClassifyNew {Vain pelit, joilla ei ole ECO-koodia entuudestaan}
translate U ClassifyCodes {Kytettvt ECO-koodit}
translate U ClassifyBasic {Vain standardit ECO-koodit ("B12", ...)}
translate U ClassifyExtended {Scid-laajennukset ("B12j", ...)}

# Compaction:
translate U NameFile {Nimitiedosto}
translate U GameFile {Pelitiedosto}
translate U Names {Nimet}
translate U Unused {Kyttmtn}
translate U SizeKb {Koko (kb)}
translate U CurrentState {Nykyinen status}
translate U AfterCompaction {Tiivistmisen jlkeen}
translate U CompactNames {Tiivist nimitiedosto}
translate U CompactGames {Tiivist pelitiedosto}
translate U NoUnusedNames "Ei kyttmttmi nimi, nimitiedosto on valmiiksi tysin tiivistetty."
translate U NoUnusedGames "Pelitiedosto on valmiiksi tysin tiivistetty."
translate U NameFileCompacted {Nimitiedosto tietokannalle "[file tail [sc_base filename]]" on tiivistetty.}
translate U GameFileCompacted {Pelitiedosto tietokannalle "[file tail [sc_base filename]]" on tiivistetty.}

# Sorting:
translate U SortCriteria {Kriteerit}
translate U AddCriteria {Lis kriteeri}
translate U CommonSorts {Yleiset lajittelut}
translate U Sort {Lajittele}

# Exporting:
translate U AddToExistingFile {Lis pelit olemassaolevaan tiedostoon?}
translate U ExportComments {Vie kommentit?}
translate U ExportVariations {Vie muunnelmat?}
translate U IndentComments {Sisenn kommentit?}
translate U IndentVariations {Sisenn muunnelmat?}
translate U ExportColumnStyle {Saraketyyli (siirto per rivi)?}
translate U ExportSymbolStyle {Symboolit annotaatioissa:}
translate U ExportStripMarks {Poista ruutu-/nuolimerkit kommenteista?}

# Goto game/move dialogs:
translate U LoadGameNumber {Ladattavan pelin numero:}
translate U GotoMoveNumber {Siirry siirtoon nro:}

# Copy games dialog:
translate U CopyGames {Kopioi pelit}
translate U CopyConfirm {
 Haluatko varmasti kopioida suodattimen [::utils::thousands $nGamesToCopy] pelit
 tietokannasta "$fromName"
 tietokantaan "$targetName"?
}
translate U CopyErr {Ei voi kopioida}
translate U CopyErrSource {lhdekanta}
translate U CopyErrTarget {kohdekanta}
translate U CopyErrNoGames {ei sisll pelej suodattimessa}
translate U CopyErrReadOnly {on vain-luku}
translate U CopyErrNotOpen {ei ole auki}

# Colors:
translate U LightSquares {Vaaleat ruudut}
translate U DarkSquares {Tummat ruudut}
translate U SelectedSquares {Valitut ruudut}
translate U SuggestedSquares {Siirtoehdotusten ruudut}
translate U WhitePieces {Valkeat nappulat}
translate U BlackPieces {Mustat nappulat}
translate U WhiteBorder {Valkea reuna}
translate U BlackBorder {Musta reuna}

# Novelty window:
translate U FindNovelty {Etsi uutuus}
translate U Novelty {Uutuus}
translate U NoveltyInterrupt {Uutuuksien etsint keskeytetty}
translate U NoveltyNone {Ei uutuuksia}
translate U NoveltyHelp {
Scid lyt pelin ensimmisen siirron, joka johtaa sellaiseen asemaan, jota ei lydy valitusta tietokannasta tai ECO-avauskirjasta.
}

# Sounds configuration:
translate U SoundsFolder {nitiedostojen hakemisto}
translate U SoundsFolderHelp {Hakemistosta pit lyty tiedostot King.wav, a.wav, 1.wav, jne}
translate U SoundsAnnounceOptions {Siirtoilmoitusasetukset}
translate U SoundsAnnounceNew {Ilmoita uudet siirrot}
translate U SoundsAnnounceForward {Ilmoita, kun siirrytn eteenpin yksi siirto}
translate U SoundsAnnounceBack {Ilmoita, kun siirrytn taaksepin yksi siirto}

# Upgrading databases:
translate U Upgrading {Pivitys}
translate U ConfirmOpenNew {
Tm on vanhaa muotoa (Scid 3) oleva tietokanta, jota ei voi avata Scid 4:ss. Uusi (Scid 4) versio on jo luotu, haluatko avata sen?
}
translate U ConfirmUpgrade {
Tm on vanhaa muotoa (Scid 3) oleva tietokanta. Uuden muotoinen kanta tytyy luoda ennen kuin voit kytt sit Scid 4:ss.

Pivitys luo uuden version tietokannasta ja poistaa sen jlkeen alkuperisen.

Pivitys voi kest jonkin aikaa, mutta se tytyy tehd vain kerran. Mikli pivitys kest liian pitkn, voit keskeytt sen.

Haluatko pivitt tmn tietokannan nyt?
}

# Recent files options:
translate U RecentFilesMenu {Viimeaikaisten tiedostojen lkm Tiedosto-valikossa}
translate U RecentFilesExtra {Viimeaikaisten tiedostojen lkm extra-alivalikossa}

# My Player Names options:
translate U MyPlayerNamesDescription {
Lis alle kyttmsi pelaajanimet, yksi nimi per rivi. Voit kytt villikortteja (esim. "?" korvaa yksittisen merkin, "*" korvaa kuinka monta perkkist merkki hyvns).

Aina kun Scid lataa pelin, jossa on kyttmsi pelaajanimi, peli nytetn pelaajan nkkulmasta. Tarvittaessa lauta knnetn niin, ett musta pelaa alhaalta yls.
}

#Coach
translate U showblunderexists {nyt virheet}
translate U showblundervalue {nyt virheen pistearvo}
translate U showscore {nyt tulos}
translate U coachgame {valmennus}
translate U configurecoachgame {Taktisen pelin asetukset}
translate U configuregame {Peliasetukset}
translate U Phalanxengine {Phalanx-moottori}
translate U Coachengine {Valmennusmoottori}
translate U difficulty {vaikeusaste}
translate U hard {vaikea}
translate U easy {helppo}
translate U Playwith {Pelaa}
translate U white {valeilla}
translate U black {mustilla}
translate U both {molemmilla}
translate U Play {Pelaa}
translate U Noblunder {Ei virhe}
translate U blunder {virhe}
translate U Noinfo {-- Ei info --}
translate U PhalanxOrTogaMissing {Phalanx tai Toga ei lydy}
translate U moveblunderthreshold {sirto on virhe, jos tappio on enemmn kuin}
translate U limitanalysis {rajoita koneanalyysin aikaa}
translate U seconds {sekuntia}
translate U Abort {Keskeyt}
translate U Resume {Jatka}
translate U OutOfOpening {Ei avauskirjastossa}
translate U NotFollowedLine {Et seurannut avauslinjaa}
translate U DoYouWantContinue {Haluatko jatkaa?}
translate U CoachIsWatching {Valmentaja seuraa}
translate U Ponder {Jatkuva analyysi}
translate U LimitELO {Rajoita ELO-vahvuus}
translate U DubiousMovePlayedTakeBack {Epilyttv siirto, haluatko peruuttaa sen?}
translate U WeakMovePlayedTakeBack {Heikko siirto, haluatko peruuttaa sen?}
translate U BadMovePlayedTakeBack {Huono siirto, haluatko peruuttaa sen?}
translate U Iresign {Luovutan}
translate U yourmoveisnotgood {siirtosi ei ole hyv}
translate U EndOfVar {Muunnelman loppu}
translate U Openingtrainer {Avausvalmentaja}
translate U DisplayCM {Nyt ehdokassiirrot}
translate U DisplayCMValue {Nyt ehdokassiirtojen arvot}
translate U DisplayOpeningStats {Nyt tilastot}
translate U ShowReport {Nyt raportti}
translate U NumberOfGoodMovesPlayed {hyvi siirtoja}
translate U NumberOfDubiousMovesPlayed {epilyttvi siirtoja}
translate U NumberOfMovesPlayedNotInRepertoire {siirtoja, jotka eivt ole repertuaarissa}
translate U NumberOfTimesPositionEncountered {kerta asemassa}
translate U PlayerBestMove  {Salli vain parhaat siirrot}
translate U OpponentBestMove {Vastustaja pelaa parhaita siirtoja}
translate U OnlyFlaggedLines {Vain merkityt muunnelmat}
translate U resetStats {Nollaa tilastot}
translate U Repertoiretrainingconfiguration {Repertuaarivalmennuksen asetukset}
translate U Loadingrepertoire {Lataa repertuaari}
translate U Movesloaded {Siirrot ladattu}
translate U Repertoirenotfound {Repertuaaria ei lydy}
translate U Openfirstrepertoirewithtype {Avaa ensimminen repertuaari, jonka kuvake/tyyppi on oikealla}
translate U Movenotinrepertoire {Siirtoa ei lydy repertuaarista}
translate U PositionsInRepertoire {Asemat repertuaarissa}
translate U PositionsNotPlayed {Asemat, joita ei pelattu}
translate U PositionsPlayed {Pelatut asemat}
translate U Success {Onnistuminen}
translate U DubiousMoves {Epilyttvt siirrot}
translate U OutOfRepertoire {Ei repertuaarissa}
translate U ConfigureTactics {Taktiikka-asetukset}
translate U ResetScores {Nollaa tulokset}
translate U LoadingBase {Ladataan kantaa}
translate U Tactics {Taktiikat}
translate U ShowSolution {Nyt ratkaisu}
translate U NextExercise {Seuraava harjoitus}
translate U PrevExercise {Edellinen harjoitus}
translate U StopTraining {Lopeta harjoittelu}
translate U Next {Seuraava}
translate U ResettingScore {Nollataan tulokset}
translate U LoadingGame {Ladataan peli}
translate U MateFound {Matti lytyi}
translate U BestSolutionNotFound {Paras ratkaisu ei lytynyt!}
translate U MateNotFound {Matti ei lytynyt}
translate U ShorterMateExists {On lyhyempikin matti}
translate U ScorePlayed {Tulos}
translate U Expected {odotustulos}
translate U ChooseTrainingBase {Valitse harjoituskanta}
translate U Thinking {Thinking}
translate U AnalyzeDone {Analyysi valmis}
translate U WinWonGame {Voita voittoasema}
translate U Lines {Muunnelmat}
translate U ConfigureUCIengine {UCI-moottorin asetukset}
translate U SpecificOpening {Tietty avaus}
translate U StartNewGame {Aloita uusi peli}
translate U FixedLevel {Kiinte taso}
translate U Opening {Avaus}
translate U RandomLevel {Satunnainen taso}
translate U StartFromCurrentPosition {Aloita tmnhetkisest asemasta}
translate U FixedDepth {Kiinte syvyys}
translate U Nodes {Noodit}
translate U Depth {Syvyys}
translate U Time {Aika} 
translate U SecondsPerMove {sekuntia per siirto}
translate U Engine {Moottori}
translate U TimeMode {Aikamoodi}
translate U TimeBonus {Aika + bonus}
translate U TimeMin {min}
translate U TimeSec {s}
translate U AllExercisesDone {Kaikki harjoitukset tehty}
translate U MoveOutOfBook {Siirtoa ei lydy avauskirjasta}
translate U LastBookMove {Viimeinen kirjasiirto}
translate U AnnotateSeveralGames {Annotoi useita pelej\nalkaen nykyisest, ptten:}
translate U FindOpeningErrors {Etsi avausvirheet}
translate U MarkTacticalExercises {Merkitse taktiset harjoitukset}
translate U UseBook {Kyt avauskirjaa}
translate U MultiPV {Monia muunnelmia}
translate U Hash {Vlimuisti}
translate U OwnBook {Kyt moottorin avauskirjaa}
translate U BookFile {Avauskirja}
translate U AnnotateVariations {Annotoi muunnelmat}
translate U ShortAnnotations {Lyhyet annotaatiot}
translate U addAnnotatorTag {Lis merkint annotaattorista}
translate U AddScoreToShortAnnotations {Lis tulos annotaatioihin}
translate U Export {Vie}
translate U BookPartiallyLoaded {Kirja osittain ladattu}
translate U Calvar {Muunnelmien laskenta}
translate U ConfigureCalvar {Asetukset}
# Opening names used in tacgame.tcl
translate U Reti {Reti}
translate U English {English}
translate U d4Nf6Miscellaneous {1.d4 Nf6 Miscellaneous}
translate U Trompowsky {Trompowsky}
translate U Budapest {Budapest}
translate U OldIndian {Old Indian}
translate U BenkoGambit {Benko Gambit}
translate U ModernBenoni {Modern Benoni}
translate U DutchDefence {Dutch Defence}
translate U Scandinavian {Scandinavian}
translate U AlekhineDefence {Alekhine Defence}
translate U Pirc {Pirc}
translate U CaroKann {Caro-Kann}
translate U CaroKannAdvance {Caro-Kann Advance}
translate U Sicilian {Sicilian}
translate U SicilianAlapin {Sicilian Alapin}
translate U SicilianClosed {Sicilian Closed}
translate U SicilianRauzer {Sicilian Rauzer}
translate U SicilianDragon {Sicilian Dragon}
translate U SicilianScheveningen {Sicilian Scheveningen}
translate U SicilianNajdorf {Sicilian Najdorf}
translate U OpenGame {Open Game}
translate U Vienna {Vienna}
translate U KingsGambit {King's Gambit}
translate U RussianGame {Russian Game}
translate U ItalianTwoKnights {Italian/Two Knights}
translate U Spanish {Spanish}
translate U SpanishExchange {Spanish Exchange}
translate U SpanishOpen {Spanish Open}
translate U SpanishClosed {Spanish Closed}
translate U FrenchDefence {French Defence}
translate U FrenchAdvance {French Advance}
translate U FrenchTarrasch {French Tarrasch}
translate U FrenchWinawer {French Winawer}
translate U FrenchExchange {French Exchange}
translate U QueensPawn {Queen's Pawn}
translate U Slav {Slav}
translate U QGA {QGA}
translate U QGD {QGD}
translate U QGDExchange {QGD Exchange}
translate U SemiSlav {Semi-Slav}
translate U QGDwithBg5 {QGD with Bg5}
translate U QGDOrthodox {QGD Orthodox}
translate U Grunfeld {Grnfeld}
translate U GrunfeldExchange {Grnfeld Exchange}
translate U GrunfeldRussian {Grnfeld Russian}
translate U Catalan {Catalan}
translate U CatalanOpen {Catalan Open}
translate U CatalanClosed {Catalan Closed}
translate U QueensIndian {Queen's Indian}
translate U NimzoIndian {Nimzo-Indian}
translate U NimzoIndianClassical {Nimzo-Indian Classical}
translate U NimzoIndianRubinstein {Nimzo-Indian Rubinstein}
translate U KingsIndian {King's Indian}
translate U KingsIndianSamisch {King's Indian Smisch}
translate U KingsIndianMainLine {King's Indian Main Line}

# FICS
translate U ConfigureFics {FICS-asetukset}
translate U FICSGuest {Kirjaudu vierailijana (Guest)}
translate U FICSServerPort {Serveriportti}
translate U FICSServerAddress {IP-osoite}
translate U FICSRefresh {Pivit}
translate U FICSTimesealPort {Timeseal portti}
translate U FICSSilence {Konsolisuodatin}
translate U FICSOffers {Tarjoukset}
translate U FICSConsole {Konsoli}
translate U FICSGames {Pelit}
translate U FICSUnobserve {Lopeta seuraaminen}
translate U FICSProfile {Nyt historia ja profiili}
translate U FICSRelayedGames {Seurattavat pelit (Relay)}
translate U FICSFindOpponent {Etsi vastustaja}
translate U FICSTakeback {Peruuta siirto}
translate U FICSTakeback2 {Peruuta 2}
translate U FICSInitTime {Alkuaika (min)}
translate U FICSIncrement {lis per siirto (s)}
translate U FICSRatedGame {Vahvuuslaskentaan}
translate U FICSAutoColour {automaattisesti}
translate U FICSManualConfirm {vahvista}
translate U FICSFilterFormula {Suodatin kaavalla}
translate U FICSIssueSeek {Tee haku}
translate U FICSChallenge {Haasta}
translate U FICSAccept {hyvksy}
translate U FICSDecline {hylk}
translate U FICSColour {Vri}
translate U FICSSend {lhet}
translate U FICSConnect {yhdist}
translate U FICSdefaultuservars {Kyt oletusmuuttujia}
translate U FICSObserveconfirm {Haluatko seurata peli}

# Game review
translate U GameReview {Pelin arvioiminen}
translate U GameReviewTimeExtended {Lisaika}
translate U GameReviewMargin {Virhemarginaali}
translate U GameReviewAutoContinue {Jatka automaattisesti, kun siirto on oikein}
translate U GameReviewReCalculate {Kyt lisaikaa}
translate U GameReviewAnalyzingMovePlayedDuringTheGame {Analysoidaan pelattua siirtoa}
translate U GameReviewAnalyzingThePosition {Analysoidaan asemaa}
translate U GameReviewEnterYourMove {Syt siirtosi}
translate U GameReviewCheckingYourMove {Tarkistetaan siirtoa}
translate U GameReviewYourMoveWasAnalyzed {Siirtosi on analysoitu}
translate U GameReviewYouPlayedSameMove {Pelasit saman siirron kuin peliss}
translate U GameReviewScoreOfYourMove {Siirtosi arvo}
translate U GameReviewGameMoveScore {Pelisiirron arvo}
translate U GameReviewEngineScore {Moottorin arvo}
translate U GameReviewYouPlayedLikeTheEngine {Pelasit yht hyvin kuin moottori}
translate U GameReviewNotEngineMoveButGoodMove {Eri siirto kuin moottorilla, mutta silti hyv}
translate U GameReviewMoveNotGood {Tm ei ole hyv siirto, arvio: }
translate U GameReviewMovesPlayedLike {Siirrot kuin}
translate U GameReviewMovesPlayedEngine {Siirrot kuin moottorilla}

# Correspondence Chess Dialogs:
translate U CCDlgConfigureWindowTitle {Kirjeshakkiasetukset}
translate U CCDlgCGeneraloptions {Yleiset}
translate U CCDlgDefaultDB {Oletustietokanta:}
translate U CCDlgInbox {Inbox/Saapuneet (polku):}
translate U CCDlgOutbox {Outbox/Lhtevt (polku):}
translate U CCDlgXfcc {Xfcc-asetukset:}
translate U CCDlgExternalProtocol {Ulkoisten protokollien ksittelij (esim. Xfcc)}
translate U CCDlgFetchTool {Noutotykalu:}
translate U CCDlgSendTool {Lhetystykalu:}
translate U CCDlgEmailCommunication {eMail}
translate U CCDlgMailPrg {eMail-ohjelma:}
translate U CCDlgBCCAddr {(B)CC-osoite:}
translate U CCDlgMailerMode {Moodi:}
translate U CCDlgThunderbirdEg {esim. Thunderbird, Mozilla Mail, Icedove...}
translate U CCDlgMailUrlEg {esim. Evolution}
translate U CCDlgClawsEg {esim. Sylpheed Claws}
translate U CCDlgmailxEg {esim. mailx, mutt, nail...}
translate U CCDlgAttachementPar {Liiteparametrit:}
translate U CCDlgInternalXfcc {Kyt sisnrakennettua tukea Xfcc:lle}
translate U CCDlgConfirmXfcc {Vahvista siirrot}
translate U CCDlgSubjectPar {Otsikko:}
translate U CCDlgDeleteBoxes {Tyhjenn In-/Outbox}
translate U CCDlgDeleteBoxesText {Haluatko varmasti tyhjent Saapuneet ja Lhetetyt?\nTyhjennykse jlkeen sinun tytyy synkronoida nhdksesi tmnhetkiset asemat.}
translate U CCDlgConfirmMove {Vahvista siirto}
translate U CCDlgConfirmMoveText {Jos vahvistat, seuraava siirto kommentteineen lhetetn palvelimelle:}
translate U CCDlgDBGameToLong {Epyhteninen pmuunnelma}
translate U CCDlgDBGameToLongError {Pmuunnelma on pidempi kuin peli Saapuneet-kansiossa (Inbox). Mikli Saapuneet on ajan tasalla, on pelin pmuunnelmaan listty vahingossa siirtoja.\nLyhenn pmuunnelma ainakin siirtoon \n}


translate U CCDlgStartEmail {Aloita uusi eMail-peli}
translate U CCDlgYourName {Nimi:}
translate U CCDlgYourMail {eMail-osoite:}
translate U CCDlgOpponentName {Vastustajan nimi:}
translate U CCDlgOpponentMail {Vastustajan eMail-osoite:}
translate U CCDlgGameID {Peli ID (yksilllinen):}

translate U CCDlgTitNoOutbox {Scid: Kirjeshakki - Lhtevt (Outbox)}
translate U CCDlgTitNoInbox {Scid: Kirjeshakki - Saapuneet (Inbox)}
translate U CCDlgTitNoGames {Scid: Ei kirjeshakkipelej}
translate U CCErrInboxDir {Kirjeshakki - Saapuneet-hakemisto:}
translate U CCErrOutboxDir {Kirjeshakki - Lhtevt-hakemisto:}
translate U CCErrDirNotUsable {ei ole olemassa tai siihen ei saada yhteytt!\nTarkista ja korjaa asetukset.}
translate U CCErrNoGames {ei sill pelej!\nNouda pelit ensin.}

translate U CCDlgTitNoCCDB {Scid: Ei kirjeshakkitietokantaa}
translate U CCErrNoCCDB {Ei lydy avointa 'Kirjeshakki (Correspondence)' tyyppist tietokantaa. Avaa ainakin yksi kirjeshakkikanta ennen kirjeshakkitoimintojen kytt.}

translate U CCFetchBtn {Nouda pelit serverilt ja prosessoi Saapuneet (Inbox)}
translate U CCPrevBtn {Edelliseen peliin}
translate U CCNextBtn {Seuraavaan peliin}
translate U CCSendBtn {Lhet siirto}
translate U CCEmptyBtn {Tyhjenn Saapuneet ja Lhetetyt}
translate U CCHelpBtn {Apua kuvakkeiden ja statussanomien tulkintaan.\nYleisemp apua saa painamalla F1!}

translate U CCDlgServerName {Serverin nimi:}
translate U CCDlgLoginName  {Kyttjtunnus:}
translate U CCDlgPassword   {Salasana:}
translate U CCDlgURL        {Xfcc-URL:}
translate U CCDlgRatingType {Vahvuuslukutyyppi:}

translate U CCDlgDuplicateGame {Ei-yksilllinen peli-ID}
translate U CCDlgDuplicateGameError {Tm peli lytyy useammasta kuin yhdest tietokannastasi. Poista tuplat ja tiivist tietokantasi (Tiedosto/Yllpito/Tiivist kanta).}

translate U CCDlgSortOption {Lajittelu:}
translate U CCDlgListOnlyOwnMove {Vain ne, joissa olen siirtovuorossa}
translate U CCOrderClassicTxt {Paika, Tapahtuma, Kierros, Tulos, Valkea, Musta}
translate U CCOrderMyTimeTxt {Kelloni}
translate U CCOrderTimePerMoveTxt {Aikaa per siirto ennen seuraavaa ajantarkastusta}
translate U CCOrderStartDate {Aloituspvm.}
translate U CCOrderOppTimeTxt {Vastustajan kello}
translate U CCDlgConfigRelay {Seuraa pelej}
translate U CCDlgConfigRelayHelp {Siirry sivulle http://www.iccf-webchess.com ja nyt seurattava peli.  Jos net shakkilaudan, kopioi osoite selaimestasi URL alla olevaan listaan. Vain yksi osoite per rivi!\nEsim: http://www.iccf-webchess.com/MakeAMove.aspx?id=266452}

# Connect Hardware dialogs
translate U ExtHWConfigConnection {Ulkoisten laitteiden asetukset}
translate U ExtHWPort {Portti}
translate U ExtHWEngineCmd {Moottorin komento}
translate U ExtHWEngineParam {Moottorin parametri}
translate U ExtHWShowButton {Nyt painike}
translate U ExtHWHardware {Hardware}
translate U ExtHWNovag {Novag Citrine}
translate U ExtHWInputEngine {Input Engine}
translate U ExtHWNoBoard {Ei lautaa}
translate U NovagReferee {Referee}

# Input Engine dialogs
translate U IEConsole {Input Engine Console}
translate U IESending {Siirrot lhetetn}
translate U IESynchronise {Synkronoi}
translate U IERotate  {Knn}
translate U IEUnableToStart {Input Engine ei voi kynnisty:}


# Calculation of Variations
translate U DoneWithPosition {Asema valmis}

translate U Board {Lauta}
translate U showGameInfo {Nyt pelin tiedot}
translate U autoResizeBoard {Sd laudan koko automaattisesti}
translate U DockTop {Siirr ylimmksi}
translate U DockBottom {Siirr alimmaksi}
translate U DockLeft {Siirr vasemmalle}
translate U DockRight {Siirr oikealle}
translate U Undock {Vapauta lukitus}

# Switcher window
translate U ChangeIcon {Vaihda kuvake...}

}
# end of english.tcl






# swedish.tcl:
# Text for menu names and status bar help messages in Swedish.
# Part of Scid (Shane's Chess Information Database).
# Contributed by Martin Skjldebrand, martin@skjoldebrand.org
# Thanks to: Hans Eriksson, for looking over the translation file

addLanguage W Swedish 1 ;#iso8859-1

proc setLanguage_W {} {

# File menu:
menuText W File "Arkiv" 0
menuText W FileNew "Ny..." 0 {Skapa en ny Scid databas}
menuText W FileOpen "ppna..." 0 {ppna en befintlig Scid databas}
menuText W FileClose "Stng" 0 {Stng den aktiva Scid databasen}
menuText W FileFinder "Sk filer" 4 {ppna skdialogen}
menuText W FileBookmarks "Bokmrken" 0 {Hantera bokmrken (kortkommando: Ctrl+B)}
menuText W FileBookmarksAdd "Nytt bokmrke" 0 \
  {Markera den aktiva stllningen i partiet}
menuText W FileBookmarksFile "Spara bokmrke" 0 \
  {Spara bokmrket fr den aktiva stllningen i partiet}
menuText W FileBookmarksEdit "Redigera bokmrken..." 0 \
  {Redigera bokmrken}
menuText W FileBookmarksList "Visa bokmrken som lista" 19 \
  {Visar bokmrkena som lista, inte undermenyer}
menuText W FileBookmarksSub "Visa bokmrken i undermenyer" 17 \
  {Visar bokmrkena som undermenyer, inte lista}
menuText W FileMaint "Databasverktyg" 0 {Scids databasverktyg}
menuText W FileMaintWin "Verktygsfnster" 0 \
  {ppna/ stng verktygsfnstret}
menuText W FileMaintCompact "Komprimera databasen..." 0 \
  {Komprimera databasen, avlgsna raderade partier och oanvnda namn}
menuText W FileMaintClass "Klassificera partier enligt ECO..." 2 \
  {Klassificera om alla partier enligt ECO-systemet}
menuText W FileMaintSort "Sortera databasen..." 0 \
  {Sortera partierna i den aktiva databasen}
menuText W FileMaintDelete "Radera dubbletter..." 0 \
  {Sk dubbletter och markera dem som raderingsbara}
menuText W FileMaintTwin "Sk dubbletter" 0 \
  {ppna/ stng dubblettfnstret fr att ska dubblettpartier}
menuText W FileMaintName "Stavningskontroll" 0 {Namnredigering och stavningskontroll}
menuText W FileMaintNameEditor "Redigera namn" 0 \
  {Redigera spelarnamn utifrn rttstavningsfilen}
menuText W FileMaintNamePlayer "Stavningskontrollera namn..." 22 \
  {Stavningskontrollera namn utifrn rttstavningsfilen}
menuText W FileMaintNameEvent "Stavningskontrollera evenemang..." 21 \
  {Stavningskontrollera evenemang utifrn rttstavningsfilen}
menuText W FileMaintNameSite "Stavningskontrollera platser..." 21 \
  {Stavningskontrollera platser utifrn rttstavningsfilen}
menuText W FileMaintNameRound "Stavningskontrollera ronder..." 21 \
  {Stavningskontrollera ronder utifrn rttstavningsfilen}
menuText W FileReadOnly "Enbart lsbar..." 8 \
  {Avlgsna temporrt redigeringsmjligheterna till databasen}
menuText W FileSwitch "Byt databas" 0 \
  {Byt till en annan ppnad databas} 
menuText W FileExit "Avsluta" 0 {Avsluta Scid}
menuText W FileMaintFixBase "Fixa trasig databas" 0 {Frsk att fixa en trasig databas}

# Edit menu:
menuText W Edit "Redigera" 0
menuText W EditAdd "Lgg till variant" 0 {Skapa en variant vid denna stllning}
menuText W EditDelete "Radera variant" 0 {Radera en variant vid denna stllning}
menuText W EditFirst "Skapa huvudvariant" 6 \
  {Gr en av varianterna till huvudvariant}
menuText W EditMain "Skapa nytt textdrag" 11 \
  {Gr en av varianterna till partifortsttning}
menuText W EditTrial "Testa variant" 6 \
  {Starta/ stoppa testlge, undersk en id p brdet}
menuText W EditStrip "Ta bort" 3 {Avlgsna kommentarer eller varianter frn partiet}
menuText W EditUndo "ngra" 0 {ngra senaste ndring i parti}
menuText W EditStripComments "Kommentarer" 0 \
  {Avlgsna alla kommentarer och noteringar frn partiet}
menuText W EditStripVars "Varianter" 0 {Avlgsna alla varianter frn partiet}
menuText W EditStripBegin "Avlgsna tidigare drag" 9 \
  {Avlgsna dragen fram till den aktuella stllningen} 
menuText W EditStripEnd "Avlgsna resterande drag" 0 \
  {Avlgsna partiets resterande drag} 
menuText W EditReset "Tm Clipbase" 1 \
  {Tmmer den temporra databasen}
menuText W EditCopy "Kopiera partiet till Clipbase" 21 \
  {Kopierar det aktuella partiet till Clipbase}
menuText W EditPaste "Klistra in det senaste Clipbasepartiet" 8 \
  {Klistrar in det senaste tillagda i Clipbase i den aktiva databasen}
menuText W EditPastePGN "Klistra in Clipbasetext som PGNparti..." 10 \
  {Tolka Clipbasetexten som ett parti i PGN notation och klistra in det hr}
menuText W EditSetup "Skapa stllning..." 0 \
  {Skapa en utgngsstllning fr aktuellt parti}
menuText W EditCopyBoard "Kopiera stllning" 0 \
  {Kopiera den aktuella stllningen i FEN kod till urklippshanteraren} 
menuText W EditPasteBoard "Klistra in utgngsstllning" 10 \
  {Klistra in stllningen frn aktuellt parti i den temporra databasen}

# Game menu:
menuText W Game "Partier" 0
menuText W GameNew "Nytt parti" 0 \
  {terstll brdet infr ett nytt parti (raderar alla ndringar)}
menuText W GameFirst "Ladda det frsta partiet" 10 {Laddar det frsta partiet i filtret}
menuText W GamePrev "Ladda fregende parti" 7 {Ladda fregende parti i filtret}
menuText W GameReload "Brja om partiet" 0 \
  {terstll partiet (raderar alla ndringar)}
menuText W GameNext "Ladda nsta parti" 6 {Ladda nsta parti i filtret}
menuText W GameLast "Ladda det sista partiet" 10 {Ladda det sista partiet i filtret}
menuText W GameRandom "Ladda parti slumpmssigt" 14 \
  {Ladda ett av datorn slumpmssigt valt parti} 
menuText W GameNumber "Ladda parti nummer..." 6 \
  {Ladda ett parti genom att ange dess nummer}
menuText W GameReplace "Spara: Erstt parti..." 7 \
  {Spara partiet och erstt tidigare version}
menuText W GameAdd "Spara: Nytt parti..." 1 \
  {Spara ett nytt parti}
menuText W GameDeepest "Identifiera ppningen" 0 \
  {G till den mest detaljerade stllningen i ECO boken}
menuText W GameGotoMove "G till drag nummer..." 8 \
  {G till ett specifikt drag i partiet}
menuText W GameNovelty "Hitta nyhet..." 7 \
  {Hitta det frsta draget i partiet som inte spelats tidigare}

# Search Menu:
menuText W Search "Sk" 0
menuText W SearchReset "terstll skfilter" 0 {terstll skfiltret s att alla partiet ingr}
menuText W SearchNegate "Omvnt filter" 0 {Ta med partier som utesluts av filtret}
menuText W SearchCurrent "Aktuell position..." 8 {Sk partier med aktuell position p brdet}
menuText W SearchHeader "I huvud..." 2 {Anvnd fast information (spelare, evenemang, plats, mm)}
menuText W SearchMaterial "Material/stllning..." 0 {Skning baserad p material eller stllning}
menuText W SearchUsing "Anvnd skfil..." 10 {Anvnd en fil med lagrade skvillkor}

# Windows menu:
menuText W Windows "Fnster" 0
menuText W WindowsComment "Kommentarseditor" 0 {ppna/ stng kommentarseditorn}
menuText W WindowsGList "Partilista" 5 {ppna/ stng partilistan}
menuText W WindowsPGN "PGN fnster" 0 \
  {ppna/ stng PGN fnstret}
menuText W WindowsPList "Spelarfrteckning" 7 {ppna/ stng en frteckning ver spelarna i den aktiva databasen} 
menuText W WindowsTmt "Turneringar" 0 {Lista turneringar}
menuText W WindowsSwitcher "Databasvxlaren" 0 \
  {ppna/ stng databasvxlaren}
menuText W WindowsMaint "Verktygsfnster" 0 \
  {ppna/ stng verktygsfnstret}
menuText W WindowsECO "ECO fnster" 0 {ppna/ stng ECO blddraren}
menuText W WindowsRepertoire "Repetoareditor" 0 \
  {ppna/ stng spelppningsfnstret}
menuText W WindowsStats "Statistikfnster" 0 \
  {ppna/ stng statistikfnstret}
menuText W WindowsTree "Trdfnster" 2 {ppna/ stng varianttrdets fnster}
menuText W WindowsTB "Slutspelsdatabas" 2 \
  {ppna/ stng slutspelsdatabasfnstret}
menuText W WindowsBook "Bokfnster" 0 {ppna/stng Bokfnstret}
menuText W WindowsCorrChess "Korrespondensfnster" 0 {ppna/stng Korrespondensfnstret}

# Tools menu:
menuText W Tools "Verktyg" 0
menuText W ToolsAnalysis "Analysmotor..." 6 \
  {Starta/ stoppa en analysmotor}
menuText W ToolsAnalysis2 "Analysmotor 2..." 12 \
  {Starta/ stoppa en andra analysmotor}
menuText W ToolsCross "Resultattabell" 0 {Visa en resultattabell fr den aktuella turneringen}
menuText W ToolsEmail "Eposthanterare" 0 \
  {ppna/ stng eposthanteraren}
menuText W ToolsFilterGraph "Filterdiagram" 7 \
  {ppna/ stng filterdiagramfnstret} 
menuText W ToolsAbsFilterGraph "Absolut Filtergraf" 7 {ppna/stng filtergraffnstret fr absolutvrden}
menuText W ToolsOpReport "ppningsrapport" 0 \
  {Skapa en ppningsrapport utifrn den aktuella stllningen}
menuText W ToolsOpenBaseAsTree "ppna databas som trd" 0   {ppna en databas och anvnd den i Trdfnstret}
menuText W ToolsOpenRecentBaseAsTree "ppna senaste databasen som trd" 0   {ppna den senaste databasen och anvnd den i Trdfnstret}
menuText W ToolsTracker "Sk material"  0 {ppnar dialog fr att ska efter en viss materiell balans} 
menuText W ToolsTraining "Trning"  0 {Trningsverktyg (taktik, ppningar,...) }
menuText W ToolsTacticalGame "Taktiskt parti"  0 {Spela ett parti med taktik}
menuText W ToolsSeriousGame "Serist parti"  0 {Spela ett serist parti}
menuText W ToolsTrainOpenings "ppningar"  0 {Trna med en repetoar}
menuText W ToolsTrainReviewGame "Granska parti"  0 {Gissa drag spelade i ett parti}
menuText W ToolsTrainTactics "Taktik"  0 {Lsa taktik}
menuText W ToolsTrainCalvar "Variantberkning"  0 {Variantberkningstrning}
menuText W ToolsTrainFindBestMove "Hitta bst drag"  0 {Hitta bsta draget}
menuText W ToolsTrainFics "Spela p Internet"  0 {Spela p freechess.org}
menuText W ToolsBookTuning "Bokfininstllning" 0 {Bokfininstllning}
menuText W ToolsConnectHardware "Anslut Hrdvara" 0 {Anslut extern hrdvara}
menuText W ToolsConnectHardwareConfigure  "Konfiguration" 0 {Konfiguration}
menuText W ToolsConnectHardwareNovagCitrineConnect "Anslut Novag Citrine" 0 {Anslut Novag Citrine}
menuText W ToolsConnectHardwareInputEngineConnect "Anslut Inmatningsschackmotor" 0 {Anslut Inmatningsschackmotor (t.ex. DGT)}
menuText W ToolsPInfo "Spelarinformation"  0 \
  {ppna/ uppdatera spelarinformation}
menuText W ToolsPlayerReport "Spelarrapport..." 3 \
  {Skapa en spelarrapport}
menuText W ToolsRating "Ratingdiagram" 0 \
  {Skapa ett ratingdiagram fr spelarna i partiet}
menuText W ToolsScore "Resultatdiagram" 8 {Visa resultatdiagrammet}
menuText W ToolsExpCurrent "Exportera aktuellt parti" 1 \
  {Spara aktuellt parti till en textfil}
menuText W ToolsExpCurrentPGN "Exportera till PGN..." 15 \
  {Spara aktuellt parti till en PGN-fil}
menuText W ToolsExpCurrentHTML "Exportera till HTML..." 15 \
  {Spara aktuellt parti till en HTML-fil}
menuText W ToolsExpCurrentHTMLJS "Exportera till HTML och JavaScript-fil..." 15 {Spara aktuellt parti till en HTML och JavaScript-fil}  
menuText W ToolsExpCurrentLaTeX "Exportera till LaTeX..." 15 \
  {Spara aktuellt parti till en LaTeX-fil}
menuText W ToolsExpFilter "Exportera alla filtrerade partier" 15 \
  {Spara alla filterade partier till en textfil}
menuText W ToolsExpFilterPGN "Exportera till PGN..." 15 \
  {Spara alla filterade partier till en PGN-fil}
menuText W ToolsExpFilterHTML "Exportera till HTML..." 15 \
  {Spara alla filterade partier till en HTML-fil}
menuText W ToolsExpFilterHTMLJS "Exportera filtrerade till HTML och JavaScript-fil..." 17 {Spara alla filtrerade partier till en HTML och JavaScript-fil}  
menuText W ToolsExpFilterLaTeX "Exportera till LaTeX..." 15 \
  {Spara alla filterade partier till en LaTeX-fil}
menuText W ToolsImportOne "Importera ett parti i PGN-format..." 0 \
  {Importera ett parti i PGN-format}
menuText W ToolsImportFile "Importera flera partier i PGN-format..." 16 \
  {Importera flera partier i PGN-format frn en fil}
menuText W ToolsStartEngine1 "Starta schackmotor 1" 0  {Starta schackmotor 1}
menuText W ToolsStartEngine2 "Starta schackmotor 2" 0  {Starta schackmotor 2}
menuText W ToolsCaptureBoard "Spara aktuellt schackbrde..." 0  {Spara det aktuella schackbrdet som en bild.}
menuText W Play "Spela" 0
menuText W CorrespondenceChess "Korrespondensschack" 0 {Funktioner fr eMail och Xfcc baserad Korrespondensschack}
menuText W CCConfigure "Konfigurera..." 0 {Konfigurera externa verktyg och generella instllningar}
menuText W CCConfigRelay "Konfigurera observationer..." 10 {Konfigurera partier att observera}
menuText W CCOpenDB "ppna Databas..." 0 {ppna standardkorrespondensdatabasen}
menuText W CCRetrieve "Hmta Partier" 0 {Hmta partier via extern (Xfcc-)hjlpare}
menuText W CCInbox "Hantera Inkorg" 0 {Hantera alla filer i Scids Inkorg}
menuText W CCSend "Skicka Drag" 0 {Skicka ditt drag via eMail eller extern (Xfcc-)hjlpare}
menuText W CCResign "Ge upp" 0 {Ge upp (inte via eMail)}
menuText W CCClaimDraw "Hvda Remi" 0 {Skicka drag och hvda Remi (inte via eMail)}
menuText W CCOfferDraw "Erbjud Remi" 0 {Skicka drag och erbjud Remi (inte via eMail)}
menuText W CCAcceptDraw "Acceptera Remi" 0 {Acceptera en erbjuden Remi (inte via eMail)}
menuText W CCNewMailGame "Nytt eMail-parti..." 0 {Starta ett nytt eMail-parti}
menuText W CCMailMove "Skicka Drag..." 0 {Skicka draget via eMail till motstndaren}
menuText W CCGamePage "Partisida..." 0 {Starta upp partiet via weblsaren}
menuText W CCEditCopy "Kopiera partilista till Clipbase" 0 {Kopiera partierna som CSV-lista till Clipbase}

# Options menu:
menuText W Options "Alternativ" 2
menuText W OptionsBoard "Brdet" 0 {ndra brdets utseende}
menuText W OptionsBoardSize "Brdstorlek" 0 {ndra brdets storlek}
menuText W OptionsBoardPieces "Pjsutseende" 1 {ndra pjsernas utseende} 
menuText W OptionsBoardColors "Frger..." 0 {ndra brdets frger}
menuText W OptionsBoardGraphics "Rutor..." 0 {Vlj texturer fr rutor}
translate W OptionsBGW {Vlj textur fr rutor}
translate W OptionsBoardGraphicsText {Vlj grafikfiler fr vita och svarta rutor:}
menuText W OptionsBoardNames "Spelarnamn..." 0 {Redigera spelares namn}
menuText W OptionsExport "Export" 0 {ndra exportalternativ}
menuText W OptionsFonts "Typsnitt" 0 {ndra typsnitt}
menuText W OptionsFontsRegular "Normal" 0 {ndra det normala typsnittet}
menuText W OptionsFontsMenu "Menu" 0 {ndra menytypsnittet}
menuText W OptionsFontsSmall "Liten" 0 {ndra det lilla typsnittet}
menuText W OptionsFontsTiny "Tiny" 0 {Change the tiny font}
menuText W OptionsFontsFixed "Fixerad" 0 {ndra det fixerade typsnittet}
menuText W OptionsGInfo "Partiinformation" 0 {Alternativ fr partiinformation}
menuText W OptionsLanguage "Sprk" 0 {Vlj sprk}
menuText W OptionsMovesTranslatePieces "verstt pjser" 0 {verstt frsta bokstaven fr pjser}
menuText W OptionsMovesHighlightLastMove "Markera senaste draget" 0 {Markera senaste draget}
menuText W OptionsMovesHighlightLastMoveDisplay "Visa" 0 {Visa senaste markerade draget}
menuText W OptionsMovesHighlightLastMoveWidth "Bredd" 0 {Tjockhet p rad}
menuText W OptionsMovesHighlightLastMoveColor "Frg" 0 {Frg p rad}
menuText W OptionsMoves "Drag" 0 {Alternativ fr dragangivelse}
menuText W OptionsMovesAsk "Frga fre erstt drag" 0 \
  {Frga innan du erstter befintliga drag}
menuText W OptionsMovesAnimate "Frdrjning vid manuellt spel" 1 \
  {Ange tid mellan varje drag nr dragen grs automatiskt}
menuText W OptionsMovesDelay "Frdrjning vid automatspel..." 1 \
  {Ange frdrjning mellan dragen nr datorn spelar sjlv}
menuText W OptionsMovesCoord "Koordinater" 0 \
  {Acceptera koordinater ("g1f3") vid dragangivelse}
menuText W OptionsMovesSuggest "Visa freslagna drag" 0 \
  {Visa/ Dlj freslagna drag}
menuText W OptionsShowVarPopup "Visa Variantfnster" 0 {Starta/Avsluta visningen av ett Variantfnster}  
menuText W OptionsMovesSpace "Lgg till mellanslag efter dragnummer" 0 {Lgg till mellanslag efter dragnummer}  
menuText W OptionsMovesKey "Tangentkomplettering" 0 \
  {Starta/ stng av dragkomplettering vid tangentinmatning}
menuText W OptionsMovesShowVarArrows "Visa pilar fr variationer" 0 {Vxlar p/av pilar som visar drag i variationer}
menuText W OptionsNumbers "Talformat" 3 {Vlj hur tal visas}
menuText W OptionsStartup "Start" 3 {Vlj vilka fnster som ska ppnas vid start}
menuText W OptionsTheme "Tema" 0 {ndra utseende p grnssnitt}
menuText W OptionsWindows "Fnster" 1 {Fnsteralternativ}
menuText W OptionsWindowsIconify "Minimera automatiskt" 5 \
  {Minimera alla fnster nr huvudfnstret minimeras}
menuText W OptionsWindowsRaise "Autofokus" 0 \
  {Visa ter vissa fnster (t ex. resultatrknare) automatiskt nr de dljs}
menuText W OptionsSounds "Ljud..." 2 {Konfigurera ljud fr att annonsera drag}
menuText W OptionsWindowsDock "Dockningsfnster" 0 {Dockningsfnster}
menuText W OptionsWindowsSaveLayout "Spara layout" 0 {Sparar layout}
menuText W OptionsWindowsRestoreLayout "terstll layout" 0 {terstller layout}
menuText W OptionsWindowsShowGameInfo "Visa partiinformation" 0 {Visar partiinformation}
menuText W OptionsWindowsAutoLoadLayout "Automatiskt ppna frsta layouten" 0 {ppnar automatiskt frsta layouten vid uppstart}
menuText W OptionsToolbar "Verktygsflt" 0 \
  {Visa/ dlj huvudfnstrets verktygsflt}
menuText W OptionsECO "Ladda ECO fil..." 7 {Ladda ECO-klassificeringen vid start}
menuText W OptionsSpell "Ladda Rttstavningsfil..." 7 \
  {Ladda rttstavningsfilen vid start}
menuText W OptionsTable "Katalog fr slutspelsdatabaser..." 0 \
  {Vlj en fil som innehller en slutspelsdatabas; alla vriga filer i samma katalog kommer att anvndas}
menuText W OptionsRecent "Senast anvnda filer..." 16 \
  {ndra antalet senast anvnda filer som visas i Arkivmenyn} 
menuText W OptionsBooksDir "ppningsbokskatalog..." 0 {Anger ppningsbokskatalogen}
menuText W OptionsTacticsBasesDir "Taktikbaskatalog..." 0 {Anger Taktikbaskatalog (fr trning)}
menuText W OptionsSave "Spara alternativ" 7 \
  "Spara alla alternativ till en instllningsfil"
menuText W OptionsAutoSave "Autospara vid avslut" 1 \
  {Spara alla alternativ nr du avslutar Scid}

# Help menu:
menuText W Help "Hjlp" 0
menuText W HelpContents "Innehll" 0 {Visa innehll} 
menuText W HelpIndex "Index" 0 {Hjlpsystemets indexsida}
menuText W HelpGuide "Snabbguide" 0 {Visa snabbguiden}
menuText W HelpHints "Tips" 0 {Visa tips}
menuText W HelpContact "Kontaktinformation" 0 {Visa kontaktinformation}
menuText W HelpTip "Dagens tips" 0 {Anvndbara Scid tips}
menuText W HelpStartup "Startfnster" 5 {Visa startfnstret}
menuText W HelpAbout "Om Scid" 0 {Information om Scid}

# Game info box popup menu:
menuText W GInfoHideNext "Dlj nsta drag" 0
menuText W GInfoMaterial "Visa materialvrden" 0
menuText W GInfoFEN "Visa FEN" 5
menuText W GInfoMarks "Visa frgade flt och pilar" 22 
menuText W GInfoWrap "Radbrytning" 0
menuText W GInfoFullComment "Visa fullstndiga kommentarer" 18
menuText W GInfoPhotos "Visa bilder" 5 ;
menuText W GInfoTBNothing "Slutspelsdatabaser: inget" 20
menuText W GInfoTBResult "Slutspelsdatabaser: endast resultat" 28
menuText W GInfoTBAll "Slutspelsdatabaser: resultat och bsta drag" 33
menuText W GInfoDelete "terta/Radera detta parti" 0
menuText W GInfoMark "(Av-)Markera detta parti" 5
menuText W GInfoInformant "Konfigurera Informant-parametrar" 0

# Main window buttons:
helpMsg W .main.fbutton.button.start {G till brjan av partiet  (kortkommando: Home)}
helpMsg W .main.fbutton.button.end {G till slutet av partiet  (kortkommando: End)}
helpMsg W .main.fbutton.button.back {Backa ett drag (kortkommando: Vnsterpil)}
helpMsg W .main.fbutton.button.forward {G fram ett drag  (kortkommando: Hgerpil)}
helpMsg W .main.fbutton.button.intoVar {G in i variant (kortkommando: v)}
helpMsg W .main.fbutton.button.exitVar {G ur variant  (kortkommando: z)}
helpMsg W .main.fbutton.button.flip {Rotera brdet  (kortkommando: .)}
helpMsg W .main.fbutton.button.coords {Visa (inte) koordinater  (kortkommando: 0)}
helpMsg W .main.fbutton.button.stm {Visa (inte) vilken sida som r vid draget}
helpMsg W .main.fbutton.button.autoplay {Autospel  (kortkommando: Ctrl+Z)}

# General buttons:
translate W Back {Tillbaka}
translate W Browse {Blddra}
translate W Cancel {Avbryt}
translate W Continue {Fortstt}
translate W Clear {Rensa}
translate W Close {Stng}
translate W Contents {Innehll}
translate W Defaults {Standard}
translate W Delete {Radera}
translate W Graph {Diagram}
translate W Help {Hjlp}
translate W Import {Importera}
translate W Index {Index}
translate W LoadGame {Ladda parti}
translate W BrowseGame {Blddra genom partier}
translate W MergeGame {Sl samman parti}
translate W MergeGames {Sl samman partier}
translate W Preview {Frhandsgranska}
translate W Revert {ngra inmatning}
translate W Save {Spara}
translate W Search {Sk}
translate W Stop {Stoppa}
translate W Store {Spara}
translate W Update {Uppdatera}
translate W ChangeOrient {ndra fnstrets orientering}
translate W ShowIcons {Visa Ikoner} ;# ***
translate W None {Ingen}
translate W First {Frsta}
translate W Current {Aktuella}
translate W Last {Sista}

# General messages:
translate W game {parti}
translate W games {partier}
translate W move {drag}
translate W moves {drag}
translate W all {alla}
translate W Yes {Ja}
translate W No {Nej}
translate W Both {Bda}
translate W King {Kung}
translate W Queen {Dam}
translate W Rook {Torn}
translate W Bishop {Lpare}
translate W Knight {Springare}
translate W Pawn {Bonde}
translate W White {Vit}
translate W Black {Svart}
translate W Player {Spelare}
translate W Rating {Rating}
translate W RatingDiff {Ratingskillnad (Vit - Svart)}
translate W AverageRating {Medelrating}
translate W Event {Evenemang}
translate W Site {Plats}
translate W Country {Land}
translate W IgnoreColors {Ignorera frger}
translate W Date {Datum}
translate W EventDate {Evenemangsdatum}
translate W Decade {Decennium}
translate W Year {r}
translate W Month {Mnad}
translate W Months {Januari Februari Mars April Maj Juni Juli Augusti September Oktober November December}
translate W Days {Sn Mn Tis Ons Tor Fre Lr}
translate W YearToToday {Idag}
translate W Result {Resultat}
translate W Round {Rond}
translate W Length {Lngd}
translate W ECOCode {ECO kod}
translate W ECO {ECO}
translate W Deleted {Raderad}
translate W SearchResults {Skresultat}
translate W OpeningTheDatabase {ppnar databas}
translate W Database {Databas}
translate W Filter {Filter}
translate W noGames {inga partier}
translate W allGames {alla partier}
translate W empty {tom}
translate W clipbase {Clipbase}
translate W score {resultat}
translate W StartPos {Utgngsstllning}
translate W Total {Totalt}
translate W readonly {bara lsbar} ;# ***

# Standard error messages:
translate W ErrNotOpen {Databasen r inte ppen.}
translate W ErrReadOnly {Databasen r skrivskyddad. Du kan inte ndra i den.}
translate W ErrSearchInterrupted {Skningen avbrts; resultatet r inte fullstndigt.}

# Game information:
translate W twin {dubblett}
translate W deleted {raderad}
translate W comment {kommentar}
translate W hidden {dold}
translate W LastMove {Senaste draget}
translate W NextMove {Nsta}
translate W GameStart {Utgngsstllning}
translate W LineStart {Varianten brjar}
translate W GameEnd {Slutstllning}
translate W LineEnd {Varianten slut}

# Player information:
translate W PInfoAll {Resultat fr <b>alla</b> partier}
translate W PInfoFilter {Resultat fr <b>filtrerade</b> partier}
translate W PInfoAgainst {Resultat mot}
translate W PInfoMostWhite {De vanligaste ppningarna som vit}
translate W PInfoMostBlack {De vanligaste ppningarna som svart}
translate W PInfoRating {Ratinghistoria}
translate W PInfoBio {Biografisk information}
translate W PInfoEditRatings {Redigera rating} 

# Tablebase information:
translate W Draw {Remi}
translate W stalemate {patt}
translate W withAllMoves {med alla drag}
translate W withAllButOneMove {med alla drag utom ett}
translate W with {med}
translate W only {bara}
translate W lose {frlust}
translate W loses {frluster}
translate W allOthersLose {alla andra drag frlorar}
translate W matesIn {med matt i}
translate W hasCheckmated {har satt matt}
translate W longest {lngst}
translate W WinningMoves {Vinstdrag} 
translate W DrawingMoves {Remidrag} 
translate W LosingMoves {Frlustdrag} 
translate W UnknownMoves {Oknt resultat} 

# Tip of the day:
translate W Tip {Tips}
translate W TipAtStartup {Tips vid start}

# Tree window menus:
menuText W TreeFile "Fil" 0
menuText W TreeFileFillWithBase "Fyll Cache med databas" 0 {Fyll Cachefilen med alla partier i den aktuella databasen}
menuText W TreeFileFillWithGame "Fyll Cache med parti" 0 {Fyll Cachefilen med aktuellt parti i den aktuella databasen}
menuText W TreeFileSetCacheSize "Cachestorlek" 0 {Ange Cachestorleken}
menuText W TreeFileCacheInfo "Cacheinformation" 0 {F information om Cacheanvndning}
menuText W TreeFileSave "Spara cachefil" 0 {Spara trdcache (*.stc)-filen}
menuText W TreeFileFill "Fyll cachefil" 0 \
 {Fyll cachefilen med vanliga ppningar}
menuText W TreeFileBest "Lista bsta partier" 0 {Visa lista ver de bsta partierna i trdet}
menuText W TreeFileGraph "Diagramfnster" 0 {Visa diagrammet fr denna gren i trdet}
menuText W TreeFileCopy "Kopiera trd till urklipp" 1 \
  {Kopierar trdrelaterad statistik till urklipp}
menuText W TreeFileClose "Stng trdfnstret" 0 {Stng trdfnstret}
menuText W TreeMask "Skmask" 0
menuText W TreeMaskNew "Ny" 0 {Ny skmask}
menuText W TreeMaskOpen "ppna" 0 {ppna skmask}
menuText W TreeMaskOpenRecent "ppna senaste" 0 {ppna senaste skmasken}
menuText W TreeMaskSave "Spara" 0 {Spara skmask}
menuText W TreeMaskClose "Stng" 0 {Stng skmask}
menuText W TreeMaskFillWithGame "Fyll med parti" 0 {Fyll skmask med parti}
menuText W TreeMaskFillWithBase "Fyll med databas" 0 {Fyll skmask med alla partier i databasen}
menuText W TreeMaskInfo "Info om skmask" 0 {Visa statistik fr aktuell skmask}
menuText W TreeMaskDisplay "Visa skmaskkarta" 0 {Visa skmaskdata i trdform}
menuText W TreeMaskSearch "Sk" 0 {Sk i aktuell skmask}
menuText W TreeSort "Sortera" 0
menuText W TreeSortAlpha "Alfabetiskt" 0
menuText W TreeSortECO "ECO kod" 0
menuText W TreeSortFreq "Frekvens" 0
menuText W TreeSortScore "Resultat" 0
menuText W TreeOpt "Alternativ" 0
menuText W TreeOptSlowmode "Lngsam mod" 0 {Lngsam mod fr uppdateringar (hg noggrannhet)}
menuText W TreeOptFastmode "Snabb mod" 0 {Snabb mod fr uppdateringar (ingen dragtranspositionering)}
menuText W TreeOptFastAndSlowmode "Snabb och lngsam mod" 0 {Snabb mod sedan lngsam mod fr uppdateringar}
menuText W TreeOptStartStop "Automatisk uppdatering" 0 {Vxlar automatisk uppdatering av trdfnstret}
menuText W TreeOptLock "Ls" 0 {Ls/ ls upp trdet fr den aktuella databasen}
menuText W TreeOptTraining "Trna" 0 {Starta/ stng av trningslge}
menuText W TreeOptAutosave "Spara cache filen automatiskt" 0 \
  {Spara cachefilen automatiskt nr trdfnstret stngs}
menuText W TreeHelp "Hjlp" 0
menuText W TreeHelpTree "Trdhjlp" 0
menuText W TreeHelpIndex "Hjlpindex" 0
translate W SaveCache {Spara cache}
translate W Training {Trna}
translate W LockTree {Ls}
translate W TreeLocked {Lst}
translate W TreeBest {Bst}
translate W TreeBestGames {Bsta partier i trdet}
# Note: the next message is the tree window title row. After editing it,
# check the tree window to make sure it lines up with the actual columns.
translate W TreeTitleRow \
  { Drag      ECO     Frekvens      Res.    Elo~  Niv  r~   %Remi} 
translate W TreeTotal {TOTALT} 
translate W DoYouWantToSaveFirst {Vill du spara frst}
translate W AddToMask {Lgg till i skmask}
translate W RemoveFromMask {Ta bort frn skmask}
translate W AddThisMoveToMask {Lgg till deta drag i skmask}
translate W SearchMask {Sk i skmask}
translate W DisplayMask {Visa skmask}
translate W Nag {NAG-kod}
translate W Marker {Markera}
translate W Include {Inkludera}
translate W Exclude {Exkludera}
translate W MainLine {Huvudvariant}
translate W Bookmark {Bokmrke}
translate W NewLine {Ny variant}
translate W ToBeVerified {Att bli verifierad}
translate W ToTrain {Att trna}
translate W Dubious {Tveksam}
translate W ToRemove {Att ta bort}
translate W NoMarker {Ingen markering}
translate W ColorMarker {Frg}
translate W WhiteMark {Vit}
translate W GreenMark {Grn}
translate W YellowMark {Gul}
translate W BlueMark {Bl}
translate W RedMark {Rd}
translate W CommentMove {Kommentera drag}
translate W CommentPosition {Kommentera position}
translate W AddMoveToMaskFirst {Lgg till drag till skmask frst}
translate W OpenAMaskFileFirst {ppna en skmaskmaskfil frst}
translate W Positions {Positioner}
translate W Moves {Drag}

# Finder window:
menuText W FinderFile "Fil" 0
menuText W FinderFileSubdirs "Sk i underkataloger" 0
menuText W FinderFileClose "Stng Filskaren" 0
menuText W FinderSort "Sortera" 0
menuText W FinderSortType "Typ" 0
menuText W FinderSortSize "Storlek" 0
menuText W FinderSortMod "Frndrad" 0
menuText W FinderSortName "Namn" 0
menuText W FinderSortPath "Skvg" 0
menuText W FinderTypes "Typer" 0
menuText W FinderTypesScid "Sciddatabaser" 0
menuText W FinderTypesOld "Sciddatabaser i ldre format" 0
menuText W FinderTypesPGN "PGN-filer" 0
menuText W FinderTypesEPD "EPD-filer" 0
menuText W FinderTypesRep "ppningsfiler" 0
menuText W FinderHelp "Hjlp" 0
menuText W FinderHelpFinder "Hjlp fr Filskaren" 0
menuText W FinderHelpIndex "Hjlpindex" 0
translate W FileFinder {Filskaren}
translate W FinderDir {Katalog}
translate W FinderDirs {Kataloger}
translate W FinderFiles {Filer}
translate W FinderUpDir {upp}
translate W FinderCtxOpen {ppna}
translate W FinderCtxBackup {Spara}
translate W FinderCtxCopy {Kopiera}
translate W FinderCtxMove {Flytta}
translate W FinderCtxDelete {Ta bort}

# Player finder:
menuText W PListFile "Fil" 0
menuText W PListFileUpdate "Uppdatera" 0
menuText W PListFileClose "Stng spelarfrteckningen" 1 
menuText W PListSort "Sortera" 0
menuText W PListSortName "Namn" 0
menuText W PListSortElo "Elo" 0
menuText W PListSortGames "Partier" 0
menuText W PListSortOldest "ldst" 0 
menuText W PListSortNewest "Yngst" 0

# Tournament finder:
menuText W TmtFile "Fil" 0
menuText W TmtFileUpdate "Uppdatera" 0
menuText W TmtFileClose "Stng turneringshanteraren" 0
menuText W TmtSort "Sortera" 0
menuText W TmtSortDate "Datum" 0
menuText W TmtSortPlayers "Spelare" 0
menuText W TmtSortGames "Partier" 0
menuText W TmtSortElo "Elo" 0
menuText W TmtSortSite "Plats" 0
menuText W TmtSortEvent "Evenemang" 1
menuText W TmtSortWinner "Vinnare" 0
translate W TmtLimit "Listbegrnsningar"
translate W TmtMeanElo "Lgsta snitt Elo"
translate W TmtNone "Inga turneringar hittades."

# Graph windows:
menuText W GraphFile "Fil" 0
menuText W GraphFileColor "Spara som Postscript (i frg)" 8
menuText W GraphFileGrey "Spara som Postscript (i grskala)" 8
menuText W GraphFileClose "Stng fnster" 6
menuText W GraphOptions "Alternativ" 0
menuText W GraphOptionsWhite "Vit" 0
menuText W GraphOptionsBlack "Svart" 0
menuText W GraphOptionsBoth "Bda" 1
menuText W GraphOptionsPInfo "Spelarinformation" 0
translate W GraphFilterTitle "Filterdiagram: antal per 1000 partier"
translate W GraphAbsFilterTitle "Filtergraf: frekvens fr partierna"
translate W ConfigureFilter {Konfigurera X-axlar fr r, Rating och Drag}
translate W FilterEstimate "Uppskatta"
translate W TitleFilterGraph "Scid: Filtergraf"

# Analysis window:
translate W AddVariation {Lgg till variation}
translate W AddAllVariations {Lgg till alla variationer}
translate W AddMove {Lgg till drag}
translate W Annotate {Kommentera}
translate W ShowAnalysisBoard {Visa Analysbrde}
translate W ShowInfo {Visa schackmotorinformation}
translate W FinishGame {Avsluta parti}
translate W StopEngine {Stoppa schackmotor}
translate W StartEngine {Starta schackmotor}
translate W LockEngine {Ls schackmotor vid nuvarande position}
translate W AnalysisCommand {Analysera}
translate W PreviousChoices {Fregende val}
translate W AnnotateTime {Ange tid mellan drag i sekunder}
translate W AnnotateWhich {Lgg till variationer}
translate W AnnotateAll {Fr bda sidors drag}
translate W AnnotateAllMoves {Kommentera alla drag}
translate W AnnotateWhite {Endast vits drag}
translate W AnnotateBlack {Endast svarts drag}
translate W AnnotateBlundersOnly {Nr partidraget r en uppenbar blunder}
translate W AnnotateBlundersOnlyScoreChange {Analysen rapporterar blunder, med vrderingsfrndringar frn/till: }
translate W BlundersThreshold {Trskelvrde}
translate W ScoreAllMoves {Score all moves}
translate W LowPriority {Kr som lgprioriterad process} 
translate W ClickHereToSeeMoves {Klicka hr fr att se drag}
translate W ConfigureInformant {Konfigurera Informant-parametrar}
translate W Informant!? {Intressant drag}
translate W Informant? {Dligt drag}
translate W Informant?? {Blunder}
translate W Informant?! {Tveksamt drag}
translate W Informant+= {Vit har en mindre frdel}
translate W Informant+/- {Vit har en liten frdel}
translate W Informant+- {Vit har en avgrande frdel}
translate W Informant++- {Partiet anses vara vunnet}
translate W Book {Bok}
translate W OtherBookMoves {Motstndarens bok}
translate W OtherBookMovesTooltip {Drag som motstndaren har ett svar p}

# Analysis Engine open dialog:
translate W EngineList {Lista ver schackprogram}
translate W EngineName {Namn}
translate W EngineCmd {Startkommando}
translate W EngineArgs {Parametrar} 
translate W EngineDir {Katalog}
translate W EngineElo {Elo}
translate W EngineTime {Datum}
translate W EngineNew {Ny}
translate W EngineEdit {Redigera}
translate W EngineRequired {Fet stil indikerar obligatoriska flt; vriga flt r frivilliga} 

# Stats window menus:
menuText W StatsFile "Fil" 0
menuText W StatsFilePrint "Skriv ut till fil..." 0
menuText W StatsFileClose "Stng fnster" 0
menuText W StatsOpt "Alternativ" 0

# PGN window menus:
menuText W PgnFile "Fil" 0
menuText W PgnFileCopy "Kopiera partiet till Clipbase" 0
menuText W PgnFilePrint "Skriv ut till..." 0
menuText W PgnFileClose "Stng PGN-fnster" 0
menuText W PgnOpt "Presentation" 0
menuText W PgnOptColor "Frg" 0
menuText W PgnOptShort "Kort (3-raders) huvud" 0
menuText W PgnOptSymbols "Symbolbaserad kommentar" 1
menuText W PgnOptIndentC "Indragna kommentarer" 0
menuText W PgnOptIndentV "Indragna variationer" 7
menuText W PgnOptColumn "Spaltstil (ett drag per rad)" 1
menuText W PgnOptSpace "Utrymme efter dragnummer" 1
menuText W PgnOptStripMarks "Avlgsna koder fr frgade flt och pilar" 1 
menuText W PgnOptBoldMainLine "Anvnd Fet Text fr Huvudvariationsdrag" 4
menuText W PgnColor "Frger" 0
menuText W PgnColorHeader "Huvud..." 0
menuText W PgnColorAnno "Noteringar..." 0
menuText W PgnColorComments "Kommentarer..." 0
menuText W PgnColorVars "Variationer..." 0
menuText W PgnColorBackground "Bakgrund..." 0
menuText W PgnColorMain "Huvudvariation..." 0
menuText W PgnColorCurrent "Aktuellt drag bakgrund..." 1
menuText W PgnColorNextMove "Nsta drag bakgrund..." 0
menuText W PgnHelp "Hjlp" 0
menuText W PgnHelpPgn "PGN-hjlp" 0
menuText W PgnHelpIndex "Index" 0
translate W PgnWindowTitle {PGN-version av partiet %u} 

# Crosstable window menus:
menuText W CrosstabFile "Fil" 0
menuText W CrosstabFileText "Skriv ut till textfil..." 9
menuText W CrosstabFileHtml "Skriv ut till HTML-fil..." 9
menuText W CrosstabFileLaTeX "Skriv ut till LaTeX-fil..." 9
menuText W CrosstabFileClose "Stng resultattabellsfnstret" 0
menuText W CrosstabEdit "Redigera" 0
menuText W CrosstabEditEvent "Evenemang" 0
menuText W CrosstabEditSite "Plats" 0
menuText W CrosstabEditDate "Datum" 0
menuText W CrosstabOpt "Presentation" 0
menuText W CrosstabOptAll "Alla-mter-alla" 0
menuText W CrosstabOptSwiss "Schweizer" 0
menuText W CrosstabOptKnockout "Knock Out" 0
menuText W CrosstabOptAuto "Auto" 1
menuText W CrosstabOptAges "lder i r" 8
menuText W CrosstabOptNats "Nationalitet" 0
menuText W CrosstabOptRatings "Rating" 0
menuText W CrosstabOptTitles "Titlar" 0
menuText W CrosstabOptBreaks "Tie-break pong" 4
menuText W CrosstabOptDeleted "Inkludera raderade partier" 8 
menuText W CrosstabOptColors "Frg (endast Schweizer)" 0
menuText W CrosstabOptColumnNumbers "Numrerade kolumner (Endast alla-mot-alla)" 2 
menuText W CrosstabOptGroup "Gruppresultat" 0
menuText W CrosstabSort "Sortera" 0
menuText W CrosstabSortName "Namn" 0
menuText W CrosstabSortRating "Rating" 0
menuText W CrosstabSortScore "Resultat" 0
menuText W CrosstabColor "Frg" 0
menuText W CrosstabColorPlain "Ren text" 0
menuText W CrosstabColorHyper "Hypertext" 0
menuText W CrosstabHelp "Hjlp" 0
menuText W CrosstabHelpCross "Hjlp fr resultattabell" 0
menuText W CrosstabHelpIndex "Hjlpindex" 0
translate W SetFilter {Bestm filter}
translate W AddToFilter {Utka filter}
translate W Swiss {Schweizer}
translate W Category {Kategori} 

# Opening report window menus:
menuText W OprepFile "Fil" 0
menuText W OprepFileText "Skriv ut till textfil..." 9
menuText W OprepFileHtml "Skriv ut till HTML-fil..." 9
menuText W OprepFileLaTeX "Skriv ut till LaTeX-fil..." 9
menuText W OprepFileOptions "Alternativ..." 0
menuText W OprepFileClose "Stng rapportfnstret" 0
menuText W OprepFavorites "Favoriter" 1 
menuText W OprepFavoritesAdd "Lgg till rapport..." 0 
menuText W OprepFavoritesEdit "Redigera favoritrapport..." 0 
menuText W OprepFavoritesGenerate "Skapa rapport..." 0 
menuText W OprepHelp "Hjlp" 0
menuText W OprepHelpReport "Hjlp fr ppningsrapporter" 0
menuText W OprepHelpIndex "Hjlpindex" 0

# Repertoire editor:
menuText W RepFile "Fil" 0
menuText W RepFileNew "Ny" 0
menuText W RepFileOpen "ppna..." 0
menuText W RepFileSave "Spara..." 0
menuText W RepFileSaveAs "Spara som..." 5
menuText W RepFileClose "Stng fnster" 0
menuText W RepEdit "Redigera" 0
menuText W RepEditGroup "Lgg till grupp" 4
menuText W RepEditInclude "Lgg till inkluderad variation" 4
menuText W RepEditExclude "Lgg till exkluderad variation" 4
menuText W RepView "Visa" 0
menuText W RepViewExpand "Expandera alla grupper" 0
menuText W RepViewCollapse "Implodera alla grupper" 0
menuText W RepSearch "Sk" 0
menuText W RepSearchAll "Hela ppningsrepetoaren..." 0
menuText W RepSearchDisplayed "Endast visade variationer..." 0
menuText W RepHelp "Hjlp" 0
menuText W RepHelpRep "Hjlp fr spelppningsrepetoar" 0
menuText W RepHelpIndex "Hjlpindex" 0
translate W RepSearch "Sk i spelppningsrepetoar"
translate W RepIncludedLines "inkluderade variationer"
translate W RepExcludedLines "exkluderade variationer"
translate W RepCloseDialog {Du har osparade ndringar i repetoaren.

Vill du verkligen fortstta och frlora dina frndringar?
}

# Header search:
translate W HeaderSearch {Sk i partihuvud}
translate W EndSideToMove {Sida vid draget vid slutet av partiet}
translate W GamesWithNoECO {Partier utan ECO-kod?}
translate W GameLength {Partilngd}
translate W FindGamesWith {Hitta flaggade partier}
translate W StdStart {Normal utgngsstllning}
translate W Promotions {Frvandlingar}
translate W Comments {Kommentarer}
translate W Variations {Variationer}
translate W Annotations {Noteringar}
translate W DeleteFlag {Raderingsflagga}
translate W WhiteOpFlag {Vits ppning}
translate W BlackOpFlag {Svarts ppning}
translate W MiddlegameFlag {Mittspel}
translate W EndgameFlag {Slutspel}
translate W NoveltyFlag {Nyhet}
translate W PawnFlag {Bondestruktur}
translate W TacticsFlag {Taktiska stllningar}
translate W QsideFlag {Damflygelsinitiativ}
translate W KsideFlag {Kungsflygelsinitiativ}
translate W BrilliancyFlag {Utmrkt parti}
translate W BlunderFlag {Bortsttningar}
translate W UserFlag {Anvndare}
translate W PgnContains {PGN innehller text}
translate W Annotator {Kommentator}
translate W Cmnts {Bara kommenterade partier}

# Game list window:
translate W GlistNumber {Nummer}
translate W GlistWhite {Vit}
translate W GlistBlack {Svart}
translate W GlistWElo {Elo, vit}
translate W GlistBElo {Elo, svart}
translate W GlistEvent {Evenemang}
translate W GlistSite {Plats}
translate W GlistRound {Rond}
translate W GlistDate {Datum}
translate W GlistYear {r}
translate W GlistEDate {Startdatum}
translate W GlistResult {Resultat}
translate W GlistLength {Lngd}
translate W GlistCountry {Land}
translate W GlistECO {ECO}
translate W GlistOpening {ppning}
translate W GlistEndMaterial {Slutmaterial}
translate W GlistDeleted {Raderad}
translate W GlistFlags {Flaggor}
translate W GlistVars {Variationer}
translate W GlistComments {Kommentarer}
translate W GlistAnnos {Noteringar}
translate W GlistStart {Start}
translate W GlistGameNumber {Partinummer}
translate W GlistAverageElo {Medel-Elo}
translate W GlistRating {Rating}
translate W GlistFindText {Sk text}
translate W GlistMoveField {Drag}
translate W GlistEditField {Konfiguration}
translate W GlistAddField {Lgg till}
translate W GlistDeleteField {Ta bort}
translate W GlistWidth {Bredd}
translate W GlistAlign {Justering}
translate W GlistAlignL {Justera: vnster}
translate W GlistAlignR {Justera: hger}
translate W GlistAlignC {Justera: centrera}
translate W GlistColor {Frg}
translate W GlistSep {Separator}
translate W GlistCurrentSep {-- Aktuell --}
translate W GlistNewSort {Ny}
translate W GlistAddToSort {Lgg till}
translate W GsortSort {Sortera...}
translate W GsortDate {Datum}
translate W GsortYear {r}
translate W GsortEvent {Evenemang}
translate W GsortSite {Plats}
translate W GsortRound {Runda}
translate W GsortWhiteName {Vits namn}
translate W GsortBlackName {Svarts namn}
translate W GsortECO {ECO}
translate W GsortResult {Resultat}
translate W GsortMoveCount {Antal drag}
translate W GsortAverageElo {Medel-Elo}
translate W GsortCountry {Land}
translate W GsortDeleted {Borttagen}
translate W GsortEventDate {Evenemangsdatum}
translate W GsortWhiteElo {Vits Elo}
translate W GsortBlackElo {Svarts Elo}
translate W GsortComments {Kommentarer}
translate W GsortVariations {Variationer}
translate W GsortNAGs {Kommentarssymboler}
translate W GsortAscending {Stigande}
translate W GsortDescending {Sjunkande}
translate W GsortAdd {Lgg till}
translate W GsortStore {Spara}
translate W GsortLoad {ppna}
translate W GlistRemoveThisGameFromFilter  {Ta bort detta parti frn Filter}
translate W GlistRemoveGameAndAboveFromFilter  {Ta bort parti (och alla ovanfr det) frn Filter}
translate W GlistRemoveGameAndBelowFromFilter  {Ta bort parti (och alla nedanfr det) frn Filter}
translate W GlistDeleteGame {Ta tillbaka detta parti} 
translate W GlistDeleteAllGames {Ta bort alla partier i filtret} 
translate W GlistUndeleteAllGames {Ta tillbaka alla partier i filtret} 
translate W GlistMergeGameInBase {Lgg till parti i annan databas} 

# Maintenance window:
translate W DatabaseName {Databasnamn:}
translate W TypeIcon {Ikontyp:}
translate W NumOfGames {Partier:}
translate W NumDeletedGames {Raderade partier:}
translate W NumFilterGames {Partier i filter:}
translate W YearRange {Tidsperiod:}
translate W RatingRange {Ratingintervall:}
translate W Description {Beskrivning} 
translate W Flag {Flagga}
translate W CustomFlags {Anpassade flaggor}
translate W DeleteCurrent {Ta bort aktuellt parti}
translate W DeleteFilter {Ta bort partierna i filtret}
translate W DeleteAll {Ta bort alla partier}
translate W UndeleteCurrent {terta aktuellt parti}
translate W UndeleteFilter {terta partierna i filtret}
translate W UndeleteAll {terta alla partier}
translate W DeleteTwins {Ta bort dubbletter}
translate W MarkCurrent {Markera aktuellt parti}
translate W MarkFilter {Markera partierna i filtret}
translate W MarkAll {Markera alla partier}
translate W UnmarkCurrent {Avmarkera aktuellt parti}
translate W UnmarkFilter {Avmarkera partierna i filtret}
translate W UnmarkAll {Avmarkera alla partier}
translate W Spellchecking {Rttstava}
translate W Players {Spelare}
translate W Events {Evenemang}
translate W Sites {Platser}
translate W Rounds {Ronder}
translate W DatabaseOps {Databashantering}
translate W ReclassifyGames {ECO-klassificera partier}
translate W CompactDatabase {Komprimera databasen}
translate W SortDatabase {Sortera databasen}
translate W AddEloRatings {Lgg till Elorating}
translate W AutoloadGame {Ladda partinummer automatiskt}
translate W StripTags {Avlgsna PGN-taggar}
translate W StripTag {Avlgsna taggar}
translate W Cleaner {Snygga till databasen}
translate W CleanerHelp {
Databasstdaren i Scid genomfr allt det underhll av databasen du vljer nedan p den aktiva databasen.

De nuvarande instllningarna i ECO-klassificering och Radera dubbletter kommer att appliceras om du vljer dessa tgrder.
}
translate W CleanerConfirm {
Nr du vl startat Databasstdaren kan du inte avbryta den!

P en stor databas kan detta ta ett bra tag. Tidstgngen beror p valda tgrder och deras instllningar.

r du sker p att du vill pbrja databasunderhllet nu?
}
translate W TwinCheckUndelete {att vxla; "u" tar tillbaka bda)}
translate W TwinCheckprevPair {Tidigare par}
translate W TwinChecknextPair {Nsta par}
translate W TwinChecker {Scid: Dublettpartikontrollerare}
translate W TwinCheckTournament {Partier i turnering:}
translate W TwinCheckNoTwin {Ingen dublett  }
translate W TwinCheckNoTwinfound {Ingen dublett detekterades fr detta parti.\nFr att visa dubletter med detta fnster, mste du frst anvnda "Ta bort dublettpartier..."-funktionen. }
translate W TwinCheckTag {Dela taggar...}
translate W TwinCheckFound1 {Scid hittade $result dublettpartier}
translate W TwinCheckFound2 { och ange deras borttagningsflaggor}
translate W TwinCheckNoDelete {Det finns inga partier i denna databas att ta bort.}
translate W TwinCriteria1 { Dina instllningar fr att hitta dublettpartier r potentiellt sannorlika att\norsaka att icke-dublettpartier med liknande drag blir markerade som dubletter.}
translate W TwinCriteria2 {Det r rekommenderat att om du vljer "Nej" fr "samma drag" och att du vljer "Ja" fr Frger, Evenemang, Plats, Runda, r och Mnads instllningar.\nVill du fortstta och ta bort dubletter nd? }
translate W TwinCriteria3 {Det r rekommenderat att du specificerar "Ja" fr tminstonde tv av "samma plats", "samma runda" och "samma r" instllningar.\nVill du fortstta och ta bort dubletter nd?}
translate W TwinCriteriaConfirm {Scid: Bekrfta dublettinstllningar}
translate W TwinChangeTag "ndra fljande partitaggar:\n\n"
translate W AllocRatingDescription "Detta kommando kommer att anvnda den aktuella stavningskontrollfilen fr att lgga till Elo-rating till partier i denna databas. Dr en spelare inte har en aktuell rating men hans/hennes rating vid tiden fr partiet r listat i stavningskontrollfilen, kommer denna rating att lggas till."
translate W RatingOverride "Skriv ver existerande inte-noll rating?"
translate W AddRatings "Lgg till rating till:"
translate W AddedRatings {Scid lade till $r Elo-ratingar i $g partier.}
translate W NewSubmenu "Ny undermeny"

# Comment editor:
translate W AnnotationSymbols  {Symboler:}
translate W Comment {Kommentar:}
translate W InsertMark {Infoga symbol} 
translate W InsertMarkHelp {
Infoga/ta bort markering: Vlj frg, typ av markering samt ruta.
Infoga/ta bort pil: Hger-klicka tv rutor.
}

# Nag buttons in comment editor:
translate W GoodMove {Bra drag}
translate W PoorMove {Dligt drag}
translate W ExcellentMove {Utmrkt drag}
translate W Blunder {Blunder}
translate W InterestingMove {Intressant drag}
translate W DubiousMove {Tveksamt drag}
translate W WhiteDecisiveAdvantage {Vit har en avgrande frdel}
translate W BlackDecisiveAdvantage {Svart har en avgrande frdel}
translate W WhiteClearAdvantage {Vit har en klar frdel}
translate W BlackClearAdvantage {Svart har en klar frdel}
translate W WhiteSlightAdvantage {Vit har en liten frdel}
translate W BlackSlightAdvantage {Svart har en liten frdel}
translate W Equality {Jmnvikt}
translate W Unclear {Oklar}
translate W Diagram {Diagram}

# Board search:
translate W BoardSearch {Positionsskningar}
translate W FilterOperation {Hantering av aktuellt filter:}
translate W FilterAnd {AND (Restriktivt filter)}
translate W FilterOr {OR (Ackumulativt filter)}
translate W FilterIgnore {IGNORE (Anvnd ej filter)}
translate W SearchType {Sktyp:}
translate W SearchBoardExact {Exakt position (alla pjser p samma rutor)}
translate W SearchBoardPawns {Bnder (samma material, alla bnder p samma rutor)}
translate W SearchBoardFiles {Filer (samma material, alla bnder p samma filer)}
translate W SearchBoardAny {Obestmt (samma material, bnder och pjser p valfria rutor)}
translate W SearchInRefDatabase {Sk i databas}
translate W LookInVars {Sk i variationer}

# Material search:
translate W MaterialSearch {Materialskning}
translate W Material {Material}
translate W Patterns {Stllningar}
translate W Zero {Inga/-en}
translate W Any {Flera}
translate W CurrentBoard {Aktuell stllning}
translate W CommonEndings {Vanliga slutspel}
translate W CommonPatterns {Vanliga stllningar}
translate W MaterialDiff {Skillnad i material}
translate W squares {rutor}
translate W SameColor {Samma frg}
translate W OppColor {Motsatt frg}
translate W Either {Antingen eller}
translate W MoveNumberRange {Dragintervall}
translate W MatchForAtLeast {Trffa minst}
translate W HalfMoves {halvdrag}

# Common endings in material search:
translate W EndingPawns {Bondeslutspel}
translate W EndingRookVsPawns {Torn mot Bonde (Bnder)}
translate W EndingRookPawnVsRook {Torn och 1 Bonde mot Torn}
translate W EndingRookPawnsVsRook {Torn och Bonde (Bnder) mot Torn}
translate W EndingRooks {Torn mot Torn slutspel}
translate W EndingRooksPassedA {Torn mot Torn slutspel med en fri a-bonde}
translate W EndingRooksDouble {Dubbla Torn slutspel}
translate W EndingBishops {Lpare mot Lpare slutspel}
translate W EndingBishopVsKnight {Lpare mot Springare slutspel}
translate W EndingKnights {Springare mot Springare slutspel}
translate W EndingQueens {Dam mot Dam slutspel}
translate W EndingQueenPawnVsQueen {Dam och 1 Bonde mot Dam}
translate W BishopPairVsKnightPair {Tv Lpare mot Tv Springare mittspel}

# Common patterns in material search:
translate W PatternWhiteIQP {Vit Isolerad dambonde}
translate W PatternWhiteIQPBreakE6 {Vit Isolerad dambonde: d4-d5 brott mot e6}
translate W PatternWhiteIQPBreakC6 {Vit Isolerad dambonde: d4-d5 brott mot c6}
translate W PatternBlackIQP {Svart Isolerad dambonde}
translate W PatternWhiteBlackIQP {Vit Isolerad dambonde mot Svart Isolerad dambonde}
translate W PatternCoupleC3D4 {Vit c3+d4 Isolaterat Bondepar}
translate W PatternHangingC5D5 {Svart Hngande Bnder p c5 och d5}
translate W PatternMaroczy {Maroczy Center (med Bnder p c4 och e4)}
translate W PatternRookSacC3 {Tornoffer p c3}
translate W PatternKc1Kg8 {O-O-O mot O-O (Kc1 mot Kg8)}
translate W PatternKg1Kc8 {O-O mot O-O-O (Kg1 mot Kc8)}
translate W PatternLightFian {Ljus-Ruta Fianchetton (Lpare-g2 mot Lpare-b7)}
translate W PatternDarkFian {Mrk-Ruta Fianchetton (Lpare-b2 mot Lpare-g7)}
translate W PatternFourFian {Fyra Fianchetton (Lpare p b2,g2,b7,g7)}

# Game saving:
translate W Today {Idag}
translate W ClassifyGame {Klassificera parti}

# Setup position:
translate W EmptyBoard {Tm brdet}
translate W InitialBoard {Utgngsstllning}
translate W SideToMove {Frg vid draget}
translate W MoveNumber {Antal drag}
translate W Castling {Rockad}
translate W EnPassantFile {En Passant fil}
translate W ClearFen {Rensa FEN}
translate W PasteFen {Klistra in FEN}
translate W SaveAndContinue {Spara och fortstt}
translate W DiscardChangesAndContinue {Ignorera ndringar\noch fortstt}
translate W GoBack {G tillbaka}

# Replace move dialog:
translate W ReplaceMove {Erstt drag}
translate W AddNewVar {Lgg till ny variation}
translate W NewMainLine {Ny huvudvariation}
translate W ReplaceMoveMessage {Det finns redan ett drag i denna stllning.

Du kan erstta detta drag, och frlora samtliga fljande, eller lgga till ditt drag som en ny variation.

(Om du stnger av "Frga fre erstt drag" i Alternativ:Drag menyn slipper du denna frga i framtiden.)}

# Make database read-only dialog:
translate W ReadOnlyDialog {Om du ger denna databas endast lsbar kan du inte gra ngra ndringar i den.
Inga partier kan sparas eller ersttas, och du kan inte ndra flaggor fr raderbara partier.
Alla sorteringsinstllningar eller ECO-klassificeringar kommer att vara temporra.

Du kan gra den skrivbar igen genom att helt enkelt stnga och ppna den igen.

Vill du verkligen ange att databasen endast ska vara lsbar?}

# Clear game dialog:
translate W ClearGameDialog {Detta parti har ndrats.

Vill du verkligen fortstta och frlora ndringarna?
}

# Exit dialog:
translate W ExitDialog {Vill du verkligen avsluta Scid?}
translate W ExitUnsaved {De fljande databaserna har osparade frndringar. Om du avslutar nu, kommer dessa frndringar att g frlorade.} 

# Import window:
translate W PasteCurrentGame {Klistra in aktuellt parti}
translate W ImportHelp1 {Ange eller klistra in ett parti i PGN-format i omrdet ovan.}
translate W ImportHelp2 {Eventuella felaktigheter kommer att anges hr.}
translate W OverwriteExistingMoves {Skriv ver existerande drag ?}

# ECO Browser:
translate W ECOAllSections {alla ECO avdelningar}
translate W ECOSection {ECO avdelning}
translate W ECOSummary {Sammanfattning fr}
translate W ECOFrequency {Underkodsfrekvens fr}

# Opening Report:
translate W OprepTitle {ppningsrapport}
translate W OprepReport {Rapport}
translate W OprepGenerated {Skapad av}
translate W OprepStatsHist {Statistik och historik}
translate W OprepStats {Statistik}
translate W OprepStatAll {Rapporterade partier}
translate W OprepStatBoth {Bda med rating}
translate W OprepStatSince {Sedan}
translate W OprepOldest {De ldsta partierna}
translate W OprepNewest {De yngsta partierna}
translate W OprepPopular {Aktuell popularitet}
translate W OprepFreqAll {Frekvens totalt:   }
translate W OprepFreq1   {Under det senaste ret: }
translate W OprepFreq5   {Under de 5 senaste ren: }
translate W OprepFreq10  {Under de 10 senaste ren: }
translate W OprepEvery {en gng var %u parti}
translate W OprepUp {kat %u%s gentemot samtliga r}
translate W OprepDown {minskat %u%s gentemot samtliga r}
translate W OprepSame {ingen frndring gentemot samtliga r}
translate W OprepMostFrequent {Spelas mest av}
translate W OprepMostFrequentOpponents {Vanligaste motstndaren}
translate W OprepRatingsPerf {Rating och resultat}
translate W OprepAvgPerf {Genomsnittrating och resultat}
translate W OprepWRating {Vits rating}
translate W OprepBRating {Svarts rating}
translate W OprepWPerf {Vits resultat}
translate W OprepBPerf {Svarts resultat}
translate W OprepHighRating {Partierna med hgst genomsnittsrating}
translate W OprepTrends {Resultattrender}
translate W OprepResults {Lngd och frekvens}
translate W OprepLength {Partiets lngd}
translate W OprepFrequency {Frekvens}
translate W OprepWWins {Vita vinster: }
translate W OprepBWins {Svarta vinster: }
translate W OprepDraws {Remier:      }
translate W OprepWholeDB {Hela databasen}
translate W OprepShortest {Kortaste vinster}
# translate W OprepShortWhite {De kortaste vita vinsterna}
# translate W OprepShortBlack {De kortaste svarta vinsterna}
translate W OprepMovesThemes {Drag och teman}
translate W OprepMoveOrders {Dragordning fr att n rapportstllningen}
translate W OprepMoveOrdersOne \
  {Stllningen nddes bara genom en dragordning:}
translate W OprepMoveOrdersAll \
  {Det fanns %u dragordningar som ledde fram denna stllning:}
translate W OprepMoveOrdersMany \
  {Det fanns %u dragordningar som ledde fram denna stllning. De %u vanligaste r:}
translate W OprepMovesFrom {Drag frn rapportstllningen}
translate W OprepMostFrequentEcoCodes {De mest frekommande ECO-koderna}
translate W OprepThemes {Positionella teman}
translate W OprepThemeDescription {Temanfrekvens de frsta %u dragen av varje parti}
# translate W OprepThemeDescription {Antal teman vid drag %u}
translate W OprepThemeSameCastling {Rockad p samma flygel}
translate W OprepThemeOppCastling {Rockad p olika flyglar}
translate W OprepThemeNoCastling {Ingen har gjort rockad}
translate W OprepThemeKPawnStorm {Bondestorm p kungsflygeln}
translate W OprepThemeQueenswap {Dambyte}
translate W OprepThemeWIQP {Isolerad vit dambonde} 
translate W OprepThemeBIQP {Isolerad svart dambonde}
translate W OprepThemeWP567 {Vit bonde p 5e/6e/7e raden}
translate W OprepThemeBP234 {Svart bonde p 2a/3e/4e raden}
translate W OprepThemeOpenCDE {ppen c/d/e linje}
translate W OprepTheme1BishopPair {Endast den ena sidan har lparparet}
translate W OprepEndgames {Slutspel}
translate W OprepReportGames {Antal partier i rapporten}
translate W OprepAllGames    {Samtliga partier}
translate W OprepEndClass {Material i slutstllningen}
translate W OprepTheoryTable {Teorisammanstllning}
translate W OprepTableComment {Skapad frn de %u hgst rankade partierna.}
translate W OprepExtraMoves {Ytterligare antal drag i notfrteckningen}
translate W OprepMaxGames {Maximalt antal partier i sammanstllningen}
translate W OprepViewHTML {Visa HTML}
translate W OprepViewLaTeX {Visa LaTeX}

# Player Report:
translate W PReportTitle {Spelarrapport} 
translate W PReportColorWhite {med de vita pjserna} 
translate W PReportColorBlack {med de svarta pjserna} 
translate W PReportMoves {efter %s} 
translate W PReportOpenings {ppningar} 
translate W PReportClipbase {Tm Clipbase och kopiera liknande partier dit} 


# Piece Tracker window:
translate W TrackerSelectSingle {Vnsterklicka fr att vlja denna pjs.} 
translate W TrackerSelectPair {Vnsterklicka fr att vlja denna pjs; anvnd hger musknapp fr att ocks vlja den relaterade pjsen.}
translate W TrackerSelectPawn {Vnsterklicka fr att vlja denna pjs; anvnd hger musknapp fr att vlja alla tta bnder.}
translate W TrackerStat {Statistik}
translate W TrackerGames {% partier med drag till rutan}
translate W TrackerTime {% tid p varje ruta}
translate W TrackerMoves {Drag}
translate W TrackerMovesStart {Ange vid vilket drag skningen ska brja.}
translate W TrackerMovesStop {Ange vid vilket drag skningen ska sluta.}

# Game selection dialogs:
translate W SelectAllGames {Alla partier i databasen}
translate W SelectFilterGames {Endast partierna i filtret}
translate W SelectTournamentGames {Endast partierna i den aktuella turneringen}
translate W SelectOlderGames {Endast ldre partier}

# Delete Twins window:
translate W TwinsNote {Partier mste minst ha samma spelare fr att kunna identifieras som dubbletter samt uppfylla andra kriterier du kan ange nedan. Nr dubbletter hittas raderas det kortare partiet. Tips: det bsta r att anvnda rttstavningen innan dubblettjmfrelsen eftersom detta frbttrar mjligheten fr upptckt av dubbletter.}
translate W TwinsCriteria {Kriterium: Dubbletter mste ha...}
translate W TwinsWhich {Ange vilka partier som ska jmfras}
translate W TwinsColors {Samma frger?}
translate W TwinsEvent {Samma evenemang?}
translate W TwinsSite {Samma plats?}
translate W TwinsRound {Samma rond?}
translate W TwinsYear {Samma r?}
translate W TwinsMonth {Samma mnad?}
translate W TwinsDay {Samma dag?}
translate W TwinsResult {Samma resultat?}
translate W TwinsECO {Samma ECO-kod?}
translate W TwinsMoves {Samma drag?}
translate W TwinsPlayers {Jmfr spelarnas namn:}
translate W TwinsPlayersExact {Exakt kopia}
translate W TwinsPlayersPrefix {Endast de 4 frsta bokstverna}
translate W TwinsWhen {Nr dubbletter tas bort}
translate W TwinsSkipShort {Ignorera alla partier som r kortare n 5 drag?}
translate W TwinsUndelete {terta alla partier frst?}
translate W TwinsSetFilter {Filtrera alla borttagna dubbletter?}
translate W TwinsComments {Spara alltid partier med kommentarer?}
translate W TwinsVars {Spara alltid partier med variationer?}
translate W TwinsDeleteWhich {Ange vilket parti som ska tas bort:} 
translate W TwinsDeleteShorter {Det kortare partiet} 
translate W TwinsDeleteOlder {Partiet med lgst nummer} 
translate W TwinsDeleteNewer {Partiet med hgst nummer} 
translate W TwinsDelete {Ta bort partier}

# Name editor window:
translate W NameEditType {Typ av namn att redigera}
translate W NameEditSelect {Partier att redigera}
translate W NameEditReplace {Erstt}
translate W NameEditWith {med}
translate W NameEditMatches {Matchar: Tryck Ctrl+1 till Ctrl+9 fr att vlja}
translate W CheckGames {Kontrollera partier}
translate W CheckGamesWhich {Kontrollera partier}
translate W CheckAll {Alla partier}
translate W CheckSelectFilterGames {Bara partier i filter}

# Classify window:
translate W Classify {Klassificera}
translate W ClassifyWhich {ECO-klassificera vilka partier?}
translate W ClassifyAll {Alla partier (skriv ver gamla ECO-koder)}
translate W ClassifyYear {Alla partier spelade under det senaste ret}
translate W ClassifyMonth {Alla partier spelade den senaste mnaden}
translate W ClassifyNew {Endast partier som nnu ej klassificerats}
translate W ClassifyCodes {ECO-koder som ska anvndas}
translate W ClassifyBasic {Enbart standardkoder ("B12", ...)}
translate W ClassifyExtended {Scidextensioner ("B12j", ...)}

# Compaction:
translate W NameFile {Namnfil}
translate W GameFile {Partifil}
translate W Names {Namn}
translate W Unused {Ej anvnd}
translate W SizeKb {Storlek (kb)}
translate W CurrentState {Aktuell status}
translate W AfterCompaction {Efter komprimering}
translate W CompactNames {Namn, komprimera namnfil}
translate W CompactGames {Partier, komprimera partifil}
translate W NoUnusedNames "Det finns inga oanvnda namn, s namnfilen r redan fullt komprimerad."
translate W NoUnusedGames "Partifilen r redan fullt komprimerad."
translate W NameFileCompacted {Namnfilen fr databasen "[file tail [sc_base filename]]" blev komprimerad.}
translate W GameFileCompacted {Partifilen fr databasen "[file tail [sc_base filename]]" blev komprimerad.}

# Sorting:
translate W SortCriteria {Kriterium}
translate W AddCriteria {Lgg till kriterium}
translate W CommonSorts {Normal sortering}
translate W Sort {Sortering}

# Exporting:
translate W AddToExistingFile {Lgg till partier till en existerande fil?}
translate W ExportComments {Exportera kommentarer?}
translate W ExportVariations {Exportera variationer?}
translate W IndentComments {Dra in kommentarer?}
translate W IndentVariations {Dra in variationer?}
translate W ExportColumnStyle {Kolumnstil (ett drag per rad)?}
translate W ExportSymbolStyle {Symbolbaserade kommentarer:}
translate W ExportStripMarks {Avlgsna koder fr flt och pilar frn kommentarerna?} 

# Goto game/move dialogs:
translate W LoadGameNumber {Ange partiets nummer:}
translate W GotoMoveNumber {G till drag nummer:}

# Copy games dialog:
translate W CopyGames {kopiera partier}
translate W CopyConfirm {
 Vill du verkligen kopiera
 de [::utils::thousands $nGamesToCopy] filtrerade partierna
 ur databasen "$fromName"
 till databasen "$targetName"?
}
translate W CopyErr {Kan ej kopiera partier}
translate W CopyErrSource {klldatabasen}
translate W CopyErrTarget {mldatabasen}
translate W CopyErrNoGames {har inga partier i filtret}
translate W CopyErrReadOnly {kan bara lsas}
translate W CopyErrNotOpen {r ej ppen}

# Colors:
translate W LightSquares {Ljusa flt}
translate W DarkSquares {Mrka flt}
translate W SelectedSquares {Valda flt}
translate W SuggestedSquares {Freslagna flt}
translate W WhitePieces {Vita pjser}
translate W BlackPieces {Svarta pjser}
translate W WhiteBorder {Vit kantlinje}
translate W BlackBorder {Svart kantlinje}

# Novelty window:
translate W FindNovelty {Hitta nyhet}
translate W Novelty {Nyhet}
translate W NoveltyInterrupt {Nyhetsskningen avbrts}
translate W NoveltyNone {Inga nyheter hittades i detta parti}
translate W NoveltyHelp {
Scid kommer att frska hitta det frsta draget som leder till en position som inte annars finns i denna databas eller i spelppingsboken baserad p ECO.
}

# Sounds configuration:
translate W SoundsFolder {Ljudfilskatalog}
translate W SoundsFolderHelp {Katalogen ska ha filerna King.wav, a.wav, 1.wav, etc}
translate W SoundsAnnounceOptions {Instllningar fr Dragannonsering}
translate W SoundsAnnounceNew {Annonsera nya drag nr de grs}
translate W SoundsAnnounceForward {Annonsera drag nr du gr fram ett drag}
translate W SoundsAnnounceBack {Annonsera drag nr du gr fram eller tillbaka ett drag}

# Upgrading databases:
translate W Upgrading {Uppdaterar}
translate W ConfirmOpenNew {
Denna databas r i ett gammal format (Scid 3) och kan inte ppnas i Scid 4, men en databas i det nya formatet (Scid 4) har redan skapats.

Vill du ppna den senare databasen istllet?
}
translate W ConfirmUpgrade {
Denna databas r i ett gammalt format (Scid 3). En databas i det nyare formatet mste skapas innan den kan anvndas i Scid 4.

Genom att uppdatera skapas en databas i det nya formatet med samma innehll; uppdateringen ndrar ingenting i den gamla databasen.

Detta kan ta ett tag men behver bara gras en gng. Om du tycker att det tar alltfr lng tid kan du avbryta processen.

Vill du uppdatera denna databas nu?
}

# Recent files options:
translate W RecentFilesMenu {Antal senast ppnade filer i Arkivmenyn}
translate W RecentFilesExtra {Antal senast ppnade filer i extra undermeny}

# My Player Names options:
translate W MyPlayerNamesDescription {
Ange en lista p dina favoritspelare hr nedanfr. Skriv ett namn per rad. Jokertecken ("?", t ex, motsvarar ett enstaka tecken medan "*" str fr flera tecken) r tilltna.

Varje gng ett parti med en spelare vars namn str i denna lista ppnas kommer brdet automatiskt att vridas s att partiet visas frn spelarens perspektiv.
} 
translate W showblunderexists {visa blunder finns}
translate W showblundervalue {visa blundervrde}
translate W showscore {visa vrdering}
translate W coachgame {trnarparti}
translate W configurecoachgame {konfigurera trnarparti}
translate W configuregame {Konfigurera parti}
translate W Phalanxengine {Phalanx schackmotor}
translate W Coachengine {Trnarschackmotor}
translate W difficulty {svrighetsgrad}
translate W hard {svr}
translate W easy {ltt}
translate W Playwith {Spela med}
translate W white {vit}
translate W black {svart}
translate W both {bda}
translate W Play {Spela}
translate W Noblunder {Ingen blunder}
translate W blunder {blunder}
translate W Noinfo {-- Ingen information --}
translate W PhalanxOrTogaMissing {Phalanx eller Toga hittades inte}
translate W moveblunderthreshold {drag r en blunder om frlust r strre n}
translate W limitanalysis {begrnsa schackmotors analystid}
translate W seconds {sekunder}
translate W Abort {Avbryt}
translate W Resume {Fortstt}
translate W OutOfOpening {utanfr ppning}
translate W NotFollowedLine {Du fljde inte variationen}
translate W DoYouWantContinue {Vill du fortstta ?}
translate W CoachIsWatching {Trnaren observerar}
translate W Ponder {Permanent tnkande}
translate W LimitELO {Begrnsa ELO-styrka}
translate W DubiousMovePlayedTakeBack {Ett tveksamt drag spelades, vill du ta tillbaka det ?}
translate W WeakMovePlayedTakeBack {Ett svagt drag spelades, vill du ta tillbaka det ?}
translate W BadMovePlayedTakeBack {Ett dligt drag spelades, vill du ta tillbaka det ?}
translate W Iresign {Jag ger upp}
translate W yourmoveisnotgood {ditt drag r inte bra}
translate W EndOfVar {Slut p variation}
translate W Openingtrainer {ppningstrnare}
translate W DisplayCM {Visa kandidatdrag}
translate W DisplayCMValue {Visa kandidatdragens vrden}
translate W DisplayOpeningStats {Visa statistik}
translate W ShowReport {Visa rapport}
translate W NumberOfGoodMovesPlayed {bra drag spelade}
translate W NumberOfDubiousMovesPlayed {tveksamma drag spelade}
translate W NumberOfMovesPlayedNotInRepertoire {drag spelade som inte finns i repetoar}
translate W NumberOfTimesPositionEncountered {gnger positionen ptrffats}
translate W PlayerBestMove  {Tillt bara bsta dragen}
translate W OpponentBestMove {Motstndare spelar bsta dragen}
translate W OnlyFlaggedLines {Bara markerade variationer}
translate W resetStats {Nollstll statistik}
translate W Repertoiretrainingconfiguration {Repetoartrnings-konfiguration}
translate W Loadingrepertoire {ppnar repetoar}
translate W Movesloaded {ppnat drag}
translate W Repertoirenotfound {Repetoar hittades inte}
translate W Openfirstrepertoirewithtype {ppna frst en repetoardatabas med ikon/typ angivet p hger sida}
translate W Movenotinrepertoire {Drag finns inte i repetoar}
translate W PositionsInRepertoire {Positioner i repetoar}
translate W PositionsNotPlayed {Positioner inte spelade}
translate W PositionsPlayed {Positioner spelade}
translate W Success {Framgng}
translate W DubiousMoves {Tveksamma drag}
translate W OutOfRepertoire {Utanfr repetoar}
translate W ConfigureTactics {Konfigurera taktik}
translate W ResetScores {Nollstll pong}
translate W LoadingBase {ppnar bas}
translate W Tactics {Taktik}
translate W ShowSolution {Visa lsning}
translate W NextExercise {Nsta vning}
translate W PrevExercise {Tidigare vning}
translate W StopTraining {Avbryt trning}
translate W Next {Nsta}
translate W ResettingScore {Nollstller pong}
translate W LoadingGame {ppnar parti}
translate W MateFound {Matt hittad}
translate W BestSolutionNotFound {Bsta lsningen hittades INTE !}
translate W MateNotFound {Matt hittades inte}
translate W ShorterMateExists {En kortare matt finns}
translate W ScorePlayed {Pong spelad}
translate W Expected {frvntat}
translate W ChooseTrainingBase {Vlj trningsbas}
translate W Thinking {Tnker}
translate W AnalyzeDone {Analys klar}
translate W WinWonGame {Vinn vunnet parti}
translate W Lines {Variationer}
translate W ConfigureUCIengine {Konfigurera UCI-schackmotor}
translate W SpecificOpening {Specifik ppning}
translate W StartNewGame {Starta nytt parti}
translate W FixedLevel {Fast niv}
translate W Opening {ppning}
translate W RandomLevel {Slumpmssig niv}
translate W StartFromCurrentPosition {Starta frn den aktuella positionen}
translate W FixedDepth {Fast skdjup}
translate W Nodes {Noder} 
translate W Depth {Skdjup}
translate W Time {Tid} 
translate W SecondsPerMove {Sekunder per drag}
translate W Engine {Schackmotor}
translate W TimeMode {Tidsmod}
translate W TimeBonus {Tid + bonus}
translate W TimeMin {min}
translate W TimeSec {sek}
translate W AllExercisesDone {Alla vningar gjorda}
translate W MoveOutOfBook {Drag utanfr bok}
translate W LastBookMove {Sista bokdrag}
translate W AnnotateSeveralGames {Kommentera flera partier\nfrn aktuellt till :}
translate W FindOpeningErrors {Hitta ppningsfel}
translate W MarkTacticalExercises {Markera taktiska vningar}
translate W UseBook {Anvnd bok}
translate W MultiPV {Flera variationer}
translate W Hash {Hashminne}
translate W OwnBook {Anvnd schackmotorbok}
translate W BookFile {ppningsbok}
translate W AnnotateVariations {Kommentera variationer}
translate W ShortAnnotations {Korta kommentarer}
translate W addAnnotatorTag {Lgg till kommentator-tagg}
translate W AddScoreToShortAnnotations {Lgg till vrdering till korta kommentarer}
translate W Export {Exportera}
translate W BookPartiallyLoaded {Bok delvis ppnad}
translate W Calvar {Berkning av variationer}
translate W ConfigureCalvar {Konfiguration}
translate W Reti {Reti}
translate W English {Engelsk}
translate W d4Nf6Miscellaneous {1.d4 Nf6 Diverse}
translate W Trompowsky {Trompowsky}
translate W Budapest {Budapest}
translate W OldIndian {Gammalindisk}
translate W BenkoGambit {Benko-gambit}
translate W ModernBenoni {Modern Benoni}
translate W DutchDefence {Hollndskt frsvar}
translate W Scandinavian {Skandinaviskt}
translate W AlekhineDefence {Alekhines frsvar}
translate W Pirc {Pirc}
translate W CaroKann {Caro-Kann}
translate W CaroKannAdvance {Caro-Kann Avancemang}
translate W Sicilian {Siciliansk}
translate W SicilianAlapin {Siciliansk Alapin}
translate W SicilianClosed {Stngd Siciliansk}
translate W SicilianRauzer {Siciliansk Rauzer}
translate W SicilianDragon {Siciliansk Drake}
translate W SicilianScheveningen {Siciliansk Scheveningen}
translate W SicilianNajdorf {Siciliansk Najdorf}
translate W OpenGame {ppet parti}
translate W Vienna {Wiener}
translate W KingsGambit {Kungsgambit}
translate W RussianGame {Ryskt parti}
translate W ItalianTwoKnights {Italianskt/Tvspringar}
translate W Spanish {Spanskt}
translate W SpanishExchange {Spanskt Avbytesvariant}
translate W SpanishOpen {pett Spanskt}
translate W SpanishClosed {Stngt Spanskt}
translate W FrenchDefence {Franskt Frsvar}
translate W FrenchAdvance {Fransk Avancemang}
translate W FrenchTarrasch {Fransk Tarrasch}
translate W FrenchWinawer {Fransk Winawer}
translate W FrenchExchange {Fransk Avbytesvariant}
translate W QueensPawn {Dambonde}
translate W Slav {Slav}
translate W QGA {Antagen Damgambit}
translate W QGD {Avbjd Damgambit}
translate W QGDExchange {Avbjd Damgambit Avbytesvariant}
translate W SemiSlav {Semi-Slav}
translate W QGDwithBg5 {Avbjd Damgambit med Bg5}
translate W QGDOrthodox {Avbjd Damgambit Ortodox}
translate W Grunfeld {Grnfeld}
translate W GrunfeldExchange {Grnfeld Avbytesvariant}
translate W GrunfeldRussian {Grnfeld Ryskt}
translate W Catalan {Catalan}
translate W CatalanOpen {ppen Catalan}
translate W CatalanClosed {Stngd Catalan}
translate W QueensIndian {Damindiskt}
translate W NimzoIndian {Nimzo-Indiskt}
translate W NimzoIndianClassical {Nimzo-Indiskt Klassiskt}
translate W NimzoIndianRubinstein {Nimzo-Indiskt Rubinstein}
translate W KingsIndian {Kungsindiskt}
translate W KingsIndianSamisch {Kungsindiskt Smisch}
translate W KingsIndianMainLine {Kungsindiskt Huvudvariation}
translate W ConfigureFics {Konfigurera FICS}
translate W FICSGuest {Logga in som Gst}
translate W FICSServerPort {Server-port}
translate W FICSServerAddress {IP-adress}
translate W FICSRefresh {Uppdatera}
translate W FICSTimesealPort {Timeseal-port}
translate W FICSSilence {Tystnad}
translate W FICSOffers {Erbjuder}
translate W FICSConsole {Konsol}
translate W FICSGames {Partier}
translate W FICSUnobserve {Sluta observera parti}
translate W FICSProfile {Visa din historik och profil}
translate W FICSRelayedGames {terutsnda partier}
translate W FICSFindOpponent {Hitta motstndare}
translate W FICSTakeback {Ta tillbaka}
translate W FICSTakeback2 {Ta tillbaka 2}
translate W FICSInitTime {Initialtid (minuter)}
translate W FICSIncrement {Inkrementering (sekunder)}
translate W FICSRatedGame {Ratingparti}
translate W FICSAutoColour {automatisk}
translate W FICSManualConfirm {bekrfta manuellt}
translate W FICSFilterFormula {Filtrera med formel}
translate W FICSIssueSeek {Skfrga}
translate W FICSChallenge {Utmana}
translate W FICSAccept {acceptera}
translate W FICSDecline {avbj}
translate W FICSColour {frg}
translate W FICSSend {skicka}
translate W FICSConnect {Anslut}
translate W FICSdefaultuservars {Anvnd standardvariabler}
translate W FICSObserveconfirm {Vill du observera parti} 
translate W GameReview {Partiversikt}
translate W GameReviewTimeExtended {Utkad tid}
translate W GameReviewMargin {Felmarginal}
translate W GameReviewAutoContinue {Fortstt automatiskt nr drag r korrekt}
translate W GameReviewReCalculate {Anvnd utkad tid}
translate W GameReviewAnalyzingMovePlayedDuringTheGame {Analysera drag spelat under partiet}
translate W GameReviewAnalyzingThePosition {Analysera positionen}
translate W GameReviewEnterYourMove {Ange ditt drag}
translate W GameReviewCheckingYourMove {Kontrollerar ditt drag}
translate W GameReviewYourMoveWasAnalyzed {Ditt drag analyserades}
translate W GameReviewYouPlayedSameMove {Du speladade samma drag som i partiet}
translate W GameReviewScoreOfYourMove {Vrdering av ditt drag}
translate W GameReviewGameMoveScore {Partidragets vrdering}
translate W GameReviewEngineScore {Schackmotorns vrdering}
translate W GameReviewYouPlayedLikeTheEngine {Du spelade som schackmotorn}
translate W GameReviewNotEngineMoveButGoodMove {Inte schackmotordraget, men det r ocks ett bra drag}
translate W GameReviewMoveNotGood {Detta drag r inte bra, vrderingen r}
translate W GameReviewMovesPlayedLike {Drag spelade som}
translate W GameReviewMovesPlayedEngine {Drag apelade som schackmotorn}
translate W CCDlgConfigureWindowTitle {Konfigurera Korrespondensschack}
translate W CCDlgCGeneraloptions {Generella instllningar}
translate W CCDlgDefaultDB {Standarddatabas:}
translate W CCDlgInbox {Inkorg (skvg):}
translate W CCDlgOutbox {Utkorg (skvg):}
translate W CCDlgXfcc {Xfcc-Konfiguration:}
translate W CCDlgExternalProtocol {Extern Protokollhanterare (t.ex. Xfcc)}
translate W CCDlgFetchTool {Hmtningsverktyg:}
translate W CCDlgSendTool {Sndverktyg:}
translate W CCDlgEmailCommunication {eMail-kommunikation}
translate W CCDlgMailPrg {eMail-program:}
translate W CCDlgBCCAddr {(B)CC-address:}
translate W CCDlgMailerMode {Mod:}
translate W CCDlgThunderbirdEg {t.ex. Thunderbird, Mozilla Mail, Icedove...}
translate W CCDlgMailUrlEg {t.ex. Evolution}
translate W CCDlgClawsEg {t.ex Sylpheed Claws}
translate W CCDlgmailxEg {t.ex. mailx, mutt, nail...}
translate W CCDlgAttachementPar {Bilage-parameter:}
translate W CCDlgInternalXfcc {Anvnd internt Xfcc-std}
translate W CCDlgConfirmXfcc {Bekrfta drag}
translate W CCDlgSubjectPar {mnes-parameter:}
translate W CCDlgDeleteBoxes {Tm In-/Utkorg} 
translate W CCDlgDeleteBoxesText {Vill du verkligen tmma dina In- och Utkorgskataloger fr Korrespondensschack? Detta krver en ny synkronisering fr att visa den seanaste statusen p dina partier} 
translate W CCDlgConfirmMove {Bekrfta drag} 
translate W CCDlgConfirmMoveText {Om du bekrftar, kommer fljande drag och kommentar att skickas till servern:} 
translate W CCDlgDBGameToLong {Inkonsekvent huvudvariation}
translate W CCDlgDBGameToLongError {Huvudvariationen i din databas r lngre n partiet i din Inkorg. Om Inkorgen innehller aktuella partier, dvs precis efter en synkronisering, lades ngra drag felaktigt till i huvudvariationen i databasen.\nI detta fall var god och frkorta huvudvariationen till (maximalt) drag\n}
translate W CCDlgStartEmail {Starta ett nytt eMail-parti}
translate W CCDlgYourName {Ditt Namn:}
translate W CCDlgYourMail {Din eMail-address:}
translate W CCDlgOpponentName {Motstndarnamn:}
translate W CCDlgOpponentMail {Motstndarens eMail-address:}
translate W CCDlgGameID {Parti-ID (unikt):}
translate W CCDlgTitNoOutbox {Scid: Korrespondensschackutkorg}
translate W CCDlgTitNoInbox {Scid: Korrespondensschackinkorg}
translate W CCDlgTitNoGames {Scid: Inga Korrespondensschackpartier}
translate W CCErrInboxDir {Korrespondensschacksinkorgskatalog:}
translate W CCErrOutboxDir {Korrespondensschacksutkorgskatalog:}
translate W CCErrDirNotUsable {finns inte eller r inte mjlig att anvnda!\nVar god och kontrollera och korrigera instllningarna.}
translate W CCErrNoGames {innehller inga partier!\nVar god och hmta dem frst.}
translate W CCDlgTitNoCCDB {Scid: Ingen Korrespondensdatabas}
translate W CCErrNoCCDB {Ingen Databas av typ 'Korrespondens' r ppnad. Var god och ppna en innan du anvnder Korrespondensschackfunktioner.}
translate W CCFetchBtn {Hmta partier frn servern och bearbeta Inkorgen}
translate W CCPrevBtn {G till tidigare parti}
translate W CCNextBtn {G till nsta parti}
translate W CCSendBtn {Skicka drag}
translate W CCEmptyBtn {Tm Inkorgen och Utkorgen}
translate W CCHelpBtn {Hjlp med ikoner och statusindikatorer.\nFr generell Hjlp tryck p F1!}
translate W CCDlgServerName {Servernamn:}
translate W CCDlgLoginName  {Inloggningsnamn:}
translate W CCDlgPassword   {Lsenord:}
translate W CCDlgURL        {Xfcc-URL:}
translate W CCDlgRatingType {Ratingtyp:}
translate W CCDlgDuplicateGame {Icke unikt parti-ID}
translate W CCDlgDuplicateGameError {Detta parti finns fler n en gng i din databas. Var god och ta bort alla dubbletter och komprimera din partifil (Arkiv/Underhll/Komprimera Databas).}
translate W CCDlgSortOption {Sorterar:}
translate W CCDlgListOnlyOwnMove {Bara partier dr jag r vid draget}
translate W CCOrderClassicTxt {Plats, Evenemang, Runda, Resultat, Vit, Svart}
translate W CCOrderMyTimeTxt {Min klocka}
translate W CCOrderTimePerMoveTxt {Tid per drag till nsta tidskontroll}
translate W CCOrderStartDate {Startdatum}
translate W CCOrderOppTimeTxt {Motstndarens klocka}
translate W CCDlgConfigRelay {Konfigurera ICCF-observationer}
translate W CCDlgConfigRelayHelp {G till partisidan p http://www.iccf-webchess.com och visa partiet att observera.  Om du ser schackbrder kopiera webadressen frn din weblsare till listan nedanfr. Bara en webadress per rad!\nExempel: http://www.iccf-webchess.com/MakeAMove.aspx?id=266452}
translate W ExtHWConfigConnection {Konfigurera extern hrdvara}
translate W ExtHWPort {Port}
translate W ExtHWEngineCmd {Schackmotorkommando}
translate W ExtHWEngineParam {Schackmotorparameter}
translate W ExtHWShowButton {Visa knapp}
translate W ExtHWHardware {Hrdvara}
translate W ExtHWNovag {Novag Citrine}
translate W ExtHWInputEngine {Inmatningsschackmotor}
translate W ExtHWNoBoard {Inget brde}
translate W NovagReferee {Nedteckna bara dragen}
translate W IEConsole {Inmatningsschackmotorkonsol}
translate W IESending {Drag skickade fr}
translate W IESynchronise {Synkronisera}
translate W IERotate  {Rotera}
translate W IEUnableToStart {Kunde inste starta Inmatningsschackmotor:}
translate W DoneWithPosition {Klar med position}
translate W Board {Brde}
translate W showGameInfo {Visa partiinformation}
translate W autoResizeBoard {ndra storleken p brdet automatiskt}
translate W DockTop {Drag verst}
translate W DockBottom {Drag nederst}
translate W DockLeft {Drag till vnster}
translate W DockRight {Drag till hger}
translate W Undock {Avdocka}
translate W ChangeIcon {ndra ikon...}
}

############################################################
#
# Swedish tips section:

set tips(W) {
  {
    Scid har ver 30 <a Index>hjlpsidor</a>, och i de flesta fnster kan du
    genom att trycka <b>F1</b> f hjlp om det fnster du fr tillfllet har
    aktivt.
  }
  {
    Vissa fnster (t ex partiinformation och <a Switcher>databasvljaren</a>) 
    har en meny fr hger musknapp. Prova att hgerklicka i varje fnster s
    ser du vilka som har det och vilka funktioner du kommer t den vgen.
  }
  {
    Du kan ange drag p mer n ett stt, s du kan vlja vilket som passar dig
    bst. Du kan anvnda musen (med eller utan dragfrslag) eller tangentbordet
    (med eller utan autokomplettering). Ls hjlpsidan fr 
    <a Moves>att ange drag</a> fr mer information.
  }
  {
    Om du har databaser du ofta ppnar s kan du lgga till ett 
    <a Bookmarks>bokmrke</a> fr varje databas. Du kommer d att kunna ppna 
    databaserna snabbare via bokmrkesmenyn.
  }
  {
    Du kan se alla drag i det aktuella partiet (inklusive variationer och kommentarer)
    genom att ppna <a PGN>PGN-fnstret</a>.
    Du navigerar igenom partiet i PGN-fnstret genom att klicka p valfritt drag med
    vnster musknapp. Genom att klicka p draget med mellan- eller hgermusknapp s
    fr du en frhandsvisning av just den stllningen.
  }
  {
    Du kan kopiera partier mellan databaserna i <a Switcher>databasvljaren</a> genom
    att dra-och-slppa dem mellan respektive databas.
  }
  {
    Scid kan ppna PGN filer, ven de som r komprimerade med Gzip (dvs har en .gz filndelse). 
    PGN filer ppnas med enbart lsrttigheter, s om du vill redigera en PGN fil i Scid 
    mste du kopiera filen till en Scid databas med hjlp av <a Switcher>databasvljaren</a>.
  }
  {
    Om du ofta anvnder <a Tree>Trdfnstret</a> med stora databaser, r det vrt att vlja
    <b>Fyll cache fil</b> frn Arkivmenyn i Trdfnstret. Detta innebr att trdstatistik fr 
    mnga av de vanligare stllningarna sparas, vilket ger en snabbare trdtkomst fr databasen
    ifrga.
  }
  {
    <a Tree>Trdfnstret</a> kan visa alla drag frn den aktuella stllningen. Men om ocks vill 
    se alla dragfljder som har lett till denna stllning kan du f fram det genom att skapa en
   <a OpReport>ppningsrapport</a>.
  }
  {
    Du kan vnster- eller hgerklicka i en kolumn i <a GameList>partilistan</a> fr att ndra 
    dess bredd.
  }
  {
    Med <a PInfo>spelarinformationen</a> aktuell (klicka p endera spelarens namn under brdet i 
    huvudfnstret fr att f fram den) r det enkelt att <a Searches Filter>filtrera</a> fram partier
    av en srskild spelares enskilda resultat. Klicka bara p valfritt vrde som har angivits med
    <red>rd text</red>.
  }
  {
    Nr du studerar ppningar kan det vara en pong att markera valen <b>Bnder</b> eller <b>Filer</b> i 
    <a Searches Board>Sk aktuell position</a>. Genom dessa val kan du hitta andra ppningar som ger
    liknande bondestrukturer.
  }
  {
    Du kan hgerklicka i partiinformationsdelen av huvudfnstret (under brdet) fr att f fram en 
    kontextmeny. Du kan t ex gra s att Scid dljer nsta drag i ett parti, vilket kan vara anvndbart 
    om du vill trna genom att "gissa" nsta drag.
  }
  {
    Om du ofta <a Maintenance>underhller</a> stora databaser kan du utfra flera underhllsuppgifter 
    vid samma tillflle via <a Maintenance Cleaner>databasverktyget</a>.
  }
  {
    Om du har en stor databas dr de flesta partierna har ett evenemangsdatum och du vill ha partierna i 
    datumordning br du vervga att <a Sorting>sortera</a> den p evenemangsdatum i frsta hand och 
    evenemang i andra hand, istllet fr datum och evenemang, d detta kommer att hlla turneringspartierna
    frn olika datum samman. (Under frutsttning att alla partier har samma evenemangsdatum naturligtvis).
    Alternativt kan du se till att flten evenemang, rond och datum r s enhetliga och korrekta som mjligt.
    (ms).
  }
  {
    Det kan vara en bra ide att <a Maintenance Spellcheck>stavningskontrollera</a> din databas innan du 
    <a Maintenance Twins>raderar dubbletter</a> d Scid har strre mjlighet att hitta dubbletterna och 
    markera dessa fr borttagning.
  }
  {
    <a Flags>Flaggor</a> r anvndbara fr att markera upp partier med karaktristika du vill ska p senare,
    ssom bondestllning, taktiska finesser, osv. Du kan ska p flaggor nr du sker p flt i partihuvudet.
  }
  {
    Om du gr igenom ett parti, och helt enkelt vill testa en ny variation utan att frndra partiet i sig, kan 
    du sl p Frskslget (Trial mode) genom att trycka <b>Ctrl+Mellanslag</b> eller frn verktygsraden. terg till
    ursprungspartiet nr du r klar.
  }
  {
    Om du vill hitta det mest betydelsefulla partiet (med hgst rankade spelare) i en viss position kan du
    ppna <a Tree>Trdfnstret</a> och i denna ppna listan med de bsta partierna. I trdfnstret kan du till
    och med begrnsa partierna till endast ett srskilt resultat.
  }
  {
    Ett bra stt att studera en ppning r att i en stor databas sl p trningslget i <a Tree>Trdfnstret</a>, 
    och sedan spela igenom databasen fr att se vilka varianter som frekommer oftast.
  }
  {
    Om du har tv databaser ppna, och vill ha ett varianttrd att studera medan du gr igenom ett parti
    i den andra databasen kan du <b>lsa</b> trdet i den databasen och sedan byta till den andra.
  }
  {
    <a Tmt>Turneringsskaren (tournament finder)</a> r inte bara anvndbar fr att lokalisera en srskild 
    turnering. Du kan ocks anvnda den fr att ska efter turneringar en specifik spelare nyligen deltagit 
    i, eller att blddra genom turneringar som genomfrts i ett visst land.
  }
  {
    Det finns ett antal vanliga stllningstyper definierade i <a Searches Material>Sk material/stllning</a>
    fnstret som du kan ha nytta av nr du studerar ppningar och mittspel.
  }
  {
    Nr du sker p <a Searches Material>material eller stllning</a> kan det ofta vara frdelaktigt att begrnsa
    skningen till sdana partier dr stllningen eller materialet frekommit i tminstone ngra drag. Du slipper
    du f med trffar dr situationen du sker uppkom helt tillflligt.
  }
  {
    Om du har en viktig databas du inte vill radera av misstag kan du vlja  <b>Enbart lsbar</b> frn <b>Arkiv</b>
    menyn efter att du har ppnat den. Alternativt kan du stta dess filrttigheter till enbart lsrttigheter.
  }
  {
    Om du anvnder XBoard eller WinBoard (eller ngot annat program som kan hantera FEN notation via urklippshanteraren)
    och vill kopiera den aktuella stllningen frn ditt program r det snabbaste sttet att gra det s hr:
    Vlj <b>Copy Position</b> frn <b>File</b> menyn i Xboard/Winboard, vlj sedan <b>Klistra in utgngsstllning</b>
    i Redigera menyn i Scid.
  }
  {
    I <a Searches Header>Sk i huvud</a>, r spelare-, evenemang-, plats-, och rondnamn oknsliga fr stora eller sm
    bokstver och ger trffar varhelst de finns i ett namn. Om du vill kan du ange att du istllet vill att skningen <b>ska</b>
    ta versaler/gemener i beaktande. Genom att anvnda jokertecken inom citationstecken (dr "?" = motsvarar obestmt
    enskilt tecken och "*" = noll eller flera tecken). Om du exempelvis anger "*BEL" (med citationstecken) i det platsfltet
    hittar du alla partier spelade i Belgien, men exkluderar de som spelats i Belgrad.
  }
  {
    Om du vill redigera ett drag i ett parti utan att frlora alla de drag som spelats efter detta kan du ppna
    <a Import>Importera ett parti i PGN-format</a> fnstret i Verktygsmenyn. Klicka dr p <b>Klistra in aktuellt parti</b> 
    , redigera partiet och avsluta med <b>Importera</b>.
  }
  {
    Om du har en ECO klassificeringsfil laddad, kan du n den mest exakt klassificerade stllningen fr det aktuella partiet
    genom att vlja <b>Identifiera ppning</b> i <b>Partier</b> menyn (kortkommando: Ctrl+Shift+D).
  }
  {
    Nr du vill se hur stor en fil r, eller vill se nr den senast redigerades innan du ppnar den kan du anvnda
    <a Finder>file finder</a> (Arkiv - Sk filer).
  }
  {
    En <a repetoire>repetoarfil</a> r ett utmrkt stt att hlla koll p dina favoritppningar, eller hitta partier dr
    dr de har spelats. Nr du vl har skapat en repetoarfil kan du genomska nya filer utifrn repetoarfilen, och titta 
    igenom alla partier med just dina ppningar.
  }
  {
    Genom att skapa en <a OpReport>ppningsrapport</a> har du en utmrkt mjlighet att lra dig en ny spelppning. Du kan f
    information om resultat, hur remiaktig den r, vilka vanliga positionella teman som dyker upp, och mycket mer.
  }
  {
    Du kan kommentera den aktuella stllningen med de vanligaste symbolerna (!, !?, +=, etc) utan att behva anvnda 
    <a Comment>kommentarseditorn<a>. Dr du exempelvis vill ange ett bra drag skriver du "!" och trycker sedan ENTER
    s lggs "!" symbolen till draget. Se ven hjlpsidan <a Moves>ange drag</a> fr mer detaljerad information.
  }
  {
    Om du blddrar igenom ppningarna i en databas i <a Tree>trdfnstret</a>, fr du en anvndbar verblick ver hur
    vl ppningen fungerar i sentida partier mellan hgrankade spelare om du ppnar statistikfnstret (kortkommando: Ctrl+I).
  }
  {
    Du ndrar enkelt huvudfnstrets brdstorlek genom att hlla nere <b>Ctrl</b> och <b>Shift</b> tangenterna, samtidigt
    som du trycker hger- eller vnster piltangent.
  }
  {
    Efter genomfrd <a Searches>skning</a>, r det enkelt att navigera genom urvalet genom att hlla nere <b>Ctrl</b> 
    tangenten samtidigt som du trycker upp- eller nerpiltangenterna fr att g till fregende eller nsta parti i 
    <a Searches Filter>urvalet</a>.
  }
{
  Du kan relativt enkelt rita pilar och frga rutor till dina kommentarer. ppna <b>Kommentarseditorn</b>, klicka p <b>Infoga symbol</b> och vlj nskad frg. Om du nu klicka p en frsta ruta, och drefter klickar p en andra s dras en pil i nskad frg frn den frsta till den andra rutan. Klickar du bara p en ruta, blir den frgad.
  }
}

##########
#
# ECO Opening name translations:

translateECO W {
  Accelerated {, Accelererad}
  {: Accelerated} Accelererad
  Accepted {, Antagen}
  {: Accepted} Antagen
  Advance Avancemang
  {as Black} {som Svart}
  Attack Angrepp
  Bishop Lpare
  Bishop's Lpar
  Classical Klassisk
  Closed Stngd
  {Closed System} {Stngt system}
  Counterattack Motangrepp
  Countergambit Motgambit
  Declined {, Avbjd}
  Defence Frsvar
  deferred frvgrad
  Deferred {, frvgrad}
  Early Tidig
  Exchange Avbyte
  Game Parti
  Improved frbttrad
  King's Kung
  Knight Springar
  Line Variant
  {Main Line} Huvudvariant
  Open ppen
  Opening ppning
  Queen's Dam
  Queenswap Damavbyte
  Symmetrical Symmetrisk
  Variation Variation
  Wing Flygel
  with med
  without utan

  Alekhine Aljechin
  Averbakh Averbach
  Botvinnik Botvinnik
  Chigorin Chigorin
  Polugaevsky Polugajevski
  Rauzer Rauzer
  Sveshnikov Sveschnikov

  Austrian sterrikisk
  Berlin Berlin
  Bremen Bremen
  Catalan Katalansk
  Czech Tjeckisk
  Dutch Hollndsk
  English Engelsk
  French Fransk
  Hungarian Ungersk
  Indian Indisk
  Italian Italiensk
  Latvian Lettisk
  Meran Meran
  Moscow Moskva
  Polish Polsk
  Prague Prag
  Russian Rysk
  Scandinavian Skandinavisk
  Scheveningen Scheveningen
  Scotch Skottsk
  Sicilian Siciliansk
  Slav Slavisk
  Spanish Spansk
  Swedish Svensk
  Swiss Schweizisk
  Vienna Wiener
  Yugoslav Jugoslavisk

  {Accelerated Fianchetto} {Accelererad Fianchetto}
  {Accelerated Pterodactyl} {Accelererad Pterodactyl}
  {Alekhine Defence} Aljechins Frsvar
  {Alekhine Variation} Aljechin-Variant
  {Alekhine: Smisch Attack} {Aljechin: Wiener-system (Smisch-Angrepp)}
  {Anderssen Opening} Anderssen-ppning
  {Anti-King's Indian} Anti-Kungsindisk
  {Austrian Attack} {sterrikiskt Angrepp}
  {Benko Gambit} Volga-Gambit
  {Benko Opening} Benk-ppning
  {Berlin Defence} {Berlinfrsvar}
  Chameleon Chamaleon
  Chelyabinsk Chelyabinsk
  {Classical Defence} {Klassiskt frsvar}
  {Spanish: Classical Defence} {Spanskt: Klassiskt (Cordel-) frsvar}
  {Classical Exchange} {Klassiskt Avbyte}
  {Classical Variation} {Klassisk Variant}
  {Closed Berlin} {Stngd Berlin}
  {Open Berlin} {ppen Berlin}
  {Bird's,} {Bird,}
  {Bird's Defence} Birds frsvar
  {Bird's Deferred} {Frvgrad Bird}
  {Bishop's Opening} Lparspel
  {Botvinnik System} Botvinnik-system
  {Central Variation} Centralvariant
  {Centre Attack} Centrumsangrepp
  {Centre Game} Mittgambit
  {Danish Gambit} {Nordisk Gambit}
  Dragon Drake
  {Dutch Variation} {Hollndsk Variant}
  {Early Exchange} {Tidigt Avbyte}
  {Early Queenswap} {Tidigt Dambyte}
  {English Attack} {Engelskt Angrepp}
  {English: King's} {Engelskt: Kungsbonde}
  {English Variation} {Engelsk Variant}
  {Englund Gambit} Englunds Gambit
  {Exchange Variation} Avbytesvariant
  {Fianchetto Variation} Fianchettovariant
  {Flohr Variation} Flohr-Variant
  {Four Knights} Fyrspringar
  {Four Knights Game} Fyrspringarspel
  {Four Pawns} Fyrbonde
  {Four Pawns Attack} Fyrbondeangrepp
  {French Variation} {Fransk Variant}
  {From Gambit} {From-Gambit}
  {Goring Gambit} {Gring-Gambit}
  {Grob Gambit} {Grobs Gambit}
  {Hungarian Defence} {Ungerskt frsvar}
  {Indian Variation} {Indisk Variant}
  {Italian Game} {Italienskt Parti}
  KGD {Avbjd Kungssgambit}
  {Classical KGD} {Klassisk avbjd Kungsgambit}
  {Keres Variation} Keres-Variant
  KGA {Antagen Kungsgambit}
  {KGA: Bishop's Gambit} Kungslpargambit
  {KGA: King's Knight Gambit} Kungsspringargambit
  {King's Gambit} Kungsgambit
  {King's Gambit Accepted} {Antagen Kungsgambit}
  {King's Gambit Accepted (KGA)} {Antagen Kungsgambit}
  {King's Indian} Kungsindisk
  KIA {Kungsindiskt Angrepp}
  {King's Knight Gambit} Kungsspringargambit
  {King's Pawn} Kungsbonde
  {Lasker Variation} {Lasker-Variant}
  {Latvian Gambit} {Lettisk Gambit}
  {Maroczy Bind} {Maroczy-bindning}
  {Marshall Variation} Marshall-Variant
  {Modern Attack} {Modernt Angrepp}
  {Modern Steinitz} {Modern Steinitz}
  {Modern Variation} {Modern Variant}
  {Moscow Variation} {Moskva-variant}
  Nimzo-Indian Nimzoindisk
  {Old Benoni} {Klassisk Benoni}
  {Old Indian} Gammalindisk
  {Old Indian Attack} {Gammalindisk Indisk attack}
  {Old Steinitz} Gammal Steinitz-ppning
  {Open Game} {ppet Parti}
  {Poisoned Pawn} {Frgiftad Bonde}
  {Polish Variation} {Polsk Variant}
  {Polugaevsky Variation} {Polugajevski-Variant}
  {Queen's Gambit} Damgambit
  {Queen's Gambit Accepted} {Antagen Damgambit}
  QGA {Antagen Damgambit}
  {Queen's Gambit Accepted (QGA)} {Antagen Damgambit}
  {Reversed QGA} {Omvnd antagen Damgambit}
  QGD {Avbjd Damgambit}
  {Queen's Gambit Declined (QGD)} {Avbjd Damgambit}
  {Reversed QGD} {Omvnd avbjd Damgambit}
  {Queen's Indian} Damindisk
  {Queen's Pawn} Dambonde
  {Queen's Pawn Game} Dambondespel
  {Reversed Slav} {Omvnd Slavisk}
  {Rubinstein Variation} Rubinstein-Variant
  {Russian Game} {Ryskt Parti}
  {Russian Game (Petroff Defence)} {Ryskt Parti}
  {Russian-Three Knights Game} {Ryskt trespringarspel}
  {Scandinavian (Centre Counter)} Skandinavisk
  Schliemann Jnisch
  {Schliemann (Jnisch)} {Jnisch-Gambit (Schliemann)}
  {Scotch Opening} {Skottsk ppning}
  {Sicilian Defence} {Sicilianskt frsvar}
  {Sicilian Variation} {Siciliansk Variant}
  {Slav Defence} {Slaviskt frsvar}
  Smith-Morra Morra
  {Smith-Morra Accepted} {Antagen Morra-Gambit}
  {Smith-Morra Gambit} Morra-Gambit
  {Spanish (Ruy Lopez)} {Spanskt Parti}
  {Start position} Utgngsstllning
  {Steinitz Deferred} Frvgrad Rubinstein
  {Swedish Variation} {Svensk Variant}
  {Swiss Variation} {Schweizisk Variant}
  {Tarrasch's Gambit} {Tarrasch-Gambit}
  {Three Knights} Trespringar
  {3 Knights} Trespringar
  {Three Knights Game} Trespringarspel
  {Three Pawns Attack} Trebondeangrepp
  {Two Knights} Tvspringar
  {Two Knights Defence} Tvspringar-frsvar
  {Two Knights Variation} Tvspringar-variant
  {Two Pawns} Tvbonde
  {Two Pawns Attack} Tvbondeangrepp
  {Wing Gambit} Flygel-Gambit
  {Yugoslav Attack} {Jugoslaviskt Angrepp}
}

############################################################
#
# Swedish help pages:

# Basic help pages completed, no links no other sections.

##########
# Contents
#
set helpTitle(W,Contents) "Innehllsfrteckning"
set helpText(W,Contents) {<h1>Hjlp med Scid: Innehllsfrteckning</h1>

<h3>Komma igng och allmnt om Scid</h3>
<p>Fljande texter och dess lnkar r under versttning. Detta pbrjades i Scid 3.4 beta 1 (2002 07 27). 
 /Martin S.</p>
Detta betyder att menyerna r versatta. Rubriktexterna br kunna vara versatta till Scid 3.4 men alla lnkar
frn rubriktexterna r frmodligen inte det. /Martin S.</p>

<ul>
<li><a Guide><b>Komma igng</b> med Scid</a> <red>(Ls detta frst)</red></li>
<li><a Hints><b>Tips</b> om hur du fr ut mer av Scid</a></li>
<li><a MainWindow><b>Huvudfnstret</b></a></li>
<li><a Menus><b>Menyerna</b></a> <red>(Uppdaterad!)</red></li>
<li><a Moves>Ange <b>drag</b></a> <red>(Uppdaterad!)</red></li>
<li><a Searches><b>Ska</b> i Scid</a></li>
<li><a Clipbase>Att anvnda <b>Clipbase (Urklippsdatabasen)</b></a></li>
<li><a Annotating><b>Kommentera partier</b></a> <red>(Ny!)</red></li>
</ul>

<h4>Andra Scid-fnster</h4>

<ul>
<li><a Analysis><b>Analysfnstret</a></li>
<li><a Book><b>Bokfnstret</b></a></li>
<li><a CalVar><b>Berkning av variationer-fnstret</b></a></li>
<li><a Comment><b>Kommentareditor</b> </a></li>
<li><a Crosstable><b>Korstabellfnster</a></li>
<li><a Switcher><b>Databasvxlaren</b> </a></li>
<li><a Email><b>Email-fnster</a></li>
<li><a Finder><b>Sk filer</b> </a></li>
<li><a GameList><b>Partilistan</b> </a></li>
<li><a Import><b>Importfnstret</a></li>
<li><a OpeningTrainer><b>ppningstrnarfnstret</b>  </a></li>
<li><a Reports><b>Rapporter</b></a> <red>(Uppdaterad!)</red></li>
<li><a PGN><b>PGN-fnster</a></li>
<li><a PTracker><b>Pjsspraren</b></a></li>
<li><a PList><b>Spelarlistan</b></a></li>
<li><a PInfo><b>Spelarinfo</b> </a></li>
<li><a Repertoire><b>Repetoar-Editor</a></li>
<li><a TacticalGame><b>Taktiskt partifnstret</b> </a></li>
<li><a Tmt><b>Sk turneringar</a></li>
<li><a Tree><b>Trdfnstret</a></li>
<li><a Graphs><b>Graffnster</a></li>
<li><a TB>Slutspelstabeller</a><red>(Uppdaterad!)</red></li>
</ul>

<h4>Andra funktioner och information</h4>
<ul>
<li><a Bookmarks><b>Bokmrken</b></a></li>
<li><a Cmdline>Kommandorad-alternativ</a></li>
<li><a Compact><b>Komprimera databas</a></li>
<li><a Correspondence>Korrespondensschack</a></li>
<li><a Maintenance><b>Underhll databas</a></li>
<li><a ECO><b>ECO</a></li>
<li><a EPD><b>EPD</a></li>
<li><a Export><b>Exportera partier</a> <red>(Uppdaterad!)</red></li>
<li><a Flags>Parti-markeringarna</a></li>
<li><a LaTeX>Scid och LaTeX</a></li>
<li><a Options><b>Alternativ</a><red>(Uppdaterad!)</red></li>
<li><a Sorting><b>Sortera databas</a></li>
<li><a Pgnscid><b>Pgnscid</a></li>
<li><a NAGs>NAG-vrden</a></li>
<li><a Formats>Filformat</a></li>
<li><a Author>Kontaktinformation</a></li>
</ul>

<p><footer>(Uppdaterad: Scid 3.6.1, December 2004)</footer></p>
}

###############
### Topic Index

set helpTitle(W,Index) "Hjlp-index"
set helpText(W,Index) {<h1>Scid: Hjlp-index</h1>

<h3>A</h3>
<ul>
<li><a Options>Alternativ</a></li>
<li><a Analysis>Analysfnstret</a></li>
<li><a Moves>Ange drag</a></li>
</ul>

<h3>B</h3>
<ul>
<li><a CalVar>Berkning av variationer-fnstret</a></li>
<li><a GameList Browsing>Blddra partilistor</a></li>
<li><a Book>Bokfnstret</a></li>
<li><a Bookmarks>Bokmrken</a></li>
<li><a Tree Best>Bsta partier</a></li>
</ul>

<h3>D</h3>
<ul>
<li><a Sorting>Databassortering</a></li>
<li><a Maintenance>Databasunderhll</a></li>
<li><a Switcher>Databasvxlaren</a></li>
<li><a Translator>Den svenska versttningen</a></li>
</ul>

<h3>E</h3>
<ul>
<li><a ECO>ECO</a></li>
<li><a ECO Browser>ECO-blddrar</a>-fnster</li>
<li><a ECO Codes>ECO kodsystem</a></li>
<li><a Email>Email-fnster</a></li>
<li><a EPD>EPD-filer</a></li>
<li><a Export>Exportfilter</a></li>
<li><a Export>Exportera partier som text</a></li>
</ul>

<h3>F</h3>
<ul>
<li><a Formats>Filformat</a></li>
</ul>

<h3>G</h3>
<ul>
<li><a Graphs Filter>Graffilter</a></li>
<li><a Graphs>Graffnster</a></li>
</ul>

<h3>H</h3>
<ul>
<li><a MainWindow>Huvudfnstret</a></li>
</ul>

<h3>I</h3>
<ul>
<li><a Import>Importfnstret</a></li>
<li><a Contents>Innehllsfrteckning</a></li>
</ul>

<h3>K</h3>
<ul>
<li><a Guide>Komma igng med Scid</a></li>
<li><a Cmdline>Kommandorad-alternativ</a></li>
<li><a Comment>Kommentareditor</a></li>
<li><a Annotating Null>Kommentera Nulldrag</a></li>
<li><a Annotating>Kommentera partier</a></li>
<li><a Compact>Komprimera databas</a></li>
<li><a Correspondence>Korrespondensschack</a></li>
<li><a Crosstable>Korstabellfnster</a></li>
<li><a Author>Kontaktinformation</a></li>
</ul>

<h3>L</h3>
<ul>
<li><a LaTeX>LaTeX</a> utdataformat</li>
</ul>

<h3>M</h3>
<ul>
<li><a Menus>Menyerna</a></li>
<li><a Menus File>Meny Arkiv</a></li>
<li><a Menus Edit>Meny Redigera</a></li>
<li><a Menus Game>Meny Partier</a></li>
<li><a Menus Search>Meny Sk</a></li>
<li><a Menus Windows>Meny Fnster</a></li>
<li><a Menus Tools>Meny Verktyg</a></li>
<li><a Menus Options>Meny Alternativ</a></li>
<li><a Menus Help>Meny Hjlp</a></li>
</ul>

<h3>N</h3>
<ul>
<li><a NAGs>NAG-vrden</a></li>
</ul>

<h3>P</h3>
<ul>
<li><a GameList>Partilistan</a></li>
<li><a Flags>Partimarkeringarna</a></li>
<li><a PGN>PGN-fnster</a></li>
<li><a Pgnscid>Pgnscid</a></li>
<li><a PTracker>Pjsspraren</a></li>
</ul>

<h3>R</h3>
<ul>
<li><a Reports Opening>Rapporter</a></li>
<li><a Graphs Rating>Ratinggraf</a></li>
<li><a Repertoire>Repetoar-Editor</a></li>
</ul>

<h3>S</h3>
<ul>
<li><a Analysis List>Schackmotorlista</a></li>
<li><a LaTeX>Scid och LaTeX</a></li>
<li><a Hints>Scidtips</a></li>
<li><a MainWindow Autoplay>Sjlvspelsmod</a></li>
<li><a TB>Slutspelstabeller</a></li>
<li><a Guide>Snabbguide till att anvnda Scid</a></li>
<li><a Sorting>Sortera databas</a></li>
<li><a PInfo>Spelarinfo</a></li>
<li><a Reports Player>Spelarrapport</a></li>
<li><a Maintenance Spellcheck>Stavningskontrollera namn</a></li>
<li><a Finder>Sk filer</a></li>
<li><a Searches Filter>Skfilter</a></li>
<li><a Searches Header>Sk partidata</a></li>
<li><a PList>Sk spelare</a></li>
<li><a Searches Board>Sk stllning</a></li>
<li><a Searches>Ska i Scid</a></li>
<li><a Searches Material>Sk material</a></li>
<li><a Tmt>Sk turneringar</a></li>
</ul>

<h3>T</h3>
<ul>
<li><a TacticalGame>Taktiskt partifnstret</a></li>
<li><a Moves Trial>Testa variant mod</a></li>
<li><a Hints>Tips</a></li>
<li><a Tree>Trdfnstret</a></li>
<li><a Options Fonts>Typsnitt</a></li>
</ul>

<h3>U</h3>
<ul>
<li><a Maintenance>Underhll databas</a></li>
<li><a Maintenance Cleaner>Underhll: Databasrensaren</a></li>
<li><a Maintenance Editing>Underhll: ndra spelarnamn</a></li>
<li><a Maintenance Twins>Underhll: Ta bort dubbletter</a></li>
<li><a Maintenance Spellcheck>Underhll: Stavningskontrollera spelarnamn</a></li>
<li><a Clipbase>Urklippsdatabasen</a></li>
</ul>

<h3>V</h3>
<ul>
<li><a Annotating Vars>Varianter</a></li>
</ul>

<h3></h3>
<ul>
<li><a ECO>ppningsklassificering (ECO)</a></li>
<li><a Repertoire>ppningsrepetoar</a></li>
<li><a Reports Opening>ppningsrapport</a></li>
<li><a OpeningTrainer>ppningstrnarfnstret</a></li>
</ul>

<p><footer>(Uppdaterad: Scid 3.5, February 2003)</footer></p>
}

####################
### Quick Guide help:

set helpTitle(W,Guide) "Komma igng med Scid"
set helpText(W,Guide) {<h1>Komma igng med Scid</h1>
<p>
Scid r en schackdatabashanterare som du kan anvnda till att blddra och <a Searches>ska</a> (enligt kriterier du stller upp) igenom 
databaser med schackpartier. Du kan ocks redigera de partier du vill.
</p>
<p>
Scid anvnder sitt eget <a Formats>databasformat</a> baserat p tre filer. Det r mycket kompakt och snabbt, men kan konvertera svl 
till som frn PGN (Portable Game Notation) standarden om man s nskar. Scids <a PGN>PGN-fnster</a> visar texten till det aktuella
partiet i PGN-format.
</p>
<p>
Du kan anvnda Scid till att lgga till och ta bort partier i en databas genom att anvnda svl mus som tangentbordet fr att skriva in
drag. Se vidare <a Moves>att skriva in drag</a> fr en noggrannare beskrivning.
</p>
<p>
Du kan ocks anvnda Scid fr att hantera <a PGN>PGN</a> filer genom att klistra in PGN-text i Scids <a Import>Importfnster</a> 
eller genom att ppna en PGN-fil i Scid. PGN-filer kan dock inte redigeras av Scid (de ppnas skrivskyddade). Eftersom PGN-filer
anvnder mer minne och laddas lngsammare rekommenderas du att konvertera stora PGN-filer till en Scid databas med verktyget
<a Pgnscid>Pgnscid</a>.
</p>
<p>
Scids <a MainWindow>huvudfnster</a> (det med schackbrdet) visar det aktuella partiet och databasen i detalj. Du kan nr som helst ppna 
upp till fyra databaser (fem om du rknar med Urklippsdatabasen <a Clipbase>Clipbase</a>). Var och ett av dessa kommer att ha sitt eget aktuella
parti. (Partier med ID-numret 0 visar att detta r ett parti som nnu inte ingr i den aktuella databasen). Du blddrar mellan de ppnade databaserna
via <a Menus File>Filmenyn</a>.
</p>
<p>
Ls grna vriga hjlpsidor i <a Index>Innehllsfrteckningen</a> fr mer information.
</p>
<p>
Ls <a Author>kontaktinformationssidan</a> om du vill komma i kontakt med skaparen av Scid. Fr frgor om den svenska versttningen ska du
<b>inte</b> kontakta upphovsmannen utan istllet <a Translator>versttaren</a>.
</p>

<p><footer>(Uppdaterad: Scid 3.1, December 2001)</footer></p>
}


set helpTitle(W,Author) "Kontaktinformation"
set helpText(W,Author) {<h1>Kontaktinformation</h1>
<p>
Scids webbsajt finns p: <br>
<b><url http://scid.sourceforge.net/>http://scid.sourceforge.net/</url></b>
</p>
<p>
P hemsidan kan du hmta den senaste versionen av Scid och andra extrafiler som kan bli tillgngliga.
</p>
<p>Den mest uppdaterade hjlpen kommer alltid att finnas tillgnglig online hos:
<b><url http://scid.sourceforge.net/tutorial/>http://scid.sourceforge.net/tutorial/</url></b>
Typiskt kommer denna att vara mer uppdaterad n den hjlp som distribueras med Scid, eller dessa hjlp-
sidor i Scid.
</p>

<p>Den svenska versttningen av Scid har gjorts av Martin Skjldebrand. Synpunkter p versttningen ska <b>inte</b>
skickas till Shane. Dremot fr du grna skicka kommentarer, frgor och frslag till rttningar till versttaren p adressen:<br>
<b>martin@skjoldebrand.org</b>
</p>
}

####################
### Hints page:
set helpTitle(W,Hints) "Scid-tips"
set helpText(W,Hints) {<h1>Scid-tips</h1>
<p>
Denna sida innehller anvndbara tips i form av frgor och svar. Genom att lsa igenom denna sida, kan du senare komma att
anvnda Scid bttre. Om du nyligen brjat anvnda Scid, s ls till en brjan <a Guide>Kom igng</a>.
Det mesta av informationen p denna sida finns refererad mer utfrligt p andra sidor i hjlpen. Du finner dem i <a Index>Innehllsfrteckningen</a>.
Om har ngot du tips du tycker passar bra fr denna sida, s skicka den till <a Author>upphovsmannen</a>.
</p>

<h4>Kan Scid ladda en databas nr den startas?</h4>
<p>
Ja, du kan ange databaser, PGN-filer eller <a EPD>EPD-filer</a>
p kommandoraden som t ex;
<ul>
<li> <b>scid  mybase  games.pgn.gz</b> </li>
</ul>
som laddar Scid-databasen <b>mybase</b> och den Gzip-komprimerade PGN-filen <b>games.pgn.gz</b>.
</p>

<h4>Finns det enklare stt att ndra storleken p brdet n via Alternativmenyn?</h4>
<p>
Ja, du kan anvnda kortkommandorna <b>Ctrl+Shift+VnsterPil</b> och <b>Ctrl+Shift+HgerPil</b> fr att frminska eller 
frstora brdets storlek.
</p>

<h4>Jag brukar trna genom att spela igenom partier, s jag vill inte att Scid visar nsta drag i partiinformationen
nedanfr brdet. Kan jag dlja detta p ngot stt?</h4>
<p>
Du kan dlja nsta drag genom att hgerklicka partiinformationen och vlja  <b>Dlj nsta drag</b> i menyn som ppnas.
</p>

<h4>Var finner jag ECO-koden fr ppningen p brdet?</h4>
<p>
ECO-koden visas p sista raden i partiinformationen nedanfr brdet i  <a MainWindow>huvudfnstret</a>,
om du har laddat ECO-klassificeringsfilen (<b>scid.eco</b>). <br>
Hjlpsidan fr <a ECO>ECO-koder</a> frklarar hur man laddar ECO-klassificeringsfilen och stller in programmet s att
den laddas varje gng man startar Scid.
</p>

<h4>Jag hller p och matar in ett parti och befinner mig nu vid drag 30. Nu ser jag att drag 10 blev fel. Hur kan jag ndra
detta utan att gra om alltihop?</h4>
<p>
Du kan anvnda <a Import>Importfnstret</a>; se vidare <a Moves Mistakes>mata in drag</a> fr mer information.
</p>

<h4>Hur kopierar jag partier frn en databas till en annan?</h4>
<p>
Anvnd <a Switcher>Databasvxlaren</a>. Drag frn klldatabasen till mldatabasen s kopierar du allt i klldatabasen till
mldatabasen. Genom att anvnda <a Searches Filter>Filter</a> kan du begrnsa det du kopierar frn den ena databasen till den andra.
</p>

<h4>Varje gng jag anger ett drag som redan finns fr jag frgan "Erstt drag?". Hur undviker jag detta?</h4>
<p>
Du kan antingen stnga av <b>Frga fre erstt drag</b> valmjligheten i menyn <menu>Altervativ: Drag</menu</menu>; eller
tnka p att gra ndringarna genom att ta tillbaka dragen genom att hgerklicka med musen. Det senare alternativet raderar dragen helt ur
partiet.
</p>

<h4>Hur ndrar kolumnbredden i partilistan?</h4>
<p>
Hger- eller vnsterklicka p kolumntiteln fr den kolumn du vill ndra.
</p>

<h4>Hur anvnder jag trdfnstret fr ett filtrerade partier - till skillnad mot att anvnda den fr hela databasen?</h4>
<p>
Anvnd <a Clipbase>Urklippsdatabasen (Clipbase)</a>. Filtera databasen att visa endast de partier du vill anvnda i trdet, 
kopiera sedan partierna till Urklippsdatabasen (Clipbase) via <a Switcher>Databasvxlaren</a>. ppna drefter trdfnstret
med den senare databasen som aktiv.
</p>

<h4>Trdet r lngsamt nr jag jobbar med stora databaser. Gr det att snabba upp den?</h4>
<p>
Spara trdcachen ofta s sparar du resultaten fr framtida anvndning. Se vidare cache-sektionen i hjlpen fr 
<a Tree>trdet</a> fr mer detaljerad information.
</p>

<h4>Kan jag redigera PGN-texten fr ett parti direkt?</h4>
<p>
Du kan inte anvnda <a PGN>PGN-</a>fnstret till att redigera det aktuella partiet, dremot kan du anvnda 
<a Import>Importfnstret</a>. ppna fnstret (kortkommando: <b>Ctrl+Shift+I</b>) och klicka p klistra in aktuellt parti
<b>Paste current game</b>, redigera partiet och klicka sedan p <b>Importera</b>.
</p>

<h4>I min databas finns mnga spelarnamn som r felstavade. Hur rttar jag allt detta?</h4>
<p>
Du kan rtta enstaka namn, eller gra en stavningskontroll fr hela databasen via menyvalen i <menu>Arkiv: Databasverktyg</menu>.
Se vidare hjlpen fr <a Maintenance Editing>Databasunderhll</a>.
</p>

<h4>Jag har tv databaser ppna: den ena innehller mina egna partier, den andra r mnga stormstarpartier.
Hur jmfr jag ett av mina egna partier mot partierna i databasen med stormstarpartier?</h4>
<p>
ppna <a Tree>Trdfnstret</a> i databasen med stormstarpartier och vlj <term>Ls</term> fr att lsa trdet i den databasen. 
Nr du sedan byter till den andra databasen kommer trdet att fortstta visa informationen frn databasen med stormstarpartier.
</p>

<p><footer>(Uppdaterad: Scid 2.6,  augusti 2001)</footer></p>
}


#################
# Authors, translators
#

set helpTitle(W,Translator) "Den svenska versttningen"
set helpText(W,Translator) {<h1>Den svenska versttningen</h1>
<p>
Scids webbsajt finns p: <br>
<b><url http://scid.sourceforge.net/>http://scid.sourceforge.net/</url></b>. Dr kan du hmta den senaste versionen av Scid och 
de andra filerna till programmet som du kan ha behov av. Dr finns ocks den senaste versionen av den svenska sprkfilen.
</p>
<p>Den svenska versttningen av Scid har gjorts av Martin Skjldebrand. Skicka grna kommentarer, frgor och frslag till rttningar
till versttaren p adressen:<br>
<b>martin@skjoldebrand.org</b>
</p>
}

####################
### Main window help:

set helpTitle(W,MainWindow) "Huvudfnstret"
set helpText(W,MainWindow) {<h1>Scid: huvudfnstret</h1>
<p>
P brdet i huvudfnstret visas den aktuella stllningen i det aktiva partiet. Du fr ocks information om partiet och den
aktiva databasen. Fr ytterligare information om <a Menus>Menyerna</a> och olika stt att <a Moves>Ange drag</a> hnvisas till
andra hjlpsidor.
</p>

<h3>Att navigera i partier</h3>
<p>
Navigationsknapparna vid brdet har fljande funktioner (frn vnster till hger):
</p>
<ul>
<li> <button tb_start> G till utgngsstllningen. </li>
<li> <button tb_prev> G tillbaka ett drag. </li>
<li> <button tb_next> G framt ett drag. </li>
<li> <button tb_end> G till slutstllningen. </li>
<li> <button tb_invar> G in i varianten. </li>
<li> <button tb_outvar> G ur varianten. </li>
<li> <button tb_addvar> Lgg till ny variant. </li>
<li> <button autoplay_off> Start/stopp fr autospelslge (se nedan). </li>
<li> <button tb_trial> Start/stopp fr <a Moves Trial>Frskslge</a>. </li>
<li> <button tb_flip> Rotera brdet 180 grader. </li>
<li> <button tb_coords> Visa/dlj koordinater. </li>
</ul>

<h4><name Autoplay>Autospelslge</name></h4>
<p>
I autospelslge gr Scid automatiskt bda spelarnas drag i det aktuella partiet. Frdrjningen mellan varje drag kan anges i
menyn <menu>Alternativ: Drag</menu> och sparas nr du sparar ndringarna av instllningsmjligheterna.
</p>
<p>
Kortkommandot <b>Ctrl+Z</b> startar eller avbryter autospelslget. Du kan ocks g ur autospelslge genom att trycka
 <b>Esc</b>-tangenten.
</p>
<p>
Om du startar autospelslge nr <a Analysis>Analysfnstret</a> r ppet <term>kommenteras</term> partiet: stllningsbedmningen 
och analysen av varje stllning lggs till som en ny variant vid varje drag.
Se hjlpen fr <a Analysis>Analysfnstret</a> fr mer information.
</p>

<h3>Partiinformation</h3>
<p>
Nedanfr brdet visas information om det aktuella partiet. Denna del av huvudskrmen kallas <term>partiinformationsomrdet</term>.
P de tre frsta raderna ges grundinformation ssom spelarnas namn, resultat, datum och spelplats. Den fjrde raden aktuell
stllning och nsta drag.
</p>
<p>
Rad fem visar <a ECO>ECO</a> (Encyclopedia of Chess
Openings) koden fr den aktuella stllningen, om stllningen ingr i den ECO-fil som anvnds.
</p>
<p>
Nr man hgerklickar p partiinformationsomrdet visas en meny med instllningsmjligheter som r relevanta fr just denna del av
programmet. Du kan t ex vlja att dlja nsta drag (anvndbart om du trnar genom att "gissa" nsta drag i  partiet) eller ta bort
/terta det aktuella partiet. Kortkommandot fr denna funktion r funktionsknappen F9.
</p>

<h4>Slutspelsdatabaser</h4>
<p>
Partiinformationsomrdet visar resultaten frn slutspelsdatabaserna om du har ngra installerade och om stllningen terfinns 
i dessa. Se hjlpsidan fr <a TB>Slutspelsdatabaser</a> fr mer information.
</p>

<h3>Statusraden</h3>
<p>
Statusraden (lngst ner i huvudfnstret) visar information om den aktuella databasen.
Det frsta fltet visar partiets status: <b>XX</b> betyder att det har frndrats men nnu inte sparats, medan <b>--</b> 
betyder att partiet inte har ndrats, <b>%%</b>, slutligen, betyder att databasen r skrivskyddad (det gr inte att ndra i partiet.).
</p>
<p>
Om du vill, kan du ppna databasen skrivskyddad. ndra rttigheterna till scid-filerna (eller enbart indexfilen) genom att i UNIX(-lika)
system ge kommandot:
<b>chmod a-w myfile.si3</b>
vid kommandoraden.I MS-DOS eller Windows ndrar du filattributet Arkiv med Attrib filnamn +A (i MS-DOS) eller Filhanteraren/Utforskaren etc. (i Windows).)
</p>
<p>
Statusraden visar ocks hur mnga partiet som ingr i det aktiva <a Searches Filter>Filtret</a>.
</p>

<p><footer>(Uppdaterad: 3.6.11-beta Januari 2007)</footer></p>
}

####################
### Menus help screen:

set helpTitle(W,Menus) "Menyerna"
set helpText(W,Menus) {<h1>Menyerna</h1>

<h3><name File>Arkiv</name></h3>
<ul>
<li><menu>Ny</menu>: Skapar en ny, tom, Scid databas.</li>
<li><menu>ppna</menu>: ppnar en befintlig Scid-databas.</li>
<li><menu>Stng</menu>: Stnger den aktiva Scid-databasen.</li>
<li><menu>Sk filer</menu>: ppnar <a Finder>Skdialogen</a> fr filer.</li>
<li><menu>Bokmrken</menu>: Hanterar <a Bookmarks>bokmrken</a>.</li>
<li><menu>Nytt bokmrke</menu>: Markerar den aktiva stllningen i partiet som ett bokmrke.</li>
	<li><menu>Spara bokmrke</menu>: Sparar bokmrket fr den aktiva stllningen i partiet.</li>
	<li><menu>Redigera bokmrken</menu>: Redigerar dina bokmrken.</li>
	<li><menu>Visa bokmrken som lista</menu>: Visar bokmrkena som lista, inte som undermenyer.</li>
	<li><menu>Visa bokmrken i undermenyer</menu>: Visar bokmrkena som undermenyer, inte som en lista.</li>
	</ul>
<li><menu>Databasverktyg</menu>: <a Maintenance>Underhll</a> databasen.</li>
    </li>
	<ul>
	<li><menu>Verktygsfnster</menu>: ppnar/ stnger verktygsfnstret.</li>
	<li><menu>Klassificera partier enligt ECO</menu>: Klassificerar alla partier enligt ECO-systemet.</li>
	<li><menu>Ta bort dubbletter</menu>: Tar bort <a Maintenance Twins>Dubblettpartier</a> i databasen.</li>
	<li><menu>Namn</menu>: Erstter alle frekomster av en spelar-,
      resultat-, ort- eller rundeinmatning.</li>
      </ul>
      <li><menu>Skrivskyddad</menu>: Avlgsnar temporrt redigeringsmjligheterna till databasen.</li>
<li><menu>Byt databas</menu>: Byter till en annan ppnad databas.</li>
	<ul>
		<li><menu>Base 1/2/3/4/5</menu>: Hr byter du mellan de olika databaserna i databasvxlarna, inklusive <a Clipbase>Urklippsdatabasen</a>.</li>
	</ul>
	<ul>
	<li><menu>Komprimera databasen</menu>: Komprimerar databasen, avlgsna borttagna partier och oanvnda namn.</li>
	<li><menu>Sortera databasen</menu>: Sorterar partierna i den aktiva databasen.</li>
  	<li><menu>Sk dubbletter"</menu>: ppnar/ stnger dubblettfnstret fr att ska dubblettpartier.</li>
	<li><menu>Stavningskontroll</menu>: Namnredigerar och stavningskontrollerar.</li>
		<ul>
		<li><menu>Redigera namn</menu>: Redigerar spelarnamn utifrn rttstavningsfilen.</li>
		<li><menu>Stavningskontrollera namn</menu>: Stavningskontrollerar namn utifrn rttstavningsfilen.</li>
		<li><menu>Stavningskontrollera evenemang</menu>: Stavningskontrollerar evenemang utifrn rttstavningsfilen.</li>
		<li><menu>Stavningskontrollera platser</menu>: Stavningskontrollerar platser utifrn rttstavningsfilen.</li>
		<li><menu>Stavningskontrollera ronder</menu>: Stavningskontrollerar ronder utifrn rttstavningsfilen.</li>
  		</ul>
	</ul>	
<li><menu>Avsluta</menu>: Avslutar Scid. </li>
</ul>

<h3>Redigera</h3>
<ul>
<li><menu>Lgg till variant</menu>: Skapar en variant vid denna stllning. Antingen fr nsta drag, eller fr fregende drag om det r det frsta draget.</li>
<li><menu>Ta bort variant</menu>: Visar en undermeny med de borttagbara varianterna.</li>
<li><menu>Skapa huvudvariant</menu>: Upphjer en av varianterna till huvudvariant.</li>
<li><menu>Skapa nytt textdrag</menu>: Gr en av varianterna till nytt partidrag.</li>
<li><menu>Testa en id</menu>: Slr p <a Moves Trial>Testlge</a> fr att tillflligt testa en id. Frndrar inte partiet.</li>
<li><menu>Ta bort</menu>: Avlgsnar kommentarer eller varianter ur partiet.</li>
<br>
<li><menu>Tm Clipbase</menu>: Tmmer Urklippsdatabasen <a Clipbase>Clipbase</a> p partier.</li>
<li><menu>Kopiera partiet till Clipbase</menu>: Kopierar det aktuella partiet till Urklippsdatabasen <a Clipbase>Clipbase</a>.</li>
<li><menu>Klistra in det senaste Clipbasepartiet</menu>: Klistrar in det aktiva partiet i <a Clipbase>Clipbase</a> i den aktiva databasen och gr det aktivt.</li>
<br>
<li><menu>Skapa stllning</menu>: Skapar en utgngsstllning fr aktuellt parti.</li>
<li><menu>Kopiera stllning</menu>: Kopierar den aktuella stllningen i FEN-kod till Urklippsdatabasen.</li>
<li><menu>Klistra in utgngsstllning</menu>: Klistrar in stllningen frn aktuellt parti i den temporra databasen.</li>
</ul>

<h3>Partier</h3>
<ul>
<li><menu>Nytt parti</menu>: terstller brdet infr ett nytt parti (detta tar bort alla ndringar).</li>
<li><menu>Ladda frsta/fregende/nsta/sista partiet</menu>: Dessa laddar respektive parti i <a Searches Filter>Skfiltret</a>.</li>
<li><menu>Ladda om partiet</menu>: Laddar om aktuellt parti och tar bort alla gjorda ndringar..</li>
<li><menu>Ladda parti slumpmssigt</menu>:  Laddar ett av datorn slumpmssigt valt parti.</li> 
<li><menu>Ladda parti nummer...</menu>: Laddar ett parti genom att ange dess nummer.</li>
<br>
<li><menu>Spara: Erstt parti...</menu>: Sparar partiet och erstter tidigare version.</li>
<li><menu>Spara: Nytt parti...</menu>: Sparar det aktuella partiet och lgger till det till databasen.</li>
<br>
<li><menu>Identifiera ppningen</menu>: Gr till den mest detaljerade stllningen i ECO-boken.</li>
<li><menu>G till drag nummer...</menu>: Gr till ett specifikt drag i partiet.</li>
<li><menu>Hitta nyhet...</menu>: Hittar det frsta draget i partiet som inte spelats tidigare.</li>
</ul>

<h3>Sk</h3>
<ul>
<li><menu>terstll skfilter</menu>: terstller <a Searches Filter>Skfiltret</a> s att alla partiet ingr i urvalet.</li>
<li><menu>Omvnt filter</menu>: Tar med de partier som utesluts av filtret.</li>
<br>
<li><menu>Aktuell stllning...</menu>: Sker partier med <a Searches Board>Den aktuella stllningen</a> p brdet.</li>
<li><menu>I huvud...</menu>: Anvnder <a Searches Header>Fast information</a> (spelare, evenemang, plats, mm).</li>
<li><menu>Material/Stllning...</menu>: Sker baserad p <a Searches Material>Material</a> eller <a Searches Pattern>Stllning</a>.</li>
<br>
<li><menu>Anvnd skfil...</menu>: Anvnder en fil med <a Searches Settings>lagrade</a>.</li>
</ul>

<h3>Fnster</h3>
<ul>
<li><menu>Kommentarseditor</menu>: ppnar/ stnger <a Comment>Kommentarseditorn</a>.</li>
<li><menu>Partilista</menu>: ppnar/ stnger <a GameList>Partilistan</a>.</li>
<li><menu>PGN fnster</menu>: ppnar/ stnger <a PGN>PGN-fnstret</a>.</li>
<li><menu>Spelarfrteckning</menu>: ppnar/ stnger en frteckning ver spelarna i den aktiva databasen.</li> 
<li><menu>Turneringar</menu>: Listar <a Tmt>Turneringar</a>.</li>
<br>
<li><menu>Databasvxlaren</menu>: ppnar/ stnger <a Switcher>Databasvxlaren</a>. Databasvxlaren underlttar byte mellan olika databaser
och kopiering av partier frn den ena databasen till den andra.</li>
<li><menu>Databasverktyg</menu>: ppnar/ stnger <a Maintenance>Verktygsfnstret</a>.</li>
<br>
<li><menu>ECO fnster</menu>: ppnar/ stnger <a ECO browser>ECO blddraren</a>.</li>
<li><menu>Repetoareditor</menu>: ppnar/ stnger verktyget fr <a repetoire>Spelppningshantering</a>.</li>
<li><menu>Statistikfnster</menu>: ppnar/ stnger <term>Statistikfnstret</term>. Hr hittar du en statistisk sammanfattning av partierna i  
 <a Searches Filter>Skfiltret</a>.</li>
<li><menu>Trdfnster</menu>: ppnar/ stnger <a Tree>Varianttrdet</a>.</li>
<li><menu>Slutspelsdatabas</menu>: ppnar/ stnger slutspelsdatabasfnstret som ger dig viss information om <a TB>Slutspelsdatabaserna</a>.</li>
</ul>

<h3>Verktyg</h3>
<ul>
<li><menu>Analysmotor...</menu>: Startar/ stoppar en analysmotor, t ex Crafty, som kontinuerligt bedmmer den aktuella stllningen
p brdet i ett <a Analysis>Analysfnster</a>.</li>
<li><menu>Analysmotor 2...</menu>: Startar/ stoppar en andra analysmotor, t ex Crafty.</li>
<li><menu>Resultattabell</menu>: Skapar en <a Crosstable>Resultattabell</a> fr den aktuella turneringen/matchen som det aktuella partiet ingr i</li>
<li><menu>Eposthanteraren</menu>: ppnar/ stnger <a Email>Eposthanteraren</a> fr hantering av korrespondensschack.</li>
<br>
<li><menu>ppningsrapport</menu>: Skapar en <a OpReport>ppningsrapport</a> utifrn den aktuella stllningen.</li>
<li><menu>Sk material</menu>: ppnar dialog fr att <a PTracker>Ska efter en viss materiell balans</a>.</li>
<br>
<li><menu>Spelarinformation</menu>: Visar/ uppdaterar <a PInfo>Spelarinformation</a> fr den ene av tv spelare i det aktuella partiet.</li>
<li><menu>Ratingdiagram</menu>: Skapar ett <a Graphs Rating>Ratingdiagram</a> fr spelarna i partiet.</li>
<li><menu>Resultatdiagram</menu>: Visar <a Graphs Score>Resultatdiagrammet</a>.</li>
<br>
<li><menu>Exportera aktuellt parti ...</menu>: Sparar aktuellt parti till olika format; text, HTML eller LaTeX. Se vidare
   hjlpsidan fr  att <a Export>Exportera</a> partier.</li>
<li><menu>Exportera alla filtrerade partier</menu>: Sparar alla <a Searches Filter>filterade</a> partier till olika format; text, HTML eller LaTeX. Se vidare
   hjlpsidan fr  att <a Export>Exportera</a> partier.</li>
<br>
<li><menu>Importera ett parti i PGN-format...</menu>: ppnar <a Import>Importfnstret</a> fr att ange eller klistra in ett parti i 
 <a PGN>PGN-format</a> fr import till en Scid databas.</li>
<li><menu>Importera flera partier i PGN-format...</menu>: Importerar flera partier i PGN-format frn en fil.</li>
</ul>

<h3>Alternativ</h3>
<p>
Denna meny ger tillgng till de flesta av de parametrar som styr hur Scid fungerar.
Menyvalet <menu>Spara alternativ</menu> sparar de aktuella instllningarna till filen
 "<b>~/.scid/scidrc</b>" (eller <b>scid.opt</b> i katalogen som innehller den exekverbara
scid-filen, Scid.exe, om Windows); denna fil laddas varje gng du startar Scid.
</p>

<h3>Hjlp</h3>
<p>
Denna meny innehller hjlpfunktioner och ger tillgng till bl a fnstret "Dagens tips"
och startfnstret som informerar om vilka filer Scid laddat vid uppstart. 
</p>

<p><footer>(Uppdaterad: Scid 3.5, februari 2003)</footer></p>
}
	
####################
### Entering moves help:

set helpTitle(W,Moves) "Ange drag"
set helpText(W,Moves) {<h1>Ange drag</h1>
<p>
I Scid, kan du ange partidrag svl med musen som med tangentbordet. Nr du rr musmarkren ver en ruta p
brdet kommer du att mrka att svl rutan som ytterligare en ruta fr en annan frg. Om det finns ett legalt
drag till eller frn den ruta du fr musmarkren ver. Detta r det <term>Freslagna draget</term>.
Du utfr detta drag genom att <term>Vnsterklicka</term> med musen. Om detta str dig kan du stnga av denna funktion
i Alternativmenyn.

</p>
<p>
Fr att utfra ett annat drag kan du <term>klicka och hlla nere vnster</term> musknapp: flytta sedan musen till nskad
 ruta och slpp musknappen.
</p>
<p>
Om du vill kan du utfra drag genom att klicka tv gnger istllet fr att anvnda klicka-och-drag tekniken. Klicka d 
frst p utgngsrutan med den <term>Mittersta musknappen</term> och klicka sedan med samma musknapp p destinationsrutan.
(Tipset gller kanske framfrallt anvndare av UNIX(-lika) system, som ofta har stor nytta av 3-knappsmss).
</p>

<h4>Ta tillbaka ett drag</h4>
<p>
Man kan ta tillbaka ett drag genom att hgerklicka med musen. Detta gr tillbaka ett drag och tar bort det senast utfrda draget i partiet
eller varianten.
</p>

<h4>Erstt tidigare drag</h4>
<p>
Om du anger ett drag i en stllning dr ett drag redan angivits kommer Scid att frga om du verkligen vill erstta den tidigare
draget (draget och alla varianter lngre fram som r beroende av draget tas bort), eller om du vill skapa en ny variant istllet.
En del anvnder tycker att frgan r strande och vill alltid erstta det tidigare draget, s man kan konfigurera Scid till att inte
stlla denna frga. Du hittar mjligheten i  menyn <menu>Alternativ: Drag</menu> "<i>Frga fre erstt drag</i>".
</p>

<h4><name Trial>Testlge</name></h4>
<p>
Om du gr igenom ett parti och kommer till en stllning dr du vill testa en id utan att pverka det registrerade partiet s vljer du
<b>Testa en id</b> frn menyn <menu>Redigera</menu> fr att stta p testlge. I testlge kan du gra drag och frndringar av partiet som
r temporra, dvs de sparas inte nr du tergr frn testlge.
</p>

<h3><name Mistakes>Rtta fel</name></h3>
<p>
Om du skriver in ett parti och pltsligt upptcker ett fel flera drag tidigare r det mjligt att rtta till detta utan att 
behva gra om alla drag efter feldraget. Det enda sttet r att redigera PGN-versionen av partiet: ppna <a Import>Importfnstret</a>, 
vlj Klistra in aktivt parti, korrigera felet och vlj drefter "Importera".
</p>

<h3>Ange drag via tangentbordet</h3>
<p>
Du kan ange drag via tangentbordet genom att helt enkelt skriva in dem med bokstver och siffror. Lgg mrke till att dragen
ska anges i <term>SAN-notation</term>, <i>utan</i> (x) tecknet fr slag eller (=) tecknet fr promovering. Dragnotationen r 
inte versal/gemenknslig s t ex:
[n][f][3] r samma drag som Nf3 -- men kontrollera med noten nedan fr drag som str i konflikt med varandra.
</p>
<p>
Fr att skerstlla att inga drag r prefix fr ett annat drag s anvnds en srskild metod att ange rockad. Kort och lng rockad
representeras med hjlp av bokstver som fljer:
kort rockad anges med  [O][K]
lng rockad anges med [O][Q] istllet fr det vanliga O-O och O-O-O.
</p>
<p>
Nr du anger drag kommer du i statusraden att se en lista ver giltiga drag. Du kan, genom att trycka <b>[Mellanslag]</b> vlja det frsta i listan och fra in det
i partiet. Fr att ta bort tecken anvnder du de vanliga raderingstangenterna.
</p>
<p>
<b>OBS</b> gemena tecken kopplas i frsta hand till bnder, vilket betyder att [b]kan betyda b-bonden istllet fr lparen (Bishop). Om du hamnar
i situationer nr konflikter uppstr mste du istllet ange pjserna med versaler (B) i detta fallet.
</p>
<b>versttarens kommentar</b> Scid frstr inte svenska. Detta betyder att du inte kan anvnda de svenska frkortningarna till att ange drag. [s][f][6] 
frsts inte av Scid (dremot funkar [n][f][6] utmrkt). Om du vill anvnda tangentbordet att skriva in drag fr du istllet anvnda notationen [g][8][f][6] fr
samma drag.
</p>
<h4>Autokomplettering</h4>
<p>
I Alternativmenyn kan du sl p eller av <term>Autokomplettering</term>
av drag.
Med denna pslagen grs draget s fort du skrivit in tillrckligt mycket fr att srskilja det frn andra mjliga drag. Exempelvis rcker det att skriva [n][f] istllet
fr [n][f][3] fr draget <b>Nf3</b>i utgngsstllningen.
</p>
<p><b>versttarens kommentar</b> Scid frstr som sagt inte svenska. Dremot fungerar det med rutangivelsen om t ex pjsen p g1 bara har ett flt 
att g till.</p>

<h3><name Null>Ange null-drag</name></h3>
<p>
<a Annotating Null>Null</a> (tomma, planerade) drag kan vara anvndbara i  kommentarer fr att hoppa ver den ena spelarens drag. Du anger null-drag
genom att sl den ena kungen med den andra, eller via tangentbordet genom att skriva  "<b>--</b>" (minustecknet tv gnger).
</p>
<p><b>versttarens kommentar</b> "null" r en dataterm fr att beskriva ingenting (till skillnad mot noll som har ett vrde om dock noll, null har inget vrde).
Shane anvnder termen null hr, ngon som har frslag p bttre i den svenska versttningen? Kolla introduktionssidan fr att fresl ngonting.</p>

<h3>Ange de vanligaste kommentarsymbolerna</h3>
<p>
Du kan ven ange <a NAGs>Kommentarsymboler</a> via tangentbordet utan att behva anvnda <a Comment>Kommentarseditorn</a>. 
Fljande lista kan anges via tangentbordet:
<ul>
<li> !	: [!][ENTER] </li>
<li> ?	: [?][ENTER] </li>
<li> !?	: [!][?][ENTER] </li>
<li> ?!	: [?][!][ENTER] </li>
<li> !!	: [!][!][ENTER] </li>
<li> ??	: [?][?][ENTER] </li>
<li> </li>
<li> +-	: [+][-] </li>
<li> +/-	: [+][/] </li>
<li> +=	: [+][=] </li>
<li> =	: [=][ENTER] </li>
<li> -+	: [-][+] </li>
<li> -/+	: [-][/] </li>
<li> =+	: [=][+] </li>
</ul>

<p><footer>(Uppdaterad: Scid 3.4,  juli 2002)</footer></p>
}


########################################
### Searches help screen:

set helpTitle(W,Searches) "Ska i Scid"
set helpText(W,Searches) {<h1>Ska i Scid</h1>
<p>
I Scid kan man ska information p flera olika stt. 
Det finns tre huvudmetoder att anvnda sig av beroende p vilken typ av information man
r ute efter:
<ul>
<li><b>1)</b> utifrn den aktuella stllningen p brdet, </li>
<li><b>2)</b> utifrn specifikt material eller en specifik stllningstyp; och </li>
<li><b>3)</b> utifrn fast information, t ex spelare, ort, resultat eller datum. </li>
</ul>
<p>
Utver dessa metoder kan man anvnda sig av en automatisk skfunktion, <a Tree>Trdfnstret</a>, som frklaras
separat.
</p>

<h3><name Filter>Skfiltret</name></h3>
<p>
Skningar baseras i  Scid p <term>Filter</term>.
Ett filter representerar en delmngd av den aktiva databasen. Vid varje specifikt tillflle kommer ett parti att antingen vara
del av denna delmngd (filtret) eller uteslutas av detta. I varje typ av skning (se ovan) kan du vlja att begrnsa, utka eller
ignorera det aktiva filtret och istllet ska i hela databasen. Detta gr att man stegvis kan bygga komplicerade skningar. 
Du kan ocks kopiera alla filtrerade partier frn den ena databasen till den andra genom att anvnda <a Switcher>Databasvxlaren</a>.
</p>

<p>
Nr du sker p exakt stllning, <a Tree>Trd</a> eller Material/Stllningstyp, sparas dragnumret i den frsta stllningen och varje
parti med identisk stllning lagras i minnet s att man, nr man senare laddar de framskta partierna, automatiskt kommer till den stllning
som var av intresse (som skningen grundades p).
</p>
<p>
<b>OBS</b> skningen gller endast textdragen, inte varianterna.
</p>

<h3><name Board>Sk: Aktuell stllning</name></h3>
<p>
Med denna metod hittas partier med samma stllning som det p brdet i huvudfnstret. Rockadmjligheter och 
rttigheter att gra <i>En passant</i> ignoreras. Det finns fyra undertyper att vlja p, samtliga krver att stllningen har exakt samma material och spelare vid draget fr att en trff ska
anses ha intrffat:
<ul>
<li> [1] exakt (de bda stllningarna mste vara exakt lika), </li>
<li> [2] bnder (bondestrukturen mste vara identisk, men de vriga pjsernas placering kan variera), </li>
<li> [3] linjer (antalet vita och svarta bnder p varje linje mste vara identisk - i vrigt kan pjsplaceringen variera), och slutligen; </li>
<li> [4] material (bnder och pjser kan st var som helst p brdet.). </li>
</ul>
<p>
Att ska p bondestllning r anvndbart nr man studerar spelppningar med likartad bondstruktur, medan att ska p linjer och material r lmpliga metoder fr
att finna liknande stllningar i slutspel. Nr man sker p specifika stllningar kan man skapa den frst (frn menyvalet <menu>Redigera: Skapa stllning</menu>) och starta skningen drifrn.
(Man kan naturligtvis ocks spela upp stllningen p brdet, <i>versttarens anmrkning</i>).
</p>
<p>
Du kan ange att skningen ven ska leta i varianter (istllet fr att bara inkludera de egentliga partidragen) genom att markera kryssrutan <b>Sk i varianter</b>, 
men detta kan gra skningen lngsammare om databasen r stor och har mnga partier med varianter.
</p>

<h3><name Material>Sk: Material/stllningstyp</name></h3>
<p>
Denna skning r anvndbar nr man vill finna slut- eller mittspelsteman. Du kan specificera minimalt och maximalt antal av varje pjstyp, och hitta stllningar
av typen "Lpare p f7" eller "Bonde p f-linjen". Det finns ett antal vanliga stllningstyper frdefinierade, t ex "Torn och Bondeslutspel" eller "Isolerade d-bnder".
</p>
<p>
<b>Tips:</b><br>
Tidstgngen fr denna typ av skning kan variera kraftigt. Man kan minska tiden som behvs genom att anvnda sig av frnuftiga begrnsningar.
Om man, som exempel,  vill underska slutspel kan man stta det minimala antalet drag partiet ska innehlla till 20. D kommer alla partier 
med frre n 20 drag att ignoreras.
</p>

<h3><name Header>Sk: fasta uppgifter ("header search")</name></h3>
<p>
Denna skning anvnds fr att finna aspekter p partier som lagras i partihuvudet (jmfr med eposthuvud) ssom datum, resultat, plats och ratingtal. Den
krver ingen avkodning av dragen i partiet. Fr att en trff ska registreras krvs att alla flt du specificerar stmmer verens. Namnflten  (Vit, Svart, 
Evenemang, Plats och Rond) r versal/gementoleranta. Trffar registrerars p all text i dessa flt och mellanslag ignoreras .
</p>
<p>
Du kan generera exakta skningar och anvnda jokertecken i huvudflten som nmnts ovan. Jokertecknet  <b>?</b> betyder "Ett
valfritt tecken" medan <b>*</b> betyder "Inget eller flera valfria tecken". Man genererar exakta skningar genom att innesluta den text man
nskar hitta i citattecken ("). Exempel:
</p>

<p>
En skning p platsen <b>USA</b> kommer att generera amerikanska stder, men ven <b>Lausanne SUI</b>, vilket du frmodligen inte var ute efter! 
Detta lser man genom att istllet ska efter platsen <b>"*USA"</b> (notera citattecknen) som endast kommer att presentera stder i USA.</p>
<p>
Om du sker efter en srskild spelare (eller tv srskilda spelare) som vit eller svart och det inte spelar ngon roll vet som har vilken frg vljer du med 
frdel <b>Ignorera frg</b> i stllet fr svart/vit i frgangivelsen.
</p>
<p>
Avslutningsvis kan fasta skningar gras fr att hitta valfri text (VERSAL/gemen-knsligt och utan jokertecken) i PGN-versionen av partierna. Du kan
ange upp till tre textstrngar, och alla mste finnas i ett parti fr att de ska rknas som en trff. Denna skning r mycket anvndbar nr det gller
kommentarsfltet eller extra mrkord i partierna (exempelvis  <b>frlorar p tid</b> eller <b>Kommentator</b>), eller fr en dragfljd som 
<b>Bxh7+</b> och <b>Kxh7</b> nr en lpare har offrats (och accepterats) p h7.

Tnk dock p att denna typ av skningar kan vara <i>mycket</i> tidskrvande eftersom alla partier som mter vissa kriterier mste avkodas och
genomskas efter textstrngen/-arna. Det r drfr en bra id att begrnsa denna typ av skning s mycket som mjligt. Exempel:
</p>

<p>
Fr att hitta partier med underpromovering till torn sker man p <b>=R</b> och stter <b>Frvandlingar</b> flaggan till Ja.
Fr att hitta text i kommentarer stter du flaggan <b>Kommentarer</b> till Ja.
Om du sker p dragen <b>Bxh7+</b> och <b>Kxh7</b>, kan det vara en id att begrnsa partierna till de som har resultatet  1-0 resultatet och innehller
minst 20 halvdrag. Eller gr en Material-/Stllningstypsskning fr att hitta partier dr lparen flyttas till h7.
</p>

<h3><name Settings>Spara skkriterierna</name></h3>
<p>
I Material/Stllningstyp och Huvudskningsfnstren finns valet att  
<term>Spara instllningarna</term>. Detta ger dig mjligheten att spara de aktuella skkriterierna fr senare anvndning.
Kriterierna sparas till en <term>Skningsfil</term> med filndelsen  .sso. Fr att teranvnda en tidigare sparad skningfil
vljer du <menu>ppna ...</menu> frn menyn <menu>Sk</menu>.
</p>

<h3>Sktider och ignorerade partier</h3>
<p>
De flesta skningar meddelar en hur lng tid skningen tog och hur mnga partier som <term>Ignorerades</term>. Ignorerade partier
r de som exkluderats frn en skning utan att ngot av dess drag har avkodats (frn Scids databasformat). Detta baseras p information
som lagrats i index. Se vidare hjlpfilen om <a Formats>Filformat</a> fr ytterligare information. 
</p>

<p><footer>(Uppdaterad: Scid 3.0, november 2001)</footer></p>
}

#################
### Clipbase help:

set helpTitle(W,Clipbase) "Urklippsdatabasen"
set helpText(W,Clipbase) {<h1>Urklippsdatabasen</h1>
<p>
Frutom de databaser du ppnar sjlv, ppnar Scid ytterligare en - <term>Urklippsdatabasen</term>. Urklippsdatabasen,
fungerar precis som alla andra databaser, med ett undantag. Den existerar bara i datorns arbetsminne och sparar inte data
ngonstans permanent. Urklippsdatabasen tms sledes nr du stnger av datorn.
</p>
<p>
Urklippsdatabasen r anvndbar som en tillfllig lagringsplats, fr att sl samman skresultat frn olika databaser, eller fr att man dr
kan behandla resultat frn en skning som en egen databas. 
</p>
<p>
Antag, exempelvis, att du vill frbereda dig fr en srskild motstndare. Du har skt igenom databasen efter partier av denne dr motstndaren
spelar vit. Kopiera alla partier i <a Searches Filter>Skfiltret</a> till Urklippsdatabasen. Du kan gra det genom att i <a Switcher>Databasvxlaren</a>
 dra dem frn deras ordinarie databas till Urklippsdatabasen. Drefter kan du ppna Urklippsdatabasen och underska partierna i  <a Tree>Trdfnstret</a>, 
till exempel fr att kartlgga motstndarens ppningsrepetoar.
</p>
<p>
Observera att du kan kopiera partier frn en databas till en annan utan att anvnda Urklippsdatabasen som mellanlagringsplats. Notera ocks att
Urklippsdatabasen <i>inte</i> kan stngas via menyvalet <menu>Arkiv: Stng</menu>medan du r i Urklippsdatabasen. Det som hnder d r
motsvarigheten till  <menu>Redigera: terstll Urklippsdatabasen</menu>, dvs databasen tms.
</p>
<p>
Du kan maximalt ha 100000 partier i minnet samtidigt.
</p>

<p><footer>(Uppdaterad: Scid 2.5,  juni 2001)</footer></p>
}

#################################
### Variations and comments help:

set helpTitle(W,Annotating) "Kommentera partier"
set helpText(W,Annotating) {<h1>Kommentera partier</h1>
<p>
I Scid kan lgga till noter till partierna. Det finns tre typer av anteckningar du kan lgga till till varje drag:
symboler, kommentarer och varianter.
</p>

<h3>Symboler och kommentarer</h3>
<p>
Symboler anvnds fr stllningsbedmningar om vem som str bst (t ex "+-" eller "=") , om draget som just gjordes var bra eller dligt
(t ex "!" eller "?") medan kommentarer kan best av valfri text. Fr att lgga till symboler och kommentarer anvnder man
<a Comment>Kommentarseditorn</a>. Det finns ocks en srskild hjlpsida fr <a NAGs>Standardsymbolerna</a>.
</p>
<p>
Tnk p att ven om varje drag kan ha fler symboler, kan det bara ha en kommentar. En kommentar fr frsta draget skrivs ut som 
text fre partidragen. 
</p>

<h3><name Vars>Varianter</name></h3>
<p>
En <term>variant</term> r en alternativ fortsttning av partiet som skulle ha kunnat utfras vid ngot
tillflle i partiet. Varianter kan innehlla kommentarer, symboler och varianter. Knappen mrkt "<b>V</b>" 
ovanfr brdet i huvudfnstret, samt valmjligheter frn menyn <menu>Redigera</menu> kan anvndas till att skapa,
navigera i och redigera varianter.
</p>

<h4>Kortkommandon</h4>
<p>
Nr det finns varianter till ett drag visas dem i partiinformationsomrdet. Den frsta varianten r <b>v1</b>, den andra
r <b>v2</b>, osv. Fr att flja en variant kan man klicka p den, eller trycka  "<b>v</b>" fljt av variantens nummer 
(Om det bara finns en variant rcker det med att trycka <b>v</b>.). Kortkommandot fr att g ur en variant r "<b>z</b>".
</p>

<h3><name Null>Null-drag</name></h3>
<p>
Det kan ibland vara anvndbart att hoppa ver drag i varianter. Du kan exempelvis till draget 14.Bd3 lgga till en variant och
nmna att det hotar 15.Bxh7+ Kxh7 16.Ng5+ med angrepp. Du kan ocks gra detta genom att anvnda <term>Null-drag</term>
mellan 14.Bd3 och 15.Bxh7+, i exemplet ovan. Ett null-drag visas som "<b>--</b>" och infogas genom att med musen utfra det
ogiltiga draget att med kungen sl den andra kungen, eller att helt enkelt skriva in "<b>--</b>" (tv minustecken).
</p>
<p>
Observera att null-drag inte ingr i PGN standarden, s om du vill exportera partier som innehller null-drag till en PGN-fil mste du 
vlja mellan att bevara null-dragen(-t) eller konvertera dem till kommentarer fr att bibehlla exportmjligheter till andra
program. Se hjlpsidan fr att <a Export>Exportera</a> partier fr mer information.
</p>

<p><footer>(Uppdaterad: Scid 3.4, juli 2002)</footer></p>
}

####################
### Analysis window:

set helpTitle(W,Analysis) "Analysfnstret"
set helpText(W,Analysis) {<h1>Scids Analysfnster</h1>

<h3>Analysfnster</h3>
<p>
Scids analysfnster visar analysen frn en schackmotor
av den aktuella positionen. Nr positionen ndras skickar Scid den 
nya positionen till schackmotorn samt visar dess vrdering av 
denna position. 
</p>

<p>
Vrderingen som visas i analysfnstret r alltid frn vits perspektiv, 
s en negativ vrdering indikerar att svart str bttre. Den nedre delen av fnstret 
(med scrollrutan) visar historiken fr vrderingar producerat av schackprogrammet fr den 
aktuella positionen, s att du kan se hur vrderingen har ndrats. 
</p>

<p>
Fr att lgga till det bsta draget valt av en schackmotor som ett nytt drag i det aktuella partiet 
klickar du p Lgg till drag knappen. 
</p>

<h3>Schackmotorlistan</h3>

<p>
Scid behller en lista p de schackmotorer du har anvnt, tillsammans med en uppskattad Elo-rating 
(om du antar en) och datumet nr varje schackmotor sist anvndes. Du kan sortera schackmotorlistan 
efter namn, Elo-rating, eller datum. Vlj Ny eller ndra knapparna fr att lgga till en ny schackmotor till 
listan eller ndra detaljerna fr en existerande schackmotor. 
</p>

<h3>Schackmotorkommandon och kataloger</h3>

<p>
Fr varje schackmotor mste du specificera den exekuterbara filen att kra samt i vilken katalog Scid ska 
kra den i. 
</p>

<p>
Den mest sannorlika orsaken till problem att starta en schackmotor r valet av vilken katalog schackmotorn 
ska kra i. Vissa schackmotorer krver en instllnings- eller ppningsboksfil i sina startkataloger 
fr att fungera bra. Andra schackmotorer (som Crafty) skriver loggfiler till katalogen de startar i, s 
du mste kra dem i en katalog dr du har tillstnd att skriva i. Om kataloginstllningarna fr en 
schackmotor r ".", kommer Scid att starta en schackmotor i den aktuella katalogen. 
</p>

<p>
S om en schackmotor som borde fungera bra i Scid inte startar frsk att ndra dess kataloginstllning. 
Fr att undvika att schackmotorer skapar loggfiler i mnga olika kataloger rekommenderar jag att starta schackmotorer 
i katalogen med Scids anvndarfiler (detta r dr Scid.exe filen finns i Windows, 
eller ~/.scid/ i Unix); det finns en knapp i dialogrutan fr att ndra schackmotordetaljer med namnet 
Scid.exe-katalogen i Windows eller ~/.scid i Unix som lter dig vlja vilken schackmotor som ska starta i denna katalog. 
</p>

<h3>Trning</h3>

<p>
Med Trningsknappen kan du spela drag mot schackprogrammet. Tiden fr varje drag 
r fixerad och analysresultet visas inte d. 
</p>

<h3>Kommentera ett parti</h3>

<p>
Lgg till variation knappen i analysfnstret lgger till den aktuella vrderingen och bsta analyserade
dragfljd som en ny variation i partiet. 
</p>

<p>
Du kan gra detta automatiskt fr ett antal drag (kommentera partiet) genom att klicka p 
kommentarknappen. Detta frgar dig efter ngra kommentarsalternativ och sedan startar 
sjlvspelsmod. Nr sjlvspelsmod anvnds och analysfnstret r ppet lggs 
en variation innehllande vrderingen och bsta dragfljden automatiskt till fr varje 
position nr sjlvspelsmod gr igenom partiet. Bara positioner frn den aktuella 
positionen till slutet av partiet (eller tills du lmnar sjlvspelsmod) kommenteras, 
s du kan hoppa ver att kommentera ppningsdragen genom att g till en mittspelsposition 
innan du startar sjlvspel. 
</p>

<p>
Fr att avbryta kommentarer stng av sjlvspelsmod, till exampel genom att trycka
ner Esc-tangenten i huvudfnstret. 
</p>

<p>
Observera att fr enkelhet finns kommentarknappen bara tillgnglig i fnstret ppnat som 
schackmotor 1. Om du ppnar en schackmotor som schackmotor 2 kan du inte anvnda den fr att
kommentera partiet. 
</p>

<h3>Analysbrdet</h3>

<p>
Genom att klicka p schackbrdeknappen i ett analysfnster visar du eller dljer du analysbrdet, 
som visar positionen vid slutet av den av den bsta funna aktuella dragfljden hittad av 
schackmotorn. 
Detta fungerar fr de flesta Scid-kompatibla schackmotorer men inte fr alla; 
det beror p den dragnotation som schackmotorn anvnder. 
</p>

<h3>Schackmotorprioritet</h3>

<p>
Om en schackmotor anvnder fr mycket CPU-tid och pverkar anvndningen av Scid eller 
andra program kan det hjlpa att stta p "Lg CPU-prioritet" i proxyn; 
det ger schackmotorn en lg prioritet fr CPU-anvndning. 
</p>

<h3>Grnssnittsdetaljer</h3>

<p>
Fr att anvnda analysfnstret behver du ett schackprogram som stder WinBoard/Xboard-protokollet. 
</p>

<p>
Scid skickar kommandorna <b>"xboard"</b>,<b>"post"</b> och <b>"protover 2"</b> till en schackmotor nr den startar, 
och anvnder <b>"setboard"</b> och <b>"analyze"</b> kommandorna fr mer effektiv kommunikation 
om schackprogrammet svarar vilket indikerar att det stder dem. Om en schackmotor inte stder 
<b>"setboard"</b> kommandot kan det inte analysera ett parti som brjar med en 
ickestandard startposition. 
</p>

<p>
Fr program som inte stder analyskommandot skickar Scid fljande 
kommandon varje gng positionen ndras: <b>"new"</b> och <b>"force"</b>, 
sedan dragen i partiet till den aktuella position sedan <b>"go"</b>. 
</p>

<p>
Bob Hyatts utmrkta gratis schackmotor Crafty r vad jag anvnder och rekommenderar fr 
analysfnstret, men mnga andra WinBoard eller XBoard kompatibla schackmotorer har 
anvnts framgngsrikt med Scid. Ngra nedladdningssajter fr ngra schackmotorer listas nedan. 
</p>

<p>
Crafty: <url ftp://ftp.cis.uab.edu/pub/hyatt/>ftp://ftp.cis.uab.edu/pub/hyatt/</url> 
</p>

<p>
Yace: <url http://home1.stofanet.dk/moq/>http://home1.stofanet.dk/moq/</url> 
</p>

<p>
Phalanx: <url ftp://ftp.math.muni.cz/pub/math/people/Dobes/>ftp://ftp.math.muni.cz/pub/math/people/Dobes/</url> 
</p>

<p>
Comet: <url http://members.aol.com/utuerke/comet/>http://members.aol.com/utuerke/comet/</url> 
</p>

<p>
Gnuchess: <url http://www.gnu.org/software/chess/chess.html>http://www.gnu.org/software/chess/chess.html</url> 
</p>

<p>
The Crazy Bishop: <url http://remi.coulom.free.fr/>http://remi.coulom.free.fr/</url> 
</p>
<p><footer>(Uppdaterat: Scid 3.4, September 2002)</footer></p>
}





###############################
### Comment editor window help:

set helpTitle(W,Comment) "Kommentareditor"
set helpText(W,Comment) {<h1>Scids Kommentareditor</h1>

<h3>Kommentarseditorfnstret</h3>

<p>
Kommentareditorfnstret lter dig lgga till eller ndra kommentarer och symboliska kommentarssymboler 
fr drag i det aktuella schackpartiet. 
</p>

<h3>Kommentarsymboler</h3>

<p>
Scid anvnder PGN-standarden fr kommentarsymboler, accepterar NAGs (Numeriska annotationsglypfer) 
vrden fr kommentarer. Ngra av de mest vanliga symbolerna (som "!" eller "+-") visas 
som symboler och har en knapp i kommentarseditorfnstret fr snabb inmatning. Fr andra symboler, 
kan du skriva in det lmpliga numeriska NAG-vrdet som r ett nummer frn 1 till 255. Till exempel, 
NAG-vrdet 36 betyder "Vit har initiativet" och visas som "$36" i PGN-texten till partiet.  
</p>

<p>
Se hjlpsidan om NAG-vrden fr NAG vrden som definieras av bl a PGN-standard. 
</p>

<p>
Tips: Du kan lgga till de vanligaste dragvrderingssymbolerna (!, ?, !!, ??, !? och ?!) i huvudfnstret 
utan att behva anvnda kommentarseditorfnstret, genom att skriva in symbolerna fljt av att trycka 
p <b>[Enter]</b> tangenten. Detta r speciellt anvndbart om du skriver in schackdrag genom att anvnda
tangentbordet. 
</p>

<h3>Kommentarer</h3>

<p>
Du kan ndra kommentarer genom att skriva in text och anvnda Rensa, ngra och Lagra 
knapparna. Du behver inte trycka p Lagra knappen fr att uppdatera en kommentar; 
den uppdateras automatiskt nr du gr till en annan position i partiet. 
</p>

<h3>Frga rutor</h3>

<p>
Du kan frga alla rutor med valfri frg genom att anvnda ett specialkommando,som kan 
finnas varsomhelst i en kommentar. Kommandoformatet r: 
</p>

<p>
[%mark square color]
</p>

<p>
dr square r ett rutnamn som d4 och frg r varje definierat frgnamn 
(som red, blue, darkGreen, lightSteelBlue, etc) eller RGB-kod (a # fljt av 
sex hexadecimala siffror, som #a0b0c8). Om frgen utelmnas blir rutan
rd. 
</p>

<p>
En kommentar kan innehlla obegrnsat antal frgkommandon, men varje mste ha sin 
egen [%mark ...] markering. Till exempel, kommentarstexten
</p>

<p>
Nu r d6-rutan  [%mark d6] svag och springaren kan attackera den frn b5. [%mark b5 #000070] 
</p>

<p>
frgar rutan d6 rd och rutan b5 frgas med den mrkbl frgen #000070. 
</p>

<h3>Rita pilar</h3>

<p>
Du kan rita en pil frn en ruta till en annan genom att anvnda ett specialkommentarskommando 
liknande det fr att frga rutor. Formatet r: 
</p>

<p>
[%arrow fromSquare toSquare color]
</p>

<p>
dr fromSquare och toSquare r namn p rutor som d4 och frg r varje definierat 
frgnamn (som  red, blue, etc) eller RGB code (som #a0b0c0). Om frgen inte specificeras
blir den rd. 
</p>

<p>
Till exempel, kommentarstexten 
</p>

<p>
C3-springaren och c4-lparen kontrollerar den svaga d5 rutan. 
[%arrow c3 d5 red] [%arrow c4 d5 blue] 
</p>

<p>
kommer att rita en rd pil frn c3 till d5 och en bl pil frn c4 till d5. 
</p>

<p><footer>(Uppdaterat: Scid 3.2, February 2002)</footer></p>
}


###########################
### Crosstable window help:

set helpTitle(W,Crosstable) "Korstabellfnster"
set helpText(W,Crosstable) {<h1>Scids korstabellfnster</h1>

<h3>Korstabellfnstret</h3>

<p>
Korstabellfnstret visar turneringskorstabellen fr det aktuella partiet. 
Varje gng du uppdaterar korstabellfnstret (genom att trycka p Uppdatera knappen, 
genom att trycka Enter tangenten i korstabellfnstret, eller genom att trycka <b>Ctrl+Shift+X</b> 
i huvud- eller partilistefnstren), sker Scid efter alla partier i samma turnering som det
aktuella partiet. 
</p>

<p>
Alla partier som spelas upp till tre mnader fre eller efter det aktuella partiet, 
med exakt samma Evenemangs- och Ortmarkeringar anses vara i turneringen. 
</p>

<p>
Ett enkelt klick med vnstra musknappen p ett resultat i korstabellen laddar detta  
parti. Du kan lgga till alla partier i turneringen till filtret med Lgg till filter knappen
i korstabellen. 
</p>

<h3>Korstabellfnstermenyer</h3>

<p>
<b>[Arkiv]</b> menyn lter dig spara den aktuella tabellen till en fil med text-, 
LaTeX- eller HTML-tabellformat. 
</p>

<p>
<b>[Visa]</b> menyn lter dig vlja tabellformat: 
All-play-all, Swiss eller Knockout eller Auto. 
</p>

<p>
All-play-all formatet (fr round-robin-typ evenemang) har en begrnsning p 30 spelare, 
men Swiss formatet (fr turneringar med mnga spelare) kan visa upp till 
200 spelare och upp till 20 rundor. Auto, som vljer det bsta formatet automatiskt 
fr varje turnering r standardinstllningen. 
</p>

<p>
Observera att Scid anvnder Rundemarkeringen fr varje parti fr att producera en Swisskorstabell, 
s du kommer inte att se ngra partier i Swisskorstabellen fr en turnering om dess partier inte 
har numeriska rundevrden som: 1, 2, 3, etc. 
</p>

<p>
Visa menyn lter dig ocks stlla in de data som ska presenteras att inkludera eller exkludera rating, 
lnder och spelartitlar. Du kan ocks vlja om frgallokationer i Swisstabeller ska synas. 
</p>

<p>
Separat ponggrupps-alternativet pverkar bara utseendet p tabellen nr spelarna sorteras
efter pong: det ger en tomrad mellan varje grupp av spelare med samma pong. 
</p>

<p>
<b>[Sortera]</b> menyn lter dig sortera spelarna efter namn, rating eller pong; 
efter pong r standardinstllningen. 
</p>

<p>
<b>[Frg]</b> menyn lter dig stta p eller av frg i hypertextvisning. Eftersom det kan ta lng tid att 
formattera och visa stora korstabeller i hypertext sparar det mycket tid att vlja vanlig text
fr stora evenemang. Men i enkel text kan du inte klicka p spelare eller partier. 
</p>

<h3>Duplikerade partier i korstabeller</h3>

<p>
Fr att f bra resultat med korstabeller br du markera dubblettpartier fr borttagning och 
ha en konsistent stavning i partierna av namn p spelare, ort och evenemang. Se Underhll 
databas fr hjlp med att ta bort dubbletter och ndra (eller stavningskontrollera) 
spelar-/evenemangs-/ortsnamn. 
</p>

<p><footer>(Uppdaterat: Scid 3.1, December 2001)</footer></p>
}


###########################
### Database switcher help:

set helpTitle(W,Switcher) "Databasvxlaren"
set helpText(W,Switcher) {<h1>Scids databasvxlare</h1>

<h3>Databasvxlaren</h3>

<p>
Databasvxlaren ger en mjlighet att enkelt byta mellan databaser 
eller kopiera partier mellan databaser. Namnet, filterinstllningen 
pch en ikon fr varje databas visas medan den aktiva databasen 
markeras med en gul bakgrund. 
</p>

<p>
Du kan ppna databasvxlaren frn  <b>[Fnster]</b> menyn eller genom att 
anvnda dess tangentkombination: <b>Ctrl+D</b>. 
</p>

<p>
Fr att kopiera alla filtererade partier frn en databas till en annan, drag med den vnstra 
musknappen nedtryckt frn klldatabasen till destinationsdatabasen. Du kommer d att se en  
bekrftelsedialog (om destinationsdatabasen inte r Clipbase) om partierna kan 
kopieras eller se ett felmeddelande om partierna inte kan kopieras (till exempel, 
om en vald databas inte r ppnad). 
</p>

<p>
Genom att klicka med hger musknapp p en databas visas en popup-menu fr 
denna databas, frn vilken du kan ndra databasikon eller nollstlla databasens 
filter. Du kan ocks anvnda denna meny fr att ndra orienteringen av den 
(fr att arrangera databasen vertikalt eller horisontellt) vilket r anvndbart fr 
mindre bildskrmar. 
</p>

<p><footer>(Uppdaterat: Scid 3.1, December 2001)</footer></p>
}


######################
### Email window help:

set helpTitle(W,Email) "Email-fnster"
set helpText(W,Email) {<h1>Scids Email-fnster</h1>

<h3>Email-fnstret</h3>

<p>
Scids email-fnster ger en mjlighet att hantera korrespondensschackpartier 
med email. Om du inte spelar emailschack har du inget intresse fr detta. 
Men om du spelar korrespondensschack via email kan du skicka dina 
emailmeddelanden direkt frn Scid! 
</p>

<p>
Fr att anvnda emailhanteraren flj fljande steg: 
</p>

<p>
<li>1) Skapa partierna fr din motstndare i databasen. </li>
<li>2) I emailhanteringsfnstret vlj Lgg till och skriv in detaljerna om dina motstndare: 
namn, email-adress samt antal partier i databasen. </li>
<li>3) Vlj Skicka email i emailfnstret varje gng du har lagt till drag till partierna 
och vill skicka ett meddelande. </li>
Nr du skickar ett email-meddelande genererar Scid meddelandet med partierna 
i PGN-format utan kommentarer eller variationer eftersom du vanligtvis inte vill att din 
motstndare ska se din analys. Du kan ndra meddelandet innan du skickar det fr att lgga
till villkorade drag eller annan text. 
</p>

<p>
Fr varje motstndare kan du ha obegrnsat antal partier; en eller tv r det mest vanliga. 
Observera att Scid inte kontrollerar om antalet partier ndras, s efter att ha stllt in detaljerna 
om dina motstndare var noga att undvika att ta bort partier eller sortera din databas med emailpartier 
eftersom detta kommer att ndra i partier och gra antalet partier fr varje motstndare felaktigt. 
</p>

<h3>Begrnsningar</h3>

<p>
Scid har inte nnu mjlighet att kontrollera din emailkatalog, s du mste fortfarande lgga till
dina motstndares drag till partierna manuellt. 
</p>

<h3>Konfiguration<h3>

<p>
En kopia av varje emailmeddelande som skickats av Scid sparas i filen ~/.scid/scidmail.log. 
Om du vill att de ska sparas i en annan fil behver du ndra i filen tcl/start.tcl 
och omkompilera Scid. 
</p>

<p>
Scid kan skicka emailmeddelanden genom att anvnda en SMTP server eller sendmail. 
Anvnd instllningsknappen i emailhanteraren fr att specificera vilken du vill anvnda. 
</p>

<p>
Scid lagrar motstndardetaljerna fr en databas i en fil med samma namn som databasen
med filndelsen  ".sem". 
</p>

<p><footer>(Uppdaterat: Scid 3.0, November 2001)</footer></p>
}


############################
### File Finder window help:

set helpTitle(W,Finder) "Sk filer"
set helpText(W,Finder) {<h1>Sk filer</h1>

<h3>Sk filer<h3>

<p>
Sk filer hjlper dig att hitta filer som du kan anvnda i Scid: 
databaser, PGN-filer, EPD-filer samt repetoarfiler. 
</p>

<p>
Den visar anvndbar information om varje fil, som dess storlek 
(see nedan) och datum fr senaste ndringen. Du kan ppna varje visad 
fil genom att vlja den genom att klicka en gng med vnstra musknappen. 
</p>

<h3>Ska i underkataloger</h3>

<p>
Nr du vill hitta alla filer i alla underkataloger till den aktuella katalogen, 
s markerar du i markeringsrutan fr Leta i underkataloger. Detta fr Scid att rekursivt 
genomska varje underkatalog efter filer som kan ppnas i Scid. Detta kan 
ta lng tid om det finns mnga underkataloger, s du kanske inte vill gra detta 
fr en katalog nra roten av filsystemet. Du kan avbryta filskningen genom att 
trycka p Stoppknappen. 
</p>

<h3>Filstorlekar</h3>

<p>
Betydelsen av de filstorlekar som visas beror p filtypen. 
Fr Scid-databaser och PGN-filer r det antalet partier. Fr EPD-filer 
r det antalet positioner. Fr repetoarfiler r det antalet 
(inkludera- eller exkludera)ppningar. 
</p>

<p>
Fr alla filtyper utom Scid-databaser r den angivna filstorleken en uppskattning baserad p 
de frsta 64 kilobytesen av filen, s den angivna storleken kanske inte r korrekt fr 
filer som r strre n 64 kb. Uppskattade storlekar visas med ett ungefrtecken (~) 
fr att visa att de inte r exakta. 
</p>

<p><footer>(Uppdaterat: Scid 2.7, September 2001)</footer></p>
}


#########################
### GameList window help:

set helpTitle(W,GameList) "Partilistan"
set helpText(W,GameList) {<h1>Partilistan</h1>
<p>
Partilistafnstret ger en enradig sammanfattning av varje
parti i det aktuella <term>Filtret</term> .
</p>

<h3>Navigationen i partilistan</h3>

<p>
Du kan blddra i partilistan med skjutregulatorn eller med de fyra
knapparna i nedre delen av listan .
Du kan ocks anvnda tangenterna <b>[Pos1]</b>, <b>[End]</b>, <b>[Bild i]</b>, <b>[Bild ab]</b> svl som
cursortangenterna , fr att scrolla med tangentbordet.
</p>

<p>
Du kan hitta  nsta parti i listan, som innehller en bestmd
text i Vit-, Svart-, Turnerings- eller Ortsfltet , med 
<b>Sk text</b>-inmatningsflten.
</p>

<h3>tgrder med partier i listan</h3>

<p>
Fr att ladda ett parti p listan klickar du dubbelt med
den vnstra musknappen.
Ett klick med dem mittersta musknappen visar de frsta dragen i partiet;
det r nyttigt, nr man vill se ppningen fre ppnandet av ett parti.
</p>
<p>
Den hgra musknappen ger en meny fr det utvalda partiet,
dr du kan ta bort partier (eller "ta tillbaka partier") eller utesluta partier frn 
filtret. Observera att borttagandet inte grs direkt utan det grs frst
nr databasen  <a Compact>komprimeras</a>.
</p>

<h3>Konfigurera partilistan</h3>
<p>
Fr att konfigurera partilistan, klickar du med den vnstra eller
hgra musknappen i en kolumnverskrift. Du kan ven ndra bredd,
, infoga eller ta bort samt ndra frg p varje kolumn.
</p>
<p>
Nr du bara vill ndra kolumnbredden, finns det fr detta en
tangentkombination: klickar du med nedtryckt <b>[Ctrl]</b>- (eller
<b>[Shift]</b>)-tangent med den vnstra musknappen i 
den versta delen av kolumnen  blir kolumnen mindre med den hgra
musknappen blir den bredare.
</p>

<h3>ndra storlek p partilistan</h3>
<p>
Storleken p partilistan blir sparat i alternativfilen varje gng,
som du sparar dina instllningar.
Du kan ocks nr du vill att partilistan standardmssigt ska visa 10 partier ,
frndra storleken p partilistafnstret och vlja
<b>Spara instllningar</b> i <menu>Alternativ</menu>-menyn.
</p>

<h3><name Browsing>Se partier och infoga variant</name></h3>
<p>
Kontextmenyn fr Partilistan (och ngra andra fnster, som bl a
<a Reports Opening>ppningsrapport</a>-Fnstren och listan med de
<a Tree Best>Bsta partierna</a> i <a Tree>Dragtrd</a>-Fnstret)
tillter val av parti att ladda, titta p eller infogandet av en variant.
</p>
<p>
Nr <term>Betrakta parti</term> blir valt, blir dragen i
det utvalda partiet (utan kommentarer eller varianter) visat i ett
separat fnster. Det r en nyttig metod att titta p ett annat parti
i frgrunden utan att ndra i det aktuellt laddade partiet.
</p>
<p>
Funktionen <term>Infoga variant</term> gr det mjligt att infoga 
varianter i det utvalda partiet. Scid finner den
sista mjliga tidpunkten, d det valda partiet avvek frn det aktuella
(med betraktande av dragomkastningar), och infogar denna position
som en variant. 
</p>

<p><footer>(Uppdaterat: Scid 3.2, Februari 2002)</footer></p>
}


#######################
### Import window help:

set helpTitle(W,Import) "Importfnstret"
set helpText(W,Import) {<h1>Importfnstet</h1>
<p>
Scids Importfnster mjliggr att enkelt infoga ett
parti i <a PGN>PGN-format</a> till Scid eller till ett annat 
program.
</p>
<p>
I det stora fnsteromrdet skriver du  in eller infogar partitexten i
PGN-format och i det gra omrdet nedanfr finns 
felmeddelanden eller varningar.
</p>

<h3>Bearbeta det aktuella partiet i Importfnstret</h3>
<p>
Importfnstret ger ocks en ytterligare bekvm mjlighet fr
ndringar i det aktuella partiet: du kan i det aktuella partiet i
importfnster infoga (med funktionen <b>Infoga aktuellt parti</b>), 
ndra i texten och drefter klicka p <b>Importera</b> .
</p>

<h3>PGN-markeringar i Importfnstret</h3>
<p>
Scid frvntar sig PGN-markeringar ("header tags") som
<ul>
<li> <b>[Resultat "*"]</b> </li>
</ul>
fre dragen, men du kan ocks infoga ett partifragment som
<ul>
<li> <b>1.e4 e5 2.Bc4 Bc5 3.Qh5?! Nf6?? 4.Qxf7# 1-0</b> </li>
</ul>
utan PGN-markeringar , och Scid importerar det.
</p>

<h3>Anvnda PGN-filer i Scid</h3>
<p>
Nr du vill anvnda en PGN-fil i Scid , utan att i frvg konvertera den med
<a Pgnscid>Pgnscid</a> , finns det tv mjligheter.
</p>
<p>
I det frsta alternativet kan du importera parti-filen med menyalternativet
<menu>Verktyg: Importera PGN-partier ...</menu> .
</p>
<p>
Alternativet tv vore att ppna PGN-filen direkt i Scid . Dessutom
blir PGN-filen bara ppnat fr lsande och behver mer minnesutrymme n
en jmfrbar Scid-databas, denna mjlighet r allts bara att rekommendera
fr relativt sm PGN-filer .
</p>

<p><footer>(Uppdaterat: Scid 2.5, Juni 2001)</footer></p>
}


########################
### Reports help:

set helpTitle(W,Reports) "Rapporter"
set helpText(W,Reports) {<h1>Rapporter</h1>
<p>
Hos Scid r en <term>Rapport</term> ett dokument, som innehller information om
en bestmd Position och/eller en bestmd spelare . 
Scid kan skapa tv typer av rapporter: 
ppningsrapporter och Spelarrapporter.
</p>

<h3><name Opening>ppningsrapport</name></h3>
<p>
Scid kan skapa en <term>ppningsrapport</term> , som har interessant
information om den aktuella ppningspositionen. Fr att skapa 
ppningsrapporten frvissar du dig frst att den aktuella positionen r den som
du vill ha rapporten fr,
sedan vljer du <b>ppningsrapport</b> i menyn <menu>Verktyg</menu>.
</p>
<p>
<term>ppningsrapport</term>-fnstret ger resulatet av rapporten. 
<b>Data</b>-menyn innehller alternativ,
fr att spara rapporten i Text-, HTML- eller
<a LaTeX>LaTeX</a>-format.
</p>
<p>
De frsta avsnitten i rapporten presenterar information om de
partier, som har rapportpositionen, och de drag som har spelats i denna
stllning. Du kan se om ppningen r populr , om den leder till mnga korta remier 
och med vilka dragfljder (dragomkastningar) den blir uppndd.
</p>
<p>
Avsnittet om positionella teman informerar om vanligheten av
bestmda typiska teman i rapportpartierna. Till detta blir
de frsta 20 dragen (allts de frsta 40 positionerna frn utgngsstllningen)
i varje parti unterskt. Fr att ett parti ska finnas med som har ett bestmt tema
mste detta tema minst frekomma fyra gnger inom de frsta 20 dragen i partiet. 
Drmed undviks att ett kortsiktig frekomst av ett tema (som t ex en isolerad
dambonde, som genast blir slagen) att resultatet blir missvisande.
</p>
<p>
Den sista och lngsta delen av rapporten r teoritabellerna. Nr du
sparar rapporten i en fil kan du vlja om du bara vill ha teoritabellerna, 
en kompakt rapport utan teoritabellerna eller
hela rapporten.
</p>
<p>
Nstan alla avsnitt i rapporten kan stllas in med ppningsrapport-alternativ
eller stngas av eller p.
Du kan allts anpassa rapporten, s att den bara innehller den fr dig intressanta 
informationen.
</p>
<p>
Med den mesta informationen i rapportfnstret, som r frgkodad, 
leder ett klick p vnster musknapp till en aktion. Till exempel kan du
ladda ett parti genom att klicka p det eller stlla in filtret genom att
klicka p ett positionstema s att rapporten bara innehller partier med
detta tema .
</p>

<h4>Favoriter</h4>
<p>
Med  <menu>Favoriter</menu>-menyn i rapportfnstret har du 
mjlighet att frvalta en lista av frdefinierade ppningsrapportpositioner 
och mycket enkelt skapa rapporter fr exakt dessa positioner. 
Nr du vljer "Infoga i rapport..." im Favorit-menyn
blir den aktuella stllningen vald som en srskild rapportposition. 
Du uppmanas d att ange ett namn, som d anvnds nr 
favoritrapporter skapas.
</p>
<p>
Vlj "Skapa rapport..." i Favorit-menyn, fr att skapa en rapport
fr varje vald position i den aktuella databasen . 
I ett dialogfnster kan du d ange typ och format p rapporten 
svl som den katalog, dr rapportfilerna blir sparade. 
Den passande filndelsen fr det valda utdataformatet
blir d automatiskt valt (till exempel ".html" fr HTML-format).
</p>

<h3><name Player>Spelarrapport</name></h3>
<p>
En <term>Spelarrapport</term> liknar mycket en ppningsrapport,
men innehller information om partier fr en enskild spelare med
vit eller med svart. Du kan antingen f en spelarrapport via verktygs-menyn
eller frn <a PInfo>Spelarinformations</a>-fnstret.
</p>
<p>
En Spelarrapport kan skapas antingen fr alla partier/fr en bestmd spelare
/fr en bestmd frg eller bara fr de partier, som
har ftt den aktuella stllningen p huvudfnster-brdet.
</p>

<h3>Inskrnkningar</h3>
<p>
Fr de flesta ppningsdata finns det en inskrnkning till 2000 partier,
nr ppningsposition innehller fler n 2000 partier kan
ngra resultat vara lite oklara.
</p>
<p>
Dessutom finns det en begrnsning till 500 partier fr teori-tabellerna. Nr
ppningspositionen finns i fler n 500 partier , anvnds bara de 500 partier med de 
hgsta genomsnittliga Elo-talen. Antalet partier fr
uppbyggnaden av teoritabellerna r instllningsbart.
</p>

<p><footer>(Uppdaterat: Scid 2.5, Juni 2001)</footer></p>
}


####################
### PGN window help:

set helpTitle(W,PGN) "PGN-fnster"
set helpText(W,PGN) {<h1>PGN-fnster</h1>
<p>
Scids PGN-fnster ger innehllet i det aktuella partiet i 
Standard-PGN-format. I Partitexten syns kommentarer i
{icke runda} och varianter i (runda) klamrar.
</p>

<h3>PGN-format</h3>
<p>
PGN (Portable Game Notation) r ett utbredd standard fr verfring
av schackpartier mellan datorprogram. En PGN-parti bestr
av tv delar.
Den frsta delen r PGN-markeringarna ("Header"), som innehller inmatningar ("tags") som
till exempel
<b>[White "Kasparov, Gary"]</b>
och
<b>[Resultat "1/2-1/2"]</b> .
</p>
<p>
Den andra delen innehller de egentliga partidragen i
algebraisk standardnotation (SAN) tillsammans med eventuella varianter,
<a NAGs>Kommentarsymboler</a> och <a Comment>Kommentarer</a>.
</p>

<h3>tgrder i PGN-fnster</h3>
<p>
Du kan navigera i partiet med PGN-fnstret: Med
ett klick med vnstra musknappen p ett drag gr du till detta drag, med ett
klick med vnstra musknappen i en Kommentar kan du ndra i denna.
Cursortangenterna (liksom tangenterna <b>v</b> och <b>z</b> fr
att brja respektive avsluta varianter) anvnds fr att navigera i 
partiet precis som i huvudfnstret.
</p>

<h3>Instllningar fr PGN-presentation</h3>
<p>
Menyn PGN-fnster innehller alternativ fr fnstret i PGN presentationen. 
Scid kan visa partiet i frg eller visa det som en ren text
-- se  <menu>Presentations</menu>-menyn i PGN-fnstret.
Den frgade presentationen r ltt att lsa och tillter dig att vlja drag och
kommentarer med musen, men de r mycket lngsammare n enkel text. 
Fr mycket lnga partier br du kanske vlja enkel text.
</p>
<p>
Ocks formatet fr kommentarer och varianten kan du frndra,
fr att ge en bttre versikt eller fr att lta ge ut i separata delar.
</p>
<p>
PGN-presentationsalternativ och storleken p PGN-fnstret blir alltid sparat i
konfigurationsfilen nr du vljer <b>Spara alternativ</b> i <menu>Alternativ</menu>-Menyn.
</p>

<p><footer>(Uppdaterat: Scid 3.1, December 2001)</footer></p>
}


#######################
### Piece Tracker help:

set helpTitle(W,PTracker) "Pjsspraren"
set helpText(W,PTracker) {<h1>Pjsspraren</h1>

<h3>Pjsspraren</h3>

<p>
Pjsspraren r en funktion som sprar rrelserna fr en srskild pjs fr alla partier 
i det aktuella filtret och genererar ett "fotavtryck" fr att visa hur ofta varje pjs 
har varit p en viss ruta. 
</p>

<p>
Fr att anvnda pjsspraren se frst till att filtret innehller de partier du r 
intresserad av, som partier med en viss ppningsposition eller alla partier 
dr en viss spelare hade de vita pjserna. Vlj sedan pjs att spra och 
stll in andra alternativ; som frklaras hr nedan. Efter detta tryck p 
Uppdateraknappen. 
</p>

<p>
Informationen om den sprade pjsens rrelser visas p tv stt: ett grafiskt 
"fotavtryck" och en textlista med en rad med data per ruta. 
</p>

<h3>Vlja pjs att spra</h3>

<p>
Schackpjserna visas i startpositionen nedanfr fotavtrycksdiagrammet. En enkel pjs 
(som den vita b1 springaren eller den svarta d7 bonden) 
kan vljas med den vnstra musknappen och alla pjser av samma typ och frg 
(som alla vita bnder eller bda svarts torn) kan vljas med den hgra musknappen. 
</p>

<h3>Andra pjssprarinstllningar<h3>

<p>
Dragnummeromrdet kontrollerar nr sprningen ska starta och stoppa i varje parti. 
Standardinstllningen p 1-20 (betyder att sprningen ska stoppas efter svarts drag nr 20) 
r lmpligt fr att underska ppningsteman, men (till exempel) ett omrde som 15-35 
r bttre nr man sker efter mittspelstrender. 
</p>

<p>
Det finns tv typer av statistik som pjsspraren kan generera: 
</p>

<p>
% games with move to square: visar vilken proportion av de filtrerade partierna som 
innehller ett drag av den sprade pjsen fr varje ruta. Detta r standardinstllningen 
och vanligtvis det mest passande valet. 
% time in each square: visar proportionen av tid den sprade pjsen har spenderat 
p varje ruta. 
</p>

<h3>Tips</h3>

<p>
Det finns tminstonde tre bra anvndningar av pjsspraren: ppningspreparering, 
mittspelsteman och spelarpreparering. 
</p>

<p>
Fr ppningspreparering anvnd pjsspraren med dragtrdet ppnat. Genom att flja
pjser kan du se trender i den aktuella ppningen som vanliga bondeframsttar, 
springarutposter samt var lparna oftast placeras. Du kan ven finna det 
anvndbart att stta dragantalet till att starta efter det aktuella draget i partiet, 
s att dragen fram till och med den aktuella positionen inte inkluderas i statistiken. 
</p>

<p>
Fr mittspelsteman kan pjsspraren vara anvndbar nr filtret har stllts in att 
innehlla en viss ECO-omfattning (genom en Partihuvudskning) eller kanske ett 
mnster som en vit isolerad dambonde (genom en Material/mnsterskning). 
Stt dragantalet till ngot lmpligt (som 20-40) och spra pjser fr att t ex se 
bondeframsttar i det sena mittspelet eller tidiga slutspelet. 
</p>

<p>
Fr spelarpreparering anvnd en Partihuvudskning eller Spelarinformationsfnstret
fr att hitta alla partier av en viss spelare med en viss frg. Pjsspraren kan d
anvndas fr att t ex upptcka hur sannorlikt det r att spelaren fianchettar lpare, 
gr lng rockad eller stller upp bnderna p d5 eller e5. 
</p>

<p><footer>(Uppdaterat: Scid 3.3, April 2002)</footer></p>
}

#####################
### Player List help:

set helpTitle(W,PList) "Spelarlistan"
set helpText(W,PList) {<h1>Spelarlistan</h1>

<h3>Spelarlistan</h3>

<p>
Spelarlistan visar en lista p spelarnamn i den aktuella databasen. 
Genom att vlja en spelare ppnas spelarinfofnstret fr att visa mer detaljerad
information om den spelaren. 
</p>

<p>
Fem kolumner som syns visar varje spelares namn, Hgsta uppndda ELO, 
antal spelade partier samt ret fr deras ldsta och nyaste parti. 
Klicka p valfri kolumntitel p toppen av listan fr att sortera listan efter den
kolumnen. 
</p>

<p>
Kontrollerna nedanfr listan lter dig filtrera listinnehllet. 
Du kan ndra den maximala liststorleken, skriva in ett VERSAL-/gemenoknsligt spelarnamn 
prefix (som "ada" fr att ska efter "Adams"), 
och begrnsa Elo-omfattningen och antalet spelade partier. 
</p>

<p><footer>(Uppdaterat: Scid 3.4, August 2002)</footer></p>
}

#####################
### Player Info help:

set helpTitle(W,PInfo) "Spelarinfo"
set helpText(W,PInfo) {<h1>Spelarinfo</h1>

<h3>Spelarinfofnstret</h3>

<p>
Spelarinformationsfnstret skapas eller uppdateras nr du klickar med den vnstra 
musknappen p ett spelarnamn i spelinformationsytan (nedanfr schackbrdet) 
eller i korstabellfnstret. 
</p>

<p>
Den visar frhoppningsvis anvndbar information om spelaren, inklusive deras framgng 
med vit och svart, favoritppningar (med ECO-kod), och ratinghistoria. 
</p>

<p>
Alla procenttal som visas r en frvntad pong (mtt p framgng), frn den spelarens 
perspektiv -- s hgre r alltid bttre fr spelaren oavsett om de r vit eller svart. 
</p>

<p>
Du kan se spelarens ratinghistoria i en tabell genom att trycka p  Ratingtabellknappen. 
</p>

<p>
Varje antal skrivet i rtt kan klickas med den vnstra musknappen fr att stlla in filtret fr de
partier den representerar. 
</p>

<p><footer>(Uppdaterat: Scid 2.5, Juni 2001)</footer></p>
}


###########################
### Repertoire editor help:

set helpTitle(W,Repertoire) "Repetoar-Editor"
set helpText(W,Repertoire) {<h1>Repetoar-Editor</h1>

<h3>Repertoar-Editor</h3>

<p>
Repetoar-editorn lter dig skapa, se och ndra repetoarfiler. 
En repetoarfil (*.sor) r en lista p de ppningspositioner du vill n eller 
frsker undvika, och du kan anvnda den fr att hantera dina 
schackppningspreferenser men den gr ven att anvnda fr att ska i
databaser med Scid. 
</p>

<h3>Repetoargrupper och linjer</h3>

<p>
En repetoar innehller tv typer av element: grupper och linjer. 
Grupper r inte en del av din repetoar; de anvnds bara fr att 
strukturera den p samma stt som kataloger ger struktur till filerna p en hrddisk,CD,DVD
eller diskett. 
</p>

<p>
Linjer i en repetoar finns i tv typer: Inkludera linjer, som representerar de 
ppningspositioner du r intereserad av och frsker uppn medan exkluderalinjer,som r
de du inte r intresserade av att spela och frsker undvika. 
Till exempel, om du spelar en accepterad damgambit (QGA) dvs 1.d4 d5 2.c4 dxc4 som svart
och du spelar alla drag efter 3.e4 utom 3...Sf6, mste du ha 1.d4 d5 2.c4 dxc4 3.e4 som en 
Inkluderalinje och 1.d4 d5 2.c4 dxc4 3.e4 Nf6 som en Exkluderalinje. 
</p>

<h3>Kommentarer och anteckningar</h3>

<p>
Varje grupp eller linje kan ha kommentarer anknytna till sig. 
Det finns tv typer: korta (enrads-) kommentarer som syns med rtt i repetoarhierarkin brevid 
dragen i en grupp eller linje medan lnga (flerradiga-) kommentarer bara visas nr gruppen  
eller linjen vljs. 
</p>

<p>

<h3>Anvnda Repetoar-editorn</h3>

<p>
Den vnstra sidan av fnstret visar repetoarhierarkin. 
Du kan klicka p folderikoner fr att expandera och krympa grupper, 
och klicka p dragen i en  grupp eller linje fr att vlja den och se dess kommentarer. 
Inkludelinjer visas med bl accepteraikoner medan exkluderalinjer visas med rda kors. 
</p>

<p>
Om en linje eller grupp har en kort kommentar, visas den efter dragen. 
Om den har en lng kommentar indikeras detta med ** efter dragen. 
Grupperna har en siffra inom parentes efter sina drag som visar det antal inkludera- och 
excluderalinjer de innehller. 
</p>

<p>
Genom att klicka med hger musknapp p en grupp eller linje ger det en meny med funktioner
fr att ta bort den eller frndra dess status. 
</p>

<h3>Den hgra sidan av fnstret innehller tre delar.</h3>

<p> 
Den frsta delen r en lista p dragen i den aktuellt valda linjen eller gruppen. 
Du kan klicka med vnster musknapp p den fr att klistra in dragen i Importfnstret, 
vilket r anvndbart fr att lta det aktuella partiet starta med en linje i repetoaren. 
Den andra delen innehller en kort kommentar fr linjen eller gruppen, 
och den tredje delen innehller dess lnga kommentar. 
</p>

<h3>Lgga till grupper och linjer till repetoaren</h3>

<p>
Fr att lgga till en linje eller grupp till fnstret mata bara in dragen p schackbrdet i 
huvudfnstret och anvnd sedan <b>[Redigera]</b> menyn i Repetoar-editorn fr att lgga till det 
som en grupp, inkluderalinje eller excluderalinje. 
</p>

<p>
Fr att ta bort en grupp eller linje klicka med hger musknapp p den och vlj det lmpliga 
kommandot frn menyn som visas. 
</p>

<h3>Ska databaser med repetoarfiler</h3>

<p>
Repetoar-editorns <b>[Sk]</b> meny lter dig ska den aktuella databasen med repetoaren. 
Varje parti blir genomskt efter positionerna i repetoaren och blir bara matchade i skningen
om den djupaste repetoarpositionen som hittas r en inkluderalinje. 
</p>

<p>
Du kan vlja att ska genom att anvnda hela repetoaren eller bara de visade linjerna. 
Att ska bara de visade linjerna r anvndbart nr du bara vill anvnda en del av repetoaren. 
Till exempel kan en repetoar ha tv huvudgrupper , 
en fr 1.e4 och en fr 1.d4. Om du r bara interesserad av 1.e4 linjerna, 
krymp bara 1.d4 gruppen och sk sedan bara de visade linjerna. 
</p>

<h3>Extra tips</h3>

<p>
En repetoarfil r bra fr att hitta nya partier i dina ppningssystem. 
Till exempel varje gng du fr en ny PGN-fil att lgga till till din huvuddatabas 
(som den excellenta vecko PGN-filen frn The Week In Chess), 
ppna bara PGN-filen i Scid och gr en repetoarskning. 
Sedan kan du blddra i de filtrerade partierna fr att se alla de spelade partierna som finns i 
din repetoar. 
</p>

<p>
Du kan vilja behlla tv repertoarfiler: en fr svart och en fr vit, 
s att du kan ska med varje fil separat. 
</p>

<p>
En repertoarfil kan ppnas frn kommandoraden, till exempel: 
scid minbas vit.sor 
</p>

<p>
Du kan ndra en repetoarfil (*.sor) i valfri texteditor, men var noga att bevara dess format 
s att den frblir laddbar eller skbar i Scid. 
</p>

<p><footer>(Uppdaterat: Scid 2.6, Augusti 2001)</footer></p>
}


##################################
### Tournament Finder window help:

set helpTitle(W,Tmt) "Sk turneringar"
set helpText(W,Tmt) {<h1>Sk turneringar</h1>

<h3>Sk turneringar</h3>

<p>
Sk turneringar lter dig hitta turneringar i den aktuella databasen. 
Den sker i alla databasepartier och samlar data om de funna turneringarna. 
Observera att tv partier anses vara i samma turnering om de har 
samma Evenemangsmarkering , samma Ortsmarkering och spelades inom tre mnader. 
</p>

<p>
Du kan begrnsa listan p turneringar med antalet spelare och partier, 
datum, genomsnittling Elo rating och land genom att ndra i flten nedanfr turneringslistan 
och sedan trycka p Uppdateraknappen. 
</p>

<p>
Den visade listan kan sorteras efter datum,antal spelare, antal partier, 
genomsnittlig Elo , Ort, Evenemang eller Namn . Vlj kategori 
i <b>[Sorterings]</b> menyn eller klicka p en kolumntitel fr att frndra i sorteringsfltet. 
</p>

<p>
Fr att ladda det frsta partiet i en visad turnering klicka bara med vnster musknapp 
nr dess rad markerats. Detta kommer ocks att uppdatera Korstabellfnstret om det
r ppnat. 
Om du istllet trycker hger musknapp kommer partiet att laddas och korstabellfnstret
blir ppnat ven om det r stngt. 
</p>

<p>
Fr att snabba upp turneringsskningar r det en bra id att vlja en ganska litet omrde 
(som ngra r) eller vlja ett speciellt land (efter dess trebokstavs standardkod). 
Genom detta minskas kraftigt det antal partier Scid mste g igenom fr att bilda 
turneringar av partierna i databasen. 
</p>

<p><footer>(Uppdaterat: Scid 3.3, April 2002)</footer></p>
}


####################
### Tree window help:

set helpTitle(W,Tree) "Trdfnstret"
set helpText(W,Tree) {<h1>Trdfnstret</h1>

<h3>Trdfnstret</h3>

<p>
Trdfnstret visar information om alla drag som gjorts frn den aktuella 
positionen i partier i databasen. I trdmoden uppdateras trdfnstret 
automatiskt nr brdet p huvudfnstret ndras. Detta kan vara lngsamt 
fr stora databaser. 
</p>

<p>
Observera att nr trdfnstret uppdateras nollstlls filtret och bara de partier 
som innehller den aktuella positionen inkluderas. 
</p>

<p>
Genom att trycka p vnster musknapp p ett drag i trdfnstret s adderas detta drag
till partiet. 
</p>

<h3>Trdfnstrets innehll</h3>

<p>
Trdfnstret visar ECO koden (om den finns), frekvens (bde som antal 
partier och en procentsats) och vrderingen av varje drag. 
Vrderingen berknas alltid frn vits perspektiv, 
s 100% betyder att vit vinner alla partier  
medan 0% betyder att svart vinner alla partier. 
</p>

<p>
Dragen i trdfnstret kan sorteras efter drag (alfabetiskt), 
ECO-kod, frekvens, eller vrdering. Du kan ndra sorteringsmetod i 
<b>[Sorterings]</b> menyn. 
</p>

<h3>Bsta partier</h3>

<p>
Trdfnstret har ett filmenykommando och knapp fr att ppna de 
Bsta partierna, vilka visar en lista p de hgst rankade partierna i 
den aktuellt visade trdgrenen. Partierna listas efter genomsnittlig 
rating och du kan begrnsa listan till att visa partier med ett speciellt 
resultat. 
</p>

<h3>Trdgraffnstret</h3>

<p>
Trdfnsterknapparna inkluderar en knapp markerad Graph som ger 
en grafisk visning av det relativa utfallet fr varje drag frn den aktuella 
positionen. Alla drag som har spelat minst 1% och minst 5 gnger visas. 
Procentsiffror r alltid frn vits perspektiv ven nr det r svarts drag. 
</p>

<p>
I trdgrafen plottas en rd linje fr att visa genomsnittet av alla partier 
frn den aktuella positionen och ytan mellan 50-55% (som de flesta 
standardppningar frvntas f) r markerad med bltt fr att assistera 
jmfrandet av drag. Observera att vit vanligtvis vinner cirka 55% av 
schackmstarpartierna. 
</p>

<h3>Lsa trdfnstret</h3>

<p>
Lsknappen i trdfnstret kan anvndas fr att lsa trdet till den 
aktuella databasen. Detta betyder att trdet kommer att fortstta att
anvnda denna databas ven nr du byter till en annan ppnad databas. 
Detta r anvndbart om du viss anvnda en stor databas som en referens 
nr du spelar igenom ett parti i en annan databas: 
bara ppna trdet i referensdatabasen, ls det och vxla sedan till
den andra databasen. 
</p>

<h3>Trning</h3>

<p>
Nr Trningscheckrutan i trdfnstret vljs kommer Scid  
slumpmssigt att gra ett drag varje gng du lgger till ett drag till partiet. 
Draget som Scid vljer beror p databasstatistiken, s ett drag som spelats
i 80% av databaspartierna kommer att vljas av Scid med 80% 
sannorlikhet. Att starta denna funktion och sedan dlja (eller ikonifiera)  
trdfnstret och spela ppningar mot en stor databas r ett bra stt att
testa din kunskap om ppningsrepetoaren. 
</p>

<h3>Anvnda Trdet med ppnade EPD-filer</h3>

<p>
Fr varje ppnad EPD-fil kommer trdfnstret att innehlla en extra kolumn 
som visar en kort (fem tecken) sammanfattning av innehllet i 
EPD-filen fr varje position som ns frn de listade dragen. 
</p>

<p>
Sammanfattningen kan vara en vrdering, en ppnings ECO-kod eller ett freslaget drag; 
det kommer att vara innehllet i det frsta EPD-fltet hittat frn fljande lista: 
ce, eco, nic, pv, pm, bm, id
eller bara det frsta EPD-fltet om ingen av de ovan nmnda finns. 
</p>

<p>
Fr en beskrivning av EPD flten, se EPD-fil hjlpsidan. 
Observera att om sammanfattningen r av ce fltet, 
visas det som en vrdering i bnder frn vits perspektiv
(istllet fr som em vrdering i hundradelsbnder frn perspektivet av sidan vid draget, 
som det sparas i EPD-filen) fr att frbttra lsbarheten. 
</p>

<h3>Cache fr snabbare resultat</h3>

<p>
Scid har en cache fr trdskresultat fr de positioner med de 
mest matchande partierna. Om du gr framt och bakt i ett parti 
i trdmod kommer du att se att trdfnstret uppdateras  nstan omedelbart 
nr positionen som sks finns i cachen. 
</p>

<p>
Trdfnstret har ett filmenykommando kallat Spara Cache. 
Nr du vljer detta kommer det aktuella innehllet i trdcachen att sparas till 
en fil (med filndelsen * .stc) fr att snabba upp framtida anvndning av 
Trdmoden med denna databas. 
</p>

<p>
Fyll cache filkommandot i filmenyn fr trdfnstret fyller cachefilen med data fr 
mnga ppningspositioner. Det gr en trdskning fr omkring 100 av de mest 
vanliga ppningspositionerna och sparar sedan cachefilen. 
</p>

<p>
Observera att en trdcachefil (*.stc) r helt verfldig; 
du kan ta bort den utan att pverka databasen, 
och den tas ven bort av Scid nr en tgrd grs som kan gra den icke uppdaterad 
som till exempel att lgga till eller erstta ett parti eller sortera databasen. 
</p>

<p><footer>(Uppdaterat: Scid 3.0, November 2001)</footer></p>
}


################
### Graphs help:

set helpTitle(W,Graphs) "Graffnster"
set helpText(W,Graphs) {<h1>Graffnster</h1>

<h3>Graffnster</h3>

<p>
Scid har ett antal fnster som visar information grafiskt. 
De frklaras hr nedanfr. 
</p>

<h3>Filtergraffnstret</h3>

<p>
Filtergraffnstret visar trender efter datum eller efter Elo-rating fr 
partierna i det aktuella filtret jmfrt med hela databasen. 
Till exempel r det anvndbart nr trdet r ppnat som ett redskap 
fr att visa hur den aktuella ppningspositionen har frndrats i popularitet 
p senare r eller tiotal r eller om det r speciellt populrt bland hgre-rankade 
spelare som stormstare. Varje pong p grafen representerar antalet partier i 
filtret per 1000 partier i hela databasen, 
fr ett speciellt dator eller ett visst Eloratingomrde. 
</p>

<p>
Nr filtergrafen plottas efter rating anvnder Scid den genomsnittliga 
(aritmetiskt medelvrde) ratingen fr varje parti. Uppskattade ratings 
(som de som finns i stavningsfilen) anvnds inte. Om en spelare i ett 
parti har en rating men motstndaren inte har det, 
antas motstndaren ha samma upp till 2200. 
Till exempel, om en spelare r rankad 2500 och motstndaren inte 
har en rating blir genomsnittsratingen (2500+2200)/2=2350. 
</p>

<h3>Ratinggraffnstret</h3>

<p>
Ratinggraffnstret visar ratinghistorian fr en spelare eller tv 
spelare i det aktuella partiet. Du kan producera grafen fr en spelare 
genom att trycka p Ratinggrafknappen i spelarinformationsfnstret 
eller skapa den fr de tv spelarna i de aktuella partiet genom att vlja Ratinggraf 
frn <b>[Verktygs]</b> menyn. 
</p>

<h3>Vrderingsgraffnstret</h3>

<p>
Vrderingsgraffnstret visar de numeriska vrderingarna (pong) 
sparade i kommentarerna till det aktuella partiet som en graf. 
Du kan klicka med vnster musknapp ngonstans i vrderingsgrafen fr att g till
motsvarande position i partiet. 
</p>

<p>
Tv typer av vrderingskommentarer finns: dessa produceras av Scids analysfnster
(som har formatet 1.e4 {"+0.25 ...."} r alltid vrderade frn vits perspektiv) 
och de som produceras av Craftys analyskommando 
(som har formatet 1.e4 ({9:+0.25} ....) och ocks r vrderade frn vits perspektiv). 
</p>

<h3>Trdgraffnstret</h3>

<p>
Trdgraffnstret finns i trdfnstret. Det visar resultatet av de mest populra
dragen frn den aktuella positionen. 
Mer information finns i avsnittet om trdfnster. 
</p>

<p><footer>(Uppdaterat: Scid 3.3, April 2002)</footer></p>
}


####################
### Tablebases help:

set helpTitle(W,TB) "Slutspelstabeller"
set helpText(W,TB) {<h1>Slutspelstabeller</h1>

<h3>Slutspelsdatabaser</h3>

<p>
En slutspelsdatabas r en fil som innehller den perfekta resultatinformationen om alla positioner 
med ett visst material , som Kung och Torn mot Kung och Bonde. 
Slutspelstabeller fr alla materiella situationer med upp till fem pjser (inklusive Kungar) 
har genererats och ngra enkla 6-pjsslutspelstabeller finns ocks tillgngliga. 
</p>

<p>
Scid kan anvnda slutspelsdatabaser i Nalimov-format som anvnds av mnga nyare schackmotorer. 
Dessa slutar ofta med ndelserna .nbw.emd eller .nbb.emd. Alla 3-, 4- och 5-pjs 
Nalimov-slutspelstabeller kan anvndas i Scid. 
</p>

<h3>Anvnda slutspelstabeller i Scid</h3>

<p>
Fr att anvnda slutspelstabeller i Scid specificera bara deras kataloger
genom att vlja Slutspelstabellkatalog i <b>[Alternativ]</b> menyn. Du kan vlja upp till 
4 kataloger dr dina slutspelstabeller r sparade. Du kan trycka p ... 
knappen till hger om en inmatning fr att vlja en katalog fr att specificera att
katalogen till den ska anvndas. 
</p>

<p>
Nr en position som hittats i slutspelstabellen har ntts visar partiinformationsytan 
nedanfr schackbrdet slutspelstabellinformation. 
Du kan konfigurera mngden information som visas genom att klicka med den hgra
musknappen i den eller vlja Partiinformation frn  <b>[Alternativ]</b> menyn. 
Genom att vlja "Resultat och bsta drag"  ges den mest anvndbara informationen, 
men det r ofta mycket lngsammare n "Bara resultat". 
</p>

<h3>Slutspelstabellfnster</h3>

<p>
Du kan f nnu mer slutspelstabellinformation om den aktuella positionen genom att 
ppna Slutspelstabellfnstet i ([Fnster] menyn, tangentkombination: <b>Ctrl+Shift+=</b>). 
Detta fnster visar resultatet med perfekt spel av alla legala drag frn den 
aktuella positionen. 
</p>

<p>
Fnstret har tv huvudsakliga delar. Sammanfattningsdelen (till vnster) visar 
vilka slutspelstabeller Scid har hittat p din dator och en sammanfattning fr varje 
slutspelstabell. Resultatdelen (till hger) visar optimala resultat fr alla drag frn den
aktuella positionen som visas i huvudfnstret. 
</p>

<h3>Sammanfattningsdelen</h3>

<p>
Den vre delen av sammanfattningsdelen lter dig vlja en speciell slutspelstabell. 
De som du har tillgngliga visas i bltt och de slutspelstabeller som inte finns visas
i grtt. Den nedre delen av sammanfattningsdelen visar sammanfattningsinformation
fr den valda slutspelstabellen. 
(Alla slutspelstabeller har inte en sammanfattning i Scid) 
</p>

<p>
Sammanfattningen inkluderar frekvensen(hur mnga partier per million som nr 
en position med detta material berknat frn en databas med mer n 
600000 msterpartier), en lngsta matt fr en sida samt antalet 
msesidiga (eller "reciprokala") dragtvng. Ett msesidigt dragtvng r en 
position dr vit vid draget fr remi och svart vid draget frlorar eller dr 
vit vid draget frlorar och svart vid draget fr remi eller dr den som r vid draget
frlorar. 
</p>

<p>
Fr ngra slutspelstabeller med msesidiga dragtvng visar sammanfattningen 
ocks en lista p alla dragtvngspositioner eller ett urval av dem. En fullstndig
lista p alla slutspelstabeller r inte mjlig eftersom vissa slutspelstabeller har 
tusentals msesidiga dragtvng. 
</p>

<p>
Du kan stta upp en slumpmssig position frn den valda slutspelsdatabasen
genom att trycka p Slumpknappen. 
</p>

<h3>Resultatdelen</h3>

<p>
Resultatdelen uppdateras nr schackbrdet i huvudfnstret ndras. 
Den frsta linjen visar hur mnga drag vinner (+), ger remi (=), frlorar (-), 
eller har ett oknt resultat (?). Resten av resultatdelen ger en mer detaljerad 
lista p resultat, rangordnande dem frn kortaste till lngsta matt, sedan remier, 
sedan lngsta till kortaste frluster. Alla avstnd r till matt. 
</p>

<h3>Resultatbrdet</h3>

<p>
I en slutspelstabellposition r det ofta anvndbart att se vad 
slutspelstabellresultatet skulle vara om alla pjser i den aktuella
positionen var p sina aktuella rutor men en srskild pjs flyttas ngon 
annanstans. Till exempel kan du vilja bestmma hur nra en kung mste vara
till en fribonde fr att vinna eller f remi i en srskild position. I slutspelsbcker
kallas denna information ofta vinstzonen eller remizonen fr en pjs i en position. 
</p>

<p>
Du kan hitta denna information i Scid genom att trycka p knappen med en
bild p schackbrdet fr att visa resultatbrdet i slutspelstabellfnstret. 
Nr du trycker p vnster musknapp p ngon av pjserna p brdet visas 
en symbol i varje tom ruta visande vad slutspelstabellresultatet blir 
(med samma sida vid draget som i den aktuella positionen p huvudfnstret) 
om den valda pjsen var p den rutan. 
</p>

<p>
Det finns fem olika symboler en ruta kan ha: en vit # betyder att vit vinner; 
ett svart  # betyder att svart vinner; ett bltt = betyder att positionen r remi; 
ett rtt X betyder  att positionen r illegal (eftersom kungarna str brevid 
varandra eller sidan vid draget ger schack); och ett rtt ? betyder att resultatet 
r oknt beroende p att den ndvndiga slutspelstabellen inte finns tillgnglig. 
</p>

<h3>F tillgng till slutspelstabellsfiler</h3>

<p>
Se avsnittet om relaterade lnkar fr hjlp med att hitta slutspelstabeller p Internet. 
</p>

<p><footer>(Uppdaterat: Scid 3.4, September 2002)</footer></p>
}


###################
### Bookmarks help:

set helpTitle(W,Bookmarks) "Bokmrken"
set helpText(W,Bookmarks) {<h1>Bokmrken</h1>
<p>
Scid lter dig bokmrka viktiga partier fr enkel framtida referens. 
Bokmrkesmenyn finns i <b>[Arkiv]</b> menyn och i verktygsraden och har
tangentkombinationen: 
<b>Ctrl+B</b> . 
</p>

<p>
Nr du vljer ett bokmrkt parti frn Bokmrkesmenyn 
kommer Scid att ppna dess databas om det r ndvndigt, hitta partiet, 
och g till den schackposition som var nr den bokmrktes. 
</p>

<p>
Bara partier i en Scidformaterad databas (inte en PGN-fil eller Clipbasen) 
kan bokmrkas. 
</p>

<p>
Om databasen till ett bokmrkt parti sorteras eller kompimeras kan 
bokmrkesdetaljerna bli inaktuella. Nr det hnder kommer Scid att
ska igenom databasen efter det bst matchande partiet 
(jmfr Spelare, Ort, Resultat, r etc) nr bokmrket vljs, 
s att det bokmrkta partiet fortfarande blir laddat. Men om 
detaljerna i det bokmrkta partiet ndras r det mjligt att ett annat 
parti kommer att matcha bokmrkesdetaljerna bttre och laddas istllet. 
S det r en bra id att om-bokmrka ett parti om du ndrar i dess 
Spelare, Ort, Resultat, Runda eller r. 
</p>

<h3>ndra bokmrken</h3>
<p>
Med bokmrkeseditorn kan du ndra menytexten som visas fr varje 
bokmrkt parti och lgga till kataloger fr att kategorisera bokmrken. 
</p>
<h3>Tips</h3>
<p>
Du kan anvnda bokmrken fr snabb tillgng till databaser du ofta 
anvnder genom att bokmrka ett parti frn varje databas. En annan 
god anvndning fr bokmrken r att lgga till viktiga partier du hittar
nr du studerar en viss schackppning. 
</p>

<p>
Bokmrkesmenyn innehller tv alternativ fr att kontrollera visandet av 
bokmrkeskataloger : de kan visas som undermenyer 
(anvndbart nr det finns mnga bokmrken) eller som en enkel lista. 
</p>

<p><footer>(Uppdaterat: Scid 3.0, November 2001)</footer></p>
}


##############################
### Command-line options help:

set helpTitle(W,Cmdline) "Kommandorad-alternativ"
set helpText(W,Cmdline) {<h1>Kommandorad-alternativ</h1>
<h3>Kommandorad-alternativ</h3>
<p>
Nr du startar Scid frn ett grnsnitt eller consol, 
finns det kommandorad-alternativ du kan specificera. 
Scid-format databaser (med eller utan en filndelse som <b>"*.si3"</b>) 
och PGN-filer att ppna kan anges, till exempel: 
<b>scid minbas nyapartier.pgn</b> 
kommer att starta Scid och ppna Scid-databasen <b>mybase</b> och  
PGN-filen <b>nyapartier.pgn</b>. 
</p>

<p>
Det finns ocks optionella argument fr att kontrollera vilka filer Scid 
ska leta efter och anvnda nr det startar.
Du kan stnga av anvndningen av slutspelstabeller med <b>-xtb</b> (eller <b>-xt</b>) alternativet, 
undvika att ladda in ECO ppningsklassificeringsfiler med <b>-xeco</b> eller <b>-xe</b>, 
och undvika att ladda in stavningsfilen med -xspell eller -xs.
Utver detta ger alternativet <b>-fast</b> eller <b>-f</b> alla dessa tre saker , 
s <b>scid -f</b> r samma som <b>scid -xeco -xspell -xtb</b>. 
</p>

(Updaterat: Scid 3.1, November 2001)


}


####################
### Compaction help:

set helpTitle(W,Compact) "Komprimera databas"
set helpText(W,Compact) {<h1>Komprimera databas</h1>
<p>
<h3>Komprimera databas</h3>

<p>
Att komprimera en databas r en speciell typ av underhll 
som hller en databas s liten och effektiv som mjligt. 
Att komprimera en databas betyder att ta bort allt oanvnt
utrymme i dess filer . Det finns tv typer: namnfils- och partifilskomprimering. 
</p>

<h3>Namnfilskomprimering</h3>

<p>
ver tiden kan du finna att databasen brjar att innehlla ett antal spelarnamn, 
evenemangs-, orts- eller rundenamn som inte lngre anvnds i ngot parti. 
Detta hnder ofta efter att du stavningskontrollerar namn. 
De oanvnda namnen slsar utrymme i namnfilen och kan sakta mer namnskningar. 
Namnfilskomprimering tar bort alla namn som inte anvnds i ngot parti. 
</p>

<h3>Partifilskomprimering</h3>

<p>
Nr ett parti erstts eller tas bort lmnas oanvnt utrymme i partifilen
(den strsta av de tre filerna i en Scid databas). 
Partifilskomprimering tar bort allt oanvnt utrymme och lmnar inga borttagna partier
i databasen. Observera att denna operation r slutgiltig:
efter komprimering r de bortagna partierna borta fr evigt! 
</p>

<p>
Partifilskomprimering rekommenderas ocks efter att ha sorterat en databas fr att
hlla ordningen p partifilen konsistent med den sorterade indexfilen. 
</p>

<p><footer>(Uppdaterat: Scid 2.5, Juni 2001)</footer></p>
}


####################################
### Database maintenance tools help:

set helpTitle(W,Maintenance) "Underhll databas"
set helpText(W,Maintenance) {<h1>Underhll databas</h1>

<h3>Underhll databas</h3>
<p>
Scid har ett antal redskap fr att underhlla databaser, 
tillgngliga frn Scids Arkivmeny. Databaskomprimeringen 
och sorteringsfunktionerna frklaras i separata avsnitt. 
</p>


<h3>Underhllsfnstret</h3>
<p>
Det mesta av Scids databasunderhll kan gras frn underhllsfnstret 
, som kan ppnas frn 
<b>[Arkiv: Underhll]</b> eller <b>[Fnster]</b> menyerna eller med tangentkombinationen:
<b>Ctrl+M</b>. 
</p>

<p>
Du kan anvnda detta fnster fr att underhlla partimarkeringar, 
stavningskontrollera namn, komprimera eller sortera en databas. 
Observera att alla operationer som inte finns tillgngliga fr den aktuella
databasen (till exempel, p grund av att den r skrivskyddad eller en 
PGN-fil) visas med gr frg. 
</p>

<h3>Ta bort dubbla partier</h3>
<p>
I <b>[Arkiv: Underhll]</b> menyn finns ett kommando <b>[Ta bort dubbla partier...]</b> 
fr att detektera extra kopior (dubbletter) av partier i databasen. 
Detta kommando hittar alla dubbletter och fr varje par markeras det kortare 
partiet fr borttagning medan det lngre partiet lmnas kvar. 
Tv partier anses vara dubbletter om spelarna 
(och alla andra markeringar som du kan specificera) matchar exakt.
</p>

<p>
Om du specificerar  "samma drag" alternativet mste varje par av partier ha 
samma drag upp till lngden av det kortare partiet 
(eller upp till drag 60) fr att vara dubbletter. 
</p>

<p>
Nr du har tagit bort dubbletter r det en bra id att kontrollera att 
varje borttaget parti verkligen r en kopia av ett annat parti. Du kan gra detta
enkelt om du valde "Stt filter till alla borttagna partier" alternativet i ta bort
dubbletter dialogrutan. Filtret kommer d att innehlla alla borttagna partier. 
Du kan blddra genom dem  (med <b>p</b> och <b>n</b> tangenterna) med kontrollera 
dubbla partier fnstret  (finns i underhllsmenyn eller med tangentkombinationen <b>Ctrl+Shift+T</b>) 
fr att verifiera att varje borttaget parti r borttaget fr att det faktiskt r en dubblett av ett
annat parti. 
</p>

<h3>ndra spelar, evenemang, ort och rundenamn</h3>

<p>
Du kan finna felstavade namn i din databas och vilja korrigera dem. 
Du kan gra detta i Scid med Namneditorfnstret 
(tangentkombination: <b>Ctrl+Shift+N</b>), som finns i <b>[Arkiv: Underhll]</b>
undermenyn. 
</p>

<p>
Varje unikt namn lagras bara en gng i namnfilen, s om du ndrar ett namn s
ndrar du alla frekomster av det. 
</p>
<h3>Stavningskontrollera namn</h3>
<p>
Scid kommer med en stavningskontrollfil med namnet spelling.ssp, 
fr att korrigera spelar-, evenemang-, orts- och rundenamn. 
Scid kommer att frska ladda stavningskontrollfilen nr det startar; 
om den inte laddas in d kan du ladda in den frn <b>[Alternativ]</b> menyn. 
</p>

<p>
Nr stavningskontrollfilen r laddad kan du anvnda den p en Scid databas med 
stavningskontrollkommandorna i  <b>[Arkiv: Underhll]</b> menyn eller frn 
underhllsfnstret. 
</p>

<p>
Nr du stavningskontrollerar en databas producerar Scid en lista p korrektioner som du 
kan ndra i innan ngra ndringar grs, s att du kan ta bort alla korrektioner du inte
vill gra.
</p>

<p>
Stavningskontroll r speciellt viktigt fr att standardisera en databas s att alla frekomster
av en speciell spelare stavas likadant. Till exampel, med standard stavningskontrollfilen, 
s korrigeras namnen "Kramnik,V.", "Vladimir Kramnik", och "V. Kramnik" till "Kramnik, Vladimir". 
</p>

<p>
Stavningskontrollfilen har en ytterligare anvndning: nr den laddas anvnds dess spelardata
fr att frbttra spelarinformationsfnstret och korttabellfnstret: : du kommer att se FIDE 
mstartitlar som (gm = Internationell Stormstare, im = Internationell Mstare, etc) och 
landsinformation fr spelarna listas i stavningskontrollfilen. 
ver 6500 starka spelare frn historien och nutiden finns listade i <b>spelling.ssp</b> filen som 
kommer med Scid. 
</p>

<h3>Lgga till Elo rating till partier</h3>

<p>
"Lgg till Elo rating..." knappen i underhllsfnstret fr Scid att ska igenom den aktuella 
databasen efter partier dr en spelare inte har en rating, men dr stavningskontrollfilen 
har en Elo rating listad fr denna spelare vid tiden fr partiet. Scid kommer att lgga till all 
sdan rating automatiskt. Detta r mycket anvndbart fr en databas med mstarpartier 
som har f ratings.
</p>

<p>
Stavningskontrollfilen "spelling.ssp" som kommer med Scid innehller inte Elo rating 
informationen som behvs fr denna funktion, men en strre variant av den kallad "ratings.ssp" 
finns p Scids webbsajt. 
</p>

<h3>Rensaren</h3>
<p>
Rensaren (som finns i Underhllsfnstret) r ett redskap fr att gra ett antal 
underhllsarbeten p en databas med en tgrd. Du kan vlja vilka arbeten du vill 
gra och Scid kommer att utfra dem p den aktuella databasen utan att krva
anvndarinteraktion. Detta r speciallt anvndbart fr underhll av stora databaser. 
</p>

<h3>Stlla in att databasen ska ladda in ett parti automatiskt</h3>
<p>
Vid automatiskt laddande av ett parti i en databas s laddas detta parti in nr denna 
databas ppnas. Fr att ndra det automatiska laddandet av partiet i databasen, 
anvnd "Autoladda parti nummer..." knappen. Om du alltid vill att det sista partiet i en 
databas ska ppnas  (oavsett om hur mnga partier som finns i databasen),
s stll in det till ett hgt nummer som 9999999. 
</p>

<p><footer>(Uppdaterat: Scid 3.1, December 2001)</footer></p>
}


##############
### ECO guide:

set helpTitle(W,ECO) "ECO"
set helpText(W,ECO) {<h1>ECO-ppningsklassificering</h1>

<h3>ECO ppningsklassificering</h3>
<p>
Scid kan klassificera schackpartier enligt ECO 
(Encyclopedia of Chess Openings) schackppningsklassificering. 
En standard ECO-kod bestr av en bokstav (A-E) fljt av tv siffror, 
s det finns 500 distinkta standard ECO-coder. 
</p>

<h3>Scids utvidgningar av ECOs ppningsklassificering</h3>

<p>
ECO klassificeringen r vldigt begrnsad och inte tillrcklig fr moderna partier:
ngra av de 500 koderna syns nstan aldrig, medan ngra syns vldigt ofta. 
Fr att frbttra denna situation tillter Scid en optionell utkning av de grundlggande 
ECO-koderna: varje kod kan bli utkad med en bokstav (a-z) som dessutom kan utkas
ytterligare (med en siffra frn 1-4)  men det anvnds inte nnu i standard Scid ECO-filen . 
S en utkad Scid ECO-kod ser ut antingen som "A41e" eller som "E99b2". 
Mnga av de mest vanliga ECO-koderna som finns i moderna mstarpartier har
utkningar definerade i Scids ECO-fil. 
</p>

<h3>ECO Blddrarfnstret</h3>

<p>
ECO Blddrarfnstret visar dig de positioner som anvnds fr att klassificera varje ECO-kod, 
samt frekvensen och resultatet av ECO-koderna i den aktuella databasen. 
</p>

<p>
Den vre delen visar frekvensen fr varje ECO-kod i den aktuella databasen. 
Frgerna i grafen finns i tre sektioner: den lgsta (ljusaste frgen) visar antalet vita vinster, 
den mittersta visar antalet remier, och den hgsta (mrkaste frgen) visar antalet svarta vinster. 
Detta lter dig snabbt se om en ppning r bra eller dlig fr vit eller om remier r mycket vanliga. 
</p>

<p>
Fr att g till en djupare ECO niv klicka med vnster musknapp p en del av grafen
(eller skriv den bokstav eller siffra den motsvarar). Fr att g tillbaka till en hgre niv, 
klicka med hger musknapp i grafen eller tryck p vnsterpilen (eller delete eller bakt). 
</p>

<p>
Den nedre delen visar de positioner som utgr en speciell ECO-kod, 
enligt den ECO-fil som du har ppnat. 
</p>

<h3>ppna Scids ECO-fil</h3>
<p>
ECO-filen som kommer med Scid heter scid.eco och Scid frsker att ppna den nr det 
startar. Om Scid inte kan hitta den behver du gra fljande fr att anvnda 
ECO-klassificeringen: 
</p>

<p>
(a) I Scid anvnd menykommandot <b>[Alternativ: Ladda ECO-fil]</b> och vlj filen <b>scid.eco</b>. 
(b) Spara alternativ (i  <b>[Alternativ]</b> menyn). 
Efter att du har gjort deta kommer ECO-filen att laddas varje gng du startar Scid. 
</p>

<h3>ECO-koderna</h3>
<p>
Den grundlggande strukturen i ECO r:
</p>

A 1.d4 Nf6 2...; 1.d4 ...; 1.c4; 1.diverse
<ul>
<li>A0 1.diverse (A02-A03 1.f4: Birds ppning, A04-A09 1.Nf3: Reti, Kungsindisk attack) </li>
<li>A1 1.c4 ...: Engelsk </li>
<li>A2 1.c4 e5: Kungsengelsk </li> 
<li>A3 1.c4 c5: Engelsk, Symmetriskt </li> 
<li>A4 1.d4 ...: Dambonde </li>
<li>A5 1.d4 Nf6 2.c4 ..: Indiskt frsvar </li> 
<li>A6 1.d4 Nf6 2.c4 c5 3.d5 e6: Modern Benoni </li> 
<li>A7 A6 + 4.Nc3 exd5 5.cxd5 d6 6.e4 g6 7.Nf3 </li>
<li>A8 1.d4 f5: Hollndskt frsvar </li>
<li>A9 1.d4 f5 2.c4 e6: Hollndskt frsvar </li>
</ul>
B 1.e4 c5; 1.e4 c6; 1.e4 d6; 1.e4 diverse 
<ul>
<li>B0 1.e4 ... (B02-B05 1.e4 Nf6: Alekhines frsvar; B07-B09 1.e4 d6: Pirc) </li>
<li>B1 1.e4 c6: Caro-Kann </li>
<li>B2 1.e4 c5: Sicilianskt frsvar </li> 
<li>B3 1.e4 c5 2.Nf3 Nc6: Sicilianskt </li>
<li>B4 1.e4 c5 2.Nf3 e6: Sicilianskt </li>
<li>B5 1.e4 c5 2.Nf3 d6: Sicilianskt </li>
<li>B6 B5 + 3.d4 cxd4 4.Nxd4 Nf6 5.Nc3 Nc6 </li>
<li>B7 B5 + 4.Nxd4 Nf6 5.Nc3 g6: Siciliansk Drake </li>
<li>B8 B5 + 4.Nxd4 Nf6 5.Nc3 e6: Siciliansk Scheveningen </li> 
<li>B9 B5 + 4.Nxd4 Nf6 5.Nc3 a6: Siciliansk Najdorf </li>
</ul>
C 1.e4 e5; 1.e4 e6 

<ul>
<li>C0 1.e4 e6: Franskt Frsvar </li>
<li>C1 1.e4 e6 2.d4 d5 3.Nc3: Franskt, Winawer/Klassisk </li> 
<li>C2 1.e4 e5: ppet parti </li>
<li>C3 1.e4 e5 2.f4: Kungsgambit </li>
<li>C4 1.e4 e5 2.Nf3: ppet parti </li>
<li>C5 1.e4 e5 2.Nf3 Nc6 3.Bc4: Italienskt; Tvspringar </li>
<li>C6 1.e4 e5 2.Nf3 Nc6 3.Bb5: Spanskt (Ruy Lopez) </li>
<li>C7 1.e4 e5 2.Nf3 Nc6 3.Bb5 a6 4.Ba4: Spanskt </li>
<li>C8 C7 + 4...Nf6 5.O-O: Spanskt, ppet och Stngt (C80-C83 5.O-O Nxe4: Spanskt, ppet system; C84-C89 5.O-O Be7: Spanskt, Stngt system) </li>
<li>C9 C8 + 5...Be7 6.Re1 b5 7.Bb3 d6: Spanskt, Stngt </li>
</ul>
D 1.d4 d5; 1.d4 Nf6 2.c4 g6 med 3...d5 
<ul>
<li>D0 1.d4 d5: Dambonde </li>
<li>D1 1.d4 d5 2.c4 c6: Slaviskt frsvar </li> 
<li>D2 1.d4 d5 2.c4 dxc4: Antagen damgambit </li>
<li>D3 1.d4 d5 2.c4 e6: Avbjd damgambit  </li>
<li>D4 D3 + 3.Nc3 Nf6 4.Nf3 c5/c6: Semi-Tarrasch; Semi-Slav </li>
<li>D5 D3 + 3.Nc3 Nf6 4.Bg5: Avbjd klassisk damgambit</li>
<li>D6 D5 + 4...Be7 5.e3 O-O 6.Nf3 Nbd7: Avbjd  ortodox damgambit </li>
<li>D7 1.d4 Nf6 2.c4 g6 with 3...d5: Grnfeld </li>
<li>D8 1.d4 Nf6 2.c4 g6 3.Nc3 d5: Grnfeld </li>
<li>D9 1.d4 Nf6 2.c4 g6 3.Nc3 d5 4.Nf3: Grnfeld </li>
</ul>
 
E 1.d4 Nf6 2.c4 e6; 1.d4 Nf6 2.c4 g6 

<ul>
<li>E0 1.d4 Nf6 2.c4 e6: Katalanskt, mm </li>
<li>E1 1.d4 Nf6 2.c4 e6 3.Nf3 (b6): Damindiskt, mm </li>
<li>E2 1.d4 Nf6 2.c4 e6 3.Nc3 (Bb4): Nimzo-Indiskt, mm </li>
<li>E3 E2 + 4.Bg5 or 4.Qc2: Nimzo-Indiskt </li>
<li>E4 E2 + 4.e3: Nimzo-Indiskt, Rubinstein </li>
<li>E5 E4 + 4...O-O 5.Nf3: Nimzo-Indiskt, huvudvariant </li> 
<li>E6 1.d4 Nf6 2.c4 g6: Kungindiskt </li>
<li>E7 1.d4 Nf6 2.c4 g6 3.Nc3 Bg7 4.e4: Kungsindiskt </li>
<li>E8 E7 + 4...d6 5.f3: Kungsindiskt, Smisch </li>
<li>E9 E7 + 4...d6 5.Nf3: Kungsindiskt, huvudvarianter </li>
</ul>

<p><footer>(Uppdaterat: Scid 2.5, Juni 2001)</footer></p>
}

####################
### Calvar window help:

set helpTitle(W,CalVar) "Berkning av variationer"
set helpText(W,CalVar) {<h1>Berkning av variationer-fnstret</h1>
  <p>
Denna trningsvning r ocks knd som Stoyko-vningen.
Dess syfte r att analysera en komplex position och utvrdera s mnga sunda variationer som mjligt,
och ge en korrekt vrdering fr varje av dem.
  </p>
<p><h3>Konfiguration</h3></p>
Tre parametrars anges :
<ul>
<li>Den UCI-schackmotor som kommer att analysera olika variationer</li>
<li>Den tid, i sekunder, som schackmotorn kommer att anvnda fr att analysera positionen</li>
<li>Den tid, i sekunder, som schackmotorn kommer att anvnda fr att analysera varje variation som har angivits av anvndaren</li>
</ul>
<p><h3>Ange variationer</h3></p>
Drag anges som vanligt med musklick p brdet men de visas inte. Vid slutet p varje variation behver anvndaren ange en vrdering genom att klicka p en av knapparna med NAG-vrden.
  <p><h3>Vrderingsverifikation</h3></p>
Varje gng en vrdering anges till en variation berknar schackmotorn dess vrde och lgger till variationen och vrderingen precis nedanfr anvndarens.
  <p><h3>Klar med position</h3></p>
Nr anvndaren tror att han har hittat alla de bsta variationerna, kommer tryckandet p <b>Klar med position</b> att lgga till i partiet
(med kommentaren <b>Missad variation</b>), de variationer som har en hgre vrdering n de bsta variationerna som har angetts av anvndaren.

  <p><footer>(Uppdaterat: Scid 3.6.21, December 2007)</footer></p>
}

####################
### EPD files help:

set helpTitle(W,EPD) "EPD"
set helpText(W,EPD) {<h1>EPD-filer</h1>

<h3>EPD filer</h3>
<p>
En EPD (extended position description) fil r en samling av positioner, 
dr varje position har ngon tillhrande text. Det r precis som PGN r det 
en vanlig standard fr schackinformation. 
</p>

<p>
En EPD-fil har ett antal definierade <b>opcodes (flt)</b> som r lagrade 
separade med semikolon <b>(;)</b> i filen men visas p olika rader 
i ett Scid EPD-fnster fr att gra ndringar lttarer. Ett semikolon inom ett 
EPD-flt lagras som <b>"\s"</b> av Scid fr att skilja det frn en markering av slutet av fltet. 
Varje position och dess tillhrande opcodes lagras p en enkel rad i EPD-filen. 
</p>

<p>
Standard <b>EPD-opcodes</b> inkluderar: 
</p>

<p>
<li><b>acd</b> Analysrkning: skdjup.</li> 
<li><b>acn</b> Analysrkning: antal skta noder.</li> 
<li><b>acs</b> Analysrkning: sktid i sekunder.</li> 
<li><b>bm</b> Bsta drag: drag som anses bst av ngon anledning.</li> 
<li><b>ce</b> Hundradelsbondevrdering: vrdering i hundradelar av en bonde fr den sida 
som r vid draget (Observera att detta skiljer sig frn Analysfnstret som visar 
vrderingen i bnder frn vits perspektiv).</li> 
<li><b>cX</b> Kommentar (dr <b>X</b> r en siffra frn 0-9).</li> 
<li><b>eco</b> ECO ppningskod.</li> 
<li><b>id</b> Unik identifikation av denna position.</li> 
<li><b>nic</b> New In Chess (NIC) ppningskod.</li> 
<li><b>pm</b> Frutsptt drag: det frsta draget i den frutspdda variationen (PV).</li> 
<li><b>pv</b> Frutspdd variation: den bsta dragfljden.</li>
</p>

<p>
EPD-filer har ett antal anvndningar: Scid anvnder en EPD-fil fr att klassificera
partier enligt Encyclopedia of Chess Openings (ECO) , 
och du kan skapa en EPD-fil fr din ppningsrepetoar samt 
lgga till kommentarer fr positioner du vanligtvis nr i partier. 
</p>

<p>
Du kan skapa en ny EPD-fil eller ppna en existerande frn  <b>[Ny]</b> och <b>[ppna]</b> 
kommandorna i  <b>[Arkiv]</b> menyn. Som mest kan fyra EPD-filer vara ppnade. 
</p>

<h3>EPD fnster</h3>

<p>
Fr varje ppnad EPD-fil ser du will ett fnster som visar texten fr den aktuella positionen. 
Du behver inte trycka p <b>Spara</b> knappen fr att spara de frndringar du gr med 
en positionstext; texten sparas nr du gr till en annan position i partiet. 
</p>

<h3>Navigera i EPD-filer</h3>

<p>
Fr att blddra genom positionerna i en EPD-fil anvnd <b>[Nsta position]</b> och <b>[Tidigare position]</b> 
kommandorna frn EPD-fnstret i <b>[Verktygs]</b> menyn eller anvnd tangentkombinationerna 
<b>Ctrl+NerPil</b> och <b>Ctrl+UppPil</b>. Dessa kommandon gr till nsta eller fregende position i filen, 
tar bort det aktuella partiet och stller in den nya startpositionen. 
</p>

<h3>Ta bort EPD-flt</h3>

<p>
EPD-filer du finner p Internet kan innehlla flt som inte intresserar dig och de kan 
slsa mycket utrymme i filen. Till exempel, en EPD-fil med datorvrderingar kan ha 
<b>ce</b>, <b>acd</b>, <b>acn</b>, <b>pm</b>, <b>pv</b> och <b>id</b> flt 
men du kanske bara behver <b>ce</b> och <b>pv</b> flten. 
</p>

<p>
Du kan ta bort en EPD-opcode frn alla positioner i EPD-filen genom att anvnda <b>[Ta bort EPD flt]</b> 
frn EPD-fnstret i <b>[Verktygs]</b> menyn. 
</p>

<h3>EPD-fnstrets resultat</h3>

<p>
Alla EPD-fnster visar: 
</p>

<ul>
<li>- filstatus (-- betyder ofrndrad, <b>XX</b> betyder frndrad, och <b>%%</b> betyder skrivskyddad); </li>
<li>- filnamn; </li>
<li>- antal positioner i filen; </li>
<li>- legala drag frn den aktuella positionen fr att n en annan position i denna EPD-fil.</li> 
</ul>
<p><footer>(Uppdaterat: Scid 2.5, Juni 2001)</footer></p>
}


###################
### Exporting help:

set helpTitle(W,Export) "Exportera partier"
set helpText(W,Export) {<h1>Exportera partier</h1>
<p>
Du kan anvnda funktionerna i <menu>Verktygs</menu>-menyn, fr det
aktuella partiet eller fr alla partier i det aktuella filtret fr att exportera dragen
i en textfil.
</p>
<p>
Tre Textdata-format str till frfogande: <a PGN>PGN</a> (portable
game notation), HTML (fr Webbsidor) och LaTeX (ett populrt
Textbearbetningssystem).
</p>
<p>
Vid export kan du vlja att skapa en ny fil 
eller infoga partierna i en existierande partifil.
</p>

<h3>Diagram</h3>
<p>
Nr du exporterar i HTML- eller LaTeX-format , infogar Scid automatiskt
dr ett diagram , dr det finns en diagram-<a NAGs>NAG</a> ("D")
eller ett med tecknet "#" brjande <a Comment>Kommentar</a>
i partiet .
</p>

<h3><name Null>Null-drag vid PGN-Export</name></h3>
<p>
Scid tillter att det sparas <a Annotating Null>Null- (inga drag)
drag</a> , d dessa kan vara hjlpsamma vid kommentarer av varianter. 
Det finns dock inga Null-drag i PGN-Standarden. 
Nr du d exporterar Scid-partier med Null-drag i en PGN-fil
kan andra program oftast inte lsa in partierna.
</p>
<p>
Fr att lsa detta problem stller Scid en annan funktion till frfogande,
<b>Omvandla Null-drag till kommentarer</b>, nr partier blir exporterade i 
PGN-format. Nr du vill skapa en PGN-fil, som kan anvndas av
andra program, anvnder du denna funktion som omvandlar varianter med nolldrag 
till kommentarer.
Nr du nd vill skapa en PGN-fil, som senare kan importeras av Scid med bibehllande av
Null-drag stnger du av denna funktion.
</p>

<h3>HTML-Export</h3>
<p>
Scid kan exportera partier i en HTML-filer. Fr att infoga diagram ,
mste diagrambilderna finnas (i katalogen "<b>bitmaps/</b>" )
i en underkatalog till "<b>bitmaps/</b>" i katalogen under  HTML-filen.
</p>

<h3>LaTeX-Export</h3>
<p>
Scid kan exportera partier i en LaTeX-fil. Partier blir sparade i
tv kolumner per sida och dragen blir sparade i algebraisk
notation med symboler fr pjserna.
</p>
<p>
Fr mer information se hjlpsidan <a LaTeX>Scid och LaTeX</a>.
</p>

<p><footer>(Uppdaterat: Scid 3.4, Juli 2002)</footer></p>
}


####################
### Flags help:

set helpTitle(W,Flags) "Parti-markeringarna"
set helpText(W,Flags) {<h1>Parti-markeringarna</h1>

<p>
En <term>Markering</term> ("Flags") r ett Knnetecken p ngon
schackegenskap, som kan markeras fr varje parti i databasen. 
Det finns 13 av anvndare instllbara
markeringar, som du kan stta direkt i varje parti . Av dessa
har bara ta bort-markeringen en srskild betydelse: partier, som
r markerade med ta bort-markeringen, r markerade fr att tas bort
och tas bort, nr databasen blir
<a Compact>komprimerad</a> .
</p>
<p>
De andra 12 av anvndare instllbara markeringarna och deras
symboler r:
</p>

<ul>
<li>ppningen Vit (W)</li>
<li>ppningen Svart (B)</li>
<li>Mittspelet (M)</li>
<li>Slutspelet (E)</li>
<li>Nyhet (N)</li>
<li>Bondestruktur (P)</li>
<li>Taktik (T)</li>
<li>Spel p damflygeln (Q)</li>
<li>Spel p Kungsflygeln (K)</li>
<li>Utomordentligt (!)</li>
<li>Blunder (?)</li>
<li>Anvndar-definierat (U)</li>
</ul>

<p>
En markering kan sttas fr det aktuella partiet, fr alla partier i
filtret eller fr alla partier i databasen i
<a Maintenance>Underhlls</a>-fnstret.
</p>
<p>
Du kan anvnda  <a Searches Header>Skning efter Partidata</a> ,
fr att finna alla datenbaspartier , som har en bestmd markering 
eller anvnda markeringarna som en del av en komplex skning.
</p>
<p>
D alla av anvndare instllbara markeringar inte har ngon betydelse fr
Scid (med undantag av ta bort-markeringar), kan du anvnda dessa fr
dina egna syften. Till exempel kan anvnda markeringen "Spel p kungsflygeln" (K) 
fr att leta efter bland annat bondestormar mot kungen , pjsangrepp mot kungen 
eller slutspel med alla bnder p kungsflygeln.
</p>

<p><footer>(Uppdaterat: Scid 3.0, November 2001)</footer></p>
}


###############
### LaTeX help:

set helpTitle(W,LaTeX) "Scid och LaTeX"
set helpText(W,LaTeX) {<h1>Scid och LaTeX</h1>
<p>
Scid kan spara partier och ppningsresultat i LaTeX-format i filer. 
LaTeX r en utvidgning av TeX, ett populrt Textbehandlingssystem.
</p>
<p>
Fr att Scid ska kunna skapa LaTeX-filer , mste du
(naturligtvis) ha installerat LaTeX  och schackteckensnitts-paketet "chess12". 
Detta paket r normalt inte en del av
LaTeX-Standardinstallation, dvs om du har LaTeX , har
du kanske inte schackteckensnittet.
</p>
<p>
Information om nedladdning och installation av
LaTeX-schackteckensnittet hittar du p lnken
<url http://scid.sourceforge.net/latex.html>Using LaTeX with Scid</url>
p <url http://scid.sourceforge.net/>Scids Webbsida</url>.
</p>

<p><footer>(Uppdaterat: Scid 2.5, Juni 2001)</footer></p>
}


###########################
### Options and Fonts help:

set helpTitle(W,Options) "Alternativ"
set helpText(W,Options) {<h1>Alternativ och preferenser</h1>
<p>
Mnga alternativ och preferenser i Scid (som till exempel brdstorleken, frger,
teckensnitt och standardinstllningar) kan man ndra i <menu>Alternativ</menu>-menyn. 
Alla dessa (och fler instllningar, som till exempel den sista katalogen i vilket du har lst in en
databas och storleken p ngra fnster)
blir sparat i en instllningsfil, nr du vljer 
<b>Spara instllningar</b> i Alternativ-menyn.
Varje gng som Scid startar blir denna instllningsfil laddad.
</p>
<p>
Nr du arbetar med Windows , finns instllningsfilen <b>scid.opt</b>
i samma katalog som Scids programfil. Fr anvndare av
Unix-Operativsystem (som Solaris eller Linux) r filen
<b>~/.scid/scidrc</b>.
</p>

<h3><name MyPlayerNames>Faststlla spelarnamn</name></h3>
<p>
Det kan vara s att du vill se brdet i huvudfnstret fr en (eller flera) spelare 
frn dennes eller deras perspektiv nr dennes eller deras partier ppnas. 
Du kan ange en lista med sdana namn med <b>Mina Spelarnamn...
</b> i Menyn <menu>Alternativ/Schachbrde</menu>. 
I Dialogfnstret matar du d in ett spelarnamn per rad. 
Jokertecken som ("<b>?</b>" fr ett oknt tecken och "<b>*</b>"
fr en teckenkedja av noll eller flera tecken) r tilltna.
</p>

<h3><name Fonts>Stlla in teckensnitt</name></h3>
<p>
Scid har tre teckensnitt som anvnds i de flesta fnster
och du kan anpassa alla tre individuellt. De heter
<b>normal</b>, <b>liten</b> och <b>fast</b>.
</p>
<p>
Det fasta teckensnittet borde vara ett teckensnitt med fast bredd
(inte-proportionellt) . Det anvnds av <a Tree>Dragtrdet</a> och 
<a Crosstable>Korstabeller</a> .
</p>

<p><footer>(Uppdaterat: Scid 3.5, Februar 2003)</footer></p>
}


####################
### Pgnscid help:

set helpTitle(W,Pgnscid) "Pgnscid"
set helpText(W,Pgnscid) {<h1>Pgnscid</h1>
<p>
<term>Pgnscid</term> r ett separat program, som du kan
anvnda fr att konvertera PGN-filer ("portable game notation") 
till Scid-Databaser.
</p>
<p>
Fr att konvertera en fil med namnet <i>partier.pgn</i> , skriver du
bara
<ul>
<li> <b>pgnscid partier.pgn</b> </li>
</ul>
och Scid-Databasen (bestende av filerna
<i>partier.si3</i>, <i>partier.sg3</i> och <i>partier.sn3</i>) blir
skapade.
Felmeddelanden eller varningar blir skrivna i filen <i>partier.err</i>
.
</p>
<p>
Nr du vill att databasen ska skapas i en annan katalog eller
med ett annat namn, kan du ange datenbasnamnen
i kommandoraden, till exempel skapar
<ul>
<li> <b>pgnscid partier.pgn databas</b> </li>
</ul>
en databas bestende av filerna <i>databas.si3</i>,
<i>databas.sg3</i> och <i>datenbas.sn3</i>.
</p>
<p>
Observera att pgnscid (och ocks Scid) direkt kan lsa gzip-komprimerade
PGN-filer som till exempel. <b>datenbas.pgn.gz</b>.
</p>

<h3>Alternativ</h3>
<p>
Pgnscid accepterar tv optionella argument fr filnamnen:
<b>-f</b> och <b>-x</b>.
</p>
<p>
Alternativet <b>-f</b> tvingar fram verskrivandet av en existerande
databas; normalt ndrar pgnscid inte i en redan
existerande databas.
</p>
<p>
Alternativet <b>-x</b> gr att pgnscid ignorerar text mellan partierna. 
Normalt blir text mellan partierna sparat som en kommentar fre det
fljande partiet. Detta alternativ gller bara text mellan partier; 
standardkommentarer i partierna blir dessutom konverterade och sparade.
</p>

<h3>Formatera spelarnamn</h3>
<p>
Fr att minska antalet olika stavningar av samma spelare
genomfr pgnscid ngra Grundformateringar
. Till exempel blir antalet mellanrum efter ett
komma satt till ett medan mellanrum i brjan eller slutet av ett namn
blir bortagna.
Hollndska Namn som "van den" och "Van Der" blir dessutom
normaliserade, s att de har ett stort "V" och litet "d".
</p>
<p>
Du kan ven ndra Spelar-, Turnerings-, Orts- och Rundebeteckningar i Scid
(och till och med utfra automatisk skrivkorrektur);
fr detaljerna se hjlpsidan <a Maintenance Editing>Underhll</a>.
</p>

<p><footer>(Uppdaterat: Scid 2.5, Juni 2001)</footer></p>
}





#################
### Sorting help:

set helpTitle(W,Sorting) "Sortera databas"
set helpText(W,Sorting) {<h1>Sortera databas</h1>
<p>
<term>Sortera</term>-Funktionerna sorterar alla partier i en
databas. Du kan vlja flera sorteringskriterier .
Nr tv partier r likvrdiga efter ett kriterium, blir
de sorterade efter det andra kriteriet och s vidare.
</p>

<h3>Sorteringskriterier</h3>
<p>
De tillgngliga sorteringskriterierna r:
</p>
<ul>
<li> Datum (ldsta partier frst)
<li> r (som Datum, men bara ret anvnds)
<li> Turnering (Tilldragelse)
<li> Ort
<li> Land (de sista 3 bokstverna i orten)
<li> Runda
<li> Vit
<li> Elo-tal (Genomsnitt av Vit och Svart, hgst frst)
<li> Svart
<li> Resultat (Vit vinner, drefter remier, drefter Svart vinner)
<li> Lngd (Antal hela drag i partiet)
<li> ECO-kod enligt <a ECO>Encyclopedia of Chess Openings</a>)
</ul>

<h3>Sorteringsresultatet</h3>
<p>
Nr du inte sorterar en skrivskyddad Scid-Databas , blir 
sorteringsresultatet skrat genom att lngvarigt ndra i ordningsfljden 
i databaspartierna. Om du bara vill gra en temporr sortering ,
skyddar du frst databasen mot verskrivande med med menyfunktionen
<menu>Fil: Skrivskydd</menu>.
</p>
<p>
Nr du sorterar en databas , som r skrivskyddad eller bestr av
en PGN-fil , kan sorteringsresultatet inte bli skrat , vilket gr att 
den sorterade partiordningsfljden gr frlorad nr filen
stngs.
</p>
<p>
Observera att sorteringen av en databas i
<a Searches filtret>Skfilter</a> ndrar i alla partier.
</p>

<h3>Viktig hjlp fr databas-sortering:</h3>
<p>
Nr en Databas blir sorterad , r indexfilen ndrad, men
partifilen r ofrndrad. Det vill sga, sorteringen av en databas
lmnar partidata-filen i en tillfllig ordningsfljd relativ till 
indexfilen. Detta kan gra <a Tree>Dragtrd</a>-,
Positions- och Material/Mnster-<a Searches>Skningar</a> mrkbart
<b>lngsammare</b>, du br drfr efter att ha sorterat databasen
ndra i partifilen genom att <a Compact>Komprimera</a> ,
fr att f bra skprestanda .
</p>

<p><footer>(Uppdaterat: Scid 2.5, Juni 2001)</footer></p>
}





####################
### NAG values help:

set helpTitle(W,NAGs) "NAG-vrden"
set helpText(W,NAGs) {<h1>Standard-NAG-vrden</h1>
<p>
Standard-NAG-vrden (Numeric Annotation Glyph = "numeriska
Anmrkningglyfer"), som definieras i <a Author Related>PGN-Standard</a> ,
r:
</p>
<cyan>
<ul>
<li>  1   Bra drag (!) </li>
<li>  2   Dligt drag (?) </li>
<li>  3   Utomordentligt drag (!!) </li>
<li>  4   Stort misstag / Blunder (??) </li>
<li>  5   Intressant drag (!?) </li>
<li>  6   Tveksamt drag (?!) </li>
<li>  7   Tvingat drag </li>
<li>  8   Det enda draget; det finns inga andra bra drag </li>
<li>  9   Smsta draget </li>
<li> 10   Utjmnad position (=) </li>
<li> 11   Lika chanser, lugn stllning (=) </li>
<li> 12   Lika chanser, aktiv stllning (=) </li>
<li> 13   Oklar stllning (~) </li>
<li> 14   Vit har en liten frdel, str ngot bttre (+=) </li>
<li> 15   Svart har en liten frdel, str ngot bttre (=+) </li>
<li> 16   Vit har frdel, str bttre (+/-) </li>
<li> 17   Svart har frdel, str bttre (-/+) </li>
<li> 18   Vit har en avgrande frdel (+-) </li>
<li> 19   Svart har en avgrande frdel (-+) </li>
<li> 20   Vit har en vervldigande frdel (+-) </li>
<li> 21   Svart har en vervldigande frdel (-+) </li>
<li> 22   Vit r i dragtvng </li>
<li> 23   Svart r i dragtvng </li>
<li> 24   Vit har en liten utrymmesfrdel </li>
<li> 25   Svart har en liten utrymmesfrdel </li>
<li> 26   Vit har en utrymmesfrdel </li>
<li> 27   Svart har en utrymmesfrdel </li>
<li> 28   Vit har en avgrande utrymmesfrdel </li>
<li> 29   Svart har en avgrande utrymmesfrdel </li>
<li> 30   Vit har ett litet Tids-(Utvecklings)frsprng </li>
<li> 31   Svart har ett litet Tids-(Utvecklings)frsprng </li>
<li> 32   Vit har ett Tids-(Utvecklings)frsprng </li>
<li> 33   Svart har ett Tids-(Utvecklings)frsprng </li>
<li> 34   Vit har ett avgrande Tids-(Utvecklings)frsprng </li>
<li> 35   Svart har ett avgrande Tids-(Utvecklings)frsprng </li>
<li> 36   Vit har initiativet </li>
<li> 37   Svart har initiativet </li>
<li> 38   Vit har ett uthlligt initiativ </li>
<li> 39   Svart har ett uthlligt initiativ </li>
<li> 40   Vit har ett angrepp </li>
<li> 41   Svart har ett angrepp </li>
<li> 42   Vit har ingen tillrcklig kompensation fr materialet </li>
<li> 43   Svart har ingen tillrcklig kompensation fr materialet </li>
<li> 44   Vit har tillrcklig kompensation fr materialet </li>
<li> 45   Svart har tillrcklig kompensation fr materialet </li>
<li> 46   Vit har mer n tillrcklig kompensation fr materialet </li>
<li> 47   Svart har mer n tillrcklig kompensation fr materialet </li>
<li> 48   Vit har en ltt vervikt i centrum </li>
<li> 49   Svart har en ltt vervikt i centrum </li>
<li> 50   Vit har en vervikt i centrum </li>
<li> 51   Svart har en vervikt i centrum </li>
<li> 52   Vit har en avgrande vervikt i centrum </li>
<li> 53   Svart har en avgrande vervikt i centrum </li>
<li> 54   Vit har en ltt vervikt p kungsflygeln </li>
<li> 55   Svart har en ltt vervikt p kungsflygeln </li>
<li> 56   Vit har en vervikt p kungsflygeln </li>
<li> 57   Svart har en vervikt p kungsflygeln </li>
<li> 58   Vit har en avgrande vervikt p kungsflygeln </li>
<li> 59   Svart har en avgrande vervikt p kungsflygeln </li>
<li> 60   Vit har en ltt vervikt p damflygeln </li>
<li> 61   Svart har en ltt vervikt p damflygeln </li>
<li> 62   Vit har en vervikt p damflygeln </li>
<li> 63   Svart har en vervikt p damflygeln </li>
<li> 64   Vit har en avgrande vervikt p damflygeln </li>
<li> 65   Svart har en avgrande vervikt p damflygeln </li>
<li> 66   Vit har en svag stllning </li>
<li> 67   Svart har en svag stllning </li>
<li> 68   Vit har en bra skrad stllning </li>
<li> 69   Svart har en bra skrad stllning </li>
<li> 70   Vit har en dligt skrad kung </li>
<li> 71   Svart har en dligt skrad kung </li>
<li> 72   Vit har en bra skrad kung </li>
<li> 73   Svart har en bra skrad kung </li>
<li> 74   Den vita kungen str dligt </li>
<li> 75   Den svarta kungen str dligt </li>
<li> 76   Den vita kungen str bra </li>
<li> 77   Den svarta kungen str bra </li>
<li> 78   Vit har en mycket svag bondestruktur </li>
<li> 79   Svart har en mycket svag bondestruktur </li>
<li> 80   Vit har en svag bondestruktur </li>
<li> 81   Svart har en svag bondestruktur </li>
<li> 82   Vit har en stark bondestruktur </li>
<li> 83   Svart har en stark bondestruktur </li>
<li> 84   Vit har en mycket stark bondestruktur </li>
<li> 85   Svart har en mycket stark bondestruktur </li>
<li> 86   Den vita springaren str dligt </li>
<li> 87   Den svarta springaren str dligt </li>
<li> 88   Den vita springaren str bra </li>
<li> 89   Den svarta springaren str bra </li>
<li> 90   Den vita lparen str dligt </li>
<li> 91   Den svarta lparen str dligt </li>
<li> 92   Den vita lparen str bra </li>
<li> 93   Den svarta lparen str bra </li>
<li> 94   Det vita tornet str dligt </li>
<li> 95   Det svarta tornet str dligt </li>
<li> 96   Det vita tornet str bra </li>
<li> 97   Det svarta tornet str bra </li>
<li> 98   Den vita damen str dligt </li>
<li> 99   Den svarta damen str dligt </li>
<li>100   Den vita damen str bra </li>
<li>101   Den svarta damen str bra </li>
<li>102   De vita pjserna r dligt koordinerade </li>
<li>103   De svarta pjserna r dligt koordinerade </li>
<li>104   De vita pjserna r bra koordinerade </li>
<li>105   De svarta pjserna r bra koordinerade </li>
<li>106   Vit har behandlat ppningen mycket dligt  </li>
<li>107   Svart har nehandlat ppningen mycket dligt </li>
<li>108   Vit har behandlat ppningen dligt </li>
<li>109   Svart har behandlat ppningen dligt </li>
<li>110   Vit har behandlat ppningen bra  </li>
<li>111   Svart har behandlat ppningen bra  </li>
<li>112   Vit har behandlat ppningen mycket bra  </li>
<li>113   Svart har behandlat ppningen mycket bra  </li>
<li>114   Vit har behandlat mittspelet mycket dligt </li>
<li>115   Svart har behandlat mittspelet mycket dligt  </li>
<li>116   Vit har behandlat mittspelet dligt  </li>
<li>117   Svart har behandlat mittspelet dligt </li>
<li>118   Vit har behandlat mittspelet bra  </li>
<li>119   Svart har behandlat mittspelet bra  </li>
<li>120   Vit har behandlat mittspelet mycket bra  </li>
<li>121   Svart har behandlat mittspelet mycket bra  </li>
<li>122   Vit har behandlat slutspelet mycket dligt  </li>
<li>123   Svart har behandlat slutspelet mycket dligt  </li>
<li>124   Vit har behandlat slutspelet dligt  </li>
<li>125   Svart har behandlat slutspelet dligt  </li>
<li>126   Vit har behandlat slutspelet bra  </li>
<li>127   Svart har behandlat slutspelet bra  </li>
<li>128   Vit har behandlat slutspelet mycket bra  </li>
<li>129   Svart har behandlat slutspelet mycket bra  </li>
<li>130   Vit har lite motspel </li>
<li>131   Svart har lite motspel </li>
<li>132   Vit har motspel </li>
<li>133   Svart har motspel </li>
<li>134   Vit har avgrande motspel </li>
<li>135   Svart har avgrande motspel </li>
<li>136   Vit r i ltt tidsnd </li>
<li>137   Svart r i ltt tidsnd </li>
<li>138   Vit r i allvarlig tidsnd </li>
<li>139   Svart r i allvarlig tidsnd </li>
</ul>
</cyan>

<p>
Fler freslagna Nag-vrden fr Schachinformator-symboler r bland annat:
</p>
<cyan>
<ul>
<li>140   Med iden ... </li>
<li>141   Riktat mot ... </li>
<li>142   Bttre r </li>
<li>143   Smre r </li>
<li>144   Likvrdigt r </li>
<li>145   Redaktrens anmrkning ("RR") </li>
<li>146   Nyhet ("N") </li>
<li>147   Svag punkt </li>
<li>148   Slutspelet </li>
<li>149   Linje </li>
<li>150   Diagonal </li>
<li>151   Vit har lparparet </li>
<li>152   Svart har lparparet </li>
<li>153   Olikfrgade lpare </li>
<li>154   Likfrgade lpare </li>
</ul>
</cyan>

<p>
Andra frslag r:
</p>
<cyan>
<ul>
<li>190   Etc. </li>
<li>191   Dubbelbnder </li>
<li>192   Isolerade bnder </li>
<li>193   Frenade bnder </li>
<li>194   Hngande bnder </li>
<li>195   Baktvnd bonde </li>
</ul>
</cyan>

<p>
Av Scid definierade symboler fr internt bruk:
</p>
<cyan>
<ul>
<li>201   Diagram ("D", ibland ocks "#") </li>
</ul>
</cyan>

<p><footer>(Uppdaterat: Scid 2.5, Juni 2001)</footer></p>
}


######################
### File formats help:

set helpTitle(W,Formats) "Filformat"
set helpText(W,Formats) {<h1>Scids Filformat</h1>
<p>
Scid-Databaser bestr av tre viktiga filer: en
Indexfil, en Namnfil och en Partidatafil. 
Alla filer har en trebokstavsndelse, 
som brjar med "s": 
<b>".si3"</b> fr Indexfiler,
<b>".sn3"</b> fr Namnfiler och 
<b>".sg3"</b> fr Partidatafiler.
</p>

<h3>Indexfilen (.si3)</h3>
<p>
Denna fil innehller en beskrivning av databasen dr det finns en 
liten notering med fast lngd fr varje parti. Den aktuella storleken 
r 41 bytes per parti. Av dessa r 28 bytes vsentlig information 
som Resultat, Datum, Index fr Spelar-, Turnerings- och
Ortsnamn (de aktuella namnen finns i  namnfilen) .
</p>
<p>
De resterande 13 bytes innehller reduktant, men nyttig
information om partiet, som anvnds fr  Positions-,
Material- och Mnsterskningar. 
Se avsnittet <a Formats Fast>Ska snabbt</a> fr mer
information.
</p>

<h3>Namnfilen (.sn3)</h3>
<p>
Denna fil innehller alla Spelar-, Turnerings-, Orts- och Rundenamn, som
anvnds i databasen. Varje Namn r bara sparat en gng,
ven om det frekommer i mnga partier. Namnfilen r vanligtvis
den minsta av de tre viktiga databasfilerna.
</p>

<h3>Partidatafilen (.sg3)</h3>
<p>
Denna fil innehller de aktuella dragen, varianter och kommentarer fr varje
parti. Dragkodningen r mycket kompakt: de flesta dragen behver bara en 
byte.
</p>
<p>
Nr ett parti blir ersatt, blir dess nya version sparat i <i>slutet</i>
av filen, s att det inte ver tiden ansamlar sig icke anvnt sparutrymme. 
Du kan genom <a Compact>Komprimering</a>
terstlla den minimala storleken p en databas.
</p>

<h3>Andra Scid-Filer</h3>
<p>
En <a EPD>EPD</a>-fil (Filndelse: ".epd") innehller en rad 
schackpositioner, varje med en textkommentar.
EDP-filformatet beskrivs i <a Author Related>PGN-Standard</a>.
</p>
<p>
En E-Mail-fil (Filndelse: <b>".sem"</b>) sparas i en databas
av motstndaren, som ni skickar E-Mail till.
</p>
<p>
En Skalternativfil (Filndelse: <b>".sso"</b>) innehller instllningar fr
en <a Searches Header>Partidata</a>- eller
<a Searches Material>Material/Mnster</a>-skning.
</p>

<h3><name Fast>Ska snabbt i Scid</name></h3>
<p>
Som ovan nmns, innehller Indexfilen ngra reduktanta, men
nyttiga informationer om varje parti, som anvnds av Positions- eller
Materialskning.
</p>
<p>
Till exempel sparas materialet i slutstllningen. Om du
vill ska efter Torn- och Bondeslutspel, blir alla partier, som har en
Dam, en Lpare eller en Springare p brdet i slutstllningen,
snabbt genomskta.
</p>
<p>
En annan nyttig delinformation som sparas r ordningsfljden,
fr Bnderna att lmna sin utgngsstllning (genom drag eller
genom att de blir tagna). Detta blir anvnt fr skningar av bondedrag 
eller exakta skningar, i synnerhet efter ppningspositioner. Till exempel
blir vid skningen av utgngsstllningen fr den franska ppningen
(1.e4 e6) varje Parti, som brjar med 1.e4 c5 eller 1.d4 etc.
genomskt, Partier, som brjar med 1.e4 e5 , mste ven alltid
genomskas.
</p>

<p><footer>(Uppdaterat: Scid 2.5, Juni 2001)</footer></p>
}



################
### Contact info

set helpTitle(W,Author) "Kontaktinformation"
set helpText(W,Author) {<h1>Kontaktinformation</h1>
<p>
Scids webbsajt finns p: <br>
<b><url http://scid.sourceforge.net/>http://scid.sourceforge.net/</url></b>
</p>
<p>
Dr kan du hmta den senaste versionen av Scid och de andra filerna till Scid, som du kan ha behov av.
</p>
<p>Den svenska versttningen av Scid har gjorts av Martin Skjldebrand. Synpunkter p versttningen ska <b>inte</b>
skickas till Shane. Dremot fr du grna skicka kommentarer, frgor och frslag till rttningar till versttaren p adressen:<br>
<b>martin@skjoldebrand.org</b>
</p>
<h3><name Related>Lnkar</name></h3>
<p>
Om Ni har gldje av Scid kan de fljande
Internetsidorna vara interessanta:
</p>
<ul>
<li><url http://www.tim-mann.org/chess.html>http://www.tim_mann.org/chess.html</url> --
Hemsida fr Tim Mann's <b>xboard & winboard</b> program: grafiska
grnssnitt fr schackprogram och anslutning till Internet Chess
Server. Den har ocks bra information om Crafty, GNUchess och
andra schackprogram.</li>

<li><url ftp://ftp.cis.uab.edu/pub/hyatt/>ftp://ftp.cis.uab.edu/pub/hyatt/</url> --
Det starka schackprogrammet Crafty.  <b>TB</b> -
underkatalogerna  innehller nstan alla Nalimov-slutspelstabeller, som
anvnds av ngra schackprogram och ven anvnds av Scid.</li>

<li><url http://www.chesscenter.com/twic/twic.html>http://www.chesscenter.com/twic/twic.html</url> --
TWIC (the week in chess), r ett framstende veckomagazin fr
internationella schackpartier, tillgngliga i PGN-format. </li>

<li><url http://scid.sourceforge.net/doc/standard.txt>http://scid.sourceforge.net/doc/standard.txt</url> --
 <b>PGN-Standard</b>, skapad av Steven J. Edwards 1994.
Textfilen frklarar PGN- och EPD-Formaten i detalj.</li>
</ul>

<p><footer>(Uppdaterat: Scid 2.5, Juni 2001)</footer></p>
}

# Book window help
set helpTitle(W,Book) "Bokfnstret"
set helpText(W,Book) {<h1>Bokfnstret</h1>
  <p>
  Bokfnstret visar en lista p alla bokfiler som finns i Scids bokkatalog. Formatet p bckerna r
  det som anvnds av Polyglot och schackmotorer som Fruit och Toga.
  </p>
  <p>
  Fr varje position, visar bokfnstret alla mjliga drag det innehller och deras
  relativa vikter i procent. Nr ett drag grs, uppdateras bokfnstret.
  Om det klickas p ett drag i bokfnstret grs detta drag i den aktuella positionen.
  </p>
  <p>
  Den aktuella boken som anvnds kan snabbt ndras genom att vlja en annan bok i den vre listan.
  </p>
  <p><footer>(Uppdaterat: Scid 3.6.5, Februari 2007)</footer></p>
}

# Tactical game window help
set helpTitle(W,TacticalGame) "Taktiskt parti-fnstret"
set helpText(W,TacticalGame) {<h1>Taktiskt parti-fnstret</h1>
  <p>
  Spela ett taktiskt parti mot en schackmotor som simulerar en motstndare med en angiven ELO-rating.
  Motstndaren spelas av Phalanx och trnaren spelas av Crafty. De rtta schackmotorerna vljs automatiskt
  genom sina namn, och br vara korrekt konfigurerade (detta r standard nr Scid installeras).
  </p>
  <p>
  De fljande parametrarna mste konfigureras :
  <ul>
  <li>svrighet : ELO-rating p motstndare</li>
  <li>specifik ppning : motstndaren spelar en specifik ppning (anvndbart fr ppningstrning)</li>
  <li>spelarens fel kontrolleras av en schackmotor som agerar som en trnare. Tiden som anvnds fr att bedma om ett
  drag r bra eller inte kan begrnsas</li>
  </ul>
  <p>Nr du r klar klicka bara p spela</p> 
  <p><footer>(Uppdaterat: Scid 3.6.5, Mars 2007)</footer></p>
}

# Opening Trainer window help
set helpTitle(W,OpeningTrainer) "ppningstrnare"
set helpText(W,OpeningTrainer) {<h1>ppningstrnare</h1>
  <p>
  En Sciddatabas kan anvndas som en repetoar, dr varje parti representerar en ppningsvariant.
  </p>
  
  <h3>ppningstrnarstatistik</h3>
  <p>
  Fyra tal visas fr att visa statistik fr den aktuella positionen :
  <ul>
  <li>Grn : antalet drag som spelades av anvndaren som r bra drag</li>
  <li>Gul : antalet tveksamma drag som spelades som r repertoaren</li>
  <li>Rd : antalet drag som spelades som inte finns i repertoaren</li>
  <li>Vit : antalet gnger positionen ptrffades</li>
  </ul>
  </p>
  
  <h3>Rapporten</h3>
  <p>
  Rapporten visar statistik fr hela repertoaren och ger information om anvndarens kunskaper :
  <ul>
  <li>Positioner i repertoaren : det totala antalet positioner i repertoaren (alla varianter i databasen)</li>
  <li>Positioner som inte spelats : de positioner som alldrig har ptrffats</li>
  <li>Positioner spelade : de positioner som spelades och summan av antalet gnger de har ptrffats. Notera att
  detta antal representerar antalet frekomster av en position i alla ppningsvarianter : detta antal kan snabbt bli stort
  fr positioner som r nra till startpositionen</li>
  <li>Bra drag : antalet bra drag gjorda av anvndaren</li>
  <li>Tveksamma drag : antalet svaga drag gjorda av anvndaren</li>
  <li>Utanfr repertoaren : antalet drag som anvndaren har gjort som inte finns i repertoaren</li>
  </ul>
  </p> 
  <p><footer>(Uppdaterat: Scid 3.6.11, April 2007)</footer></p>
}

####################
### Correspondence Chess help:
set helpTitle(W,Correspondence) "Korrespondensschack"
set helpText(W,Correspondence) {<h1>Korrespondensschack</h1>

<p>
Scid erbjuder nu tv huvudfunktioner fr korrespondens-
schack.
</p>
<ul>
   <li><b>eMail-schack</b> gr detta genom att skicka det aktuella partiet via eMail
   till din motstndare nr du har gjort ditt drag. Fr detta skapas ett eMail-
   meddelande i ditt fredragna email-program med det aktuella partiet
   bifogat till det i PGN-format. Givetvis tas alla kommentarer och
   variationer bort frst.
   </li>
   <li><b>Korrespondensschackservrar</b> stds med hjlp av
   Xfcc-protokollet. Hr anvnds externa verktyg fr att hmta partierna frn
   ditt/dina konto/konton och levererar dem till Scid fr synkronisering. Efter
   du har gjort ditt drag skickas detta till din motstndare genom
   Xfcc. Hmtnings- och sndningsverktygen r implementerade som externa verktyg fr
   enkel utkning om andra protokoll kommer.
   </li>
</ul>

<p>
Fr att anvnda korrespondensschackfuntioner mste en databas av typ
"Korrespondensschack" ppnas innan ngra
korrespondensschackfunktioner anvnds. OM du inte har en sdan databas
n, skapa bara en ny databas och ange dess typ till "Korrespondensschack"
med funktionen <a Maintenance>Underhll</a>.
Det r viktigt att ange typen s att Scid kommer att knna igen databasen fr
synkronisering genom denna typ. D denna databas r tom efter
skapandet kommer Scid att behandla alla korrespondensschackpartier det fr vid
den frsta synkroniseringen som nya partier och lgga till dem till denna databas.
</p>

<p>
Om ingen databas av typ "Korrespondensschack" r nu ppnad
kommer Scid att pminna dig om att gra s. Men, ppna inte mer n en
databas av denna typ d Scid inte d kan avgra vilken som ska anvndas.
</p>

<h3>Grundfunktionalitet</h3>

<p>
Om allting r korrekt konfigurerat kan anvndningen av korrespondens-
schackfunktionerna ltt ns med fljande knappar:
<ul>
   <li><button tb_CC_Retrieve> Hmtar korrespondensschackpartier.
   Fr detta startas ett externt hmtningsverktyg och alla partier hmtas
   s likvl som andra partier som lagras i Scids Inkorg
   (se nedan) r synkroniserade till den aktuella korrespondensschack-
   databasen.
   </li>
   <li><button tb_CC_Prev> Gr till det frra partiet i Scids Inkorg
   </li>
   <li><button tb_CC_Next> Gr till nsta parti i Scids Inkorg
   </li>
   <li><button tb_CC_Send> Skickar ditt drag till motstndaren genom att antingen
   skapa ett nytt eMail-meddelande i dett fredragna email-program eller genom att
   skicka ett drag till en schackserver om Xfcc anvnds.
   </li>
</ul>
</p>

<h3>Konfiguration</h3>

<p>
Korrespondensschack inom Scid r baserat p en normal Scid-
databas som har partierna och ngra externa verktyg till Scid som
hanterar de "icke-schack-delarna". Dessa verktyg och deras parametrar mste stllas
in en gng, och lagras sedan fr framtida anvndning.
</p>

<p>
Fr att n konfigurationsdialogen vlj <menu>Spela</menu>
<menu>Korrespondensschack</menu><menu>Konfigurera</menu> frn
menyn. Detaljerna beskrivs i <a CCSetupDialog>Korrespondensschack-
instllningar</a>. Nr denna dialog avslutas med <b>[Ok]</b> knappen kommer
dina instllningar automatiskt att lagras.
</p>

<h3>Hmta partierna</h3>
<p>
Beroende p om du spelar korrespondensschack via eMail eller via en
schackserver skiljer sig den aktuella hmtningsprocessen lite. Generellt
resulterar den i ett antal partier i PGN-format placerade i Scids Inkorgs-
katalog. Detta erbjuder ocks mjligheten till automatisk hmtning via
extern programvara.
</p>
<p>
Nr partierna finns i Scids Inkorg kommer <menu>Behandla Inkorg</menu>
frn menyn att bearbeta Inkorgen och lgga till nya drag till
de partier som redan finns i databasen. Dessutom kommer den att lgga till de partier
som inte hittas i den aktuella korrespondensschackdatabasen som nya partier.
</p>

<p><a CCeMailChess>Korrespondensschack via eMail</a> beskriver
detaljerna fr anvndning av eMail, medan <a CCXfcc>Korrespondens-
schack via schackserverar</a> beskriver motsvarande fr korrespondens-
schackservrar.
</p>

<h3>Stega igenom partier</h3>
<p>
Efter att partierna r hmtade laddas de i Scids klippboardsdatabas
och nya drag lggs till och lagras i den ppnade korrespondensschack-
databasen. Det mest bekvma sttet att stega igenom partierna r
genom de tv knapparna <button tb_CC_Prev> och <button tb_CC_Next> som
gr till det tidigare partiet och nstfljande parti. Skillnades i
funktionen frn menyn <menu>Partier</menu> r, att dessa tv
knappar scrollar bara mellan partierna i Scids Inkorg som r
tnkt att vara dina aktuella pgende partier. Givetvis kan
Korrespondensschackdatabasen innehlla mnga fler partier, men
normalt vill du inte g igenom  dessa fr att se vad din
motstndare har gjort fr drag i ett aktuellt parti.
</p>
<p>
Notera att en taggskning krvs med ngra flt som
inte r indexerade av Scid. Drfr r det , inte att rekommendera
att lagra partier i en stor referensdatabas d
sktiderna kan bli ganska lnga. Om du spelar mycket och din egen
databas blir ganska stor, kan sktiden reduceras genom att flytta
avslutade partier till en arkivdatabas, eller genom att bara skapa en ny
databas fr de pgende partierna. Scid kommer att behandla alla partier som inte finns
redan i korrespondensschackdatabasen som nya partier och lgga till dem
automatiskt. Drfr, r det tillrckligt att ppna en tom databas av
typ "Korrespondensschack" och anvnda <menu>Behandla Inkorg</menu> fr att
importera alla nu pgende partier.
</p>
<p>
Motsvarande till de tv nmnda knapparna r <menu>Tidigare
Parti</menu> och <menu>Nsta Parti</menu> frn <menu>Korrepondens-
schack</menu> menyn.
</p>
<p>
Notera att om du anger dina spelarnamn korrekt (i menyn
<menu>Mina Spelarnamn</menu>) kommer Scid att rotera brdet fr dig att
alltid spela uppt. Du kan ha flera spelarnamn. Se ocks <a
Options MyPlayerNames>Mina Spelarnamn</a> fr detaljer.
</p>

<h3>Analysera och gr ett drag</h3>
<p>
Alla analysfunktioner kan anvndas fr korrespondensschackpartier.
Variationer, kommentarer etc. kan lggas till precis som i en normal partianalys.
Nr det r klart, kommer Scid att ta den senaste halvdraget som lades till
partiet och behandla det som det aktuella draget att skicka. Ingen kontroll grs
hr av om bara ett halvdrag lades till eller vilken sida som r vid draget,
drfr, mste bara ett halvdrag i huvudvarianten lggas till!  Om en
schackserver anvnds skickar Scid ocks den senaste kommentaren som lades till
servern vilket kan vara anvndbart fr kommunikationen med motstndaren. I
eMail-schack kan detta gras med det normala email-meddelandet, s dr tas alla
kommmentarer bort.
</p>
<p>
Genom att trycka p Sndknappen <button tb_CC_Send> kommer Scid att msta
bestmma den typ av korrespondensschackparti som visas (eMail eller
ett serverparti) och starta antingen ditt eMail-program eller det externa skicka-
verktyget fr att skicka ditt drag. Att anvnda <menu>Skicka drag</menu> r motsvarande
till denna knapp. Alternativt, kan <menu>eMail drag</menu> anvndas fr att
skicka det aktuella draget via eMail. Om det r ett eMail-parti r denna
funktion motsvarande till <menu>Skicka drag</menu>. Om det r ett server-
baserat parti genereras ett eMail-meddelande. Notera dock, att detta kommer
inte ndvndigtvis att innehlla en riktig mottagare d eMail-addresser inte byts ut
i serverbaserad korrespondensschack.
</p>

<p><footer>(Uppdaterat: Scid 3.6.23, Februari 2008)</footer></p>
}


set helpTitle(W,CCXfcc) "Korrespondensschackservrar"
set helpText(W,CCXfcc) {<h1>Korrespondensschackservrar</h1>

<p>
Det finns flera korrespondensschackserverar p
Internet. Generellt, r de anvnda med en webblsare, s ingen
specifik programvara krvs. Men mnga av dem erbjuder ocks ett
grnssnitt till specialiserad schackprogramvara via ett protokoll kallat Xfcc.
Integrationen av Xfcc grs i Scid via externa hjlpverktyg angivna
i <a CCSetupDialog>Konfiguration</a>-dialogen fr korrespondens-
schack.
</p>

<h3>Starta ett nytt parti</h3>
<p>
Xfcc tillter inte sjlv att ett nytt parti startas. Att ska efter en
motstndare och starta ett parti r istllet hanterat av schackservern
p dess hemsida. Nr partiet r startat kan dock, Scid anvndas fr att hmta
motstndarens drag, lgga till dem till den interna databasen,
analysera osv. Alla funktioner i Scid r till anvndarnas frfogande
men speciella moder av spel kanske inte tillter dem (t.ex.  normala partier
tillter vanligtvis inte anvndande av schackmotorer fr analys).
</p>

<h3>Hmta partier</h3>
<p>
ppna en databas som inehller korrespondensschackpartier. Denna databas
mste vara av typ "Korrespondensschack". 
</p>

Notera: 
<ul>
   <li>Om Scid inte hittar en korrespondensschackdatabas kommer den att
   informera dig att ppna en.
   </li>
   <li>Om databasen inte har partierna som r hmtade frn
   servern behandlas de som nya partier och lggs till databasen
   automatiskt.
   </li>
   <li>Scid kommer att anvnda den frsta databasen av typ "Korrespondensschack"
   som r ppnad. Av denna anledning br bara en sdan databas i taget
   vara ppnad.
   </li>
</ul>
<p>
Xfcc hmtar alltid omedelbart alla partier som finns p en specificerad server fr ditt
anvndarnamn. Fr att hmta partierna klicka bara p <button tb_CC_Retrieve>
ikonen eller vlj <menu>Hmta Partier</menu> frn
<menu>Korrespondensschack</menu>-menyn. D en serveranslutning
krvs fr att hmta nya partier var sker p att systemet har tillgng till ntverket.
Scid kommer att starta hmtningsverktyget som r konfigurerat i 
<a CCSetupDialog>Konfiguration</a>-dialogen vilket kommer att placera
partierna i PGN-format i Scids inkorg. Det kan ta lite tid att hmta
svaret, s vat tlmodig. Efter att partierna r hmtade uppdateras
korrespondensschackdatabasen med dem.
</p>
<p>
Nr partierna r hmtade sks deras motstndare i
korrespondensschackdatabasen och nya drag lggs till dr. D Xfcc
servrar kan erbjuda olika stt att infoga drag (via Internet eller mobil eller
andra program...) kan det vara s att Scid mste lgga till hlften av
partiet till databasen. Detta innebr inget problem. Scid kommer att lgga till alla drag
som fanns i partiet frn servern. Scid kommer dock inte att erstta
partiet frn brjan d etta kan ta bort all din analys.
Drfr r det <b>viktigt att notera</b> att du inte fr infoga drag till
huvudvarianten bortom ditt sista drag! Fr att lgga till fortsttningar var god
och anvnd variationer!
</p>
<p>
Notera att om andra kllor har placerat partier i din inkorg (t.ex. frn
din eMail-korrespondensschack) synkroniseras de ocks i
hmtningen till databasen d hela Inkorgen ocks bearbetas.
Detta tillter att eMail-partier lggs till i Inkorgen, sedan kan du vxla till Scid,
klicka p <button tb_CC_Retrieve> och alla partier r uppdaterade.Partier som inte
nnu finns i datasen behandlas som nya partier och lggs till
databasen.
</p>
<p>
<b>Notering fr programmerare</b>: hmtningsverktyget startas med Inkorgsskvgen som
parameter. Det r tnkt atrt fungera genom alla serverkonton och placera
korrekt formatterade PGN-filer i den skvg som anges till den. Dessa filer
br innehlla ytteliggare flt som r knda av cmail-verktyget.
 (Se <a CCeMailChess>Korrespondensschack via eMail</a> fr
information om de krvda flten.)
</p>

<p><footer>(Uppdaterat: Scid 3.6.23, Februari 2008)</footer></p>
}

#############
# eMail Chess:
set helpTitle(W,CCeMailChess) "Korrespondensschack via eMail"
set helpText(W,CCeMailChess) {<h1>Korrespondensschack via eMail</h1>

<p>
eMail erbjuder ett vldigt bekvmt stt att spela korrespondensschack.
Standardapplikationen fr detta i Un*x-vrden r till idag xboard
tillsammans med dess cmail-hjlpare. D den tillter nstan automatisk
hantering av korrespondensschack-eMail och drutver inte lgger till ngonting
som inte r PGN r det ocks modellen fr Scid att hantera
eMail-schack. Genom att bara bevara hela PGN-huvudet kan sdana partier
spelas med en motstndare som har ett verktyg fr att hantera PGN.
</p>

<h3>eMail-schack</h3>
<p>
Scid kan hantera eMail-korrespondensschackpartier nstan automatiskt.
Det stt p hur detta grs hlls kompatibelt med cmail-verktyget som
kommer med xboard p Un*x system. (Att ha sagt detta antyder att du
kan spela mot en motstndare med cmail/xboard.) Det fungerar genom att skicka
partierna som hela PGN-filer till och frn som email-bilagor, medan
huvudet innehller vissa huvudflt som lter dem knnas igen och
sorteras tillsammans. Av denna anledning mste anvndaren vara noggrann med
att ndra i huvudflten.  Notera att flten med explicita vrden mste
anges till exakt detta vrde fr eMail-schack. Att starta ett parti med
Scid gr det automatiskt, men du <b>fr inte</b> skriva ver
eller ta bort dem!
</p>
<p>
Ndvndiga huvudflt r:
</p>
<ul>
   <li><term>Event</term>: mste vara "Email correspondence game"
   </li>
   <li><term>Site</term>: mste vara "NET"
   </li>
   <li><term>Mode</term>: mste vara "EM"
   </li>
   <li><term>WhiteNA</term>: innehller eMail-addressen fr den vita spelaren. Notera
   att adressen bara lagras dr i formen
   <term>user@host.org</term>.
   </li>
   <li><term>BlackNA</term>: innehller eMail-addressen fr den svarta spelaren
   liknande WhiteNA.
   </li>
   <li><term>CmailGameName</term>: Innehller en <b>unik</b> identifierare fr
   partiet. Detta anvnds fr att sortera partierna.
   <p>
   Medan Scid kan anvnda ngot databasindex r detta inte mjligt fr
   icke-DB-baserade verktyg som cmail. Av denna anledning r
   <term>CmailGameName</term> parametern anvndarinmatad. Den mste vara
   unik! Det enklaste r ngonting avformen
   <term>xx-yy-yyyymmdd</term> dr xx r en beteckning p den vita
   spelaren, yy en beteckning fr den svarta spelaren, och yyyymmdd r det aktuella datumet.
   </p>
   <p>Fr Xfcc-baserade partier mste detta flt anges till en unik
   identifierare men dr kan servernamnet och det unika partinumret p
   denna server anvndas, dvs denna identifierare r av formen
   <term>MyXfccServer-12345</term>.
   </p>
   </li>
</ul>

<h3>Starta ett nytt parti</h3>
<p>
Detta pppnar en dialog fr inmatning av ditt eget och motstndarens namn som
de br vara i huvudet likvl som eMail-addresserna fr
bda spelarna. Bessutom mste ett <b>unikt</b> game ID infogas.
Det enklaste sttet fr detta Game ID r ngonting av formen
<term>xx-yy-yyyymmdd</term> dr xx r en frkortning fr den vita
spelaren, yy fr den svarta spelaren, och yyyymmdd r det aktuella datumet.
Denna Game id r en text och det r viktigt fr att identifiera partierna unikt.
Anvndare av cmail kommer ocks att knna denna Game ID som <i>partinamn</i>. Det fr
brar innehlla bokstveroch sifror, minustecknet och understrykning.
Var god och undvik andra tecken.
</p>
<p>
Efter att dialogen r avslutad genom att trycka p <b>[Ok]</b> knappen lggs ett
nytt parti till den aktuella ppnade korrespondensschackdatabasen
och PGN-huvudet fylls i ordentligt. Gr bara ditt drag och skicka det som
det beskrivs nedan.
</p>

<h3>Hmta partier</h3>

<p>
Scid hanterar inte din emailkorg automatiskt. Detta skulle,
med tanke p den stora variationen p mjliga email-program idag, involvera
en stor mngd programkod. Av denna anledning anvnder Scid ditt normala
eMail-program som r mycket mer lmpligt fr detta syfte n Scid
kan ngonsin bli. Fr att hmta ett parti till Scid spara bara den bifogade PGN-filen
i Scids inkorg och bearbeta inkorgen genom antingen <menu>Hmta
Partier</menu> eller  <button tb_CC_Retrieve> knappen eller
<menu>Bearbeta Inkorgen</menu>. Skillnaden mellan de tv r att
den frsta ocks startar det externa hmtningsverktyget och fyller
Inkorgen ytterliggare med partier frn andra kllor (som Xfcc). Drfr r
<button tb_CC_Retrieve> det mest bekvma sttet om du anvnder bda
typerna av korrespondensschackpartier.
</p>
<p>
<b>Notera</b> att <menu>Hmta Partier</menu> menyn eller  <button
tb_CC_Retrieve> knappen <b>inte</b> hmtar dina eMail-meddelanden! Du
mste spara dina PGN-filer i Scids Inkorg fr hand. Troligtvis kan detta
bli automatiserat av ditt eMail-program (p Un*x system r det enkelt att stta upp en
mime-hanterare genom <term>.mailcap</term>).
</p>

<h3>Skicka svaret</h3>

<p>
Efter att du har gjort ditt drag skicka det antingen med <menu>eMail drag</menu>
funktionen frn menyn via <menu>Skicka drag</menu> vilket r motsvarande till
<button tb_CC_Send>. Fr det senare  mste Scid knna igen partiet
som eMail-korrespondens och skicka det med email medan den fregende metoden
kommer att f Scid att generera ett eMail-meddelande.
</p>
<p>
Givetvis tar Scid bort alla kommentarer och variationer
innan det bifogas i det utgende eMailet d du inte vill skicka med
din analys.
</p>
<p>
Om ett GUI-emailprogram anvnds, ppnas dess vanliga skapafnster.
Addressen p din motstndare fylls i likvl som ett generiskt mne
som innehller game id fr enkel filtrering och bcc-addresses om den
r specificerad i <a CCSetupDialog>Konfigurations</a>-dialogen. Email-
texten r angiven till att innehlla FEN p den sista positionen och listan p
de tidigare gjorda dragen. P detta stt kan motstndaren snabbt se ditt
drag. SlutligenFinally, bifogar Scid det aktuelkla partiet inklusive ditt drag i
PGN-format till email-meddelandet.
</p>
<p>
Nr ett mailx kompatibelt verktyg anvnds ppnas inget fnster och emailet skickas
osynligt geonom att starta verktyget specificerat i bakgrunden. I
detta fall innehller det genererade emailet PGN ven i email-texten.
</p>
<p>
Notera att d eMail-schack fungerar genom att skicka hela PGN-filen fr du inte
lgga till mer n ditt drag. Scid kontrolerar inte hr om
mer n ett drag lades till huvudvarianten, d Scid helt enkelt inte
vet vilket drag det r, d du skickar ditt drag.
</p>
<p><footer>(Uppdaterat: Scid 3.6.23, Februari 2008)</footer></p>
}

#############
# Correspondence Chess setup dialog help:
set helpTitle(W,CCSetupDialog) "Korrespondensschackinstllningar"
set helpText(W,CCSetupDialog) {<h1>Korrespondensschackinstllningar</h1>

<p>
Indata i konfigurationsdialogen finns frdefinierat till vissa standard-
parametrar men dessa mste inte ndvndigtvis matcha ditt system, s
anpassning kommer skert att vara ndvndigt. Alla parametrar lagras i
konfigurationsfilen automatiskt nr dialogen r stngd via
<b>[Ok]</b> knappen. Parametrarna gller d omedelbart.
</p>

<p>
<b>Standarddatabas</b>:
Detta definierar standarddatabasen fr
korrespondensschackpartier. Den kan enkelt ns via
<menu>ppna Databas</menu> i  <menu>Korrespondensschack</menu>
menyn. Frdelen med denna metod r, att databasen inte
visas i <i>senaste databaser</i> listor och att du kan ha en
specifik fil fr detta. Denna databas <b>mste vara</b> av typ
"Korrespondensschack". Att ppna en databas av denna typ p ett annat
stt r ocks ok, s troligtvis vill du ignorera denna instllning
(t.ex. om du startar Scid med din korrespondensschackdatabas vid
uppstart.)
</p>

<p>
<b>Inkorg (skvg)</b>:
I denna katalog sker Scid efter korrespondensschackpartier sparade
i PGN-format. Dessa partier anvnds fr synkroniseringen av
korrespondensschackdatabasen. Generellt, bryr sig inte Scid om hur
partierna kommer till denna katalog. Scid kommer bara att arbeta sig igenom alla PGN-filer
som finns dr. Detta ger mjlighet att anvnda ngra externa verktyg
fr att hmta partier till denna plats. Drutver, i eMail-schack br man
bara spara PGN-filerna frn motstndaren i denna
katalog.
</p>
<p>
Scid kommer inte att lsa en mailkorg, utan hanterar bara
alla PGN-filer som r placerade i denna katalog. Notera ocks, att Scid kommer att
synkronisera partie med den aktuella databasen. Men, om ett parti
frn denna katalog inte nnu finns i databasen kommer det att
behandlas som ett nytt parti och lggas till databasen.
</p>
<p>
Fr att synkroniseringsprocessen ska fungera mste PGN-filerna innehlla
ngon ytterliggare huvudinformation som r i perfekt enlighet med
PGN-standarden. Var god och konsulera <a
CCeMailChess>)Korrespondensschack via eMail</a> om du vill skapa
ditt eget verktyg eller om du flyttar data frn ngot annat system.
</p>

<p>
<b>Utkorg (skvg)</b>:
Motsatsen till <i>Inkorgen</i>. Scid placerar hr PGN-filer fr de
utgnde partierna. Fr eMail-schack r detta ndvndigt d PGN-filerna mste
bifogas till ett eMail-meddelande.  Fr Xfcc, dr bara draget skickas
, r detta inte ndvndigt, men Utkorgskatalogen erbjuder
ett bekvmt stt att koppla upp din PDA eller ngon annan anvndning d
PGN-filerna i Utkorgen ocks kommer att innehlla ditt senaste drag.
</p>

<p>
<b>Hmtningsverktyg</b>:
Detta program startas fr att hmta korrespondensschack-
partier frn en korrespondensschackserver. Denna hjlpare mste bara
hmta partier frn den klla den tycker om, generera en korrekt PGN-
fil med de ndvndiga PGN-taggarna. Verktyg fr att hmta partier
frn Xfcc-servrar finns som externa program och dessa r de naturliga
verktygen att stlla in hr. Fr framtida protokoll kan man enkelt generera
ett externt hmtningsverktyg som hanterar detta protokoll. ven automatisering
r mjlig om denna funktionalitet r gjord externt.
</p>
<p>
Notera: Detta verktug r <b>inte</b> startat fr hmtning av eMailschack-
meddelanden!
</p>

<p>
<b>Skickaverktyg</b>: 
Detta r motsatsen till hmtningsverktygen, primrt ven avsett fr Xfcc
support eller ngon annat framtida protokoll som kan dyka upp. Skickaverktyget,
dock, startas frn Scid med flera parametrar som ser ut som:
<term>
SendTool Outbox Name GameID MoveCount Move "Comment" resign claimDraw offerDraw acceptDraw
</term>
</p>

<p>
Betydelsen av parametrarna r som fljer:
   <ul>
      <li><term>Outbox</term>: Utkorgsskvgen anges i denna dialog. Skicka-
      verktyget ska generera en korrekt formatterad PGN-fil
      dr.
      </li>
      <li><term>Name</term>: Namnet p spelaren vid draget som str
      i PGN-fltet. Fr Xfcc r detta loginnamnet. Det r
      identiskt som spelarnamnet i PGN-huvudet.
      </li>
      <li><term>MoveCount</term>: Dragnummer att skicka.
      </li>
      <li><term>Move</term>: Det aktuella draget i SAN.
      </li>
      <li><term>"Comment"</term>: En kommentar skickad till motstndaren. Scid
      infogar den sista kommentaren i partiet. Dvs dessa kommentarer r
      behandlade som kommentarer till motstndaren. Notera att kommentaren r
      citerad, s flerradiga kommentarer br vara mjligt.
      </li>
      <li><term>resign</term>: 0 eller 1, specificerar om anvndaren
      vill ge upp. Ange till 1 om anvndaren anvnder
      <menu>Ge upp</menu> frn <menu>Korrespondensschack</menu>
      menyn.
      </li>
      <li><term>claimDraw</term>: 0 eller 1, specificerar om anvndaren
      vill ha krver remi. Ange till 1 om anvndaren anvnder
      <menu>Krv remi</menu> frn <menu>Korrespondensschack</menu>
      menyn.
      </li>
      <li><term>offerDraw</term>: 0 eller 1, specificerar om anvndaren
      vill erbjuda remi. Ange till 1 om anvndaren anvnder <menu>Erbjud
      remi</menu> frn <menu>Korrespondensschack</menu> menyn.
      </li>
      <li><term>acceptDraw</term>: 0 eller 1, specificerar om anvndaren
      vill acceptera en remi som erbjuds av motstndaren. Ange till 1 om
      anvndaren anvnder <menu>Acceptera remi</menu> frn
      <menu>Korrespondensschack</menu>
      menyn.
      </li>
   </ul>
</p>
<p>
Notera: Denna funktion r <b>not</b> startat fr eMail-schack!
</p>

<p>
<b>eMail-program</b>:
Detta anger skvgen till ditt fredragna eMail-program. Detta program startas
fr eMail-schack fr att skriva ett meddelande till motstndaren.
</p>

<p>
<b>(B)CC-Address</b>:
En kopia p det utgene meddelandet skickas till denna address som en kopia.
Notera dock, att om ett GUI-emailprogram anvnds har det normalt sin egen
utgende email-hantering. Drfr, kan angivande av denna address duplicera
meddelanden. Det kan dock anvndas fr att skicka ett parti till en annan address.
</p>

<p>
<b>Mod</b>:
Olyckligtvis finns det ett stort antal email-klienter och de anvnder
vldigt olika startkonventioner. Ngra vanliga konventioner, och
exempel p program som anvnder dem, listas hr. Emailprogrammet
kommer att startas med den valda konventionen. Om det inte r knt
vilken konvention som anvnds kan en av alternativen kanske matcha och
fungera. Notera dock att ett stort antal emailprogram r inte
kapabla att skicka bilagor nr de startas av ett annat program. I
detta fall mste du antingen byta din email-klient eller lgga till de bilagor
som har placerats i Scids Utkorg manuellt.
</p>
<p>Tips: mailx eller en av dess mnga kloner br vara tillgngliga som en
kommandoradsapplikation p nstan alla system som ett enkelt att stlla in
verktyg. Om ingen av dessa konventioner fungerar med din fredragna
klient eller om denna klient inte kan hantera email med bilagor via startande frn
kommandoraden, kan installation av mailx vara ett alternativ.
</p>
<p>Tips: mutt anvnder systemets emailtransport (dvs
sendmail/exim/postfix). Att stlla in dem r (troligtvis) inte enkelt
s mutt r ett perfekt alternativ. P en ordentlig Un*x med riktiga
instllningar br det vara det mest enkla sttet att hantera eMail-schack.
(Men det finns inte mnga korrekt instllda system , speciellt inte i
Linuxvrlden.)
</p>
<p>
<b>Bilageparameter</b>: 
Denna parameter anvnds fr att specificera en bilaga. Detta anvnds <b>bara</b>
i <term>mailx</term> mod.
</p>
<p>
<b>mnesparameter</b>:
Denna parameter anvnds fr att specificera mnet fr email-meddelandet. Det
anvnds <b>bara</b> i <term>mailx</term> mod.
</p>
<p><footer>(Uppdaterat: Scid 3.6.23, Februari 2008)</footer></p>
}
############################################################
#
# Swedish tip of the day:

set tips(W) {
  {
    Scid har ver 30 <a Index>Hjlpsidor</a>, och i de flesta fnster kan du
    genom att trycka <b>F1</b> f hjlp om det fnster du fr tillfllet har
    aktivt.
  }
  {
    Vissa fnster (t ex Partiinformation och <a Switcher>Databasvljaren</a>) 
    har en meny fr hger musknapp. Prova att hgerklicka i varje fnster s
    ser du vilka som har det och vilka funktioner du kommer t den vgen.
  }
  {
    Du kan ange drag p mer n ett stt, s du kan vlja vilket som passar dig
    bst. Du kan anvnda musen (med eller utan dragfrslag) eller tangentbordet
    (med eller utan autokomplettering). Ls hjlpsidan fr 
    <a Moves>Att ange drag</a> fr mer information.
  }
  {
    Om du har databaser du ofta ppnar s kan du lgga till ett 
    <a Bookmarks>Bokmrke</a> fr varje databas. Du kommer d att kunna ppna 
    databaserna snabbare via bokmrkesmenyn.
  }
  {
    Du kan se alla drag i det aktuella partiet (inklusive varianter och kommentarer)
    genom att ppna <a PGN>PGN-fnstret</a>.
    Du navigerar igenom partiet i PGN-fnstret genom att klicka p valfritt drag med
    vnster musknapp. Genom att klicka p draget med mellan- eller hgermusknapp s
    fr du en frhandsvisning av just den stllningen.
  }
  {
    Du kan kopiera partier mellan databaserna i <a Switcher>Databasvljaren</a> genom
    att dra-och-slppa dem mellan respektive databas.
  }
  {
    Scid kan ppna PGN filer, ven de som r komprimerade med Gzip (dvs har en .gz filndelse). 
    PGN filer ppnas med enbart lsrttigheter, s om du vill redigera en PGN-fil i Scid 
    mste du kopiera filen till en Scid-databas med hjlp av <a Switcher>Databasvljaren</a>.
  }
  {
    Om du ofta anvnder <a Tree>Trdfnstret</a> med stora databaser, r det vrt att vlja
    <b>Fyll cachefil</b> frn Arkivmenyn i Trdfnstret. Detta innebr att trdstatistik fr 
    mnga av de vanligare stllningarna sparas, vilket ger en snabbare trdtkomst fr databasen
    ifrga.
  }
  {
    <a Tree>Trdfnstret</a> kan visa alla drag frn den aktuella stllningen. Men om ocks vill 
    se alla dragfljder som har lett till denna stllning kan du f fram det genom att skapa en
   <a OpReport>ppningsrapport</a>.
  }
  {
    Du kan vnster- eller hgerklicka i en kolumn i <a GameList>Partilistan</a> fr att ndra 
    dess bredd.
  }
  {
    Med <a PInfo>Spelarinformationen</a> aktuell (klicka p endera spelarens namn under brdet i 
    huvudfnstret fr att f fram den) r det enkelt att <a Searches filtret>Filtrera</a> fram partier
    av en srskild spelares enskilda resultat. Klicka bara p valfritt vrde som har angivits med
    <red>rd text</red>.
  }
  {
    Nr du studerar ppningar kan det vara en pong att markera valen <b>Bnder</b> eller <b>Filer</b> i 
    <a Searches Board>Sk aktuell position</a>. Genom dessa val kan du hitta andra ppningar som ger
    liknande bondestrukturer.
  }
  {
    Du kan hgerklicka i partiinformationsdelen av huvudfnstret (under brdet) fr att f fram en 
    kontextmeny. Du kan t ex gra s att Scid dljer nsta drag i ett parti, vilket kan vara anvndbart 
    om du vill trna genom att "gissa" nsta drag.
  }
  {
    Om du ofta <a Maintenance>Underhller</a> stora databaser kan du utfra flera underhllsuppgifter 
    vid samma tillflle via <a Maintenance Cleaner>Databasverktyget</a>.
  }
  {
    Om du har en stor databas dr de flesta partierna har ett evenemangsdatum och du vill ha partierna i 
    datumordning br du vervga att <a Sorting>Sortera</a> den p evenemangsdatum i frsta hand och 
    evenemang i andra hand, istllet fr datum och evenemang, d detta kommer att hlla turneringspartierna
    frn olika datum samman. (Under frutsttning att alla partier har samma evenemangsdatum naturligtvis).
    Alternativt kan du se till att flten evenemang, rond och datum r s enhetliga och korrekta som mjligt.
    (ms).
  }
  {
    Det kan vara en bra id att <a Maintenance Spellcheck>Stavningskontrollera</a> din databas innan du 
    <a Maintenance Twins>Tar bort dubbletter</a> d Scid har strre mjlighet att hitta dubbletterna och 
    markera dessa fr borttagning.
  }
  {
    <a Flags>Flaggor</a> r anvndbara fr att markera upp partier med karaktristika du vill ska p senare,
    ssom bondestllning, taktiska finesser, osv. Du kan ska p flaggor nr du sker p flt i partihuvudet.
  }
  {
    Om du gr igenom ett parti, och helt enkelt vill testa en ny variant utan att frndra partiet i sig, kan 
    du sl p Frskslget (Trial mode) genom att trycka <b>Ctrl+Mellanslag</b> eller frn verktygsraden. terg till
    ursprungspartiet nr du r klar.
  }
  {
    Om du vill hitta det mest betydelsefulla partiet (med hgst rankade spelare) i en viss position kan du
    ppna <a Tree>Trdfnstret</a> och i denna ppna listan med de bsta partierna. I trdfnstret kan du till
    och med begrnsa partierna till endast ett srskilt resultat.
  }
  {
    Ett bra stt att studera en ppning r att i en stor databas sl p trningslget i <a Tree>Trdfnstret</a>, 
    och sedan spela igenom databasen fr att se vilka varianter som frekommer oftast.
  }
  {
    Om du har tv databaser ppna, och vill ha ett varianttrd att studera medan du gr igenom ett parti
    i den andra databasen kan du <b>Lsa</b> trdet i den databasen och sedan byta till den andra.
  }
  {
    <a Tmt>Turneringsskaren</a> r inte bara anvndbar fr att lokalisera en srskild 
    turnering. Du kan ocks anvnda den fr att ska efter turneringar en specifik spelare nyligen deltagit 
    i, eller att blddra genom turneringar som genomfrts i ett visst land.
  }
  {
    Det finns ett antal vanliga stllningstyper definierade i <a Searches Material>Sk Material/Stllning</a>
    fnstret som du kan ha nytta av nr du studerar ppningar och mittspel.
  }
  {
    Nr du sker p <a Searches Material>Material eller Stllning</a> kan det ofta vara frdelaktigt att begrnsa
    skningen till sdana partier dr stllningen eller materialet frekommit i tminstone ngra drag. Du slipper
    du f med trffar dr situationen du sker uppkom helt tillflligt.
  }
  {
    Om du har en viktig databas du inte vill radera av misstag kan du vlja  <b>Enbart lsbar</b> frn <b>Arkiv</b>
    menyn efter att du har ppnat den. Alternativt kan du stta dess filrttigheter till enbart lsrttigheter.
  }
  {
    Om du anvnder XBoard eller WinBoard (eller ngot annat program som kan hantera FEN-notation via Urklippshanteraren)
    och vill kopiera den aktuella stllningen frn ditt program r det snabbaste sttet att gra det s hr:
    Vlj <b>Kopiera position</b> frn <b>Arkiv</b>-menyn i Xboard/Winboard, vlj sedan <b>Klistra i utgngsstllning</b>
    i Redigera menyn i Scid.
  }
  {
    I <a Searches Header>Sk i huvud</a>, r spelare-, evenemang-, plats-, och rondnamn oknsliga fr VERSALER och
    gemener och ger trffar varhelst de finns i ett namn. Om du vill kan du ange att du istllet vill att skningen <b>ska</b>
    ta VERSALER/gemener i beaktande. Genom att anvnda jokertecken inom citationstecken (dr "?" = motsvarar obestmt
    enskilt tecken och "*" = noll eller flera tecken). Om du exempelvis anger "*BEL" (med citationstecken) i det platsfltet
    hittar du alla partier spelade i Belgien, men exkluderar de som spelats i Belgrad.
  }
  {
    Om du vill redigera ett drag i ett parti utan att frlora alla de drag som spelats efter detta kan du ppna
    <a Import>Importera ett parti i PGN-format</a> fnstret i Verktygsmenyn. Klicka dr p <b>Klistra i aktuellt parti</b> 
    , redigera partiet och avsluta med <b>Importera</b>.
  }
  {
    Om du har en ECO klassificeringsfil laddad, kan du n den mest exakt klassificerade stllningen fr det aktuella partiet
    genom att vlja <b>Identifiera ppning</b> i <b>Partier</b> menyn (kortkommando: <b>Ctrl+Shift+D</b>).
  }
  {
    Nr du vill se hur stor en fil r, eller vill se nr den senast redigerades innan du ppnar den kan du anvnda
    <a Finder>Sk filer</a> (Arkiv - Sk filer).
  }
  {
    En <a repetoire>Repetoarfil</a> r ett utmrkt stt att hlla koll p dina favoritppningar, eller hitta partier dr
    dr de har spelats. Nr du vl har skapat en repetoarfil kan du genomska nya filer utifrn repetoarfilen, och titta 
    igenom alla partier med just dina ppningar.
  }
  {
    Genom att skapa en <a OpReport>ppningsrapport</a> har du en utmrkt mjlighet att lra dig en ny spelppning. Du kan f
    information om resultat, hur remiaktig den r, vilka vanliga positionella teman som dyker upp, och mycket mer.
  }
  {
    Du kan kommentera den aktuella stllningen med de vanligaste symbolerna (!, !?, +=, etc) utan att behva anvnda 
    <a Comment>Kommentarseditorn<a>. Dr du exempelvis vill ange ett bra drag skriver du "!" och trycker sedan ENTER
    s lggs "!" symbolen till draget. Se ven hjlpsidan <a Moves>Ange drag</a> fr mer detaljerad information.
  }
  {
    Om du blddrar igenom ppningarna i en databas i <a Tree>Trdfnstret</a>, fr du en anvndbar verblick ver hur
    vl ppningen fungerar i sentida partier mellan hgratade spelare om du ppnar statistikfnstret (kortkommando: Ctrl+I).
  }
  {
    Du ndrar enkelt huvudfnstrets brdstorlek genom att hlla nere <b>Ctrl</b> och <b>Shift</b> tangenterna, samtidigt
    som du trycker hger- eller vnster piltangent.
  }
  {
    Efter genomfrd <a Searches>Skning</a>, r det enkelt att navigera genom urvalet genom att hlla nere <b>Ctrl</b> 
    tangenten samtidigt som du trycker upp- eller nerpiltangenterna fr att g till fregende eller nsta parti i 
    <a Searches filtret>Urvalet</a>.
  }
{
  Du kan relativt enkelt rita pilar och frga rutor till dina kommentarer. ppna <b>Kommentarseditorn</b>, klicka p <b>Infoga symbol</b> och vlj nskad frg. Om du nu klickar p en frsta ruta, och drefter klickar p en andra s dras en pil i nskad frg frn den frsta till den andra rutan. Klickar du bara p en ruta, blir den frgad.
  }
}
#}




































































###
### uci.tcl: part of Scid.
### Copyright (C) 2007  Pascal Georges
###
######################################################################
### add UCI engine support

namespace eval uci {
    # will contain the UCI engine options saved
    variable newOptions {}
    
    # set pipe ""
    set uciOptions {}
    set optList {}
    set oldOptions ""
    array set check ""
    
    set autoSaveOptions 0 ; # UCI options are saved as soon as the options dialog is closed
    set autoSaveOptionsIndex -1
    
    # The list of token that comes with info
    set infoToken { depth seldepth time nodes pv multipv score cp mate lowerbound upperbound \
                currmove currmovenumber hashfull nps tbhits sbhits cpuload string refutation currline }
    set optionToken {name type default min max var }
    set optionImportant { MultiPV Hash OwnBook BookFile UCI_LimitStrength UCI_Elo }
    set optionToKeep { UCI_LimitStrength UCI_Elo UCI_ShredderbasesPath }
    array set uciInfo {}
    ################################################################################
    #
    ################################################################################
    proc resetUciInfo { { n 1 }} {
        global ::uci::uciInfo
        set uciInfo(depth$n) 0
        set uciInfo(seldepth$n) 0
        set uciInfo(time$n) 0
        set uciInfo(nodes$n) 0
        set uciInfo(pv$n) ""
        set uciInfo(multipv$n) ""
        # set uciInfo(pvlist$n) {}
        # set uciInfo(score$n) ""
        set uciInfo(tmp_score$n) ""
        set uciInfo(scoremate$n) 0
        set uciInfo(currmove$n) ""
        set uciInfo(currmovenumber$n) 0
        set uciInfo(hashfull$n) 0
        set uciInfo(nps$n) 0
        set uciInfo(tbhits$n) 0
        set uciInfo(sbhits$n) 0
        set uciInfo(cpuload$n) 0
        set uciInfo(string$n) ""
        set uciInfo(refutation$n) ""
        set uciInfo(currline$n) ""
        # set uciInfo(bestmove$n) ""
    }
    ################################################################################
    # if analyze = 0 -> engine mode
    # if analyze = 1 -> analysis mode
    ################################################################################
    proc  processAnalysisInput { { n 1 } { analyze 1 } } {
        global analysis ::uci::uciInfo
        
        if {$analyze} {
            set pipe $analysis(pipe$n)
            if { ! [ ::checkEngineIsAlive $n ] } { return }
        } else  {
            set analysis(fen$n) ""
            set pipe $uciInfo(pipe$n)
            if { ! [ ::uci::checkEngineIsAlive $n ] } { return }
        }
        
        if {$analyze} {
            if {! $analysis(seen$n)} {
                set analysis(seen$n) 1
                logEngineNote $n {First line from engine seen; sending it initial commands now.}
                # in order to get options, engine should end reply with "uciok"
                ::sendToEngine $n "uci"
            }
        } else  {
            if {! $uciInfo(seen$n)} {
                set uciInfo(seen$n) 1
                logEngineNote $n {First line from engine seen; sending it initial commands now.}
                ::uci::sendToEngine $n "uci"
            }
        }

        after idle "after 1 ::uci::processInput_ $n $analyze"
        fileevent $pipe readable {}
    }

    proc processInput_ { {n} {analyze} } {
        global analysis ::uci::uciInfo ::uci::infoToken ::uci::optionToken
        
        if {$analyze} {
            set pipe $analysis(pipe$n)
            if { ! [ ::checkEngineIsAlive $n ] } { return }
        } else  {
            set analysis(fen$n) ""
            set pipe $uciInfo(pipe$n)
            if { ! [ ::uci::checkEngineIsAlive $n ] } { return }
        }

        # Get one line from the engine:
        set line [gets $pipe]
        if {$line == ""} {
            fileevent $pipe readable "::uci::processAnalysisInput $n $analyze"
            return
        }

        after idle "after 1 ::uci::processInput_ $n $analyze"
        
        # puts ">> $line"
        
        # To speed up parsing of engine's output. Should be removed if currmove info is used
        # if {[string first "info currmove" $line ] == 0} { return }
        
        logEngine $n "Engine: $line"

        if {[string match "bestmove*" $line]} {
            set data [split $line]
            set uciInfo(bestmove$n) [lindex $data 1]
            # get ponder move
            if {[lindex $data 2] == "ponder"} {
                set uciInfo(ponder$n) [lindex $data 3]
            } else {
                set uciInfo(ponder$n) ""
            }
            set analysis(waitForBestMove$n) 0
            return
        }
        
        if {[string match "id *name *" $line]} {
            set name [ regsub {id[ ]?name[ ]?} $line "" ]
            if {$analyze} {
                set analysis(name$n) $name
            } else  {
                set uciInfo(name$n) $name
            }
            
            if {$n == 1} {
                catch {wm title .analysisWin$n "Scid: Analysis: $name"}
            } else {
                catch {wm title .analysisWin$n "Scid: Analysis $n: $name"}
            }
        }
        
        set toBeFormatted 0
        # parse an info line
        if {[string first "info" $line ] == 0} {
            if {$analysis(waitForReadyOk$n)} { return }
            resetUciInfo $n
            set data [split $line]
            set length [llength $data]
            for {set i 0} {$i < $length } {incr i} {
                set t [lindex $data $i]
                if { $t == "info" } { continue }
                if { $t == "depth" } { incr i ; set uciInfo(depth$n) [ lindex $data $i ] ; continue }
                if { $t == "seldepth" } { incr i ; set uciInfo(seldepth$n) [ lindex $data $i ] ; set analysis(seldepth$n) $uciInfo(seldepth$n) ; continue }
                if { $t == "time" } { incr i ; set uciInfo(time$n) [ lindex $data $i ] ; continue }
                if { $t == "nodes" } { incr i ; set uciInfo(nodes$n) [ lindex $data $i ] ; continue }
                if { $t == "pv" } {
                    incr i
                    set uciInfo(pv$n) [ lindex $data $i ]
                    incr i
                    while { [ lsearch -exact $infoToken [ lindex $data $i ] ] == -1 && $i < $length } {
                        append uciInfo(pv$n) " " [ lindex $data $i ]
                        incr i
                    }
                    set toBeFormatted 1
                    incr i -1
                    continue
                }
                if { $t == "multipv" } { incr i ; set uciInfo(multipv$n) [ lindex $data $i ] ; continue }
                if { $t == "score" } {
                    incr i
                    set next [ lindex $data $i ]
                    # Needed for Prodeo, which is not UCI compliant
                    if { $next != "cp" && $next != "mate" } {
                        return
                    }
                    if { $next == "cp" } {
                        incr i
                        set uciInfo(tmp_score$n) [ lindex $data $i ]
                    }
                    if { $next == "mate" } {
                        incr i
                        set next [ lindex $data $i ]
                        set uciInfo(scoremate$n) $next
                        if { $next < 0} {
                            set uciInfo(tmp_score$n) [expr {-32767 - 2 * $next}]
                        } else  {
                            set uciInfo(tmp_score$n) [expr {32767 - 2 * $next}]
                        }
                    }
                    # convert the score to white's perspective (not engine's one)
                    if { $analysis(fen$n) == "" } {
                        set side [string index [sc_pos side] 0]
                    } else {
                        set side [lindex [split $analysis(fen$n)] 1]
                    }
                    if { $side == "b"} {
                        set uciInfo(tmp_score$n) [ expr 0.0 - $uciInfo(tmp_score$n) ]
                        if { $uciInfo(scoremate$n) } {
                            set uciInfo(scoremate$n) [ expr 0 - $uciInfo(scoremate$n) ]
                            if { $uciInfo(tmp_score$n) < 0 } {
                                set uciInfo(tmp_score$n) [ expr {$uciInfo(tmp_score$n) - 1.0} ]
                            }
                        }
                    } elseif { $uciInfo(scoremate$n) && $uciInfo(tmp_score$n) > 0 } {
                        set uciInfo(tmp_score$n) [ expr {$uciInfo(tmp_score$n) + 1.0} ]
                    }
                    set uciInfo(tmp_score$n) [expr {double($uciInfo(tmp_score$n)) / 100.0} ]
                    
                    # don't consider lowerbound & upperbound score info
                    continue
                }
                if { $t == "currmove" } { incr i ; set uciInfo(currmove$n) [ lindex $data $i ] ; set analysis(currmove$n) [formatPv $uciInfo(currmove$n) $analysis(fen$n)] ; continue}
                if { $t == "currmovenumber" } { incr i ; set uciInfo(currmovenumber$n) [ lindex $data $i ] ; set analysis(currmovenumber$n) $uciInfo(currmovenumber$n) ; continue}
                if { $t == "hashfull" } { incr i ; set uciInfo(hashfull$n) [ lindex $data $i ] ; set analysis(hashfull$n) $uciInfo(hashfull$n) ; continue}
                if { $t == "nps" } { incr i ; set uciInfo(nps$n) [ lindex $data $i ] ; set analysis(nps$n) $uciInfo(nps$n) ; continue}
                if { $t == "tbhits" } { incr i ; set uciInfo(tbhits$n) [ lindex $data $i ] ; set analysis(tbhits$n) $uciInfo(tbhits$n) ; continue}
                if { $t == "sbhits" } { incr i ; set uciInfo(sbhits$n) [ lindex $data $i ] ; set analysis(sbhits$n) $uciInfo(sbhits$n) ; continue}
                if { $t == "cpuload" } { incr i ; set uciInfo(cpuload$n) [ lindex $data $i ] ; set analysis(cpuload$n) $uciInfo(cpuload$n) ; continue}
                if { $t == "string" } {
                    incr i
                    while { $i < $length } {
                        append uciInfo(string$n) [ lindex $data $i ] " "
                        incr i
                    }
                    break
                }
                # TODO parse following tokens if necessary  : refutation currline
                if { $t == "refutation" } { continue }
                if { $t == "currline" } { continue }
            };# end for data loop
            
            # return if no interesting info
            if { $uciInfo(tmp_score$n) == "" || $uciInfo(pv$n) == "" } {
                if {$analyze} {
                    updateAnalysisText $n
                }
                return
            }
            
            # handle the case an UCI engine does not send multiPV
            if { $uciInfo(multipv$n) == "" } { set uciInfo(multipv$n) 1 }
            
            if { $uciInfo(multipv$n) == 1 } {
                set uciInfo(score$n) $uciInfo(tmp_score$n)
            }
            
            if { $uciInfo(multipv$n) == 1 && $analyze} {
                # this is the best line
                set analysis(prev_depth$n) $analysis(depth$n)
                set analysis(depth$n) $uciInfo(depth$n)
                set analysis(score$n) $uciInfo(score$n)
                set analysis(scoremate$n) $uciInfo(scoremate$n)
                set analysis(moves$n) $uciInfo(pv$n)
                set analysis(time$n) [expr {double($uciInfo(time$n)) / 1000.0} ]
                set analysis(nodes$n) [calculateNodes $uciInfo(nodes$n) ]
            }
            
            set pvRaw $uciInfo(pv$n)
            
            # convert to something more readable
            if ($toBeFormatted) {
                set uciInfo(pv$n) [formatPv $uciInfo(pv$n) $analysis(fen$n)]
                set toBeFormatted 0
            }
            
            set idx [ expr $uciInfo(multipv$n) -1 ]
            
            # was if $analyze etc..
            if { $idx < $analysis(multiPVCount$n) } {
                set tmpTime [expr {double($uciInfo(time$n)) / 1000.0}]
                if {$idx < [llength $analysis(multiPV$n)]} {
                    lset analysis(multiPV$n) $idx "$uciInfo(depth$n) $uciInfo(tmp_score$n) [list $uciInfo(pv$n)] $uciInfo(scoremate$n) $tmpTime"
                    lset analysis(multiPVraw$n) $idx "$uciInfo(depth$n) $uciInfo(tmp_score$n) [list $pvRaw] $uciInfo(scoremate$n) $tmpTime"
                } else  {
                    lappend analysis(multiPV$n) "$uciInfo(depth$n) $uciInfo(tmp_score$n) [list $uciInfo(pv$n)] $uciInfo(scoremate$n) $tmpTime"
                    lappend analysis(multiPVraw$n) "$uciInfo(depth$n) $uciInfo(tmp_score$n) [list $pvRaw] $uciInfo(scoremate$n) $tmpTime"
                }
            }
            
        } ;# end of info line
        
        # the UCI engine answers to <uci> command
        if { $line == "uciok"} {
            if {$analysis(waitForUciOk$n)} {
                set analysis(waitForUciOk$n) 0
            }
            resetUciInfo $n
            sendUCIoptions $n
            if {$analyze} {
                set analysis(uciok$n) 1
                startAnalyzeMode $n
            } else  {
                set uciInfo(uciok$n) 1
            }
        }
        
        # the UCI engine answers to <isready> command
        if { $line == "readyok"} {
            set analysis(waitForReadyOk$n) 0
            return
        }
        
        # get options and save only part of data
        if { [string first "option name" $line] == 0 && $analyze } {
            set min "" ; set max ""
            set data [split $line]
            set length [llength $data]
            for {set i 0} {$i < $length} {incr i} {
                set t [lindex $data $i]
                if {$t == "name"} {
                    incr i
                    set name [ lindex $data $i ]
                    incr i
                    while { [ lsearch -exact $optionToken [ lindex $data $i ] ] == -1 && $i < $length } {
                        append name " " [ lindex $data $i ]
                        incr i
                    }
                    incr i -1
                    continue
                }
                if {$t == "min"} { incr i ; set min [ lindex $data $i ] ; continue }
                if {$t == "max"} {incr i ; set max [ lindex $data $i ] ; continue }
            }
            lappend analysis(uciOptions$n) [ list $name $min $max ]
        }
        if {$analyze} {
            updateAnalysisText $n
        }
    }
    ################################################################################
    #
    ################################################################################
    proc readUCI { n } {
        global ::uci::uciOptions
        
        set line [string trim [gets $::uci::uciInfo(pipe$n)] ]
        # end of options
        if {$line == "uciok"} {
            # we got all options, stop engine
            closeUCIengine $n 1
            uciConfigWin
        }
        # get options
        if { [string first "option name" $line] == 0 } {
            lappend uciOptions $line
        }
    }
    ################################################################################
    # build a dialog with UCI options published by the engine
    # and available in analysis(uciOptions)
    ################################################################################
    proc uciConfig { n cmd arg dir options } {
        global ::uci::uciOptions ::uci::oldOptions
        
        if {[info exists ::uci::uciInfo(pipe$n)]} {
            if {$::uci::uciInfo(pipe$n) != ""} {
                tk_messageBox -title "Scid" -icon warning -type ok -message "An engine is already running"
                return
            }
        }
        set oldOptions $options
        
        # If the analysis directory is not current dir, cd to it:
        set oldpwd ""
        if {$dir != "."} {
            set oldpwd [pwd]
            catch {cd $dir}
        }
        # Try to execute the analysis program:
        if {[catch {set pipe [open "| [list $cmd] $arg" "r+"]} result]} {
            if {$oldpwd != ""} { catch {cd $oldpwd} }
            tk_messageBox -title "Scid: error starting UCI engine" \
                    -icon warning -type ok -message "Unable to start the program:\n$cmd"
            return
        }
        
        set ::uci::uciInfo(pipe$n) $pipe
        
        # Configure pipe for line buffering and non-blocking mode:
        fconfigure $pipe -buffering full -blocking 0
        fileevent $pipe readable "::uci::readUCI $n"
        
        # Return to original dir if necessary:
        if {$oldpwd != ""} { catch {cd $oldpwd} }
        
        set uciOptions {}
        
        puts $pipe "uci"
        flush $pipe
        
        # give a few seconds for the engine to output its options, then automatically kill it
        # (to handle xboard engines)
        after 5000  "::uci::closeUCIengine $n 0"
    }
    
    ################################################################################
    #   builds the dialog for UCI engine configuration
    ################################################################################
    proc uciConfigWin {} {
        global ::uci::uciOptions ::uci::optList ::uci::optionToken ::uci::oldOptions ::uci::optionImportant
        
        set w .uciConfigWin
        if { [winfo exists $w]} { return }
        toplevel $w
        wm title $w $::tr(ConfigureUCIengine)
        ::scrolledframe::scrolledframe .uciConfigWin.sf -xscrollcommand {.uciConfigWin.hs set} -yscrollcommand {.uciConfigWin.vs set} \
                -fill both -width 1000 -height 600
        ttk::scrollbar .uciConfigWin.vs -command {.uciConfigWin.sf yview}
        ttk::scrollbar .uciConfigWin.hs -command {.uciConfigWin.sf xview} -orient horizontal
        grid .uciConfigWin.sf -row 0 -column 0 -sticky nsew
        grid .uciConfigWin.vs -row 0 -column 1 -sticky ns
        grid .uciConfigWin.hs -row 1 -column 0 -sticky ew
        grid rowconfigure .uciConfigWin 0 -weight 1
        grid columnconfigure .uciConfigWin 0 -weight 1
        set w .uciConfigWin.sf.scrolled
        
        proc tokeep {opt} {
            foreach tokeep $::uci::optionToKeep {
                if { [lsearch $opt $tokeep] != -1 } {
                    return 1
                }
            }
            return 0
        }
        
        set optList ""
        array set elt {}
        foreach opt $uciOptions {
            set elt(name) "" ; set elt(type) "" ; set elt(default) "" ; set elt(min) "" ; set elt(max) "" ; set elt(var) ""
            set data [split $opt]
            # skip options starting with UCI_ and Ponder
            # some engines like shredder use UCI_* options that should not be ignored
            
            if { ![tokeep $opt] && ( [ lsearch -glob $data "UCI_*" ] != -1 || [ lsearch $data "Ponder" ] != -1 ) } {
                continue
            }
            
            set length [llength $data]
            # parse one option
            for {set i 0} {$i < $length} {incr i} {
                set t [lindex $data $i]
                if {$t == "option"} { continue }
                if {$t == "name"} {
                    incr i
                    set elt(name) [ lindex $data $i ]
                    incr i
                    while { [ lsearch -exact $optionToken [ lindex $data $i ] ] == -1 && $i < $length } {
                        append elt(name) " " [ lindex $data $i ]
                        incr i
                    }
                    incr i -1
                    continue
                }
                if {$t == "type"} { incr i ; set elt(type) [ lindex $data $i ] ; continue }
                if {$t == "default"} { ;# Glaurung uses a default value that is > one word
                    incr i
                    set elt(default) [ lindex $data $i ]
                    incr i
                    while { [ lsearch -exact $optionToken [ lindex $data $i ] ] == -1 && $i < $length } {
                        append elt(default) " " [ lindex $data $i ]
                        incr i
                    }
                    incr i -1
                    continue
                }
                if {$t == "min"} { incr i ; set elt(min) [ lindex $data $i ] ; continue }
                if {$t == "max"} { incr i ; set elt(max) [ lindex $data $i ] ; continue }
                if {$t == "var"} {
                    incr i
                    set tmp [ lindex $data $i ]
                    incr i
                    while { ([ lsearch -exact $optionToken [ lindex $data $i ] ] == -1 && $i < $length ) \
                                || [ lindex $data $i ] == "var" } {
                        if {[ lindex $data $i ] != "var" } {
                            append tmp " " [ lindex $data $i ]
                        } else  {
                            lappend elt(var) [list $tmp]
                            incr i
                            set tmp [ lindex $data $i ]
                        }
                        incr i
                    }
                    lappend elt(var) [list $tmp]
                    
                    incr i -1
                    continue
                }
            }
            lappend optList [array get elt]
        }
        
        # sort list of options so that important ones come first
        set tmp $optList
        set optList {}
        foreach l $tmp {
            array set elt $l
            if { [ lsearch $optionImportant $elt(name) ] != -1 } {
                lappend optList $l
            }
        }
        foreach l $tmp {
            array set elt $l
            if { [ lsearch $optionImportant $elt(name) ] == -1 } {
                lappend optList $l
            }
        }
        
        set optnbr 0
        ttk::frame $w.fopt
        ttk::frame $w.fbuttons
        
        set row 0
        set col 0
        set isImportantParam 1
        foreach l $optList {
            array set elt $l
            set name $elt(name)
            if { [ lsearch $optionImportant $elt(name) ] == -1 && $isImportantParam } {
                set isImportantParam 0
                incr row
                set col 0
            }
            if {$elt(name) == "MultiPV"} { set name $::tr(MultiPV) }
            if {$elt(name) == "Hash"} { set name $::tr(Hash) }
            if {$elt(name) == "OwnBook"} { set name $::tr(OwnBook) }
            if {$elt(name) == "BookFile"} { set name $::tr(BookFile) }
            if {$elt(name) == "UCI_LimitStrength"} { set name $::tr(LimitELO) }
            
            if { $col > 3 } { set col 0 ; incr row}
            if {$elt(default) != ""} {
                set default "\n($elt(default))"
            } else  {
                set default ""
            }
            set value $elt(default)
            # find the name in oldOptions (the previously saved data)
            foreach old $oldOptions {
                if {[lindex $old 0] == $elt(name)} {
                    set value [lindex $old 1]
                    break
                }
            }
            if { $elt(type) == "check"} {
                ttk::checkbutton $w.fopt.opt$optnbr -text "$name$default" -onvalue true -offvalue false -variable ::uci::check($optnbr)
                set ::uci::check($optnbr) $value
                grid $w.fopt.opt$optnbr -row $row -column $col -sticky w
            }
            if { $elt(type) == "spin"} {
                ttk::label $w.fopt.label$optnbr -text "$name$default"
                if { $elt(name) == "UCI_Elo" } {
                    spinbox $w.fopt.opt$optnbr -from $elt(min) -to $elt(max) -width 5 -increment 50 -validate all -vcmd { regexp {^[0-9]+$} %P }
                } else  {
                    spinbox $w.fopt.opt$optnbr -from $elt(min) -to $elt(max) -width 5 -validate all -vcmd { regexp {^[0-9]+$} %P }
                }
                $w.fopt.opt$optnbr set $value
                grid $w.fopt.label$optnbr -row $row -column $col -sticky e
                incr col
                grid $w.fopt.opt$optnbr -row $row -column $col -sticky w
            }
            if { $elt(type) == "combo"} {
                ttk::label $w.fopt.label$optnbr -text "$name$default"
                set idx 0
                set i 0
                set tmp {}
                foreach e $elt(var) {
                    lappend tmp [join $e]
                    if {[join $e] == $value} { set idx $i }
                    incr i
                }
                ttk::combobox $w.fopt.opt$optnbr -values $tmp
                
                $w.fopt.opt$optnbr current $idx
                grid $w.fopt.label$optnbr -row $row -column $col -sticky e
                incr col
                grid $w.fopt.opt$optnbr -row $row -column $col -sticky w
            }
            if { $elt(type) == "button"} {
                ttk::button $w.fopt.opt$optnbr -text "$name$default"
                grid $w.fopt.opt$optnbr -row $row -column $col -sticky w
            }
            if { $elt(type) == "string"} {
                ttk::label $w.fopt.label$optnbr -text "$name$default"
                ttk::entry $w.fopt.opt$optnbr
                $w.fopt.opt$optnbr insert 0 $value
                grid $w.fopt.label$optnbr -row $row -column $col -sticky e
                incr col
                grid $w.fopt.opt$optnbr -row $row -column $col -sticky w
            }
            incr col
            incr optnbr
        }
        
        ttk::button $w.fbuttons.save -text $::tr(Save) -command {
            ::uci::saveConfig
            destroy .uciConfigWin
        }
        ttk::button $w.fbuttons.cancel -text $::tr(Cancel) -command "destroy .uciConfigWin"
        pack $w.fbuttons.save $w.fbuttons.cancel -side left -expand yes -fill x -padx 20 -pady 2
        pack $w.fopt -expand 1 -fill both
        addHorizontalRule $w
        pack $w.fbuttons -expand 1 -fill both
        bind $w <Return> "$w.fbuttons.save invoke"
        bind $w <Escape> "destroy .uciConfigWin"
        catch {grab .uciConfigWin}
    }
    ################################################################################
    # will generate a list of list {{name}/value} pairs
    ################################################################################
    proc saveConfig {} {
        global ::uci::optList ::uci::newOptions
        set newOptions {}
        set w .uciConfigWin.sf.scrolled
        set optnbr 0
        
        foreach l $optList {
            array set elt $l
            set value ""
            if { $elt(type) == "check"} {
                set value $::uci::check($optnbr)
            }
            if { $elt(type) == "spin" || $elt(type) == "combo" || $elt(type) == "string" } {
                set value [$w.fopt.opt$optnbr get]
            }
            if { $elt(type) == "button" } { set value "" }
            
            lappend newOptions [ list $elt(name)  $value ]
            incr optnbr
        }
        if { $::uci::autoSaveOptions } {
            writeOptions
            set ::uci::autoSaveOptions 0
        }
    }
    ################################################################################
    # If the config window is called outside the engine dialog, save UCI options
    # (only the UCI options dialog box is called
    ################################################################################
    proc writeOptions {} {
        set elt [lindex $::engines(list) $::uci::autoSaveOptionsIndex]
        set elt [ lreplace $elt 8 8 $::uci::newOptions]
        set ::engines(list) [lreplace $::engines(list) $::uci::autoSaveOptionsIndex $::uci::autoSaveOptionsIndex $elt]
        
        ::enginelist::write
    }
    ################################################################################
    # The engine replied readyok, so it's time to configure it (sends the options to the engine)
    # It seems necessary to ask first if engine is ready
    ################################################################################
    proc sendUCIoptions { n } {
        global analysis
        set engineData [ lindex $::engines(list) $analysis(index$n) ]
        set options [ lindex $engineData 8 ]
        foreach opt $options {
            set name [lindex $opt 0]
            set value [lindex $opt 1]
            set analysis(waitForReadyOk$n) 1
            ::sendToEngine $n "isready"
            vwait analysis(waitForReadyOk$n)
            ::sendToEngine $n "setoption name $name value $value"
        }
    }
    ################################################################################
    # will start an engine for playing (not analysis)
    ################################################################################
    proc startEngine {index n} {
        global ::uci::uciInfo
        resetUciInfo $n
        set uciInfo(pipe$n) ""
        set uciInfo(seen$n) 0
        set uciInfo(uciok$n) 0
        ::resetEngine $n
        set engineData [lindex $::engines(list) $index]
        set analysisName [lindex $engineData 0]
        set analysisCommand [ toAbsPath [lindex $engineData 1] ]
        set analysisArgs [lindex $engineData 2]
        set analysisDir [ toAbsPath [lindex $engineData 3] ]
        
        # If the analysis directory is not current dir, cd to it:
        set oldpwd ""
        if {$analysisDir != "."} {
            set oldpwd [pwd]
            catch {cd $analysisDir}
        }
        
        # Try to execute the analysis program:
        if {[catch {set uciInfo(pipe$n) [open "| [list $analysisCommand] $analysisArgs" "r+"]} result]} {
            if {$oldpwd != ""} { catch {cd $oldpwd} }
            tk_messageBox -title "Scid: error starting engine" -icon warning -type ok \
                    -message "Unable to start the program:\n$analysisCommand"
            return
        }
        
        set ::analysis(index$n) $index
        set ::analysis(pipe$n) $uciInfo(pipe$n)
        
        # Return to original dir if necessary:
        if {$oldpwd != ""} { catch {cd $oldpwd} }
        
        fconfigure $uciInfo(pipe$n) -buffering line -blocking 0
        fileevent $uciInfo(pipe$n) readable "::uci::processAnalysisInput $n 0"
        
        # wait a few seconds to be sure the engine had time to start
        set counter 0
        while {! $::uci::uciInfo(uciok$n) && $counter < 50 } {
            incr counter
            update
            after 100
        }
    }
    ################################################################################
    #
    ################################################################################
    proc sendToEngine {n text} {
        logEngine $n "Scid  : $text"
        catch {puts $::uci::uciInfo(pipe$n) $text}
    }
    ################################################################################
    # returns 0 if engine died abruptly or 1 otherwise
    ################################################################################
    proc checkEngineIsAlive { n } {
        global ::uci::uciInfo
        if {[eof $uciInfo(pipe$n)]} {
            fileevent $uciInfo(pipe$n) readable {}
            set exit_status 0
            if {[catch {close $uciInfo(pipe$n)} standard_error] != 0} {
                global errorCode
                if {"CHILDSTATUS" == [lindex $errorCode 0]} {
                    set exit_status [lindex $errorCode 2]
                }
            }
            set uciInfo(pipe$n) ""
            if { $exit_status != 0 } {
                logEngineNote $n {Engine terminated with exit code $exit_status: "\"$standard_error\""}
                tk_messageBox -type ok -icon info -parent . -title "Scid" \
                              -message "The analysis engine terminated with exit code $exit_status: \"$standard_error\""
            } else {
                logEngineNote $n {Engine terminated without exit code: "\"$standard_error\""}
                tk_messageBox -type ok -icon info -parent . -title "Scid" \
                              -message "The analysis engine terminated without exist code: \"$standard_error\""
            }
            return 0
        }
        return 1
    }
    ################################################################################
    # close the engine
    # It may be not an UCI one (if the user made an error, trying to configure an xboard engine)
    ################################################################################
    proc closeUCIengine { n { uciok 1 } } {
        global windowsOS ::uci::uciInfo
        
        set pipe $uciInfo(pipe$n)
        # Check the pipe is not already closed:
        if {$pipe == ""} { return }
        
        after cancel "::uci::closeUCIengine $n 0"
        fileevent $pipe readable {}
        
        if {! $uciok } {
            tk_messageBox -title "Scid: error closing UCI engine" \
                    -icon warning -type ok -message "Not an UCI engine"
        }
        
        # Some engines in analyze mode may not react as expected to "quit"
        # so ensure the engine exits analyze mode first:
        catch { puts $pipe "stop" ; puts $pipe "quit" }
        #in case an xboard engine
        catch { puts $pipe "exit" ; puts $pipe "quit" }
        
        # last resort : try to kill the engine (TODO if Windows : no luck, welcome zombies !)
        # No longer try to kill the engine as :
        # - it does not work on Windows
        # - Rybka MP uses processes instead of threads : killing the main process will leave the children processes running
        # - engines should normally exit
        # if { ! $windowsOS } { catch { exec -- kill -s INT [ pid $pipe ] }  }
        
        catch { flush $pipe }
        catch { close $pipe }
        set uciInfo(pipe$n) ""
    }
    ################################################################################
    # UCI moves use long notation
    # returns 1 if an error occured when entering a move
    ################################################################################
    proc sc_move_add { moves } {
        
        foreach m $moves {
            # get rid of leading piece
            set c [string index $m 0]
            if {$c == "K" || $c == "Q" || $c == "R" || $c == "B" || $c == "N"} {
                set m [string range $m 1 end]
            }
            set s1 [string range $m 0 1]
            set s1 [::board::sq $s1]
            set s2 [string range $m 2 3]
            set s2 [::board::sq $s2]
            if {[string length $m] > 4} {
                set promo [string range $m 4 end]
                # inverse transformation : const char PIECE_CHAR [] = "xKQRBNP.xkqrbnpxMm";
                # it seems capitalisation does not matter (see addMove proc in main.tcl)
                switch -- $promo {
                    q { set p 2}
                    r { set p 3}
                    b { set p 4}
                    n { set p 5}
                    default {puts "Promo error $promo for moves $moves"}
                }
                if { [catch { sc_move add $s1 $s2 $p } ] } { return 1 }
            } else  {
                if { [catch { sc_move add $s1 $s2 0 } ] } { return 1 }
            }
        }
        return 0
    }
    ################################################################################
    #make UCI output more readable (b1c3 -> Nc3)
    ################################################################################
    proc formatPv { moves { fen "" } } {
        sc_info preMoveCmd {}
        # Push a temporary copy of the current game:
        if {$fen != ""} {
            sc_game push
            sc_game startBoard $fen
        } else  {
            sc_game push copyfast
        }
        set tmp ""
        foreach m $moves {
            if { [sc_move_add $m] == 1 } { break }
            set prev [sc_game info previousMoveNT]
            append tmp " $prev"
        }
        set tmp [string trim $tmp]
        
        # Pop the temporary game:
        sc_game pop
        # Restore pre-move command:
        sc_info preMoveCmd preMoveCommand
        
        return $tmp
    }
    ################################################################################
    #   Format a line starting at current position where <moves> were played (in San notation)
    ################################################################################
    proc formatPvAfterMoves { played_moves moves } {
        sc_info preMoveCmd {}
        sc_game push copyfast
        sc_move addSan $played_moves
        
        set tmp ""
        foreach m $moves {
            if { [sc_move_add $m] == 1 } {
                break
            }
            set prev [sc_game info previousMoveNT]
            append tmp " $prev"
        }
        set tmp [string trim $tmp]
        
        # Pop the temporary game:
        sc_game pop
        # Restore pre-move command:
        sc_info preMoveCmd preMoveCommand
        
        return $tmp
    }
}
###
### End of file: uci.tcl
###
# end.tcl: part of Scid.
# Copyright (C) 2000-2003 Shane Hudson.

# detect the case where, under Linux, Scid is used without prior installation
# the fallback directory is Scid's exec dir
if {! [file isdirectory $::scidBasesDir] || ! [file isdirectory $::scidBooksDir]} {
  set scidShareDir $::scidExeDir
  set scidBasesDir [file nativename [file join $::scidShareDir "bases"]]
  set scidBooksDir [file nativename [file join $scidShareDir "books"]]
}

if {! [file isdirectory $::scidBasesDir]} {
  tk_messageBox -title "Scid" -type ok -icon warning -message "Bases directory not found"
}

if { ! [file isdirectory $::scidBooksDir]} {
  tk_messageBox -title "Scid" -type ok -icon warning -message "Books directory not found"
}

############################################################
### Main window title, etc:



############################################################
### Menu/etc Functions:


# findNovelty:
#   Searches the for first position in the current game not
#   found in the selected database.

set noveltyOlder 0

proc findNovelty {} {
  global noveltyBase noveltyOlder
  set noveltyBase [sc_base current]
  set w .noveltyWin
  if {[winfo exists $w]} {
    updateNoveltyWin
    return
  }
  toplevel $w
  wm title $w "Scid: $::tr(FindNovelty)"
  
  pack [frame $w.help] -side top -fill x
  text $w.help.text -width 1 -height 5 -wrap word \
      -relief ridge -cursor top_left_arrow -yscrollcommand "$w.help.ybar set"
  scrollbar $w.help.ybar -orient vertical -command "$w.help.text yview" \
      -takefocus 0 -width 10
  pack $w.help.ybar -side right -fill y
  pack $w.help.text -side left -fill x -expand yes
  $w.help.text insert end [string trim $::tr(NoveltyHelp)]
  $w.help.text configure -state disabled
  
  label $w.title -text $::tr(Database:) -font font_Bold
  pack $w.title -side top
  set numBases [sc_base count total]
  for {set i 1} {$i <= $numBases} {incr i} {
    radiobutton $w.b$i -text "" -variable noveltyBase -value $i -underline 5
    pack $w.b$i -side top -anchor w -padx 10
  }
  addHorizontalRule $w
  
  label $w.which -text $::tr(TwinsWhich:) -font font_Bold
  pack $w.which -side top
  radiobutton $w.all -text $::tr(SelectAllGames) \
      -variable noveltyOlder -value 0
  radiobutton $w.older -text $::tr(SelectOlderGames) \
      -variable noveltyOlder -value 1
  pack $w.all $w.older -side top -anchor w -padx 10
  
  addHorizontalRule $w
  
  label $w.status -text "" -width 1 -font font_Small -relief sunken -anchor w
  pack $w.status -side bottom -fill x
  pack [frame $w.b] -side top -fill x
  dialogbutton $w.b.stop -textvar ::tr(Stop) -state disabled \
      -command sc_progressBar
  dialogbutton $w.b.go -text $::tr(FindNovelty) -command {
    .noveltyWin.b.stop configure -state normal
    .noveltyWin.b.go configure -state disabled
    .noveltyWin.b.close configure -state disabled
    busyCursor .
    .noveltyWin.status configure -text " ... "
    update
    grab .noveltyWin.b.stop
    if {$noveltyOlder} {
      set err [catch {sc_game novelty -older -updatelabel .noveltyWin.status $noveltyBase} result]
    } else {
      set err [catch {sc_game novelty -updatelabel .noveltyWin.status $noveltyBase} result]
    }
    grab release .noveltyWin.b.stop
    if {! $err} { set result "$::tr(Novelty): $result" }
    unbusyCursor .
    .noveltyWin.b.stop configure -state disabled
    .noveltyWin.b.go configure -state normal
    .noveltyWin.b.close configure -state normal
    .noveltyWin.status configure -text $result
    updateBoard
  }
  dialogbutton $w.b.close -textvar ::tr(Close) -command {
    catch {destroy .noveltyWin}
  }
  packbuttons right $w.b.close $w.b.go $w.b.stop
  wm resizable $w 0 0
  focus $w.b.go
  bind $w <KeyPress-1> "$w.b1 invoke"
  bind $w <KeyPress-2> "$w.b2 invoke"
  bind $w <KeyPress-3> "$w.b3 invoke"
  bind $w <KeyPress-4> "$w.b4 invoke"
  updateNoveltyWin
}

proc updateNoveltyWin {} {
  set w .noveltyWin
  if {! [winfo exists $w]} { return }
  set numBases [sc_base count total]
  $w.older configure -text "$::tr(SelectOlderGames) (< [sc_game info date])"
  for {set i 1} {$i <= $numBases} {incr i} {
    set name [file tail [sc_base filename $i]]
    set ng [::utils::thousands [sc_base numGames $i]]
    set text "Base $i: $name ($ng $::tr(games))"
    $w.b$i configure -state normal -text $text
    if {$ng == 0} { $w.b$i configure -state disabled }
  }
}

set merge(ply) 40

# mergeGame:
#   Produces a dialog for the user to merge a selected game into
#   the current game.
#
proc mergeGame {{base 0} {gnum 0}} {
  global merge glNumber
  if {$base == 0} {
    if {$glNumber < 1} { return }
    if {$glNumber > [sc_base numGames]} { return }
    set base [sc_base current]
    set gnum $glNumber
  }
  sc_game push copy
  set err [catch {sc_game merge $base $gnum} result]
  sc_game pop
  if {$err} {
    tk_messageBox -title "Scid" -type ok -icon info \
        -message "Unable to merge the selected game:\n$result"
    return
  }
  set merge(base) $base
  set merge(gnum) $gnum
  set w .mergeDialog
  toplevel $w
  wm title $w "Scid: $::tr(MergeGame)"
  bind $w <Escape> "$w.b.cancel invoke"
  bind $w <F1> {helpWindow GameList Browsing}
  label $w.title -text $::tr(Preview:) -font font_Bold
  pack $w.title -side top
  pack [frame $w.b] -side bottom -fill x
  frame $w.f
  text $w.f.text -background white -wrap word -width 60 -height 20 \
      -font font_Small -yscrollcommand "$w.f.ybar set"
  scrollbar $w.f.ybar -takefocus 0 -command "$w.f.text yview"
  event generate $w.f.text <ButtonRelease-1>
  pack $w.f.ybar -side right -fill y
  pack $w.f.text -side left -fill both -expand yes
  pack $w.f -fill both -expand yes
  set small font_Small
  label $w.b.label -text "Up to move:" -font $small
  pack $w.b.label -side left
  foreach i {5 10 15 20 25 30 35 40} {
    radiobutton $w.b.m$i -text $i -variable merge(ply) -value [expr {$i * 2}] \
        -indicatoron 0 -padx 2 -pady 1 -font $small -command updateMergeGame
    pack $w.b.m$i -side left
  }
  radiobutton $w.b.all -text [::utils::string::Capital $::tr(all)] \
      -variable merge(ply) -value 1000 -indicatoron 0 -padx 2 -pady 1 \
      -font $small -command updateMergeGame
  pack $w.b.all -side left
  dialogbutton $w.b.ok -text "OK" -command {
    sc_game merge $merge(base) $merge(gnum) $merge(ply)
    catch {grab release .mergeDialog}
    destroy .mergeDialog
    updateBoard -pgn
  }
  dialogbutton $w.b.cancel -text $::tr(Cancel) \
      -command "catch {grab release $w}; destroy $w"
  packbuttons right $w.b.cancel $w.b.ok
  grab $w
  updateMergeGame
}

proc updateMergeGame {args} {
  global merge
  set w .mergeDialog
  if {! [winfo exists $w]} { return }
  sc_game push copy
  sc_game merge $merge(base) $merge(gnum) $merge(ply)
  set pgn [sc_game pgn -indentV 1 -short 1 -width 60]
  sc_game pop
  $w.f.text configure -state normal
  $w.f.text tag configure red -foreground darkRed
  $w.f.text tag configure blue -foreground darkBlue
  $w.f.text delete 1.0 end
  foreach line [split $pgn "\n"] {
    if {[string index $line 0] == " "} {
      $w.f.text insert end $line blue
    } else {
      $w.f.text insert end $line
    }
    $w.f.text insert end "\n"
  }
  $w.f.text tag add red 1.0 4.0
  #$w.f.text insert end $pgn
  $w.f.text configure -state disabled
}

# setExportText:
#   Allows the user to modify the text printed at the start and end of a
#   file for a particular export format
#
proc setExportText {exportType} {
  global exportStartFile exportEndFile
  
  switch -- $exportType {
    "PGN" {
      set title "Set PGN file export text"
    }
    "HTML" {
      set title "Set HTML file export text"
    }
    "LaTeX" {
      set title "Set LaTeX file export text"
    }
    default {
      return
    }
  }
  
  set w .setExportText$exportType
  if {[winfo exists $w]} { return }
  toplevel $w
  wm title $w "Scid: $title"
  
  frame $w.buttons
  pack $w.buttons -side bottom -fill x -anchor e
  
  set pane [::utils::pane::Create $w.pane start end 500 400]
  ::utils::pane::SetRange $w.pane 0.3 0.7
  pack $pane -side top -expand true -fill both
  foreach f [list $pane.start $pane.end] type {start end} {
    label $f.title -font font_Bold -text "Text at $type of $exportType file:"
    text $f.text -wrap none -background white \
        -yscroll "$f.ybar set" -xscroll "$f.xbar set"
    scrollbar $f.ybar -orient vertical -command "$f.text yview"
    scrollbar $f.xbar -orient horizontal -command "$f.text xview"
    bind $f.text <FocusIn> {%W configure -background lightYellow}
    bind $f.text <FocusOut> {%W configure -background white}
    grid $f.title -row 0 -column 0 -sticky w
    grid $f.text -row 1 -column 0 -sticky nesw
    grid $f.ybar -row 1 -column 1 -sticky nesw
    grid $f.xbar -row 2 -column 0 -sticky nesw
    grid rowconfig $f 1 -weight 1 -minsize 0
    grid columnconfig $f 0 -weight 1 -minsize 0
  }
  
  $pane.start.text insert end $exportStartFile($exportType)
  $pane.end.text insert end $exportEndFile($exportType)
  
  button $w.buttons.default -text "Reset to Default" -command "
  $pane.start.text delete 1.0 end
  $pane.start.text insert end \$default_exportStartFile($exportType)
  $pane.end.text delete 1.0 end
  $pane.end.text insert end \$default_exportEndFile($exportType)
  "
  dialogbutton $w.buttons.ok -text "OK" -command "
  set exportStartFile($exportType) \[$pane.start.text get 1.0 end-1c\]
  set exportEndFile($exportType) \[$pane.end.text get 1.0 end-1c\]
  focus .
  destroy $w
  "
  dialogbutton $w.buttons.cancel -text $::tr(Cancel) -command "focus .; destroy $w"
  pack $w.buttons.default -side left -padx 5 -pady 2
  pack $w.buttons.cancel $w.buttons.ok -side right -padx 5 -pady 2
  focus $pane.start.text
}

image create photo htmldiag0 -data {
  R0lGODdhbgBkAIAAAAAAAP///ywAAAAAbgBkAAAC/oyPqcvtD6OctNqLs968+w+G4kiW5omm
  6moAgQu/ckzPdo3fes7vfv5wsYQtBFF2OCqNzCPrs4xEi0mQEyWcApxbqhfpvYa2ZCNZeQ4y
  k122YgqGNs7oMtu+aH9f6XT1vydm5ddCyIenlkB3KAgnePFIJzm5yECkRVmpuPbokflpaLl2
  eKeHCNcRCQo6F3e52qY3Gve04QhbJkvrGYQb+jbrB8sHaJPi25mnGItLvDmRnLwnCpH1luUb
  WGwpLdUsIdaFHLtdHe09bM45Lkw9p4uRXfHKbseFntibnk9fT/4XDR6kb+BKsfrkrFuhc+b2
  OYhh0J+1Z+8U6ltVMGIm/kaTpnnL95DgQzPpMC6RJtCCPArMOmqsNDFjq4YYq5lZGKokxZEc
  Vtok5pIkwl2p0NXsZZDUsmH3fmpIuWxeUKEHy828yo0dT6p5sk3sZrGrP6dWx3kMCRKYykhE
  xcpD1fWpxK1tOX4LK9OtVneuliKjAnEEIqkMA9UrgjctTokCY+4a29fvL6OM2ZabW3co1peH
  rwVb3DmM5lpSRlV2DHryrGPFEidqShrS59azz2Zw/TTyF0e168aG1ps3bRG4bz8pvqmH8h/M
  lztvDj0wVuG7g/sW3Bv48Orbr7Purky3eOpgkMsenxcuX/XHs3NzzzG8NsJQ38EnG2Uq+rWa
  /s7bVrvfRtwBxhIlLHWnEHUCklegfumtpgx5AloHjYHAMTjdahbeB46D+EG4Hoj68YaXh3Sx
  B9IVrADo3TUTHmjVTHA5pFuCR70G4oeSaYZiRTemyGJcw72lIWWj2TckjKLRKN5FKypZHj/B
  iBQZWFS6g2GIVI3Wo15HApljFTMSlKWLP4oyo45L8himkxuq2eJ+nKV0UoUvgvlfhmb2x2FI
  JsL505hPDmjjoDx1qeWWEyK655d6tunMNGbt5N2kaF0Wlop7DejnX9qRJGWj++TnJpMUhVPf
  bJhBOqehWqompmmQgbejT8Bgkup4s8aZ2pU71VGYK4xVp8qqLAJriREXw1LqpaV0xXeoqJ4C
  Uuyuz2g62KvL5tnqmb8uhhS128Imra03iZvtsz2xikU8CFLInXkqvVsavZwyekKZTcArZ5Pt
  6vutvf3GBjC7VrRX1HMKR8fwwg4bo26+/Eq4729FCUyxHEPcO7FpFtvSscC8DJExx9vI+3G/
  JfNK1ncqh4zybyuvLEEBADs=
}

image create photo htmldiag1 -data {
  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
}

# exportOptions:
#   Prompts the user to select exporting options.
#
proc exportOptions {exportType} {
  global exportFlags
  
  set w .exportFlagsWin
  set exportFlags(ok) -1
  toplevel $w
  wm title $w "Scid: [tr OptionsExport]"
  # wm transient $w .
  wm protocol $w WM_DELETE_WINDOW { }
  bind $w <Escape> "$w.b.cancel invoke"
  bind $w <Return> "$w.b.ok invoke"
  bind $w <F1> {helpWindow Export}
  
  pack [frame $w.o] -side top -fill x -pady 5 -padx 5
  label $w.o.append -text $::tr(AddToExistingFile)
  radiobutton $w.o.appendYes -text $::tr(Yes) \
      -variable exportFlags(append) -value 1
  radiobutton $w.o.appendNo -text $::tr(No) \
      -variable exportFlags(append) -value 0
  label $w.o.comments -text $::tr(ExportComments)
  radiobutton $w.o.commentsOn -text $::tr(Yes) \
      -variable exportFlags(comments) -value 1
  radiobutton $w.o.commentsOff -text $::tr(No) \
      -variable exportFlags(comments) -value 0
  label $w.o.stripMarks -text $::tr(ExportStripMarks)
  radiobutton $w.o.stripMarksOn -text $::tr(Yes) \
      -variable exportFlags(stripMarks) -value 1
  radiobutton $w.o.stripMarksOff -text $::tr(No) \
      -variable exportFlags(stripMarks) -value 0
  label $w.o.indentc -text $::tr(IndentComments)
  radiobutton $w.o.indentcOn -text $::tr(Yes) \
      -variable exportFlags(indentc) -value 1
  radiobutton $w.o.indentcOff -text $::tr(No) \
      -variable exportFlags(indentc) -value 0
  label $w.o.vars -text $::tr(ExportVariations)
  radiobutton $w.o.varsOn -text $::tr(Yes) -variable exportFlags(vars) -value 1
  radiobutton $w.o.varsOff -text $::tr(No) -variable exportFlags(vars) -value 0
  label $w.o.indentv -text $::tr(IndentVariations)
  radiobutton $w.o.indentvOn -text $::tr(Yes) \
      -variable exportFlags(indentv) -value 1
  radiobutton $w.o.indentvOff -text $::tr(No) \
      -variable exportFlags(indentv) -value 0
  label $w.o.column -text $::tr(ExportColumnStyle)
  radiobutton $w.o.columnOn -text $::tr(Yes) \
      -variable exportFlags(column) -value 1
  radiobutton $w.o.columnOff -text $::tr(No) \
      -variable exportFlags(column) -value 0
  label $w.o.symbols -text $::tr(ExportSymbolStyle)
  radiobutton $w.o.symbolsOn -text "! +=" \
      -variable exportFlags(symbols) -value 1
  radiobutton $w.o.symbolsOff -text {$2 $14} \
      -variable exportFlags(symbols) -value 0
  grid $w.o.append -row 0 -column 0 -sticky w
  grid $w.o.appendYes -row 0 -column 1 -sticky w
  grid $w.o.appendNo -row 0 -column 2 -sticky w
  grid $w.o.comments -row 1 -column 0 -sticky w
  grid $w.o.commentsOn -row 1 -column 1 -sticky w
  grid $w.o.commentsOff -row 1 -column 2 -sticky w
  grid $w.o.stripMarks -row 2 -column 0 -sticky w
  grid $w.o.stripMarksOn -row 2 -column 1 -sticky w
  grid $w.o.stripMarksOff -row 2 -column 2 -sticky w
  grid $w.o.indentc -row 3 -column 0 -sticky w
  grid $w.o.indentcOn -row 3 -column 1 -sticky w
  grid $w.o.indentcOff -row 3 -column 2 -sticky w
  grid $w.o.vars -row 4 -column 0 -sticky w
  grid $w.o.varsOn -row 4 -column 1 -sticky w
  grid $w.o.varsOff -row 4 -column 2 -sticky w
  grid $w.o.indentv -row 5 -column 0 -sticky w
  grid $w.o.indentvOn -row 5 -column 1 -sticky w
  grid $w.o.indentvOff -row 5 -column 2 -sticky w
  grid $w.o.column -row 6 -column 0 -sticky w
  grid $w.o.columnOn -row 6 -column 1 -sticky w
  grid $w.o.columnOff -row 6 -column 2 -sticky w
  grid $w.o.symbols -row 7 -column 0 -sticky w
  grid $w.o.symbolsOn -row 7 -column 1 -sticky w
  grid $w.o.symbolsOff -row 7 -column 2 -sticky w
  
  # Extra option for PGN format: handling of null moves
  if {$exportType == "PGN"} {
    label $w.o.space -text ""
    grid $w.o.space -row 8 -column 0 -sticky w
    label $w.o.nullMoves -text "Convert null moves to comments"
    radiobutton $w.o.convertNullMoves -text $::tr(Yes) \
        -variable exportFlags(convertNullMoves) -value 1
    radiobutton $w.o.keepNullMoves -text $::tr(No) \
        -variable exportFlags(convertNullMoves) -value 0
    grid $w.o.nullMoves -row 9 -column 0 -sticky w
    grid $w.o.convertNullMoves -row 9 -column 1 -sticky w
    grid $w.o.keepNullMoves -row 9 -column 2 -sticky w
  }
  
  # Extra option for HTML format: diagram image set
  if {$exportType == "HTML"} {
    label $w.o.space -text ""
    label $w.o.hdiag -text "Diagram"
    radiobutton $w.o.hb0 -text "bitmaps" \
        -variable exportFlags(htmldiag) -value 0
    radiobutton $w.o.hb1 -text "bitmaps2" \
        -variable exportFlags(htmldiag) -value 1
    label $w.o.hl0 -image htmldiag0
    label $w.o.hl1 -image htmldiag1
    grid $w.o.space -row 8 -column 0
    grid $w.o.hdiag -row 9 -column 0 -sticky w
    grid $w.o.hb0 -row 9 -column 1 -sticky w
    grid $w.o.hb1 -row 9 -column 2 -sticky w
    grid $w.o.hl0 -row 10 -column 1
    grid $w.o.hl1 -row 10 -column 2
  }
  
  addHorizontalRule $w
  pack [frame $w.b] -side top
  dialogbutton $w.b.ok -text "OK" -command {
    set exportFlags(ok) 1
  }
  dialogbutton $w.b.cancel -text $::tr(Cancel) -command {
    set exportFlags(ok) 0
  }
  pack $w.b.ok $w.b.cancel -side left -padx 5 -pady 5
  
  wm withdraw $w
  update idletasks
  set x [expr {[winfo screenwidth $w]/2 - [winfo reqwidth $w]/2 \
        - [winfo vrootx [winfo parent $w]]}]
  set y [expr {[winfo screenheight $w]/2 - [winfo reqheight $w]/2 \
        - [winfo vrooty [winfo parent $w]]}]
  wm geom $w +$x+$y
  wm deiconify $w
  
  grab $w
  tkwait variable exportFlags(ok)
  grab release $w
  destroy $w
  return $exportFlags(ok)
}

# exportGames:
#   exports current game or all filtered games to a new PGN, LaTeX or Html file.
#
proc exportGames {selection exportType} {
  global ::pgn::moveNumberSpaces exportStartFile exportEndFile exportFlags
  set exportFilter 0
  if {$selection == "filter"} { set exportFilter 1 }
  if {$exportFilter} {
    # Check that we have some games to export:
    if {![sc_base inUse]} {
      tk_messageBox -title "Scid: Empty database" -type ok -icon info \
          -message "This is an empty database, there are no games to export."
      return
    }
    if {[sc_filter count] == 0} {
      tk_messageBox -title "Scid: Filter empty" -type ok -icon info \
          -message "The filter contains no games."
      return
    }
  }
  
  if {[exportOptions $exportType] == 0} { return }
  sc_info html $exportFlags(htmldiag)
  
  switch -- $exportType {
    "PGN" {
      set ftype {
        { "PGN files" {".pgn"} }
        { "All files" {"*"} }
      }
      set title "a PGN file"
      set idir $::initialDir(base)
      set default ".pgn"
    }
    "HTML" {
      set ftype {
        { "HTML files" {".html" ".htm"} }
        { "All files" {"*"} }
      }
      set title "an HTML file"
      set idir $::initialDir(html)
      set default ".html"
    }
    "LaTeX" {
      set ftype {
        { "LaTeX files" {".tex" ".ltx"} }
        { "All files" {"*"} }
      }
      set title "a LaTeX file"
      set idir $::initialDir(tex)
      set default ".tex"
    }
    default { return }
  }
  
  if {$exportFlags(append)} {
    set getfile tk_getOpenFile
    set title "Add games to $title"
  } else {
    set getfile tk_getSaveFile
    set title "Create $title"
  }
  set fName [$getfile -initialdir $idir -filetypes $ftype -defaultextension $default -title $title]
  if {$fName == ""} { return }
  if {$exportFilter} {
    progressWindow "Scid" "Exporting games..." $::tr(Cancel) "sc_progressBar"
  }
  busyCursor .
  sc_base export $selection $exportType $fName -append $exportFlags(append) \
      -starttext $exportStartFile($exportType) \
      -endtext $exportEndFile($exportType) \
      -comments $exportFlags(comments) -variations $exportFlags(vars) \
      -space $::pgn::moveNumberSpaces -symbols $exportFlags(symbols) \
      -indentC $exportFlags(indentc) -indentV $exportFlags(indentv) \
      -column $exportFlags(column) -noMarkCodes $exportFlags(stripMarks) \
      -convertNullMoves $exportFlags(convertNullMoves)
  unbusyCursor .
  if {$exportFilter} {
    closeProgressWindow
  }
}

proc copyFilter {frombaseNum tobaseNum} {
  # Check status of source and target bases:
  set currentBaseNum [sc_base current]
  sc_base switch $frombaseNum
  set nGamesToCopy [sc_filter count]
  set fromInUse [sc_base inUse]
  set fromName [file tail [sc_base filename]]
  sc_base switch $tobaseNum
  set targetInUse [sc_base inUse]
  set targetName [file tail [sc_base filename]]
  set targetReadOnly [sc_base isReadOnly]
  sc_base switch $currentBaseNum
  set err ""
  if {$nGamesToCopy == 0} {
    set err "$::tr(CopyErrSource) $::tr(CopyErrNoGames)."
  }
  if {$targetReadOnly} {
    set err "$::tr(CopyErrTarget) ($targetName) $::tr(CopyErrReadOnly)."
  }
  if {! $targetInUse} {set err "$::tr(CopyErrTarget) $::tr(CopyErrNotOpen)."}
  if {! $fromInUse} {set err "$::tr(CopyErrSource) $::tr(CopyErrNotOpen)."}
  if {$frombaseNum == $tobaseNum} {
    set err "$::tr(CopyErrSource) == $::tr(CopyErrTarget)."
  }
  
  if {$err != ""} {
    tk_messageBox -type ok -icon info -title "Scid" \
        -message "$::tr(CopyErr) \n\"$fromName\" -> \"$targetName\": \n$err"
    return
  }
  
  # If copying to the clipbase, do not bother asking for confirmation:
  if {$tobaseNum == [sc_info clipbase]} {
    progressWindow "Scid" "$::tr(CopyGames)..." $::tr(Cancel) "sc_progressBar"
    busyCursor .
    set copyErr [catch {sc_filter copy $frombaseNum $tobaseNum} result]
    unbusyCursor .
    closeProgressWindow
    if {$copyErr} {
      tk_messageBox -type ok -icon info -title "Scid" -message $result
    }
    return
  }
  
  set w [toplevel .fcopyWin]
  wm title $w "Scid: $::tr(CopyGames)"
  label $w.text -text [subst $::tr(CopyConfirm)]
  frame $w.b
  dialogbutton $w.b.go -text $::tr(CopyGames) -command "
  busyCursor .
  $w.b.cancel configure -command \"sc_progressBar\"
  $w.b.cancel configure -text $::tr(Stop)
  sc_progressBar $w.bar bar 301 21 time
  grab $w.b.cancel
  if {\[catch {sc_filter copy $frombaseNum $tobaseNum} result\]} {
    tk_messageBox -type ok -icon info \
        -title \"Scid\" -message \$result
  }
  unbusyCursor .
  focus .
  destroy $w
  updateStatusBar
  "
  dialogbutton $w.b.cancel -text $::tr(Cancel) -command "focus .; destroy $w"
  canvas $w.bar -width 300 -height 20 -bg white -relief solid -border 1
  $w.bar create rectangle 0 0 0 0 -fill blue -outline blue -tags bar
  $w.bar create text 295 10 -anchor e -font font_Regular -tags time \
      -fill black -text "0:00 / 0:00"
  
  pack $w.text $w.b -side top -pady 5
  pack $w.bar -side bottom
  pack $w.b.go $w.b.cancel -side left -padx 10 -pady 10
  grab $w
  bind $w <Return> "$w.b.go invoke"
  bind $w <Escape> "$w.b.cancel invoke"
  focus $w.b.go
}


###########################################################################
### Global variables used in gameSave:
set date 0; set year 0; set month 0; set day 0; set white 0; set black 0
set resultVal 0; set event 0; set site 0; set round 0
set whiteElo 0; set blackElo 0; set eco 0; set extraTags ""
set whiteRType "Elo"; set blackRType "Elo"
set edate 0; set eyear 0; set emonth 0; set eday 0

# Traces on game-save dialog variables to ensure sane values:

trace variable resultVal w  ::utils::validate::Result
trace variable whiteElo w {::utils::validate::Integer [sc_info limit elo] 0}
trace variable blackElo w {::utils::validate::Integer [sc_info limit elo] 0}
trace variable year w {::utils::validate::Integer [sc_info limit year] 1}
trace variable month w {::utils::validate::Integer 12 1}
trace variable day w {::utils::validate::Integer 31 1}
trace variable eyear w {::utils::validate::Integer [sc_info limit year] 1}
trace variable emonth w {::utils::validate::Integer 12 1}
trace variable eday w {::utils::validate::Integer 31 1}

set gsaveNum 0
set i 0; set j 0
set temp 0

array set nameMatches {}
set nameMatchCount 0

# updateMatchList:
#    Called from gameSave to update the matching name list as the user
#    types a player/site/event/round name.
#
proc updateMatchList { tw nametype maxMatches name el op } {
  global nameMatches nameMatchCount
  global $name editNameType
  if {![winfo exists $tw]} return
  
  if {$nametype == ""} { set nametype $editNameType }
  if {$nametype == "rating"} { set nametype "player" }
  set val [set $name]
  $tw configure -state normal
  $tw delete 0.0 end
  set matches {}
  catch {set matches [sc_name match $nametype $val $maxMatches]}
  set count [llength $matches]
  set nameMatchCount [expr {$count / 2}]
  for {set i 0} { $i < $count } {incr i 2} {
    set nameMatchCount [expr {($i / 2) + 1}]
    set nameMatches($nameMatchCount) [lindex $matches [expr {$i + 1}]]
    set str "$nameMatchCount:\t[lindex $matches $i]\t$nameMatches($nameMatchCount)\n"
    $tw insert end $str
  }
  $tw configure -state disabled
}

proc clearMatchList { tw } {
  global nameMatches nameMatchCount
  set nameMatchCount 0
  $tw configure -state normal
  $tw delete 0.0 end
  $tw configure -state disabled
}

# Traces to update the match list as names are typed in:

trace variable event w { updateMatchList .save.g.list e 9 }
trace variable site  w { updateMatchList .save.g.list s 9 }
trace variable white w { updateMatchList .save.g.list p 9 }
trace variable black w { updateMatchList .save.g.list p 9 }
trace variable round w { updateMatchList .save.g.list r 9 }

set editName ""
set editNameNew ""
set editNameType "player"
set editNameSelect "all"
set editNameRating ""
set editNameRType "Elo"
set editDate ""
set editDateNew ""

trace variable editNameRating w {::utils::validate::Integer [sc_info limit elo] 0}
trace variable editName w { updateMatchList .nedit.g.list "" 9 }
trace variable editDate w ::utils::validate::Date
trace variable editDateNew w ::utils::validate::Date

proc editNameNewProc { tw nametype maxMatches name el op } {
  global editNameNew
  if {! [winfo exists .nedit]} { return }
  if {[string compare $editNameNew ""]} {
    .nedit.buttons.replace configure -state normal
  } else {
    .nedit.buttons.replace configure -state disabled
  }
  catch {updateMatchList $tw $nametype $maxMatches $name $el $op}
}

trace variable editNameNew w { editNameNewProc .nedit.g.list "" 9 }


set nameEditorWin 0

proc makeNameEditor {} {
  if {! [winfo exists .nedit]} { nameEditor }
}

proc setNameEditorType {type} {
  if {! [winfo exists .nedit]} { return }
  catch {.nedit.typeButtons.$type invoke}
}

proc nameEditor {} {
  global editName editNameType editNameNew nameEditorWin editNameSelect
  global editNameRating editDate editDateNew
  
  set w .nedit
  if {[winfo exists $w]} {
    destroy $w
    return
  }
  toplevel $w
  wm title $w "Scid: [tr FileMaintNameEditor]"
  set nameEditorWin 1
  setWinLocation $w
  bind $w <Configure> "recordWinSize $w"
  
  label $w.typeLabel -textvar ::tr(NameEditType:) -font font_Bold
  frame $w.typeButtons
  pack $w.typeLabel $w.typeButtons -side top -pady 5
  foreach i { "Player" "Event" "Site" "Round"} {
    set j [string tolower $i]
    radiobutton $w.typeButtons.$j -textvar ::tr($i) -variable editNameType \
        -value $j -indicatoron false -pady 5 -padx 5 -command {
          grid remove .nedit.g.ratingE
          grid remove .nedit.g.rtype
          grid remove .nedit.g.fromD
          grid remove .nedit.g.toD
          grid .nedit.g.toL -row 1 -column 1 -sticky e
          grid .nedit.g.fromE -row 0 -column 2 -sticky w
          grid .nedit.g.toE -row 1 -column 2 -sticky w
        }
    pack $w.typeButtons.$j -side left -padx 5
  }
  radiobutton $w.typeButtons.rating -textvar ::tr(Rating) -variable editNameType \
      -value rating -indicatoron false -pady 5 -padx 5 -command {
        grid remove .nedit.g.toE
        grid remove .nedit.g.toL
        grid remove .nedit.g.fromD
        grid remove .nedit.g.toD
        grid .nedit.g.fromE -row 0 -column 2 -sticky w
        grid .nedit.g.rtype -row 1 -column 0 -columnspan 2 -sticky e
        grid .nedit.g.ratingE -row 1 -column 2 -sticky w
      }
  radiobutton $w.typeButtons.date -textvar ::tr(Date) -variable editNameType \
      -value date -indicatoron false -pady 5 -padx 5 -command {
        grid remove .nedit.g.toE
        grid remove .nedit.g.fromE
        grid remove .nedit.g.ratingE
        grid remove .nedit.g.rtype
        grid .nedit.g.fromD -row 0 -column 2 -sticky w
        grid .nedit.g.toL -row 1 -column 1 -sticky e
        grid .nedit.g.toD -row 1 -column 2 -sticky w
      }
  radiobutton $w.typeButtons.edate -textvar ::tr(EventDate) \
      -variable editNameType -value edate -indicatoron false -pady 5 -padx 5 \
      -command {
        grid remove .nedit.g.toE
        grid remove .nedit.g.fromE
        grid remove .nedit.g.ratingE
        grid remove .nedit.g.rtype
        grid .nedit.g.fromD -row 0 -column 2 -sticky w
        grid .nedit.g.toL -row 1 -column 1 -sticky e
        grid .nedit.g.toD -row 1 -column 2 -sticky w
      }
  pack $w.typeButtons.rating $w.typeButtons.date $w.typeButtons.edate \
      -side left -padx 5
  
  addHorizontalRule .nedit
  
  label $w.selectLabel -textvar ::tr(NameEditSelect) -font font_Bold
  frame $w.selectButtons
  pack $w.selectLabel $w.selectButtons -side top -pady 5
  foreach i {all filter crosstable} row {0 1 2} text {
    SelectAllGames
    SelectFilterGames
    SelectTournamentGames
  } {
    radiobutton $w.selectButtons.$i -textvar ::tr($text) \
        -variable editNameSelect -value $i
    grid $w.selectButtons.$i -row $row -column 0 -sticky w
  }
  
  addHorizontalRule $w
  
  pack [frame $w.g] -side top
  label $w.g.space -text "    "
  grid $w.g.space $w.g.space -row 0 -column 0
  label $w.g.fromL -textvar ::tr(NameEditReplace:) -font font_Bold -anchor e
  entry $w.g.fromE -width 40 -background white -relief sunken \
      -textvariable editName
  entry $w.g.fromD -width 15 -background white -relief sunken \
      -textvariable editDate
  grid $w.g.fromL -row 0 -column 1 -sticky e
  grid $w.g.fromE -row 0 -column 2 -sticky we
  
  label $w.g.toL -textvar ::tr(NameEditWith:) -font font_Bold -anchor e
  entry $w.g.toE -width 40 -background white -relief sunken \
      -textvariable editNameNew
  entry $w.g.toD -width 15 -background white -relief sunken \
      -textvariable editDateNew
  grid $w.g.toL -row 1 -column 1 -sticky e
  grid $w.g.toE -row 1 -column 2 -sticky we
  
  entry $w.g.ratingE -width 5 -background white -relief sunken \
      -textvariable editNameRating -justify right
  eval tk_optionMenu $w.g.rtype editNameRType [sc_info ratings]
  $w.g.rtype configure -pady 2
  
  label $w.g.title -textvar ::tr(NameEditMatches) \
      -font font_Bold
  text $w.g.list -height 9 -width 40 -relief sunken \
      -background grey90 -tabs {2c right 2.5c left} -wrap none
  
  label $w.g.padding -text ""
  grid $w.g.padding -row 2 -column 0
  
  grid $w.g.title -row 3 -column 1 -columnspan 2 -sticky n
  grid $w.g.list -row 4 -column 1 -rowspan 9 -columnspan 2 -sticky n
  
  updateMatchList $w.g.list "" 9 editName "" w
  
  foreach i {fromE toE ratingE fromD toD} {
    bind $w.g.$i <FocusIn> { %W configure -background lightYellow }
    bind $w.g.$i <FocusOut> { %W configure -background white }
  }
  foreach {i j} {.nedit.g.fromE "editName"  .nedit.g.toE "editNameNew" } {
    for {set z 1} {$z <= 9} {incr z} {
      bind $i [format "<Control-Key-%d>" $z] \
          [format "eval {if {\$nameMatchCount >= %d} { \
              set %s \$nameMatches(%d)}}; break" $z $j $z ]
    }
  }
  
  addHorizontalRule $w
  
  frame $w.buttons
  button $w.buttons.replace -textvar ::tr(NameEditReplace) -command {
    if {$editNameType == "rating"} {
      set err [catch {sc_name edit $editNameType $editNameSelect $editName $editNameRating $editNameRType} result]
    } elseif {$editNameType == "date"  ||  $editNameType == "edate"} {
      set err [catch {sc_name edit $editNameType $editNameSelect $editDate $editDateNew} result]
    } else {
      set err [catch {sc_name edit $editNameType $editNameSelect $editName $editNameNew} result]
    }
    if {$err} {
      tk_messageBox -type ok -icon info -parent .nedit -title "Scid" \
          -message $result
    } else {
      .nedit.status configure -text $result
    }
    sc_game tags reload
    updateBoard -pgn
    ::windows::gamelist::Refresh
  }
  
  dialogbutton $w.buttons.cancel -textvar ::tr(Close) -command {focus .; destroy .nedit}
  pack $w.buttons -side top -pady 5
  pack $w.buttons.replace $w.buttons.cancel -side left -padx 10
  
  label $w.status -text "" -width 1 -font font_Small -relief sunken -anchor w
  pack $w.status -side bottom -fill x
  
  wm resizable $w 0 0
  bind $w <Escape> { focus .; destroy .nedit }
  bind $w <Return> {.nedit.buttons.replace invoke}
  bind $w <Destroy> {set nameEditorWin 0}
  bind $w <F1> {helpWindow Maintenance Editing}
  focus $w
  $w.typeButtons.$editNameType invoke
}


# addGameSaveEntry:
#   used in gameSave for setting up the simpler labels and entry boxes.
#
proc addGameSaveEntry { name row textname } {
  ttk::label .save.g.label$name -textvar $textname
  ttk::entry .save.g.entry$name -width 30 -textvariable $name
  grid .save.g.label$name -row $row -column 0 -sticky w
  grid .save.g.entry$name -row $row -column 1 -columnspan 7 -sticky w
}

# gameSave:
#   The game save dialog. Used for adding and replacing games. If the
#   value gnum is zero, it is to add a new game; otherwise it is to
#   replace game number gnum.
#
proc gameSave { gnum } {
  global date year month day white black resultVal event site round
  global whiteElo blackElo whiteRType blackRType eco extraTags gsaveNum
  global edate eyear emonth eday
  
  if {![sc_base inUse]} {
    # We can't load a game, no database is open
    tk_messageBox -title "Scid: No database open" -type ok -icon info -message "No database is open; open or create one first."
    return
  }
  
  # Make a new toplevel that contains the game save dialog:
  set w .save
  toplevel $w
  if {$gnum == 0} {
    wm title $w "Scid: [tr GameAdd]"
  } else {
    wm title $w "Scid: [tr GameReplace]"
  }
  set gsaveNum $gnum
  catch {grab $w}
  
  set f [ttk::frame $w.g]
  pack $f -side top
  
  ttk::label $f.title -textvar ::tr(NameEditMatches)
  text $f.list -height 9 -width 40 -relief sunken -background grey90 \
      -tabs {2c right 2.5c left} -wrap none
  
  # Get current values of tags:
  set year [sc_game tag get Year];    set eyear [sc_game tag get EYear]
  set month [sc_game tag get Month];  set emonth [sc_game tag get EMonth]
  set day [sc_game tag get Day];      set eday [sc_game tag get EDay]
  set white [sc_game tag get White];  set black [sc_game tag get Black]
  set event [sc_game tag get Event];  set site [sc_game tag get Site]
  set resultVal [sc_game tag get Result];  set round [sc_game tag get Round]
  set whiteElo [sc_game tag get WhiteElo]
  set blackElo [sc_game tag get BlackElo]
  set whiteRType [sc_game tag get WhiteRType]
  set blackRType [sc_game tag get BlackRType]
  set eco [sc_game tag get ECO];  set extraTags [sc_game tag get Extra]
  clearMatchList $f.list
  
  # Use question marks instead of zero values in date:
  if {$year == 0} { set year "????" }
  if {$month == 0} { set month "??" }
  if {$day == 0} { set day "??" }
  if {$eyear == 0} { set eyear "????" }
  if {$emonth == 0} { set emonth "??" }
  if {$eday == 0} { set eday "??" }
  
  addGameSaveEntry event 0 ::tr(Event:)
  addGameSaveEntry site 1 ::tr(Site:)
  
  ttk::frame $f.dateframe
  ttk::label $f.datelabel -textvar ::tr(Date:)
  ttk::entry $f.dateyear -width 6 -textvariable year -justify right ;# -background white -relief sunken
  ttk::label $f.datedot1 -text "."
  ttk::entry $f.datemonth -width 3 -textvariable month -justify right
  ttk::label $f.datedot2 -text "."
  ttk::entry $f.dateday -width 3 -textvariable day -justify right
  grid $f.datelabel -row 2 -column 0 -sticky w
  grid $f.dateframe -row 2 -column 1 -columnspan 5 -sticky w
  ttk::button $f.datechoose -image ::utils::date::calendar -style Pad0.Small.TButton -command {
    set newdate [::utils::date::chooser "$year-$month-$day"]
    if {[llength $newdate] == 3} {
      set year [lindex $newdate 0]
      set month [lindex $newdate 1]
      set day [lindex $newdate 2]
    }
  }
  ttk::button $f.today -textvar ::tr(Today) -command {
    set year [::utils::date::today year]
    set month [::utils::date::today month]
    set day [::utils::date::today day]
  }
  pack $f.dateyear $f.datedot1 $f.datemonth $f.datedot2 $f.dateday \
      -in $f.dateframe -side left
  if {$::tcl_version >= 8.3} {
    pack $f.datechoose -in $f.dateframe -side left
  }
  pack $f.today -in $f.dateframe -side left
  
  ttk::frame $f.edateframe
  ttk::label $f.edatelabel -textvar ::tr(EventDate:)
  ttk::entry $f.edateyear -width 6 -textvariable eyear -justify right
  ttk::label $f.edatedot1 -text "."
  ttk::entry $f.edatemonth -width 3 -textvariable emonth -justify right
  ttk::label $f.edatedot2 -text "."
  ttk::entry $f.edateday -width 3 -textvariable eday -justify right
  grid $f.edatelabel -row 3 -column 0 -sticky w
  grid $f.edateframe -row 3 -column 1 -columnspan 5 -sticky w
  ttk::button $f.edatechoose -image ::utils::date::calendar -style Pad0.Small.TButton -command {
    set newdate [::utils::date::chooser "$eyear-$emonth-$eday"]
    if {[llength $newdate] == 3} {
      set eyear [lindex $newdate 0]
      set emonth [lindex $newdate 1]
      set eday [lindex $newdate 2]
    }
  }
  ttk::button $f.esame -text "=$::tr(Date)" -command {
    set eyear $year
    set emonth $month
    set eday $day
  }
  pack $f.edateyear $f.edatedot1 $f.edatemonth $f.edatedot2 $f.edateday \
      -in $f.edateframe -side left
  if {$::tcl_version >= 8.3} {
    pack $f.edatechoose -in $f.edateframe -side left
  }
  pack $f.esame -in $f.edateframe -side left
  
  addGameSaveEntry round 4 ::tr(Round:)
  addGameSaveEntry white 5 ::tr(White:)
  addGameSaveEntry black 6 ::tr(Black:)
  
  ttk::label $f.reslabel -textvar ::tr(Result:)
  ttk::entry $f.resentry -width 2 -textvariable resultVal
  ttk::label $f.rescomment -text "(1, =, 0, *)"
  grid $f.reslabel -row 7 -column 0 -sticky w
  grid $f.resentry -row 7 -column 1 -sticky w
  grid $f.rescomment -row 7 -column 2 -columnspan 4 -sticky w
  
  ttk::label $f.welolabel -text "$::tr(White) "
  
  ttk::combobox $f.wrtype -values [sc_info ratings] -width 7 -textvariable whiteRType
  
  ttk::entry $f.weloentry -width 5 -textvariable whiteElo -justify right
  
  ttk::label $f.belolabel -text "$::tr(Black) "
  
  ttk::combobox $f.brtype -values [sc_info ratings] -width 7 -textvariable blackRType
  
  ttk::entry $f.beloentry -width 5 -textvariable blackElo -justify right
  
  grid $f.welolabel -row 8 -column 0 -sticky w
  grid $f.wrtype -row 8 -column 1 -sticky w
  grid $f.weloentry -row 8 -column 2 -sticky w
  grid $f.belolabel -row 9 -column 0 -sticky w
  grid $f.brtype -row 9 -column 1 -sticky w
  grid $f.beloentry -row 9 -column 2 -sticky w
  
  ttk::label $f.ecolabel -text "ECO Code:"
  ttk::entry $f.ecoentry -width 6 -textvariable eco
  grid $f.ecolabel -row 10 -column 0 -sticky w
  grid $f.ecoentry -row 10 -column 1 -sticky w
  
  ttk::button $f.ecob -textvar ::tr(ClassifyGame) -command {set eco [sc_eco game]}
  grid $f.ecob -row 10 -column 2 -sticky w
  
  grid $f.title -row 0 -column 8 -sticky n -padx 10
  grid $f.list -row 1 -column 8 -rowspan 9 -sticky nw -padx 10
  
  addHorizontalRule .save
  
  ttk::label .save.extralabel -text "Extra Tags: (example format: Annotator \"Anand, V\") "
  pack .save.extralabel -side top -fill x
  ttk::frame .save.extra
  text .save.extra.text -height 4 -width 40 -bg white -wrap none \
      -yscrollcommand ".save.extra.scroll set"
  # Override tab-binding for this text widget:
  bind .save.extra.text <Key-Tab> "[bind all <Key-Tab>]; break"
  ttk::scrollbar .save.extra.scroll -command ".save.extra.text yview" -takefocus 0
  ttk::button .save.extra.last -text "Use\nlast\ngame's\ntags" -command {
    set extraTags [sc_game tag get -last Extra]
    .save.extra.text delete 1.0 end
    .save.extra.text insert 1.0 $extraTags
  }
  pack .save.extra -side top -fill both -expand 1 -ipady 10
  pack .save.extra.text -side left -fill both -expand 1
  if {$gnum == 0} {
    pack .save.extra.last -side right -padx 10
  }
  pack .save.extra.scroll -side right -fill y
  .save.extra.text insert 1.0 $extraTags
  
  foreach i {entryevent entrysite dateyear datemonth dateday \
        entryround entrywhite entryblack resentry \
        weloentry beloentry ecoentry edateyear edatemonth edateday} {
    bind $f.$i <Return> {.save.buttons.save invoke}
    # bind $f.$i <FocusIn> {%W configure -background lightYellow }
    # bind $f.$i <FocusOut> {%W configure -background white }
  }
  bind .save.extra.text <FocusIn> {%W configure -background lightYellow }
  bind .save.extra.text <FocusOut> {%W configure -background white }
  
  # Bindings so Ctrl-1 to Ctrl-9 select a matching name in the player,
  # site, event and round entryboxes:
  
  set j 0
  foreach {i j} {entryevent "event" entrysite "site"
    entrywhite "white" entryblack "black"
    entryround "round" } {
    for {set z 1} {$z <= 9} {incr z} {
      bind $f.$i [format "<Control-Key-%d>" $z] \
          [format "eval {if {\$nameMatchCount >= %d} \
            {set %s \$nameMatches(%d)}}" $z $j $z ]
    }
  }
  
  addHorizontalRule .save
  
  ttk::frame .save.buttons
  if {$gnum == 0} {
    ttk::button .save.buttons.prev -text "As last game" -command {
    }
  }
  dialogbutton .save.buttons.save -textvar ::tr(Save) -underline 0 -command {
    set extraTags [.save.extra.text get 1.0 end-1c]
    gsave $gsaveNum;
    destroy .save
  }
  
  dialogbutton .save.buttons.cancel -textvar ::tr(Cancel) -command {destroy .save}
  pack .save.buttons -side bottom -ipady 10 -fill both -expand 1
  if {$gnum == 0} {
    #pack .save.buttons.prev -side left -padx 10
  }
  packbuttons right .save.buttons.cancel .save.buttons.save
  
  bind .save <Alt-s> {
    set extraTags [.save.extra.text get 1.0 end-1c]
    gsave $gsaveNum;
    focus .
    destroy .save
    break
  }
  bind .save <Escape> { focus .; destroy .save; }
  ::utils::win::Centre .save
  focus .save.g.entryevent
  .save.g.entryevent selection range 0 end
  if {$gnum > 0} { focus .save.buttons.save }
}

# gsave:
#    Called by gameSave when the user presses the "Save" button
#    to save the game. Attempts to save and reports the result.
#
proc gsave { gnum } {
  global date year month day white black resultVal event site round
  global whiteElo blackElo whiteRType blackRType eco extraTags
  global edate eyear emonth eday
  
  set date [format "%s.%s.%s" $year $month $day]
  set edate [format "%s.%s.%s" $eyear $emonth $eday]
  set extraTagsList [split $extraTags "\n"]
  sc_game tags set -event $event -site $site -date $date -round $round \
      -white $white -black $black -result $resultVal \
      -whiteElo $whiteElo -whiteRatingType $whiteRType \
      -blackElo $blackElo -blackRatingType $blackRType \
      -eco $eco -eventdate $edate -extra $extraTagsList
  set res [sc_game save $gnum]
  if {$res != ""} {
    tk_messageBox -type ok -icon info -parent .save \
        -title "Scid" -message $res
  }
  updateBoard -pgn
  ::windows::gamelist::Refresh
  updateTitle
}

# gameAdd:
#   Calls gameSave with a game number of zero.
#
proc gameAdd {} { gameSave 0 }

# gameReplace:
#   Calls gameSave with the current game number, which should be nonzero.
#
proc gameReplace {} { gameSave [sc_game number] }


# helpAbout:
#    Displays information about Scid.
#
proc helpAbout {} {
    # for {set g 1} { $g <= [sc_base numGames ] } {incr g} {
        # sc_game load $g
        # ::game::Strip comments
        # ::game::Strip variations
        # sc_game save $g
    # }
    # return
  ::utils::sound::PlaySound sound_move
  set str {}
  append str "Scid: Shane's chess information database\n\n"
  append str "Version $::scidVersion, $::scidVersionDate\n"
  append str "Using Tcl/Tk version: [info patchlevel]\n\n"
  append str "Author: Shane Hudson\n"
  append str "Author: Pascal Georges\n"
  append str "Copyright (C) 1999-2004 Shane Hudson\n"
  append str "Copyright (C) 2006-2009 Pascal Georges\n"
  append str "Scid is licenced under the\n"
  append str "GNU General Public License.\n"
  set asserts [sc_info asserts]
  if {$asserts > 0} {
    append str "\n\n[::utils::thousands $asserts] asserts tested."
  }
  tk_messageBox -title "About Scid" -message $str -type ok
}

############################################################
#### Square Bindings:
# Pascal Georges : allow the drawing of markers directly on the board (not through comment editor)
set startArrowSquare ""

proc addMarker {sq color} {
  set to [::board::san $sq]
  set oldComment [sc_pos getComment]
  
  # check if the square is already of the same color
  set erase [regexp "\[\x5B\]%draw full,$to,$color\[\x5D\]" $oldComment]
  regsub "\[\x5B\]%draw full,$to,(green|yellow|red)\[\x5D\]" $oldComment "" newComment
  set newComment [string trim $newComment]
  if {!$erase} {
    append newComment " \[%draw full,$to,$color\]"
  }
  sc_pos setComment $newComment
  ::pgn::Refresh 1
  updateBoard
}

proc drawArrow {sq color} {
  global startArrowSquare
  if {$startArrowSquare == ""} {
    set startArrowSquare [::board::san $sq]
  } else  {
    set oldComment [sc_pos getComment]
    set to [::board::san $sq]
    if {$startArrowSquare != $to } {
      set erase [regexp "\[\x5B\]%draw arrow,$startArrowSquare,$to,$color\[\x5D\]" $oldComment]
      regsub "\[\x5B\]%draw arrow,$startArrowSquare,$to,(green|yellow|red)\[\x5D\]" $oldComment "" newComment
      set newComment [string trim $newComment]
      if {!$erase} {
        append newComment " \[%draw arrow,$startArrowSquare,$to,$color\]"
      }
      sc_pos setComment $newComment
      ::pgn::Refresh 1
      updateBoard
    }
    set startArrowSquare ""
  }
}

for {set i 0} { $i < 64 } { incr i } {
  ::board::bind .main.board $i <Enter> "enterSquare $i"
  ::board::bind .main.board $i <Leave> "leaveSquare $i"
  ::board::bind .main.board $i <ButtonPress-1> "set ::addVariationWithoutAsking 0 ; pressSquare $i"
  ::board::bind .main.board $i <ButtonPress-$::MB2> "set ::addVariationWithoutAsking 1 ; pressSquare $i"
  #::board::bind .main.board $i <ButtonPress-$::MB3> "set ::addVariationWithoutAsking 1 ; pressSquare $i"
  ::board::bind .main.board $i <Control-ButtonPress-1> "drawArrow $i green"
  ::board::bind .main.board $i <Control-ButtonPress-$::MB2> "drawArrow $i yellow"
  ::board::bind .main.board $i <Control-ButtonPress-$::MB3> "drawArrow $i red"
  ::board::bind .main.board $i <Shift-ButtonPress-1> "addMarker $i green"
  ::board::bind .main.board $i <Shift-ButtonPress-$::MB2> "addMarker $i yellow"
  ::board::bind .main.board $i <Shift-ButtonPress-$::MB3> "addMarker $i red"
  ::board::bind .main.board $i <B1-Motion> "::board::dragPiece .main.board %X %Y"
  ::board::bind .main.board $i <ButtonRelease-1> "releaseSquare .main.board %X %Y ; set ::addVariationWithoutAsking 0"
  ::board::bind .main.board $i <ButtonRelease-$::MB2> "releaseSquare .main.board %X %Y ; set ::addVariationWithoutAsking 0"
  #::board::bind .main.board $i <ButtonRelease-$::MB3> "releaseSquare .main.board %X %Y ; set ::addVariationWithoutAsking 0"
  
  #::board::bind .main.board $i <ButtonPress-$::MB2> "pressSquare $i"
  # Pascal Georges : this should be removed because I find it too dangerous for people with cats ??
  # put it back with Scid 3.6.13, let's see if this leads to problems
  ::board::bind .main.board $i <ButtonPress-$::MB3> backSquare
}

foreach i {o q r n k O Q R B N K} {
  bind .main <$i> "moveEntry_Char [string toupper $i]"
}
foreach i {a b c d e f g h 1 2 3 4 5 6 7 8} {
  bind .main <Key-$i> "moveEntry_Char $i"
}

bind .main <Control-BackSpace> backSquare
bind .main <Control-Delete> backSquare
bind .main <BackSpace> moveEntry_Backspace
bind .main <Delete> moveEntry_Backspace
bind .main <space> moveEntry_Complete


###  Other Key bindings:
# Set via menus.tcl -> standardShortcuts

# Arrow keys, Home and End:
bind $dot_w <Home> ::move::Start
bind $dot_w <Left> ::move::Back
bind $dot_w <Up> {
  if {[sc_pos isAt vstart]} {
    .main.fbutton.button.exitVar invoke
  } else  {
    ::move::Back 10
  }
}
bind $dot_w <Down> {::move::Forward 10}
bind $dot_w <Right> ::move::Forward
bind $dot_w <End> ::move::End

bind $dot_w <period> {if {!$tree(refresh)} {toggleRotateBoard}}

# MouseWheel in main window:
bind .main <MouseWheel> {
  if {[expr -%D] < 0} { ::move::Back }
  if {[expr -%D] > 0} { ::move::Forward }
}
bind .main <Shift-MouseWheel> {
  if {[expr -%D] < 0} { ::move::Back 10 }
  if {[expr -%D] > 0} { ::move::Forward 10}
}

if {! $windowsOS} {
  bind all <Button-4> {event generate [focus -displayof %W] <MouseWheel> -delta 120}
  bind all <Button-5> {event generate [focus -displayof %W] <MouseWheel> -delta -120}
  bind all <Shift-Button-4> {event generate [focus -displayof %W] <Shift-MouseWheel> -delta  120}
  bind all <Shift-Button-5> {event generate [focus -displayof %W] <Shift-MouseWheel> -delta -120}
  # bind $dot_w <Button-4> ::move::Back
  # bind $dot_w <Button-5> ::move::Forward
  # bind $dot_w <Shift-Button-4> {::move::Back 10}
  # bind $dot_w <Shift-Button-5> {::move::Forward 10}
}

# Apply standard shortcuts to main window
# standardShortcuts $dot_w
standardShortcuts .main

############################################################
### Packing the main window:

if { $::docking::USE_DOCKING} {
  ttk::frame .main.space
  grid .main.space -row 4 -column 0 -columnspan 3 -sticky nsew
  grid rowconfigure .main 4 -weight 1
}

label .main.statusbar -textvariable statusBar -relief sunken -anchor w -width 1 -font font_Small
grid .main.statusbar -row 5 -column 0 -columnspan 3 -sticky we
bind .main.statusbar <1> gotoNextBase

proc gotoNextBase {} {
  set n [sc_base current]
  set cb [sc_info clipbase]
  while {1} {
    incr n; if {$n > $cb} { set n 1 }
    sc_base switch $n
    if {[sc_base inUse]} { break }
  }
  updateBoard -pgn
  updateTitle
  updateMenuStates
  updateStatusBar
  ::windows::gamelist::Refresh
}

grid columnconfigure .main 0 -weight 1

# game info widget only gets its requested size
if { $::docking::USE_DOCKING } {
  grid rowconfigure .main 3 -weight 0
} else  {
  grid rowconfigure .main 3 -weight 1
}

pack .main.fbutton.button -anchor center
grid .main.fbutton -row 1 -column 0 -sticky we ;# -pady 2 -padx 2

grid .main.board -row 2 -column 0 -sticky we ;# -padx 5 -pady 5

# update Game Info panel visibility after loading options
toggleGameInfo

# grid .main.gameInfoFrame -row 3 -column 0 -sticky news -padx 2

redrawToolbar

if { ! $::docking::USE_DOCKING } {
  wm resizable .main 0 1
}

wm minsize . 0 0
wm iconname . "Scid"


#################
# Open files and databases:

# Check for arguments starting with "-" (or "/" on Windows):

set loadAtStart(spell) 1
set loadAtStart(eco) 1
set loadAtStart(tb) 1

proc getCommandLineOptions {} {
  global argc argv windowsOS loadAtStart
  
  if { $::macOS && ([string first "-psn" [lindex $argv 0]] == 0)} {
    # Remove Process Serial Number from argument list:
    set argv [lrange $argv 1 end]
    incr argc -1
  }
  
  while {$argc > 0} {
    set arg [lindex $argv 0]
    set firstChar [string index $arg 0]
    if {$firstChar == "-"  ||  ($windowsOS  &&  $firstChar == "/")} {
      # Seen option argument:
      incr argc -1
      set argv [lrange $argv 1 end]
      
      # Special argument "--" means no more options:
      if {$arg == "--"} { return }
      
      # Check for known option names:
      #   -f (/f), -fast (/fast): Fast start with no tablebases, etc.
      #   -xeco, -xe: Do not load ECO file.
      #   -xspell, -xs: Do not load spellcheck file.
      #   -xtb, -xt: Do not check tablebase directory.
      
      set argName [string range $arg 1 end]
      switch $argName {
        "f"    -
        "fast" {
          ::splash::add "Fast start: no tablebases, ECO or spelling file loaded."
          set loadAtStart(spell) 0
          set loadAtStart(eco) 0
          set loadAtStart(tb) 0
        }
        "xt" -
        "xtb" {
          set loadAtStart(tb) 0
        }
        "xe" -
        "xeco" {
          set loadAtStart(eco) 0
        }
        "xs" -
        "xspell" {
          set loadAtStart(spell) 0
        }
        "s1"  { set ::boardSize 21 }
        "s2"  { set ::boardSize 25 }
        "s3"  { set ::boardSize 29 }
        "s4"  { set ::boardSize 33 }
        "s5"  { set ::boardSize 37 }
        "s6"  { set ::boardSize 40 }
        "s7"  { set ::boardSize 45 }
        "s8"  { set ::boardSize 49 }
        "s9"  { set ::boardSize 54 }
        "s10" { set ::boardSize 58 }
        "s11" { set ::boardSize 64 }
        "s12" { set ::boardSize 72 }
        default {
          ::splash::add "Warning: unknown option: \"$arg\""
        }
      }
    } else {
      # Seen first non-option argument:
      return
    }
  }
}

getCommandLineOptions


setLanguage $language

updateTitle
updateBoard
updateStatusBar
update idle

# Try to find tablebases:
if {$loadAtStart(tb)} {
  if {[sc_info tb]} {
    ::splash::add "Checking for endgame tablebase files..."
    set tbDirs {}
    foreach i {1 2 3 4} {
      if {$initialDir(tablebase$i) != ""} {
        if {$tbDirs != ""} { append tbDirs ";" }
        append tbDirs [file nativename $initialDir(tablebase$i)]
      }
    }
    set result 0
    if {$tbDirs != ""} {
      set result [sc_info tb $tbDirs]
    }
    if {$result == 0} {
      ::splash::add "    No tablebases were found."
    } else {
      ::splash::add "    Tablebases with up to $result pieces were found."
    }
  }
}

# Try to open the ECO classification file:
set result 0
set ecoFile_fullname [file nativename $ecoFile]

if {$loadAtStart(eco)} {
  ::splash::add "Trying to load the ECO openings file..."
  if {[catch { sc_eco read $ecoFile_fullname } result]} {
    # Could not load, so try "scid.eco" in the current directory:
    if {[catch {sc_eco read "scid.eco"} result]} {
      # Neither attempt worked, so do not use ECO classification
      ::splash::add "    Unable to open the ECO file: $ecoFile"
    } else {
      ::splash::add "    ECO file \"./scid.eco\" loaded: $result positions."
    }
  } else {
    ::splash::add "    ECO file \"[file tail $ecoFile_fullname]\"  loaded: $result positions."
  }
}

###
# Try to load the spellcheck file:
if {$loadAtStart(spell)} {
  if {[catch {sc_name read $spellCheckFile} result]} {
    #::splash::add "Unable to load the default spellcheck file: $spellCheckFile"
  } else {
    ::splash::add "Spellcheck file \"[file tail $spellCheckFile]\" loaded:"
    ::splash::add "    [lindex $result 0] players, [lindex $result 1] events, [lindex $result 2] sites, [lindex $result 3] rounds."
  }
}

# fullname:
#   Given a file name, returns its absolute name.
#
proc fullname {fname} {
  if {[file pathtype $fname] == "absolute"} { return $fname }
  set old [pwd]
  if {[catch {cd [file dirname $fname]}]} { return $fname }
  set fname [file join [pwd] [file tail $fname]]
  catch {cd $old}
  return $fname
}

# Loading a database if specified on the command line:
# Need to check file type: .epd, .pgn, .pgn.gz, etc

while {$argc > 0} {
  set startbase [fullname [lindex $argv 0]]
  if {! [catch {sc_game startBoard $startbase}]} {
    set argc 0
    break
  }
  if {! [catch {sc_game startBoard [join $argv " "]}]} {
    set argc 0
    break
  }
  if {[string match "*.epd*" $startbase]} {
    ::splash::add "Opening EPD file: $startbase..."
    if {![newEpdWin openSilent $startbase]} {
      ::splash::add "   Error opening EPD file: $startbase"
    }
    set initialDir(epd) [file dirname $startbase]
  } elseif {[string match "*.sso" $startbase]} {
    ::splash::add "Opening filter file: $startbase..."
    if {[catch {uplevel "#0" source $startbase} err]} {
      ::splash::add "   Error opening $startbase: $err"
    } else {
      switch -- $::searchType {
        "Material" {
          sc_search material \
              -wq [list $pMin(wq) $pMax(wq)] -bq [list $pMin(bq) $pMax(bq)] \
              -wr [list $pMin(wr) $pMax(wr)] -br [list $pMin(br) $pMax(br)] \
              -wb [list $pMin(wb) $pMax(wb)] -bb [list $pMin(bb) $pMax(bb)] \
              -wn [list $pMin(wn) $pMax(wn)] -bn [list $pMin(bn) $pMax(bn)] \
              -wm [list $pMin(wm) $pMax(wm)] -bm [list $pMin(bm) $pMax(bm)] \
              -wp [list $pMin(wp) $pMax(wp)] -bp [list $pMin(bp) $pMax(bp)] \
              -flip $ignoreColors -filter $::search::filter::operation \
              -range [list $minMoveNum $maxMoveNum] \
              -length $minHalfMoves -bishops $oppBishops \
              -diff [list $minMatDiff $maxMatDiff] \
              -patt "$pattBool(1) $pattPiece(1) $pattFyle(1) $pattRank(1)" \
              -patt "$pattBool(2) $pattPiece(2) $pattFyle(2) $pattRank(2)" \
              -patt "$pattBool(3) $pattPiece(3) $pattFyle(3) $pattRank(3)" \
              -patt "$pattBool(4) $pattPiece(4) $pattFyle(4) $pattRank(4)" \
              -patt "$pattBool(5) $pattPiece(5) $pattFyle(5) $pattRank(5)" \
              -patt "$pattBool(6) $pattPiece(6) $pattFyle(6) $pattRank(6)" \
              -patt "$pattBool(7) $pattPiece(7) $pattFyle(7) $pattRank(7)" \
              -patt "$pattBool(8) $pattPiece(8) $pattFyle(8) $pattRank(8)" \
              -patt "$pattBool(9) $pattPiece(9) $pattFyle(9) $pattRank(9)" \
              -patt "$pattBool(10) $pattPiece(10) $pattFyle(10) $pattRank(10)"
          ::splash::add "   Material/Pattern filter file $startbase correctly applied"
        }
        "Header"   {
          set sPgnlist {}
          foreach i {1 2 3} {
            set temp [string trim $sPgntext($i)]
            if {$temp != ""} { lappend sPgnlist $temp }
          }
          set wtitles {}
          set btitles {}
          foreach i $sTitleList {
            if $sTitles(w:$i) { lappend wtitles $i }
            if $sTitles(b:$i) { lappend btitles $i }
          }
          sc_search header -white $sWhite -black $sBlack \
              -event $sEvent -site $sSite -round $sRound \
              -date [list $sDateMin $sDateMax] \
              -results [list $sResWin $sResDraw $sResLoss $sResOther] \
              -welo [list $sWhiteEloMin $sWhiteEloMax] \
              -belo [list $sBlackEloMin $sBlackEloMax] \
              -delo [list $sEloDiffMin $sEloDiffMax] \
              -eco [list $sEcoMin $sEcoMax $sEco] \
              -length [list $sGlMin $sGlMax] \
              -toMove $sSideToMove \
              -gameNumber [list $sGnumMin $sGnumMax] \
              -flip $sIgnoreCol -filter $::search::filter::operation \
              -fStdStart $sHeaderFlags(StdStart) \
              -fPromotions $sHeaderFlags(Promotions) \
              -fComments $sHeaderFlags(Comments) \
              -fVariations $sHeaderFlags(Variations) \
              -fAnnotations $sHeaderFlags(Annotations) \
              -fDelete $sHeaderFlags(DeleteFlag) \
              -fWhiteOp $sHeaderFlags(WhiteOpFlag) \
              -fBlackOp $sHeaderFlags(BlackOpFlag) \
              -fMiddlegame $sHeaderFlags(MiddlegameFlag) \
              -fEndgame $sHeaderFlags(EndgameFlag) \
              -fNovelty $sHeaderFlags(NoveltyFlag) \
              -fPawnStruct $sHeaderFlags(PawnFlag) \
              -fTactics $sHeaderFlags(TacticsFlag) \
              -fKingside $sHeaderFlags(KsideFlag) \
              -fQueenside $sHeaderFlags(QsideFlag) \
              -fBrilliancy $sHeaderFlags(BrilliancyFlag) \
              -fBlunder $sHeaderFlags(BlunderFlag) \
              -fUser $sHeaderFlags(UserFlag) \
              -pgn $sPgnlist -wtitles $wtitles -btitles $btitles
          ::splash::add "   Header filter file $startbase correctly applied"
        }
      }
      set glstart 1
      ::windows::gamelist::Refresh
      ::windows::stats::Refresh
    }
  } elseif {[string match "*.sor" $startbase]} {
    ::splash::add "Opening repertoire file: $startbase..."
    if {[catch {::rep::OpenWithFile $startbase} err]} {
      ::splash::add "Error opening $startbase: $err"
    }
  } else {
    busyCursor .
    ::splash::add "Opening database: $startbase ..."
    set err 0
    set errMessage ""
    if {[string match "*.pgn" $startbase] || \
          [string match "*.PGN" $startbase] || \
          [string match "*.pgn.gz" $startbase]} {
      set err [catch {sc_base create $startbase true} errMessage]
      if {$err == 0} {
        doPgnFileImport $startbase "\nOpening [file tail $startbase] read-only...\n"
        sc_base type [sc_base current] 3
        ::recentFiles::add $startbase
      }
    } else {
      set err [catch { ::file::Open $startbase} errMessage]
      if {! $err} { ::recentFiles::add "[file rootname $startbase].si4" }
    }
    if {$err} {
      ::splash::add "   Error: could not open database \"$startbase\":\n  $errMessage"
    } else {
      ::splash::add "   Database \"$startbase\" opened: [sc_base numGames] games."
      set initialDir(base) [file dirname $startbase]
      catch {sc_game load auto}
      flipBoardForPlayerNames $::myPlayerNames
    }
  }
  unbusyCursor .
  incr argc -1
  set argv [lrange $argv 1 end]
}

::splash::add "\nStartup completed."
::splash::add "Scid has 44 online help pages; just press F1 for help!\n"
::splash::add "Also look at the online tutorial\nhttp://scid.sourceforge.net/tutorial/\n"
setWinLocation $dot_w
wm deiconify $dot_w

wm protocol $dot_w WM_DELETE_WINDOW { ::file::Exit }

# In docked mode, reopen only the windows that are not dockable
if { !$::docking::USE_DOCKING } {
  if {$startup(switcher)} { ::windows::switcher::Open }
  if {$startup(pgn)} { ::pgn::OpenClose }
  if {$startup(gamelist)} { ::windows::gamelist::Open }
  if {$startup(tree)} { ::tree::make }
  if {$startup(stats)} { ::windows::stats::Open }
  if {$startup(crosstable)} { crosstabWin }
  if {$startup(finder)} { ::file::finder::Open }
  if {$startup(book)} { ::book::open }
} else  {
  if {$startup(stats)} { ::windows::stats::Open }
  if {$startup(crosstable)} { crosstabWin }
  if {$startup(finder)} { ::file::finder::Open }
}

updateBoard
updateStatusBar
updateTitle
updateLocale
update
bind $dot_w <Configure> "recordWinSize $dot_w"

# Bindings to map/unmap all windows when main window is mapped:
bind .main.statusbar <Map> { showHideAllWindows deiconify}
bind .main.statusbar <Unmap> { showHideAllWindows iconify}

################################################################################
# returns a list of all toplevel windows, except some that are utilities
################################################################################
proc getTopLevel {} {
  
  set topl {}
  set exclude { ".splash" ".tooltip" ".glistExtra" ".menu" "." ".pgnPopup" }
  foreach c [winfo children .] {
    if { $c != [winfo toplevel $c] } { continue }
    # Tk report .__tk_filedialog as toplevel window even if the window has been closed
    if { [ lsearch $topl $c ] == -1 && [ lsearch $exclude $c ] == -1 && ![string match "\.__tk*" $c] } {
      lappend topl $c
    }
  }
  return $topl
}
################################################################################
#
################################################################################
# showHideAllWindows:
#   Arranges for all major Scid windows to be shown/hidden
#   Should be called type = "iconify" or "deiconify"
#
proc showHideAllWindows {type} {
  
  # Don't do this if user option is off:
  if {! $::autoIconify} { return }
  
  # Some window managers like KDE generate Unmap events for other
  # situations like switching to another desktop, etc.
  # So if the main window is still mapped, do not iconify others:
  if {($type == "iconify")  && ([winfo ismapped .main] == 1)} { return }
  
  # Now iconify/deiconify all the major Scid windows that exist:
  foreach w [getTopLevel] {
    # .baseWin .glistWin .pgnWin .tourney .maintWin \
    # .ecograph .crosstabWin .treeWin .analysisWin1 .anslysisWin2 \
    # .playerInfoWin .commentWin .repWin .statsWin .tbWin \
    # .sb .sh .sm .noveltyWin .emailWin .oprepWin .plist \
    # .rgraph .sgraph .importWin .helpWin .tipsWin
    if {[winfo exists $w]} { catch {wm $type $w} }
  }
  
}

proc raiseAllWindows {} {
  # Don't do this if auto-raise option is turned off:
  if {! $::autoRaise} { return }
  
  showHideAllWindows deiconify
  
  foreach w [getTopLevel] {
    # .baseWin .glistWin .pgnWin .tourney .maintWin \
    # .ecograph .crosstabWin .treeWin .analysisWin1 .anslysisWin2 \
    # .playerInfoWin .commentWin .repWin .statsWin .tbWin \
    # .sb .sh .sm .noveltyWin .emailWin .oprepWin .plist \
    # .rgraph .sgraph .importWin .helpWin .tipsWin
    if {[winfo exists $w]} { catch { raise $w } }
  }
}

# Bind double-click in main Scid window to raise all Scid windows:
bind $dot_w <Double-Button-1> raiseAllWindows

# Hack to extract gif images out of Scid:
#
if {0} {
  proc dumpImages {dir} {
    package require base64
    file mkdir $dir
    set images [image names]
    foreach i $images {
      if {[image type $i] == "photo" } {
        set ext [$i cget -format]
        if {$ext == ""} {
          set ext "gif"
        }
      } else  {
        set ext "gif"
      }
      set data [string trim [$i cget -data]]
      if {$data == ""} { continue }
      if {[catch {set d [::base64::decode $data]}]} { continue }
      regsub -all {:} $i {_} i
      set fname [file join $dir $i.$ext]
      set f [open $fname w]
      fconfigure $f -translation binary -encoding binary
      puts -nonewline $f $d
      close $f
    }
  }
  
  bind $dot_w <Control-Shift-F7> {puts "dumpImages" ; dumpImages "/tmp/images"}
}

if {$startup(tip)} { ::tip::show }

after 500 {
  if {$::splash::autoclose} {wm withdraw .splash}
}

# Opening files by drag & drop on Scid icon on Mac
if { $macOS } {
  # We opened for a drag & drop request, process it now:
  set isopenBaseready 1
  if {$dndargs != 0} {
    set isopenBaseready 2
    catch {::tk::mac::OpenDocument $dndargs} errmsg
    #::splash::add "Opening file(s)...\$dndargs"
  }
}

if { !$::docking::USE_DOCKING } {
  wm withdraw .
  bind .main <Destroy> { destroy . }
}

if { $::docking::USE_DOCKING } {
  setTitle .main [ ::tr "Board" ]
  # restore geometry
  wm minsize $dot_w 360 320
  setWinLocation $dot_w
  setWinSize $dot_w
  
  # when main board pane is resized, auto-size it
  bind .main <Configure> { ::docking::handleConfigureEvent ::resizeMainBoard }
  
  # restore default layout (number 1)
  if { $::autoLoadLayout } {
    set ::docking::restore_running 1
    ::docking::layout_restore 1
    # engines may take time to start. Wait a few seconds before allowing an engine to automatically start analyzing
    after 2000 { set ::docking::restore_running 0 }
  }
  
  standardShortcuts TNotebook
  ::docking::toggleAutoResizeBoard
}

# updateMenuStates

### End of file: end.tcl
###
### tacgame.tcl: part of Scid.
### Copyright (C) 2006  Pascal Georges
###

namespace eval tacgame {
  ######################################################################
  ### Tacgame window: uses a chess engine (Phalanx) in easy mode and
  ### another engine (for example Toga) to track blunders
  
  ### many variables are now set in start.tcl to allow for
  ### remembering them in options.dat S.A
  
  set resignCount 0
  
  # if true, follow a specific opening
  set openingMovesList {}
  set openingMovesHash {}
  set openingMoves ""
  set outOfOpening 0
  
  # list of fen positions played to detect 3 fold repetition
  set lFen {}
  
  set index1 0
  set index2 0
  
  set lastblundervalue 0.0
  set prev_lastblundervalue 0.0
  set blundermissed false
  set blunderwarning false
  set blunderwarningvalue 0.0
  set blundermissedvalue 0.0
  
  set blunderWarningLabel $::tr(Noblunder)
  set scoreLabel 0.0
  
  set blunderpending 0
  set prev_blunderpending 0
  set currentPosHash 0
  set lscore {}
  
  set analysisCoach(automove1) 0
  set analysisCoach(paused) 0 ; # S.A
  
  # ======================================================================
  # resetValues
  #   Resets all blunders data.
  # ======================================================================
  proc resetValues {} {
    # see tcl/start.tcl
    set ::tacgame::blundermissed false
    set ::tacgame::lastblundervalue 0.0
    set ::tacgame::prev_lastblundervalue 0.0
    set ::tacgame::prev_blunderpending 0
    set ::tacgame::currentPosHash [sc_pos hash]
    set ::tacgame::lscore {}
    set ::tacgame::resignCount 0
  }
  
  # ======================================================================
  # resetEngine:
  #   Resets all engine-specific data.
  # ======================================================================
  proc resetEngine {n} {
    
    global ::tacgame::analysisCoach
    set analysisCoach(pipe$n) ""             ;# Communication pipe file channel
    set analysisCoach(seen$n) 0              ;# Seen any output from engine yet?
    set analysisCoach(seenEval$n) 0          ;# Seen evaluation line yet?
    set analysisCoach(score$n) 0             ;# Current score in centipawns
    set analysisCoach(moves$n) ""            ;# PV (best line) output from engine
    set analysisCoach(movelist$n) {}         ;# Moves to reach current position
    set analysisCoach(nonStdStart$n) 0       ;# Game has non-standard start
    set analysisCoach(has_analyze$n) 0       ;# Engine has analyze command
    set analysisCoach(has_setboard$n) 0      ;# Engine has setboard command
    set analysisCoach(send_sigint$n) 0       ;# Engine wants INT signal
    set analysisCoach(wants_usermove$n) 0    ;# Engine wants "usermove" before moves
    set analysisCoach(wholeSeconds$n) 0      ;# Engine times in seconds not centisec
    set analysisCoach(analyzeMode$n) 0       ;# Scid has started analyze mode
    set analysisCoach(invertScore$n) 1       ;# Score is for side to move, not white
    set analysisCoach(automove$n) 0
    set analysisCoach(automoveThinking$n) 0
    set analysisCoach(automoveTime$n) 2000
    set analysisCoach(lastClicks$n) 0
    set analysisCoach(after$n) ""
    set analysisCoach(log$n) ""              ;# Log file channel
    set analysisCoach(logCount$n) 0          ;# Number of lines sent to log file
    set analysisCoach(wbEngineDetected$n) 0  ;# Is this a special Winboard engine?
  }
  
  # ======================================================================
  #		::tacgame::config
  #   Configure coach games :
  #			- Phalanx engine (because it has an 'easy' option)
  #			- Coach engine (Toga is the best)
  #			- level of difficulty
  # ======================================================================
  proc config {} {
    
    global ::tacgame::configWin ::tacgame::analysisCoachCommand ::tacgame::analysisCoach \
        engineCoach1 engineCoach2 ::tacgame::level ::tacgame::levelFixed \
        ::tacgame::isLimitedAnalysisTime ::tacgame::analysisTime ::tacgame::index1 ::tacgame::index2 ::tacgame::chosenOpening
    
    # check if game window is already opened. If yes abort previous game
    if {[winfo exists .coachWin]} {
      focus .
      destroy .coachWin
      ::tacgame::closeEngine 1
      ::tacgame::closeEngine 2
    }
    
    # find Phalanx and Toga engines
    set i 0
    set index1 -1
    set index2 -1
    foreach e $::engines(list) {
      if { $index1 != -1 && $index2 != -1 } { break }
      set name [lindex $e 0]
      if { [ string match -nocase "*phalanx*" $name ]  } {
        set engineCoach1 $name
        set index1 $i
      }
      
      if { [ string match -nocase "*toga*" $name ] } {
        set engineCoach2 $name
        set index2 $i
      }
      incr i
    }
    
    # could not find Toga or Phalanx
    if { $index1 == -1 || $index2 == -1 } {
      tk_messageBox -title "Scid" -icon warning -type ok -message $::tr(PhalanxOrTogaMissing)
      return
    }
    
    set w ".configWin"
    if {[winfo exists $w]} {
      focus $w
      # wm attributes $w -topmost
      return
    }
    
    toplevel $w
    wm title $w "$::tr(configurecoachgame)"
    
    bind $w <F1> { helpWindow TacticalGame }
    setWinLocation $w
    
    ttk::labelframe $w.flevel -text [string toupper $::tr(difficulty) 0 0 ]
    ttk::frame $w.flevel.diff_fixed
    ttk::frame $w.flevel.diff_random
    ttk::labelframe $w.fopening -text $::tr(Opening)
    ttk::frame $w.flimit -relief raised -borderwidth 1
    ttk::frame $w.fbuttons
    
    pack $w.flevel -side top -fill x
    pack $w.flevel.diff_fixed -side top
    pack $w.flevel.diff_random -side top
    pack $w.fopening  -side top -fill both -expand 1
    pack $w.flimit $w.fbuttons -side top -fill x
    
    ttk::radiobutton $w.flevel.diff_random.cb -text $::tr(RandomLevel) -variable ::tacgame::randomLevel -value 1 -width 15
    ttk::scale $w.flevel.diff_random.lMin -orient horizontal -from 1200 -to 2200 -length 100 -variable ::tacgame::levelMin \
        -command { ::utils::validate::roundScale ::tacgame::levelMin 50 }
    ttk::label $w.flevel.diff_random.labelMin -textvariable ::tacgame::levelMin
    ttk::scale $w.flevel.diff_random.lMax -orient horizontal -from 1200 -to 2200 -length 100 -variable ::tacgame::levelMax \
        -command { ::utils::validate::roundScale ::tacgame::levelMax 50 }
    ttk::label $w.flevel.diff_random.labelMax -textvariable ::tacgame::levelMax
    
    grid $w.flevel.diff_random.cb -row 0 -column 0 -rowspan 2
    grid $w.flevel.diff_random.labelMin -row 0 -column 1
    grid $w.flevel.diff_random.lMin -row 1 -column 1
    grid $w.flevel.diff_random.labelMax -row 0 -column 2
    grid $w.flevel.diff_random.lMax -row 1 -column 2
    
    ttk::radiobutton $w.flevel.diff_fixed.cb -text $::tr(FixedLevel) -variable ::tacgame::randomLevel -value 0 -width 15
    ttk::label $w.flevel.diff_fixed.labelFixed -textvariable ::tacgame::levelFixed
    ttk::scale $w.flevel.diff_fixed.scale -orient horizontal -from 1200 -to 2200 -length 200 \
        -variable ::tacgame::levelFixed -command { ::utils::validate::roundScale ::tacgame::levelFixed 50 }
    
    grid $w.flevel.diff_fixed.cb -row 0 -column 0 -rowspan 2
    grid $w.flevel.diff_fixed.labelFixed -row 0 -column 1 -columnspan 2
    grid $w.flevel.diff_fixed.scale -row 1 -column 1 -columnspan 2
    
    # start new game
    ttk::radiobutton $w.fopening.cbNew -text $::tr(StartNewGame)  -variable ::tacgame::openingType -value new
    
    # start from current position
    ttk::radiobutton $w.fopening.cbPosition -text $::tr(StartFromCurrentPosition) -variable ::tacgame::openingType -value current
    
    # or choose a specific opening
    ttk::radiobutton $w.fopening.cbSpecific -text $::tr(SpecificOpening) -variable ::tacgame::openingType -value specific
    
    pack $w.fopening.cbNew -anchor w -padx 100
    pack $w.fopening.cbPosition -anchor w -padx 100
    pack $w.fopening.cbSpecific -anchor w -padx 100
    
    ttk::frame $w.fopening.fOpeningList
    listbox $w.fopening.fOpeningList.lbOpening -yscrollcommand "$w.fopening.fOpeningList.ybar set" \
        -height 5 -width 40 -list ::tacgame::openingList
    $w.fopening.fOpeningList.lbOpening selection set $::tacgame::chosenOpening
    $w.fopening.fOpeningList.lbOpening see $::tacgame::chosenOpening
    
    ttk::scrollbar $w.fopening.fOpeningList.ybar -command "$w.fopening.fOpeningList.lbOpening yview"
    pack $w.fopening.fOpeningList.lbOpening -side right -fill both -expand 1
    pack $w.fopening.fOpeningList.ybar  -side right -fill y
    pack $w.fopening.fOpeningList -expand yes -fill both -side top -expand 1
    
    # in order to limit CPU usage, limit the time for analysis (this prevents noise on laptops)
    ttk::checkbutton $w.flimit.blimit -text $::tr(limitanalysis) -variable ::tacgame::isLimitedAnalysisTime
    ttk::label $w.flimit.labelsecval -textvariable ::tacgame::analysisTime
    ttk::label $w.flimit.labelsec -text $::tr(seconds)
    ttk::scale $w.flimit.analysisTime -orient horizontal -from 5 -to 60 -length 200 -variable ::tacgame::analysisTime \
        -command { ::utils::validate::roundScale ::tacgame::analysisTime 5 }
    grid $w.flimit.blimit -column 0 -row 0 -rowspan 2
    grid $w.flimit.labelsecval  -column 1 -row 0
    grid $w.flimit.labelsec -column 2 -row 0
    grid $w.flimit.analysisTime -column 1 -row 1 -columnspan 2
    # pack $w.flimit.blimit $w.flimit.labelsec $w.flimit.analysisTime  $w.flimit.labelsecval -side left -expand yes -pady 5
    
    ttk::button $w.fbuttons.close -text $::tr(Play) -command {
      focus .
      set ::tacgame::chosenOpening [.configWin.fopening.fOpeningList.lbOpening curselection]
      destroy .configWin
      ::tacgame::play
    }
    ttk::button $w.fbuttons.cancel -textvar ::tr(Cancel) -command "focus .; destroy $w"
    
    pack $w.fbuttons.close $w.fbuttons.cancel -expand yes -side left -padx 20 -pady 2
    
    bind $w <Escape> { .configWin.fbuttons.cancel invoke }
    bind $w <Return> { .configWin.fbuttons.close invoke }
    bind $w <F1> { helpWindow TacticalGame }
    bind $w <Destroy> ""
    bind $w <Configure> "recordWinSize $w"
    wm minsize $w 45 0
  }
  # ======================================================================
  #
  #	::tacgame::play
  #
  # ======================================================================
  proc play { } {
    global ::tacgame::analysisCoach ::tacgame::threshold ::tacgame::showblunder ::tacgame::showblundervalue \
        ::tacgame::blunderfound ::tacgame::showmovevalue ::tacgame::level ::tacgame::levelFixed engineCoach1 \
        engineCoach2 ::tacgame::index1 ::tacgame::index2 ::tacgame::chosenOpening \
        ::tacgame::openingType ::tacgame::openingList ::tacgame::openingMovesList \
        ::tacgame::openingMovesHash ::tacgame::openingMoves ::tacgame::outOfOpening
    
    resetEngine 1
    resetEngine 2
    catch { unset ::uci::uciInfo(score2) }
    
    set ::tacgame::lFen {}
    
    set analysisCoach(paused) 0
    
    if {$::tacgame::randomLevel} {
      if {$::tacgame::levelMax < $::tacgame::levelMin} {
        set tmp $::tacgame::levelMax
        set ::tacgame::levelMax $::tacgame::levelMin
        set ::tacgame::levelMin $tmp
      }
      set level [expr int(rand()*($::tacgame::levelMax - $::tacgame::levelMin)) + $::tacgame::levelMin ]
    } else {
      set level $::tacgame::levelFixed; # S.A.
    }
    
    # if will follow a specific opening line
    if {$openingType == "specific"} {
      set fields [split [lindex $openingList $chosenOpening] ":"]
      set openingName [lindex $fields 0]
      set openingMoves [string trim [lindex $fields 1]]
      set openingMovesList ""
      set openingMovesHash ""
      set outOfOpening 0
      foreach m [split $openingMoves] {
        # in case of multiple adjacent spaces in opening line
        if {$m =={}} {
          continue
        }
        set n [string trim $m]
        lappend openingMovesList [string trim [regsub {^[1-9]+\.} $m ""] ]
      }
      
      sc_game new
      lappend openingMovesHash [sc_pos hash]
      foreach m  $openingMovesList {
        if {[catch {sc_move addSan $m}]} {
        }
        lappend openingMovesHash [sc_pos hash]
      }
    }
    
    # create a new game if a DB is opened
    if {$::tacgame::openingType != "current"} {
      sc_game new
      sc_game tags set -event "Tactical game"
      if { [::board::isFlipped .main.board] } {
        sc_game tags set -white "Phalanx - $level ELO"
      } else  {
        sc_game tags set -black "Phalanx - $level ELO"
      }
      sc_game tags set -date [::utils::date::today]
      if {[sc_base inUse [sc_base current]]} { catch {sc_game save 0}  }
    }
    
    updateBoard -pgn
    ::windows::gamelist::Refresh
    updateTitle
    updateMenuStates
    
    set w .coachWin
    if {[winfo exists $w]} {
      focus .
      destroy $w
      return
    }
    
    createToplevel $w
    setTitle $w "$::tr(coachgame) (Elo $level)"
    setWinLocation $w
    
    ttk::frame $w.fdisplay -relief groove -borderwidth 1
    ttk::frame $w.fthreshold -relief groove -borderwidth 1
    ttk::frame $w.finformations -relief groove -borderwidth 1
    ttk::frame $w.fclocks -relief raised -borderwidth 2
    ttk::frame $w.fbuttons
    pack $w.fdisplay $w.fthreshold $w.finformations $w.fclocks $w.fbuttons -side top -expand yes -fill both
    
    ttk::checkbutton $w.fdisplay.b1 -text $::tr(showblunderexists) -variable ::tacgame::showblunder
    ttk::checkbutton $w.fdisplay.b2 -text $::tr(showblundervalue) -variable ::tacgame::showblundervalue
    ttk::checkbutton $w.fdisplay.b5 -text $::tr(showscore) -variable ::tacgame::showevaluation
    pack $w.fdisplay.b1 $w.fdisplay.b2 $w.fdisplay.b5 -expand yes -anchor w
    
    ttk::label $w.fthreshold.l -text $::tr(moveblunderthreshold) -wraplength 300
    
    ttk::scale $w.fthreshold.t -orient horizontal -from 0.0 -to 10.0 -length 200 \
        -variable ::tacgame::threshold -command { ::utils::validate::floatScale ::tacgame::threshold 0.1 }
    ttk::label $w.fthreshold.labelt -textvariable ::tacgame::threshold
    pack $w.fthreshold.l $w.fthreshold.labelt $w.fthreshold.t -side top
    
    ttk::label $w.finformations.l1 -textvariable ::tacgame::blunderWarningLabel -background linen
    ttk::label $w.finformations.l3 -textvariable ::tacgame::scoreLabel -foreground WhiteSmoke -background SlateGray
    pack $w.finformations.l1 $w.finformations.l3 -padx 5 -pady 5 -side top -fill x
    
    ::gameclock::new $w.fclocks 2 80
    ::gameclock::new $w.fclocks 1 80
    ::gameclock::reset 1
    ::gameclock::start 1
    
    ### Resume restarts paused computer (while player moves forward/back in history) S.A.
    ttk::button $w.fbuttons.resume -state disabled -textvar ::tr(Resume) -command {
      set ::tacgame::analysisCoach(paused) 0
      .coachWin.fbuttons.resume configure -state disabled
      ::tacgame::phalanxGo
    }
    pack $w.fbuttons.resume -expand yes -fill both -padx 20 -pady 2
    
    ttk::button $w.fbuttons.close -textvar ::tr(Abort) -command ::tacgame::abortGame
    pack $w.fbuttons.close -expand yes -fill both -padx 20 -pady 2
    
    ::tacgame::launchengine $index1 1
    ::uci::startEngine $index2 2
    set ::uci::uciInfo(multipv2) 1
    changePVSize 2
    
    ::tacgame::resetValues
    updateAnalysisText
    
    bind $w <F1> { helpWindow TacticalGame }
    bind $w <Destroy> "after cancel ::tacgame::phalanxGo ; focus . ; \
        ::tacgame::closeEngine 1; ::tacgame::closeEngine 2"
    bind $w <Escape> ::tacgame::abortGame
    bind $w <Configure> "recordWinSize $w"
    wm minsize $w 45 0
    
    ::tacgame::phalanxGo
  }
  ################################################################################
  #
  ################################################################################
  proc abortGame { { destroyWin 1 } } {
    after cancel ::tacgame::phalanxGo
    stopAnalyze
    if { $destroyWin } { destroy ".coachWin" }
    focus .
    ::tacgame::closeEngine 1
    ::tacgame::closeEngine 2
    ::docking::cleanup .coachWin
  }
  # ======================================================================
  #   ::tacgame::launchengine
  #  - launches both engines
  #  - updates values for :
  #						blundermissed (boolean), blunderwarning (boolean)
  #						blunderwarningvalue (real), blundermissedvalue (real)
  #						totalblundersmissed (real), totalblunders (real)
  # ======================================================================
  
  proc launchengine {index n} {
    global ::tacgame::analysisCoach ::tacgame::level
    
    ::tacgame::resetEngine $n
    
    set engineData [lindex $::engines(list) $index]
    set analysisName [lindex $engineData 0]
    set analysisCommand [ ::toAbsPath [ lindex $engineData 1 ] ]
    set analysisArgs [lindex $engineData 2]
    set analysisDir [ ::toAbsPath [lindex $engineData 3] ]
    
    # turn phalanx book, ponder and learning off, easy on
    if {$n == 1} {
      # convert Elo = 1200 to level 100 up to Elo=2200 to level 0
      set easylevel [expr int(100-(100*($level-1200)/(2200-1200)))]
      append analysisArgs " -b+ -p- -l- -e $easylevel "
    }
    
    # If the analysis directory is not current dir, cd to it:
    set oldpwd ""
    if {$analysisDir != "."} {
      set oldpwd [pwd]
      catch {cd $analysisDir}
    }
    
    # Try to execute the analysis program:
    if {[catch {set analysisCoach(pipe$n) [open "| [list $analysisCommand] $analysisArgs" "r+"]} result]} {
      if {$oldpwd != ""} { catch {cd $oldpwd} }
      tk_messageBox -title "Scid: error starting analysis" \
          -icon warning -type ok \
          -message "Unable to start the program:\n$analysisCommand"
      ::tacgame::resetEngine $n
      return
    }
    
    # Return to original dir if necessary:
    if {$oldpwd != ""} { catch {cd $oldpwd} }
    
    # Configure pipe for line buffering and non-blocking mode:
    fconfigure $analysisCoach(pipe$n) -buffering line -blocking 0
    
    if {$n == 1} {
      fileevent $analysisCoach(pipe$n) readable "::tacgame::processInput"
      after 1000 "::tacgame::checkAnalysisStarted $n"
    }
    
  }
  
  # ======================================================================
  # ::tacgame::closeEngine
  #   Close an engine.
  # ======================================================================
  proc closeEngine {n} {
    global windowsOS ::tacgame::analysisCoach
    
    # Check the pipe is not already closed:
    if { $n == 1 } {
      if {$analysisCoach(pipe$n) == "" } {
        return
      }
    }
    if { $n == 2 } {
      ::uci::closeUCIengine $n
      return
    }
    
    # Send interrupt signal if the engine wants it:
    if {(!$windowsOS)  &&  $analysisCoach(send_sigint$n)} {
      catch {exec -- kill -s INT [pid $analysisCoach(pipe$n)]}
    }
    
    # Some engines in analyze mode may not react as expected to "quit"
    # so ensure the engine exits analyze mode first:
    sendToEngine $n "exit"
    sendToEngine $n "quit"
    catch { flush $analysisCoach(pipe$n) }
    
    # Uncomment the following line to turn on blocking mode before
    # closing the engine (but probably not a good idea!)
    #   fconfigure $analysisCoach(pipe$n) -blocking 1
    
    # Close the engine, ignoring any errors since nothing can really
    # be done about them anyway -- maybe should alert the user with
    # a message box?
    catch {close $analysisCoach(pipe$n)}
    
    set analysisCoach(pipe$n) ""
  }
  # ======================================================================
  # sendToEngine:
  #   Send a command to a running analysis engine.
  # ======================================================================
  proc sendToEngine {n text} {
    catch {puts $::tacgame::analysisCoach(pipe$n) $text}
  }
  
  # ======================================================================
  # checkAnalysisStarted
  #   Called a short time after an analysis engine was started
  #   to send it commands if Scid has not seen any output from
  #   it yet.
  # ======================================================================
  proc checkAnalysisStarted {n} {
    global ::tacgame::analysisCoach
    if {$analysisCoach(seen$n)} { return }
    
    # Some Winboard engines do not issue any output when
    # they start up, so the fileevent above is never triggered.
    # Most, but not all, of these engines will respond in some
    # way once they have received input of some type.  This
    # proc will issue the same initialization commands as
    # those in processAnalysisInput below, but without the need
    # for a triggering fileevent to occur.
    
    set analysisCoach(seen$n) 1
    ::tacgame::sendToEngine $n "xboard"
    ::tacgame::sendToEngine $n "protover 2"
    ::tacgame::sendToEngine $n "post"
    ::tacgame::sendToEngine $n "ponder off"
    
    # Prevent some engines from making an immediate "book"
    # reply move as black when position is sent later:
    ::tacgame::sendToEngine $n "force"
  }
  
  # ======================================================================
  #
  # processInput from the engine blundering (Phalanx)
  #
  # ======================================================================
  proc processInput {} {
    global ::tacgame::analysisCoach ::tacgame::analysis
    
    # Get one line from the engine:
    set line [gets $analysisCoach(pipe1)]
    
    # check that the engine is really Phalanx
	 # Allowd versions include Phalanx-scid Phalanx-pg and XXIII
	 # upwards
	 if { ! $analysisCoach(seen1) && $line != {Phalanx XXII-pg} && $line != {Phalanx XXIII} && $line != {Phalanx XXII-scid} } {

      after cancel ::tacgame::phalanxGo
      ::tacgame::closeEngine 1
      # ::tacgame::closeEngine 2
      ::uci::closeUCIengine 2
      tk_messageBox -type ok -icon warning -parent .main -title "Scid" -message "Please choose the correct Phalanx engine"
      focus .
      destroy .coachWin
      ::tacgame::config
      return
    }
    
    # Check that the engine did not terminate unexpectedly:
    if {[eof $analysisCoach(pipe1)]} {
      fileevent $analysisCoach(pipe1) readable {}
      catch {close $analysisCoach(pipe1)}
      set analysisCoach(pipe1) ""
      tk_messageBox -type ok -icon info -parent .main -title "Scid" \
          -message "The analysis engine 1 terminated without warning; it probably crashed or had an internal error."
    }
    
    if {! $analysisCoach(seen1)} {
      # First line of output from the program, so send initial commands:
      set analysisCoach(seen1) 1
      ::tacgame::sendToEngine 1 "xboard"
      ::tacgame::sendToEngine 1 "post"
    }
    
    ::tacgame::makePhalanxMove $line
    
  }
  
  # ======================================================================
  # startAnalyzeMode:
  #   Put the engine in analyze mode
  # ======================================================================
  proc startAnalyze { } {
    global ::tacgame::analysisCoach ::tacgame::isLimitedAnalysisTime ::tacgame::analysisTime
    set n 2
    set ::analysis(waitForReadyOk$n) 1
    ::uci::sendToEngine $n "isready"
    vwait ::analysis(waitForReadyOk$n)
    ::uci::sendToEngine $n "position fen [sc_pos fen]"
    ::uci::sendToEngine $n "go infinite"
    
    if { $isLimitedAnalysisTime == 1 }  {
      after [expr 1000 * $analysisTime] ::tacgame::stopAnalyze
    }
    
  }
  # ======================================================================
  # stopAnalyzeMode:
  #   Stop the engine analyze mode
  # ======================================================================
  proc stopAnalyze { } {
    global ::tacgame::analysisCoach ::tacgame::isLimitedAnalysisTime ::tacgame::analysisTime
    
    after cancel ::tacgame::stopAnalyze
    ::uci::sendToEngine 2 "stop"
  }
  ################################################################################
  # returns true if last move is a mate and stops clocks
  ################################################################################
  proc endOfGame {} {
    if { [string index [sc_game info previousMove] end ] == "#"} {
      ::gameclock::stop 1
      ::gameclock::stop 2
      return 1
    }
    return 0
  }
  # ======================================================================
  # phalanxGo
  #		it is phalanx's turn to play
  # ======================================================================
  proc phalanxGo {} {
    global ::tacgame::analysisCoach ::tacgame::openingType ::tacgame::openingMovesList \
        ::tacgame::openingMovesHash ::tacgame::openingMoves ::tacgame::outOfOpening
    
    after cancel ::tacgame::phalanxGo
    
    ### should show endOfGame
    
    if {$analysisCoach(paused)} {
      .coachWin.fbuttons.resume configure -state normal
      return
    }
    
    if { [::tacgame::endOfGame] } { return }
    
    # check if Phalanx is already thinking
    if { $analysisCoach(automoveThinking1) == 1 } {
      after 1000 ::tacgame::phalanxGo
      return
    }
    
    updateAnalysisText
    
    if { [sc_pos side] != [::tacgame::getPhalanxColor] } {
      after 1000 ::tacgame::phalanxGo
      return
    }
    
    ::gameclock::stop 1
    ::gameclock::start 2
    repetition
    
    # make a move corresponding to a specific opening, (it is Phalanx's turn)
    if {$openingType == "specific" && !$outOfOpening} {
      set index 0
      # Warn if the user went out of the opening line chosen
      if { !$outOfOpening } {
        set ply [ expr [sc_pos moveNumber] * 2 - 1]
        if { [sc_pos side] == "white" } {
          set ply [expr $ply - 1]
        }
        
        if { [lsearch $openingMovesHash [sc_pos hash]] == -1 && [llength $openingMovesList] >= $ply} {
          set answer [tk_messageBox -icon question -parent .main -title $::tr(OutOfOpening) -type yesno \
              -message "$::tr(NotFollowedLine) $openingMoves\n $::tr(DoYouWantContinue)" ]
          if {$answer == no} {
            sc_move back 1
            updateBoard -pgn
            ::gameclock::stop 2
            ::gameclock::start 1
            after 1000 ::tacgame::phalanxGo
            return
          }  else  {
            set outOfOpening 1
          }
        }
      }
      
      set hpos [sc_pos hash]
      # Find a corresponding position in the opening line
      set length [llength $openingMovesHash]
      for {set i 0}   { $i < [expr $length-1] } { incr i } {
        set h [lindex $openingMovesHash $i]
        if {$h == $hpos} {
          set index [lsearch $openingMovesHash $h]
          set move [lindex $openingMovesList $index]
          # play the move
          set action "replace"
          if {![sc_pos isAt vend]} { set action [confirmReplaceMove] }
          if {$action == "replace"} {
            if {[catch {sc_move addSan $move}]} {}
          } elseif {$action == "var"} {
            sc_var create
            if {[catch {sc_move addSan $move}]} {}
          } elseif {$action == "mainline"} {
            sc_var create
            if {[catch {sc_move addSan $move}]} {}
            sc_var exit
            sc_var promote [expr {[sc_var count] - 1}]
            sc_move forward 1
          }
          
          ::utils::sound::AnnounceNewMove $move
          
          updateBoard -pgn -animate
          ::gameclock::stop 2
          ::gameclock::start 1
          repetition
          after 1000 ::tacgame::phalanxGo
          return
        }
      }
      
    }
    
    # Pascal Georges : original Phalanx does not have 'setboard'
    set analysisCoach(automoveThinking1) 1
    sendToEngine 1 "setboard [sc_pos fen]"
    sendToEngine 1 "go"
    after 1000 ::tacgame::phalanxGo
  }
  ################################################################################
  #   add current position for 3fold repetition detection and returns 1 if
  # the position is a repetion
  ################################################################################
  proc repetition {} {
    set elt [lrange [split [sc_pos fen]] 0 2]
    # append the position only if different from the last element
    if { $elt != [ lindex $::tacgame::lFen end ] } {
      lappend ::tacgame::lFen $elt
    }
    if { [llength [lsearch -all $::tacgame::lFen $elt] ] >=3 } {
      tk_messageBox -type ok -message $::tr(Draw) -parent .main -icon info
      return 1
    }
    return 0
  }
  # ======================================================================
  # makePhalanxMove:
  #
  # ======================================================================
  proc makePhalanxMove { input } {
    global ::tacgame::lscore ::tacgame::analysisCoach ::tacgame::currentPosHash ::tacgame::resignCount
    
    # The input move is of the form "my move is MOVE"
    if {[scan $input "my move is %s" move] != 1} { return 0 }
    
    ::tacgame::stopAnalyze
    
    # Phalanx will move : update the score list to detect any blunder
    if {[info exists ::tacgame::sc1]} {
      lappend lscore $::tacgame::sc1
    }
    
    # if the resign value has been reached more than 3 times in a raw, resign
    if { ( [getPhalanxColor] == "black" && [lindex $lscore end] >  $::informant("++-") ) || \
          ( [getPhalanxColor] == "white" && [lindex $lscore end] < [expr 0.0 - $::informant("++-")] ) } {
      incr resignCount
    } else  {
      set resignCount 0
    }
    
    # check the sequence of moves
    # in case of any event (board setup, move back/forward), reset score list
    if { ![sc_pos isAt start] && ![sc_pos isAt vstart]} {
      sc_move back 1
      if { [sc_pos hash] != $currentPosHash} {
        set lscore {}
        updateAnalysisText
      }
      sc_move forward 1
    } else  {
      if { [sc_pos hash] != $currentPosHash} {
        set lscore {}
        updateAnalysisText
      }
    }
    
    # play the move
    set action "replace"
    if {![sc_pos isAt vend]} { set action [confirmReplaceMove] }
    if {$action == "replace"} {
      if {[catch {sc_move addSan $move}]} {
        # No move from Phalanx : remove the score (last element)
        set lscore [lreplace $lscore end end]
        return 0
      }
    } elseif {$action == "var"} {
      sc_var create
      if {[catch {sc_move addSan $move}]} {
        # No move from Phalanx : remove the score (last element)
        set lscore [lreplace $lscore end end]
        return 0
      }
    } elseif {$action == "mainline"} {
      sc_var create
      if {[catch {sc_move addSan $move}]} {
        # No move from Phalanx : remove the score (last element)
        set lscore [lreplace $lscore end end]
        return 0
      }
      sc_var exit
      sc_var promote [expr {[sc_var count] - 1}]
      sc_move forward 1
    }
    
    set analysisCoach(automoveThinking1) 0
    set currentPosHash [sc_pos hash]
    
    ::tacgame::startAnalyze
    ::utils::sound::AnnounceNewMove $move
    updateBoard -pgn -animate
    
    ::gameclock::stop 2
    ::gameclock::start 1
    repetition
    
    if { $resignCount > 3 } {
      tk_messageBox -type ok -message $::tr(Iresign) -parent .main -icon info
      set resignCount 0
    }
    
    return 1
  }
  
  # ======================================================================
  # updateScore
  # ======================================================================
  proc updateScore { } {
    if { ! $::tacgame::showevaluation } { return }
    if {![info exists ::uci::uciInfo(score2)]} {
      set ::tacgame::scoreLabel ""
      return
    } else {
      set ::tacgame::scoreLabel "Score : $::uci::uciInfo(score2)"
    }
  }
  
  # ======================================================================
  # updateAnalysisText
  #   Update the text in an analysis window.
  #   Human blunders are not checked, only Phalanx'one
  # ======================================================================
  proc updateAnalysisText { } {
    global ::tacgame::analysisCoach ::tacgame::showblunder ::tacgame::blunderWarningLabel \
        ::tacgame::showblunder ::tacgame::showblundervalue ::tacgame::showblunderfound ::tacgame::showmovevalue \
        ::tacgame::showevaluation ::tacgame::lscore ::tacgame::threshold \
        ::tacgame::lastblundervalue ::tacgame::prev_lastblundervalue ::tacgame::scoreLabel \
        ::tacgame::blunderpending ::tacgame::prev_blunderpending ::tacgame::sc1
    
    # only update when it is human turn
    if { [getPhalanxColor] == [sc_pos side] } { return }
    
    catch {
      set sc1 $::uci::uciInfo(score2)
      set sc2 [lindex $lscore end]
    }
    
    # There are less than 2 scores in the list
    if {[llength $lscore] < 2} {
      set blunderWarningLabel $::tr(Noinfo)
      set scoreLabel ""
      if {[llength $lscore] == 1 && $showevaluation } {
        set scoreLabel "Score : [lindex $lscore end]"
      }
      return
    }
    
    # set sc1 [lindex $lscore end]
    # set sc2 [lindex $lscore end-1]
    
    if { $analysisCoach(automoveThinking1) } {
      set blunderWarningLabel $::tr(Noinfo)
    }
    
    # Check if a blunder was made by Phalanx at last move.
    # The check is done during player's turn
    if { $showblunder && [::tacgame::getPhalanxColor] != [sc_pos side] } {
      if {[llength $lscore] >=2} {
        if { ($sc1 - $sc2 > $threshold && [::tacgame::getPhalanxColor] == "black") || \
              ($sc1 - $sc2 < [expr 0.0 - $threshold] && [::tacgame::getPhalanxColor] == "white") } {
          set lastblundervalue [expr $sc1-$sc2]
          # append a ?!, ? or ?? to the move if there is none yet and if the game was not dead yet
          # (that is if the score was -6, if it goes down to -10, this is a normal evolution
          if { [expr abs($sc2)] < $::informant("++-") } {
            sc_pos clearNags
            set b [expr abs($lastblundervalue)]
            if { $b >= $::informant("?!") && $b < $::informant("?") } {
              sc_pos addNag "?!"
            } elseif { $b >= $::informant("?") && $b < $::informant("??") }  {
              sc_pos addNag "?"
            } elseif  { $b >= $::informant("??") } {
              sc_pos addNag "??"
            }
          }
          
          .coachWin.finformations.l1 configure -background LightCoral
          if { $showblundervalue } {
            set tmp $::tr(blunder)
            append tmp [format " %+8.2f" [expr abs($sc1-$sc2)]]
            set blunderWarningLabel $tmp
            set blunderpending 1
          } else {
            set blunderWarningLabel "$::tr(blunder) !"
          }
        } else {
          sc_pos clearNags
          .coachWin.finformations.l1 configure -background linen
          set blunderWarningLabel $::tr(Noblunder)
          set blunderpending 0
        }
      }
    } else {
      set blunderWarningLabel "---"
    }
    
    if { !$showblunder || $analysisCoach(automoveThinking1) } {
      set blunderWarningLabel "---"
    }
    
    # displays current score sent by the "good" engine (Toga)
    if { $showevaluation } {
      set scoreLabel "Score : $sc1"
    } else {
      set scoreLabel ""
    }
  }
  
  # ======================================================================
  # getPhalanxColor
  #   Returns "white" or "black" (Phalanx always plays at top)
  # ======================================================================
  proc getPhalanxColor {} {
    # Phalanx always plays for the upper side
    if { [::board::isFlipped .main.board] == 0 } {
      return "black"
    } else  {
      return "white"
    }
  }
  
  ################################################################################
  #
  ################################################################################
  set openingList [ list \
      "$::tr(Reti): 1.Nf3" \
      "$::tr(English): 1.c4" \
      "$::tr(d4Nf6Miscellaneous): 1.d4 Nf6" \
      "$::tr(Trompowsky): 1.d4 Nf6 2.Bg5" \
      "$::tr(Budapest): 1.d4 Nf6 2.c4 e5" \
      "$::tr(OldIndian): 1.d4 Nf6 2.c4 d6" \
      "$::tr(BenkoGambit): 1.d4 Nf6 2.c4 c5 3.d5 b5" \
      "$::tr(ModernBenoni): 1.d4 Nf6 2.c4 c5 3.d5 e6" \
      "$::tr(DutchDefence): 1.d4 f5" \
      "1.e4" \
      "$::tr(Scandinavian): 1.e4 d5" \
      "$::tr(AlekhineDefence): 1.e4 Nf6" \
      "$::tr(Pirc): 1.e4 d6" \
      "$::tr(CaroKann): 1.e4 c6" \
      "$::tr(CaroKannAdvance): 1.e4 c6 2.d4 d5 3.e5" \
      "$::tr(Sicilian): 1.e4 c5" \
      "$::tr(SicilianAlapin): 1.e4 c5 2.c3" \
      "$::tr(SicilianClosed): 1.e4 c5 2.Nc3" \
      "$::tr(Sicilian): 1.e4 c5 2.Nf3 Nc6" \
      "$::tr(Sicilian): 1.e4 c5 2.Nf3 e6" \
      "$::tr(SicilianRauzer): 1.e4 c5 2.Nf3 d6 3.d4 cxd4 4.Nxd4 Nf6 5.Nc3 Nc6" \
      "$::tr(SicilianDragon): 1.e4 c5 2.Nf3 d6 3.d4 cxd4 4.Nxd4 Nf6 5.Nc3 g6 " \
      "$::tr(SicilianScheveningen): 1.e4 c5 2.Nf3 d6 3.d4 cxd4 4.Nxd4 Nf6 5.Nc3 e6" \
      "$::tr(SicilianNajdorf): 1.e4 c5 2.Nf3 d6 3.d4 cxd4 4.Nxd4 Nf6 5.Nc3 a6" \
      "$::tr(OpenGame): 1.e4 e5" \
      "$::tr(Vienna): 1.e4 e5 2.Nc3" \
      "$::tr(KingsGambit): 1.e4 e5 2.f4" \
      "$::tr(RussianGame): 1.e4 e5 2.Nf3 Nf6" \
      "$::tr(OpenGame): 1.e4 e5 2.Nf3 Nc6" \
      "$::tr(ItalianTwoKnights): 1.e4 e5 2.Nf3 Nc6 3.Bc4" \
      "$::tr(Spanish): 1.e4 e5 2.Nf3 Nc6 3.Bb5" \
      "$::tr(SpanishExchange): 1.e4 e5 2.Nf3 Nc6 3.Bb5 a6 4.Bxc6" \
      "$::tr(SpanishOpen): 1.e4 e5 2.Nf3 Nc6 3.Bb5 a6 4.Ba4 Nf6 5.O-O Nxe4" \
      "$::tr(SpanishClosed): 1.e4 e5 2.Nf3 Nc6 3.Bb5 a6 4.Ba4 Nf6 5.O-O Be7" \
      "$::tr(FrenchDefence): 1.e4 e6" \
      "$::tr(FrenchAdvance): 1.e4 e6 2.d4 d5 3.e5" \
      "$::tr(FrenchTarrasch): 1.e4 e6 2.d4 d5 3.Nd2" \
      "$::tr(FrenchWinawer): 1.e4 e6 2.d4 d5 3.Nc3 Bb4" \
      "$::tr(FrenchExchange): 1.e4 e6 2.d4 d5 3.exd5 exd5" \
      "$::tr(QueensPawn): 1.d4 d5" \
      "$::tr(Slav): 1.d4 d5 2.c4 c6" \
      "$::tr(QGA): 1.d4 d5 2.c4 dxc4" \
      "$::tr(QGD): 1.d4 d5 2.c4 e6" \
      "$::tr(QGDExchange): 1.d4 d5 2.c4 e6 3.cxd5 exd5" \
      "$::tr(SemiSlav): 1.d4 d5 2.c4 e6 3.Nc3 Nf6 4.Nf3 c6" \
      "$::tr(QGDwithBg5): 1.d4 d5 2.c4 e6 3.Nc3 Nf6 4.Bg5" \
      "$::tr(QGDOrthodox): 1.d4 d5 2.c4 e6 3.Nc3 Nf6 4.Bg5 Be7 5.e3 O-O 6.Nf3 Nbd7" \
      "$::tr(Grunfeld): 1.d4 Nf6 2.c4 g6 3.Nc3 d5" \
      "$::tr(GrunfeldExchange): 1.d4 Nf6 2.c4 g6 3.Nc3 d5 4.cxd5" \
      "$::tr(GrunfeldRussian): 1.d4 Nf6 2.c4 g6 3.Nc3 d5 4.Nf3 Bg7 5.Qb3" \
      "$::tr(Catalan): 1.d4 Nf6 2.c4 e6 3.g3 " \
      "$::tr(CatalanOpen): 1.d4 Nf6 2.c4 e6 3.g3 d5 4.Bg2 dxc4" \
      "$::tr(CatalanClosed): 1.d4 Nf6 2.c4 e6 3.g3 d5 4.Bg2 Be7" \
      "$::tr(QueensIndian): 1.d4 Nf6 2.c4 e6 3.Nf3 b6" \
      "$::tr(NimzoIndian): 1.d4 Nf6 2.c4 e6 3.Nc3 Bb4" \
      "$::tr(NimzoIndianClassical): 1.d4 Nf6 2.c4 e6 3.Nc3 Bb4 4.Qc2" \
      "$::tr(NimzoIndianRubinstein): 1.d4 Nf6 2.c4 e6 3.Nc3 Bb4 4.e3" \
      "$::tr(KingsIndian): 1.d4 Nf6 2.c4 g6" \
      "$::tr(KingsIndianSamisch): 1.d4 Nf6 2.c4 g6 4.e4 d6 5.f3" \
      "$::tr(KingsIndianMainLine): 1.d4 Nf6 2.c4 g6 4.e4 d6 5.Nf3" \
      ]
}
###
### End of file: tacgame.tcl
###
###
### sergame.tcl: part of Scid.
### Copyright (C) 2007  Pascal Georges
###
################################################################################
# The number used for the engine playing a serious game is 3
################################################################################

namespace eval sergame {
  
  # DEBUG
  set ::uci::uciInfo(log_stdout3) 0
  
  # if true, follow a specific opening
  set openingMovesList {}
  set openingMovesHash {}
  set openingMoves ""
  set outOfOpening 0
  array set engineListBox {}
  set engineName ""
  set bookSlot 2
  
  # list of fen positions played to detect 3 fold repetition
  set lFen {}
  set lastPlayerMoveUci ""
  
  ################################################################################
  #
  ################################################################################
  proc config {} {
    global ::sergame::configWin ::sergame::chosenOpening
    
    # check if game window is already opened. If yes abort previous game
    set w ".serGameWin"
    if {[winfo exists $w]} {
      focus .
      destroy $w
    }
    
    set w ".configSerGameWin"
    if {[winfo exists $w]} {
      focus $w
      return
    }
    
    toplevel $w
    wm title $w "$::tr(configuregame)"
    
    bind $w <F1> { helpWindow SeriousGame }
    setWinLocation $w
    
    ttk::labelframe $w.fengines -text $::tr(Engine)
    ttk::frame $w.fbook -relief groove -borderwidth 1
    ttk::labelframe $w.ftime -text $::tr(TimeMode)
    ttk::frame $w.fconfig -relief groove -borderwidth 1
    ttk::frame $w.fopening -relief groove -borderwidth 1
    ttk::frame $w.fbuttons
    
    pack $w.fengines $w.fbook $w.ftime $w.fconfig -side top -fill x
    pack $w.fopening -side top -fill both -expand 1
    pack $w.fbuttons -side top -fill x
    
    # builds the list of UCI engines
    ttk::frame $w.fengines.fEnginesList -relief raised -borderwidth 1
    listbox $w.fengines.fEnginesList.lbEngines -yscrollcommand "$w.fengines.fEnginesList.ybar set" \
        -height 5 -width 50 -exportselection 0
    ttk::scrollbar $w.fengines.fEnginesList.ybar -command "$w.fengines.fEnginesList.lbEngines yview"
    pack $w.fengines.fEnginesList.ybar -side left -fill y
    pack $w.fengines.fEnginesList.lbEngines -side left -fill both -expand yes
    pack $w.fengines.fEnginesList -expand yes -fill both -side top
    set i 0
    set idx 0
    foreach e $::engines(list) {
      if { [lindex $e 7] != 1} { incr idx ; continue }
      set ::sergame::engineListBox($i) $idx
      set name [lindex $e 0]
      $w.fengines.fEnginesList.lbEngines insert end $name
      incr i
      incr idx
    }
    
    # Engine configuration (limit strength for example)
    ttk::button $w.fengines.bEngineConfig -text $::tr(ConfigureUCIengine) -command {
      set sel [.configSerGameWin.fengines.fEnginesList.lbEngines curselection]
      set index $::sergame::engineListBox($sel)
      set engineData [lindex $::engines(list) $index]
      set name [lindex $engineData 0]
      set cmd [ toAbsPath [lindex $engineData 1] ]
      set args [lindex $engineData 2]
      set dir [ toAbsPath [lindex $engineData 3] ]
      set options [lindex $engineData 8]
      set ::uci::autoSaveOptionsIndex $index
      set ::uci::autoSaveOptions 1
      ::uci::uciConfig 3 [ toAbsPath $cmd ] $args [ toAbsPath $dir ] $options
    }
    pack $w.fengines.bEngineConfig -side top
    
    # if no engines defined, bail out
    if {$i == 0} {
      tk_messageBox -type ok -message "No UCI engine defined" -icon error
      destroy $w
      return
    }
    
    $w.fengines.fEnginesList.lbEngines selection set $::sergame::chosenEngine
    $w.fengines.fEnginesList.lbEngines see $::sergame::chosenEngine
    
    # load book names
    ttk::checkbutton $w.fbook.cbUseBook -text $::tr(UseBook) -variable ::sergame::useBook
    set bookPath $::scidBooksDir
    set bookList [ lsort -dictionary [ glob -nocomplain -directory $bookPath *.bin ] ]
    if { [llength $bookList] == 0 } {
      $w.fbook.cbUseBook configure -state disabled
      set ::sergame::useBook 0
    }
    set i 0
    set idx 0
    set tmp {}
    foreach file  $bookList {
      lappend tmp [ file tail $file ]
      if { $::sergame::bookToUse == [ file tail $file ]} {
        set idx $i
      }
      incr i
    }
    
    ttk::combobox $w.fbook.combo -width 12 -values $tmp
    catch { ch$w.fbook.combo current $idx }
    
    set row 0
    
    pack $w.fbook.cbUseBook -side left
    pack $w.fbook.combo -side right -expand yes -fill both
    
    # Time bonus frame
    ttk::frame $w.ftime.timebonus
    pack  $w.ftime.timebonus -side top -fill x -expand 1
    
    ttk::radiobutton $w.ftime.timebonus.rb1 -text $::tr(TimeBonus) -value "timebonus" -variable ::sergame::timeMode
    grid $w.ftime.timebonus.rb1 -row $row -column 0 -sticky w -rowspan 2
    
    ttk::label $w.ftime.timebonus.whitelabel -text $::tr(White)
    grid $w.ftime.timebonus.whitelabel -row $row -column 1
    spinbox $w.ftime.timebonus.whitespminutes -background white -width 4 -from 1 -to 120 -increment 1 -validate all -vcmd { regexp {^[0-9]+$} %P }
    grid $w.ftime.timebonus.whitespminutes -row $row -column 2
    ttk::label $w.ftime.timebonus.whitelminutes -text $::tr(TimeMin)
    grid $w.ftime.timebonus.whitelminutes -row $row -column 3
    spinbox $w.ftime.timebonus.whitespseconds -background white -width 4 -from 0 -to 60 -increment 1 -validate all -vcmd { regexp {^[0-9]+$} %P }
    grid $w.ftime.timebonus.whitespseconds -row $row -column 4
    ttk::label $w.ftime.timebonus.whitelseconds -text $::tr(TimeSec)
    grid $w.ftime.timebonus.whitelseconds -row $row -column 5
    
    incr row
    ttk::label $w.ftime.timebonus.blacklabel -text $::tr(Black)
    grid $w.ftime.timebonus.blacklabel -row $row -column 1
    spinbox $w.ftime.timebonus.blackspminutes -background white -width 4 -from 1 -to 120 -increment 1 -validate all -vcmd { regexp {^[0-9]+$} %P }
    grid $w.ftime.timebonus.blackspminutes -row $row -column 2
    ttk::label $w.ftime.timebonus.blacklminutes -text $::tr(TimeMin)
    grid $w.ftime.timebonus.blacklminutes -row $row -column 3
    spinbox $w.ftime.timebonus.blackspseconds -background white -width 4 -from 0 -to 60 -increment 1 -validate all -vcmd { regexp {^[0-9]+$} %P }
    grid $w.ftime.timebonus.blackspseconds -row $row -column 4
    ttk::label $w.ftime.timebonus.blacklseconds -text $::tr(TimeSec)
    grid $w.ftime.timebonus.blacklseconds -row $row -column 5
    
    $w.ftime.timebonus.whitespminutes set [expr $::uci::uciInfo(wtime3) / (60 * 1000)]
    $w.ftime.timebonus.whitespseconds set [expr $::uci::uciInfo(winc3) /  1000]
    $w.ftime.timebonus.blackspminutes set [expr $::uci::uciInfo(btime3) / (60 * 1000)]
    $w.ftime.timebonus.blackspseconds set [expr $::uci::uciInfo(binc3) /  1000 ]
    
    # Fixed depth
    ttk::frame $w.ftime.depth
    ttk::radiobutton $w.ftime.depth.button -text $::tr(FixedDepth) -value "depth" -variable ::sergame::timeMode
    spinbox $w.ftime.depth.value -background white -width 4 -from 1 -to 20 -increment 1 -validate all -vcmd { regexp {^[0-9]+$} %P }
    $w.ftime.depth.value set $::sergame::depth
    
    pack $w.ftime.depth -side top -fill x
    pack $w.ftime.depth.button -side left
    pack $w.ftime.depth.value -side left
    
    ttk::frame $w.ftime.nodes
    ttk::radiobutton $w.ftime.nodes.button -text "$::tr(Nodes) (x1000)" -value "nodes" -variable ::sergame::timeMode
    spinbox $w.ftime.nodes.value -background white -width 4 -from 5 -to 10000 -increment 5 -validate all -vcmd { regexp {^[0-9]+$} %P }
    $w.ftime.nodes.value set [ expr $::sergame::nodes /1000]
    
    pack $w.ftime.nodes -side top -fill x
    pack $w.ftime.nodes.button -side left
    pack $w.ftime.nodes.value -side left
    
    ttk::frame $w.ftime.movetime
    ttk::radiobutton $w.ftime.movetime.button -text $::tr(SecondsPerMove) -value "movetime" -variable ::sergame::timeMode
    spinbox $w.ftime.movetime.value -background white -width 4 -from 1 -to 120 -increment 1 -validate all -vcmd { regexp {^[0-9]+$} %P }
    $w.ftime.movetime.value set [ expr $::sergame::movetime /1000]
    
    pack $w.ftime.movetime -side top -fill x
    pack $w.ftime.movetime.button -side left
    pack $w.ftime.movetime.value -side left
    
    # New game or use current position ?
    ttk::checkbutton $w.fconfig.cbPosition -text $::tr(StartFromCurrentPosition) -variable ::sergame::startFromCurrent
    pack $w.fconfig.cbPosition  -side top -anchor w
    
    # ponder
    ttk::checkbutton $w.fconfig.cbPonder -text $::tr(Ponder) -variable ::sergame::ponder
    pack $w.fconfig.cbPonder  -side top -anchor w
    
    # Warn if the user makes weak/bad moves
    ttk::checkbutton $w.fconfig.cbCoach -text $::tr(CoachIsWatching) -variable ::sergame::coachIsWatching
    pack $w.fconfig.cbCoach -side top -anchor w
    
    # choose a specific opening
    ttk::checkbutton $w.fopening.cbOpening -text $::tr(SpecificOpening) -variable ::sergame::isOpening
    ttk::frame $w.fopening.fOpeningList -relief raised -borderwidth 1
    listbox $w.fopening.fOpeningList.lbOpening -yscrollcommand "$w.fopening.fOpeningList.ybar set" \
        -height 5 -width 50 -list ::tacgame::openingList -exportselection 0
    $w.fopening.fOpeningList.lbOpening selection set $::sergame::chosenOpening
    $w.fopening.fOpeningList.lbOpening see $::sergame::chosenOpening
    
    ttk::scrollbar $w.fopening.fOpeningList.ybar -command "$w.fopening.fOpeningList.lbOpening yview"
    pack $w.fopening.fOpeningList.lbOpening -side right -fill both -expand 1
    pack $w.fopening.fOpeningList.ybar -side right -fill y
    pack $w.fopening.cbOpening -fill x -side top
    pack $w.fopening.fOpeningList -expand yes -fill both -side top -expand 1
    
    ttk::button $w.fbuttons.close -text $::tr(Play) -command {
      focus .
      set ::sergame::chosenEngine [.configSerGameWin.fengines.fEnginesList.lbEngines curselection]
      set ::sergame::engineName [.configSerGameWin.fengines.fEnginesList.lbEngines get $::sergame::chosenEngine]
      set ::sergame::chosenOpening [.configSerGameWin.fopening.fOpeningList.lbOpening curselection]
      if {$::sergame::useBook} {
        set ::sergame::bookToUse [.configSerGameWin.fbook.combo get]
        if {$::sergame::bookToUse == "" } {
          set ::sergame::useBook 0
        }
      }
      set ::uci::uciInfo(wtime3) [expr [.configSerGameWin.ftime.timebonus.whitespminutes get]*1000*60]
      set ::uci::uciInfo(btime3) [expr [.configSerGameWin.ftime.timebonus.blackspminutes get]*1000*60]
      set ::uci::uciInfo(winc3) [expr [.configSerGameWin.ftime.timebonus.whitespseconds get]*1000]
      set ::uci::uciInfo(binc3) [expr [.configSerGameWin.ftime.timebonus.blackspseconds get]*1000]
      set ::uci::uciInfo(fixeddepth3) [.configSerGameWin.ftime.depth.value get]
      set ::uci::uciInfo(fixednodes3) [expr [.configSerGameWin.ftime.nodes.value get]*1000]
      set ::uci::uciInfo(movetime3) [expr [.configSerGameWin.ftime.movetime.value get]*1000]
      
      destroy .configSerGameWin
      ::sergame::play $::sergame::chosenEngine
    }
    ttk::button $w.fbuttons.cancel -textvar ::tr(Cancel) -command "focus .; destroy $w"
    
    pack $w.fbuttons.close $w.fbuttons.cancel -expand yes -side left
    
    bind $w <Escape> { .configSerGameWin.fbuttons.cancel invoke }
    bind $w <Return> { .configSerGameWin.fbuttons.close invoke }
    bind $w <F1> { helpWindow SeriousGame }
    bind $w <Destroy> ""
    bind $w <Configure> "recordWinSize $w"
    wm minsize $w 45 0
  }
  
  ################################################################################
  #
  ################################################################################
  proc play { engine {n 3} } {
    global ::sergame::chosenOpening ::sergame::isOpening ::tacgame::openingList ::sergame::openingMovesList \
        ::sergame::openingMovesHash ::sergame::openingMoves ::sergame::outOfOpening
    
    set ::sergame::lFen {}
    
    ::uci::startEngine $::sergame::engineListBox($engine) $n
    ::uci::sendUCIoptions $n
    
    set ::uci::uciInfo(prevscore$n) 0.0
    set ::uci::uciInfo(score$n) 0.0
    set ::uci::uciInfo(ponder$n) ""
    
    if {$::sergame::startFromCurrent} {
      set isOpening 0
    }
    
    # ponder
    if {$::sergame::ponder} {
      ::sergame::sendToEngine $n "setoption name Ponder value true"
    } else {
      ::sergame::sendToEngine $n "setoption name Ponder value false"
    }
    
    # if will follow a specific opening line
    if {$isOpening} {
      set fields [split [lindex $openingList $chosenOpening] ":"]
      set openingName [lindex $fields 0]
      set openingMoves [string trim [lindex $fields 1]]
      set openingMovesList ""
      set openingMovesHash ""
      set outOfOpening 0
      foreach m [split $openingMoves] {
        # in case of multiple adjacent spaces in opening line
        if {$m =={}} {
          continue
        }
        set p [string trim $m]
        lappend openingMovesList [string trim [regsub {^[1-9]+\.} $p ""] ]
      }
      
      sc_game new
      lappend openingMovesHash [sc_pos hash]
      foreach m  $openingMovesList {
        if {[catch {sc_move addSan $m}]} { }
        lappend openingMovesHash [sc_pos hash]
      }
    }
    if {!$::sergame::startFromCurrent} {
      # create a new game if a DB is opened
      sc_game new
      sc_game tags set -event "Serious game"
      if { [::board::isFlipped .main.board] } {
        sc_game tags set -white "$::sergame::engineName"
      } else  {
        sc_game tags set -black "$::sergame::engineName"
      }
      sc_game tags set -date [::utils::date::today]
      if {[sc_base inUse [sc_base current]]} { catch {sc_game save 0}  }
    }
    
    updateBoard -pgn
    ::windows::gamelist::Refresh
    updateTitle
    updateMenuStates
    set w ".serGameWin"
    if {[winfo exists $w]} {
      focus .
      destroy $w
      return
    }
    
    createToplevel $w
    setTitle $w "$::tr(coachgame) ($::sergame::engineName)"
    
    setWinLocation $w
    
    ttk::frame $w.fclocks -relief raised -borderwidth 1
    ttk::frame $w.fbuttons
    
    ::gameclock::new $w.fclocks 2 80 1
    ::gameclock::new $w.fclocks 1 80 1
    ::gameclock::reset 1
    ::gameclock::start 1
    
    ttk::button $w.fbuttons.close -textvar ::tr(Abort) -command ::sergame::abortGame
    pack $w.fbuttons.close -expand yes
    
    pack $w.fclocks -side top -expand yes -fill both
    pack $w.fbuttons -side top -expand yes -fill both
    
    bind $w <F1> { helpWindow TacticalGame }
    bind $w <Destroy> ::sergame::abortGame
    bind $w <Escape> ::sergame::abortGame
    bind $w <Configure> "recordWinSize $w"
    wm minsize $w 45 0
    
    # setup clocks
    if { [::sergame::getEngineColor] == "white" } {
      ::gameclock::setSec 2 [expr 0 - $::uci::uciInfo(wtime$n)/1000]
      ::gameclock::setSec 1 [expr 0 - $::uci::uciInfo(btime$n)/1000]
    } else  {
      ::gameclock::setSec 1 [expr 0 - $::uci::uciInfo(wtime$n)/1000]
      ::gameclock::setSec 2 [expr 0 - $::uci::uciInfo(btime$n)/1000]
    }
    
    set ::sergame::wentOutOfBook 0
    ::sergame::engineGo $n
  }
  ################################################################################
  #
  ################################################################################
  proc abortGame { { n 3 } } {
    set ::sergame::lFen {}
    if { $::uci::uciInfo(pipe$n) == ""} { return }
    after cancel ::sergame::engineGo $n
    ::uci::closeUCIengine $n
    ::gameclock::stop 1
    ::gameclock::stop 2
    set ::uci::uciInfo(bestmove$n) "abort"
    destroy .serGameWin
    focus .
    ::docking::cleanup .serGameWin
  }
  
  ################################################################################
  #
  ################################################################################
  proc sendToEngine {n text} {
    ::sergame::logEngine $n "Scid  : $text"
    catch {puts $::uci::uciInfo(pipe$n) $text}
  }
  ################################################################################
  # returns true if last move is a mate and stops clocks
  ################################################################################
  proc endOfGame {} {
    set move_done [sc_game info previousMove]
    if { [string index [sc_game info previousMove] end ] == "#"} {
      ::gameclock::stop 1
      ::gameclock::stop 2
      return 1
    }
    return 0
  }
  ################################################################################
  #
  ################################################################################
  proc engineGo { n } {
    global ::sergame::isOpening ::sergame::openingMovesList ::sergame::openingMovesHash ::sergame::openingMoves \
        ::sergame::timeMode ::sergame::outOfOpening
    
    after cancel ::sergame::engineGo $n
    
    if { [::sergame::endOfGame] } { return }
    
    if { [sc_pos side] != [::sergame::getEngineColor] } {
      after 1000 ::sergame::engineGo $n
      return
    }
    
    # The player moved : add clock time
    if {!([::sergame::getEngineColor] == "black" && [sc_pos moveNumber] == 1)} {
      if { [::sergame::getEngineColor] == "white" } {
        ::gameclock::add 1 [expr $::uci::uciInfo(binc$n)/1000]
      } else  {
        ::gameclock::add 1 [expr $::uci::uciInfo(winc$n)/1000]
      }
    }
    ::gameclock::stop 1
    ::gameclock::start 2
    repetition
    
    # make a move corresponding to a specific opening, (it is engine's turn)
    if {$isOpening && !$outOfOpening} {
      set index 0
      # Warn if the user went out of the opening line chosen
      if { !$outOfOpening } {
        set ply [ expr [sc_pos moveNumber] * 2 - 1]
        if { [sc_pos side] == "white" } {
          set ply [expr $ply - 1]
        }
        
        if { [lsearch $openingMovesHash [sc_pos hash]] == -1 && [llength $openingMovesList] >= $ply} {
          set answer [tk_messageBox -icon question -parent .main -title $::tr(OutOfOpening) -type yesno \
              -message "$::tr(NotFollowedLine) $openingMoves\n $::tr(DoYouWantContinue)" ]
          if {$answer == no} {
            sc_move back 1
            updateBoard -pgn
            ::gameclock::stop 2
            ::gameclock::start 1
            after 1000 ::sergame::engineGo $n
            return
          }  else  {
            set outOfOpening 1
          }
        }
      }
      
      set hpos [sc_pos hash]
      # Find a corresponding position in the opening line
      set length [llength $openingMovesHash]
      for {set i 0}   { $i < [expr $length-1] } { incr i } {
        set h [lindex $openingMovesHash $i]
        if {$h == $hpos} {
          set index [lsearch $openingMovesHash $h]
          set move [lindex $openingMovesList $index]
          # play the move
          set action "replace"
          if {![sc_pos isAt vend]} { set action [confirmReplaceMove] }
          if {$action == "replace"} {
            if {[catch {sc_move addSan $move}]} {}
          } elseif {$action == "var"} {
            sc_var create
            if {[catch {sc_move addSan $move}]} {}
          } elseif {$action == "mainline"} {
            sc_var create
            if {[catch {sc_move addSan $move}]} {}
            sc_var exit
            sc_var promote [expr {[sc_var count] - 1}]
            sc_move forward 1
          }
          
          updateBoard -pgn -animate
          ::gameclock::stop 2
          ::gameclock::start 1
          repetition
          if { [::sergame::getEngineColor] == "white" } {
            ::gameclock::add 2 [expr $::uci::uciInfo(winc$n)/1000]
          } else  {
            ::gameclock::add 2 [expr $::uci::uciInfo(binc$n)/1000]
          }
          after 1000 ::sergame::engineGo $n
          return
        }
      }
    }
    # -------------------------------------------------------------
    # use a book
    if {$::sergame::useBook && ! $::sergame::wentOutOfBook} {
      set move [ ::book::getMove $::sergame::bookToUse [sc_pos fen] $::sergame::bookSlot]
      if {$move == ""} {
        set ::sergame::wentOutOfBook 1
      } else  {
        sc_move addSan $move
        ::utils::sound::AnnounceNewMove $move
        # we made a book move so assume a score = 0
        set ::uci::uciInfo(prevscore$n) 0.0
        updateBoard -pgn -animate
        ::gameclock::stop 2
        ::gameclock::start 1
        repetition
        if {$timeMode == "timebonus"} {
          if { [::sergame::getEngineColor] == "white" } {
            ::gameclock::add 2 [expr $::uci::uciInfo(winc$n)/1000]
          } else  {
            ::gameclock::add 2 [expr $::uci::uciInfo(binc$n)/1000]
          }
        }
        after 1000 ::sergame::engineGo $n
        return
      }
    }
    # -------------------------------------------------------------
    # check if the engine pondered on the right move
    
    if { $::sergame::ponder && $::uci::uciInfo(ponder$n) == $::sergame::lastPlayerMoveUci} {
      ::sergame::sendToEngine $n "ponderhit"
    } else {
      
      if { $::sergame::ponder } {
        ::sergame::sendToEngine $n "stop"
      }
      set ::analysis(waitForReadyOk$n) 1
      ::sergame::sendToEngine $n "isready"
      vwait ::analysis(waitForReadyOk$n)
      ::sergame::sendToEngine $n "position fen [sc_pos fen]"
      if { [::sergame::getEngineColor] == "white" } {
        set wtime [expr [::gameclock::getSec 2] * 1000 ]
        set btime [expr [::gameclock::getSec 1] * 1000 ]
      } else  {
        set wtime [expr [::gameclock::getSec 1] * 1000 ]
        set btime [expr [::gameclock::getSec 2] * 1000 ]
      }
      if {$timeMode == "timebonus"} {
        ::sergame::sendToEngine $n "go wtime $wtime btime $btime winc $::uci::uciInfo(winc$n) binc $::uci::uciInfo(binc$n)"
      } elseif {$timeMode == "depth"} {
        ::sergame::sendToEngine $n "go depth $::uci::uciInfo(fixeddepth$n)"
      } elseif {$timeMode == "movetime"} {
        ::sergame::sendToEngine $n "go movetime $::uci::uciInfo(movetime$n)"
      } elseif {$timeMode == "nodes"} {
        ::sergame::sendToEngine $n "go nodes $::uci::uciInfo(fixednodes$n)"
      }
    }
    
    set ::uci::uciInfo(bestmove$n) ""
    vwait ::uci::uciInfo(bestmove$n)
    
    # -------------------------------------------------------------
    # if weak move detected, propose the user to tack back
    if { $::sergame::coachIsWatching && $::uci::uciInfo(prevscore$n) != "" } {
      set blunder 0
      set delta [expr $::uci::uciInfo(score$n) - $::uci::uciInfo(prevscore$n)]
      if {$delta > $::informant("?!") && [getEngineColor] == "white" ||
        $delta < [expr 0.0 - $::informant("?!")] && [getEngineColor] == "black" } {
        set blunder 1
      }
      
      if {$delta > $::informant("?") && [getEngineColor] == "white" ||
        $delta < [expr 0.0 - $::informant("?")] && [getEngineColor] == "black" } {
        set blunder 2
      }
      
      if {$delta > $::informant("??") && [getEngineColor] == "white" ||
        $delta < [expr 0.0 - $::informant("??")] && [getEngineColor] == "black" } {
        set blunder 3
      }
      
      if {$blunder == 1} {
        set tBlunder "DubiousMovePlayedTakeBack"
      } elseif {$blunder == 2} {
        set tBlunder "WeakMovePlayedTakeBack"
      } elseif {$blunder == 3} {
        set tBlunder "BadMovePlayedTakeBack"
      }
      
      if {$blunder != 0} {
        set answer [tk_messageBox -icon question -parent .main -title "Scid" -type yesno -message $::tr($tBlunder) ]
        if {$answer == yes} {
          sc_move back 1
          updateBoard -pgn
          ::gameclock::stop 2
          ::gameclock::start 1
          after 1000 ::sergame::engineGo $n
          return
        }
      }
    }
    
    # -------------------------------------------------------------
    if { $::uci::uciInfo(bestmove$n) == "abort" } {
      return
    }
    
    ::uci::sc_move_add $::uci::uciInfo(bestmove$n)
    ::utils::sound::AnnounceNewMove $::uci::uciInfo(bestmove$n)
    set ::uci::uciInfo(prevscore$n) $::uci::uciInfo(score$n)
    updateBoard -pgn -animate
    repetition
    
    # add time after a move played
    if {$timeMode == "timebonus"} {
      if { [::sergame::getEngineColor] == "white" } {
        ::gameclock::add 2 [expr $::uci::uciInfo(winc$n)/1000]
      } else  {
        ::gameclock::add 2 [expr $::uci::uciInfo(binc$n)/1000]
      }
    }
    ::gameclock::stop 2
    ::gameclock::start 1
    
    # ponder mode (the engine just played its move)
    if {$::sergame::ponder && $::uci::uciInfo(ponder$n) != ""} {
      ::sergame::sendToEngine $n "position fen [sc_pos fen] moves $::uci::uciInfo(ponder$n)"
      if { [::sergame::getEngineColor] == "white" } {
        set wtime [expr [::gameclock::getSec 2] * 1000 ]
        set btime [expr [::gameclock::getSec 1] * 1000 ]
      } else  {
        set wtime [expr [::gameclock::getSec 1] * 1000 ]
        set btime [expr [::gameclock::getSec 2] * 1000 ]
      }
      if {$timeMode == "timebonus"} {
        ::sergame::sendToEngine $n "go ponder wtime $wtime btime $btime winc $::uci::uciInfo(winc$n) binc $::uci::uciInfo(binc$n)"
      } elseif {$timeMode == "depth"} {
        ::sergame::sendToEngine $n "go ponder depth $::uci::uciInfo(fixeddepth$n)"
      } elseif {$timeMode == "movetime"} {
        ::sergame::sendToEngine $n "go ponder movetime $::uci::uciInfo(movetime$n)"
      } elseif {$timeMode == "nodes"} {
        ::sergame::sendToEngine $n "go ponder nodes $::uci::uciInfo(fixednodes$n)"
      }
    }
    
    after 1000 ::sergame::engineGo $n
  }
  ################################################################################
  #   add current position for 3fold repetition detection and returns 1 if
  # the position is a repetion
  ################################################################################
  proc repetition {} {
    set elt [lrange [split [sc_pos fen]] 0 2]
    # append the position only if different from the last element
    if { $elt != [ lindex $::sergame::lFen end ] } {
      lappend ::sergame::lFen $elt
    }
    
    if { [llength [lsearch -all $::sergame::lFen $elt] ] >=3 } {
      tk_messageBox -type ok -message $::tr(Draw) -parent .main -icon info
      puts $::sergame::lFen
      return 1
    }
    return 0
  }
  ################################################################################
  #
  ################################################################################
  proc getEngineColor {} {
    # Engine always plays for the upper side
    if { [::board::isFlipped .main.board] == 0 } {
      return "black"
    } else  {
      return "white"
    }
  }
  
  ################################################################################
  #
  ################################################################################
  proc logEngine {n text} {
    if {$::uci::uciInfo(log_stdout$n)} {
      puts stdout "$n $text"
    }
  }
  
}
###
### End of file: sergame.tcl
###
###
### calvar.tcl: part of Scid.
### Copyright (C) 2007  Pascal Georges
###
################################################################################
# The number used for the engine playing a serious game is 4
################################################################################

namespace eval calvar {
  # DEBUG
  set ::uci::uciInfo(log_stdout4) 0
  
  array set engineListBox {}
  set blunderThreshold 0.2
  set thinkingTimePerLine 10
  set thinkingTimePosition 30
  set currentLine 1
  set currentListMoves {}
  # each line begins with a list of moves, a nag code and ends with FEN
  set lines {}
  set analysisQueue {}
  
  # contains multipv analysis of the position, to see if the user considered all important lines
  set initPosAnalysis {}
  
  set working 0
  set midmove ""
  
  set afterIdPosition 0
  set afterIdLine 0
  
  trace add variable ::calvar::working write { ::calvar::traceWorking }
  ################################################################################
  #
  ################################################################################
  proc traceWorking {a b c} {
    set widget .calvarWin.fCommand.bDone
    if {$::calvar::working} {
      $widget configure -state disabled
    } else {
      $widget configure -state normal
    }
  }
  ################################################################################
  #
  ################################################################################
  proc reset {} {
    set currentLine 1
    set currentListMoves {}
    set lines {}
    set working 0
    set analysisQueue {}
    if {[winfo exists .calvarWin]} {
      .calvarWin.fText.t delete 1.0 end
    }
  }
  ################################################################################
  #
  ################################################################################
  proc config {} {
    
    # check if game window is already opened. If yes abort previous game
    set w ".calvarWin"
    if {[winfo exists $w]} {
      focus .calvarWin
      return
    }
    
    set w ".configCalvarWin"
    if {[winfo exists $w]} {
      focus $w
      return
    }
    
    toplevel $w
    wm title $w [::tr "ConfigureCalvar"]
    
    bind $w <F1> { helpWindow CalVar }
    setWinLocation $w
    
    # builds the list of UCI engines
    ttk::frame $w.fengines -relief raised -borderwidth 1
    listbox $w.fengines.lbEngines -yscrollcommand "$w.fengines.ybar set" -height 5 -width 50 -exportselection 0
    ttk::scrollbar $w.fengines.ybar -command "$w.fengines.lbEngines yview"
    pack $w.fengines.ybar -side left -fill y
    pack $w.fengines.lbEngines -side left -fill both -expand yes
    pack $w.fengines -expand yes -fill both -side top
    set i 0
    set idx 0
    foreach e $::engines(list) {
      if { [lindex $e 7] != 1} { incr idx ; continue }
      set ::calvar::engineListBox($i) $idx
      set name [lindex $e 0]
      $w.fengines.lbEngines insert end $name
      incr i
      incr idx
    }
    $w.fengines.lbEngines selection set 0
    
    # if no engines defined, bail out
    if {$i == 0} {
      tk_messageBox -type ok -message "No UCI engine defined" -icon error
      destroy $w
      return
    }
    
    # parameters setting
    set f $w.parameters
    ttk::frame $w.parameters
    pack $f -expand yes -fill both
    # label $f.lThreshold -text "Threshold"
    # spinbox $f.sbThreshold -background white -width 3 -textvariable ::calvar::blunderThreshold -from 0.1 -to 1.5 -increment 0.1
    # pack $f.lThreshold $f.sbThreshold -side left
    ttk::label $f.lTime -text "Move thinking time"
    spinbox $f.sbTime -background white -width 3 -textvariable ::calvar::thinkingTimePerLine -from 5 -to 120 -increment 5 -validate all -vcmd { regexp {^[0-9]+$} %P }
    pack $f.lTime $f.sbTime -side left
    ttk::label $f.lTime2 -text "Position thinking time"
    spinbox $f.sbTime2 -background white -width 3 -textvariable ::calvar::thinkingTimePosition -from 5 -to 300 -increment 5 -validate all -vcmd { regexp {^[0-9]+$} %P }
    pack $f.lTime2 $f.sbTime2 -side left
    
    ttk::frame $w.fbuttons
    pack $w.fbuttons -expand yes -fill both
    ttk::button $w.fbuttons.start -text Start -command {
      focus .
      set chosenEngine [.configCalvarWin.fengines.lbEngines curselection]
      set ::calvar::engineName [.configCalvarWin.fengines.lbEngines get $chosenEngine]
      destroy .configCalvarWin
      ::calvar::start $chosenEngine
    }
    ttk::button $w.fbuttons.cancel -textvar ::tr(Cancel) -command "focus .; destroy $w"
    
    pack $w.fbuttons.start $w.fbuttons.cancel -expand yes -side left -padx 20 -pady 2
    
    bind $w <Escape> { .configCalvarWin.fbuttons.cancel invoke }
    bind $w <Return> { .configCalvarWin.fbuttons.start invoke }
    bind $w <Destroy> ""
    bind $w <Configure> "recordWinSize $w"
    wm minsize $w 45 0
  }
  ################################################################################
  #
  ################################################################################
  proc start { engine { n 4 } } {
    
    ::calvar::reset
    
    set w ".calvarWin"
    if {[winfo exists $w]} {
      focus .calvarWin
      return
    }
    createToplevel $w
    ::setTitle $w [::tr "Calvar"]
    bind $w <F1> { helpWindow CalVar }
    setWinLocation $w
    
    set f $w.fNag
    ttk::frame $f
    set i 0
    foreach nag { "=" "+=" "+/-" "+-" "=+" "-/+" "-+" } {
      ttk::button $f.nag$i -text $nag -command "::calvar::nag $nag" -width 3
      pack $f.nag$i -side left
      incr i
    }
    pack $f -expand 1 -fill both
    
    set f $w.fText
    ttk::frame $f
    text $f.t -height 12 -width 50
    pack $f.t -expand 1 -fill both
    pack $f -expand 1 -fill both
    
    set f $w.fPieces
    ttk::frame $f
    ttk::label $f.lPromo -text "Promotion"
    pack $f.lPromo -side left
    foreach piece { "q" "r" "b" "n" } {
      ttk::button $f.p$piece -image w${piece}20 -command "::calvar::promo $piece"
      pack $f.p$piece -side left
    }
    pack $f -expand 1 -fill both
    
    set f $w.fCommand
    ttk::frame $f
    ttk::button $f.bDone -text [::tr "DoneWithPosition"] -command ::calvar::positionDone
    pack $f.bDone
    pack $f -expand 1 -fill both
    
    set f $w.fbuttons
    ttk::frame $f
    pack $f -expand 1 -fill both
    ttk::button $w.fbuttons.stop -textvar ::tr(Stop) -command "::calvar::stop"
    pack $w.fbuttons.stop -expand yes -side left -padx 20 -pady 2
    
    bind $w <Escape> { .calvarWin.fbuttons.stop invoke }
    bind $w <Destroy> ""
    bind $w <Configure> "recordWinSize $w"
    wm minsize $w 45 0
    
    # start engine and set MultiPV to 10
    ::uci::startEngine $::calvar::engineListBox($engine) $n
    
    set ::analysis(multiPVCount$n) 10
    ::uci::sendToEngine $n "setoption name MultiPV value $::analysis(multiPVCount$n)"
    set ::calvar::suggestMoves_old $::suggestMoves
    set ::calvar::hideNextMove_old $::gameInfo(hideNextMove)
    
    set ::suggestMoves 0
    set ::gameInfo(hideNextMove) 1
    updateBoard
    
    # fill initPosAnalysis for the current position
    set ::calvar::working 1
    ::calvar::startAnalyze "" "" [sc_pos fen]
    
    set ::calvar::afterIdPosition [after [expr $::calvar::thinkingTimePosition * 1000] { ::calvar::stopAnalyze "" "" "" ; ::calvar::addLineToCompute "" }]
    ::createToplevelFinalize $w
  }
  ################################################################################
  #
  ################################################################################
  proc stop { {n  4 } } {
    after cancel $::calvar::afterIdPosition
    after cancel $::calvar::afterIdLine
    ::uci::closeUCIengine $n
    focus .
    destroy .calvarWin
    set ::suggestMoves $::calvar::suggestMoves_old
    set ::gameInfo(hideNextMove) $::calvar::hideNextMove_old
    updateBoard
  }
  
  ################################################################################
  #
  ################################################################################
  proc pressSquare { sq } {
    global ::calvar::midmove
    
    set sansq [::board::san $sq]
    if {$midmove == ""} {
      set midmove $sansq
    } else {
      lappend ::calvar::currentListMoves "$midmove$sansq"
      set midmove ""
    }
    set tmp " "
    if {$midmove == ""} {
      set tmp "-"
    }
    .calvarWin.fText.t insert "$::calvar::currentLine.end" "$tmp$sansq"
  }
  ################################################################################
  #
  ################################################################################
  proc promo { piece } {
    if { [llength $::calvar::currentListMoves] == 0 } { return }
    
    set tmp [lindex $::calvar::currentListMoves end]
    set tmp "$tmp$piece"
    lset ::calvar::currentListMoves end $tmp
    .calvarWin.fText.t insert end "$piece"
  }
  ################################################################################
  # This will end a line, and start engine computation
  ################################################################################
  proc nag { n } {
    .calvarWin.fText.t insert "$::calvar::currentLine.end" " $n\n"
    set newline [list $::calvar::currentListMoves $n [sc_pos fen]]
    lappend ::calvar::lines $newline
    incr ::calvar::currentLine
    addLineToCompute $newline
    set ::calvar::currentListMoves {}
  }
  ################################################################################
  #
  ################################################################################
  proc addLineToCompute {line {n 4} } {
    global ::calvar::analysisQueue
    puts "====>>> addLineToCompute $line"
    if {$line != ""} {
      lappend analysisQueue $line
    }
    if { $::calvar::working } { return }
    
    while { [llength $analysisQueue] != 0 } {
      set line [lindex $analysisQueue 0]
      set analysisQueue [lreplace analysisQueue 0 0]
      computeLine $line
    }
  }
  ################################################################################
  #
  ################################################################################
  proc computeLine {line {n 4} } {
    set ::calvar::working 1
    puts "---->>>> computeLine $line"
    set moves [ lindex $line 0 ]
    set nag [ lindex $line 1 ]
    set fen [ lindex $line 2 ]
    startAnalyze $moves $nag $fen
    set ::calvar::afterIdLine [after [expr $::calvar::thinkingTimePerLine * 1000] "::calvar::stopAnalyze [list $moves $nag $fen]"]
  }
  ################################################################################
  # we suppose FEN has not changed !
  ################################################################################
  proc handleResult {moves nag fen {n 4} } {
    set comment ""
    
    set usermoves [::uci::formatPv $moves $fen]
    set firstmove [lindex $usermoves 0]
    
    # format engine's output
    # append first move to the variations
    set ::analysis(multiPV$n) {}
    for {set i 0 } {$i < [llength $::analysis(multiPVraw$n)]} {incr i} {
      set elt [lindex $::analysis(multiPVraw$n) $i ]
      set line [::uci::formatPvAfterMoves $firstmove [lindex $elt 2] ]
      set line "$firstmove $line"
      lappend ::analysis(multiPV$n) [list [lindex $elt 0] [lindex $elt 1] $line [lindex $elt 3]]
    }
    
    puts "==================================="
    puts "handleResult $::analysis(multiPV$n)"
    puts "==================================="
    
    if { [llength $moves] != [llength $usermoves]} {
      set comment " error in user moves [lrange $moves [llength $usermoves] end ]"
      puts $comment
    }
    
    set pv [ lindex $::analysis(multiPV$n) 0 ]
    if { [ llength $pv ] == 4 } {
      set engmoves [lindex $pv 2]
      # score is computed for the opposite side, so invert it
      set engscore [expr - 1.0 * [lindex $pv 1] ]
      set engdepth [lindex $pv 0]
      addVar $usermoves $engmoves $nag $comment $engscore
    } else  {
      puts "Error pv = $pv"
    }
  }
  ################################################################################
  # will add a variation at current position.
  # Try to merge the variation with an existing one.
  ################################################################################
  proc addVar {usermoves engmoves nag comment engscore} {
    puts "addVar usermoves $usermoves engmoves $engmoves nag $nag comment $comment"
    sc_info preMoveCmd {}
    
    # Cannot add a variation to an empty variation:
    if {[sc_pos isAt vstart]  &&  [sc_pos isAt vend]} {
      # enter the first move as dummy variation
      sc_move addSan [lindex $engmoves 0]
      sc_move back
    }
    
    set repeat_move ""
    # If at the end of the game or a variation, repeat previous move
    if {[sc_pos isAt vend] && ![sc_pos isAt vstart]} {
      set repeat_move [sc_game info previousMoveNT]
      sc_move back
    }
    
    # first enter the user moves
    sc_var create
    if {$repeat_move != ""} {sc_move addSan $repeat_move}
    sc_move addSan $usermoves
    if {$comment != ""} {
      sc_pos setComment $comment
    }
    
    sc_pos addNag $nag
    
    # now enter the engine moves
    while {![sc_pos isAt vstart] } {sc_move back}
    if {$repeat_move != ""} {sc_move forward}
    sc_var create
    sc_pos setComment  "$::calvar::engineName : $engscore"
    sc_move addSan $engmoves
    sc_var exit
    sc_var exit
    
    if {$repeat_move != ""} {sc_move forward}
    
    sc_info preMoveCmd preMoveCommand
    updateBoard -pgn
  }
  ################################################################################
  # will add a variation at current position.
  # Try to merge the variation with an existing one.
  ################################################################################
  proc addMissedLine {moves score depth} {
    puts "addMissedLine moves $moves score $score depth $depth"
    sc_info preMoveCmd {}
    
    # Cannot add a variation to an empty variation:
    if {[sc_pos isAt vstart]  &&  [sc_pos isAt vend]} {
      # enter the first move as dummy variation
      sc_move addSan [lindex $moves 0]
      sc_move back
    }
    
    set repeat_move ""
    # If at the end of the game or a variation, repeat previous move
    if {[sc_pos isAt vend] && ![sc_pos isAt vstart]} {
      set repeat_move [sc_game info previousMoveNT]
      sc_move back
    }
    
    sc_var create
    if {$repeat_move != ""} {sc_move addSan $repeat_move}
    sc_pos setComment "Missed line ($depth) $score"
    sc_move addSan $moves
    sc_var exit
    if {$repeat_move != ""} { sc_move forward }
    
    sc_info preMoveCmd preMoveCommand
    updateBoard -pgn
  }
  ################################################################################
  # The user stops entering var, check he founds all important ones.
  # All the moves that the user did not consider with a score better than the first best
  # move entered by the user should be pointed out.
  ################################################################################
  proc positionDone {} {
    global ::calvar::initPosAnalysis ::calvar::lines
    
    ################################################################################
    proc isPresent { engmoves } {
      global ::calvar::lines
      set res 0
      set firsteng [lindex $engmoves 0]
      foreach userLine $::calvar::lines {
        set usermoves [::uci::formatPv [lindex $userLine 0]]
        set firstuser [lindex $usermoves 0]
        if {$firstuser == $firsteng} { return 1 }
      }
      return 0
    }
    
    ################################################################################
    foreach pv $::calvar::initPosAnalysis {
      set engmoves [lindex $pv 2]
      set engscore [lindex $pv 1]
      set engdepth [lindex $pv 0]
      if { ! [isPresent $engmoves] } {
        addMissedLine $engmoves $engscore $engdepth
      } else {
        # the user considered at least one line (skip those that are below)
        puts "position done :: Line present"
        break
      }
    }
    ::calvar::reset
  }
  ################################################################################
  # startAnalyze:
  #   Put the engine in analyze mode and ponder on the first move entered by the user to see
  # if the line's evaluation is coherent
  ################################################################################
  proc startAnalyze {moves nag fen {n 4}} {
    global analysis
    
    # Check that the engine has not already had analyze mode started:
    if {$analysis(analyzeMode$n)} { return }
    set analysis(analyzeMode$n) 1
    set analysis(waitForReadyOk$n) 1
    ::uci::sendToEngine $n "isready"
    vwait analysis(waitForReadyOk$n)
    set analysis(fen$n) $fen
    if { [llength $moves] > 0 } {
      ::uci::sendToEngine $n "position fen $fen moves [lindex $moves 0]"
    } else {
      ::uci::sendToEngine $n "position fen $fen"
    }
    ::uci::sendToEngine $n "go infinite"
  }
  ################################################################################
  # stopAnalyzeMode
  ################################################################################
  proc stopAnalyze { moves nag fen {n 4} } {
    if {! $::analysis(analyzeMode$n)} { return }
    set ::analysis(analyzeMode$n) 0
    ::uci::sendToEngine $n "stop"
    
    if { [llength $moves] > 0 } {
      handleResult $moves $nag $fen
    } else {
      set ::calvar::initPosAnalysis $::analysis(multiPV$n)
    }
    set ::calvar::working 0
    addLineToCompute ""
  }
  
}
###
### End of file: calvar.tcl
###
###
### fics.tcl: part of Scid.
### Copyright (C) 2007  Pascal Georges
###

namespace eval fics {
  set server "freechess.org"
  set sockchan 0
  set seeklist {}
  set observedGame -1
  set playing 0
  set waitForRating ""
  set waitForMoves ""
  set silence 1
  set sought 0
  set soughtlist {}
  set width 300
  set height 300
  set off 20
  set graphon 0
  set timeseal_pid 0
  font create font_offers -family courier -size 12 -weight bold
  set history {}
  set history_pos 0
  set offers_minelo 1000
  set offers_maxelo 2500
  set offers_mintime 0
  set offers_maxtime 60
  variable logged 0
  variable isGuestLogin 0
  array set profileVars {}

  set showabortreq 1
  set showadjournreq 1
  set showdrawreq 1
  set showtakebackreq 1


  ################################################################################
  #
  ################################################################################
  proc config {} {
    variable logged
    global ::fics::sockChan
    set w ".ficsConfig"

    if {[winfo exists $w]} {
      focus $w
      return
    }

    if {[winfo exists .fics]} {
      focus .fics
      return
    }

    set logged 0

    toplevel $w
    ::setTitle $w [::tr "ConfigureFics"]
    pack [ttk::frame $w.f]

    ttk::label $w.f.lLogin -text [::tr "CCDlgLoginName"]
    ttk::entry $w.f.login -width 20 -textvariable ::fics::login
    ttk::label $w.f.lPwd -text [::tr "CCDlgPassword"]
    ttk::entry $w.f.passwd -width 20 -textvariable ::fics::password
    ttk::button $w.f.connect -text [::tr "FICSConnect"] -state disabled -command {
      ::fics::connect [.ficsConfig.f.login get] [.ficsConfig.f.passwd get]
      destroy .ficsConfig
    }
    ttk::button $w.f.guest -text [::tr FICSGuest] -state disabled -command {
      ::fics::connect "guest" ""
      destroy .ficsConfig
    }
    ttk::button $w.f.cancel -text [::tr "Cancel"] -command { destroy .ficsConfig }

    set row 0
    grid $w.f.lLogin -column 0 -row $row
    grid $w.f.login -column 1 -row $row
    incr row
    grid $w.f.lPwd -column 0 -row $row
    grid $w.f.passwd -column 1 -row $row
    incr row

    # horizontal line
    ttk::frame $w.f.line$row -height 2 -borderwidth 2 -relief sunken
    grid $w.f.line$row -pady 5 -column 0 -row $row -columnspan 3 -sticky ew
    incr row

    # use default user variables
    ttk::checkbutton $w.f.cbvars -text [::tr "FICSdefaultuservars"] -variable ::fics::usedefaultvars
    grid $w.f.cbvars -column 0 -row $row -sticky w
    incr row

    # Time seal configuration
    ttk::checkbutton $w.f.cbts -text "Time seal" -variable ::fics::use_timeseal -onvalue 1 -offvalue 0
    grid $w.f.cbts -column 0 -row $row -sticky w
    incr row
    ttk::entry $w.f.eExec -width 30 -textvariable ::fics::timeseal_exec
    ttk::button $w.f.bExec -text "..." -command { set ::fics::timeseal_exec [tk_getOpenFile] }
    grid $w.f.eExec -column 0 -row $row -columnspan 2
    grid $w.f.bExec -column 2 -row $row
    incr row
    ttk::label $w.f.lFICS_ip -text [::tr "FICSServerAddress" ]
    ttk::entry $w.f.ipserver -width 16 -textvariable ::fics::server_ip -state readonly
    ttk::button $w.f.bRefresh -text [::tr "FICSRefresh" ] -command ::fics::getIP
    ttk::label $w.f.lFICS_port -text [::tr "FICSServerPort"]
    ttk::entry $w.f.portserver -width 6 -textvariable ::fics::port_fics
    ttk::label $w.f.ltsport -text [::tr "FICSTimesealPort"]
    ttk::entry $w.f.portts -width 6 -textvariable ::fics::port_timeseal

    grid $w.f.lFICS_ip -column 0 -row $row
    grid $w.f.ipserver -column 1 -row $row
    grid $w.f.bRefresh -column 2 -row $row
    incr row
    grid $w.f.lFICS_port -column 0 -row $row
    grid $w.f.portserver -column 1 -row $row
    incr row
    grid $w.f.ltsport -column 0 -row $row
    grid $w.f.portts -column 1 -row $row
    incr row

    # horizontal line
    ttk::separator $w.f.line$row -orient horizontal
    grid $w.f.line$row -pady 5 -column 0 -row $row -columnspan 3 -sticky ew
    incr row

    grid $w.f.connect -column 0 -row $row -sticky ew
    grid $w.f.guest  -column 1 -row $row -sticky ew
    grid $w.f.cancel -column 2 -row $row -sticky ew

    bind $w <Escape> "$w.f.cancel invoke"
    bind $w <F1> { helpWindow FICSLogin}

    # Get IP adress of server (as Timeseal needs IP adress)
    if { $::fics::server_ip == "0.0.0.0" } {
      getIP
    }

    $w.f.connect configure -state normal
    $w.f.guest configure -state normal

  }
  ################################################################################
  #
  ################################################################################
  proc getIP {} {
    set b .ficsConfig.f.bRefresh
    $b configure -state disabled
    update
    # First handle the case of a network down
    if { [catch {set sockChan [socket -async $::fics::server $::fics::port_fics]} err]} {
      tk_messageBox -icon error -type ok -title "Unable to contact $::fics::server" -message $err -parent .ficsConfig.f
      return
    }

    # Then the case of a proxy
    set timeOut 5
    set i 0
    while { $i <= $timeOut } {
      after 1000

      if { [catch {set peer [ fconfigure $sockChan -peername ]} err]} {
        if {$i == $timeOut} {
          tk_messageBox -icon error -type ok -title "Unable to contact $::fics::server" -message $err -parent .ficsConfig.f
          return
        }
      } else  {
        break
      }
      incr i
    }

    set ::fics::server_ip [lindex $peer 0]
    ::close $sockChan
    $b configure -state normal
  }
  ################################################################################
  #
  ################################################################################
  proc setProfileVars { login } {
    global  ::fics::profileVars
    if { ! [info exists profileVars(initTime_$login)] } {
      return
    }
    set ::fics::findopponent(initTime) $profileVars(initTime_$login)
    set ::fics::findopponent(incTime) $profileVars(incTime_$login)
    set ::fics::findopponent(rated) $profileVars(rated_$login)
    set ::fics::findopponent(color) $profileVars(color_$login)
    set ::fics::findopponent(limitrating) $profileVars(limitrating_$login)
    set ::fics::findopponent(rating1) $profileVars(rating1_$login)
    set ::fics::findopponent(rating2) $profileVars(rating2_$login)
    set ::fics::findopponent(manual) $profileVars(manual_$login)
    set ::fics::findopponent(formula) $profileVars(formula_$login)
  }
  ################################################################################
  #
  ################################################################################
  proc syncProfileVars { login } {
    global  ::fics::profileVars
    variable isGuestLogin

    if {$isGuestLogin} {
      set login "guest"
    }
    set profileVars(initTime_$login) $::fics::findopponent(initTime)
    set profileVars(incTime_$login) $::fics::findopponent(incTime)
    set profileVars(rated_$login) $::fics::findopponent(rated)
    set profileVars(color_$login) $::fics::findopponent(color)
    set profileVars(limitrating_$login) $::fics::findopponent(limitrating)
    set profileVars(rating1_$login) $::fics::findopponent(rating1)
    set profileVars(rating2_$login) $::fics::findopponent(rating2)
    set profileVars(manual_$login) $::fics::findopponent(manual)
    set profileVars(formula_$login) $::fics::findopponent(formula)
  }
  ################################################################################
  #
  ################################################################################
  proc connect { login passwd } {
    global ::fics::sockchan ::fics::seeklist ::fics::width ::fics::height ::fics::off
    variable isGuestLogin

    if {$login != ""} {
      set ::fics::reallogin $login
		# do not reset the password if we log in as guest.
		# This allows to reset it if we have another UID.
		if ($login != "guest") {
			set ::fics::password $passwd
		}
    } else {
      return
    }

    set isGuestLogin [string match -nocase "guest" $login]

    setProfileVars $login

    # check timeseal configuration
    if {$::fics::use_timeseal} {
      if {![ file executable $::fics::timeseal_exec ]} {
        tk_messageBox -title "Error" -icon error -type ok -message "Timeseal exec error : $::fics::timeseal_exec"
        return
      }
    }

    set w .fics
    ::createToplevel $w
    ::setTitle $w "Free Internet Chess Server $::fics::reallogin"
    pack [ttk::panedwindow $w.f -orient vertical] -expand 1 -fill both

    ttk::notebook $w.f.top
    ttk::frame $w.f.top.fconsole
    ttk::frame $w.f.top.fconsole.f1
    ttk::frame $w.f.top.fconsole.f2

    ttk::frame $w.f.top.foffers
    $w.f.top add $w.f.top.fconsole -sticky nsew -text [::tr "FICSConsole"]
    $w.f.top add $w.f.top.foffers -sticky nsew -text [::tr "FICSOffers"]

    pack $w.f.top.fconsole.f1  -fill both -expand 1
    pack $w.f.top.fconsole.f2 -fill x
    ttk::frame $w.f.bottom

    $w.f add $w.f.top -weight 1
    $w.f add $w.f.bottom -weight 1

    ttk::frame $w.f.bottom.left
    ttk::frame $w.f.bottom.right
    pack $w.f.bottom.left -side left
    pack $w.f.bottom.right -side left

    # graph
    canvas $w.f.top.foffers.c -background white -width $width -height $height -relief solid
    pack $w.f.top.foffers.c
    bind $w.f.top.foffers <Configure> { ::fics::configureCanvas}

    ttk::scrollbar $w.f.top.fconsole.f1.ysc -command { .fics.f.top.fconsole.f1.console yview }
    text $w.f.top.fconsole.f1.console -bg $::fics::consolebg -fg $::fics::consolefg -height $::fics::consoleheight -width $::fics::consolewidth  \
         -font font_Fixed -wrap word -yscrollcommand "$w.f.top.fconsole.f1.ysc set"
    pack $w.f.top.fconsole.f1.ysc -side left -fill y -side right
    pack $w.f.top.fconsole.f1.console -side left -fill both -expand 1 -side right

    #define colors for console
    $w.f.top.fconsole.f1.console tag configure seeking     -foreground $::fics::colseeking
    $w.f.top.fconsole.f1.console tag configure game        -foreground $::fics::colgame
    $w.f.top.fconsole.f1.console tag configure gameresult  -foreground $::fics::colgameresult
    $w.f.top.fconsole.f1.console tag configure ficspercent -foreground $::fics::colficspercent
    $w.f.top.fconsole.f1.console tag configure ficshelpnext -foreground $::fics::colficshelpnext -underline 1

    ttk::entry $w.f.top.fconsole.f2.cmd -width 32
    ttk::button $w.f.top.fconsole.f2.send -text [::tr "FICSSend"] -command ::fics::cmd
    bind $w.f.top.fconsole.f2.cmd <Return> { ::fics::cmd }
    bind $w.f.top.fconsole.f2.cmd <Up> { ::fics::cmdHistory up ; break }
    bind $w.f.top.fconsole.f2.cmd <Down> { ::fics::cmdHistory down ; break }
    bind $w.f.top.fconsole.f2.cmd <Left> " [bind TEntry <Left>] ; break "
    bind $w.f.top.fconsole.f2.cmd <Right> " [bind TEntry <Right>] ; break "
    pack $w.f.top.fconsole.f2.cmd $w.f.top.fconsole.f2.send -side left -fill x

    # clock 1 is white
    ::gameclock::new $w.f.bottom.left 1 100 0
    ::gameclock::new $w.f.bottom.left 2 100 0

    set row 0
    ttk::checkbutton $w.f.bottom.right.silence -image FICSsilence -variable ::fics::silence -onvalue 0 -offvalue 1 -command {
      ::fics::writechan "set gin $::fics::silence" "echo"
      ::fics::writechan "set seek $::fics::silence" "echo"
      ::fics::writechan "set silence $::fics::silence" "echo"
      ::fics::writechan "set chanoff [expr ! $::fics::silence ]" "echo"
    }
    ::utils::tooltip::Set $w.f.bottom.right.silence "[::tr FICSSilence]\n(set gin 0\nset seek 0\nset silence 0\nset chanoff 1)"
    set ::fics::silence 1

    set ::fics::graphon 0

    ttk::button $w.f.bottom.right.findopp -image FICSsearch  -command { ::fics::findOpponent }
    ::utils::tooltip::Set $w.f.bottom.right.findopp [::tr "FICSFindOpponent"]
    grid $w.f.bottom.right.findopp -column 0 -row $row -sticky ew -pady 2
    ttk::button $w.f.bottom.right.relay -image FICSrelayedgames -compound image -command { ::fics::writechan "tell relay listgames"}
    ::utils::tooltip::Set $w.f.bottom.right.relay "[::tr FICSRelayedGames]\n(tell relay listgames)"
    grid $w.f.bottom.right.relay -column 1 -row $row -sticky ew -pady 2
    ttk::button $w.f.bottom.right.games -image FICSusers -compound image -command { ::fics::writechan "games /bsu"}
    ::utils::tooltip::Set $w.f.bottom.right.games "[::tr FICSGames]\n(games /bsu)"
    grid $w.f.bottom.right.games -column 2 -row $row -sticky ew -pady 2
    ttk::button $w.f.bottom.right.uno -image FICSunobserve -compound image -command { ::fics::writechan "unobserve"}
    ::utils::tooltip::Set $w.f.bottom.right.uno "[::tr FICSUnobserve]\n(unobserve)"
    grid $w.f.bottom.right.uno -column 3 -row $row -sticky ew -pady 2
    ttk::button $w.f.bottom.right.profile -image FICSprofile -compound image -command { ::fics::writechan "finger" ; ::fics::writechan "history" }
    ::utils::tooltip::Set $w.f.bottom.right.profile "[::tr FICSProfile]\n(finger, history)"
    grid $w.f.bottom.right.profile -column 4 -row $row -sticky ew -pady 2

    incr row

    ttk::button $w.f.bottom.right.draw -image FICSdraw -command { ::fics::writechan "draw"}
    ::utils::tooltip::Set $w.f.bottom.right.draw "[::tr CCClaimDraw]\n(draw)"
    ttk::button $w.f.bottom.right.resign -image FICSresign -command { ::fics::writechan "resign"}
    ::utils::tooltip::Set $w.f.bottom.right.resign "[::tr CCResign]\n(resign)"
    grid $w.f.bottom.right.draw -column 0 -row $row -sticky ew -pady 2
    grid $w.f.bottom.right.resign -column 1 -row $row -sticky ew -pady 2
    ttk::button $w.f.bottom.right.abort -image FICSabort -command { ::fics::writechan "abort" }
    ::utils::tooltip::Set $w.f.bottom.right.abort "[::tr Abort]\n(abort)"
    grid $w.f.bottom.right.abort -column 2 -row $row -sticky ew -pady 2
    grid $w.f.bottom.right.silence -column 4 -row $row -sticky w
    incr row

    ttk::button $w.f.bottom.right.takeback -image FICStakeback1 -command { ::fics::writechan "takeback"}
    ::utils::tooltip::Set $w.f.bottom.right.takeback "[::tr FICSTakeback]\n(takeback)"
    ttk::button $w.f.bottom.right.takeback2 -image FICStakeback2 -command { ::fics::writechan "takeback 2"}
    ::utils::tooltip::Set $w.f.bottom.right.takeback2 "[::tr FICSTakeback2]\n(takeback 2)"

    grid $w.f.bottom.right.takeback -column 0 -row $row -sticky ew -pady 2
    grid $w.f.bottom.right.takeback2 -column 1 -row $row -sticky ew -pady 2
    incr row

    ttk::button $w.f.bottom.right.cancel -image FICSexit -command { ::fics::close }
    ::utils::tooltip::Set $w.f.bottom.right.cancel [::tr "Close"]
    grid $w.f.bottom.right.cancel -column 0 -columnspan 3 -row $row -sticky ew  -pady 2

    bind $w.f.top <<NotebookTabChanged>> { ::fics::tabchanged ; break }
    bind $w <Destroy> { catch ::fics::close }
    bind $w <Configure> "recordWinSize $w"

    bind $w <F1> { helpWindow FICS}
    bind $w.f.top.fconsole.f1.console <FocusIn> "focus $w.f.top.fconsole.f2.cmd"
    bind $w.f.top.fconsole.f1.console <Configure> { .fics.f.top.fconsole.f1.console yview moveto 1 }
    bind $w.f.top.fconsole.f1.console <ButtonPress-1> { ::fics::consoleClick %x %y %W }
    standardShortcuts $w

    # all widgets must be visible
    update
    set x [winfo reqwidth $w]
    set y [winfo reqheight $w]
    wm minsize $w $x $y

    setWinLocation $w
    setWinSize $w

    ::gameclock::setColor 1 white
    ::gameclock::setColor 2 black

    updateConsole "Connecting $login"

    # start timeseal proxy
    if {$::fics::use_timeseal} {
      updateConsole "Starting TimeSeal"
      if { [catch { set timeseal_pid [exec $::fics::timeseal_exec $::fics::server_ip $::fics::port_fics -p $::fics::port_timeseal &]} ] } {
        set ::fics::use_timeseal 0
        set port $::fics::port_fics
      } else {
        #wait for proxy to be ready !?
        after 500
        set server "localhost"
        set port $::fics::port_timeseal
      }
    } else {
      set server $::fics::server
      set port $::fics::port_fics
    }

    updateConsole "Socket opening"

    if { [catch { set sockchan [socket $server $port] } ] } {
      tk_messageBox -title "Error" -icon error -type ok -message "Network error\nCan't connect to $server $port" -parent .fics
      return
    }

    updateConsole "Channel configuration"

    fconfigure $sockchan -blocking 0 -buffering line -translation auto ;#-encoding iso8859-1 -translation crlf
    fileevent $sockchan readable ::fics::readchan
    setState disabled
  }
  ################################################################################
  #
  ################################################################################
  proc cmd {} {
    set l [.fics.f.top.fconsole.f2.cmd get]
    .fics.f.top.fconsole.f2.cmd delete 0 end
    if {$l == "quit"} {
      ::fics::close
      return
    }
    # do nothing if the command is void
    if {[string trim $l] == ""} { return }
    writechan $l "echo"
    lappend ::fics::history $l
    set ::fics::history_pos [llength $::fics::history]
  }
  ################################################################################
  #
  ################################################################################
  proc cmdHistory { action } {
    set t .fics.f.top.fconsole.f2.cmd

    if {$action == "up" && $::fics::history_pos > 0} {
      incr ::fics::history_pos -1
      $t delete 0 end
      $t insert end [lindex $::fics::history $::fics::history_pos]
    }
    if {$action == "down" && $::fics::history_pos < [expr [llength $::fics::history] -1] } {
      incr ::fics::history_pos
      $t delete 0 end
      $t insert end [lindex $::fics::history $::fics::history_pos]
    }
  }
  ################################################################################
  #
  ################################################################################
  proc findOpponent {} {
    set w .ficsfindopp
    if {[winfo exists $w]} {
      focus $w
      return
    }
    toplevel $w
    wm title $w [::tr "FICSFindOpponent"]
    pack [ttk::frame $w.f]

    ttk::label $w.f.linit -text [::tr "FICSInitialTime"]
    spinbox $w.f.sbTime1 -background white -width 3 -textvariable ::fics::findopponent(initTime) -from 0 -to 120 -increment 1 -validate all -vcmd { regexp {^[0-9]+$} %P }
    ttk::label $w.f.linc -text [::tr "FICSIncrement"]
    spinbox $w.f.sbTime2 -background white -width 3 -textvariable ::fics::findopponent(incTime) -from 0 -to 120 -increment 1 -validate all -vcmd { regexp {^[0-9]+$} %P }
    grid $w.f.linit -column 0 -row 0 -sticky ew
    grid $w.f.sbTime1 -column 1 -row 0 -sticky ew
    grid $w.f.linc -column 0 -row 1 -sticky ew
    grid $w.f.sbTime2 -column 1 -row 1 -sticky ew

    ttk::checkbutton $w.f.cbrated -text [::tr "FICSRatedGame"] -onvalue "rated" -offvalue "unrated" -variable ::fics::findopponent(rated)
    grid $w.f.cbrated -column 0 -row 2 -columnspan 2 -sticky ew

    ttk::label $w.f.color -text [::tr "FICSColour"]
    grid $w.f.color -column 0 -row 3 -columnspan 3 -sticky ew
    ttk::radiobutton $w.f.rb1 -text [::tr "FICSAutoColour"] -value "" -variable ::fics::findopponent(color)
    ttk::radiobutton $w.f.rb2 -text [::tr "White"] -value "white" -variable ::fics::findopponent(color)
    ttk::radiobutton $w.f.rb3 -text [::tr "Black"] -value "black" -variable ::fics::findopponent(color)
    grid $w.f.rb1 -column 0 -row 4 -sticky ew
    grid $w.f.rb2 -column 1 -row 4 -sticky ew
    grid $w.f.rb3 -column 2 -row 4 -sticky ew

    ttk::checkbutton $w.f.cblimitrating -text [::tr "RatingRange"] -variable ::fics::findopponent(limitrating)
    spinbox $w.f.sbrating1 -background white -width 4 -textvariable ::fics::findopponent(rating1) -from 1000 -to 3000 -increment 50 -validate all -vcmd { regexp {^[0-9]+$} %P }
    spinbox $w.f.sbrating2 -background white -width 4 -textvariable ::fics::findopponent(rating2) -from 1000 -to 3000 -increment 50 -validate all -vcmd { regexp {^[0-9]+$} %P }
    grid $w.f.cblimitrating -column 0 -row 5 -columnspan 2 -sticky ew
    grid $w.f.sbrating1 -column 0 -row 6 -sticky ew
    grid $w.f.sbrating2 -column 1 -row 6 -sticky ew

    ttk::checkbutton $w.f.cbmanual -text [::tr "FICSManualConfirm"] -onvalue "manual" -offvalue "auto" -variable ::fics::findopponent(manual)
    grid $w.f.cbmanual -column 0 -row 7 -columnspan 2 -sticky ew
    ttk::checkbutton $w.f.cbformula -text [::tr "FICSFilterFormula"] -onvalue "formula" -offvalue "" -variable ::fics::findopponent(formula)
    grid $w.f.cbformula -column 0 -row 8 -columnspan 2 -sticky ew

    ttk::button $w.f.seek -text [::tr "FICSIssueSeek"] -command {
      ::fics::syncProfileVars $::fics::login

      set range ""
      if {$::fics::findopponent(limitrating) } {
        set range "$::fics::findopponent(rating1)-$::fics::findopponent(rating2)"
      }
      set cmd "seek $::fics::findopponent(initTime) $::fics::findopponent(incTime) $::fics::findopponent(rated) \
          $::fics::findopponent(color) $::fics::findopponent(manual) $::fics::findopponent(formula) $range"
      ::fics::writechan $cmd
      destroy .ficsfindopp
    }
    ttk::button $w.f.cancel -text [::tr "Cancel"] -command "destroy $w"
    bind $w <F1> { helpWindow FICSfindOpp}

    grid $w.f.seek -column 0 -row 9 -sticky ew
    grid $w.f.cancel -column 1 -row 9 -sticky ew
  }
  ################################################################################
  #
  ################################################################################
  proc readchan {} {
    variable logged

    if {[eof $::fics::sockchan]} {
      fileevent $::fics::sockchan readable {}
      tk_messageBox -title "FICS" -icon error -type ok -message "Network error reading channel"
      ::fics::close "error"
      return
    }

    # switch from read to gets in case a read is done at the middle of a line
    if {! $logged} {
      set line [read $::fics::sockchan]
      foreach l [split $line "\n"] {
        readparse $l
      }
    } else  {
      set line [gets $::fics::sockchan]
      set line [string map {"\a" ""} $line]
      readparse $line
    }
  }

  ################################################################################
  # Appends an array to soughtlist if the parameter is correct
  # returns 0 if the line is not parsed and so it is still pending for use
  ################################################################################
  proc parseSoughtLine { l } {
    global ::fics::offers_minelo ::fics::offers_maxelo ::fics::offers_mintime ::fics::offers_maxtime

    # it seems that the first offer starts with a prompt
    if {[string match "fics% *" $l]} {
      set l [string range $l 6 end]
    }

    if { [ catch { if {[llength $l] < 8} { return 0} } ] } { return 0}
    array set ga {}

    set offset 0
    set ga(game) [lindex $l 0]
    if { ! [string is integer $ga(game)] } { return 0}
    set tmp [lindex $l 1]
    if { [scan $tmp "%d" ga(elo)] != 1} { set ga(elo) $offers_minelo }
    if { $ga(elo) < $offers_minelo } { set ga(elo) $offers_minelo }
    set ga(name) [lindex $l 2]

    set tmp [lindex $l 3]
    if { [scan $tmp "%d" ga(time_init)] != 1} { set ga(time_init) $offers_maxtime}
    set tmp [lindex $l 4]
    if { [scan $tmp "%d" ga(time_inc)] != 1} { set ga(time_inc) 0 }

    set ga(rated) [lindex $l 5]
    if {$ga(rated) != "rated" && $ga(rated) != "unrated"} { return 0 }

    set ga(type) [lindex $l 6]
    if { $ga(type) != "untimed" && $ga(type) != "blitz" && $ga(type) != "standard" && $ga(type) != "lightning" } {
      return 0
    }
    set ga(color) ""
    if { [lindex $l 7] == "\[white\]" || [lindex $l 7] == "\[black\]" } {
      set ga(color) [lindex $l 7]
      set offset 1
    }
    set ga(rating_range) [lindex $l [expr 7 + $offset]]
    if { [ catch { set ga(start) [lindex $l [expr 8 + $offset]] } ] } {
      set ga(start) ""
    }

    lappend ::fics::soughtlist [array get ga]
    return 1
  }
  ################################################################################
  #
  ################################################################################
  proc readparse {line} {
    variable logged
    variable isGuestLogin

    if {$line == "" || $line == "fics% "} {return}

    if { $::fics::sought } {
      if {[string match "* ad* displayed." $line]} {
        set ::fics::sought 0
        catch { displayOffers }
        return
      }
      # lappend ::fics::soughtlist $line
      if { [ parseSoughtLine $line ] } {
        return
      }
    }

    if {[string match "login: " $line]} {
      writechan $::fics::reallogin
      if { $isGuestLogin} {
        set logged 1
      }
      return
    }
    if {[string match "password: " $line]} {
      writechan $::fics::password
      set logged 1
      return
    }
    if {[string match "<sc>*" $line]} {
      set ::fics::seeklist {}
      return
    }
    if {[string match "<s>*" $line]} {
      parseSeek $line
      return
    }
    if {[string match "<sr>*" $line]} {
      removeSeek $line
      return
    }

    if {[string match "<12>*" $line]} {
      parseStyle12 $line
      return
    }

    # puts "readparse->$line"
    updateConsole $line
    if {[string match "Creating: *" $line]} {
      # hide offers graph
      .fics.f.top select 0
      ::utils::sound::PlaySound sound_move
      # Create a game in an opened base
      if {![sc_base inUse]} {
        sc_base switch clipbase
      }
      sc_game new
      set idx1 [string first "(" $line]
      set white [string trim [string range $line 10 [expr $idx1 -1]] ]
      set idx2 [string first ")" $line]
      set whiteElo [string trim [string range $line [expr $idx1 +1] [expr $idx2 -1]] ]

      set idx1 [expr $idx2 +1]
      set idx2 [string first "(" $line $idx1]
      set black [string trim [string range $line $idx1 [expr $idx2 -1]] ]

      set idx1 [expr $idx2 +1]
      set idx2 [string first ")" $line $idx1]
      set blackElo [string trim [string range $line $idx1 [expr $idx2 -1]] ]

      if { $whiteElo == "++++"} { set whiteElo 0 }
      if { $blackElo == "++++"} { set blackElo 0 }

      sc_game tags set -white $white
      sc_game tags set -whiteElo $whiteElo
      sc_game tags set -black $black
      sc_game tags set -blackElo $blackElo

      sc_game tags set -event "FICS [lrange $line 5 end]"
      if { [::board::isFlipped .main.board] } {
        if { [ string match -nocase $white $::fics::reallogin ] } { ::board::flip .main.board }
      } else {
        if { [ string match -nocase $black $::fics::reallogin ] } { ::board::flip .main.board }
      }
      updateBoard -pgn -animate
      # display the win / draw / loss score
      ::fics::writechan "assess" "noecho"
      # it's a new game so show again abort, draw, etc requests
      set ::fics::showabortreq 1
      set ::fics::showadjournreq 1
      set ::fics::showdrawreq 1
      set ::fics::showtakebackreq 1
      return
    }

    if {[string match "\{Game *" $line]} {
      set num [lindex [lindex $line 0] 1]
      set res [lindex $line end]
      if {$num == $::fics::observedGame} {
        if {[string match "1/2*" $res]} {
          tk_messageBox -title [::tr "Result"] -icon info -type ok -message "Draw"
        } else {
          tk_messageBox -title [::tr "Result"] -icon info -type ok -message "$res"
        }
        sc_game tags set -result $res
        set ::fics::playing 0
        set ::fics::observedGame -1
        ::gameclock::stop 1
        ::gameclock::stop 2
        updateBoard -pgn
      }
      return
    }

    if { [string match "You are now observing game*" $line] } {
      scan $line "You are now observing game %d." ::fics::observedGame
    }

    # Start session
    if {[string match "*Starting FICS session*" $line]} {

      # mandatory init commands
      writechan "iset seekremove 1"
      writechan "iset seekinfo 1"
      writechan "style 12"
      writechan "iset nowrap 1"
      writechan "iset nohighlight 1"

      # user init commands
      if { $::fics::usedefaultvars } {
        writechan "set seek 1" ; # be informed of "seek" ads when they are made
        writechan "set silence 1" ; #  turn off shouts, cshouts and channel tells while you play
        writechan "set chanoff 0" ; # stop hearing tells to channels
        writechan "set echo 1" ; # shouts and most other communications will be echoed to you
        writechan "set cshout 0" ; # do not hear cshouts
      }
      setState normal
      return
    }

    if { $::fics::waitForRating == "wait" } {
      if {[catch {set val [lindex $line 0]}]} {
        return
      } else  {
        if {[lindex $line 0] == "Standard"} {
          set ::fics::waitForRating [lindex $line 1]
          return
        }
      }
    }

    if { $::fics::waitForMoves != "" } {
      set m1 ""
      set m2 ""
      set line [string trim $line]

      # Because some free text may be in the form (".)
      if {[catch {llength $line} err]} {
        puts "Exception $err llength $line"
        return
      }

      if {[llength $line ] == 5 && [scan $line "%d. %s (%d:%d) %s (%d:%d)" t1 m1 t2 t3 m2 t4 t5] != 7} {
        return
      }
      if {[llength $line ] == 3 && [scan $line "%d. %s (%d:%d)" t1 m1 t2 t3] != 4} {
        return
      }
      catch { sc_move addSan $m1 }
      if {$m2 != ""} {
        catch { sc_move addSan $m2 }
      }

      if {[sc_pos fen] == $::fics::waitForMoves } {
        set ::fics::waitForMoves ""
      }
    }

    if {[string match "Challenge:*" $line]} {
      set ans [tk_dialog .challenge [::tr "FICSChallenge"] $line "" 0 [::tr "FICSAccept"] [::tr "FICSDecline"]]
      if {$ans == 0} {
        writechan "accept"
      } else {
        writechan "decline"
      }
    }

    # abort request
    # for the abort, etc requests, added the "cancel" option so that during this game
    # the message box won't open again for the canceled type of request
    # to avoid "denial of play" attack by the opponent constantly issuing such a request
    # (because  tk_messageBox  "waits for the user to select one of the buttons")
    if {[string match "* would like to abort the game;*" $line] && $::fics::showabortreq} {
      set ans [tk_messageBox -title [::tr "Abort"] -icon question -type yesnocancel -message "$line\nDo you accept ?" ]
      switch -- $ans {
        yes {writechan "accept"}
        no  {writechan "decline"}
        cancel {set ::fics::showabortreq 0}
      }
    }

    # takeback
    if {[string match "* would like to take back *" $line] && $::fics::showtakebackreq} {
      set ans [tk_messageBox -title "Abort" -icon question -type yesnocancel -message "$line\nDo you accept ?" ]
      switch -- $ans {
        yes {writechan "accept"}
        no  {writechan "decline"}
        cancel {set ::fics::showtakebackreq 0}
      }
    }

    # draw
    if {[string match "*offers you a draw*" $line] && $::fics::showdrawreq} {
      set ans [tk_messageBox -title "Abort" -icon question -type yesnocancel -message "$line\nDo you accept ?" ]
      switch -- $ans {
        yes {writechan "accept"}
        no  {writechan "decline"}
        cancel {set ::fics::showdrawreq 0}
      }
    }

    # adjourn
    if {[string match "*would like to adjourn the game*" $line] && $::fics::showadjournreq} {
      set ans [tk_messageBox -title "Abort" -icon question -type yesnocancel -message "$line\nDo you accept ?" ]
      switch -- $ans {
        yes {writechan "accept"}
        no  {writechan "decline"}
        cancel {set ::fics::showadjournreq 0}
      }
    }

    # guest logging
    if {[string match "Logging you in as*" $line]} {
      set line [string map {"\"" "" ";" ""} $line ]
      set ::fics::reallogin [lindex $line 4]
      ::setTitle .fics "Free Internet Chess Server $::fics::reallogin"
    }
    if {[string match "Press return to enter the server as*" $line]} {
      writechan "\n"
    }

  }
  ################################################################################
  #  Set the state of user interface related to connection state
  ################################################################################
  proc setState { state } {
    set w .fics

    foreach elt [winfo children $w.f.bottom.right] {
      if { $elt != "$w.f.bottom.right.cancel" } {
        $elt configure -state $state
      }
    }

    foreach elt [list $w.f.top.fconsole.f2.send $w.f.top.fconsole.f2.cmd ] {
      $elt configure -state $state
    }

    if {$state == "normal" } {
      $w.f.top add $w.f.top.foffers
    } else  {
      $w.f.top hide $w.f.top.foffers
    }
  }
  ################################################################################
  #
  ################################################################################
  proc updateConsole {line} {
    set t .fics.f.top.fconsole.f1.console

    if { [string match "* seeking *" $line ] } {
      $t insert end "$line\n" seeking
    } elseif { [string match "\{Game *\}" $line ] } {
      $t insert end "$line\n" game
    } elseif { [string match "\{Game *\} *" $line ] } {
      $t insert end "$line\n" gameresult
    } elseif { [string match "fics% *" $line ] } {
      $t insert end "$line\n" ficspercent
    } elseif  { $line == "Type \[next\] to see next page."  } {
      $t insert end "Click or type \[next\] to see next page.\n" ficshelpnext
    } else  {
      $t insert end "$line\n"
    }

    set pos [ lindex [ .fics.f.top.fconsole.f1.ysc get ] 1 ]
    if {$pos == 1.0} {
      $t yview moveto 1
    }

  }
  ################################################################################
  #
  ################################################################################
  proc removeSeek {line} {
    global ::fics::seeklist
    foreach l $line {

      if { $l == "<sr>" } {continue}

      # remove seek from seeklist
      for {set i 0} {$i < [llength $seeklist]} {incr i} {
        array set a [lindex $seeklist $i]
        if {$a(index) == $l} {
          set seeklist [lreplace $seeklist $i $i]
          break
        }
      }

      # remove seek from graph
      if { $::fics::graphon } {
        for {set idx 0} { $idx < [llength $::fics::soughtlist]} { incr idx } {
          array set g [lindex $::fics::soughtlist $idx]
          set num $g(game)
          if { $num == $l } {
            .fics.f.top.foffers.c delete game_$idx
            break
          }
        }
      }

    }
  }
  ################################################################################
  #
  ################################################################################
  proc parseStyle12 {line} {
    set color [lindex $line 9]
    set gameNumber [lindex $line 16]
    set white [lindex $line 17]
    set black [lindex $line 18]
    set relation [lindex $line 19]
    set initialTime [lindex $line 20]
    set increment [lindex $line 21]
    set whiteMaterial [lindex $line 22]
    set blackMaterial [lindex $line 23]
    set whiteRemainingTime  [lindex $line 24]
    set blackRemainingTime  [lindex $line 25]
    set moveNumber [lindex $line 26]
    set verbose_move [lindex $line 27]
    set moveTime [lindex $line 28]
    set moveSan [lindex $line 29]

    set ::fics::playing $relation
    set ::fics::observedGame $gameNumber

    ::gameclock::setSec 1 [ expr 0 - $whiteRemainingTime ]
    ::gameclock::setSec 2 [ expr 0 - $blackRemainingTime ]
    if {$color == "W"} {
      ::gameclock::start 1
      ::gameclock::stop 2
    } else {
      ::gameclock::start 2
      ::gameclock::stop 1
    }

    set fen ""
    for {set i 1} {$i <=8} { incr i} {
      set l [lindex $line $i]
      set count 0

      for { set col 0 } { $col < 8 } { incr col } {
        set c [string index $l $col]
        if { $c == "-"} {
          incr count
        } else {
          if {$count != 0} {
            set fen "$fen$count"
            set count 0
          }
          set fen "$fen$c"
        }
      }

      if {$count != 0} { set fen "$fen$count" }
      if {$i != 8} { set fen "$fen/" }
    }

    set fen "$fen [string tolower $color]"
    set f [lindex $line 10]

    # en passant
    if { $f == "-1" || $verbose_move == "none"} {
      set enpassant "-"
    } else {
      set enpassant "-"
      set conv "abcdefgh"
      set fl [string index $conv $f]
      if {$color == "W"} {
        if { [ string index [lindex $line 4] [expr $f - 1]] == "P" || [ string index [lindex $line 4] [expr $f + 1]] == "P" } {
          set enpassant "${fl}6"
        }
      } else {
        if { [ string index [lindex $line 5] [expr $f - 1]] == "p" || [ string index [lindex $line 5] [expr $f + 1]] == "p" } {
          set enpassant "${fl}3"
        }
      }
    }

    set castle ""
    if {[lindex $line 11] == "1"} {set castle "${castle}K"}
    if {[lindex $line 12] == "1"} {set castle "${castle}Q"}
    if {[lindex $line 13] == "1"} {set castle "${castle}k"}
    if {[lindex $line 14] == "1"} {set castle "${castle}q"}
    if {$castle == ""} {set castle "-"}

    set fen "$fen $castle $enpassant [lindex $line 15] $moveNumber"

    # try to play the move and check if fen corresponds. If not this means the position needs to be set up.
    if {$moveSan != "none" && $::fics::playing != -1} {
      # first check side's coherency
      if { ([sc_pos side] == "white" && $color == "B") || ([sc_pos side] == "black" && $color == "W") } {
        # puts "sc_move addSan $moveSan"
        ::utils::sound::PlaySound sound_move
        ::utils::sound::AnnounceNewMove $moveSan
        if { [catch { sc_move addSan $moveSan } err ] } {
          puts "error $err"
        } else {
          if { $::novag::connected } {
            set m $verbose_move
            if { [string index $m 1] == "/" } { set m [string range $m 2 end] }
            set m [string map { "-" "" "=" "" } $m]
            ::novag::addMove $m
          }
          updateBoard -pgn -animate
        }
      }
    }

    if {$fen != [sc_pos fen]} {
      puts "Debug fen \n$fen\n[sc_pos fen]"
      # Create a game in an opened base
      if {![sc_base inUse]} {
        sc_base switch clipbase
      }
      sc_game new

      set ::fics::waitForRating "wait"
      writechan "finger $white /s"
      vwaitTimed ::fics::waitForRating 2000 "nowarn"
      if {$::fics::waitForRating == "wait"} { set ::fics::waitForRating "0" }
      sc_game tags set -white $white
      sc_game tags set -whiteElo $::fics::waitForRating

      set ::fics::waitForRating "wait"
      writechan "finger $black /s"
      vwaitTimed ::fics::waitForRating 2000 "nowarn"
      if {$::fics::waitForRating == "wait"} { set ::fics::waitForRating "0" }
      sc_game tags set -black $black
      sc_game tags set -blackElo $::fics::waitForRating

      set ::fics::waitForRating ""

      sc_game tags set -event "FICS game $gameNumber $initialTime/$increment"

      # try to get first moves of game
      writechan "moves $gameNumber"
      set ::fics::waitForMoves $fen
      vwaitTimed ::fics::waitForMoves 2000 "nowarn"
      set ::fics::waitForMoves ""

      # Did not manage to reconstruct the game, just set its position
      if {$fen != [sc_pos fen]} {
        sc_game startBoard $fen
      }
      updateBoard -pgn -animate
    }
  }
  ################################################################################
  #
  ################################################################################
  proc parseSeek {line} {
    array set seekelt {}
    set seekelt(index) [lindex $line 1]
    foreach m [split $line] {
      if {[string match "w=*" $m]} { set seekelt(name_from) [string range $m 2 end] ; continue }
      if {[string match "ti=*" $m]} { set seekelt(titles) [string range $m 3 end] ; continue }
      if {[string match "rt=*" $m]} { set seekelt(rating) [string range $m 3 end] ; continue }
      if {[string match "t=*" $m]} { set seekelt(time) [string range $m 2 end] ; continue }
      if {[string match "i=*" $m]} { set seekelt(increment) [string range $m 2 end] ; continue }
      if {[string match "r=*" $m]} { set seekelt(rated) [string range $m 2 end] ; continue }
      if {[string match "tp=*" $m]} { set seekelt(type) [string range $m 3 end] ; continue }
      if {[string match "c=*" $m]} { set seekelt(color) [string range $m 2 end] ; continue }
      if {[string match "rr=*" $m]} { set seekelt(rating_range) [string range $m 3 end] ; continue }
      if {[string match "a=*" $m]} { set seekelt(automatic) [string range $m 2 end] ; continue }
      if {[string match "f=*" $m]} { set seekelt(formula_checked) [string range $m 2 end] ; continue }
    }
    lappend ::fics::seeklist [array get seekelt]
  }
  ################################################################################
  #
  ################################################################################
  proc updateOffers { } {
    set ::fics::sought 1
    set ::fics::soughtlist {}
    writechan "sought"
    vwaitTimed ::fics::sought 5000 "nowarn"
    after 3000 ::fics::updateOffers
  }
  ################################################################################
  #
  ################################################################################
  proc configureCanvas {} {
    set w .fics.f.top.foffers
    set ::fics::height [winfo height $w]
    set ::fics::width [winfo width $w]
    $w.c configure -width $::fics::width -height $::fics::height
    displayOffers
  }
  ################################################################################
  #
  ################################################################################
  proc displayOffers { } {
    global ::fics::width ::fics::height ::fics::off \
        ::fics::offers_minelo ::fics::offers_maxelo ::fics::offers_mintime ::fics::offers_maxtime
    after cancel ::fics::updateOffers

    set w .fics.f.top.foffers
    set size 5
    set idx 0

    #first erase the canvas
    foreach id [ $w.c find all] { $w.c delete $id }

    # draw scales
    $w.c create line $off [expr $height - $off ] $width [expr $height - $off] -fill blue
    $w.c create line $off 0 $off [expr $height - $off] -fill blue
    $w.c create text 1 1 -fill black -anchor nw -text ELO
    $w.c create text [expr $width - 1 ] [expr $height - 1 ] -fill black -anchor se -text [tr Time]

    # draw time markers at 5', 15'
    set x [ expr $off + 5 * ($width - $off) / ($offers_maxtime - $offers_mintime)]
    $w.c create line $x 0 $x [expr $height - $off] -fill red
    set x [ expr $off + 15 * ($width - $off) / ($offers_maxtime - $offers_mintime)]
    $w.c create line $x 0 $x [expr $height - $off] -fill red

    foreach g $::fics::soughtlist {
      array set l $g
      set fillcolor green
      # if the time is too large, put it in red
      set tt [expr $l(time_init) + $l(time_inc) * 2 / 3 ]
      if { $tt > $offers_maxtime } {
        set tt $offers_maxtime
        set fillcolor red
      }
      # if a computer, put it in blue
      if { [string match "*(C)" $l(name)] } {
        set fillcolor blue
      }
      # if player without ELO, in gray
      if { [string match "Guest*" $l(name)] } {
        set fillcolor gray
      }

      set x [ expr $off + $tt * ($width - $off) / ($offers_maxtime - $offers_mintime)]
      set y [ expr $height - $off - ( $l(elo) - $offers_minelo ) * ($height - $off) / ($offers_maxelo - $offers_minelo)]
      if { $l(rated) == "rated" } {
        set object "oval"
      } else {
        set object "rectangle"
      }
      $w.c create $object [expr $x - $size ] [expr $y - $size ] [expr $x + $size ] [expr $y + $size ] -tag game_$idx -fill $fillcolor

      $w.c bind game_$idx <Enter> "::fics::setOfferStatus $idx %x %y"
      $w.c bind game_$idx <Leave> "::fics::setOfferStatus -1 %x %y"
      $w.c bind game_$idx <ButtonPress> "::fics::getOffersGame $idx"
      incr idx
    }

  }
  ################################################################################
  # Play the selected game
  ################################################################################
  proc getOffersGame { idx } {
    array set ga [lindex $::fics::soughtlist $idx]
    catch { writechan "play $ga(game)" }
  }
  ################################################################################
  #
  ################################################################################
  proc setOfferStatus { idx x y } {
    global ::fics::height ::fics::width

    set w .fics.f.top.foffers
    if { $idx != -1 } {
      set gl [lindex $::fics::soughtlist $idx]
      if { $gl == "" } { return }
      array set l [lindex $::fics::soughtlist $idx]
      set m "$l(game) $l(name)($l(elo))\n$l(time_init)/$l(time_inc) $l(rated)\n$l(color) $l(start)"

      if {$y < [expr $height / 2]} {
        set anchor "n"
      } else {
        set anchor "s"
      }

      if {$x < [expr $width / 2]} {
        append anchor "w"
      } else {
        append anchor "e"
      }

      $w.c create text $x $y -tags status -text $m -font font_offers -anchor $anchor -width 150
      $w.c raise game_$idx
    } else {
      $w.c delete status
    }
  }
  ################################################################################
  #
  ################################################################################
  proc play {index} {
    writechan "play $index"
    # set ::fics::playing 1
    set ::fics::observedGame $index
  }
  ################################################################################
  #
  ################################################################################
  proc writechan {line {echo "noecho"}} {
    after cancel ::fics::stayConnected
    if {[eof $::fics::sockchan]} {
      tk_messageBox -title "FICS" -icon error -type ok -message "Network error writing channel"
      ::fics::close "error"
      return
    }
    puts $::fics::sockchan $line
    if {$echo != "noecho"} {
      updateConsole "->>$line"
    }
    after 2700000 ::fics::stayConnected
  }
  ################################################################################
  # FICS seems to close connexion after 1 hr idle. So send a dummy command
  # every 45 minutes
  ################################################################################
  proc stayConnected {} {
    catch {
      writechan "date" "noecho"
      after 2700000 ::fics::stayConnected
    }
  }
  ################################################################################
  #   returns 1 if the player is allowed to enter a move (either playing or using puzzlebot)
  ################################################################################
  proc playerCanMove {} {

    if { ! [winfo exists .fics] } { return 1 }

    if { [sc_game info white] == "puzzlebot" && [sc_game info white] == "puzzlebot" } {
      return 1
    }

    if { $::fics::playing == 1 } { return 1 }

    puts "DEBUG : playerCanMove returned 0"
    return 0
  }
  ################################################################################
  # Handle mouse button 1 on console : observe the selected game
  # or handle commands (like <next>)
  ################################################################################
  proc consoleClick { x y win } {
    set idx [ $win index @$x,$y ]
    if { [ scan $idx "%d.%d" l c ] != 2 } {
      # should never happen
      return
    }
    set elt [$win get $l.0 $l.end]

    if { $elt ==  "Click or type \[next\] to see next page." } {
      writechan "next"
      return
    }

    set found 0

    if { [llength $elt] > 4} {
      # validate format
      set game [lindex $elt 0]
      set elow [lindex $elt 1]
      set white [lindex $elt 2]
      set elob [lindex $elt 3]
      set black [lindex $elt 4]

      if { [ scan $game "%d" tmp ] != 1 || \
            ( [ scan $elow "%d" tmp ] != 1 && $elow != "++++" ) || \
            ( [ scan $elob "%d" tmp ] != 1 && $elob != "++++" ) } {
      } else  {
        set found 1
      }
    }

    # Second chance : try to parse "tell relay listgames" (:104 GMxxxx GMyyyyy * B22)
    if { [llength $elt] == 5 && ! $found } {
      if { [ scan [lindex $elt 0] ":%d" game ] == 1 } {
        set white [lindex $elt 1]
        set black [lindex $elt 2]
        set elow "-"
        set elob "-"
        set found 1
      }
    }

    if { ! $found } {
      puts "$elt not a valid game"
      return
    }

    # warn the user before observing a game because it can interfere with a game played or
    # other that would be disturbed by observing a game
    set ans [tk_messageBox -title "Observe game" -icon question -type yesno \
        -message "[ ::tr FICSObserveconfirm ] $game\n$white ($elow) - $black ($elob)  ?" ]
    if { $ans == yes } {
      writechan "unobserve" "echo"
      writechan "observe $game" "echo"
    }

  }
  ################################################################################
  # updates the offers view if it is visible
  ################################################################################
  proc tabchanged {} {
    set nb .fics.f.top
    set w .fics.f.top.foffers

    if { [ $nb select ] == $w } {
      updateOffers
      set ::fics::graphon 1
    } else  {
      after cancel ::fics::updateOffers
      set ::fics::graphon 0
    }
  }
  ################################################################################
  #
  ################################################################################
  proc close { {mode ""} } {
    variable logged
    # stop recursive call
    bind .fics <Destroy> {}

    set ::fics::sought 0
    after cancel ::fics::updateOffers
    after cancel ::fics::stayConnected
    set logged 0

    if {$mode != "error"} {
      writechan "exit"
    }

    set ::fics::playing 0
    set ::fics::observedGame -1
    ::close $::fics::sockchan
    if { ! $::windowsOS } { catch { exec -- kill -s INT [ $::fics::timeseal_pid ] }  }
    destroy .fics
    # necessary on windows
    ::docking::cleanup .fics
  }
}
################################################################################
# FICS images
# use PNG images if supported, GIF otherwise
################################################################################
if { $::png_image_support } {
  image create photo FICSrelayedgames -format png -data {
    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
    AOOs2H7xibo+AAAAAElFTkSuQmCC
  }
  image create photo FICSusers -format png -data {
    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
    AAAAAElFTkSuQmCC
  }
  image create photo FICSexit -format png -data {
    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
  }
  image create photo FICSdraw -format png -data {
    iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABmJLR0QA/wD/AP+gvaeTAAAA
    CXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH2QMEFDo5UKRXHQAAASBJREFUWMPtlN1KAzEQ
    hc/J9qbiHxRfwTdS8AVEfCQFrwRR9Im871K6P92lmyzZdMaLdVEEy1LqlTkQMhBIPk5mDhAV
    FfXfxW2HRVGcWGsnTdNwsViwLEtTFAW990zTlNZas1wuuV6vmec5sywzq9WKVVWxqioCsADm
    OwGoqqnr+vTp5TF3roVzrl/tV926Ft77Xy9/fX47B/C+DWAyxqab61uQHMigfQGCAAnDYTcg
    CZK4vLoY9QWjAFQE1lmICkIICCGgCx5d1+Ho8Bgb2UBFAABJMsFsdja6B8YBqEJUIKJQVfQe
    ECQgIr0TxgAAzOe+d4Dp9KB/6EcHfbedNEiSZP8A9w93OzXhn43hMGr7GMMYRDGIYhDFIIpB
    FBUV9QEJxZl+R43kHQAAAABJRU5ErkJggg==
  }
  image create photo FICSabort -format png -data {
    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
  }
  image create photo FICSresign -format png -data {
    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
    AAAAAElFTkSuQmCC
  }
  image create photo FICSsearch -format png -data {
    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
  }
  image create photo FICStakeback1 -format png -data {
    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
  }
  image create photo FICStakeback2 -format png -data {
    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
    iwJ5hqQAAAAASUVORK5CYII=
  }
  image create photo FICSunobserve -format png -data {
    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
  }
  image create photo FICSprofile -format png -data {
    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
    AElFTkSuQmCC
  }
  image create photo FICSsilence -format png -data {
    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
    RU5ErkJggg==
  }
} else  {
  ################################################################################
  #   GIF
  ################################################################################
  image create photo FICSrelayedgames -format gif -data {
    R0lGODlhIAAgAOf/AAABBAIFAQkADwkGDA4FExUGJxIOHBULJRYQGRkLLx8KJxYRIx0MLCEK
    LRwOJzEAPxcVGDIDRyATLCMQNiISMhkaIR8VMykPOCEUOCUSOCYSOSoQOSQXMSkWPCoWPSga
    NDoMUDEWPy0ZQC8bQiciNTcYSVcAdDQdS10AfjEiSDcfTjQmNjUjRDsgSkIcXD4jTTcrQDkq
    RkImXD4rTUIpTT8qUkctUjw3QTw5R0MxX0kwVUwvW0sxYk4xXUI5VEc0YlIxZFUwalI0YE44
    V1ovbFA5Y1o8aVRAZFs9amw1lWZIdWtIfXs7oGBWZ2dPe31Bq2pcdG9agHRYgIZIpqQt63pa
    iXhchKA17Kcx74FXkI5IxHxci5dFzZZE2qk0/64z+qU78pNNybE3/q86931nmn1ri5lSz65D
    7IFrkp5Q3bJC9H9xipxV0q1H9IFzjKBW27VL86lV36tT5bRK/7RO7aBd4LtM/q1Z46hd47tQ
    +bVU+K5e36Vi5atf5a1d7Ip+nblU/7dW+qli4J9yrbRc7q1h6LNf97Bk67Ji8bxb/5KDnb5c
    /7di+7Zp47Vo779h/btm8b1k96CCrLho+Ltm/8Fk/7hv4bVw57du7sNl/5WOpsFo+7pt9cBr
    9r9q/71s/b5w66COosVr/75x+bV47cJx/8hu/8B65bl/38hy/q6MvsJ4+cp0/7997cZ4/7GS
    vch6/8V/+M16/sKA/rmL4ch+/7SWwMqA/8WG78uB/8iF9seE/8qE/dCB/cqH+MyG/9KD/7mb
    xtOE/86H/8mL/8+I/82K/MuM/72eydSJ/s+M/s6P+NGN/9aL/82S89OQ9NeM/9KP/82S/8qW
    9dOQ/9iR/dOU/tCY8sSl0NSV/8+Y/9aW/9Ga/9eX/9Kb/9eb/tSg89ae+dic/9md/9Sg/9Ck
    /9uf/9ai/9ej/9On+Nuj/tWp+din/92l/96m/9Wt9tqp/9ms/dys996q/eCs/9+v+tyw/96x
    /920/uOy/uC3/+W4/OS//+nB/efG/////yH5BAEKAP8ALAAAAAAgACAAAAj+AP8JHEiwoMGD
    CBMqXJgwDaFNrmbdklXK0B2GCOWUUmZtmzRlxKRt83jLEEaCn6xpi1bKUSE8e/Dw+URsm7Vb
    bzCmufUtWqpDhSKlkiWLlac7eDoR4xbt0MI+1rgRu3RIFkhlx6BBi6bsFqM9u6x1G5WwzjZt
    2y4Z2jWMGCs4beJ6Esar2aZL1qx944RwGLdvsyAJuyXs0ZUvcwCJudJmlrBhky5x09aNj0FM
    4rhxsyRrWDE9VB65WgSoVKkxZ27t6oWJFzlywwxaEzcO1yi2m8CU8qSljJspdlyN0ZOMl6hT
    3Mipu0SQFLtx51rJEtZLzyJZSZpoCgUlSKZSalz+CWtGShu5ccQIKpvXjlyraMSqj5Yw5I+i
    Iwi4DLNjapgyWc7Aww45BH0TDzzc6BINNLzoccsiBkBwAw4VAMCFNICkUo0ytSwDTzv2EMRO
    OfFwk0w01UTDyC3KyADAAxEIsMAjwyxySzTW8HLNP+3QQ1A+ApGzjDbVfCNKKtEY4oIJKIAQ
    hjS1eNKRNcOEI1CIB13zFznclCKNNHg8wQQbwmgjSjGvifOMOgulI04757QzDiRE1CBEDzrw
    YMY37pyjXDoYhdNOO/Owk0MWqrxiyyuDzOBMPYN+8w5G8rhjjz3qpBCFLdhgE4wkFKCiDz3w
    rHPSP/Too888LyBRxhqCbpQRhQe08JOPPKcKhI8+/OQghBVVVGHFEh1c4w+WuQrUDxIvKOGs
    EkKwkM4+yRbkxAU8CKFtCTNUaxAZDZygwgsqbFCEtwY5EIIIIYRQQBToFsRBBx7U60C8BcXQ
    AAYYTMABvgThUIAGFCQAA8ADkXAABRQccDDCAg1AAAECQBxvQAA7
  }
  image create photo FICSusers -format gif -data {
    R0lGODlhIAAgAOfqAAIAAAEBAQIBAQIBAgMCAgMDAwQDAwMEBAUEBAUGBgcGBggGBgYHBwkG
    BggHBwkHBwcICAkICAoICAgJCQoJCQsJCQkKCgwJCQoKCgsKCgwKCgoLCwsLCwwLCw0LCwsM
    DAoNDQ0MDA4MDAwNDQ0NDQ4NDQ8NDQ0ODg4ODg8ODhAODg4PDw8PDxAPDxEPDxAQEBEQEBIQ
    EBARERMQEBIREBIRERMRERESEhMSEhITExYSEhQTExUTExUUFBYUFBQVFRUVFRQWFhcVFRUW
    FhcWFhgWFhcXFxgXGBkXFxcYGBkYGBgZGRoZGRsZGRsaGh0bGx0cHB8eHh4fHx8fHyEfHyIg
    ICEhISEiIiMiIiIjIyQjIyUjIyQkJCUkJCYkJCckJCkkJCUmJicmJignJyknJycoKCgoKCgp
    KSkpKSopKSspKSkqKioqKisqKiwqKiorKysrKywrKy0rKyssLCwsLC4sLCwtLS4tLS4uLi8u
    LjAuLi4vLy8vLzAvLjAvLzEvLy8wMDAwMDAxMTMwMDExMTIxMTEyMjIyMjMyMjIzMzM0NDQ0
    NDU1NTU2NjY2NjY3NjU4ODc4ODg4ODk4ODk5OTk6Ojo6Ojs7Oz07Ozw8PD49PT89PT0+Pj4+
    PkA/P0A/QEBBQUFBQUJBQUFCQkRBQUNCQkZFRUZGRkdGRkhGRkhISElISEpISEhJSUxJSUxK
    SkpLS0tLS0xMTE1MTE5MTExNTU9MTE1OTlFQUFJRUVJSUlRTUlRTU1RUVFVUVFlVVVhXV1xY
    WFxbWl1dXV1eXl9eXmBeXmFhYWRiYmVjY2NkZGZlZGhkZGdmZmhmZmdnZ25vb3Bvb29wcHFw
    cHFycnJycnZ3d3d4eIB/f4KAgIOAgIKCgoWEg4aEhoWGhoeHh4mHh4yNjY2OjZiWlpqYmJ2b
    nZydnZ+dnausrLGxsf//////////////////////////////////////////////////////
    /////////////////////////////////yH5BAEKAP8ALAAAAAAgACAAAAj+AP8JHEiwoMGD
    CBMqXMiwocOHECNKnEhx4rFqwR5ezJiQmblv4KzZYugRpMiDuLSx4jLq1yaCpky5IphyZcuX
    BmeVYmNoDxxIr/7J6pUOXTZdtwTq5OkTqEFNggIhGnSnESlauc49UyVtHDBZ/6BKpWrV4CQy
    fO7keRPoUipqycwQQtOqDa1/Z9OubWuQURk1adZ4gSMJVaw/ihgxQiQI1D+/gAUT7mvmipgt
    WvT8E0Xpz6FEhQrtwfS48uXMCK1QuSIlCph/nersAZRHDx46lQSqZu364JRhknI84WTJiqYy
    duLIgTOHTKJ/v4MPL07wyC5sz5DoCOIGmbJIccj+mDkzhkwWR9ezb++ujBOLf6i6XYtUAcaQ
    HhpARCrmJ0uYLl5kIQcv89V3X36RNLNMH9M8UkAAIuAgwww1cABAA3oIUYUVVzhBhoMQSkih
    hQ14AssXBEjgQgsqrFCCCSeU0MIPziwBRROLvLGDCCu2+GKMCiBwgwURhLABBRhkQKQLDmzi
    DTE1OAGEIMZEgwUMHSRJpAQUTOCAARVokIEGHVxwgQ0DfFKOOKfg4IMRSahQRCjbQHNECmZ2
    QAEFFWQQwUFEkBNOJhss4OYPO+wQAwMmiMKNMDSgwFAIq/giQAIq1FCDDC7A4OkLIRgAQy1e
    4MBQCX4okQELKbTqYwlLJZAQQggK8HBADAypwIQCIYgwQgfAevBBBsRqcKQDEaTAEAkPWMDl
    nl468EAEEChgrQIOIPABQw8Q6+23xWogrrgd/FnRueimu1BAADs=
  }
  image create photo FICSexit -format gif -data {
    R0lGODlhIAAgAOfkAKQBAKkAAKUEAKUEBaYGAKcJB6gMB6oOCM0AAM4ABKsRCc8ABNAAD6UY
    Fa4XFK4XGtMHEcERD8kMFK8ZG7AaHLMdHrIeI7QfJMgdHNIcGsohHdMeItQgIlZXVVZYVVdZ
    Vs4mJlhaV1lbWFpcWVtdWtEqL1xeW15gXdUuLF9hXmBiX9cwLGJkYWNlYtM2MtkzNGVmZNo0
    NWZnZdU4NGdoZtU5OdY6OmhqZ8tAPNc7O2lraIdfXdg8PGpsaWttats/Pto/Q21vbG5wbctJ
    RW9xbt1BRXByb9lGRXFzcNtHRnN1cnR2c3V3dNxKTc1ST3Z4dd5LTs1TVXd5ds5UVnh6d3l7
    eNxRUNBWV3p8ecxZV95SUd9TUXx+e31/fN9UWH6AfX+Bft1ZWYCCf95aWoGDgIKEgYOFgoSG
    g4WHhIaIhd5iY4eJhoiKh4mLiOJlZoqMiYuNiuRnZ4yOi42PjI6QjY+RjpCSj5GTkJKUkZ6Q
    i+FzcpOVkpSWk5WXlJaYlZeZlpial5qbmJudmZyem52fnJ6gneiAgZ+hnqCin+aFg6GjoKKk
    oaOloqSmo6WnpMaal6aopaeppueOjqiqp6mrqOmQkKutqqyuq62vrM+in+uYlbCyrrGzr+id
    nrO1sumen+yhobe5tu2iori6t9qsqrm7uOqmpLq8ubu9uuGtrLy+u72/vL7BvcDCvsHDv8LE
    wcPFwu6ytMTGw8XHxMbIxcjKx8nLyMrMycvOys3Py87QzNDSz9LU0dPV0tTW0+vNy9XX1NbY
    1dnb19rc2dvd2tze293f3N7g3eDi3+Hk4OPl4eTm4+Xn5Obo5efp5vLk5ejq5/Pm5unr6PTn
    5+rs6evu6u3v6+7w7e/x7vDy7/Hz8PL08fP18vT38/b49Pf59vj69/n7+Pr8+fv9+v//////
    ////////////////////////////////////////////////////////////////////////
    /////////////////////////////////yH5BAEKAP8ALAAAAAAgACAAAAj+AP8JHEiwoMGD
    BUd0WMiwoYcQKW4YYSJFyhIhTBAK9OBJjpkvUpD4oMHiBIkUOoRt48ZyG7SMGj2EorNGDBYm
    RGjA2CmDSbRv38CB+8YtjcZ/HVTlkXMGTJUnNHTCoFHmZ7ir4r7hOdpBVqA8Z/J8qcIESVQl
    bJqFE8c23Lc/XG0F+mqGzBcqIWlUkTNt7Thx4cAF4rqLUaA9a/LkAYOFChMsdvqK+xsYrsYO
    u+Z+ZWMmD5XGXwJJpjwNkcAAAgxitjQ3D5zFYrmQ2XPN77i/gwVkeaB6V6RGreGkySMFjOJn
    fymDy3MgSqwJqn/9nmsHbJ5IgeQEwuYX8LQGUz7+mXIgoHx5pLsgOWpNJ0+aS544OUJ+e9yz
    C1Mquen0SZQoUJ2k5sEvlGA3Vx1t5EFDHqio8oxf90WRSBhWeDHGGGFsUUkA/3iQHiTA5bFH
    Hm+gkYcrjmDD1jMVDKHHEUUcAYUVUECRhCSpdUAgiHPh8Roeu0yyR18s4uBGDS/wwMMPNdhw
    BBCJcOhhJJM4ksdcc9DBSiihTTPOLw4AUQMHHGSQQQIIpMlAHDkSaMkkhn1VyipcoLFINlml
    ckAJKKSJAJp+hiGgb5RYqdkpYl2ZTWDgpOJACS6gmQCgCUDRJiWXYGLgiGwkOIlk2SyTyQAY
    gICACzUcoeoRUhJaZWv+deTBhh2RQAPONNw0I8wjDmDwQg0DDCBAsG1a8gglkMRphxztTUKL
    rdo0Q8wuOwwQgQsDGOQhJZYgm4dhIs4FySnPTKMNNcf08sU/A0iQbUGYUUIJJpcYqFkejriS
    zDfmSnOMGQIJ29sk8k4SSR6XLHIlJ7w0I4022WAzDTRnEGYspphgEkgdmOwiTDTRNCNyyMl0
    QZi8l5zSSB6c3NKLMDAXc8wxxhxTjDBLEIaJKpsE4oksufDSSzDCBOOLMMAk7UsvPhCGSh6l
    sEJLLbdUfQsuuNiCNda32NICV3OuskorrrzyCixop632K62YwFVDHZgwAgl0102CCXaPkMIG
    UXz3jVBAADs=
  }
  image create photo FICSdraw -format gif -data {
    R0lGODlhIAAgAKUpAFRXU1pdWWJmYWtvanR4c32Ae4aJhI+SjZibldnb1trc1t7g297g3OLj
    3+Lk4OPk4ePl4eTl4uXm4+bn5Ofo5enq6Ovs6e3t6/T08/T18/X19PX29Pb29ff39vf49vf4
    9/j49/j5+Pn5+Pr6+fr6+vr7+vz8/P39/f7+/v//////////////////////////////////
    /////////////////////////////////////////////////////////yH5BAEKAD8ALAAA
    AAAgACAAAAadwJ9wSCwaj8ikcslsOp/QqHRKrVqvVMTBUCAMBAGAeAyIIj6hEOjjAYVGJdMJ
    VYYiOBcL5bFITCANDRIhdU8IGhYVEw4MChEREBAUhGYYGRqYGhsdICIkJyeFTlpcXmBkY1iq
    q6xLpF1fYaiiTWdpa21vcXO0THd5e31/gYO9roiKjI6QkpR2lpmanJ6gxkqvprKordzd3t/g
    4eJNQQA7
  }
  image create photo FICSabort -format gif -data {
    R0lGODlhIAAgAOf/AHQAAXkCAH4AAYIAAIMCAIgAAYkAAosAAIwAAIsAA5sHB5wKCJwKD7gA
    ALkAAL8AALsCAcEAAMIAAJ8PEcMAAMIABcQAAMMABrwFAsQAB8YBAKAREsUBCJkVFaESE8wA
    AscEAKETGccECZsYF6IUGr4LBKMWFMgHAJwaGLQPFqQYG8oLAaUZHLcTGMERD8kMFKgcHqke
    H8IUF7sZFMMWEaofJc0TDsQYGc0UFsccG88YH9EaGckfHdQfHMsjJdYiHcYpKdcjJMgqKtgl
    K8otLNknJtsoJ80wLcwwM9wqKNUuLM0xNN0rKc8yNd4tKdYwMuAuKtA0NtgxM9E1N9I2N9kz
    NNo0NdQ3ONU5OdY6Otc7O904PeY1Ndg8POA6Oec3Nto9Peg4N+k5N9s/Pto/Q9xAP9xARN1B
    QOo7Pt1BRes8P99CQN5CRtlGRdtHRuhCP+FFSNxIR+lDQN1JSOpEQepERt5KSOVIRetGR+ZJ
    S+xHSOFNSuBNUPRFRe5ISeJOS+lLSOFOUfZGRuJPUuRQU+tOT/5GSv9HRexPUPBSU/tNUfZQ
    T/hRUPlSUexYWedbXu5ZWuRgXvZYWOteW/ZZXuxfXPhaWeZiYO5hY+lkYuhkaPpdYfBkZexn
    ZfdiYu5oZvNmZ+9pZ/pkZPBqaO9qbfZpav5nZ/hqa/Jtb+5wb/lrbPFzcvZxc/5vcPlyb+94
    evV2dfB5e/Z3dvl5ePN8ffZ/gPeAgfODgPOEh/mCg/WFgvuDhPaGg/yEhfKKiviIi/COjPWM
    jP+IifqKjfaNjfeOjvGRlPiPj/mQkP+OjPaUkfmWk/yZlvuZnPedne6pp++qqO+ytO23t/O2
    uPC6uve6vPK9vPW/vvbAv/LDwPLFyPbHxPnMz/XP0PbQ0ffR0ubZ2uja2+rd3ebh3+Pl4e3g
    4eTm4/vc2+rk4+/i4+Xn5Obo5efp5uzn5fLk5ejq5+7o5+nr6Ors6e/q6Ovu6u3v6/Pt7O7w
    7fTu7e/x7vXv7vDy7/Hz8PL08fP18v///yH5BAEKAP8ALAAAAAAgACAAAAj+AP8JHEiwgMGD
    CA8SXMhwYAdfyiJKLFYsmC9dMA403Pivwy1NZEKS0dKlZBctg26RKMBx4YiPbWK26UJmpkkt
    fGKZYNnyXwhcmkqGlBmTZkmUq0z0fJiJaEwyRkce7RIolQeOJGA6lUmmzJg2JE9m4UNqQ0MS
    QNuE5JNHEZw4amV2wWOoSxYsVP5omrAQxa1IWsqovWMJmiQ4XMnIGQWsT5YsVK7wycRgYAFk
    kYje8TRuXTRJZ9JAvYNqnDljfqi0OUKETyeeBIw9HiromTly5KQtEuzHFTpz68QdskIFy5El
    oXgmQGYy5BlJ0eDBa0dNUqFZ6NjBE+cJDhUqUaj+LCFFQGABZVBLpukCxxK1d+/kUZsFL967
    cqrOtFnSBkkUIsmZJ5tNUXlyjTz30HNPPvak40pMS0QoISfl/XMeFmF1YVMbp1yDz4L5tCOL
    HUtMMUUUSBBBBBCQVFhAMVZkmAVNWVDyyz786MNPN61g4QMNNDzwQAlCypGAQAQoc8WMJ9nV
    xSTE4KOPP/1Uic0iJVAgpJAOVPCFcr5Y8dgVW2hxxSPG6OgPPufoyE82m0iwZQMQNPCFi8VU
    UcUVV1hxRSXMqKnPLqZo448++WhTCpEP1NlAGDwV4MsTVihxhRaVOLNPP/roY0sQNqjCjT/8
    5JMNKxg0oGoDXLiIyyDzVljxRBa8VLPPobsE8YAFHMjCTT/8iJOMC6s6AMWR/xwQAyx8KKHE
    E1vcUs08wwxxgQUPUMDBLd+4g8wNDqjqQhFDVPgPATGscsYONmhwAirJKGEBBRoMScELvjCT
    Q7iqFpEDsgMRsEEiP2gAwsE4zKtltg0MSQO/DfjL00ICIxIECAbPm+0DGDzgwAUQ8OtAEj5o
    tNEBEwBSsMbYPhCBkKuqykULE28kwAR5/EDvlg/ErOrIM5jcUwAL1LEDzw17rOoMXKQgQE8E
    AcAAIIDgQYccb7whhhhffAGF01AvBAABCRBAQAFnp412AGG37fbbbgcEADs=
  }
  image create photo FICSresign -format gif -data {
    R0lGODlhIAAgAOf/AAACAAcKBg8JBxMSCRgRCRwUBSYhCywgDTcwFjYwGz8uGEUyFks3Fj07
    L1M4DFE4Hk46Hk87GkA/OFo9C0tCIlc9HUhCLFk/JVZFHF9DHV5DI0pMSmdKJGxJHH1LCW1P
    I3dNGHdQCXNOH2BVL3VRJ3hSHHRVKYhUCnpVK35XGoJVGmpeMX1XJ4VXFXdZMoNcLI1fJIpi
    K4pjMpJjKJdkIJBnMaNoG7dkAJhtMKpqFr9lBrlmEcFnAJpxOcdlAKJwNaRyMMBrC7VuHXx7
    c89mBLttFqF1OLZxFr5vDsxqBK50JrRzIKd1OtRqAMtuBsVyBLpzI6Z6PNxrAr92GdhuALZ2
    Mqd7Q6qAJLN5Nt5tBZuDS+FuAMx6AK1+QcF9GcV7GZ+GSMp7EORxALt7Pr58MeF0ANR7B+B0
    DK6CSs18Htl6C+R3ALeCQNx3Gd18AK2HTeJ7AMqAML+GPuZ+B96DA7aJUaGSY7KMVdOGHeWD
    CtuGFt6JCp+YbLKVSc6KP8mMRemGEcePP7mSV7aTXeaFJtGNSOuNBd6PHuiMFeiMK+qTCumS
    GeeRJNuSS9KXTuuZEemYHuOeIOqZL9qbU+uWQsCpYeufJO2gGuiaUe2fQO2mHumhTu2mKd2k
    YOumMumpKtWwQvCpItiqaO+tJO2lXNStdu6pRtOzYPOxKfCwQ++sXfG1K/KzNPK0Pe+uad2+
    Tey3Udq4f/O8MfK3cua7fvTAPvG+U/TDN/K8Z/DCTvXCXvLCa/XKPOXEkfLAhfXLRfXLcvjT
    QvbJhfPJkvfTU/nUTPfQivfUf/rbUvTSnvjdafnXiPzeXPreY/jVmvTdfvjYj/ndhfnamPjd
    jPjYqvjbn/nflPLduffgovjeqvzncfTnkvrpefrof/zdtfjhtvvsdPnvi/vlwPztlProtffr
    vfvvoPvoyvnrxPz0lv7vrfr1pP7zqvzwz//u1fz2ufz5rfr5tP7w3P3z2P32zfr7vP76wvr9
    xP334f78y//72Pr+2f766/z95vz78v///yH5BAEKAP8ALAAAAAAgACAAAAj+AP8JHEiwoMGD
    CA++QfPmzqBBbyImnCgwSp1Y1/Dx8+cP37legqxQNMikC61z6FLOwyfPXbt58oah6TFSoJFA
    yb45++au30Z//PC1+4bOmyOaFI10SjbMWDZ0K/n57IdvHrpkya6JqjHxRydfuJxiI0ePnr59
    aOmVI4fNGK5hnbge/EHGl6Rd0qAts6PuXr599Oy94zNNLy5Tw6rEOGjEVaZDuIDpOpWAXbx6
    fu+xs1BpmjVgnkzNkksQhx9SeRZ5SmULA4Bt6urJjsduAIVo03R5QqSq0YuCP0ipAYTokaYr
    AAQ8G8cOHrt14wII6HPME6RFiFzJKAgEU5s8hiD+WSoAwICycOnSh+OGAAABWJweIQK0aQyL
    gTIKEVqTBxGkTw1sMAIxynDDDTjaNLPCBhJ8Ygkk8yXSCAoD1fDHGmf0BwknWgwBSi3EMCMi
    MsS8MoQWn1yCXR5zTGICfn+cccYcgCzySCuw1HILL8EgU0wwv9SSCyucXAJhHmtg8qJAMvzR
    xBpuILKIeKGsIossO/Jyyy2ysDJKKBACMscam5Aw0AtyJLEFf4goYsklqLByJZZXroJKkfLl
    0cYZjXAwkAlY6CBGG3NI+QgnnIyyCiurNIrKKEVehwiSZfjhp0AmAFEEFWvQ2OaGicY5yiej
    aGLJI9iJOWgVlwoUwxL+PmSRIXE2XmKJJZoUeet1iwCCpBhpzKABQSgooUMTWRCKCCJ7LBHC
    BA5M0IIXkECICBxtlEFFHK0K5AIMOfhQxhqEIqECDVEIUoooXaRwAh2IzDFmFlPQkIFBJNhQ
    RBJilJHEE3jg8YUXXuAhycFPqNGGGFS0AcW9BnEggg03xEquG2ao4YQZXHBBB6Fr9JsEFCJE
    gBAHKuRwAw/ankEoHDCr4QYcZ5QhRRJFtFDBRBqkoDIPSUjRr4wyriFrE0EUAcMDI2nQgQ1H
    VNxEE1RQkYUUVBDBAxJLiLBzTQtUAAIWSxShAw9o6xDEEWTMAIECNQ1EQNgdxAAEG3h38YMc
    CxA8QEDcBQFwwAIPPABBBG8fIADgjDfueEIBAQA7
  }
  image create photo FICSsearch -format gif -data {
    R0lGODlhIAAgAOe6AAAAAAMDAwUFBQcHBwsLCwwMDBQUFBcXFxkZGR0dHR4eHiUlJScmJjEw
    MDo5OVpZWW1tbXR0dH9/f4CAgIKCgoODg4WFhYaGhoeHh4iIiIuKioyMjI+NjY6OjpCQkJGR
    kZKSkpWVlpaVlZaWlpeXl5iYmJmZmZqampqam5uampqbm5ubm5ybnJycnJycnZ2dnZ2enp6e
    n5+fn6Cfn6CgoaGhoaKhoaSkpKempqemp6enp6ioqKmoqampqaqqqqysrKysra2srK2tra2t
    rq6urq+vr7Cvr6+wsLCwsLGysrOzs7S0tLW1tba1tbe2tri3t7e4uLi4ubi5ubq5ubu7u7y7
    u7y8vL2+vr6+vsC/v8PCwsPDw8TDw8TExMXExMbFxcbGxsfGxsjHx8jIyMjIycnIyMnJycrJ
    ycrKysvLy8zLy8zLzMvMzMzMzM3MzM3Nzc3Ozs7Oz8/Q0NDQ0NHR0dLR0dLS0tPS0tTT09TU
    1NXV1dbW19bX19fX19jX19jY2NjY2djZ2dnZ2dra2tva2tvb29zb29zc3N3c3N3d3d3d3t7d
    3d3e3t/e3t7f39/f39/f4ODf3+Hi4uLj4+Pj4+Pj5OPk5OTk5OXk5eTl5eXm5ubm5ufm5ufn
    6Ofo6Ojo6Ono6Orq6uvr6+vr7Ovs7Ozs7Ozs7e3s7O/u7u/v7+/v8PDw8PHx8fHx8vHy8vLy
    8vb29vf39/j4+Pj4+fn5+fr6+vv7+/z8/P39/f7+/v//////////////////////////////
    ////////////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////////////
    /////////////////////////////////yH5BAEKAP8ALAAAAAAgACAAAAj+AP8JHEiwoMGD
    CBMqXHhwwgQJEhhKlJDBSBlEg7bcoCAx4QQcoE6dqUIFDypCIyJ2JFhBDagdN66weQNFxRhQ
    SCasFDjBS6MRWApR2vQpEZ0eMjjh0LnyBacSXQK9upULF6lBcJLoMHRhpYQ0U45YEnVLV65b
    pBi1mfNCz4+VFiKtMCMKVi1Zr1ZlcsRHjhQiYVQyBLEIhh1PrFylCqVpkqRHcsC0uMOUIQlC
    Nf4IIloq1apSny7lQVOij+CFHvy42KPI1KtYtGjFajUKkBkTaiovpFDHxRpIqmjhynV2VilI
    Voo80a1QgpIsQypN1UU9l61Ug2i4SbFTwxsWUTqr0apeq9QhIEuwMF84YYYaFELiQMJU6RCZ
    GEXAbFjCZOcEG2I0EYIMPOSwQglYaPFBELVo4cBOEnTgxBdecGEhFz5gAAEHjZQSAQM7/TMB
    Bie0kIIIFei0wAMNtBBKBAiEmNABAADgYgQEyIjQADXeOIACOhoUQI8vCmBAkAXVaGORACBJ
    kJI3CtCkkwJBySSVVdZIwiUJTEmlkgAUkCOWWSpJ5kBmnqlmRwEBADs=
  }
  image create photo FICStakeback1 -format gif -data {
    R0lGODlhIAAgAOewAAAp+Wtrcb6aAL6dAKahS8KhAMSgAMWgAMWhAsahAMWiAMKkAMaiAMWi
    A8aiAcaiAsajAMWjA8ajAcWjBMajAsWjBcejAMajBMakAMSlAsijBcSmAMakBsilBselC8im
    DcinDsmoDMmoEsuqEMuqEc2yAM+vDNGwBcyuINCyAs2uINKxCM6vJNO1EdK0G9K0INW3E9a5
    CtK2Kda5ENa5Edm9Hdq+GtrCCNe9Q9i9QtzDMd3ENt3FQ+XLFuTLIOLKMeTNLuvSAeLLSe3U
    AO3UAe3UAuDKXO3UA+rTFO3VBu3VCe3VCurTH+LNWO3WDu7WEO7WEe7XE+7XFe7XG+7YGu7Y
    HO/YHe/ZIO/ZIe/ZIuzYNeTSbOvXQOrWSe/aJu/aKenYRe/cM/DcMuvYV/DcNPDcNenXbeva
    XfHeQPHfRPLfR/LgS/LgTPLgTe/eYvHfXfLhUOzde/PiVfPiVvPiWvPjWvPjW/PjXPPjXvPk
    X/PkYPPkYfPkYvPkY/TkZPHid/TlZfTlZvTlaO/ih/TlavHkeu/hkfTma/PldPTmbPTmbfTm
    bvTmb/TmcPTncfTndfTnd/XndfTnePXndvXnefXoePXoe/XofPXoffXpffXpf/Lol/bqh/Xq
    jfPpmvbri/brjfTqpvfslffunPjunfbuqfjvo/furPjvpfjvpvjwqPjwqfjwqvjwq/jwr/jx
    rv//////////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////////////
    /////////////////////////////////yH5BAEKAP8ALAAAAAAgACAAAAj+AP8JHEiwoMGD
    CBMKPKCwYUIIBhACmOjQoIMmFwpO3AigIkEPcVBNkEjR4z8UmzilGnlwo0cGOUppsqOqAsmO
    DilscWUJUJ5VNluWVPjB0KtLjATtYcVBAQQMGociZBHKFKZJSZeS6lRozI4OFgS6RKgAxylQ
    kSI5SuSTzpowXsTYkSRExL+xBhkYaQXpkCJFhALtkSNliGHDUNT8kYHXoApPn/r48cMnDxwn
    hzMPofKosUEQg0TpuVOHjZIhRDQfjuLZYAMzo/CgWWL4EqVGguZ8OXK4tUEIPCBdOZwpBAkX
    Os44KjMkiG+DFl4gImO4Est/EFq8AUNgY4CKDEZvuElTZNH1fwc4qq+ooQubPhEMmmiTxAkX
    CCb/SfhRJ35BCEBU8YQWCuSHXQ0PHGRDFlT4gJ+BCURkEA1XYDGDgQMJcBAMVjCBAIYP9TDF
    CiAmdAISMRRQ4kEZ3JDCACsatEAJG8Ro44045qhjjAEBADs=
  }
  image create photo FICStakeback2 -format gif -data {
    R0lGODlhIAAgAOe7AAAp9wAp+QIq9hA18CBA1i1IzzZNvTZQv0FYuUZbrkVcwJiMWrCWG76a
    AL6dAMKhAMSgAMWgAMWhAsahAMWiAMKkAMaiAMWiA8aiAcaiAsajAMWjA8ajAcWjBMajAsWj
    BcejAMajBMakAMSlAsijBcSmAMakBsilBselC8imDcinDsmoDMmoEsuqEMuqEc2yAM+vDNGw
    BcyuINCyAs2uINKxCM6vJNK0G9K0INW3E9a5CtK2KdS3H9a5ENa5Edm9Hdq+GtrCCMu/TNe9
    Q9i9QtrGE9zDMd3ENt3FQ+XLFuTLIObPBufPBeLKMeTNLuLLSe3UAO3UAe3UAuDKXO3UA+rT
    FO3VBu3VCe3VCurTH+LNWO3WDu7WEO7WEe7XFe7XG+7YGu7YHO/YHe/ZIO/ZIe/ZIuzYNeTS
    bOvXQOrWSe/aJu/aKe/cM/DcMuvYV/DcNOnXbevZYuvaXfHeQPHfRPLfR/LgS/LgTPLgTe/e
    YvLhUOzde+rfevPiVfPiVvPiWu3hdPPjWvPjW/PjXPPjXvPkX/PkYPPkYfPkYvPkY/TkZPHi
    d/TlZfTlZvTlaO/ih/TlavHkeu/hkfTma/PldPTmbPTmbfTmbvTmb/TmcPTncfTnd/XndfTn
    ePXndvXnefXoePXoe/XofPXoffXpffXpf/Lol/bqh/XqjfPpmvbri/brjfTqpvfslffunPju
    nfbuqfjvo/furPjvpfjvpvjwqPjwqfjwqvjwq/jwr/jxrv//////////////////////////
    ////////////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////////////
    /////////////////////////////////yH5BAEKAP8ALAAAAAAgACAAAAj+AP8JHEiwoMGD
    CBMKjKCwYUINEA4GmDjRYUEMWkIYpMjRokAUe2Z1KFhRYEeHMkydojWSYACSJRNaIAKrlKBa
    H1xujHnQw5lcoRgVspVTIcWEKSTpEoXJ0aFbJihoEIHw6EEbrGKN8tT06StUkdwcOQHCJc+B
    FIbIWsWJk6ZKQv/YYaOmjaBOT1gMPCvQwhRcmyZZsgSp0aE+XqAoVtylzqIdDAC8REgjlapE
    ihQhKqRny+LPUMDwKSCgoYpHrQwNCnTnCpQooBUvQTBgwV6EF+C4IjQHi2JRnzI58rOGCpME
    BITEsWDyIZJNYxaTWuHihhE5gBQcKCLlEI/mCUGB4KD0RjGolv80GODIvqGFFnnoSLmE/h/7
    9g5JpLmTaINBGHhYsQUaGngkEAdNBOJfQRo4EQYXZlBgoEAa/JDBQUCUAYYSBU74zwQRGeTD
    GGT04OFADRyUgxhZSHDiQ0l8UcOLCcVQhQ4P0HjQCEHM4ICOBlXwQglAFmnkkUgmCWRAADs=
  }
  image create photo FICSunobserve -format gif -data {
    R0lGODlhIAAgAOfiAC8pJDAqJTIsJjQuKDUuKTUvKpIJAZMMAjkzLTo0Ljs0L40SBzw1MDw2
    MEE1MT85M0M3M5kVB5oWCEY6Np0ZAoEjHkQ+OJ4bA0U/OUs9NBtJd58cBF4yQ0ZAOkw+NaEd
    BQZTi00/NqAeDYYoIRZPgh9MeglUjKMgAFs3Skw8WU5CPlBCOQxVjVA9VZwjEktEPhpPiRlR
    hKYjAFJDOhtRhRxQig9WjhFWjwJdlk5HQRJYixRXkakmA1VGPQVel68jBR9UiBRZjDRNeFZH
    PhZYkkdIZyFViQhfmFZIPxhZkztNdFdJQBlalAxgmRtblSVYjA9hmh1clltMQzRVgBFimx1e
    kSZbiR9dlzVWgR9fkhRjnCBemAVro7gsDRZknSJfmbAuHyJhlRhlnrwvBhpmnw1tpRxnoCZk
    mL4yCRBuph5oobA2Jx9pohNvpyFqoxVwqWNaTyNrpCxonLo3IBhxqiRspS5pnmNcVrg8Ghpy
    q746HBxzrA16smdeUydwozJsoR50rSlxpLs/IxF7syB1rmphVRR8tCJ2ryN3sM9AAhZ9tSV4
    sTB2qSd5sshDHTd1nRt/tyl6s8RHIx2AuSp7tMdJJXRqX8ZQNEl+oX1zZ8xVMjGLxM9XLjSN
    x16BlT2LvzePyWKFmYx5atheLot/bsZnW3KImXmIjnGQn5OJfddyVpqOfJGTkIOXosl+dJ+S
    gKKVg9WAbqeYgaiZgqmag6eaiaibiqucha6fiLChiqyilbGii7OjjK6kl7Skjbanj7eokLip
    kbmqkrqrk7ytlbqtm7yvnb2wnr6xn8CyoMGzocK0ot6nocC2qcS3pMW4pca5psi7qcq9q8u+
    rMm+suazpc2/rc7ArtDCsNHGudTJvOzEv+rLyvzs5/zu7/fx8Pz29f/9+///////////////
    ////////////////////////////////////////////////////////////////////////
    /////////////////////////////////yH5BAEKAP8ALAAAAAAgACAAAAj+AP8JHEiwoMGD
    CBMqXKjQgoohEGdYYMgwhJQVHTK+6DGRIsIOKxo4UDCSQQYIHg9icEBAAAAAAhyMfMAgZcEG
    olJlgtMjA4IAMh3YLFhsWbNesF7BGZAgQYOhBItRy0atmTFLMxpohTrQlzVt15YpE7UKjlCu
    A6lxo7YsmTBfhdASJIbN2jJixXzJkjuwmN1kvpLhwsVXYOBlgXnZslVYYDLAuGTxYuWp8ala
    tmD5KmaqTiC5cerUwVQrmS5TjAghysPVjB9GjP6YaoXpEx9GgRhRgkqGTZ08lDp1AkWpESI6
    fvIssmlGzm9CuhlNYnQ7UBw7duqk1HLGzp881KX5MzqUxw8XM2HIUDSwAAUWLlzq0AF0e3We
    NH/OhDmz8IALPY7g4UIR2Yn2Rh6B+GHeGVn44YMWCm3gyCiJcOLICFPI8YcfZfjxRh1snGEF
    I188EUZCBoyhyTfVfBPLBi14QYYczclBYxZW+HFFFFCgOAYazITDjR4bcBBGGGKcAZ8WYVSh
    wxlBGFGFQjxcEs4236jiQgpNZFHiE2dQcYQRRnyRRA1MKHQBGK4IUsoaFQjBRBRHQOGDD084
    oQMNYbBA5kIRfMDDCRQo8cQORhDxRJ5P3EADCTeAAMINQzF5xaGI7lBDCRrUcEMUJ6J1hhhH
    UpHFGfw1ZlNAADs=
  }
  image create photo FICSprofile -format gif -data {
    R0lGODlhIAAgAOfOAAImSgImSwEtXQEtXwEvYAEyYwIzaAI4bgQ5dAQ7cgg+eQVCegdHgw5F
    fwdPkAdPkQhQkglUlQlVlhVRjQpYmwpcoRJdogtgphJdowxiqg1osA1psQ1ptSJioyNiox9l
    pyBmqA1ttwttyCpmpA1uyRFuyA5yvw5zvg1yyxJzwRF0zA93zhZ0yxlzyhR4xRR4xhF4zxF5
    zBB7yA97yxB8yRN8yhF80RJ9yRF9zhF/yhN90hGAyhJ/0RGA0RKA0hKB1CF9zyd7zRWD1R6A
    0R+A0RiE1RSG1xWK1z17uxWK2SKF1CWE0xGN2hGN2xeL2hSN2S2C0BaO3B2L2UOAwReR3iON
    1xaT3ySO2heU4SGR2imO2DqH0SOR2yKS2heX4yGT3iGU3haZ5jKO1zmM1BWb6CKW4EqHxjmO
    1hSd6xqb5iyU3D2O1ROf7S2V3BKh70KO1UOO1Rqf6xGj8heh7Seb4xCk9Bai7xSl9CWf50iR
    1iCi7EqR1Rim8iai6i2h5k+U1kuZ1zCl6T2i40yd2j2j41mX1yWs9TKo61eZ2DOo6lqY112Y
    112a2EOl5Fid106h3TCt8TOs70Wm5E+l32Kd2WOd2S+y9zax9FCo4UCv72Wh1j2y8lGr40Ky
    8FKt5lKw6FKy61Sx63Op2Em8+FK58lC79U29+VK992HA9GbE93DB73TD8WzG92zJ+X/H8HnM
    +YDM9oHP+Y7L74fS+o3R+IjT+5PX+6Lc/KPd/Kjf/K3h/cvX47Hi/Ljl/brm/c7r+s/t/ejn
    5+no6Orp6evr6+3s7O/u7vDw8PLy8vTz8/b19ff39/39/f7+/v//////////////////////
    ////////////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////////////
    /////////////////////////////////yH5BAEKAP8ALAAAAAAgACAAAAj+AP8JHEiwoMGD
    CBMqXMiwocOHEAvy8NGjhw8eEQ3iqBIKFi1dumjBClUFR8YZbVbl6uWLV65cvHz1yrVKTYyH
    NSTVwmWr1ShLpkxZGtXK1q1ZjWo0fEHoVaxThu7UAebMGbA6dwydivVKkIuFKbqkYnWJjxw5
    pZqpbVbqLJ9LrFJlMaGQxiZUkOy42evmFzNmv/i6sQMJ1SYZCUM0IRVpDpvHkDt1ggx5TiRS
    TEIgPKEnUxw0oEOLHo0mTiY9JxDuONSHjGvXqlzJlp3o9es+h3IczPAkUJowwIHjkbWs+DJQ
    wYOnCfQkg8ELVvx4mU7dyydl2JV9qk7dj5ULBiv+YKGDpbx5LJ6SqU/m6bx58hUMUqBShor9
    +1Q4IduPjBP++/VRYJAER3wRxYEIRoHJMQweg0mCCIJxhAQGQXADF04koeGGkxjjoTGTbLih
    E1zcAMFBG1whhREstvhIMTAW80iLLUpxhQYIRVCEFkL84KOPgxAjJDGD/OijEFoUEQFCDHAg
    hhI62CClDYAMY+UwgExpgw5KiMEBAwk9sMQZQ8CwwpmOCKOmMI6cuQIMRJyxhAMKLYDBGGsA
    oQIKmuwSzJ/B7CIKCioAscYYFiywkAIgwJEHFCyQIMKklJLAAhR5vPGBAg0l4MEeiPyxRRAt
    lFBCC0Fs8Qcie3SAwEM3B0yAhCKUVMJIIYUwUgkliiAxwQEZFdDACFOYscgiZkwxQgMFZEQQ
    AAIQYIABAwgQgLPYZgtRQAA7
  }
  image create photo FICSsilence -format gif -data {
    R0lGODlhIAAgAOfPAKQBAKMCBKkAAC80Niw3N6UEADE1Ny86OzQ4OjU5OzU6PDc7PTU/QM0A
    AM4ABD5CRUFFR0JGSEZIRakeH0hJR0pOUE5QTU1SVFBST6srKFFTUE9UVlNUUlBVV1RVU1FW
    WFNXWlZXVVZYVVJbVldZVlZaXFhaV1lbWFtdWlpeYFxeW8suMsc0Ml9hXmBiX2FjYF1mYmJk
    YdgxM2BlZ2NlYmRlY2FmaNkzNGVmZGZnZWdoZmRpa2hpZ2lraNg8PGpsaWttamltcGdwa2xu
    a9s/Pm1vbHBvZ25wbXByb3FzcHJ0cXN1cnR2c3d2bnV3dHh3b3Z4dXh6d3V+eXp8eX18dHt9
    en59dXl+gHeAe3x+e31/fIB/d4GAeHqDfn+BfoKBeYOCenyFgIGDgISDe4KEgYOFgoSGg4eG
    foWHhIaIhYeJht9jZIiKh4mLiOJlZoqMiYuNioyOi42PjI+RjpCSj5GTkJOVkpaVjZSWk5eW
    jpWXlJaYlZmYkJeZlpqbmJudmZyem52fnKCfl56gnZyimJqjn5+hnqCin6GjoJ+lm66fmqKk
    oaCmnKSmo6KonqOpn6innqaopaeppqWsoaiqp6atouiPj6mrqKeuo6qsqautqqyuq6qxpq2v
    rK6wrbGwqK60qrOyqrGzr6+1q7Szq7K0sbW0rLO1sra2rbS2s7a4tbS6sLe5trW7sbi6t7m7
    uLe+s7q8uby+u7rBtrvCt7zDuMDCvsHDv7/Fu8LEwcTGw8XHxMPKv8TLwMfJxsbNws3Py8zS
    x8/RztDSz9HT0NTW09nb19rc2d3f3N7g3ePl4eTm4+7w7fL08f7//P//////////////////
    ////////////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////////////
    /////////////////////////////////yH5BAEKAP8ALAAAAAAgACAAAAj+AP8JHEiwoMGD
    CBMqXMiwocOHECNK/KdEyZIlEwsWKXKkjSpdrDrJUZJEyUQhvoiVumXDwAAGUQ75GeREYhpl
    QVg9oICBg4UIHyhdSOOwRg8gMK4gG1YBwwgSKlrA0LCjUZmGMDYh89UGh7ErGjygeJHDiBAj
    GuqYXPgj1jI/aJRUAZZiBAoYRo6UXCLkhxeGQZqdqlPGj+EQJ2gIaUKFSxctWGbIiaFQR6xj
    figpu5LKi4kXT6xICfPmzBs2SN7AUIijmK07sprZyJUERZNCh+ZIsaMnDx0tYnIofHHs1B1X
    vkrcYhIjzKddiawUIjRdjRchCmcYk3RnkyYQsqT+5AjDKVYhKoUmRUo0h0wNhS2AXbrDR4+G
    zkaexOETBksoVIpkEAAABRRooIECzabJHXeoUQIicAghhRJOROEIK7BkwIIba3To4RocrlDA
    PzUsMhgdcdRgRiFVUHFGHoycMosvAqzhQAMO5KhjjmsIIBAQtviRRyFvzECJHFjA0Ycjp+AC
    TAFr4OhDA1Q24MONa4z4Twx+mNLHGY1IsAggarChRyOk0NJLAFHe4IwlVFrizA0NrAHAQC/s
    4YkfR4hwyCGEwGFHIZ28Mgubcb4pJ5x1aikQCTPMEAEIgGxQiCPTScKJJojiKOebVbpx50EL
    lAFHFHxQMsopohDSqQNSljQDKpVZJkRAAgeMMIUcc2SRQqeLxsqoqA0RgMABCfyD6Apv5ijn
    lLVGhKgDV1ZZLbHSRpljlds2KlEBLHwo7hor+ChRAAEUgO666zqa0UIBAQA7
  }
}
###
### End of file: fics.tcl
###
###
### opening.tcl: part of Scid.
### Copyright (C) 2007  Pascal Georges
###
namespace eval opening {
  set repBase -1
  # list of elements of type fenMovesEvalList (fen move1 nag1 .... movei nagi)
  set allLinesFenList {}
  set fenMovesEvalList {}
  # list of hash lists, one list per game (a game = a line)
  set allLinesHashList {}
  set hashList {}
  # options for repertoire training
  set playerBestMove 1
  set opBestMove 1
  set onlyFlaggedLines 0
  set repColor "w"
  set resetStats 0
  
  set movesLoaded 0
  set fenLastUpdate 0
  set fenLastStatsUpdate 0
  set cancelLoadRepertoire 0
  set lastMainLoopFen 0
  set lastMainLoopFlipped [sc_pos side]
  
  # parameters for opening trainer window
  set displayCM 0
  set DisplayCMValue 0
  set tCM ""
  set lastCMFen ""
  set lastCM "-1"
  
  set displayOpeningStats 1
  set listStats {} ;# list of {fen x y z t} where x:good move played, y:dubious move, z:move out of rep, t:position played
  
  ################################################################################
  # Configuration
  ################################################################################
  proc config {} {
    global ::opening::playerBestMove ::opening::opBestMove ::opening::repColor
    
    set w .openingConfig
    if { [winfo exists $w] } { focus $w ; return  }
    if { [winfo exists ".openingWin"] } { focus ".openingWin" ; return }
    
    toplevel $w
    wm title $w $::tr(Repertoiretrainingconfiguration)
    setWinLocation $w
    frame $w.f0 -relief groove
    
    radiobutton $w.f0.rbRepColorW -value "w" -variable ::opening::repColor -text $::tr(white)
    radiobutton $w.f0.rbRepColorB -value "b" -variable ::opening::repColor -text $::tr(black)
    radiobutton $w.f0.rbRepColorWB -value "wb" -variable ::opening::repColor -text $::tr(both)
    pack $w.f0.rbRepColorW $w.f0.rbRepColorB $w.f0.rbRepColorWB -side left  -expand yes -fill both
    
    frame $w.f1
    checkbutton $w.f1.cbPlayerBestMove -text $::tr(PlayerBestMove) -variable ::opening::playerBestMove
    checkbutton $w.f1.cbOpBestMove -text $::tr(OpponentBestMove) -variable ::opening::opBestMove
    checkbutton $w.f1.cbOnlyFlaggedLines -text $::tr(OnlyFlaggedLines) -variable ::opening::onlyFlaggedLines
    checkbutton $w.f1.cbResetStats -text $::tr(resetStats) -variable ::opening::resetStats
    pack $w.f1.cbPlayerBestMove $w.f1.cbOpBestMove $w.f1.cbOnlyFlaggedLines $w.f1.cbResetStats -anchor w -side top
    
    frame $w.f2
    button $w.f2.ok -text $::tr(Continue) -command " destroy $w ; ::opening::openRep"
    button $w.f2.cancel -text $::tr(Cancel) -command "focus .; destroy $w"
    pack $w.f2.ok $w.f2.cancel -expand yes -side left -padx 20 -pady 2
    
    pack $w.f0 $w.f1 $w.f2 -side top -fill both
    
    bind $w <F1> { helpWindow OpeningTrainer }
    bind $w <Escape> "destroy $w"
    bind $w <Destroy> ""
    bind $w <Configure> "recordWinSize $w"
  }
  ################################################################################
  # Open a repertoire
  ################################################################################
  proc openRep {} {
    global ::windows::switcher::base_types ::opening::repColor ::opening::repBase
    
    if {$::opening::resetStats} {
      set ::opening::listStats {}
    } else  {
      loadStats
    }
    
    set repBase -1
    set typeW [lsearch $base_types {Openings for White} ]
    set typeB [lsearch $base_types {Openings for Black} ]
    set typeWB [lsearch $base_types {Openings for either color} ]
    
    for {set x 1} {$x <= [ expr [sc_base count]-1 ]} {incr x} {
      set type [sc_base type $x]
      if {$type == $typeW && $repColor == "w" || $type == $typeB && $repColor == "b" || $type == $typeWB && $repColor == "wb"} {
        set repBase  $x
        break
      }
    }
    
    if {$repBase == -1} {
      tk_messageBox -title $::tr(Repertoirenotfound) -type ok -icon warning \
          -message $::tr(Openfirstrepertoirewithtype)
      return
    }
    
    set prevBase [sc_base current]
    if {$prevBase != $repBase} { sc_base switch $repBase }
    loadRep "$repBase - [sc_base filename $repBase]" "[sc_base description]"
    if {$prevBase != $repBase} {
      sc_base switch $prevBase
    } else  {
      sc_base switch clipbase
    }
    
    if { $::opening::movesLoaded == 0 } {
      tk_messageBox -title $::tr(Repertoirenotfound) -type ok -icon error -message $::tr(ZeroMovesLoaded)
    }
    
    if { ! [sc_base inUse $prevBase] } {
      # switch to clipboard base if the current base is empty
      sc_base switch clipbase
    }
    
    # add a blank game for training in current base, if the current base is opened
    sc_game new
    sc_game tags set -event $::tr(Openingtrainer)
    sc_game save 0
    updateBoard -pgn -animate
    ::windows::gamelist::Refresh
    updateTitle
    
    ::opening::openingWin
    ::opening::mainLoop
  }
  ################################################################################
  # Loads a repertoire
  # Go through all games and variations and build a tree of positions encountered
  #
  ################################################################################
  proc loadRep { name desc } {
    global ::opening::repBase ::opening::fenMovesEvalList ::opening::allLinesFenList \
        ::opening::allLinesHashList ::opening::hashList ::opening::onlyFlaggedLines \
        ::opening::movesLoaded ::opening::cancelLoadRepertoire
    
    set movesLoaded 0
    set cancelLoadRepertoire 0
    set allLinesFenList {}
    set allLinesHashList {}
    
    progressWindow "Scid" "$::tr(Loadingrepertoire)..." $::tr(Cancel) "::opening::sc_progressBar"
    for {set g 1} { $g <= [sc_base numGames]} { incr g} {
      if {$cancelLoadRepertoire} { break  }
      if {$onlyFlaggedLines && ![sc_game flag "WhiteOpFlag" $g] && ![sc_game flag "BlackOpFlag" $g]} {
        continue
      }
      set fenMovesEvalList {}
      set hashList  {}
      sc_game load $g
      changeProgressWindow "$::tr(Loadingrepertoire)...\n$name\n$desc\n$::tr(Movesloaded) $movesLoaded"
      updateProgressWindow $g [sc_base numGames]
      parseGame
      lappend allLinesFenList $fenMovesEvalList
      set hashList [lsort -unique $hashList]
      lappend allLinesHashList $hashList
    }
    # puts "$allLinesFenList"
    
    closeProgressWindow
  }
  ################################################################################
  # cancel repertoire loading
  ################################################################################
  proc sc_progressBar {} {
    set ::opening::cancelLoadRepertoire 1
  }
  ################################################################################
  # parse one game and fill the list
  ################################################################################
  proc parseGame {} {
    while {![sc_pos isAt vend]} {
      fillFen
      # Go through all variants
      for {set v 0} {$v<[sc_var count]} {incr v} {
        # enter each var (beware the first move is played)
        sc_var enter $v
        parseVar
      }
      # now treat the main line
      sc_move forward
    }
  }
  ################################################################################
  # parse recursively variants.
  ################################################################################
  proc parseVar {} {
    while {![sc_pos isAt vend]} {
      fillFen
      # Go through all variants
      for {set v 0} {$v<[sc_var count]} {incr v} {
        sc_var enter $v
        fillFen
        # we are at the start of a var, before the first move : start recursive calls
        parseVar
      }
      sc_move forward
    }
    # at the end of a var : exit it
    sc_var exit
  }
  ################################################################################
  # fill the tree with repertoire information
  # we are at a given position :
  # - fill hash list in order to speed up searches
  # - fill fenMovesEvalList with {fen {move eval} {move eval} .... }
  ################################################################################
  proc fillFen {} {
    global ::opening::fenMovesEvalList ::opening::hashList ::opening::movesLoaded
    
    if {[sc_pos isAt vend] && [sc_var count] == 0 } {
      return
    }
    
    set s [split [sc_pos fen]]
    set fen "[lindex $s 0] [lindex $s 1] [lindex $s 2] [lindex $s 3]"
    
    set newFen {}
    set moves {}
    set newIndex -1
    incr movesLoaded
    
    lappend hashList [sc_pos hash]
    
    # check if the fen already exists in the list
    for {set i 0} { $i < [llength $fenMovesEvalList]} {incr i} {
      set f [lindex $fenMovesEvalList $i]
      if {[lindex $f 0] == $fen} { set newFen $fen ; set moves [lindex $f 1] ; set newIndex $i ; break }
    }
    set newFen $fen
    
    # the main move
    if {! [sc_pos isAt vend] } {
      set m [sc_game info nextMove]
      sc_move forward
      set nag [sc_pos getNags]
      sc_move back
      if {[lsearch $moves $m] == -1 } {
        lappend moves $m $nag
      } else  {
        # the move already exists : check if NAG values are coherent
        set lmoves [lsearch -all $moves $m]
        foreach i $lmoves {
          if {[lindex $moves [expr $i +1]] != $nag} {
            puts "redundancy and incoherence $m $nag for $newFen"
          }
        }
      }
    }
    # Go through all variants
    for {set v 0} {$v<[sc_var count]} {incr v} {
      sc_var enter $v
      set nag [sc_pos getNags]
      set m [sc_game info previousMove]
      if {[lsearch $moves $m] == -1 } {
        lappend moves $m $nag
      } else  {
        # the move already exists : check if NAG values are coherent
        set lmoves [lsearch -all $moves $m]
        foreach i $lmoves {
          if {[lindex $moves [expr $i +1]] != $nag} {
            puts "var redundancy and incoherence $m $nag for $newFen"
          }
        }
      }
      sc_var exit
    }
    
    # put the newFen in the list
    if {$newIndex == -1} {
      lappend fenMovesEvalList [list $fen $moves ]
    } else  {
      lset fenMovesEvalList $newIndex [list $fen $moves ]
    }
  }
  ################################################################################
  # main loop called every second to trigger playing
  ################################################################################
  proc mainLoop {} {
    global ::opening::allLinesHashList ::opening::allLinesFenList tCM
    
    after cancel ::opening::mainLoop
    
    # Handle case of player's turn (which always plays from bottom of the board)
    if { [sc_pos side] == "white" &&  ![::board::isFlipped .main.board] || [sc_pos side] == "black" &&  [::board::isFlipped .main.board] } {
      # it is player's turn : update UI
      ::opening::update_tCM
      ::opening::updateStats
      after 1000  ::opening::mainLoop
      return
    }
    
    # check the position has not been treated already
    if {[sc_pos fen] == $::opening::lastMainLoopFen && [::board::isFlipped .main.board] == $::opening::lastMainLoopFlipped} {
      after 1000 ::opening::mainLoop
      return
    }
    
    # the player moved : check if his move was in the repertoire and as good as expected
    set move_done [sc_game info previousMove]
    if { $move_done != "" } {
      sc_move back
      set cm [ getCm ]
      sc_move forward
      # No move available : reached the end of a line
      if { [llength $cm] == 0 } {
        ::opening::update_tCM
        ::opening::updateStats
        after 1000 ::opening::mainLoop
        return
      }
      
      # we know there are some CM
      set l [lsearch -all $cm $move_done]
      # move not in repertoire
      if {[llength $l] == 0} {
        tk_messageBox -type ok -message $::tr(Movenotinrepertoire) -icon info
        sc_move back
        addStats -good 0 -dubious 0 -absent 1 -total 1
        ::opening::update_tCM
        ::opening::updateStats
        updateBoard -pgn -animate
        after 1000  ::opening::mainLoop
        return
      }
      
      # The move played is in repertoire !
      set moveOK 1
      
      if {$::opening::playerBestMove} {
        foreach i $l {
          if {! [ ::opening::isGoodMove [ lindex $cm [expr $i+1] ] ] } {
            addStatsPrev -good 0 -dubious 1 -absent 0 -total 1
            set moveOK 0
            set nag [ lindex $cm [expr $i+1] ]
            break
          }
        }
        
        # The move is not good : offer to take back
        if { ! $moveOK } {
          # addStatsPrev -good 0 -dubious 0 -absent 1 -total 0
          set answer [tk_messageBox -icon question -title $::tr(OutOfOpening) -type yesno \
              -message "$::tr(yourmoveisnotgood) ($nag) \n $::tr(DoYouWantContinue)" ]
          if {$answer == no} {
            sc_move back
            updateBoard -pgn
            after 1000  ::opening::mainLoop
            return
          }
        } else  { ;# the move is a good one
          addStatsPrev -good 1 -dubious 0 -absent 0 -total 1
        }
      } else  { ;# player is allowed to play bad moves
        foreach i $l {
          set goodMove 1
          if {! [ ::opening::isGoodMove [ lindex $cm [expr $i+1] ] ] } {
            set goodMove 0
            break
          }
        }
        if {$goodMove} {
          addStatsPrev -good 1 -dubious 0 -absent 0 -total 1
        } else  {
          addStatsPrev -good 1 -dubious 1 -absent 0 -total 1
        }
      }
      
    }
    # end of player's move check
    # now it is computer's turn
    set cm [ getCm ]
    
    if {[llength $cm] != 0} {
      ::opening::play $cm
    }
    set ::opening::lastMainLoopFen [sc_pos fen]
    set ::opening::lastMainLoopFlipped [::board::isFlipped .main.board]
    
    ::opening::update_tCM
    ::opening::updateStats
    after 1000  ::opening::mainLoop
  }
  ################################################################################
  # isGoodMove : returns true if the nag list in parameter is empty or contains !? ! !!
  ################################################################################
  proc isGoodMove { n } {
    if { [lsearch -exact $n "?"] != -1 || [lsearch -exact $n "?!"] != -1 || [lsearch -exact $n "??"] != -1} {
      return 0
    }
    return 1
  }
  ################################################################################
  # get all candidate moves in the repertoire from current position
  # the list returned is of the form {move1 nag1 move2 nag2 ....}
  # the moves are not unique
  ################################################################################
  proc getCm {  } {
    global ::opening::allLinesHashList ::opening::allLinesFenList ::opening::lastCMFen
    
    set fen [ sc_pos fen ]
    # avoids calculation
    if {$fen == $lastCMFen } { return $lastCM }
    
    set cm {}
    # First find the position in hash lists to spare time
    set linesFound {}
    for {set i 0} {$i<[llength $allLinesHashList]} {incr i} {
      set res [lsearch -sorted [lindex $allLinesHashList $i] [sc_pos hash]]
      if {$res != -1} { lappend linesFound $i }
    }
    
    set s [split $fen]
    set fen "[lindex $s 0] [lindex $s 1] [lindex $s 2] [lindex $s 3]"
    foreach i $linesFound {
      set line [lindex $allLinesFenList $i]
      foreach f $line {
        if {[lindex $f 0] == $fen} { set cm [concat $cm [lindex $f 1]] }
      }
    }
    
    set lastCM $cm
    set lastCMFen $fen
    
    return $cm
  }
  ################################################################################
  # play one of the candidate moves
  ################################################################################
  proc play { cm } {
    # addStatsPrev -good 0 -dubious 0 -absent 0 -total 1
    set r [expr int(rand()*[llength $cm]/2) ]
    set m [ lindex $cm [ expr $r * 2 ] ]
    
    if {[sc_pos moveNumber] == 1 && [sc_pos side] == "white"} {
      ::game::Clear
    }
    
    if {![catch {sc_move addSan [::untrans $m] }]} {
    }
    updateBoard -pgn -animate
  }
  ################################################################################
  # The window displayed when in opening trainer mode
  ################################################################################
  proc openingWin {} {
    global ::opening::displayCM ::opening::displayCMValue ::opening::tCM ::opening::fenLastUpdate
    
    set w ".openingWin"
    if {[winfo exists $w]} { focus $w ; return }
    
    toplevel $w
    wm title $w $::tr(Openingtrainer)
    setWinLocation $w
    frame $w.f1
    frame $w.f2 -relief raised -bd 2
    frame $w.f3
    
    checkbutton $w.f1.cbDisplayCM  -text $::tr(DisplayCM) -variable ::opening::displayCM -relief flat \
        -command "set fenLastUpdate 0 ; ::opening::update_tCM 1"
    checkbutton $w.f1.cbDisplayCMValue  -text $::tr(DisplayCMValue) -variable ::opening::displayCMValue -relief flat \
        -command "set fenLastUpdate 0 ; ::opening::update_tCM 1"
    label $w.f1.lCM -textvariable ::opening::tCM
    pack $w.f1.cbDisplayCM $w.f1.cbDisplayCMValue -anchor w -side top
    pack $w.f1.lCM -side top -anchor center
    
    checkbutton $w.f2.cbDisplayStats  -text $::tr(DisplayOpeningStats) -variable ::opening::displayOpeningStats -relief flat \
        -command "::opening::updateStats 1"
    label $w.f2.lStats1 -textvariable ::opening::lStats1 -width 4 -anchor center -background green
    label $w.f2.lStats2 -textvariable ::opening::lStats2 -width 4 -anchor center -background yellow
    label $w.f2.lStats3 -textvariable ::opening::lStats3 -width 4 -anchor center -background red
    label $w.f2.lStats4 -textvariable ::opening::lStats4 -width 4 -anchor center -background white
    
    label $w.f2.lStats1exp -text $::tr(NumberOfGoodMovesPlayed)
    label $w.f2.lStats2exp -text $::tr(NumberOfDubiousMovesPlayed)
    label $w.f2.lStats3exp -text $::tr(NumberOfMovesPlayedNotInRepertoire)
    label $w.f2.lStats4exp -text $::tr(NumberOfTimesPositionEncountered)
    
    grid $w.f2.cbDisplayStats -row 0 -column 0 -columnspan 2
    grid $w.f2.lStats4 -row 1 -column 0 -sticky w -padx 5
    grid $w.f2.lStats1 -row 2 -column 0 -sticky w -padx 5
    grid $w.f2.lStats2 -row 3 -column 0 -sticky w -padx 5
    grid $w.f2.lStats3 -row 4 -column 0 -sticky w -padx 5
    
    
    grid $w.f2.lStats4exp -row 1 -column 1 -sticky w -padx 5
    grid $w.f2.lStats1exp -row 2 -column 1 -sticky w -padx 5
    grid $w.f2.lStats2exp -row 3 -column 1 -sticky w -padx 5
    grid $w.f2.lStats3exp -row 4 -column 1 -sticky w -padx 5
    
    button $w.f3.report -textvar ::tr(ShowReport) -command ::opening::report
    button $w.f3.close -textvar ::tr(Abort) -command ::opening::endTraining
    
    pack $w.f3.report $w.f3.close -side top -anchor center -fill x
    pack $w.f1 $w.f2 $w.f3 -fill x
    
    bind $w <F1> { helpWindow OpeningTrainer }
    bind $w <Escape> "destroy $w"
    bind $w <Destroy> ""
    bind $w <Configure> "recordWinSize $w"
    wm minsize $w 45 0
  }
  ################################################################################
  #
  ################################################################################
  proc endTraining {} {
    after cancel ::opening::mainLoop
    saveStats
    focus .
    destroy ".openingWin"
  }
  ################################################################################
  # display the candidate moves list (with NAG values)
  ################################################################################
  proc  update_tCM { { forceUpdate 0 } } {
    global ::opening::displayCM ::opening::displayCMValue ::opening::tCM ::opening::fenLastUpdate
    
    # If current fen is the same as the one used during latest update call, do nothing
    if {$fenLastUpdate == [sc_pos fen] && ! $forceUpdate} { return }
    
    set cm [ getCm ]
    
    if { [llength $cm] == 0 } {
      .openingWin.f1.lCM configure -bg LightCoral
      set tCM $::tr(EndOfVar)
      set fenLastUpdate [sc_pos fen]
      return
    }
    
    if { !$displayCM } { set tCM "" ; set fenLastUpdate 0 ; return }
    
    .openingWin.f1.lCM configure -bg linen
    
    set tmp ""
    
    for {set x 0} {$x<[llength $cm]} { set x [expr $x+2]} {
      set m [lindex $cm $x]
      # if the move already found, skip it, even if it has other nags : to be corrected ?
      if {[string first $m $tmp] != -1} { continue }
      append tmp  $m " "
      set nlist [lindex $cm [expr $x+1] ]
      if {$nlist == 0} { continue }
      if {$displayCMValue} {
        foreach n $nlist {
          append tmp $n " "
        }
      }
      # go to new line every 3 (moves,nags)
      if {[expr $x % 3] == 2} { append tmp "\n" }
    }
    
    set fenLastUpdate [sc_pos fen]
    set tCM $tmp
  }
  ################################################################################
  #
  ################################################################################
  proc loadStats {} {
    set optionsFile [scidConfigFile optrainer]
    if {[catch {source $optionsFile} ]} {
      ::splash::add "Unable to find the options file: [file tail $optionsFile]"
    } else {
      ::splash::add "Your options file \"[file tail $optionsFile]\" was found and loaded."
    }
  }
  ################################################################################
  #
  ################################################################################
  proc saveStats {} {
    set optrainerFile [scidConfigFile optrainer]
    if {[catch {open $optrainerFile w} f]} {
      return 0
    }
    puts $f "set ::opening::listStats { $::opening::listStats }"
    close $f
    return 1
  }
  ################################################################################
  # getStats
  # returns a list containing the 4 stats values for current pos
  # or an empty list if the stats are not available for current position
  ################################################################################
  proc getStats {} {
    set s [split [sc_pos fen]]
    set fen "[lindex $s 0] [lindex $s 1] [lindex $s 2] [lindex $s 3]"
    set found 0
    set idx 0
    foreach l $::opening::listStats {
      if {[lindex $l 0] == $fen} {
        set found 1
        break
      }
      incr idx
    }
    if {$found} {
      return [lindex $l 1]
    }
    return {}
  }
  
  ################################################################################
  # addStats
  # x = success best moves only, y = success all moves z = failures t = coverage by computer
  ################################################################################
  proc addStats { args } {
    set dx 0
    set dy 0
    set dz 0
    set dt 0
    
    for {set i 0 } {$i < [llength $args]} {incr i 2} {
      if {[lindex $args $i] == "-good"} { set dx [lindex $args [expr $i + 1] ] ; continue }
      if {[lindex $args $i] == "-dubious"} { set dy [lindex $args [expr $i + 1] ] ; continue }
      if {[lindex $args $i] == "-absent"} { set dz [lindex $args [expr $i + 1] ] ; continue }
      if {[lindex $args $i] == "-total"} { set dt [lindex $args [expr $i + 1] ] ; continue }
    }
    
    set s [split [sc_pos fen]]
    set fen "[lindex $s 0] [lindex $s 1] [lindex $s 2] [lindex $s 3]"
    set found 0
    set idx 0
    foreach l $::opening::listStats {
      if {[lindex $l 0] == $fen} {
        set found 1
        break
      }
      incr idx
    }
    
    if {$found} {
      set lval [lindex $l 1]
      set ::opening::listStats [ lreplace $::opening::listStats $idx $idx [list $fen [list \
          [expr [lindex $lval 0]+$dx] \
          [expr [lindex $lval 1]+$dy] \
          [expr [lindex $lval 2]+$dz] \
          [expr [lindex $lval 3]+$dt] \
          ] ] ]
    } else  {
      lappend ::opening::listStats [list $fen [list $dx $dy $dz $dt] ]
    }
    updateStats 1
  }
  ################################################################################
  #
  ################################################################################
  proc addStatsPrev { args } {
    if {[sc_pos isAt vstart] } { return }
    if { ![catch {sc_move back} ]} {
      eval addStats $args
      sc_move forward
    }
  }
  ################################################################################
  #
  ################################################################################
  proc updateStats { {force 0} } {
    global ::opening::fenLastStatsUpdate
    
    # If current fen is the same as the one used during latest update call, do nothing
    if {$fenLastStatsUpdate == [sc_pos fen] && !$force} { return }
    
    set fenLastStatsUpdate [sc_pos fen]
    
    if { $::opening::displayOpeningStats } {
      set gs [getStats]
      set ::opening::lStats1 [lindex $gs 0]
      set ::opening::lStats2 [lindex $gs 1]
      set ::opening::lStats3 [lindex $gs 2]
      set ::opening::lStats4 [lindex $gs 3]
    } else  {
      set ::opening::lStats1 " "
      set ::opening::lStats2 " "
      set ::opening::lStats3 " "
      set ::opening::lStats4 " "
    }
  }
  ################################################################################
  # shows a repertoire report (how much of the rep was trained)
  ################################################################################
  proc report {} {
    global ::opening::listStats ::opening::allLinesFenList
    set w ".openingWin.optrainerreport"
    if {[winfo exists $w]} { focus $w ; return }
    
    toplevel $w
    wm title $w $::tr(Openingtrainer)
    setWinLocation $w
    
    frame $w.ft
    text $w.ft.text -height 10 -width 40 -wrap word -background white
    pack $w.ft.text
    pack $w.ft
    
    frame $w.fclose
    button $w.fclose.close -textvar ::tr(Close) -command "destroy $w"
    pack $w.fclose.close
    
    # builds stats report
    set posNotPlayed 0
    set posTotalPlayed 0
    set success 0
    set dubMoves 0
    set outOfRep 0
    set totalPos 0
    foreach line $allLinesFenList {
      incr totalPos [llength $line]
      foreach pos $line {
        set fenLine [lindex $pos 0]
        set idx 0
        set found 0
        foreach l $listStats {
          if {$fenLine == [lindex $l 0]} {
            set found 1
            break
          }
          incr idx
        }
        if { $found } {
          set stats [lindex [ lindex $listStats $idx ] 1]
          if { $stats != "" } {
            incr success [lindex $stats 0]
            incr dubMoves [lindex $stats 1]
            incr outOfRep [lindex $stats 2]
            incr posTotalPlayed [lindex $stats 3]
          }
        } else {
          incr posNotPlayed
        }
      }
    }
    $w.ft.text insert end "$::tr(PositionsInRepertoire) $totalPos\n"
    $w.ft.text insert end "$::tr(PositionsNotPlayed) $posNotPlayed\n"
    $w.ft.text insert end "$::tr(PositionsPlayed) [expr $totalPos - $posNotPlayed]\n"
    $w.ft.text insert end "$::tr(Success) $success\n"
    $w.ft.text insert end "$::tr(DubiousMoves) $dubMoves\n"
    $w.ft.text insert end "$::tr(OutOfRepertoire) $outOfRep\n"
    
    $w.ft.text configure -state disabled
    
    bind $w <F1> { helpWindow OpeningTrainer }
    bind $w <Escape> "destroy $w"
    bind $w <Destroy> ""
    bind $w <Configure> "recordWinSize $w"
    # wm minsize $w 45 0
  }
  ################################################################################
  #
  ################################################################################
}
###
### End of file: opening.tcl
###
### tactics.tcl: part of Scid.
### Copyright (C) 2007  Pascal Georges
###
######################################################################
### Solve tactics (mate in n moves for example)
# use Site token in pgn notation to store progress
#

namespace eval tactics {
    
    set infoEngineLabel ""
    
    set basePath $::scidBasesDir
    
    set baseList {}
    set solved "problem solved"
    set failed "problem failed"
    set prevScore 0
    set prevLine ""
    set nextEngineMove ""
    set matePending 0
    set cancelScoreReset 0
    set askToReplaceMoves_old 0
    set showSolution 0
    set labelSolution ". . . . . . "
    set lastGameLoaded 0
    set prevFen ""
    set engineSlot 5
    # Don't try to find the exact best move but to win a won game (that is a mate in 5 is ok even if there was a pending mate in 2)
    set winWonGame 0
    
    ################################################################################
    # Current base must contain games with Tactics flag and **** markers
    # for certain moves. The first var should contain the best move (the next best move
    # is at least 1.0 point away.
    ################################################################################
    proc findBestMove { {previous 0} } {
        
        set old_game [sc_game number]
        
        if { $old_game == 1 && $previous != 0} {
            return
        }
        
        if { $old_game == [sc_base numGames] && $previous == 0} {
            return
        }
        
        set found 0
        
        if {![sc_base inUse] || [sc_base numGames] == 0} {
            tk_messageBox -type ok -icon info -title "Scid" -message "No game with Tactics flag\nor no tactics comment found"
            return
        }
        
        if {$previous != 0} {
            ::game::LoadNextPrev previous
        }
        
        # Try to find in current game, from current pos (exit vars first)
        catch { ;# if gamenumber == 0, sc_game flag T returns no boolean
            if {[sc_game flag T [sc_game number]]} {
                while {[sc_var level] != 0} { sc_var exit }
                if {[llength [gotoNextTacticMarker] ] != 0} {
                    set found 1
                }
            }
        }
        if { ! $found } {
            set sens 1
            set start [expr [sc_game number] +1]
            set end [sc_base numGames]
            if {$previous != 0} {
                set sens -1
                set start  [expr [sc_game number] -1]
                set end 1
            }
            for {set g $start } { [expr $sens * $g ] <= [ expr $sens * $end ] } { incr g $sens} {
                sc_game load $g
                if {![sc_game flag T $g]} { continue }
                # go through all moves and look for tactical markers ****
                if {[llength [gotoNextTacticMarker] ] != 0} {
                    set found 1
                    break
                }
            }
        }
        
        if { ! $found } {
            sc_game load $old_game
            gotoNextTacticMarker
            tk_messageBox -type ok -icon info -title "Scid" -message "No game with Tactics flag\nor no tactics comment found"
        } else  {
            sideToMoveAtBottom
        }
        updateBoard -pgn
        ::windows::gamelist::Refresh
        updateTitle
    }
    ################################################################################
    # The initial proc to start Find Best Move training
    proc findBestMoveStart {} {
        
        set f .main.fbutton.button
        
        if { $::tactics::findBestMoveRunning } {
            set ::tactics::hideNextMove_old $::gameInfo(hideNextMove)
            set ::tactics::showVarArrows_old $::showVarArrows
            set ::tactics::showVarPopup_old $::showVarPopup
            set ::gameInfo(hideNextMove) 1
            set ::showVarArrows 0 ;# so the user will not see the solution through var arrows
            set ::showVarPopup 0
            
            # create UI to handle commands and feed back for find best move
            if { ![winfo exists $f.fbm_space1]} {
                ttk::frame $f.fbm_space1 -width 15
                button $f.fbm_solution -image tb_lightbulb -command ::tactics::findBestMoveShowSolution
                ::utils::tooltip::Set $f.fbm_solution [::tr ShowSolution]
                button $f.fbm_prev -image tb_backward -command { ::tactics::findBestMove previous }
                ::utils::tooltip::Set $f.fbm_prev [::tr PrevExercise ]
                button $f.fbm_next -image tb_forward -command ::tactics::findBestMove
                ::utils::tooltip::Set $f.fbm_next [::tr NextExercise ]
                button $f.fbm_stop -image tb_stop -command { set ::tactics::findBestMoveRunning 0 ;  ::tactics::findBestMoveStart }
                ::utils::tooltip::Set $f.fbm_stop [::tr StopTraining ]
            }
            pack $f.fbm_space1 -side left -pady 1 -padx 0 -ipadx 0 -pady 0 -ipady 0
            pack $f.fbm_solution $f.fbm_prev $f.fbm_next $f.fbm_stop -side left -pady 1 -padx 0 -ipadx 0 -pady 0 -ipady 0
            
            # load the last game seen by the user
            set fname [sc_base filename]
            if { $fname != "\[empty\]" && $fname != "\[clipbase\]"} {
                if { [ info exists ::tactics::findBestMove_History($fname) ] } {
                    ::game::Load $::tactics::findBestMove_History($fname)
                }
            }
            
            findBestMove
            
        } else  {
            findBestMoveStop
        }
        
    }
    ################################################################################
    # Refresh the PGN window so the solution is visible
    proc  findBestMoveShowSolution {} {
        set ::tactics::findBestMoveRunning 0
        ::pgn::Refresh 1
        set ::tactics::findBestMoveRunning 1
    }
    ################################################################################
    proc findBestMoveStop {} {
        if { ! $::tactics::findBestMoveRunning } {
            set f .main.fbutton.button
            set ::tactics::findBestMoveRunning 0
            # stop the training, restore normal PGN display
            ::pgn::Refresh 1
            set ::gameInfo(hideNextMove) $::tactics::hideNextMove_old
            set ::showVarArrows $::tactics::showVarArrows_old
            set ::showVarPopup $::tactics::showVarPopup_old
            
            set fname [sc_base filename]
            if { $fname != "\[empty\]" && $fname != "\[clipbase\]"} {
                set ::tactics::findBestMove_History($fname) [sc_game number]
            }
            pack forget $f.fbm_space1 $f.fbm_solution $f.fbm_prev $f.fbm_next $f.fbm_stop
            # destroy $f.fbm_space1 $f.fbm_solution $f.fbm_prev $f.fbm_next $f.fbm_stop
        }
    }
    ################################################################################
    # Scid exists when the training is in progress : restore options
    proc findBestMoveExit {} {
        if { $::tactics::findBestMoveRunning } {
            set ::gameInfo(hideNextMove) $::tactics::hideNextMove_old
        }
    }
    ################################################################################
    # returns a list with depth score prevscore
    # or an empty list if marker not found
    proc gotoNextTacticMarker {} {
        while {![sc_pos isAt end]} {
            sc_move forward
            set cmt [sc_pos getComment]
            # TODO old format to be removed
            set res [scan $cmt "\*\*\*\*d%dfrom%fto%f" dif prevscore score ]
            if {$res != 3} { ; # try new format if the old format failed
                set res [scan $cmt "\*\*\*\*D%d %f->%f" dif prevscore score ]
            }
            if {$res == 3} {
                return [list $dif $score $prevscore]
            }
        }
        return {}
    }
    ################################################################################
    # Configuration dialog
    ################################################################################
    proc config {} {
        global ::tactics::basePath ::tactics::baseList
        set basePath $::scidBasesDir
        
        # check if tactics window is already opened. If so, abort serial.
        set w .tacticsWin
        if {[winfo exists $w]} {
            destroy $w
        }
        
        set w ".configTactics"
        if {[winfo exists $w]} {
            focus $w
            return
        }
        toplevel $w
        wm title $w $::tr(ConfigureTactics)
        setWinLocation $w
        
        if {[sc_base count free] == 0} {
            tk_messageBox -type ok -icon info -title "Scid" -message "Too many databases are open; close one first"
            return
        }
        
        set prevBase [sc_base current]
        # go through all bases and take descriptions
        set baseList {}
        set fileList [  lsort -dictionary [ glob -nocomplain -directory $basePath *.si4 ] ]
        foreach file  $fileList {
            if {[sc_base slot $file] == 0} {
                sc_base open [file rootname $file]
                set wasOpened 0
            } else  {
                sc_base switch [sc_base slot $file]
                set wasOpened 1
            }
            
            set solvedCount 0
            for {set g 1 } { $g <= [sc_base numGames]} { incr g} {
                sc_game load $g
                if {[sc_game tags get "Site"] == $::tactics::solved} { incr solvedCount }
            }
            lappend baseList "$file" "[sc_base description] ($solvedCount/[sc_base numGames])"
            if {! $wasOpened } {
                sc_base switch $prevBase
                sc_base close [sc_base slot $file]
            }
        }
        
        updateMenuStates
        updateStatusBar
        updateTitle
        
        ttk::frame $w.fconfig -relief raised ;# -borderwidth 1
        ttk::label $w.fconfig.l1 -text $::tr(ChooseTrainingBase)
        pack $w.fconfig.l1
        
        ttk::frame $w.fconfig.flist
        listbox $w.fconfig.flist.lb -selectmode single -exportselection 0 \
                -yscrollcommand "$w.fconfig.flist.ybar set" -height 10 -width 30
        ttk::scrollbar $w.fconfig.flist.ybar -command "$w.fconfig.flist.lb yview"
        pack $w.fconfig.flist.lb $w.fconfig.flist.ybar -side left -fill y
        for {set i 1} {$i<[llength $baseList]} {incr i 2} {
            $w.fconfig.flist.lb insert end [lindex $baseList $i]
        }
        $w.fconfig.flist.lb selection set 0
        
        ttk::frame $w.fconfig.reset
        ttk::button $w.fconfig.reset.button -text $::tr(ResetScores) \
                -command {::tactics::resetScores [ lindex $::tactics::baseList [expr [.configTactics.fconfig.flist.lb curselection] * 2 ] ]}
        pack $w.fconfig.reset.button -expand yes -fill both
        
        # in order to limit CPU usage, limit the time for analysis (this prevents noise on laptops)
        ttk::labelframe $w.fconfig.flimit -text $::tr(limitanalysis)
        ttk::label $w.fconfig.flimit.analabel -text  "($::tr(seconds))"
        ttk::scale $w.fconfig.flimit.analysisTime -orient horizontal -from 1 -to 60 -length 120 -variable ::tactics::analysisTime \
                -command { ::utils::validate::roundScale ::tactics::analysisTime 1 }
        ttk::label $w.fconfig.flimit.value -textvar ::tactics::analysisTime
        pack $w.fconfig.flimit.analabel $w.fconfig.flimit.analysisTime $w.fconfig.flimit.value -side left -expand yes -fill x
        
        ttk::frame $w.fconfig.fbutton
        ttk::button $w.fconfig.fbutton.ok -text $::tr(Continue) -command {
            set base [ lindex $::tactics::baseList [expr [.configTactics.fconfig.flist.lb curselection] * 2 ] ]
            destroy .configTactics
            ::tactics::start $base
        }
        ttk::button $w.fconfig.fbutton.cancel -text $::tr(Cancel) -command "focus .; destroy $w"
        pack $w.fconfig.fbutton.ok $w.fconfig.fbutton.cancel -expand yes -side left -padx 20 -pady 2
        
        pack $w.fconfig $w.fconfig.flist $w.fconfig.reset $w.fconfig.flimit $w.fconfig.fbutton -expand 1 -fill x
        bind $w <Configure> "recordWinSize $w"
        bind $w <F1> { helpWindow TacticsTrainer }
        
    }
    ################################################################################
    #
    ################################################################################
    proc start { base } {
        global ::tactics::analysisEngine ::askToReplaceMoves ::tactics::askToReplaceMoves_old
        
        set ::tactics::lastGameLoaded 0
        
        if { ! [::tactics::launchengine] } { return }
        
        set askToReplaceMoves_old $askToReplaceMoves
        set askToReplaceMoves 0
        
        set w .tacticsWin
        if {[winfo exists $w]} { focus $w ; return }
        
        createToplevel $w
        setTitle $w $::tr(Tactics)
        setWinLocation $w
        # because sometimes the 2 buttons at the bottom are hidden
        wm minsize $w 170 170
        ttk::frame $w.f1 -relief groove ;# -borderwidth 1
        ttk::label $w.f1.labelInfo -textvariable ::tactics::infoEngineLabel -background linen
        ttk::checkbutton $w.f1.cbWinWonGame -text $::tr(WinWonGame) -variable ::tactics::winWonGame
        pack $w.f1.labelInfo $w.f1.cbWinWonGame -expand yes -fill both -side top
        
        ttk::frame $w.fclock
        ::gameclock::new $w.fclock 1 80 0
        ::gameclock::reset 1
        ::gameclock::start 1
        
        ttk::frame $w.f2 -relief groove
        ttk::checkbutton $w.f2.cbSolution -text $::tr(ShowSolution) -variable ::tactics::showSolution -command ::tactics::toggleSolution
        ttk::label $w.f2.lSolution -textvariable ::tactics::labelSolution -wraplength 120
        pack $w.f2.cbSolution $w.f2.lSolution -expand yes -fill both -side top
        
        ttk::frame $w.fbuttons -relief groove -borderwidth 1
        pack $w.f1 $w.fclock $w.f2 $w.fbuttons -expand yes -fill both
        
        setInfoEngine $::tr(LoadingBase)
        
        ttk::button $w.fbuttons.next -text $::tr(Next) -command {
            ::tactics::stopAnalyze
            ::tactics::loadNextGame }
        ttk::button $w.fbuttons.close -textvar ::tr(Abort) -command ::tactics::endTraining
        pack $w.fbuttons.next $w.fbuttons.close -expand yes -fill both -padx 20 -pady 2
        bind $w <Destroy> { ::tactics::endTraining }
        bind $w <Configure> "recordWinSize $w"
        bind $w <F1> { helpWindow TacticsTrainer }
        createToplevelFinalize $w
        
        ::tactics::loadBase [file rootname $base]
        
        setInfoEngine "---"
        ::tactics::loadNextGame
        ::tactics::mainLoop
    }
    ################################################################################
    #
    ################################################################################
    proc endTraining {} {
        set w .tacticsWin
        ::tactics::stopAnalyze
        after cancel ::tactics::mainLoop
        catch { sc_base close }
        updateMenuStates
        updateStatusBar
        updateTitle
        set ::askToReplaceMoves $::tactics::askToReplaceMoves_old
        focus .
        destroy $w
        
        catch { ::uci::closeUCIengine $::tactics::engineSlot }
    }
    ################################################################################
    #
    ################################################################################
    proc toggleSolution {} {
        global ::tactics::showSolution ::tactics::labelSolution ::tactics::analysisEngine
        if {$showSolution} {
            set labelSolution "$analysisEngine(score) : [::trans $analysisEngine(moves)]"
        } else  {
            set labelSolution ". . . . . . "
        }
    }
    ################################################################################
    #
    ################################################################################
    proc resetScores {name} {
        global ::tactics::cancelScoreReset ::tactics::baseList
        
        set base [file rootname $name]
        
        set wasOpened 0
        
        if {[sc_base count free] == 0} {
            tk_messageBox -type ok -icon info -title "Scid" -message "Too many databases are opened\nClose one first"
            return
        }
        # check if the base is already opened
        if {[sc_base slot $name] != 0} {
            sc_base switch [sc_base slot $name]
            set wasOpened 1
        } else  {
            if { [catch { sc_base open $base }] } {
                tk_messageBox -type ok -icon warning -title "Scid" -message "Unable to open base"
                return
            }
        }
        
        #reset site tag for each game
        progressWindow "Scid" $::tr(ResettingScore) $::tr(Cancel) "::tactics::sc_progressBar"
        set numGames [sc_base numGames]
        set cancelScoreReset 0
        for {set g 1} { $g <= $numGames } { incr g} {
            if { $cancelScoreReset } { break }
            sc_game load $g
            if { [sc_game tags get "Site"] != ""} {
                sc_game tags set -site ""
                sc_game save [sc_game number]
            }
            if { [expr $g % 100] == 0 } {
                updateProgressWindow $g $numGames
            }
        }
        closeProgressWindow
        if { ! $wasOpened } {
            sc_base close
        }
        # update listbox
        set w ".configTactics"
        set cs [$w.fconfig.flist.lb curselection]
        set idx [expr $cs * 2 +1]
        set tmp [lindex $baseList $idx]
        regsub "\[(\]\[0-9\]+/" $tmp "(0/" tmp
        lset baseList $idx $tmp
        $w.fconfig.flist.lb delete 0 end
        for {set i 1} {$i<[llength $baseList]} {incr i 2} {
            $w.fconfig.flist.lb insert end [lindex $baseList $i]
        }
        $w.fconfig.flist.lb selection set $cs
    }
    ################################################################################
    # cancel score reset loading
    ################################################################################
    proc sc_progressBar {} {
        set ::tactics::cancelScoreReset 1
    }
    ################################################################################
    #
    ################################################################################
    proc loadNextGame {} {
        ::tactics::resetValues
        setInfoEngine $::tr(LoadingGame)
        set newGameFound 0
        # find a game with site tag != problem solved
        for {set g [ expr $::tactics::lastGameLoaded +1 ] } { $g <= [sc_base numGames]} { incr g} {
            sc_game load $g
            set tag [sc_game tags get "Site"]
            if {$tag != $::tactics::solved} { set newGameFound 1 ; break }
        }
        # it seems we finished the serial
        if {! $newGameFound } {
            tk_messageBox -title "Scid" -icon info -type ok -message $::tr(AllExercisesDone)
            return
        }
        set ::tactics::lastGameLoaded $g
        
        sideToMoveAtBottom
        
        ::gameclock::reset 1
        ::gameclock::start 1
        
        updateBoard -pgn
        set ::tactics::prevFen [sc_pos fen]
        ::windows::gamelist::Refresh
        ::tree::refresh
        ::windows::stats::Refresh
        updateMenuStates
        updateTitle
        updateStatusBar
        ::tactics::startAnalyze
        ::tactics::mainLoop
    }
    ################################################################################
    # flips the board if necessary so the side to move is at the bottom
    ################################################################################
    proc sideToMoveAtBottom {} {
        if { [sc_pos side] == "white" && [::board::isFlipped .main.board] || [sc_pos side] == "black" &&  ![::board::isFlipped .main.board] } {
            ::board::flip .main.board
        }
    }
    ################################################################################
    #
    ################################################################################
    proc isPlayerTurn {} {
        if { [sc_pos side] == "white" &&  ![::board::isFlipped .main.board] || [sc_pos side] == "black" &&  [::board::isFlipped .main.board] } {
            return 1
        }
        return 0
    }
    ################################################################################
    #
    ################################################################################
    proc exSolved {} {
        ::tactics::stopAnalyze
        ::gameclock::stop 1
        tk_messageBox -title "Scid" -icon info -type ok -message $::tr(MateFound)
        sc_game tags set -site $::tactics::solved
        sc_game save [sc_game number]
        ::tactics::loadNextGame
    }
    ################################################################################
    # Handle the case where position was changed not during normal play but certainly with
    # move back / forward / rewind commands
    ################################################################################
    proc abnormalContinuation {} {
        ::tactics::stopAnalyze
        ::tactics::resetValues
        ::windows::gamelist::Refresh
        ::tree::refresh
        ::windows::stats::Refresh
        updateMenuStates
        updateTitle
        updateStatusBar
        updateBoard -pgn
        if { [sc_pos side] == "white" && [::board::isFlipped .main.board] || [sc_pos side] == "black" &&  ![::board::isFlipped .main.board] } {
            ::board::flip .main.board
        }
        set ::tactics::prevFen [sc_pos fen]
        ::tactics::startAnalyze
        ::tactics::mainLoop
    }
    ################################################################################
    # waits for the user to play and check the move played
    ################################################################################
    proc mainLoop {} {
        global ::tactics::prevScore ::tactics::prevLine ::tactics::analysisEngine ::tactics::nextEngineMove
        
        after cancel ::tactics::mainLoop
        
        if {[sc_pos fen] != $::tactics::prevFen && [sc_pos isAt start]} {
            ::tactics::abnormalContinuation
            return
        }
        
        # is this player's turn (which always plays from bottom of the board) ?
        if { [::tactics::isPlayerTurn] } {
            after 1000  ::tactics::mainLoop
            return
        }
        
        set ::tactics::prevFen [sc_pos fen]
        
        # check if player's move is a direct mate : no need to wait for engine analysis in this case
        set move_done [sc_game info previousMove]
        if { [string index $move_done end] == "#"} { ::tactics::exSolved; return }
        
        # if the engine is still analyzing, wait the end of it
        if {$analysisEngine(analyzeMode)} { vwait ::tactics::analysisEngine(analyzeMode) }
        
        if {[sc_pos fen] != $::tactics::prevFen  && [sc_pos isAt start]} {
            ::tactics::abnormalContinuation
            return
        }
        
        # the player moved and analysis is over : check if his move was as good as expected
        set prevScore $analysisEngine(score)
        set prevLine $analysisEngine(moves)
        ::tactics::startAnalyze
        
        # now wait for the end of analyzis
        if {$analysisEngine(analyzeMode)} { vwait ::tactics::analysisEngine(analyzeMode) }
        if {[sc_pos fen] != $::tactics::prevFen  && [sc_pos isAt start]} {
            ::tactics::abnormalContinuation
            return
        }
        
        # compare results
        set res [::tactics::foundBestLine]
        if {  $res != ""} {
            tk_messageBox -title "Scid" -icon info -type ok -message "$::tr(BestSolutionNotFound)\n$res"
            # take back last move so restore engine status
            set analysisEngine(score) $prevScore
            set analysisEngine(moves) $prevLine
            sc_game tags set -site $::tactics::failed
            sc_game save [sc_game number]
            sc_move back
            updateBoard -pgn
            set ::tactics::prevFen [sc_pos fen]
        } else  {
            catch { sc_move addSan $nextEngineMove }
            set ::tactics::prevFen [sc_pos fen]
            updateBoard -pgn
            if { $::tactics::matePending } {
                # continue until end of game
            } else  {
                setInfoEngine $::tr(GoodMove)
                sc_game tags set -site $::tactics::solved
                sc_game save [sc_game number]
            }
        }
        
        after 1000 ::tactics::mainLoop
    }
    ################################################################################
    # Returns "" if the user played the best line, otherwise an explanation about the missed move :
    # - guessed the same next move as engine
    # - mate found in the minimal number of moves
    # - combinaison's score is close enough (within 0.5 point)
    ################################################################################
    proc foundBestLine {} {
        global ::tactics::analysisEngine ::tactics::prevScore ::tactics::prevLine ::tactics::nextEngineMove ::tactics::matePending
        set score $analysisEngine(score)
        set line $analysisEngine(moves)
        
        set s [ regsub -all "\[\.\]{3} " $line "" ]
        set s [ regsub -all "\[0-9\]+\[\.\] " $s "" ]
        set nextEngineMove [ lindex [ split $s ] 0 ]
        set ply [ llength [split $s] ]
        
        # check if the player played the same move predicted by engine
        set s [ regsub -all "\[\.\]{3} " $prevLine "" ]
        set s [ regsub -all "\[0-9\]+\[\.\] " $s "" ]
        set prevBestMove [ lindex [ split $s ] 1 ]
        if { [sc_game info previousMoveNT] == $prevBestMove} {
            return ""
        }
        
        # Case of mate
        if { [string index $prevLine end] == "#"} {
            set matePending 1
            #  Engine may find a mate then put a score != 300 but rather 10
            if {[string index $line end] != "#"} {
                # Engine line does not end with a # but the score is a mate (we can't count plies here)
                if {[sc_pos side] == "white" && $score < -300 || [sc_pos side] == "black" && $score > 300} {
                    return ""
                }
                if {! $::tactics::winWonGame } {
                    return $::tr(MateNotFound)
                } else  {
                    # win won game but still have to find a mate
                    if {[sc_pos side] == "white" && $score < -300 || [sc_pos side] == "black" && $score > 300} {
                        return ""
                    } else  {
                        return $::tr(MateNotFound)
                    }
                }
            }
            # Engine found a mate, search in how many plies
            set s [ regsub -all "\[\.\]{3} " $prevLine "" ]
            set s [ regsub -all "\[0-9\]+\[\.\] " $s "" ]
            set prevPly [ llength [ split $s ] ]
            if { $ply > [ expr $prevPly - 1 ] && ! $::tactics::winWonGame } {
                return $::tr(ShorterMateExists)
            } else  {
                return ""
            }
        } else  {
            # no mate case
            set matePending 0
            set threshold 0.5
            if {$::tactics::winWonGame} {
                # Only alert when the advantage clearly changes side
                if {[sc_pos side] == "white" && $prevScore < 0 && $score >= $threshold  || \
                            [sc_pos side] == "black" &&  $prevScore >= 0 && $score < [expr 0 - $threshold]  } {
                    return "$::tr(ScorePlayed) $score\n$::tr(Expected) $prevScore"
                } else  {
                    return ""
                }
            }
            if {[ expr abs($prevScore) ] > 3.0 } { set threshold 1.0 }
            if {[ expr abs($prevScore) ] > 5.0 } { set threshold 1.5 }
            # the player moved : score is from opponent side
            if {[sc_pos side] == "white" && $score < [ expr $prevScore + $threshold ] || \
                        [sc_pos side] == "black" && $score > [ expr $prevScore - $threshold ] } {
                return ""
            } else  {
                return "$::tr(ScorePlayed) $score\n$::tr(Expected) $prevScore"
            }
        }
    }
    ################################################################################
    # Loads a base bundled with Scid (in ./bases directory)
    ################################################################################
    proc loadBase { name } {
        
        if {[sc_base count free] == 0} {
            tk_messageBox -type ok -icon info -title "Scid" -message "Too many databases are open; close one first"
            return
        }
        # check if the base is already opened
        if {[sc_base slot $name] != 0} {
            sc_base switch [sc_base slot $name]
        } else  {
            if { [catch { sc_base open $name }] } {
                tk_messageBox -type ok -icon warning -title "Scid" -message "Unable to open base"
                return
            }
        }
        
        ::windows::gamelist::Refresh
        ::tree::refresh
        ::windows::stats::Refresh
        updateMenuStates
        updateBoard -pgn
        updateTitle
        updateStatusBar
    }
    ################################################################################
    ## resetValues
    #   Resets global data.
    ################################################################################
    proc resetValues {} {
        set ::tactics::prevScore 0
        set ::tactics::prevLine ""
        set ::tactics::nextEngineMove ""
        set ::tactics::matePending 0
        set ::tactics::showSolution 0
        set ::tactics::labelSolution ""
        set ::tactics::prevFen ""
    }
    ################################################################################
    #
    ################################################################################
    proc  restoreAskToReplaceMoves {} {
        set ::askToReplaceMoves $::tactics::askToReplaceMoves_old
    }
    ################################################################################
    #
    ################################################################################
    proc setInfoEngine { s { color linen } } {
        set ::tactics::infoEngineLabel $s
        .tacticsWin.f1.labelInfo configure -background $color
    }
    
    ################################################################################
    #  Will start engine
    # in case of an error, return 0, or 1 if the engine is ok
    ################################################################################
    proc launchengine {} {
        global ::tactics::analysisEngine
        
        ::uci::resetUciInfo $::tactics::engineSlot
        
        set analysisEngine(analyzeMode) 0
        
        # find engine
        set engineFound 0
        set index 0
        foreach e $::engines(list) {
            if { [string equal -nocase -length 4 [lindex $e 0] "toga" ] } {
                set engineFound 1
                break
            }
            incr index
        }
        if { ! $engineFound } {
            tk_messageBox -type ok -icon warning -parent . -title "Scid" -message "Unable to find engine.\nPlease configure engine with Toga as name"
            return 0
        }
        
        ::uci::startEngine $index $::tactics::engineSlot ;# start engine in analysis mode
        return 1
    }
    
    # ======================================================================
    # sendToEngine:
    #   Send a command to a running analysis engine.
    # ======================================================================
    proc sendToEngine {text} {
        ::uci::sendToEngine $::tactics::engineSlot $text
    }
    
    # ======================================================================
    # startAnalyzeMode:
    #   Put the engine in analyze mode
    # ======================================================================
    proc startAnalyze { } {
        global ::tactics::analysisEngine ::tactics::analysisTime
        setInfoEngine "$::tr(Thinking) ..." PaleVioletRed
        
        # Check that the engine has not already had analyze mode started:
        if {$analysisEngine(analyzeMode)} {
            ::tactics::sendToEngine  "exit"
        }
        
        set analysisEngine(analyzeMode) 1
        after cancel ::tactics::stopAnalyze
        ::tactics::sendToEngine "position fen [sc_pos fen]"
        ::tactics::sendToEngine "go infinite"
        after [expr 1000 * $analysisTime] ::tactics::stopAnalyze
    }
    # ======================================================================
    # stopAnalyzeMode:
    #   Stop the engine analyze mode
    # ======================================================================
    proc stopAnalyze { } {
        global ::tactics::analysisEngine ::tactics::analysisTime
        # Check that the engine has already had analyze mode started:
        if {!$analysisEngine(analyzeMode)} { return }
        
        set pv [lindex $::analysis(multiPV$::tactics::engineSlot) 0]
        set analysisEngine(score) [lindex $pv 1]
        set analysisEngine(moves) [lindex $pv 2]
        
        set analysisEngine(analyzeMode) 0
        ::tactics::sendToEngine  "stop"
        setInfoEngine $::tr(AnalyzeDone) PaleGreen3
    }
    
}

###
### End of file: tactics.tcl
###
### reviewgame.tcl: part of Scid.
### Copyright (C) 2009  Pascal Georges
###
######################################################################
### Try to guess the moves of a game
#

# TODO :
# - permettre tourner l'échiquier après le démarrage

namespace eval reviewgame {
  
  set prevScore 0
  set prevLine ""
  set nextEngineMove ""
  set prevFen ""
  set engineSlot 6
  set window ".reviewgame"
  set timeShort 5
  set timeExtended 1
  set margin 0.3
  set moveOfGameIsBest 0
  # The score of the move really played
  set scoreGame 0.0
  # The score of the user's move
  set scorePlayed 0.0
  # Score of the engine
  set scoreEngine 0.0
  
  set sequence 0
  set pushedgame 0
  
  array set analysisEngine {}
  
  set progressBarStep 1
  set progressBarTimer 0
  set autoProceed 0
}

################################################################################
#
################################################################################
proc ::reviewgame::start {} {
  set w $::reviewgame::window
  createToplevel $w
  setTitle $w [::tr "GameReview" ]
  setWinLocation $w
  wm minsize $w 200 200
  
  ttk::frame $w.fgameinfo
  set welo [sc_game tags get WhiteElo]
  set belo [sc_game tags get BlackElo]
  if { $welo == "0"} { set welo "-" }
  if { $belo == "0"} { set belo "-" }
  ttk::label $w.fgameinfo.l1 -text "[sc_game tags get White] ($welo) - [sc_game tags get Black] ($belo)"
  set result [sc_game tags get Result]
  if { $result == "1" } { set result "1-0" }
  if { $result == "0" } { set result "0-1" }
  if { $result == "=" } { set result "1/2 - 1/2" }
  ttk::label $w.fgameinfo.l2 -text "$result"
  pack $w.fgameinfo.l1 $w.fgameinfo.l2
  pack $w.fgameinfo -expand 1 -fill both
  
  ttk::frame $w.fparam
  ttk::label $w.fparam.ltime1 -text "[::tr Time] ([::tr sec])"
  spinbox $w.fparam.time1 -values { 5 10 15 30 45 60 90 120 } -command { set ::reviewgame::timeShort [$::reviewgame::window.fparam.time1 get] }
  $w.fparam.time1 set $::reviewgame::timeShort
  ttk::label $w.fparam.ltime2 -text "[::tr GameReviewTimeExtended] ([ ::tr min])"
  spinbox $w.fparam.time2 -values { 1 2 3 4 5} -command { set ::reviewgame::timeExtended [$::reviewgame::window.fparam.time1 get] }
  $w.fparam.time2 set $::reviewgame::timeExtended
  ttk::label $w.fparam.lmargin -text "[::tr GameReviewMargin]"
  spinbox $w.fparam.margin -from 0.1 -to 1.0 -increment 0.1 -command { set ::reviewgame::margin [$::reviewgame::window.fparam.time1 get] }
  $w.fparam.margin set $::reviewgame::margin
  
  set row 0
  grid $w.fparam.ltime1 -column 0 -row $row -sticky nw
  grid $w.fparam.time1 -column 1 -row $row -sticky nw
  incr row
  grid $w.fparam.ltime2 -column 0 -row $row -sticky nw
  grid $w.fparam.time2 -column 1 -row $row -sticky nw
  incr row
  grid $w.fparam.lmargin -column 0 -row $row -sticky nw
  grid $w.fparam.margin -column 1 -row $row -sticky nw
  incr row
  
  ttk::checkbutton $w.fparam.cbproceed -text "[::tr GameReviewAutoContinue]" -variable ::reviewgame::autoProceed
  grid $w.fparam.cbproceed -column 0 -row $row  -columnspan 2 -sticky nw
  
  pack $w.fparam -expand 1 -fill both
  
  ttk::frame $w.finfo
  pack $w.finfo -expand 1 -fill both
  ttk::progressbar $w.finfo.pb -orient horizontal -length 100 -value 0 -mode determinate
  ttk::label $w.finfo.pblabel -image ReviewGameStop -compound left
  ttk::label $w.finfo.sc1 -text "-"
  ttk::label $w.finfo.sc2 -text "-"
  ttk::label $w.finfo.sc3 -foreground blue -text "-"
  ttk::button $w.finfo.proceed -textvar ::tr(Continue) -command ::reviewgame::proceed
  ttk::button $w.finfo.extended -text "[::tr GameReviewReCalculate]" -command ::reviewgame::extendedTime
  
  set row 0
  grid $w.finfo.pb -column 0 -row $row -sticky nw
  incr row
  grid $w.finfo.pblabel -column 0 -row $row -sticky nw
  incr row
  grid $w.finfo.proceed -column 0 -row $row -sticky nw
  grid $w.finfo.extended -column 1 -row $row -sticky nw
  incr row
  grid $w.finfo.sc1 -column 0 -row $row  -columnspan 2 -sticky nw
  incr row
  grid $w.finfo.sc2 -column 0 -row $row  -columnspan 2 -sticky nw
  incr row
  grid $w.finfo.sc3 -column 0 -row $row  -columnspan 2 -sticky nw
  incr row
  
  ttk::button $w.finfo.sol -text [::tr ShowSolution ] -command ::reviewgame::showSolution
  grid $w.finfo.sol -column 0 -row $row  -sticky nw
  incr row
  
  # Display statistics
  ttk::label $w.finfo.stats -text ""
  grid $w.finfo.stats -column 0 -row $row -sticky nw -columnspan 3
  
  ttk::frame $w.fbuttons
  pack $w.fbuttons -fill x
  ttk::button $w.fbuttons.close -textvar ::tr(Abort) -command ::reviewgame::endTraining
  pack $w.fbuttons.close -expand 1 -fill x
  
  set ::reviewgame::boardFlipped [::board::isFlipped .main.board]
  
  if { ! [::reviewgame::launchengine] } {
    tk_messageBox -title "Scid" -icon error -type ok -message "Error launching engine"
    return
  }
  
  bind $w <Destroy> { ::reviewgame::endTraining }
  bind $w <Configure> "recordWinSize $w"
  bind $w <F1> { helpWindow ReviewGame }
  
  set ::reviewgame::prevFen [sc_pos fen]
  set ::reviewgame::movesLikePlayer 0
  set ::reviewgame::movesLikeEngine 0
  set ::reviewgame::numberMovesPlayed 0
  ::reviewgame::resetValues
  ::reviewgame::mainLoop
  
}
################################################################################
#
################################################################################
proc ::reviewgame::showSolution {} {
  set w $::reviewgame::window
  $w.finfo.sol configure -text "[ sc_game info nextMove ]"
  set ::reviewgame::solutionDisplayed 1
}
################################################################################
#
################################################################################
proc ::reviewgame::endTraining {} {
  set w $::reviewgame::window
  
  if {$::reviewgame::pushedgame} {
    sc_game pop
    sc_info preMoveCmd preMoveCommand
  }
  
  after cancel ::reviewgame::mainLoop
  set ::reviewgame::bailout 1
  set ::reviewgame::sequence 0
  after cancel ::reviewgame::stopAnalyze
  ::reviewgame::stopAnalyze
  focus .
  bind $w <Destroy> {}
  destroy $w
  ::docking::cleanup $w
  
  catch { ::uci::closeUCIengine $::reviewgame::engineSlot }
}
################################################################################
#
################################################################################
proc ::reviewgame::isPlayerTurn {} {
  if { [sc_pos side] == "white" &&  ![::board::isFlipped .main.board] || [sc_pos side] == "black" &&  [::board::isFlipped .main.board] } {
    return 1
  }
  return 0
}
################################################################################
# Handle the case where position was changed not during normal play but certainly with
# move back / forward / rewind commands
################################################################################
proc ::reviewgame::abnormalContinuation {} {
  ::reviewgame::stopAnalyze
  ::reviewgame::resetValues
  ::windows::gamelist::Refresh
  ::tree::refresh
  ::windows::stats::Refresh
  updateMenuStates
  updateTitle
  updateStatusBar
  updateBoard -pgn
  if { [sc_pos side] == "white" && [::board::isFlipped .main.board] || [sc_pos side] == "black" &&  ![::board::isFlipped .main.board] } {
    ::board::flip .main.board
  }
  set ::reviewgame::prevFen [sc_pos fen]
  ::reviewgame::startAnalyze
  ::reviewgame::mainLoop
}
################################################################################
# waits for the user to play and check the move played
################################################################################
proc ::reviewgame::mainLoop {} {
  global ::reviewgame::prevScore ::reviewgame::prevLine ::reviewgame::analysisEngine ::reviewgame::nextEngineMove
  global ::reviewgame::sequence ::reviewgame::useExtendedTime
  set w $::reviewgame::window
  
  after cancel ::reviewgame::mainLoop
  
  if { ! [ checkConsistency ] } { puts "ERROR checkConsistency returns false" ; return }
  
  if { $useExtendedTime } {
    set ::reviewgame::thinkingTime [expr $::reviewgame::timeExtended * 60 ]
  } else {
    set ::reviewgame::thinkingTime $::reviewgame::timeShort
  }
  
  # in start position, it must be user's turn
  if { ! [::reviewgame::isPlayerTurn] && $sequence == 0} {
    if { [ sc_game info nextMoveNT ] != ""} {
      ::move::Forward
    }
  }
  
  $w.finfo.proceed configure -state disabled
  $w.finfo.sol configure -state disabled
  
  # Phase 1 : analyze the move really played during the game
  if {$sequence == 0} {
    $w.finfo.sc1 configure -text ""
    $w.finfo.sc2 configure -text ""
    set ::reviewgame::movePlayed [ sc_game info nextMoveNT ]
    if {$::reviewgame::movePlayed == ""} {
      return
    }
    $w.finfo.pblabel configure -image ReviewGameStop -text "[::tr GameReviewAnalyzingMovePlayedDuringTheGame]"
    ::reviewgame::startAnalyze $::reviewgame::thinkingTime $::reviewgame::movePlayed
    vwait ::reviewgame::sequence
    if { $::reviewgame::bailout } { return }
  }
  
  # Phase 2 : find the best engine move in current position
  if { $sequence == 1 } {
    $w.finfo.pblabel configure -image ReviewGameStop -text "[::tr GameReviewAnalyzingThePosition]"
    ::reviewgame::startAnalyze $::reviewgame::thinkingTime
    vwait ::reviewgame::sequence
    if { $::reviewgame::bailout } { return }
  }
  
  $w.finfo.pblabel configure -image ReviewGameGreenArrowUp -text "[::tr GameReviewEnterYourMove]"
  $w.finfo.sol configure -state normal
  
  # is this player's turn (which always plays from bottom of the board) ?
  if { [::reviewgame::isPlayerTurn] } {
    after 1000  ::reviewgame::mainLoop
    return
  }
  
  $w.finfo.sol configure -text "[::tr ShowSolution]"
  
  checkPlayerMove
  
  $w.finfo.proceed configure -state normal
  $w.finfo.extended configure -state normal
  updateStats
  set ::reviewgame::useExtendedTime 0
  after 1000  ::reviewgame::mainLoop
}
################################################################################
#
################################################################################
proc ::reviewgame::checkPlayerMove {} {
  global ::reviewgame::prevScore ::reviewgame::prevLine ::reviewgame::analysisEngine ::reviewgame::nextEngineMove
  global ::reviewgame::sequence ::reviewgame::useExtendedTime
  set w $::reviewgame::window
  
  incr ::reviewgame::numberMovesPlayed
  
  # Phase 3 : ponder on user's move if different of best engine move and move played
  # We know user has played
  set user_move [sc_game info previousMoveNT]
  
  # ponder on user's move if he did not play the same move as in match
  if {$user_move != $::reviewgame::movePlayed} {
    $w.finfo.pblabel configure -image ReviewGameStop -text "[::tr GameReviewCheckingYourMove]"
    $w.finfo.sc3 configure -text ""
    ::reviewgame::startAnalyze $::reviewgame::thinkingTime ;#$user_move
    vwait ::reviewgame::sequence
    if { $::reviewgame::bailout } { return }
    $w.finfo.pblabel configure -image ReviewGameStop -text "[::tr GameReviewYourMoveWasAnalyzed]"
    # display user's score
    $w.finfo.sc3 configure -text "[::tr GameReviewScoreOfYourMove] : $analysisEngine(score,2)"
  }
  
  # User guessed the correct move played in game
  if {$user_move == $::reviewgame::movePlayed } {
    
    set  ::reviewgame::sequence 0
    
    $w.finfo.sc3 configure -text "[::tr GameReviewYouPlayedSameMove]" -foreground "sea green"
    if {  ! $::reviewgame::solutionDisplayed } {
      incr ::reviewgame::movesLikePlayer
    }
    # Starting with Scid 4.1, when the move entered already exists it is not added but we simply move forward, so the code below is useless
    # set var [sc_var number]
    # sc_var exit
    # sc_var delete $var
    # sc_move forward
    # updateBoard -animate -pgn
    
    # display played move score
    $w.finfo.sc2 configure -text "[::tr GameReviewGameMoveScore] : $analysisEngine(score,1) [::trans $::reviewgame::movePlayed]"
    # display engine's score
    $w.finfo.sc1 configure -text "[::tr GameReviewEngineScore] : $analysisEngine(score,2) [::trans [lindex $analysisEngine(moves,2) 0]]"
    if { $::reviewgame::autoProceed } {
      # guessed the correct move played during the game, so continue directly
      proceed
    }
    $w.finfo.pblabel configure -image ReviewGameGreenArrowUp -text ""
    set sequence 0
  } elseif { $user_move == [ lindex $analysisEngine(moves,2) 0] || [ isGoodScore $analysisEngine(score,2) $analysisEngine(score,3)  ] } {
    
    set  ::reviewgame::sequence 0
    
    # User guessed engine's move
    if {$user_move == [ lindex $analysisEngine(moves,2) 0]} {
      $w.finfo.sc3 configure -text "[::tr GameReviewYouPlayedLikeTheEngine]" -foreground "sea green"
      incr ::reviewgame::movesLikeEngine
      
    } else  {
      $w.finfo.sc3 configure -text "[::tr GameReviewNotEngineMoveButGoodMove] : [::trans $user_move] ($analysisEngine(score,3))" -foreground blue
    }
    sc_var exit
    sc_move forward
    updateBoard -animate -pgn
    # display played move score
    $w.finfo.sc2 configure -text "[::tr GameReviewGameMoveScore] : $analysisEngine(score,1) [::trans $::reviewgame::movePlayed]"
    # display engine's score
    $w.finfo.sc1 configure -text "[::tr GameReviewEngineScore] $analysisEngine(score,2) [::trans [lindex $analysisEngine(moves,2) 0]]"
  } else  {
    
    # user played a bad move : comment it and restart the process
    
    set  ::reviewgame::sequence 2
    
    $w.finfo.sc3 configure -text "[::tr GameReviewMoveNotGood] $analysisEngine(score,3) \n([::trans $analysisEngine(moves,3)])" -foreground red
    sc_pos addNag "?"
    
    # Instead of adding info in comments, add real variations
    # sc_pos setComment "($analysisEngine(score,3)) $analysisEngine(moves,3) Engine : ($analysisEngine(score,2)) \n[::trans $analysisEngine(moves,2)]"
    sc_pos setComment "($analysisEngine(score,3))"
    sc_move addSan $analysisEngine(moves,3)
    sc_var exit
    sc_var create
    sc_pos setComment "Engine : ($analysisEngine(score,2))"
    sc_move addSan $analysisEngine(moves,2)
    sc_var exit
    updateBoard -pgn
    
    # allows a re-calculation
    $w.finfo.extended configure -state normal
    
    # display played move score
    $w.finfo.sc2 configure -text "[::tr GameReviewGameMoveScore] : $analysisEngine(score,1)"
    # display engine's score
    $w.finfo.sc1 configure -text "[::tr GameReviewEngineScore] $analysisEngine(score,2)"
    set  ::reviewgame::sequence 2
    # after 1000 ::reviewgame::mainLoop
    # return
  }
  
}
################################################################################
#
################################################################################
proc ::reviewgame::updateStats {} {
  
  set l $::reviewgame::window.finfo.stats
  if { ![::board::isFlipped .main.board] } {
    set player [sc_game info white]
  } else  {
    set player [sc_game info black]
  }
  
  $l configure -text "[::tr GameReviewMovesPlayedLike] $player : $::reviewgame::movesLikePlayer / $::reviewgame::numberMovesPlayed\n[::tr GameReviewMovesPlayedEngine] : $::reviewgame::movesLikeEngine / $::reviewgame::numberMovesPlayed"
}
################################################################################
#
################################################################################
proc ::reviewgame::isGoodScore {engine player} {
  global ::reviewgame::margin
  puts "isGoodScore engine $engine player $player"
  if { ![::board::isFlipped .main.board] } {
    # if player plays white
    if {$player >= [expr $engine - $margin]} {
      return 1
    }
  } else  {
    if {$player <= [expr $engine + $margin]} {
      return 1
    }
  }
  puts "return 0"
  return 0
}
################################################################################
## resetValues
#   Resets global data.
################################################################################
proc ::reviewgame::resetValues {} {
  set ::reviewgame::prevScore 0
  set ::reviewgame::prevLine ""
  set ::reviewgame::nextEngineMove ""
  set ::reviewgame::prevFen ""
  set ::reviewgame::sequence 0
  set ::reviewgame::analysisEngine(analyzeMode) 0
  set ::reviewgame::bailout 0
  set ::reviewgame::useExtendedTime 0
  set ::reviewgame::solutionDisplayed 0
}

################################################################################
#  Will start engine
# in case of an error, return 0, or 1 if the engine is ok
################################################################################
proc ::reviewgame::launchengine {} {
  global ::reviewgame::analysisEngine
  
  ::uci::resetUciInfo $::reviewgame::engineSlot
  
  set analysisEngine(analyzeMode) 0
  
  # find engine
  set engineFound 0
  set index 0
  foreach e $::engines(list) {
    if { [string equal -nocase -length 4 [lindex $e 0] "toga" ] } {
      set engineFound 1
      break
    }
    incr index
  }
  if { ! $engineFound } {
    tk_messageBox -type ok -icon warning -parent . -title "Scid" -message "Unable to find engine.\nPlease configure engine with Toga as name"
    return 0
  }
  
  ::uci::startEngine $index $::reviewgame::engineSlot ;# start engine in analysis mode
  return 1
}

# ======================================================================
# sendToEngine:
#   Send a command to a running analysis engine.
# ======================================================================
proc ::reviewgame::sendToEngine {text} {
  ::uci::sendToEngine $::reviewgame::engineSlot $text
}

# ======================================================================
# startAnalyzeMode:
#   Put the engine in analyze mode, from current position after move played (in UCI format), time is in seconds
# ======================================================================
proc ::reviewgame::startAnalyze { analysisTime { move "" } } {
  global ::reviewgame::analysisEngine ::reviewgame::engineSlot
  
  puts "startAnalyze $move"
  
  set pb $::reviewgame::window.finfo.pb
  set length [$pb cget -maximum]
  set ::reviewgame::progressBarTimer  [expr ( $analysisTime * 1000 * $::reviewgame::progressBarStep ) / $length ]
  after $::reviewgame::progressBarTimer ::reviewgame::updateProgressBar
  
  # Check that the engine has not already had analyze mode started:
  if {$analysisEngine(analyzeMode)} {
    ::reviewgame::sendToEngine  "exit"
  }
  set analysisEngine(analyzeMode) 1
  after cancel ::reviewgame::stopAnalyze
  
  # we want to ponder on a particular move, hence we need to switch to a temporary position so
  # UCI code can correctly format the variations
  if {$move != ""} {
    sc_info preMoveCmd {}
    sc_game push copyfast
    set ::reviewgame::pushedgame 1
    # puts "::uci::sc_move_add $move"
    # ::uci::sc_move_add $move
    sc_move addSan $move
    set ::analysis(fen$engineSlot) [sc_pos fen]
  } else  {
    set ::analysis(fen$engineSlot) ""
    set ::reviewgame::pushedgame 0
  }
  
  ::reviewgame::sendToEngine "position fen [sc_pos fen] $move"
  ::reviewgame::sendToEngine "go infinite"
  after [expr 1000 * $analysisTime] "::reviewgame::stopAnalyze $move"
}
# ======================================================================
# stopAnalyzeMode:
#   Stop the engine analyze mode
# ======================================================================
proc ::reviewgame::stopAnalyze { { move "" } } {
  global ::reviewgame::analysisEngine ::reviewgame::sequence
  
  # Check that the engine has already had analyze mode started:
  if { ! $analysisEngine(analyzeMode) } { return }
  
  after cancel ::reviewgame::updateProgressBar
  $::reviewgame::window.finfo.pb configure -value 0
  
  incr ::reviewgame::sequence
  set pv [lindex $::analysis(multiPV$::reviewgame::engineSlot) 0]
  set analysisEngine(score,$sequence) [lindex $pv 1]
  set analysisEngine(moves,$sequence) [lindex $pv 2]
  
  puts "résultat analyse $sequence : $analysisEngine(score,$sequence) $analysisEngine(moves,$sequence)"
  set analysisEngine(analyzeMode) 0
  ::reviewgame::sendToEngine  "stop"
  
  if {$move != ""} {
    sc_game pop
    sc_info preMoveCmd preMoveCommand
  }
}
################################################################################
#
################################################################################
proc ::reviewgame::proceed {} {
  # next cycle
  ::move::Forward
  ::reviewgame::resetValues
  set ::reviewgame::prevFen [sc_pos fen]
  after 1000 ::reviewgame::mainLoop
}
################################################################################
# Rethink on the position with extended time
################################################################################
proc ::reviewgame::extendedTime {} {
  
  # if already calculating, do nothing
  if { $::reviewgame::analysisEngine(analyzeMode)} {
    return
  }
  
  if { ![::reviewgame::isPlayerTurn] } {
    ::move::Back
  }
  
  set ::reviewgame::useExtendedTime 1
  set ::reviewgame::sequence 0
  ::reviewgame::mainLoop
  
}
################################################################################
#
################################################################################
proc ::reviewgame::updateProgressBar {} {
  $::reviewgame::window.finfo.pb step $::reviewgame::progressBarStep
  after $::reviewgame::progressBarTimer ::reviewgame::updateProgressBar
}
################################################################################
#
################################################################################
proc ::reviewgame::checkConsistency {} {
  if { $::reviewgame::boardFlipped != [::board::isFlipped .main.board] } {
    tk_messageBox -type ok -icon warning -title "Scid" -message "Choose the side BEFORE starting the exercise"
    return 0
  }
  return 1
}

################################################################################
#   returns 1 if the player is allowed to enter a move (pondering is done)
################################################################################
proc ::reviewgame::playerCanMove {} {
  if { ! [winfo exists $::reviewgame::window] } { return 1 }
  
  if { !  [::reviewgame::isPlayerTurn]  } {
    return 0
  } elseif { $::reviewgame::sequence == 2 } {
    return 1
  }
  
  puts "DEBUG : ::reviewgame::playerCanMove returned 0"
  return 0
}

################################################################################
# Image definitions
################################################################################
if { $::png_image_support } {
  image create photo ReviewGameStop -format png -data {
    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
  }
  image create photo ReviewGameGreenArrowUp -format png -data {
    iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAE1mlDQ1BJQ0MgUHJvZmlsZQAA
    eJzllWtMk3cUxp/37R2otFCLTNFXxhBZYR2grEII0CEDEbBUoIx09iZUW3jzUhFkUxlG8IYX
    mMrChhIUlWwuKA4ZzhsToolDzJDhvGA13hBvgwREuw9d5INxyT57Pj15knNyzj/5/R+Af1RH
    0xYSgDXPxqjiY6lMTRbF6wUXfEjgCU+doYCOSU1NwltrpBcEAFwO0tG0pSlpvulm6/X5vgP6
    DY+OBxnf3gcAEDKZmiyAoABIcpw6DIBE79SfAZCstNE2gMgGIDHk6owAQQOQMWqVEiBqAYzn
    qFVKgNwNYFyvVikBVjWA8UJDjg1gbwMgzzOa8wD2KYA1yWgqMAC8bgAbDTRjA/jZAIKs1nwj
    wN8MICBTk0U518xfBygOAqTPhLcEwE85gPTxhDdLBUi9gDbphPd8BggAxCc/FywNDQEAEOI2
    gO/ncAzVAC6VwMt5DseY2OEY7wE4MqBpumEFU/jvGxUBYMEFXpiNGGhRikPoJ8REClFNDJDh
    5E7yFYtmDbIZDpuzl5vAfcU7yd8sMLkkuka6zRMqJ2W4F4rqxY88MyU3paVT5nqPTu3w2Toj
    dSbbt92vxD82wH327Q9PB+3/qOrjitDyOZXhexTtEfYoaXR6bP2nL+KXJPQkpST3LbKq3dJb
    NOZsf+2grs24LceyLMUaTvsVSAp5ReMlT1ffKb2yrqu8deOBLbu3VVSV7KRrzLVL68z1zL6y
    A983dfw43BzWUtZqb1988trZFZ3S82cuFvdE9gr/HLzWP9B3594D16GYZ1tGnrxY7nC8cbsb
    pkKOBbDiG3RglJhLrCLOkd6kjexjxbHa2Ar2aU4a5zF3J28+n+B3Cna5MK4ZbvHCmElx7iqR
    WVzp0SFxnayXnp8S4901VetDTD9C0b6Rfl7+xKyxQMgkwaFybUhV2KVwqUIf0RzFjs6MPRrn
    E1+VODmpPiVi0Q31loy4LE72xS++0xeYknODl4usw3R/wa+Fe4vXfqlZIysdWXes3Lpx2ubf
    tubu4FU37IquuV67us5v76WG8sbEQ9N+wOHRI4Jjc46vaR88taYjoPPGhcbfyy+XXam7ar+Z
    dnv4fvfQw7+TRl+8cTsJASR4H+FIRR524Bc8ICgim9hDPCSjyBryJWs5y842sp9yKriB3D7e
    dn6GIMCF4zLkesttQDjoDpGPWOXRKPGe3Oi10Jv3Xve0huklVIpvoJ+HPy9AEOglkwenydeG
    tIQ9DQ9VFEeciRJGp8fuj0O8MaEnKTH5/CJ12t30rzUffN6tLdNFGsaXnjFXWrT5oYzQdn9l
    16qDX21am1eWvD5wA3vT1crm7RXVS3YpvvWqHauz1/+xr/tAX9Ojwx7NCS3VrSPtzCnB2aOd
    yy4EXXT02Hv/6n94Q2LX3D0xGPfk2XDX2AWHw8mqkxDnnwIA90on9PPc15oAnDwDAIsLNJQD
    i+3AgnNATSLgHwl4GoFUIaBWgLhlADEwE8QDMVgoAvmuUfWukfSu0QM4Mw0AIDIv1Bkopc5i
    1jM6m+l1DItgxkLoYAAFJXSwwAw9GOhggwnG/2r9f2UzFdkAQJlPFzPmnFwbFUPTFhOlzLfS
    K2wmRkYl5BmCZVSIXB4KAM7cBQCuCKjNAoATz7RvzP0HbnfbUKLmT0AAAAOFSURBVFiF7ZZN
    bxtVFIafGcfYsdPQhhQCSQ2lMSWldd2qqEQxtbxigxNvovYXgCKhqlAIsMC1I2CBlDUSvwAh
    sUDsQLRNoUICNqy6S5yoJUmd0Hz5a+Z+sMg4dUkcjxWnYsGRXo3OzL33PPe9Z0YD/8ceY/Qb
    PHuZv6fJiU+73rNXOm+HEr713PXSr48VIDHRnT0VOvb5ZxffJ5efe6MjWvBO3yxffywA8Ux3
    9uTzL6bffTOF6VnkfH+E6fzyheCZgnemSYimAeKZ7uwrfaH0lWQKxX1suY42ygyGzzBzf+lC
    e7Tsz90s/bQvAPFrXdmBvlD6ynAKqRcRsoDSCqksNGUGXzpLbjEfC0Qr/tyUOwjXAPFrXdmB
    3lD6cjKFUAvYsojUCuVIKBulSwweP8tcfjnWHi36c1PlhhCuAOKfdGXDz/SmLw+PYKn5muK6
    RpsQUpd4LRxlLv93zH+65J+9tTtEQ4DEx53p/mf7Mu+khqnIeSxRQCqJUmpHCWkhdInz4Qjz
    y6sx3+k1/+wtqy7ErgCJDzvSR587kh1LJimLe1TEBlLLLdvrqQpxLhxhIb8WC5wqBHM/V35s
    CiDxQUf6SE9vdmwkSUnepWJvoFwUfwRCFXg1HOGvpdWh4IliMHd7O8SOAEPjvuMv9PR9O37p
    bTymwDR8mOYT2MLCkmWkUrvKY7QT8B3G730Kr8dP7OTrTC/khgKR1R9mfxF3a2sZdR24Gkgr
    wxgzDKOnei/z1iUeFObqTdmKQ8EQma++3sq1YsNEfnljsjT+77Ft9Ra5MVmcACaqefxqUJv4
    sIRoCGDiQyvN1GSh7gYbAmwLpbGloCLshkNtKUBpV8s2BSCkdOWAkLL1AFppFtbuMLP0e8Ox
    Xo+JbrkDWiOUxpKNFxZKg24hwOgonrwGW0gs4QJA6tYewYNDdHjbvFhSYzVuAYQErVzVb+4I
    pAJbugBQtPYIYLMJhdTYbntgP5pQqk17G4XaHwdAasfeBiHVPvWAUhrpwlql9/YaVr/fHkfm
    nT858HJU0//0Cdz8RB07PAD6N4BOQALCuSpAO3qkWG1uAF6gHTgAPAl0nhvhI/9BI+lqW0B5
    RX//x3d8AawDq8AaUATsGpAdAUwHIOAUP+jsJAj4nGdtPHTIcBZTNTu1gQpQcgqvOCoA1m4A
    tRCmU8jryOPk1WfVcdWoQlQleWi/xfZj+G/EP1VWJXk/DmpqAAAAAElFTkSuQmCC
  }
} else  {
  image create photo ReviewGameStop -format gif -data {
    R0lGODlhIAAgAOfgAEEEAE4JBF0FAFcKBWgHAmMMAHEGAWQNAHMJA24OAHwHAnYMAH0JA3cO
    AH8LAHgPAIANAHkRAYEOAIkLA4IQAIoNAIMRAIsPAIQTAYYUAIwRAI4SAIcWBI8UAZYQBJcR
    AJAVApgTAJEXA5MYAJIYA5kVAJsWAJQaBJUbAJwYAaQVAJ0ZAp4aAJcdB54bA6AcAJ8cBKEd
    AKgaAJshCqkcAbEZAKodAp0kDJ4lDa0gBLUeALwaA64hBakmDLghAb8eBcAfAKooDaQrErok
    A8IhAKYsE7wlALslBMMiAMoeA7QoCqctFLUpC70nAMQkAKkvFs0iBc4jAMcnAqwxF8goA88l
    AK0yGNEmANIoAK81GsQuDNMpALA2G7I3HNQrAbE3ItYsAq88I7A9JLE+JbM/JbRAJro+ItY2
    BLVBJ9Y2ENE7F7lEKtg5EtQ9ENY/G71JLb1JM79KLthBHcFMMNtEH71PNtdIH8VPM8BSONhJ
    J9tMKcRVO9xNKcZXPcJaQslZP8VcPsRcRNxUMt1VM85dQt9XNdRcP8xiRMtjSslmSshmUNdk
    Q9ZlSddmSsxqU9pnRs9rT9NpT9RqUMtwXNFvWNRxWtxwUONvTORwTeRxVNN3Y9l7YeN3XeV4
    WNx9Y+J8XuR+YN2Aa+V/YeGDaOiBY92GbumCZOeIbeqKb9uRet+PeuyMceiQd+WUf9+XheeV
    euaVgOCYhu2Ue+OYgemXfOuYfeWbg+uZhO2bhuiehu+cgeShjOugiOyhie+kjO2qle+sl+uw
    n/KumeyxoPSwm++zovG0nfC0o/O1nvK3pfO4pvS5p+67rfG8qPa6qPK9qfO+qvS/q/K/sfTA
    svDDs/bDtPfEtfPHtvTIt/XJuPfKufjLu/nMvPTQxPnPxPXSxf//////////////////////
    ////////////////////////////////////////////////////////////////////////
    /////////////////////////////////yH5BAEKAP8ALAAAAAAgACAAAAj+AP8JHEiwoMGD
    CBMqXMjwn4qHDRnG6KFIk6uLk7qoiGgwBp5d2LRly6aNW7dvzBzF4PhvhZVZ1axFo3YN2zVt
    2raZLDbGRcMVZY5FgxbtGaxKiBSVGkYtmjeZfnwqRLEmmbRmylplSTEwRYpAw6LVnFaHa8Ii
    xZw5S0apxMElx5xJi3Y1TMISqpQdKwYJxUEYto4lQ3YMWbJcZg2OKWZM2CYPB1t48kW5Vhhe
    wIABOoiilK9ftmYcJHEIl+lbTzy8wcULltuCJHjh2lXnoAc4tGTlRkPiX4lRsl6NMfhFVi1W
    kAuCyGIKlfM7vf916OP8j4iCcE6torTB4I1RpEz+kQLEgSCX8Iy6D9xwR9QpPOoHtpDUqf6i
    6AOFcOrUKP6/DG9kwkltBHEAiSifYGLJdQU9Yckli1xQUA1enKHEBANhYEYhesihhl8dVTiE
    BQW5UKEWJP5jQRaFDCKIHR5gYFAGTWBxhgwyEpRBGlCccR0FN+ghSB5yBJGicl5AgcVrBEFw
    RI86MACCGmq0kQYTERxEwRFnYEEFBQetsIWSNlABBY9HgGkQBGJCAQUMCEXw5BlJnBHFGU4c
    SRADHvR4BhEQJJRBFXVCQah/A0VAQhVUJAFFBwohgIKbVFDRhAUPEBQBBDxQUSEULmSqUAQt
    ULHFmEnQ0AEFGIhQJhZNWECRBAwNNBSBBTvYmEQVhvJKqKFUlFArRw948AOjVRBK6BlV8EAB
    ASwJNEADINCggxRUDFFDCRAIEG1BAAhAQAIGJHBAAN+mq266AQEAOw==
  }
  image create photo ReviewGameGreenArrowUp -format gif -data {
    R0lGODlhIAAgAOeWADRPADxfATxgATxhAjxiAz1kAz1lBD1nBT1oBkNnBz5qBkNoCENpCT5s
    B0BrBz5tCERrCURsCj9vCT9xCkVuC0VvDD9zCz9zDEFzCT90C0B1DEF2D0F6Dz59DT59ET99
    Ej9/EkB/EUB/Ez+AFECAE0KBEUSBEUGCFEaHF1SYAF6NJV6OJ1eaAVucAWKSKmSULF+fAWSV
    LWSiAmuXMWiaMGyYMmibMWmlAmqcMm6aNG2dNW2eNW+dNmygNm6fNm+pAm6gNm6hNm+hOHCi
    OHWtA3uwBIO0NIO0N4W2NYa2N4i3NYi3OIu5NYu5OI27OI+8NpG9OZK+NpW/OZjBN5nCOZzE
    OZ3FOqHHO6LIPanMQqfKXqnLYK/QRrXUSrnVZLvXVbzYT7zYUL3YZ8HbU8HbVMHbWMHcWsDb
    ZMLba8beV8beWMXeXcfeWMbeXsXeZ8rhYcviW8viXMvhYsziXMnfdczfdMvhcszgeM/kXs/k
    X9DkX8/kZc7id9Dje9PmZ9DketPmaNTnYtLkedHkfdTlfdjpZ9bmfdfpa9TljdbngNrrbtrr
    b9npgNnpgdvqgtvrhNrpk93rhN7sht/shuDued/rmv//////////////////////////////
    ////////////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////////////
    /////////////////////////////////yH5BAEKAP8ALAAAAAAgACAAAAj+AP8JHEiwoMGD
    CBMqXMiwocODKB46PBGk0hATEhWO6CGJ0iQhJTIeHIHj0aJCiiIBISGSIAgbjQ4FmnnI0Q4R
    Lf+BoJEIkB48QPP4YeQjhMgPMQjtmQOnadM4ewzp8JDxxR85bNJo3ZpGzRtBPDo8dHGnDZkx
    aNOmJbOGTw4ODVfQMRMGjN27eMGEKVOnxoaFKhANsuPmS5fDiBF/cWOnD6QZDDNomHyGi+XL
    l89M1nABw0MLaLKIHj0ajYWWE8RgWc2atZgJLSV4qUK7dm0vElo+uFKkt2/fVx60bGCFiPHj
    x600aOlgyo/n0KFTUdCyQpQb2LNnl4KgJYUnMsJMixcP5UDLCExgqF+/3omBlhCUtJhPn36T
    Ai0ZIGHBv3//JQS0tIARKRRooIFJDNBSAloc4eCDD24hQEsABGDhhRgGAEBOHHboYUsBAQA7
  }
}
###
### End of file: reviewgame.tcl
###
###
### metadata.tcl: part of Scid.
### Copyright (C) 2008 Alexander Wagner
###
### $Id: metadata.tcl,v 4.3 2011/02/13 18:12:02 arwagner Exp $
###
### Last change: <Fri, 2008/12/26 13:08:31 arwagner ingata>
###
### Read/Write/Show descriptive information for a specific database
###
#======================================================================

set m .menu.tools

# $m add command -label "Database information..." -command {::metadata::show}

#======================================================================
#
#======================================================================
namespace eval metadata {

	set metadatafilename        ""
	set DBMetadata              ""

	# preset the data hash with the usual Dublin Core values
	set datahash(dc:title)                ""
	set datahash(dc:description)          ""
	set datahash(dc:date)                 ""
	set datahash(dc:subject)              ""
	set datahash(dc:type)                 "Dataset"
	set datahash(dc:source)               ""
	set datahash(dc:coverage)             ""
	set datahash(dc:creator)              "Shanes Chess Information Database (Scid) $::scidVersion"
	set datahash(dc:rights)               ""
	set datahash(dc:format)               "application/sciddb"
	set datahash(dc:identifier)           ""
	set datahash(dc:language)             ""
	set datahash(dc:audience)             ""
	set datahash(dc:provenance)           ""
	set datahash(dc:rightsholder)         ""
	set datahash(dc:instructionalmethod)  ""
	set datahash(dc:accrualmethos)        ""
	set datahash(dc:accrualperiodicity)   ""
	set datahash(dc:accrualpolidy)        ""


	#----------------------------------------------------------------------
	# Store the metadata to a Scid config file.
	#----------------------------------------------------------------------
	proc saveOptions {metadatafile} {

		set optionF ""

		# Copy data back from the hash to the list
		set ::metadata::DBMetadata ""
		foreach key [array names ::metadata::datahash *] {
			lappend ::metadata::DBMetadata [list $key $::metadata::datahash($key)]
		}

		if {[catch {open $metadatafile w} optionF]} {
			tk_messageBox -title "Scid: Unable to write file" -type ok -icon warning \
				-message "Unable to write options file: $metadatafile\n$optionF"
		} else {
			puts $optionF "# Scid options file"
			puts $optionF "# Version: $::scidVersion, $::scidVersionDate"
			puts $optionF "#"
			puts $optionF "# Descriptive Metadata"
			puts $optionF "# This file is generated automatically. Do NOT edit."

			set curtime [clock format [clock seconds]]
			puts $optionF "#"
			puts $optionF "# Last Update: $curtime"
			puts $optionF "#"

			foreach i {::metadata::DBMetadata } {
				puts $optionF "set $i [list [set $i]]"
			}
			close $optionF
		}

		# now write also a Dublin Core XML file
		regsub "sme$" $metadatafile "sg3" dbname
		regsub "sme$" $metadatafile "xml" metadatafile
		if {[catch {open $metadatafile w} optionF]} {
			tk_messageBox -title "Scid: Unable to write file" -type ok -icon warning \
				-message "Unable to write options file: $metadatafile\n$optionF"
		} else {
			puts $optionF "<rdf:RDF"
			puts $optionF "   xmlns:rdf=\"http://www.w3.org/1999/02/22-rdf-syntax-ns#\""
			puts $optionF "   xmlns:dc=\"http://purl.org/dc/elements/1.1/\">"
			puts $optionF "   <rdf:Description rdf:about=\"$dbname\">"
			foreach key [array names ::metadata::datahash *] {
				puts $optionF "      <$key>$::metadata::datahash($key)</$key>"
			}
			puts $optionF "   </rdf:Description>"
			puts $optionF "</rdf:RDF>"
			close $optionF
		}
	}

	#----------------------------------------------------------------------
	# Show the current metadata from the sme file and allow to edit
	# them. If no metadata are found use sensible defaults.
	#----------------------------------------------------------------------
	proc show {} {

		if { [sc_base current] < 9 } {

			set w .metadataWindow
			if {[winfo exists .metadataWindow]} {
				focus .
				destroy .metadataWindow
				return
			}

			toplevel $w
			wm title $w "Database Information"
			# the window is not resizable
			### wm resizable $w 0 0

			set currentdb [sc_base current]
			set metadatafile [file nativename [sc_base filename $currentdb]]

			set metadatafile "$metadatafile.sme"
			puts $metadatafile

			# set sensible defaults
			set ::metadata::DBMetadata ""
			set ::metadata::datahash(dc:title)               [file tail [sc_base filename $currentdb]]
			set ::metadata::datahash(dc:description)          ""
			set ::metadata::datahash(dc:date)                 [clock format [clock seconds]] 
			set ::metadata::datahash(dc:subject)              ""
			set ::metadata::datahash(dc:type)                 "Dataset"
			set ::metadata::datahash(dc:source)               ""
			set ::metadata::datahash(dc:coverage)             ""
			set ::metadata::datahash(dc:creator)              "Shanes Chess Information Database (Scid) $::scidVersion"
			set ::metadata::datahash(dc:rights)               ""
			set ::metadata::datahash(dc:format)               "application/sciddb"
			set ::metadata::datahash(dc:identifier)           ""
			set ::metadata::datahash(dc:language)             ""
			set ::metadata::datahash(dc:audience)             ""
			set ::metadata::datahash(dc:provenance)           ""
			set ::metadata::datahash(dc:rightsholder)         ""
			set ::metadata::datahash(dc:instructionalmethod)  ""
			set ::metadata::datahash(dc:accrualmethos)        ""
			set ::metadata::datahash(dc:accrualperiodicity)   ""
			set ::metadata::datahash(dc:accrualpolidy)        ""

			# hook up with scids geometry manager
			setWinLocation $w
			setWinSize $w
			bind $w <Configure> "recordWinSize $w"

			set ::metadata::metadatafilename $metadatafile

			button $w.bOk     -text OK -command {
					::metadata::saveOptions $::metadata::metadatafilename
					destroy .metadataWindow
			}
			button $w.bCancel -text [::tr "Cancel"] -command "destroy $w"

			# enable the standard shortcuts
			standardShortcuts $w

			set textcolour "black"
			if {[catch {source $metadatafile} ]} {
				# copy default values if there is no set
				foreach key [array names ::metadata::datahash *] {
					lappend ::metadata::DBMetadata [list $key $::metadata::datahash($key)]
				}
				set textcolour "blue"
			}

			set line 0

			foreach i $metadata::DBMetadata {

				set tag [lindex $i 0]
				set val [lindex $i 1]

				label $w.$tag  -fg $textcolour -text $tag
				set ::metadata::datahash($tag) $val

				entry $w.v$tag -width 60 -textvariable "::metadata::datahash($tag)"

				grid $w.$tag  -stick w -column 0 -row $line
				grid $w.v$tag -stick w -column 1 -row $line

				set line [expr {$line + 1 }]
			}

			# Buttons and ESC-key
			grid $w.bOk      -stick e  -column 0 -row $line -pady 10
			grid $w.bCancel            -column 1 -row $line -pady 10
			bind $w <Escape> "$w.bCancel invoke"

			bind $w <F1> { helpWindow Metadata}
		}

	}

}


###
###    inputengine.tcl
###
###    This file adds input eninge protocol support to scid chess
###    database. It adds menue with subitems to the tools-menue and
###    additionally a button to enable the engine from within the GUI.
###    This module is selfcontained and can just be linked into the Scid
###    database upon built.
###
###    $Id: inputengine.tcl,v 4.3 2011/02/13 18:12:02 arwagner Exp $
###    Last change: <Mon, 2010/11/15 13:00:39 arwagner agamemnon>
###    Author     : Alexander Wagner
###    Language   : TCL
###
#----------------------------------------------------------------------
# Toolbar icons to display current status to the user

# Engine is connecting (searching the board, initialising)
image create photo tb_eng_connecting -data {
  R0lGODlhFgAWAOfcAAACAAQHAgAKBAARAQESAw0TBwccAQkcAwUfBwQiAwUjBAgnCgwnAwcsCQgt
  Cw4wBxMwDxQxEBNICQtNDQ9QEBNaEg5fDRZcFBNiEAhnFRJsGwxyFxZuHBdvHRxwFhN1GhpxHxV2
  HBl2EhxyIB1zIQ98GBh4Hhx4FRp5Hx55FhN+Ght6IB96FxV/Gw6FFxeAHBuAEyd4HyV5JxGGGRmB
  Hh2BFCB9IyZ6KBuCHx+CFRyDICCDFiN/JRWIGyh8KSp6NR6EISKEGBiJHCWBJx+FIip+KxmKHSeC
  KCGGIyWGGhOQGRuLHiyALSKHJCuDITV6Nh2MHzZ7Ny6BLieIHCSIJSmFKjd8OB+NISONFyWKJhiT
  GyyHLBqUHS2ILTCIJSKQIyaQGS6JLjOGMyqNKR6WHyWSJTGLMCCXICeTJiGYIRqdHCiUJzONMS+R
  LRyeHS2SNSuWKSWaJDaPMy6TNiyXKiabJSCgIDiRNSKhIS+ZLCSiIiajIyyfKTCcNy6gKjaZPEKT
  PymlJj+XOyunJzKkLkaXQyqpMjSlLzyfQUCgOy2rNDanMTioMkicTTapOzqqNEahSkOlRz2sNjut
  Pz6tN1WfUVagUketQD+xQkCyQ1KpTEqwQk2rWU6sWky1Tki4SWOnYE62T2CrXE+3UFa0TlC4UVyw
  YFK7U1i4WFy5U1m6WXCvbmC6YWS4Zm6za2S7XF/AX2LCYW+9c36zgG/AaH23fXq6eG/CcHjCcou4
  hoq/i3zKf4vAjITJf4PLh4nOhJHMkJfHm5POk5XPlJrVmaPRnqTQqp3YnJ/anqbZnqbdp6feqKnf
  qazirbHitMfew8DlwMHrvsDtxtTn09LqztLy1Njw1NPz1dny1eHw4+338v7//P//////////////
  ////////////////////////////////////////////////////////////////////////////
  /////////////////////////////////////////////////////yH+FUNyZWF0ZWQgd2l0aCBU
  aGUgR0lNUAAh+QQBCgD/ACwAAAAAFgAWAAAI/gD/CRwoEEAAAwoMCCDIkKCACFEgfcp0aRIaDg4W
  NhQYIMqpUp5Q7fp16xKjQB4CbCzQiZUyZ8yQJSPmi1aqTYGEEGAooFMsZNiqRWs2zJWoVq9CMfKz
  Q6VAAU9iOcN2TZozYJa8gHLS6ZIkPXYsaISgatg0atCYDbNFY9q2VUAS+fET5wwDgT9CFSsECJAc
  OVucGNv2VkeeOHXSXPgXABGqWoWeSZ78TBvhVTrQYFEyA8GBSb5mWSJMuvRlJ2OuXFGgYNIwXVsq
  yZ5Nu5IlKWKmQFFwgBIuXU5qC6/kREqVKQoCGPIky8kq09Bp+OBBRAGAK4xYmaryfFs2XuDBpuvS
  BcOKDRYH/nnwUypUJBzdgzkxs+VIDCkrYuCgIJDBnksmJaLDc6s4IUgbY1QRAwnnKfBUBnss5Qcd
  OshhYBtTvLBCByC0IIFGjAERBx9xoNHGHXOMkYQNIYAwQggbIMAQASrEkQYXV1CBRBUokBCCCS14
  4MBGAVSABRhYTKGDCiuwkMMJEqS30T8CLFABDUsY0UMQIUiQQAFTMoQAawokIONGAQEAOw==
}

# Engine is disconnected (default)
image create photo tb_eng_disconnected -data {
  R0lGODlhFgAWAOeWAAEBAQICAggICAkJCQoKCg4ODg8PDxMTExoaGhsbGxwcHB0dHSAgICIiIiMj
  IyoqKisrKywsLC0tLS4uLjk5OTo6Ojs7Ozw9PUhISE1NTU5OTl1dXWJjY2NjY2RkZGVmZmZmZmdn
  Z2doaGlpaWlrbmlsbmptcGttb2xucG9vb29wcG9wcnFxcXBydXFyc3JycnFzc3Nzc3N0dnJ1d3V1
  dnV2dnV2d3Z3eHd3eHh4eXh5e3h6fHp6ent7e3t7fHp8fnx8fHx9fX19fnx+f31+fn1+gH5+fn9/
  f4CAgYGBgYGChIKDhIODg4OEhYOEhoWFhYWGh4WGiPxUVIaHiIeHh4eHiIeIiIiJiYmJiYmKi4qK
  i4yMjIyNjY6Ojo+Pj4+PkI+QkZGRkZKSk5SUlJWVlZaWlpeXl5iYmJiYmZqampubm5ycnJ2dnZ6e
  np+fn6CgoKKioqSkpKampqenp6mpqaqqqqysrK6urq+vr7CwsLGxsbKysrW1tba2tre3t7i4uLm5
  ubu7u7+/v8DAwMHBwcLCwsXFxcfHx8zMzM3Nzc7OztTU1NbW1tfX19jY2Nzc3N/f3+Dg4OLi4ufn
  5+np6ff39///////////////////////////////////////////////////////////////////
  ////////////////////////////////////////////////////////////////////////////
  ////////////////////////////////////////////////////////////////////////////
  ////////////////////////////////////////////////////////////////////////////
  ////////////////////////////////////////////////////////////////////////////
  /////////////////////////////////////////////////////yH+FUNyZWF0ZWQgd2l0aCBU
  aGUgR0lNUAAh+QQBCgD/ACwAAAAAFgAWAAAI/gD/CRwoMMCABA0SECDIkCCBCTHG+JkIZ8sICAsb
  ChTAgg4cRIgmvnnDZo0HARoPtOlTCFEjkHvm3DFjZk0PAwwFsAHEaFGjRocmzplD0wyZFCgFEmDx
  55EUKYeiTvQzx42ZMme0aMgoAY8jSk+hxjxkiapVMmGSNBD4Io8kQYLCTrVU1o0XL1+qZPg3gAyf
  SIKiho0Kia4fM160TImxAAEdRIkC0bUUdjJdxFOgGGnQoM4iQlMnyp065wgVJUAaIJBjSBGe0H5G
  Uz0ypAiPBgLg2BnUJ06l37/DAj9yRAeOBgCowPmT542a35PghoVr2oaIBf9AvNFTx82YOZUsjc1B
  gyUs8SM1Lgh8sIaOHDZktswRbwYJlLAmXITA/o/ABjNupCGGFWYQZQYVVBzxVAkwVJDRPwKk0AUZ
  YFwRBE0JEncCCShwoABDBXTwBBdZNIFEDlT8MEMLK7jAQQQaCYBBD0ws4UQUS+wgAw0fUJCARkox
  gIEKQhDhww0fWKDAg0AKtIADUDrAX0MBAQA7
}

# Engine reported an error
image create photo tb_eng_error -data {
  R0lGODlhFgAWAOf4AAYAAAcAAAkBAA8AABABARYAAyIBASUAAxkFCScBACoAAC0AAC0AAS4BAjIA
  ADMAADgAAjkAAzwBADsHCzwIDF4AAF8AAGEAAmQBAHQAAXYAAHcAAH0AAIIAAIQDAIsAA4sADI0B
  BY0BDY4DBpYAA5gAAJgABJAFAJkCAKAAAZkDBaEAApgDDaIAA6AACYgMC6MCBJIKCZEKEKsAAJsH
  B6wAAaUEAIsPDa0AAaUEBa4AAq4BCrQAAJQOErADA7cAALUABrgAALkAALcAB4YWF50MEK8EC7kA
  CbEGBJYSE8AABKgMB8MAAMIABcQAAMMABrwFAsYBALwFC8UBCKkPEL0IA8cEAM4ABLMMDs8ABKsR
  EYweIbUOB88ADtAAD44fHcgHAKMWGpwaGI8gHpUdILYRCMgICookIrYREMoLAZAiJJcfIckLC4wm
  JJ8eIJIkJqcbHcsOAsERD8kMFJQlIZMlJssODJojJJQmJ8ITEJwkH48qK8wRDaofIM0TDtYOE58o
  J6ApKKcmJc4WF6gnJpUvL5stLK8lI9AYEJYwMM8YGM8YH8gdHJ8wL5ozM9IcGskfI8EjJtMeG7Ur
  LcMlJ6kxLps2OtMeIpg5OtQgIs0kJdUiI5s8PNcjJM8nJ9YkKtglJbwyMtApLp8/P684OdIqKcot
  MdMrKqs8PsUyMK0+P88yL9cwLL08O8M6PdE1N9I2N9o0Nds1O9U5Od02N9A9OMk/QcBHRctCQ8ZF
  Qs5ERahWWN1BQKZaWdhFRKdbWsFQT81LTahcW9tHRslPUtxIR6peXd1JSONHSsFXWLBjYuJOS+FO
  UcFeYdpXV99bW8RnZsVoZ+JdXONfXdxvbr9/feVwcuZxc8d/geZ/gOiAgciOkOSFiM2TlemIhuaN
  jeuLj9WbnO6bmc6pqu6cn/Ceoeyhoe2iou6jo++kpPClpdS2te64uN3AvvS3ufK9vOfQzPHMzPjL
  zvXP0PfR0vjS0+3g4f7//P///////////////////////////////yH+FUNyZWF0ZWQgd2l0aCBU
  aGUgR0lNUAAh+QQBCgD/ACwAAAAAFgAWAAAI/gD/CRwoMEAAAw0MCCDIkOAACnhCffIEaRGaFxEG
  NBwYAA8tWKFaQYOWLFIePx4CbESAi9m3cI529eq1602uUl50FGAYwNYyc/HWCbtH9N4bYLAkgbGh
  UuAAOsfM0Ys3zljRe46ClXrEhgkHjf8m0PI2rx67bnuKwnOka5EXM0+qPBA4JpY6ee/MYSNStF2j
  Woj8TFGihMM/AZR8nXN3zhu0tETboXrl54qSIENqJDgA6po6cd6oJdvSV5WorkKQ8ODRQAErb+ZC
  O7u1pR3RbaQ8sXEipEYN1gcePctmTZquVrWJVqvEqEoVIDBa1Ggw4A+rZ9OOyTIFyPa95YuqwPBY
  QmOFjQYBsHRhxkwWRTiJRo3aMqlM5hUsVKBI8O8Fm1WrsDIII2FgUk01ZwhixBIunMDCDhgIJMEV
  oHwySB5DiOBdNYBokQMJMZCAggICCcBBHFzlgYaGytERRgwveLBCBWD9Q0AOTrDxRBliKGOPPZYk
  4oYIIrBwwgEMFbBCFVIcoYUbZOBhCRk9iHiCBBsFkEEQQhhBRR+BuFFECipcgORG/wTwQAYt6IDF
  EkucgIECC6FJ0AEN5MkAiRsFBAA7
}

# Engine is connected, communication established
image create photo tb_eng_ok -data {
  R0lGODlhFgAWAOe/AAABBAAHCgIIDAMKDQYMDwQOFQoQEgkVHwoWIAsXIA0XIQ4ZIxAbJBEbJQ4d
  KxEgLxQjMRQkMhUkMxYlNB43UB84USI7VCQ9VSdGZCpIZy1LaihNcSxRdS9UeDFVeSxYgS1ZgjRX
  fC5agy9bhDBbhTJchjNdhzReiD9cezVfiTtegzxfhEFefTdhi0ZdeD1ghThijDJkkz5hhjljjTNl
  lDpkjjVmlUBjiDtlj0FkiTxmkDdol0Jlij5nkThpmT9okkRnjDlqmkBpk0VojTprm0FqlDtsnD1t
  nT5unkRtlz9vn0pskkBwoEttkzpyp0FxoUdwmkJyolJuj0hxm0Nzo1NvkEpynk9xl1BymEB3rVZy
  k0F4rlJ0mlN1m092okp5qVV3nVZ4nlJ5pUx7q1t3mEt9p0d9s018rVR7p1l6oFR/pF97nFB/sGB8
  nVx9pFKAsUyCuFh/q11+pVSCs1qBrWCBqGWBommAnWGCqWaCo2KDqliGt2OEq12IrV+Gs1mKtVyK
  vGKJtl+MvnKJpnSMqGmPvGqQvWiSuGuRv3CRuW6VwnKXt3CXxHGbwXKcw3mZwoKZtnqfwIGdwHug
  wYKewYKivoCkxoWlwYunvYaqzJGoxo2typyrvpCvzJWty5qtxpiwzpywyJS00Juy0Ju3zqK1zqW1
  yKO2z6C31py82aO62aS/1qXA16bB2azA2bTAzrLB1a7C27PD1rDE3a/G2LTE177K2MTQ3sbS4MfT
  4czV3cvX5dfg6OXq7f7//P//////////////////////////////////////////////////////
  ////////////////////////////////////////////////////////////////////////////
  ////////////////////////////////////////////////////////////////////////////
  /////////////////////////////////////////////////////yH+FUNyZWF0ZWQgd2l0aCBU
  aGUgR0lNUAAh+QQBCgD/ACwAAAAAFgAWAAAI/gD/CRwoEECAAw0OBCDIkKCACSzSCAIEaI8VDxEG
  NBwIwIWhQ4USZfL0KNAYNhwEbDSQp1GqWatUnQqFqQ0JMHGKFGAIoA+jWLty0RKlaVGbNb1yuBkT
  Y6FAASwYtQoaaxSlRnlu9PL1SkaaLxtU/pOAyFVQWqAsJdIj45Wvt3mWeEHyQCCKQ61utfIUKVGf
  JoTevu11YwoVDf8CiHnEqtYlSIfoqJGxVTCvHEuY9FCgANAmV59UpMkjR0YpwVyBcIGSBEmDBoBE
  kSJEaE0VLVJQw1Ih50sQH0QS7qGECciupCtYCX6lQg+aIz10EHEwYA4gQkve2sr9FpYMOmWeswRJ
  EcNGAwBW5nThJHjXW14q6qBBUmRGihQqFPzTMEfNDFuo9cKDGGNQgYQNJ5gQgwUCScAGH22o4NZb
  dmBRBhVE2FBCCAk68FQIZrwhhgqf+FJKRFME0YIJIoQAAwVi/QNAD1+U8YUKplTRBRQ+wLBhCCSE
  kABDBZjAhIEmqFCfCiqUcAIMJESwEQAYIPFEETb0cJ8JM5RAwQEbPdUABtIR4YMNJFigAABhMqTA
  a6/pt1FAADs=
}

image create photo tb_eng_dgt -data {
  R0lGODlhFgAWAKEDAAAAAAAA//8AAP///yH+FUNyZWF0ZWQgd2l0aCBUaGUgR0lNUAAh+QQBCgAD
  ACwAAAAAFgAWAAACLZyPqcvtD02YMyJarcR60z5gwQOUJWieXQqgqWuCoEDTcy3ctW53eC4LCoeD
  AgA7
}

image create photo tb_eng_query -data {
  R0lGODlhFgAWAOe+AAEBAQICAggICAkJCQoKCg4ODg8PDxMTExoaGhsbGxwcHB0dHSAgICIiIiMj
  IyoqKisrKywsLC0tLS4uLjk5OTo6Ojs7Ozw9PUhISE1NTU5OTl1dXWJjY2NjY2RkZGVmZmZmZmdn
  Z2doaGlpaWhrbmlrbmlsbmptcGttb2xucG9vb29wcG9wcnFxcXBydXFyc3JycnFzc3FzdXNzc3F0
  dXF0dnN0dnJ1d3V1dnN2d3R2eHV2dnV2d3Z3eHd3eHZ4enh4eXh5e3h6fHp6enl7fHp7e3t7e3t7
  fHp8fnx8fHt9f3x9fX19fnx+f31+fn1+gH5+fn9/f4CAgICAgX+BgoCBg4GBgYGChIKDhIODg4KE
  hYOEhYOEhoSEhIWFhYWGh4WGiIaGhoaHiIeHh4eHiIeIiIiJiYiJiomJiYmKi4qKioqKi4uLi4uL
  jIyMjIyNjY2NjY2Oj46Ojo+PkI+QkI+QkZCQkJGRkZGSkpKSkpKSk5KTk5OTk5OTlJSUlJSUlZWV
  lZWVlpaWlpeXl5iYmJiYmZmZmZqampubm5ycnJ2dnZ6enp+fn6CgoKGhoaKioqOjo6SkpKWlpaam
  pqioqKmpqaqqqqysrK2tra6urq+vr7CwsLGxsbKysrW1tba2tre3t7i4uLm5ubu7u7y8vL29vcDA
  wMHBwcLCwsXFxcbGxsfHx8zMzM3Nzc7OztPT09TU1NbW1tjY2Nzc3N3d3d7e3uDg4OLi4unp6evr
  6+zs7PDw8PPz8/X19f//////////////////////////////////////////////////////////
  ////////////////////////////////////////////////////////////////////////////
  ////////////////////////////////////////////////////////////////////////////
  /////////////////////////////////////////////////////yH+FUNyZWF0ZWQgd2l0aCBU
  aGUgR0lNUAAh+QQBCgD/ACwAAAAAFgAWAAAI/gD/CRwoMMCABA0SECDIkCCBCTP8UJok6ZGbERAW
  NhQooEWlR4oMLXLUqJGiRB4EbDyw6BMqP5pk9eolK5OfSImMGGAoQJGoWLA8+RpKdNUdRYBUqBRI
  oEWoWbpeASJK9Y4gQms0aJQQkxeuVo0QeZFyiWiePIDuWGkgEMamW7tqpeIkKRGcSETt8Okzh0yG
  fwMAeaplixUpTpUOSck1VFYXQXvWiJmxAEElVrRajeqE6dEYWUN7hfETiI6YL1AaNLAES9apTpco
  IVpE1I8dP3jWYLmSpAGCSalcjcJECdKgVENTsRHUJ46YJk+GNBDw6JKpT5UiOfID2heoOX/swJyp
  8iOIjwYAxjwKtSlSWDtq2Ljp0qZOGixEaPAQseAfiEacWMIIIn5YoYovvRSCRhpaICGDDDtcINAD
  iVQyCVJuuEGULFN8oUQNJ7wQQn//ELDBIIwcokcZbWwYBRU6kGBCDBVo9I8AKsgBSB1mLFEKgog4
  kQMKJaTAgQIMFdCBF2+kscUUQBSBxA0usPACBxFsJAAGRmSBBRdgYCGEDTh8QEECGzHFAAYrMOHE
  ET18YIECNqYp0AIO5OkAiQ0FBAA7
}

if {$png_image_support} {
	image create photo tb_eng_connecting -data {
		iVBORw0KGgoAAAANSUhEUgAAABYAAAAWCAYAAADEtGw7AAAABmJLR0QA/wD/AP+gvaeTAAAACXBI
		WXMAAAsRAAALEQF/ZF+RAAAAB3RJTUUH0gkCEjYDO4wKrwAABVNJREFUeJyVkl+IXGcZh5/vO2dm
		zpyZnZnNrNk/zaLRtJuk2USbtDSa0tIitkaJ1VYasBdqFXMnQfAiiJRizVXxqoKoCIokLmK3sVZt
		sRtotSgm2exubKIp2nY2k3RmM3/P+c453x8v4q5eVKkPvDcvvA/v+/ITew8/Ds7inMVZy+LPvw2A
		FbaE5RDwiCzIWX/M82RBCptYrdtm2Sp7Eskvdn/ya8O40ySN+liT4azhyspp/HXpmZNPEIYh1tq8
		DOWx0ZlNX9x2cKZavXm04I97fpYOcdaJxCSud7W/pfta557WS63jy7996gc2st+a3ncwddYSd65i
		UoU3eevdnDn5BEEQEMfxlAzkc/uO3vngni/tHq1Ml/J+iDfiheK2sdvEjtHtVHIVEfkDKSdFvnqg
		UvYmxB3Dc/H93Tcu/boy8f5+d/USOokQAPV6nXa7PVUcC19+4LuHbhodL+cObN4vxsIxhnpIohMk
		ApUqWlGL1ajBWrJGS7VYHTRc962ebhxvNsx1cwBoAHhBENDv9/MykM99/PsPbq9PjOQ/tuU+sXd8
		L9Wghuf5pDql3VvjL29c4EprFSklznNkLkMbI7Ig9Qo786XBH6KPOO1+Ahh55MgRZCiPfejovj31
		95TzH526l9n6bhyObtphLW7T7DY5fX6BF5dfQBjJS2cX6K51iZIIhyMn8wSThdymz9Y+KEN5DMB7
		9U+vlqo7az+c/cLs6H2T94jdm/agjaYdt7kWXeNKp0nz7VV+uXSK+cdO8didX+b19mVeufgyxUIR
		ZWOMMVjn8Cc8L76obtHXzfd8LIe2PvCBqnTIginwzflv0FM9tNUblWUZACvNFW6d2MVTn/oOAM8u
		z1PbXMNKi3OAEHJkf7mavpU95MtAPlK+uRyUZInLq6+jtOLJT9zI8jvRVV2qQXVDPr/8DOVamcxp
		hBUE2woFv+4d9v26P5vb5Hk7ajNkb2sqQYX97/vwfxX/JxubLz1LMSwSCYNX9HzpyxlfFoQnsKLs
		l0lyKX+79lce/tFn3pV4ndCG5NI8SiZY3wB40iZOpDqlETWQBUmcxf+XFKDrOpAKhJY4e6Pn65bW
		sVVuqX1e7BqZJefnmK5Nb5z5bph+fAptNM6Bkw7A+DaxS/1Gf4uYxG+HbW7ffgfPX/gV8O8fvtl5
		k7lzP/ufcmMMBoPpG221vegDJ/qXe/cG4wW/Z7pIX7L1vVs5tXJqQz5dm6YSVDj+wpPUghqJSbHG
		ggVrHCO6SuoybC4jXooT3TYnJJL56wudTmqUXYvbdHSHvtdnbKLO/PI8R5/5KgAXmiuE+ZCwWkKE
		Ap2zZBiy1BCrlEQotNJueD7q2tjOeY9+7tHs7O/PjYpRcbubsDljDZnNSFxKMRew+I9FTpz5KYuN
		c4yNbqabdIlUTKb0jYoMVlhE0TL480DFK+ppl7rfiCAIUErlZSAXbjo2vi+YCnK+zIEWuMyS03kK
		LkAIQZzFxIkiUxqrLC4DB4icw+pMt+fWzqbN7C4yEk9rTaVSMWqonh+ejR8q3JIvE+I5ZzHakGaa
		JE1QKkHFKTrS2NSBuCEUJYdVWnd/11s1XXPQ9mwbwNtx/1dorLxCEAT9bJDNDf8YHRAlUffHPd8J
		J5xxWO0wzuKsw1mH8BwydNjMuOGZYdxb6C+arjmYXdV/X0+JN7XrbiZ23kVj6TRhGPbTOP1xcjnN
		q0tqG+DJESFFgHSew3kW4TlsbHS0GMW9hX4rXlFP6575/Pqm64g9n/46WdRD9VukcY8riy9SLBYZ
		xIOSLMqH/bp3WPpyBvD+NWOttq/ptjlhYzuHYfBOuf4nt573nIx6gu4AAAAASUVORK5CYII=
	}

	# Engine is disconnected (default)
	image create photo tb_eng_disconnected -data {
		iVBORw0KGgoAAAANSUhEUgAAABYAAAAWCAYAAADEtGw7AAAABmJLR0QA/wD/AP+gvaeTAAAACXBI
		WXMAAAsPAAALDwGS+QOlAAAAB3RJTUUH0gsHDCIDToTw0gAABNpJREFUeJx9lU+IE1ccx79vXibz
		MklwsokY7MpGE3RRpOgihFasl8C2HkrRhfawB1kPikeP0t4KlkXwIN72UgMtLLT2UGsptGK3MFYT
		ui3ubkU3qZKIu83f2WT+vTfTQ8y4W7b9Xebxe/w+v7/zewT/IZIkjQA4BWBKUZTDIyMjVFEUYts2
		b7VaS5ZlfUEI+VoI0dvOnmyjC6uqejmXy50rFAo79u7dG85ms/Lwcn193V9bWxNPnz617t2716lU
		KnP9fv9TAM7/gXczxuYvXLjwZj6fj9i2TQ4ePEheAQEAL1++BAAIIeD7vqfrulUsFn+zLGsKQH07
		8O5kMrkwOzv7RjqdlmOxGFFVFdFoFL3eINt6vY5erwdFUQIHsiz7lUqFX79+vdbpdI4DqAEAHabP
		GPv22rVr46Ojo+GxsTHCGIOiKACAfr+PZrMJSiksy4IQApZlAQA8zyOxWIzu2bMnuri4+DbnvAhA
		UABQVfWT8+fPf3DkyJFILpdD9vJlpO7exerRowFg+GWMBWfOOXzfB6UUisKoLMvJ58+fh1zXvStR
		SqPZbHbmxIkTkUwmg3g8HtTm2NWrw4ah3W5D0zRMTk5C0zQwxsAYAyEEQggoShgTExMsnU6fo5TG
		JM/z3i8UCjsIIZKqqlhaWsLPFy9ugcuyDE3T0G63ASCADzNxHAee5yMcVqRDhw7tiEQiZyTG2IfZ
		bJbJsgzP84J0H1y6FMALc3PQNA2apqFarQbwdDoNxhgAwHVd+AD279+vJBKJj6REInE4lUrRXbt2
		odFogHOOfD6PfD4POj+/JfJ8Po9MJhPoJicngzMfjB+i0WhIluUDIcYYJYQQxlgAvnPnzushnJlB
		YW5uMLtTU/hhZgabRdM0rKysgDEGl4th1lSyLItwztHpdBCPx4OOb5bNsKGTf0vPtMA5D8oZajab
		nHPuv3jxgqRSKSiKgkajgdOnT28xdE+ehDw9HcDdmzeDuytXroASwHZc+AOwkGzb/qNWq4l+vx90
		mHOOYrEYGLbbbei6vmVa5Olp6LoOXdcBDBouBEe70+au6/5JCSFk3759742OjoZlWYbjOHAcB6Zp
		4tmzZxgfH4emadB1HbVaHT8lk3irPlgJYw8e4PN+f9A8zuFyF+Vy2axWKrOSJEnfLCwstDnnnmW9
		rhMhBLVaDbdu3Qqi9H0Ppmnhs6MTge7jR4+w3uyga2yg2+n4f1WrHdM056nv+26v10uoqnoslUrJ
		hJCBd5fDsm0AwJMnT4Kfg3MXhAA/jozgnVcb73YshlCIolwqWZVK5YbjON9TAHBd95fHjx+/m8lk
		0oqiUEIIuBAQQqDRaCAsy0Gth1kBwFehMG5H46BUwobR5eVy+fdut3vW8zwx3G6Cc/7d8vLymZ07
		d8YikQiVqATfBwghMAwDjUYDjCkwbRd9y4ZlOZAIIMsUG0aX/3r/fr3b7Z4yDKMBvF6bAGDYtj2/
		vLx8XJKkZCKRCBEC4gOQaAiMRcCFgOO68IRASCIwNrp+uVQyy6XSomEYp9bW1qpD2GYwABic85v1
		ej28urqaM02TqlFVClEqceGCuy6E4Oh0WrxcLpkPHz78u1qt3jAM4+ww0qFs9+YNPFIajUQiU4lE
		4qNwOHxgUxCe4zgrrVbrS9M054UQG9vZ/wPVtIPfqdKpLwAAAABJRU5ErkJggg==
	}

	# Engine reported an error
	image create photo tb_eng_error -data {
		iVBORw0KGgoAAAANSUhEUgAAABYAAAAWCAYAAADEtGw7AAAABmJLR0QA/wD/AP+gvaeTAAAACXBI
		WXMAAAsRAAALEQF/ZF+RAAAAB3RJTUUH0gkCEjYIrF7TJwAABRBJREFUeJxllV+InNUZxn/v933z
		f4bZxNAdk7hJ3aFa0SRWEISFbJFIghBFKjF3DQrtVZHehl62WsE2Qu1dW1uFpl1IGilU8KIpRqgx
		F0mbYAsWdy/MzmZmZ2d25vt3vnPO24sJaWMeOJxz8fDwvD8O58ix958hsymZyzDecO3ENRwQQsPB
		88CJGjx2P4Q1kBRsD64n8IcQzi++uxgrCoDqbBcEOXrhGTKXcvGFj2gBEyi34PSBWu3lkwsL7W/W
		65X7vY/yNMWrCnmuvTh219M0O5+m4xuqv5rAj7u/229u56MocvTCET547kPqQAK767Dy04cfPnh0
		585a7JxMrJW8ViPqdglqNVyvB599RnU4pJym/i9xnP3E+6sJvLj42303uS0B6JTL9IzZ3SmXL72/
		tLRnvtUqRYcPy7jZ5K9vv819jz46K6MK3rP56ad868EHqa+v49bWdG06td9T/bIPS4vv7PsSIKoD
		PWPKdVi58NRTe+abzXLz+HGCQ4fY6vXY+cgjnHjvPf5fZ7pdpNEgaDSQdlv25nnpLWP2vAJ//M93
		1769+M4+E7ze7dKC0693uwc7jUa5efw49SefBMBOJki5zFfVaLcpWwtxjDqHlMsshGHpB3CoBadR
		CH74+eeNA9Xqy8/u2FGrPf009SeeQLzHDQa4wYD1K1fuCu1dvUoEBGkK0yk+SXDeI0HAEZHqN+CV
		tVNrzcDBcy91Om0HQTQ/D9Zi+31cr4e9dYt0MLgrOBuNEO+RLJuFZjmuKChUESQ4Cu0GfCeqw0sH
		yuVq0GqBc9jBADsYYG7epOj3iVqte1A0Wy00SfDG4KzFqZKL4EU4gFQ6qiejDjz2NZGw+vjjSKmE
		7fUoNjYo1texW1uza/MVBUGANwa1FqeeQsEAXqCpRGV4KKhD6EGCVgsXx5iNDUyvR9Hvo6MRYi2r
		Fy/exZiimLVVxQKFgBHBILiZLYwSEE1TzOoqIoIfj7H9Pn44JIhjQu/vYeySBJdlWOcoEHIgk9ls
		EQIo0TpYkkTjTz4RvEeAYnMTHY+p5Dk76/V7UNRUMXGMdZ5chAxIEQKgNLO4KIV/fpFlex8YDKJi
		YwOJItzWFm57G4whtJYPXn2V6twcAKPVVfZXKmS5oVAlBVIJMCJUVBmi1sC/A+DsjSzL1RjceIwd
		DrFbWxTjMdlohLeWoFZj//Iy+5eXcZUKBmZNRUhEiEVQoOotV1TzHpyNQrjwJ2vfOJJlteLWrUBK
		JYrJBJMkJM6x6RzPv/Ya+5eX76BY+/1ZpBSR5QFTr2QiNNQTq+rfYRzDSvAjkfgG/ObPxmTZ+jpm
		OMTmOdZaHGCdu4dxDmRRmWkYMQlCPELVOT5Szdbg1w/8YmEaXgZi+PgyHFtyrtM0JlTvKbxiEVyz
		wXaa0jl4kGw04tKbbyLWk25vkxiDeKWintRbex7+sQmnWsfaTgB2AQPYvQsuvQF7vx4EJR+EmDBk
		0mwwmZtjYi1BpUp1xw6K/gAdDJA8o14UjNXbc6o3v4DD4VsLqwChVIXEQh0mY1j5EJbaqvctqEaB
		9+I8hM7SqtaoBSE63iYYj2ikMdYW+jfv03NwbQDPhmdmoQAhFqQqFBZaMInh3etQvgrdQDWc8y5o
		FEUQJgnhdEIYT5imqf3Y2vSc6uAy/HIIp9o/X9gEQGfrzlMgVWH++7sYnOnTmHFvNODFDpysiDwE
		hLet3sC/1lXPxrCy92cL0//9ddw5/BdemMfxn02t7QAAAABJRU5ErkJggg==
	}

	# Engine is connected, communication established
	image create photo tb_eng_ok -data {
		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
	}

	image create photo tb_eng_query -data {
		iVBORw0KGgoAAAANSUhEUgAAABYAAAAWCAYAAADEtGw7AAAABmJLR0QA/wD/AP+gvaeTAAAACXBI
		WXMAAAsRAAALEQF/ZF+RAAAAB3RJTUUH0gkCEjU51q2A3gAABShJREFUeJxtld9rFOsZxz/vzM7u
		7Kw/ssliEjdBY6JplMPpZUIPnEMhSjlIbxrw3Hng3ORvEHpXKHjjhfSi0OOFgQqCpYIgvRCUVDwh
		CVVRqxizRRJLOLuT2dnsvDPz/ujFbtJj6wMvz1w8fJ7vPN+H9xX0owBowO1n4TiDwNfAQqlU+mxw
		cNAtlUoiTVMVhuFLKeWfhRB/0Vrv8YkQAIeB+L+5GATBlampqe/m5+ePTkxMFGu1WsEYg7VWaK3t
		zs6O3tjYkI8ePYo2Nzf/1O12fwdkH4EDoAv083Hf928vLi5+Pjs7W07TVOR5LpRSeJ6H67pYawHQ
		WmOtNU+ePJFLS0v/kFIuANsfKR4pFvl3lh0fGhpavnr1an1kZMQ7dOiQePbsGfV6nZmZGcbHxwF4
		//49L1++ZHt7m4GBAaSUdnNzU12/fn0riqIvgC0ANwBCrYu+79+7du3az8bGxoonTpwQvu8jhODi
		xYvUajU8z8PzPGq1GjMzMxhjePv2LaVSSZTLZXd8fLzy9OnTXyillgDt/H5qiiAIriwuLn5er9eL
		k5OTHDt2DGstjUbjU74AMDs7C0CapriuS70+5p0/f/7nQRBcAXD/FkWV6enp7y9fvlw9ffq0GB0d
		JcsywjAkDENWV1e5f/8+Dx48oNlscvbs2QP4ysoKxhgAHEcwODjobmxsnGm32390jDG/np+fPyqE
		cIIgQGvN3t4eUkqq1SpBEDA8PMzhw4eRUn6k2hiDEAJjLMZYisWSc+7cuaPlcvk3ju/7lyYnJ33P
		81BKsbu7S6vVIkmS3n4XChhjiOOYCxcuHEBfv35Np9PpbQqWPM+xwJkzZ0rVavWbQrVa/axWq7nD
		w8NYa2k2m4RhSJIkKKVI05Rms8mlS5eo1WoAdLtd7ty5w8DAANb2Vk/11o9KpVLwPG+64Pu+K4QQ
		vu+T5zmdTockSciy7AA8PDzM9PT0gdobN24QBAEASivyLEcphbXsz9x1pJRCKUUURXS7XbIsI897
		hfv5p9DHjx+TJAnFYhFrQame2qxfe2Bmq9VSSin74cMH2u32AWy/SGvN0NDQAbjdblMoeBhj0brX
		PMt6J89ztDYAupCm6fOtra2xer1ekFJ+UvHdu3cRQiCEQEpJqeSDEH1gRpql5Cqn4Di025HK8/x1
		Abi1ubn5y9HR0UKaph+B0zQliiLm5+eZm5uj2+1y8+YSUbRLllnSLEOmGVKm/f+xvHjxIg3D8Jbj
		OM5fl5eXd5VSRkp5MIIsy5BSUqlUmJubAyAIAr766kuSRPYbZyRSkmY5WEM7iuy/Go0oSZLbzm+N
		2Ws0GjcePnwoW60WaZqitUZrQ953+n/DWkOW56RpSpJIrDUg4Pnz57LZbH6vte64K0A3z//+5s2b
		X508eXKkVCq5QgiU1mitieMYrGViYoJut8u9e/fYjSL2kgSZSLDgug6duK3W19eftdvtb40xWgDU
		gB/h+JEjR5YXFhbGTp065ZV8H617I9FKIaXEcR0QLjJNMdpgjcZxBFG0q1Z++GF7Z2fny52dnQb0
		r80ICCDupOntV69efeE4zlC1Wi0IgbCA4xbw/TKu65LlOUZrCo4g7rTt+tpasr629jSO46/3oQBu
		Tu9J2uvluKvUze3t7eK7d++mkiRxg0rgFFzXUTpH5TlaK6IoVOvra8nq6uqPjUbjD3EcfxvHcfOn
		Poj9jwJQ6TeoAB3XrZTL5YVqtfpNsVicpvfOApgsy/4ZhuGtJElua607/28v/Ae4rikd88m8ZgAA
		AABJRU5ErkJggg==
	}

}

#----------------------------------------------------------------------


namespace eval ExtHardware {

  set engine     "dgtdrv2.i686";
  set port       "/dev/ttyUSB0"
  set param      "la"

  # the hardware configured by default:
  #  1 : Novag Citrine
  #  2 : Input Engine
  set hardware   1

  set bindbutton "::novag::connect"
  set showbutton 0

  #----------------------------------------------------------------------
  # Save the hardware options
  #----------------------------------------------------------------------
  proc saveHardwareOptions {} {
     set optionF ""
     if {[catch {open [scidConfigFile ExtHardware] w} optionF]} {
        tk_messageBox -title "Scid: Unable to write file" -type ok -icon warning \
           -message "Unable to write options file: [scidConfigFile InputEngine]\n$optionF"
     } else {
        puts $optionF "# Scid options file"
        puts $optionF "# Version: $::scidVersion, $::scidVersionDate"
        puts $optionF "# This file contains commands in the Tcl language format."
        puts $optionF "# If you edit this file, you must preserve valid Tcl"
        puts $optionF "# format or it will not set your Scid options properly."
        puts $optionF ""

        foreach i { ::ExtHardware::engine     \
                    ::ExtHardware::port       \
                    ::ExtHardware::param      \
                    ::ExtHardware::hardware   \
                    ::ExtHardware::showbutton \
                    ::ExtHardware::bindbutton } {
           puts $optionF "set $i [list [set $i]]"
        }

     }
     close $optionF
     set ::statusBar "External hardware options were saved to: [scidConfigFile correspondence]"

     # Check if the hw connect button exists already. If not, add it.
     if { [winfo exists .main.fbutton.button.exthardware]} { 
        return 
     } else {
        if { $::ExtHardware::showbutton == 1 } {

           frame .main.fbutton.button.space4 -width 15
           button .main.fbutton.button.exthardware -image tb_eng_disconnected
           .main.fbutton.button.exthardware configure -relief flat -border 1 -highlightthickness 0 \
               -anchor n -takefocus 0
           bind .main.fbutton.button.exthardware <Any-Enter> "+.main.fbutton.button.exthardware configure -relief groove"
           bind .main.fbutton.button.exthardware <Any-Leave> "+.main.fbutton.button.exthardware configure -relief flat; statusBarRestore %W; break"
           pack .main.fbutton.button.space4 .main.fbutton.button.exthardware -side left -pady 1 -padx 0 -ipadx 0 -pady 0 -ipady 0
           pack .main.fbutton.button.exthardware -side left -pady 1 -padx 0 -ipadx 0 -pady 0 -ipady 0

           .main.fbutton.button.exthardware configure -command $::ExtHardware::bindbutton
        }
     }

  }

  #----------------------------------------------------------------------
  # Set the hardware connect button image
  #----------------------------------------------------------------------
  proc HWbuttonImg {img} {

    if { $::ExtHardware::showbutton == 1 } {
      .main.fbutton.button.exthardware configure -image $img -relief flat
    }
  }

  #----------------------------------------------------------------------
  # Set the hardware connect button command binding
  #----------------------------------------------------------------------
  proc HWbuttonBind {cmd} {

    if { $::ExtHardware::showbutton == 1 } {
       set ::ExtHardware::bindbutton $cmd
    }
  }

  #----------------------------------------------------------------------
  # config:
  #    Opens the configuration dialog to input driver engines binary
  #    and parameters required to fire up the engine
  #----------------------------------------------------------------------
  proc config {} {
    global ::ExtHardware::port ::ExtHardware::engine ::ExtHardware::param ::ExtHardware::hardware

    ::ExtHardware::HWbuttonImg tb_eng_query

    set w .exthardwareConfig
    if { [winfo exists $w]} { return }
    toplevel $w
    wm title $w [::tr ExtHWConfigConnection]

    label $w.lport -text  [::tr ExtHWPort]
    entry $w.eport -width 50 -textvariable ::ExtHardware::port

    label $w.lengine -text [::tr ExtHWEngineCmd]
    entry $w.eengine -width 50 -textvariable ::ExtHardware::engine

    label $w.lparam -text  [::tr ExtHWEngineParam]
    entry $w.eparam -width 50 -textvariable ::ExtHardware::param

    label $w.options -text [::tr ExtHWHardware]
    
    checkbutton $w.showbutton -text [::tr ExtHWShowButton] -variable ::ExtHardware::showbutton

    #--------------
    # Add a new radio button for subsequent new hardware here:
    radiobutton $w.novag    -text [::tr ExtHWNovag]  -variable ::ExtHardware::hardware -value 1 -command { \
       set ::ExtHardware::bindbutton "::novag::connect"
       .exthardwareConfig.eengine configure -state disabled
       .exthardwareConfig.eparam  configure -state disabled
    }
    radiobutton $w.inputeng -text [::tr ExtHWInputEngine]   -variable ::ExtHardware::hardware -value 2 -command { \
       set ::ExtHardware::bindbutton "::inputengine::connectdisconnect"
       .exthardwareConfig.eengine configure -state normal
       .exthardwareConfig.eparam  configure -state normal
    }
    #--------------

    if { $::ExtHardware::hardware == 1 } {
       .exthardwareConfig.eengine configure -state disabled
       .exthardwareConfig.eparam  configure -state disabled
    }

    button $w.bOk -text OK -command { ::ExtHardware::saveHardwareOptions
       ::ExtHardware::HWbuttonBind $::ExtHardware::bindbutton
       destroy .exthardwareConfig
       $::ExtHardware::bindbutton
    }
    button $w.bCancel -text [::tr Cancel] -command "::ExtHardware::HWbuttonImg tb_eng_disconnected ; destroy $w"


    grid $w.options    -stick ew    -row 0 -column 0
    grid $w.novag      -stick w     -row 0 -column 1
    grid $w.inputeng   -stick w     -row 1 -column 1

    grid $w.lport      -stick ew    -row 2 -column 0 
    grid $w.eport                   -row 2 -column 1

    grid $w.lengine    -stick ew    -row 3 -column 0
    grid $w.eengine                 -row 3 -column 1

    grid $w.lparam     -stick ew    -row 4 -column 0 
    grid $w.eparam                  -row 4 -column 1

    grid $w.showbutton -stick w     -row 5 -column 1

    grid $w.bOk        -stick e     -row 6 -column 0 
    grid $w.bCancel    -stick w     -row 6 -column 1

    bind $w <F1> { helpWindow HardwareConfig}

  }

}
  #- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  # source the options file to overwrite the above setup

  set scidConfigFiles(ExtHardware) "hardware.dat"
  if {[catch {source [scidConfigFile ExtHardware]} ]} {
    #::splash::add "Unable to find the options file: [file tail $optionsFile]"
  } else {

     # Add the button to connect the engine to the button bar
     if { $::ExtHardware::showbutton == 1 } {

        frame .main.fbutton.button.space4 -width 15
        button .main.fbutton.button.exthardware -image tb_eng_disconnected
        .main.fbutton.button.exthardware configure -relief flat -border 1 -highlightthickness 0 \
            -anchor n -takefocus 0
        bind .main.fbutton.button.exthardware <Any-Enter> "+.main.fbutton.button.exthardware configure -relief groove"
        bind .main.fbutton.button.exthardware <Any-Leave> "+.main.fbutton.button.exthardware configure -relief flat; statusBarRestore %W; break"
        pack .main.fbutton.button.space4 .main.fbutton.button.exthardware -side left -pady 1 -padx 0 -ipadx 0 -pady 0 -ipady 0
        pack .main.fbutton.button.exthardware -side left -pady 1 -padx 0 -ipadx 0 -pady 0 -ipady 0

        .main.fbutton.button.exthardware configure -command $::ExtHardware::bindbutton
     }

    ::splash::add "External hardware configuration was found and loaded."
  }



#======================================================================

namespace eval inputengine {
  global ::ExtHardware::port ::ExtHardware::engine ::ExtHardware::param ::ExtHardware::hardware

  set engine     $::ExtHardware::engine
  set port       $::ExtHardware::port
  set param      $::ExtHardware::param

  set InputEngine(pipe)     ""
  set InputEngine(log)      ""
  set InputEngine(logCount) 0
  set InputEngine(init)     0
  set connectimg            tb_eng_ok
  set MovingPieceImg        $::board::letterToPiece(.)80
  set MoveText              "     "

  set NoClockTime           "--:--"
  set StoreClock            0

  set WhiteClock            $::inputengine::NoClockTime
  set BlackClock            $::inputengine::NoClockTime
  set oldWhiteClock         $::inputengine::NoClockTime
  set oldBlackClock         $::inputengine::NoClockTime
  set toMove                "White"

  font create moveFont -family Helvetica -size 56 -weight bold

  #----------------------------------------------------------------------
  # Generate the console window also used for status display
  #----------------------------------------------------------------------
  proc consoleWindow {} {

    set w .inputengineconsole
    if { [winfo exists $w]} { 
       ::inputengine::disconnect
       return
    }
    if {$::tcl_version >= 8.5} {
       ::createToplevel $w
      ::setTitle $w [::tr IEConsole]
    } else {
       toplevel $w
       wm title $w [::tr IEConsole]
    }

    recordWinSize $w

    scrollbar $w.ysc     -command { .inputengineconsole.console yview }
    text      $w.console -height 5  -width 80 -wrap word -yscrollcommand "$w.ysc set"

    label     $w.lmode   -text [::tr IESending]

    ::board::new $w.bd 25
     $w.bd configure -relief solid -borderwidth 1

    label     $w.engine      -text "$::ExtHardware::engine $::ExtHardware::port $::ExtHardware::param"

    radiobutton $w.sendboth  -text [::tr Both]  -variable send -value 1 -command { ::inputengine::sendToEngine sendboth  }
    radiobutton $w.sendwhite -text [::tr White] -variable send -value 2 -command { ::inputengine::sendToEngine sendwhite }
    radiobutton $w.sendblack -text [::tr Black] -variable send -value 3 -command { ::inputengine::sendToEngine sendblack }

    button $w.bInfo          -text Info           -command { ::inputengine::sysinfo }

    ###---### rotate does not work yet
    button $w.bRotate        -text [::tr IERotate]      -command { ::inputengine::rotateboard }

    button $w.bSync          -text [::tr IESynchronise] -command { ::inputengine::synchronise }
    button $w.bClose         -text [::tr Close]         -command { ::inputengine::connectdisconnect }

    # Buttons for visual move announcement
    button $w.bPiece -image $inputengine::MovingPieceImg
    button $w.bMove  -font moveFont -text  $inputengine::MoveText
    $w.bPiece configure -relief flat -border 0 -highlightthickness 0 -takefocus 0
    $w.bMove  configure -relief flat -border 0 -highlightthickness 0 -takefocus 0

    # Buttons for clock display
    button $w.wClock -text  $inputengine::WhiteClock
    button $w.bClock -text  $inputengine::BlackClock
    $w.wClock configure -relief flat -border 0 -highlightthickness 0 -takefocus 0
    $w.bClock configure -relief flat -border 0 -highlightthickness 0 -takefocus 0


    # Store the time as comment
    checkbutton $w.bStoreClock -text "Store Clock" -variable ::inputengine::StoreClock

    grid $w.console    -stick ns    -column 0  -row 0 -columnspan 12
    grid $w.ysc        -stick ns    -column 12 -row 0

    grid $w.engine     -stick ewns   -column 0  -row 1 -columnspan 9

    grid $w.lmode      -stick ew    -column 0  -row 2
    grid $w.sendboth   -stick e     -column 2  -row 2 
    grid $w.sendwhite               -column 4  -row 2 
    grid $w.sendblack  -stick w     -column 6  -row 2 

    grid $w.bInfo      -stick ew    -column 0  -row 3
    ###---### grid $w.bRotate   -stick ew    -column 0  -row 4
    grid $w.bSync      -stick ew    -column 0  -row 5
    grid $w.bStoreClock -stick ew   -column 0  -row 6
    grid $w.bClose     -stick ew    -column 0  -row 11

    grid $w.bPiece     -stick nwes  -column 2  -row 3 -rowspan 9 -columnspan 3
    grid $w.bMove      -stick nwes  -column 5  -row 3 -rowspan 9 -columnspan 3

    grid $w.wClock     -stick nwes  -column 9 -row 11 -columnspan 7
    grid $w.bClock     -stick nwes  -column 9 -row 1  -columnspan 7

    grid $w.bd         -stick nw    -column 9  -row 2 -rowspan 9 -columnspan 7

    bind $w <Destroy> { catch ::inputengine::connectdisconnect }
    bind $w <F1> { helpWindow InputEngine}

    ::createToplevelFinalize $w
  }

  proc updateConsole {line} {
    set t .inputengineconsole.console
    $t insert end "$line\n"
    $t yview moveto 1
  }

  #----------------------------------------------------------------------
  # connectdisconnect()
  #   Connects or disconnects depending on the current status of the
  #   external input engine
  #----------------------------------------------------------------------
  proc connectdisconnect {} {
    global  ::inputengine::InputEngine

    set connection $::inputengine::InputEngine(pipe)

    if {$connection == ""} {
      consoleWindow
      ::inputengine::connect
    } else {
      ::inputengine::disconnect
    }
  }

  #----------------------------------------------------------------------
  # connect():
  #     Fire upt the input engine and connect it to a local pipe.
  #     Also register the eventhandler
  #----------------------------------------------------------------------
  proc connect {} {
    global ::inputengine::InputEngine ::inputengine::engine \
        ::inputengine::port ::inputengine::param

	 set ::inputengine::engine     $::ExtHardware::engine
	 set ::inputengine::port       $::ExtHardware::port
	 set ::inputengine::param      $::ExtHardware::param

    ::ExtHardware::HWbuttonImg tb_eng_connecting

    if {[catch {set InputEngine(pipe) [open "| $engine $port $param" "r+"]} result]} {
      ::ExtHardware::HWbuttonImg tb_eng_error
      tk_messageBox -title "Scid: Input Engine" -icon warning -type ok \
          -message "[::tr IEUnableToStart]\n$engine $port $param"
      ::inputengine::resetEngine
      return
    }

    ::inputengine::Init
  }

  #----------------------------------------------------------------------
  # disconneet()
  #    Disconnect and close the input engine
  #----------------------------------------------------------------------
  proc disconnect {} {
    global ::inputengine::InputEngine
    set pipe $::inputengine::InputEngine(pipe)

    set ::inputengine::connectimg tb_eng_connecting 

    ::inputengine::sendToEngine "stop"
    ::inputengine::sendToEngine "quit"
    set ::inputengine::connectimg tb_eng_disconnected

    if { [winfo exists ::inputengine::.inputengineconsole]} { 
       destroy ::inputengine::.inputengineconsole
    }
  }

  #----------------------------------------------------------------------
  # logEngine
  #    Simple log routine, ie. writing to stdout
  #----------------------------------------------------------------------
  proc logEngine {msg} {
      updateConsole "$msg"
  }

  #----------------------------------------------------------------------
  # sendToEngine()
  #    Send a string to the engine and log it by means of logEngine
  #----------------------------------------------------------------------
  proc sendToEngine {msg} {
    global ::inputengine::InputEngine
    set pipe $::inputengine::InputEngine(pipe)

    ::inputengine::logEngine "> $msg"
    puts $pipe $msg
    flush $pipe
  }

  #----------------------------------------------------------------------
  # init()
  #    Initialises the engine and internal data
  #----------------------------------------------------------------------
  proc Init {} {
    global ::inputengine::InputEngine
    set pipe $::inputengine::InputEngine(pipe)

    # Configure the pipe and intitiate the engine
    set pipe $::inputengine::InputEngine(pipe)
    fconfigure $pipe -buffering full -blocking 0
    # register the eventhandler
    fileevent  $pipe readable "::inputengine::readFromEngine"

    ::inputengine::newgame
  }

  #----------------------------------------------------------------------
  # resetEngine()
  #    Resets the engines global variables
  #----------------------------------------------------------------------
  proc resetEngine {} {
    global ::inputengine::InputEngine

    ::ExtHardware::HWbuttonImg tb_eng_disconnected
    destroy .inputengineconsole
    set ::inputengine::InputEngine(pipe)     ""
    set ::inputengine::InputEngine(log)      ""
    set ::inputengine::InputEngine(logCount) 0
    set ::inputengine::InputEngine(init)     0
  }


  #----------------------------------------------------------------------
  # sysinfo()
  #    Initialises the engine and internal data
  #----------------------------------------------------------------------
  proc sysinfo {} {
    global ::inputengine::InputEngine
    set pipe $::inputengine::InputEngine(pipe)

    # call system information
    ::inputengine::sendToEngine "sysinfo"
  }

  #----------------------------------------------------------------------
  # rotateboard()
  #    Rotates the board, ie. exchanges a1 and h8
  #----------------------------------------------------------------------
  proc rotateboard {} {
    global ::inputengine::InputEngine
    set pipe $::inputengine::InputEngine(pipe)

    # rotate the graphical boards
    ::board::flip .main.board
    ::board::flip .inputengineconsole.bd

    ::inputengine::newgame
    # rotate the board for the input engine
    ::inputengine::sendToEngine "rotateboard"
    ::inputengine::synchronise
  }

  #----------------------------------------------------------------------
  # newgame()
  #    Handle NewGame event from board
  #----------------------------------------------------------------------
  proc newgame {} {

    # Ask the user to save the current game
    ::game::Clear
    sc_game tags set -event "InputEngine Input"
    sc_game tags set -date [::utils::date::today]
  }

  #----------------------------------------------------------------------
  # endgame()
  #    Handle game ending (end game event + result)
  #----------------------------------------------------------------------
  proc endgame {result} {

    set filternum [sc_filter first]

    logEngine "  info End Game $filternum: $result"

    sc_game tags set -result $result
    gameAdd
  }

  #----------------------------------------------------------------------
  # synchronise()
  #    read board position and set scid's representation accordingly
  #----------------------------------------------------------------------
  proc synchronise {} {
    global ::inputengine::InputEngine

    logEngine "  info Sync called"
    set InputEngine(init) 0

    ::inputengine::sendToEngine "getposition"
    ::inputengine::sendToEngine "getclock"
  }

  proc strreverse {str} {
     set res {}
     set i [string length $str]
     while {$i > 0} {append res [string index $str [incr i -1]]}
     set res
  }

  #----------------------------------------------------------------------
  # readFromEngine()
  #     Event Handler for commands and moves sent from the input
  #     engine, implements input engine protocol
  #----------------------------------------------------------------------
  proc readFromEngine {} {
    global ::inputengine::InputEngine ::inputengine::connectimg
    set pipe $::inputengine::InputEngine(pipe)

    set line     [string trim [gets $pipe] ]

    # Close the pipe in case the engine was stoped
    if [eof $pipe] {
      catch {close $pipe}
      ::inputengine::resetEngine
      return
    }

    switch -regexp -- $line \
        "^move *" {
          set m [string range $line 5 end]

          set s1 [string range $m 0 1]
          set s2 [string range $m 2 end]
          if {$s1 == "0-"} {
            # casteling must not be rewritten
            set m "$s1$s2"
          } else {
            set m "$s1-$s2"
          }

          logEngine "$line"

          if {[catch {sc_move addSan $m}]} {
             ::utils::sound::PlaySound "sound_alert"
             logEngine "  info Illegal move detected!"
             logEngine "  info Ignoring: $m"
             .inputengineconsole.bPiece configure -background red
             .inputengineconsole.bMove  configure -background red -text $m
          } else {

            .inputengineconsole.bPiece configure -background green
            .inputengineconsole.bMove  configure -background green -text $m

             updateBoard -animate
             updateBoard -pgn
             ::inputengine::sendToEngine "getposition"
             ::inputengine::sendToEngine "getclock"
          }
        } \
        "info *" {
          logEngine "< $line"
          set event [string range $line 5 end]
          switch -regexp -- $event \
          "string ERROR *" {
            set err [string range $event 7 end]
            tk_messageBox -title "Scid: Input Engine" \
            -icon warning -type ok -message "Engine $err"
            catch {close $pipe}
            ::ExtHardware::HWbuttonImg tb_eng_error
            return
          } \
          "string Chessboard found and initialised*" {
            # switch to xboard mode and disable move
            # announcments by the driver engine
            ::inputengine::sendToEngine "xboard"
            ::inputengine::sendToEngine "announce"
          } \
          "Engine mode    : xboard*" {
            ::inputengine::sendToEngine "getposition"
            ::ExtHardware::HWbuttonImg $inputengine::connectimg
          } \
          "string FEN *" {
            set InputEngine(init) 0
            # The first FEN string is always sent as
            # info string FEN ...
            # as this is compatible with both UCI and xboard.
            # At this stage the engine is not set to xboard mode
            # yet, so this signals a new program startup
            # accordingly.
          } \
          "FEN *" {
            set fenstr [string range $event 4 end]
            set fenstr [string trim $fenstr]
            if { $::inputengine::InputEngine(init) == 0 }  {
              # Initialise scids representation with the FEN
              # delivered by the external board.
              catch {sc_game startBoard $fenstr}
              updateBoard -pgn
              set InputEngine(init) 1
            } else {
              # Compare the internal representation to the
              # board each time a FEN string arrives from the
              # driver.
              #
              # Do not check the whole FEN, as the external
              # board can not know anything about e.p. or O-O
              # capabilities. Strip them off and compare just
              # the piece settings.
              set space [string first " " $fenstr]
              set fen [string range $fenstr 0 $space]

              set space [string first " " [sc_pos fen]]
              set int [string range [sc_pos fen] 0 $space]

              if {$fen != $int} {
                ::utils::sound::PlaySound "sound_alert"
                logEngine "  info Wrong Position! $int (scid) != $fen (external)"
              } else {
                logEngine "  info Board and internal position match."
              }
              # Generate a board position out of the FEN
              # RNBQKBNRPPPP.PPP............P................n..pppppppprnbqkb.r w
              # Something is in reverse here:
              ###---### set extpos $fen
              ###---### regsub -all {8} $extpos "........" extpos
              ###---### regsub -all {7} $extpos "......." extpos
              ###---### regsub -all {6} $extpos "......" extpos
              ###---### regsub -all {5} $extpos "....." extpos
              ###---### regsub -all {4} $extpos "...." extpos
              ###---### regsub -all {3} $extpos "..." extpos
              ###---### regsub -all {2} $extpos ".." extpos
              ###---### regsub -all {1} $extpos "." extpos
              ###---### regsub -all {/} $extpos "" extpos
              ###---### puts stderr [sc_pos board]
              ###---### puts stderr [strreverse "$extpos"]
              ###---### set extpos "$extpos w"
              ###---### ::board::update .inputengineconsole.bd "$extpos w"
            }
          } \
          {moving piece: [A-Z] *} {
            .inputengineconsole.bPiece configure -image $::board::letterToPiece([string range $event 14 end])80
          }\
          {moving piece: [a-z] *} {
            .inputengineconsole.bPiece configure -image $::board::letterToPiece([string range $event 14 end])80
          }\
          "!new game!" {
            ::inputengine::newgame
            .inputengineconsole.bPiece configure -background blue
            .inputengineconsole.bMove  configure -background blue -text "OK"
            .inputengineconsole.bPiece configure -image $::board::letterToPiece(K)80
          } \
          "!move now!" {
            logEngine "< info $event"
          } \
          "!end game 1-0!" {
            logEngine "< info $event"
            ::inputengine::endgame "1-0"
            .inputengineconsole.bPiece configure -background white
            .inputengineconsole.bMove  configure -background white -text "1-0"
            .inputengineconsole.bPiece configure -image $::board::letterToPiece(K)80
          } \
          "!end game 0-1!" {
            logEngine "< info $event"
            ::inputengine::endgame "0-1"
            .inputengineconsole.bPiece configure -background gray
            .inputengineconsole.bMove  configure -background gray -text "0-1"
            .inputengineconsole.bPiece configure -image $::board::letterToPiece(k)80
          } \
          "!end game 1/2-1/2!" {
            logEngine "< info $event"
            ::inputengine::endgame "1/2-1/2"
            .inputengineconsole.bPiece configure -background black
            .inputengineconsole.bMove  configure -background white -text "1/2-1/2"
            .inputengineconsole.bPiece configure -image $::board::letterToPiece(.)80
          } \
          "!enter setup mode!" {
            .inputengineconsole.bPiece configure -background yellow
            .inputengineconsole.bMove  configure -background yellow -text "Setup"
            .inputengineconsole.bPiece configure -image $::board::letterToPiece(K)80
            logEngine "< info $event"
          } \
          "!end setup mode!" {
            logEngine "< info $event"
            ::inputengine::synchronise
            .inputengineconsole.bPiece configure -background yellow
            .inputengineconsole.bMove  configure -background yellow -text "OK"
            .inputengineconsole.bPiece configure -image $::board::letterToPiece(q)80
          } \
          "!white to move!" {
            set ::inputengine::toMove "White"
            .inputengineconsole.wClock configure -background white
            .inputengineconsole.bClock configure -background gray -foreground black

            if {$::inputengine::StoreClock == 1} {
               if { ($::inputengine::oldWhiteClock != $::inputengine::NoClockTime) && \
                    ($::inputengine::WhiteClock    != $::inputengine::NoClockTime) } {
                  set wHrs [expr $::inputengine::WhiteClock / 60 / 60]
                  set wMin [expr ($::inputengine::WhiteClock - $wHrs*60*60) / 60 ]
                  set wSec [expr ($::inputengine::WhiteClock - $wHrs*60*60 - $wMin * 60) ]
                  set timediff [expr $::inputengine::oldWhiteClock - $::inputengine::WhiteClock]
                  set ::inputengine::oldWhiteClock $::inputengine::WhiteClock
                  sc_pos setComment "\[%ct $wHrs:$wMin:$wSec\] \[%emt $timediff\]"
               }
            }
          } \
          "!black to move!" {
            set ::inputengine::toMove "Black"
            .inputengineconsole.wClock configure -background gray
            .inputengineconsole.bClock configure -background black -foreground white

            if {$::inputengine::StoreClock == 1} {
               if { ($::inputengine::oldBlackClock != $::inputengine::NoClockTime) && \
                    ($::inputengine::BlackClock    != $::inputengine::NoClockTime) } {
                  set bHrs [expr $::inputengine::BlackClock / 60 / 60]
                  set bMin [expr ($::inputengine::BlackClock - $bHrs*60*60) / 60 ]
                  set bSec [expr ($::inputengine::BlackClock - $bHrs*60*60 - $bMin * 60) ]
                  set timediff [expr $::inputengine::oldBlackClock - $::inputengine::BlackClock]
                  set ::inputengine::oldBlackClock $::inputengine::BlackClock
                  sc_pos setComment "\[%ct $bHrs:$bMin:$bSec\] \[%emt $timediff\]"
               }
            }
          } \
          "No Clock detected" {
             set ::inputengine::WhiteClock $::inputengine::NoClockTime
             set ::inputengine::BlackClock $::inputengine::NoClockTime
             .inputengineconsole.wClock configure -text $::inputengine::WhiteClock
             .inputengineconsole.bClock configure -text $::inputengine::BlackClock
          } \
          "Time White:" {
            if { ($::inputengine::oldWhiteClock == $::inputengine::NoClockTime) } {
               set ::inputengine::oldWhiteClock $::inputengine::WhiteClock
            }
            # Get the time in seconds
            regsub -all {[A-Za-z:# ]} $event "" ::inputengine::WhiteClock

            # calculate a sensible format
            set wHrs [expr $::inputengine::WhiteClock / 60 / 60]
            set wMin [expr ($::inputengine::WhiteClock - $wHrs*60*60) / 60 ]
            set wSec [expr ($::inputengine::WhiteClock - $wHrs*60*60 - $wMin * 60) ]

            if {$wHrs > 0} {
               .inputengineconsole.wClock configure -text "$wHrs:$wMin:$wSec (EXT)"
            } else {
               .inputengineconsole.wClock configure -text "$wMin:$wSec (EXT)"
            }

            ###---### Is this enough to set game clocks for all possible occurences?
            catch { ::gameclock::setSec 1 [expr -1*$::inputengine::WhiteClock] }
          } \
          "Time Black:" {
            if { ($::inputengine::oldBlackClock == $::inputengine::NoClockTime) } {
               set ::inputengine::oldBlackClock $::inputengine::BlackClock
            }
            regsub -all {[A-Za-z:# ]} $event "" ::inputengine::BlackClock

            set bHrs [expr $::inputengine::BlackClock / 60 / 60]
            set bMin [expr ($::inputengine::BlackClock - $bHrs*60*60) / 60 ]
            set bSec [expr ($::inputengine::BlackClock - $bHrs*60*60 - $bMin * 60) ]

            if {$bHrs > 0} {
               .inputengineconsole.bClock configure -text "$bHrs:$bMin:$bSec (EXT)"
            } else {
               .inputengineconsole.bClock configure -text "$bMin:$bSec (EXT)"
            }

            ###---### Is this enough to set game clocks for all possible occurences?
            catch { ::gameclock::setSec 2 [expr -1*$::inputengine::BlackClock] }
          } \
          "Wrong move performed:" {
             # This event can only be used if there is a possiblity to
             # send the last move to the input engine for it ot cross
             # check. This however is not easy in Scid, therefore
             # compare FEN.
             #
             # ::utils::sound::PlaySound "sound_alert"
             # logEngine "< info $event"
          } \
          "DGT Projects - This DGT board" {
            set ::inputengine::connectimg tb_eng_dgt
            set txt [string range $event 7 end]
            ## ::utils::tooltip::Set .button.exthardware "$::inputengine::port:\n$txt"
          } \
        } \
        default  {
          logEngine "< $line"
        }
        # Should better show current wooden board position? Return value of 
        # sc_pos board is
        # RNBQKBNRPPPP.PPP............P................n..pppppppprnbqkb.r w
        ::board::update .inputengineconsole.bd [sc_pos board]
  }



}


###
### End of file: inputengine.tcl
###
###
### novag.tcl: part of Scid.
### Copyright (C) 2007  Pascal Georges
###
######################################################################
### add NOVAG board support

namespace eval novag {
  set fd ""
  set connected 0
  set waitBetweenMessages 0
  
  ##########################################################
  proc connect {} {
    global ::novag::fd
    
    set serial $::ExtHardware::port
    
    set w .novag
    ::createToplevel $w
    ::setTitle $w "Novag Citrine"
    pack [ttk::panedwindow $w.f -orient vertical] -expand 1 -fill both
    
    ttk::frame $w.f.top
    ttk::frame $w.f.bottom
    $w.f add $w.f.top -weight 1
    $w.f add $w.f.bottom -weight 1
    
    ttk::scrollbar $w.f.top.ysc -command { .novag.f.top.output yview }
    text $w.f.top.output -width 20 -height 20  -wrap word  -yscrollcommand ".novag.f.top.ysc set"
    pack $w.f.top.ysc -side left -fill y -side right
    pack .novag.f.top.output -side left -fill both -expand 1 -side right
    
    entry $w.f.bottom.input -width 20
    ttk::button $w.f.bottom.send -text Send -command {
      ::novag::send [.novag.f.bottom.input get]
      .novag.f.bottom.input delete 0 end
    }
    bind $w.f.bottom.input <Return> " $w.f.bottom.send invoke "
    bind $w <Destroy> { catch ::novag::disconnect }
    bind $w <F1> { helpWindow Novag}
    ::createToplevelFinalize $w
    
    ttk::checkbutton $w.f.bottom.cbref -text [tr "NovagReferee" ] -variable ::novag::referee -offvalue "OFF" -onvalue "ON" -command { ::novag::send  "U $::novag::referee" }
    
    pack $w.f.top.output -fill both -expand 1
    pack $w.f.bottom.input $w.f.bottom.send  $w.f.bottom.cbref -side left
    update
    
    # Set button to "connection in progress"
    ::ExtHardware::HWbuttonImg tb_eng_connecting
    
    if {[catch { set fd [open $serial r+ ] } err]} {
        tk_messageBox -type ok -icon error -parent . -title "Novag Citrine" -message "Connection error for $serial \n $err"
        destroy $w
        return
    }
    
    # 57600 bauds, no parity, 8 bits, 1 stop
    fconfigure $fd -mode 57600,n,8,1 -blocking 0 -buffering line
    fileevent $fd readable ::novag::recv
    # human / human mode
    # get info
    ::novag::send "I"
    wait 200
    # new game
    ::novag::send "N"
    wait 200
    ::novag::send "X ON"
    wait 200
    ::novag::send "U ON"
    set ::novag::connected 1
    
    # Set button to "connected, ready to use"
    ::ExtHardware::HWbuttonImg tb_eng_ok
  }
  ##########################################################
  proc disconnect {} {
    global ::novag::fd
    close $fd
    set ::novag::connected 0
  }
  
  ##########################################################
  proc addMove {san} {
    # if promotion add "/"
    if {[string length $san] == 5} {
      set san "[string range $san 0 3]/[string range $san 4 end]"
    }
    
    ::novag::send "M $san"
    if { [ string first "x" [sc_game info previousMove] ] != -1 } {
      wait 3000
    } else {
      wait 200
    }
    # ::novag::send "T"
    ::novag::send "M $san"
  }
  ##########################################################
  proc send {msg} {
    global ::novag::fd
    puts "sending $msg"
    puts $fd "$msg\n\r"
  }
  ##########################################################
  proc recv {} {
    global ::novag::fd
    
    set output .novag.f.top.output
    
    set l [gets $fd]
    if { $l == "" } { return }
    puts "received $l"
    $output insert end "$l\n"
    $output yview moveto 1
    
    if {[string match -nocase "New Game*" $l]} {
      sc_game new
      updateBoard -pgn
      ::novag::send "U $::novag::referee"
      return
    }
    
    if {[lindex $l 0] == "M"} {
      
      if {[sc_pos side] == "white" && [string index [lindex $l 1] end ] == ","} {  return }
      if {[sc_pos side] == "black" && [string index [lindex $l 1] end ] != ","} {  return }
      
      set m [lindex $l 2]
      set m [regsub -- "-" $m ""]
      set m [regsub -- "/" $m ""]
      if { [ catch { sc_move addSan $m } err ] } {
        puts $err
      } else {
        if {[winfo exists .fics]} {
          if { $::fics::playing == 1} {
            ::fics::writechan [ sc_game info previousMoveNT ]
          }
        }
      }
      updateBoard -pgn
      return
    }
    
    if {[lindex $l 0] == "T"} {
      sc_move back
      updateBoard -pgn
      return
    }
    
  }
  ##########################################################
  proc wait {ms} {
    after $ms {set ::novag::waitBetweenMessages 1}
    vwait ::novag::waitBetweenMessages
  }
}

###
### End of file: novag.tcl
###
###
### bibliography.tcl: part of Scid.
### Copyright (C) 2010 Alexander Wagner
###
### $Id: bibliography.tcl,v 4.3 2011/02/13 18:12:02 arwagner Exp $
###
### Last change: <Tue, 2010/07/13 23:08:01 arwagner ingata>
###
### Handle Bib pgn headers to show bibliographic references for a
### given game. The bibliographic database should be available in
### BibTeX format. The ref header should be of the form:
###
### [Bib "<bibtexkey>, <additional info> ; <bibtexkey>, <additional info>]
###
### E.g.
###     [Bib "Botvinnik:1960, No. 27 p.57"]
###
### Refering to the BibTeX record:
###
###     @BOOK{Botvinnik:1960,
###       title = {{O}ne hundred selected games},
###       publisher = {Dover Pub.},
###       year = {1960},
###       author = {Botvinnik, M. M.},
###       pages = {272},
###       address = {New York},
###       keywords = {Game Collection},
###       refid = {1106902}
###     }

###
#======================================================================

set m .menu.tools

# $m add command -label "Database information..." -command {::metadata::show}

#======================================================================
#
#======================================================================
namespace eval Bibliography {

	set literature ""

image create photo tb_bibliography -data {
	R0lGODlhEAAPAMZrAAAAAA4ODg0RFRYdJB0gIyUlJSInLiIsNC4vNC41OzM7Qi89STw8PDpETkFG
	TEJHS0JHTEVITD1KV0VJTj5MVzFOazJOa0ZLUDJPbElMTjNQbjRRbUtOUTVSbk5OTkVQXDpXdTxY
	dE5WXT1ZdD9adVZXWUJceFhbX0Rgfk5fcUlgeEVhfU1gcVteYUpielhgaUhkgltiaU5lfFNnfGJl
	aU1ph2JmaU9riWVpbmFqc1lsgFNtimdqbVJujFNvjV1vg2NvfF1xe15xhGBze1h0knBxc1p2k114
	lGx5cmB7mHF+d2V/m2aAnG5/kGuFoXSFloKIdHqKm36Pn4+UmYKYsY2gtqChgZ6lr5qqvJ6ruZut
	v6Sxv66wsqqyuqu6ya+7ybu9wMvMze7WgN3h5Obm6OTn6efo6evt7u7v8O/w8PDx8v//////////
	/////////////////////////////////////////////////////////////////////////yH+
	EUNyZWF0ZWQgd2l0aCBHSU1QACH5BAEKAH8ALAAAAAAQAA8AAAekgH+Cg4SFhQYAiYqKhgFYRzsr
	IyEkJikAhABeSzdinlAWKhSFBVpGVkMaFWIdKSKYggBbTD0oSp5ILhIZRYMMVUQ1QWIVFRszCSWw
	AF9OPjAgGMUyCzywfx5USTcoxMUsCg/LV1JRT01CPz86HyfXAC8IExwcEQ4QFzg07zk2XGZk0qA5
	E2bKtT8EEjUAkmVMGTVgWhwctOhAjC4TDf0RkGhAoUAAOw==
}

if {$png_image_support} {
	image create photo tb_bibliography -data {
		iVBORw0KGgoAAAANSUhEUgAAABAAAAAPCAYAAADtc08vAAACYElEQVR42q2TS0hUcRSHv7l3nHFG
		HXykk4KTmIObbGVpJG1aFSFFVEK7WojkplZBaEGbFolCEUhZSIkRlWXpYiaJsqRMsxoKo8YHSfkY
		argzdx733rn/FjoSItSiA2dzOOc7L37wn81eXrm1ExB/c0dOfjMgWdYAGlwuV+/Fa/cZfjtJTI2h
		RCMkEnGEAFmyIEsy2XKS/u52ANm6BtDbddeP7+UHlIjKjRNxQAayudwf5cFIDHd+DuHQdwHsBMw/
		AQe9Xi/hSAw1nuDA9gSnunQCwQimmWLoQiGPRjUyRJJcpw1gBLCkV5AB49bDpzyfCBL6GUZRFKo8
		SVoaHAC03lSYWsgkMh80s6U4lV7vvY72tsPpCY7X1dWx8CuOEo2h6zrFeSlaGhzsPr203EGW2FTk
		ZG5pjuJyDx3tbYcAW3oC0ed/zZPRSeYXQ6iqihJJH08AUOrOY3ZynNqqCjqvXALYBQxLwP76+noC
		wXnUWBzDMDAMg8dns1aLAYSuYjWTfAlOmSuhYQALIK739ImZxbDF0A00XUfTNMJKFGEuA4xUitDc
		VwqyZG73dJNhz2zVk4nzAFYAn99n+TTxJuUuKZFtGTIAmqZjmMtntlqtlHk8pAwd4GO6eBXgcDqp
		rtkm79u7hx21NQhT4HBmIgSkTJOZ6WlevBrjZHMjFkk6J0xzdTW5tGyz85l/IGdifMz9LaSqgc+z
		Ns1ix70hFyEEDrudqelZBgcHCLx/B0IcWU8DBUATcBUYAn4AonxLtXb0WJNxp9+nA8Lpyj/zL4La
		uPKixpy8wq60eIpKK/zrJf8GjDkZQZW6Gi0AAAAASUVORK5CYII=
	}
}

	#----------------------------------------------------------------------
	# Take a ref structure and turn it into a simplified version of
	# ISBD reference output
	#----------------------------------------------------------------------
	proc Ref2ISBD { Ref Biblio} {

		set w .showRef

		set key [lindex $Ref 0]
		set type ""
		set address   ""; set author    ""; set editor    ""; set number    "";
		set isbn      ""; set issn      ""; set issue     ""; set pages     "";
		set publisher ""; set title     ""; set volume    ""; set year      "";
		set edition   ""; set keywords  "";

		foreach tag { type address author editor number isbn issn issue pages publisher title volume year edition keywords } {
			set $tag [lindex [lindex $Ref [lsearch -exact -index 0 $Ref $tag]] 1]
		}
		regsub -all -nocase { and }    $author "; " author
		set isbd ""

		$w.f.tree insert {} end -id $key -text "$type: $author ($key)" -open true
		$w.f.tree insert $key end -id "l2$key" -text "$author" -tags {author}
		$w.f.tree insert $key end -id "l3$key" -text "$title"  -tags {title}
		$w.f.tree insert $key end -id "l4$key" -text "$Biblio" -tags {reference}
		if {$editor != ""} {
			$w.f.tree insert $key end -id "l5$key" -text "Ed. $editor"
		}
		if {$edition != ""} {
			$w.f.tree insert $key end -id "l6$key" -text  "$edition"
		}
		$w.f.tree insert $key end -id "l7$key" -text  "$address : $publisher, $year. - "
		if {$pages != ""} {
			$w.f.tree insert $key end -id "l8$key" -text  "$pages"
		}
		if {$isbn != ""} {
			$w.f.tree insert $key end -id "l9$key" -text  "$isbn"
		} elseif {$issn != ""} {
			$w.f.tree insert $key end -id "l9$key" -text  "$issn"
		}
		if {$keywords != ""} {
			$w.f.tree insert $key end -id "l0$key" -text  "$keywords"
		}

		### set isbd "\[$type\]\n"
		### set isbd "$author\n$title / $author.\n"
		### if {$editor != ""} {
		### 	set isbd "$isbd Ed. $editor\n"
		### }
		### set isbd "$isbd $edition\n"
		### set isbd "$isbd $address : $publisher, $year. - "
		### set isbd "$isbd $pages\n$isbn\n\n$keywords"

		# Simplified ISBD for book
		if {$type == "BOOK"} {
			set isbd "$author:\n$title / $author. Ed. $editor.\n- $edition -\n$address : $publisher, $year. - $pages\n$isbn\n\n$keywords\n"
		} elseif {$type == "PERIODICAL"} {
			# Simplified ISBD for journal
			set isbd "\[Journal\]\n$title / publ. $editor\n$address : $publisher, $year. - $pages\n$issn\n\n$keywords\n"
		} else {
			# use book format by default, should be improved
			set isbd "\[$type\]\n$author:\n$title / $author. Ed. $editor.\n - $edition - $address : $publisher, $year. - $pages\n$isbn ($issn)\n\n$keywords\n"
		}
		### set isbd "$isbd\n------------------------------------------------------------\n";

		return $isbd
	}

	#----------------------------------------------------------------------
	# Simple BibTeX reader. Does not handle all the funny things of
	# BibTeX like crossref etc. assumes all tags in a single line
	#----------------------------------------------------------------------
	proc ReadBibTeX { bibfile } {
		set fd [open $bibfile]

		set Bibentries {}

		set type ""
		set key  ""
		set address   ""; set author    ""; set editor    ""; set number    "";
		set isbn      ""; set issn      ""; set issue     ""; set pages     "";
		set publisher ""; set title     ""; set volume    ""; set year      "";
		set edition   ""; set keywords  "";

		while { [gets $fd line] >= 0} {
			if {[regexp -- "@" $line]} {
				# begin of dataset
				lappend Bibentries [list \
					"$key" \
					[list "type" $type] \
					[list "title" $title] \
					[list "editor" $editor] \
					[list "author" $author] \
					[list "publisher" $publisher] \
					[list "pages" $pages] \
					[list "address" $address] \
					[list "isbn" $isbn] \
					[list "issn" $issn] \
					[list "volume" $volume] \
					[list "issue" $issue] \
					[list "number" $number] \
					[list "edition" $edition] \
					[list "keywords" $keywords] \
					[list "year"  $year] ]

				regsub {\{.*} $line "" type
				regsub {\@} $type "" type
				## set type [string lower type]
				regsub {.*\{} $line "" key
				regsub {,}    $key  "" key

				set key [string trim $key]
				set type [string trim $type]

				set address   ""; set author    ""; set editor    ""; set number    "";
				set isbn      ""; set issn      ""; set issue     ""; set pages     "";
				set publisher ""; set title     ""; set volume    ""; set year      ""
				set edition   ""; set keywords  "";
			} else {
				regsub -all { "} $line {} line
				regsub -all {" } $line {} line
				regsub -all {,$} $line {} line
				regsub -all {[\{\}]} $line {} line

			}
			if {[regexp -- {[ \t]title[ \t=]} $line]} {
				regsub -all {title .*= } $line {} title
				set title [string trim $title]
			}
			if {[regexp -- {[ \t]author[ \t=]} $line]} { 
				regsub -all {author .*= } $line {} author
				set author [string trim $author]
			}
			if {[regexp -- {[ \t]editor[ \t=]} $line]} { 
				regsub -all {editor .*= } $line {} editor
				set editor [string trim $editor]
			}
			if {[regexp -- {[ \t]year[ \t=]} $line]} {
				regsub -all {year .*= } $line {} year
				set year [string trim $year]
			}
			if {[regexp -- {[ \t]publisher[ \t=]} $line]} {
				regsub -all {publisher .*= } $line {} publisher
				set publisher [string trim $publisher]
			}
			if {[regexp -- {[ \t]address[ \t=]} $line]} {
				regsub -all {address .*= } $line {} address
				set address [string trim $address]
			}
			if {[regexp -- {[ \t]isbn[ \t=]} $line]} {
				regsub -all {isbn.*= } $line {} isbn
				set isbn [string trim $isbn]
			}
			if {[regexp -- {[ \t]issn[ \t=]} $line]} {
				regsub -all {issn.*= } $line {} issn
				set issn [string trim $issn]
			}
			if {[regexp -- {[ \t]issue[ \t=]} $line]} {
				regsub -all {issue.*= } $line {} issue
				set issue [string trim $issue]
			}
			if {[regexp -- {[ \t]volume[ \t=]} $line]} {
				regsub -all {volume.*= } $line {} volume
				set volume [string trim $volume]
			}
			if {[regexp -- {[ \t]number[ \t=]} $line]} {
				regsub -all {number.*= } $line {} number
				set number [string trim $number]
			}
			if {[regexp -- {[ \t]edition[ \t=]} $line]} {
				regsub -all {edition.*= } $line {} edition
				set edition [string trim $edition]
			}
			if {[regexp -- {[ \t]keywords[ \t=]} $line]} {
				regsub -all {keywords.*= } $line {} keywords
				set keywords [string trim $keywords]
			}
		}
		close $fd
		return $Bibentries
	}

	#----------------------------------------------------------------------
	# Extract the Ref header from the current game. Uses bibfile as
	# input for bibliographic information, returns a block of ISBD
	# formatted entries
	#----------------------------------------------------------------------
	proc ExtractRef { bibfile } {

		set w .showRef

		set Extra  [sc_game tags get Extra]
		set extraTagsList [split $Extra "\n"]

		set literature ""

		foreach i $extraTagsList {
			if { [string equal -nocase [lindex $i 0] "Bib" ] } {
				set ref [string range $i 5 end-1]

				regsub -all { ; } $ref {|} ref

				# Tcl uses a list of split chars as second argument :(
				set ref [split $ref "|"]
				
				set BibEntries [::Bibliography::ReadBibTeX $bibfile]

				foreach r $ref {
					regsub -all {, .*} $r {} BibKey
					regsub -all {.*, } $r {} Biblio
					set BibKey [string trim $BibKey]
					set Biblio [string trim $Biblio]
					set idx [lsearch -exact -index 0 $BibEntries $BibKey]
					set BibDta [lindex $BibEntries $idx]

					set isbd [::Bibliography::Ref2ISBD $BibDta $Biblio]
					set literature "$literature\n$isbd\n$Biblio\n\n"
				}
			}
		}
		set lit [string trim $literature]
		return $lit
	}

	#----------------------------------------------------------------------
	# Open a window with an expanded tree widget containing all
	# referenced entities from the BibTeX file.
	#----------------------------------------------------------------------
	proc ShowRef {} {
		global scidDataDir

		set w .showRef

		if { [winfo exists $w] } {
			# recreate the widget with new data
			destroy $w
		}

		toplevel $w
		::setTitle $w "References"
		setWinLocation $w
		setWinSize $w

		ttk::frame $w.f
		pack $w.f -fill both -expand 1

		ttk::treeview  $w.f.tree -xscrollcommand "$w.f.xbar set" -yscrollcommand "$w.f.ybar set" -show tree -selectmode none
		ttk::scrollbar $w.f.xbar -command "$w.f.tree xview" -orient horizontal
		ttk::scrollbar $w.f.ybar -command "$w.f.tree yview" -orient vertical
		$w.f.tree column #0 -minwidth 1200

		$w.f.tree tag configure author -foreground blue
		$w.f.tree tag configure title -foreground blue
		$w.f.tree tag configure reference -foreground red

		pack $w.f.xbar -side bottom -fill x
		pack $w.f.ybar -side right  -fill y
		pack $w.f.tree -side left   -expand 1 -fill both

		# set a global bib file
		set bibfile [file nativename [file join $scidDataDir "Bookshelf.bib"]]
		# ... but overwrite it if a bibliography for the base itself exits
		if {[file readable "[sc_base filename].bib"]} {
			set bibfile "[sc_base filename].bib"
		}
		set ::Bibliography::literature [::Bibliography::ExtractRef $bibfile]

		bind $w <Escape> { destroy  .showRef}
		bind $w <Configure>  {
			recordWinSize .showRef
		}
		# Copy references to clipboard
		bind $w <Control-Insert> { clipboard clear; clipboard append $::Bibliography::literature }
		bind $w <Control-c>      { clipboard clear; clipboard append $::Bibliography::literature }
	}

}

###
### End of file: bibliography.tcl
###
