1
Fork 0

Add pgn4web v2.80.

master
vonavi 2014-02-12 23:44:20 +02:00
parent 0b04482d3a
commit 354d5af4b6
1952 changed files with 130486 additions and 0 deletions

View File

@ -0,0 +1,88 @@
[Event "Wch Blitz"]
[Site "Moscow RUS"]
[Date "2010.11.18"]
[Round "30"]
[White "Carlsen, Magnus"]
[Black "Svidler, Peter"]
[Result "1-0"]
[SetUp "1"]
[FEN "8/6k1/1R6/p2pBnP1/8/8/r7/6K1 b - - 6 62"]
[VideoTime "0.6"]
{ associated video originally from http://www.youtube.com/watch?v=HY3SM3GKjd8 }
62... Kh7 {[%vt 3.5]}
63. g6 {[%vt 4.3]}
63... Kh6 {[%vt 5.7]}
64. g7 {[%vt 6.4]}
64... Kh7 {[%vt 7.2]}
65. Rb8 {[%vt 7.8]}
65... Nxg7 {[%vt 10.1]}
66. Rb7 {[%vt 10.9]}
66... Kg6 {[%vt 11.9]}
67. Rxg7 {[%vt 12.5]}
67... Kf5 {[%vt 14.1]}
68. Bd6 {[%vt 16.2]}
68... d4 {[%vt 17.1]}
69. Kf1 {[%vt 18.1]}
69... Ke4 {[%vt 18.8]}
70. Ke1 {[%vt 20.1]}
70... a4 {[%vt 21.3]}
71. Rg3 {[%vt 22.6]}
71... d3 {[%vt 23.3]}
72. Kd1 {[%vt 25.6]}
72... a3 {[%vt 27.6]}
73. Rg4 {[%vt 28.4]}
73... Kf3 {[%vt 30.3]}
74. Ra4 {[%vt 31.2]}
74... Ra1 {[%vt 34.6]}
75. Kd2 {[%vt 35.6]}
75... a2 {[%vt 36.7]}
76. Be5 {[%vt 37.5]}
76... Rh1 {[%vt 41.8]}
77. Kxd3 {[%vt 46.7]}
77... Rd1 {[%vt 47.7]}
78. Kc2 {[%vt 49.4]}
78... Rd5 {[%vt 50.6]}
79. Bc3 {[%vt 51.9]}
79... Rd8 {[%vt 54.9]}
80. Rxa2 {[%vt 55.7]}
80... Ke4 {[%vt 56.6]}
81. Ra4 {[%vt 57.4]}
81... Kf5 {[%vt 58.3]}
82. Bd4 {[%vt 59.2]}
82... Rd7 {[%vt 60.6]}
83. Kd3 {[%vt 61.4]}
83... Rd8 {[%vt 62.2]}
84. Ra5 {[%vt 63.2]}
84... Kf4 {[%vt 65]}
85. Ra6 {[%vt 66.4]}
85... Kg5 {[%vt 74.9]}
86. Ke4 {[%vt 75.7]}
86... Rb8 {[%vt 79.4]}
87. Ra7 {[%vt 83.5]}
87... Rb4 {[%vt 84.8]}
88. Rg7 {[%vt 85.8]}
88... Kh4 {[%vt 87.5]}
89. Rg8 {[%vt 89.3]}
89... Ra4 {[%vt 90.2]}
90. Ke5 {[%vt 93]}
90... Kh3 {[%vt 94.4]}
91. Be3 {[%vt 95.8]}
91... Rb4 {[%vt 98.4]}
92. Kf5 {[%vt 99.7]}
92... Ra4 {[%vt 110]}
93. Bf4 {[%vt 110.8]}
93... Ra3 {[%vt 113.7]}
94. Bd6 {[%vt 120.8]}
94... Ra4 {[%vt 121.9]}
95. Rg3 {[%vt 123.9]}
95... Kh4 {[%vt 124.7]}
96. Rg2 {[%vt 127]}
96... Kh5 {[%vt 131.7]}
97. Rg8 {[%vt 137.4]}
97... Kh6 {[%vt 142.3]}
98. Be5 {[%vt 144.1]}
98... Ra7 {[%vt 145.7]}
99. Rg1 {[%vt 149.4]}
1-0

View File

@ -0,0 +1,95 @@
[Event "WCh Women Blitz"]
[Site "Moscow RUS"]
[Date "2010.09.18"]
[Round "30"]
[White "Krush, Irina"]
[Black "Kosteniuk, Alexandra"]
[Result "0-1"]
[TimeControl "180+2"]
[WhiteClock "3.02"]
[BlackClock "3.02"]
[VideoTime "2"]
{ associated video originally from http://www.youtube.com/watch?v=EUEypIgynsk }
1. d4 {[%vt 18.6] [%clk 3.03]}
1... Nf6 {[%vt 19.4] [%clk 3.03]}
2. c4 {[%vt 20.1] [%clk 3.04]}
2... e6 {[%vt 20.7] [%clk 3.05]}
3. Nc3 {[%vt 21.3] [%clk 3.03]}
3... Bb4 {[%vt 22.6] [%clk 3.06]}
4. Qc2 {[%vt 23.3] [%clk 3.05]}
4... d5 {[%vt 24.2] [%clk 3.08]}
5. cxd5 {[%vt 25.2] [%clk 3.07]}
5... exd5 {[%vt 25.9] [%clk 3.09]}
6. Bg5 {[%vt 27.4] [%clk 3.08]}
6... h6 {[%vt 28.5] [%clk 3.10]}
7. Bh4 {[%vt 29.1] [%clk 3.08]}
7... g5 {[%vt 29.6] [%clk 3.12]}
8. Bg3 {[%vt 30.5] [%clk 3.10]}
8... Ne4 {[%vt 31.6] [%clk 3.13]}
9. e3 {[%vt 32.4] [%clk 3.11]}
9... h5 {[%vt 34.3] [%clk 3.13]}
10. a3 {[%vt 36.8] [%clk 3.10]}
10... Bxc3 {[%vt 51.8] [%clk 3.00]}
11. bxc3 {[%vt 53.3] [%clk 3.11]}
11... Bf5 {[%vt 92.1] [%clk 2.23]}
12. Bd3 {[%vt 96.3] [%clk 3.08]}
12... Nd7 {[%vt 108.5] [%clk 2.13]}
13. f3 {[%vt 119.5] [%clk 2.59]}
13... Nxg3 {[%vt 121.5] [%clk 2.13]}
14. hxg3 {[%vt 122.6] [%clk 3.00]}
14... Bxd3 {[%vt 124.5] [%clk 2.13]}
15. Qxd3 {[%vt 125.9] [%clk 3.00]}
15... Qf6 {[%vt 127.9] [%clk 2.14]}
16. Ne2 {[%vt 137] [%clk 2.52]}
16... O-O-O {[%vt 138.9] [%clk 2.14]}
17. c4 {[%vt 147.6] [%clk 2.47]}
17... dxc4 {[%vt 166.3] [%clk 1.57]}
18. Qxc4 {[%vt 169.6] [%clk 2.45]}
18... Nb6 {[%vt 170.4] [%clk 1.58]}
19. Qb3 {[%vt 180] [%clk 2.38]}
19... h4 {[%vt 191.9] [%clk 1.48]}
20. Kf2 {[%vt 204.4] [%clk 2.27]}
20... hxg3 {[%vt 215.1] [%clk 1.40]}
21. Nxg3 {[%vt 219.5] [%clk 2.24]}
21... Qg6 {[%vt 224.2] [%clk 1.38]}
22. a4 {[%vt 271.8] [%clk 1.39]}
22... f5 {[%vt 276.4] [%clk 1.35]}
23. Qc2 {[%vt 287.7] [%clk 1.29]}
23... Rhf8 {[%vt 296.7] [%clk 1.28]}
24. a5 {[%vt 308.5] [%clk 1.19]}
24... Nd5 {[%vt 309.1] [%clk 1.30]}
25. a6 {[%vt 320.8] [%clk 1.10]}
25... b6 {[%vt 321.6] [%clk 1.31]}
26. Rac1 {[%vt 327.8] [%clk 1.06]}
26... Qe6 {[%vt 338.2] [%clk 1.22]}
27. Rhe1 {[%vt 363.2] [%clk 0.43]}
27... Rd7 {[%vt 365] [%clk 1.22]}
28. e4 {[%vt 376] [%clk 0.34]}
28... fxe4 {[%vt 392.1] [%clk 1.08]}
29. Nxe4 {[%vt 393] [%clk 0.34]}
29... Nb4 {[%vt 400.2] [%clk 1.04]}
30. Qc3 {[%vt 407.9] [%clk 0.29]}
30... Nxa6 {[%vt 416.1] [%clk 0.57]}
31. Nc5 {[%vt 420.8] [%clk 0.26]}
31... Qd5 {[%vt 432] [%clk 0.48]}
32. Nxd7 {[%vt 446.5] [%clk 0.13]}
32... Qxd7 {[%vt 448] [%clk 0.49]}
33. Qa3 {[%vt 451.4] [%clk 0.12]}
33... Qxd4 {[%vt 452.3] [%clk 0.49]}
34. Kf1 {[%vt 456.6] [%clk 0.10]}
34... Nc5 {[%vt 464.2] [%clk 0.44]}
35. Qxa7 {[%vt 465.8] [%clk 0.10]}
35... Qd3 {[%vt 471.3] [%clk 0.40]}
36. Re2 {[%vt 473.9] [%clk 0.10]}
36... Kd7 {[%vt 492.1] [%clk 0.25]}
37. Qa2 {[%vt 496.7] [%clk 0.07]}
37... g4 {[%vt 499] [%clk 0.24]}
38. Kg1 {[%vt 503.9] [%clk 0.04]}
38... Qd4 {[%vt 505.8] [%clk 0.24]}
39. Kh2 {[%vt 509] [%clk 0.03]}
39... Qf4 {[%vt 510.3] [%clk 0.25]}
40. Kg1 {[%vt 510.9] [%clk 0.02]}
40... Qxc1 {[%vt 511.5] [%clk 0.26]}
0-1

532
_assets/vendor/pgn4web/README.txt vendored Normal file
View File

@ -0,0 +1,532 @@
#
# pgn4web javascript chessboard
# copyright (C) 2009-2013 Paolo Casaschi
# see README file and http://pgn4web.casaschi.net
# for credits, license and more details
#
PGN4WEB: javascript chess games viewer for websites, blogs and live broadcasts.
ABOUT
pgn4web comes as software package you can add to your website or blogsite, but
also provides a very simple board generator web tool helping you adding chess
games to your website or blog without any html/javascript coding.
pgn4web integrates with several popular web platforms and services.
***
*** THIS README FILE IS A SUMMARY OF THE PGN4WEB DOCUMENTATION
*** MORE EXTENSIVE AND UPDATED DOCUMENTATION IS AVAILABLE
*** FROM THE PGN4WEB SUPPORT WIKI REACHABLE FROM http://pgn4web.casaschi.net
*** PLEASE RELY ON THE SUPPORT WIKI RATHER THAN THIS README ONLY
***
Project homepage: http://pgn4web.casaschi.net (including downloads and wiki)
Contact email: pgn4web@casaschi.net
Features:
- display chess games form PGN files on websites and blogs
- supports live broadcasts of chess games
- interactive browsing of game variations and comments
- shortcut keys for navigating through the game, for selecting games and much
more; uses chessboard squares as input buttons; on supported touchscreen
devices uses touch gestures across the chessboard
- fully customizable display: each item (board, button bar, game selection
menu, PGN header info, game text, game comment and more) can be displayed
(or hidden) at pleasure in your html file
- support different bitmaps for chess pieces (even custom bitmaps) and
different chessboard sizes
- uses figurine fonts for chess moves and chess informant style symbols for
comments and annotations
- provides a very simple board generator web tool helping you adding chess
games to your website or blog without any html/javascript coding (see
http://pgn4web-board-generator.casaschi.net
- integrated with popular blog platforms (such as blogger and wordpress),
portal platforms (such as joomla, drupal and wikimedia), forum platforms
(such as phpBB, simplemachines and vbulletin) and hosting services (such
as google sites)
- integrated with HTML5 video and YouTube video
- supports Chess960 (a.k.a. Fischer random chess) games
Limitations:
- only one chessboard for html file (use frames if you need to display
more in the same view)
Bugs:
- no major issue at the moment of writing, please check the project
issues tracker at http://code.google.com/p/pgn4web/issues/list
User feedback:
Please email the pgn4web project (pgn4web@casaschi.net) your feedback,
suggestions and bug reports. Please send for review any PGN file that
pgn4web fails parsing correctly.
Enjoy!
DEBUGGING
Errors alert messages are logged by pgn4web, such as failure to load PGN
data, incorrect PGN games or incorrect FEN strings.
When an error is encountered, the top left chessboard square will flash
to signal the exception.
The error alert log can be reviewed clicking on the same top left
chessboard square.
HOW TO USE pgn4we.js
To enable pgn4web, add a SCRIPT instance at the top of your HTML file:
<script src="pgn4web.js" type="text/javascript"></script>
The PGN input can be specified either as URL within another SCRIPT instance
with at least the call to
SetPgnUrl("http://yoursite/yourpath/yourfile.pgn")
and optionally any of the other calls listed below.
Or the PGN file can be pasted in the body of the HTML file
within a hidden FORM/TEXTAREA statement with the ID pgnText:
<!-- paste your PGN below and make sure you dont specify an external source with SetPgnUrl() -->
<form style="display: none;"><textarea style="display: none;" id="pgnText">
... your PGN text ...
</textarea></form>
<!-- paste your PGN above and make sure you dont specify an external source with SetPgnUrl() -->
Example:
<script type="text/javascript>
"use strict";
SetPgnUrl("yourpath/yourfile.pgn"); // if set, this has precedence over the inline PGN in the HTML file
SetImagePath("images");
SetImageType("png");
SetHighlightOption(true); // true or false
SetGameSelectorOptions(null, false, 0, 0, 0, 15, 15, 0, 10); // (head, num, chEvent, chSite, chRound, chWhite, chBlack, chResult, chDate);
SetCommentsIntoMoveText(false);
SetCommentsOnSeparateLines(false);
SetAutoplayDelay(1000); // milliseconds
SetAutostartAutoplay(false);
SetAutoplayNextGame(false); // if set, move to the next game at the end of the current game during autoplay
SetInitialGame(1); // number of game to be shown at load, from 1 (default); values (keep the quotes) of "first", "last", "random" are accepted; other string values assumed as PGN search string
SetInitialVariation(0); // number for the variation to be shown at load, 0 (default) for main variation
SetInitialHalfmove(0,false); // halfmove number to be shown at load, 0 (default) for start position; values (keep the quotes) of "start", "end", "random", "comment" (go to first comment or variation), "variation" (go to the first variation) are also accepted. Second parameter if true applies the setting to every selected game instead of startup only
SetShortcutKeysEnabled(false);
SetLiveBroadcast(1, false, false, false); // set live broadcast; parameters are delay (refresh delay in minutes, 0 means no broadcast, default 0) alertFlag (if true, displays debug error messages, default false) demoFlag (if true starts broadcast demo mode, default false) stepFlag (if true, autoplays updates in steps, default false)
</script>
Then the script will automagically add content into your HTML file
to any <div> or <span> containers with the following IDs:
<div id="GameSelector"></div>
<div id="GameSearch"></div>
<div id="GameLastMove"></div>
<div id="GameLastVariations"></div>
<div id="GameNextMove"></div>
<div id="GameNextVariations"></div>
<div id="GameSideToMove"></div>
<div id="GameLastComment"></div>
<div id="GameBoard"></div>
<div id="GameButtons"></div>
<div id="GameEvent"></div>
<div id="GameRound"></div>
<div id="GameSite"></div>
<div id="GameDate"></div>
<div id="GameWhite"></div>
<div id="GameBlack"></div>
<div id="GameResult"></div>
<div id="GameText"></div>
<div id="GameWhiteClock"></div>
<div id="GameBlackClock"></div>
<div id="GameLiveStatus"></div>
<div id="GameLiveLastModified"></div>
The file template.css shows a list of customization style options.
For better chessboard display, it is recommended to explicitly enforce
chessboard and square size using the ".boardTable", ".whiteSquare" and
".blackSquare" CSS classes, such as:
/* account for chessboard and squares border here, if any */
.boardTable { width:326px; height:326px; border-width:3px; }
.whiteSquare, .blackSquare { width:40px; height:40px; }
See template.html file for an example.
See *mini.html* for an example of embedding the PGN content into the HTML file.
See http://pgn4web.casaschi.net/demo/ usage example, including a live broadcast
demo.
See http://pgn4web-blog.casaschi for a usage example within a blog using the
iframe html tag.
The pgn4web scripts and pages are optimized for the HTML5 doctype declaration:
<!DOCTYPE HTML>
CHESS FIGURINE DISPLAY OF MOVES
pgn4web allows displaying chess moves text using the supplied figurine fonts:
'pgn4web ChessSansAlpha', 'pgn4web ChessSansMerida', 'pgn4web ChessSansPiratf',
'pgn4web ChessSansUscf' and 'pgn4web ChessSansUsual'. These fonts are based on
the Liberation Sans font, see credits section for more details, that is provided
as well for overall consistent display of moves, text and headers.
To enable figurine display of chess moves text, make sure you include the
corresponding fonts/pgn4web-font-ChessSansPiratf.css file toghether with the
font/pgn4web-font-LiberationSans.css file into your HTML file:
<link href="fonts/pgn4web-font-LiberationSans.css" type="text/css" rel="stylesheet" />
<link href="fonts/pgn4web-font-ChessSansPiratf.css" type="text/css" rel="stylesheet" />
or into your CSS file:
@import url("fonts/pgn4web-font-LiberationSans.css");
@import url("fonts/pgn4web-font-ChessSansPiratf.css");
Then set the font-family for the .move, .variation and .commentMove classes to
the chess font of your choice and the rest of the page to the Liberation Sans
font. For example in your CSS file:
body {
font-family: 'pgn4web Liberation Sans', sans-serif;
}
.move, .variation, .commentMove {
font-family: 'pgn4web ChessSansPiratf', 'pgn4web Liberation Sans', sans-serif;
}
When using chess figurine fonts it's strongly recommended to activate
the 'smooth fonts display' feature of the client operating system.
See the template.html and template.css files for an example.
CHESS INFORMANT SYMBOLS
pgn4web allows for showing chess informant style symbols when the corresponding
PGN NAGs (Numeric Annotation Glyphs) are found in the PGN comments. This feature
is disabled by default; in order to enable it in your HTML page, please include
the script below immediately after the main pgn4web script:
<script src="pgn4web.js" type="text/javascript"></script>
<script src="fonts/chess-informant-NAG-symbols.js" type="text/javascript"></script>
Please note, differently than when using the figurine fonts, if the user's web
browser does not support web fonts, there's not elegant textual fallback.
See the chess-informant-template.html and the collection-example.thml (chess
informant sample) files for an example.
THE BOARD GENERATOR WEB TOOL
The board widget allows showing games and positions in web pages and blogs,
without any html coding for each game, where the chessboard widget is created
using a given HTML code within the web page or blog.
Just go to the board widget generator site on
http://pgn4web-board-generator.casaschi.net
the enter your PGN games and configure the options. The tool will
automatically generate some HTML code that you can cut and paste in your web
page or your blog.
THE LIVE BROADCAST OF GAMES
By setting the SetLiveBroadcast(delay, alertFlag, demoFlag, stepFlag) option
in the HTML file, pgn4web will periodically refresh the PGN file, showing the
live progress of the games. PGN files produced by the DGT chessboards are
supported.
SetLiveBroadcast(delay, alertFlag, demoFlag, stepFlag) parameters:
- delay = refresh interval in minutes, decimals allowed (default 1)
- alertFlag = if set true, shows alert debug messages (default false)
- demoFlag = if set true, sets live demo mode (default false)
- stepFlag = if set true, autoplays updates in steps (default false)
If you set stepFlag, please note that the autoplay delay is set by
SetAutoplayDelay(delay), where no more than 2000ms should be used for live
broadcasts.
The bash shell script live-grab.sh, executed on your server allows for grabbing
the updated game source from anywhere on the Internet to your server.
The live broadcast stops refreshing once all games are ended.
Clock information as provided by the DGT chessboards in PGN move comments, such
as {[%clk 1:59:59]}, and in the PGN header, such as [WhiteClock "2:00:00"],
[BlackClock "2:00:00"] and [Clock "W/1:59:59"] is displayed in the following
sections:
<div id="GameWhiteClock"></div>
<div id="GameBlackClock"></div>
The status of the live broadcast is displayed in the following sections:
<div id="GameLiveStatus"></div>
<div id="GameLiveLastRefreshed"></div>
<div id="GameLiveLastReceived"></div>
<div id="GameLiveLastModifiedServer"></div>
Clicking on the H6 square will force a games refresh.
Clicking on the A6/B6 squares will pause/restart the automatic games refresh.
The file live-template.html shows a very basic example.
A demo facility is available to test the live broadcast functionality.
If the demo flag is set in SetLiveBroadcast() and a set of full games is
provided, the tool will simulate a slow progress of the game. Set the
proper flag in live-template.html for an example. Please note, even during
a demo, the PGN file is actually refreshed from the server for a more
accurate testing.
Alternatively, for a more realistic simulation, the bash shell script
live-simulation.sh slowly updates the live.pgn file, simulating a real event.
The easiest way to setup a live broadcast is to use the live-compact.html file.
The HTML file accepts these parameters:
- pgnFile = PGN file to load (default live.pgn)
- initialGame = initial game, a number or first, last, random (default 1)
- refreshMinutes = refresh interval in minutes, decimals allowed (default 1)
- demo = if set true, sets live demo mode (default false)
For instance, make sure that the file myGames.pgn on your server is periodically
refreshed with the live games, then add the following iframe to your page:
<iframe frameborder=0 width=480 height=360
src=live-compact.html?pgnFile=myGames.pgn>
</iframe>
Of course live-compact.html can be edited to customize colors, layout and every
detail.
The live-mosaic.html file has been designed in a similar way, while offering
a layout with multiple live boards on the same page.
http://pgn4web.casaschi.net/live/live.html and
http://pgn4web.casaschi.net/live/live-mosaic.html will occasionally broadcast
live major chess events.
CUSTOMIZATION FUNCTIONS
The following functions, if defined in the HTML file after loading pgn4web.js,
allow for execution of custom commands at given points:
- customFunctionOnPgnTextLoad(): when loading a new PGN file
- customFunctionOnPgnGameLoad(): when loading a new game
- customFunctionOnMove(): when a move is made
- customFunctionOnAlert(message_string): when an error alert is raised
- customFunctionOnCheckLiveBroadcastStatus(): when a live broadcast is checked
Please note the order these functions are executed; for example, when loading
a new PGN file at the end of the first game, first customFunctionOnMove() is
executed, then (when the game has been loaded and the move positioning
completed) customFunctionOnPgnGameLoad() is executed and finally (when the
selected game is fully loaded) customFunctionOnPgnTextLoad() is executed.
The function customPgnHeaderTag(customTagString, htmlElementIdString, gameNumber)
is available for use in customFunctionOnPgnGameLoad() to parse custom PGN header
tags and automatically assign their value to the given HTML elements. The function
returns the custom tag value and the `gameNumber` parameter, if unassigned,
defaults to the current game.
The function customPgnCommentTag(customTagString, htmlElementIdString, plyNumber)
is available for use in customFunctionOnMove() to parse custom PGN comment tags
like { [%pgn4web info] } and automatically assign their value to the given HTML
elements. The function returns the custom tag value and the `plyNumber` parameter,
if unassigned, defaults to the current ply.
See twic944.html or live.html for examples.
The following functions, if defined in the HTML file after loading pgn4web.js,
allow for execution of custom commands when shift + a number key is pressed:
- customShortcutKey_Shift_0()
- customShortcutKey_Shift_1()
...
- customShortcutKey_Shift_9()
SHORTCUT KEYS AND TEXT FORMS
When the HTML page contains the following script command
SetShortcutKeysEnabled(true);
then all keystrokes for that active page are captured and processed by pgn4web;
this allows for instance to browse the game using the arrow keys. If no other
precautions are taken, this has also the undesirable side effect of capturing
keystrokes intended by the user for typing in text forms when present in the
same page: this makes the text forms unusable.
In order to have fully functional text forms in pgn4web pages, the following
"onFocus" and "onBlur" actions should be added to the textarea forms:
<textarea onFocus="disableShortcutKeysAndStoreStatus();"
onBlur="restoreShortcutKeysStatus();"></textarea>
See the inputform.html HTML file for an example.
TECHNICAL NOTES ABOUT WEB BROWSERS
pgn4web is developed and tested with recent versions of a variety of
browsers (Arora, Blackberry browser, Chrome, Epiphany, Firefox, Internet
Explorer, Opera, Safari) on a variety of personal computer platforms
(Linux/Debian, MacOS, Windows) and some smartphone/pda platform (Android,
Blackberry, Apple iOS for iPhone/iPad/iPod).
Not every browser version (please upgrade to a recent release) has been
tested and not every combination of browser/platform has been validated.
If you have any issue with using pgn4web on your platform, please email
pgn4web@casaschi.net
Note about Google Chrome: you might experience problems when testing HTML
pages from your local computer while developing your site. This is a
security limitation of the browser with respect to loading local files.
The limitation can be bypassed by starting Google Chrome with the command
line switch '--allow-file-access-from-files'. Browsing pgn4web websites
with Google Chrome should work properly.
Note about Internet Explorer v7 and above: under some circumstances you might
experience problems when testing HTML pages from your local computer while
developing your site. If this happens to you, read notes at
http://code.google.com/p/pgn4web/issues/detail?id=23
PGN STANDARD SUPPORT
pgn4web mostly supports the PGN standard for chess games notation (see
http://www.tim-mann.org/Standard). Notable exceptions and limitations:
- variations are not parsed as such, but stored as comments; support for
browsing variations is planned for a future release
- if square brackets are present in the comments (or the game text) in a
pattern similar to the PGN header pattern '[tag "value"]' then the game
parsing might break. If your PGN file is not displayed properly, please
check for characters "[" and "]" in the comments and try removing them.
- only pieces initials in the English language are supported, the use of
alternative languages as specified by the PGN standard is not supported
(pgn4web can however display chess moves text using figurine notation, so
the language issue should not be much of a problem, just make sure your
chess software produces PGN data with English pieces initials).
pgn4web also follows a set of proposed extensions to the PGN standard
(see http://www.enpassant.dk/chess/palview/enhancedpgn.htm), more
specifically:
- understands the [%clk 1:59:58] tag in the PGN comment section as the
clock time after each move
- understands the PGN tags [WhiteClock "2:00:00"] and
[BlackClock "2:00:00"] as the clock times at the beginning of the game
- understands the PGN tag [Clock "W/1:59:59"] as the clock time of the
running clock
- allows parsing of generic comment tags using the function
customPgnCommentTag()
pgn4web also supports null moves in the "--" notation (used by a number of
chess softwares like scid and chessbase), such as in 1. e4 -- 2. d4, and
supports continuations (defined as variations where the last move played
before the variation is not taken back prior to the start of the variation
moves) in the "(*" notation, such as in 1. e4 (* 1... d5 2. exd5) e5
Please email me for review any PGN file that pgn4web fails parsing correctly.
CHESS960 SUPPORT
pgn4web supports Chess960 (a.k.a. Fischer random chess) and understands both
the X-FEN and the Shredder-FEN extensions to the FEN notation.
JAVASCRIPT CODING
As of pgn4web version 1.72, the pgn4web.js code is checked with the lint
tool (see online version at http://www.javascriptlint.com/online_lint.php).
Plase note that warnings "lint warning: increment (++) and decrement (--)
operators used as part of greater statement" are ignored.
Lint validation should allow for easy compression of the javascript code,
for instance using http://javascriptcompressor.com/
Although a compression beyond 50% can be achieved, only the uncompressed
version is distributed, but if you want to use a compressed version on your
site, the pgn4web.js code should support it.
As of pgn4web version 2.71 strict mode is used, see statement: "use strict";
CREDITS AND LICENSE
javascript modifications of Paolo Casaschi (pgn4web@casaschi.net) on code
from the http://ficsgames.org database, in turn likely based on code from the
LT PGN viewer at http://www.lutanho.net/pgn/pgnviewer.html
PNG images from http://ixian.com/chess/jin-piece-sets (creative commons
attribution-share alike 3.0 unported license) by Eric De Mund.
SVG images from http://commons.wikimedia.org/wiki/Category:SVG_chess_pieces
by Colin M.L. Burnett; licensed under GFDL (www.gnu.org/copyleft/fdl.html),
CC-BY-SA-3.0 (www.creativecommons.org/licenses/by-sa/3.0/) or
GPL (www.gnu.org/licenses/gpl.html), via Wikimedia Commons. SVG images from
http://openclipart.org/search/?query=chess+symbols+set by Igor Krizanovskij
and from http://openclipart.org/search/?query=Chess+tile both dedicated to
the Public Domain (http://creativecommons.org/publicdomain/zero/1.0/) as any
openclipart.org content.
The figurine fonts are derived from the Liberation Sans font (released under
GNU General Public License, see https://fedorahosted.org/liberation-fonts/)
with the addition of chess pieces from freeware fonts: the alpha2 font (Peter
Strickland), the good companion font (David L. Brown), the merida font (Armando
H. Marroquin), the pirate font (Klaus Wolf) and the chess usual font (Armando
H. Marroquin). The original chess fonts and more details are available at
http://www.enpassant.dk/chess/fonteng.htm
The chess informant symbols font is used with permission from the Chess
Informant publishing company (http://www.chessinformant.rs). The chess ole
figurin font is from the ChessOLE project (http://www.chessole.de, David Frank).
Some of the PGN files for the examples are coming from "The Week in Chess" at
http://www.theweekinchess.com (file twic944.pgn), from the scid project at
http://scid.sourceforge.net (file tactics.pgn, with minor modifications), and
from the Chess Informant publishing company at http://www.chessinformant.rs
(file chess-informant-sample.pgn).
The jscolor javascript code is maintained by Honza Odvarko
(http://odvarko.cz/) and released under the GNU Lesser General Public License
(http://www.gnu.org/copyleft/lesser.html)
See http://jscolor.com/
The SWFObject javascript library (http://code.google.com/p/swfobject/) is
released under the MIT License
(http://www.opensource.org/licenses/mit-license.php).
The ECO code (http://en.wikipedia.org/wiki/Encyclopaedia_of_Chess_Openings) for
game opening classification is a trademark of the Chess Informant publishing
company (http://www.chessinformant.rs).
The above items remains subject to their original licenses (if any).
Remaining pgn4web code is copyright (C) 2009-2013 Paolo Casaschi
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License along
with this program; if not, write to the Free Software Foundation, Inc.,
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
See license-gpl-2.0.txt license file.
You are free to use pgn4web in your website or blog; you are not required to
acknowledge the pgn4web project, but if you want to do so the following line
might be used:
javascript chess viewer courtesy of <a href=http://pgn4web.casaschi.net>pgn4web</a>
You are also encouraged to notify pgn4web@casaschi.net that you are using
pgn4web.
END

53
_assets/vendor/pgn4web/_index.html vendored Normal file
View File

@ -0,0 +1,53 @@
<!DOCTYPE HTML>
<html>
<!--
pgn4web javascript chessboard
copyright (C) 2009-2013 Paolo Casaschi
see README file and http://pgn4web.casaschi.net
for credits, license and more details
-->
<head>
<link rel="shortcut icon" href="pawn.ico" />
<!-- DeploymentCheck: google analytics code -->
<!-- end DeploymentCheck -->
<script type="text/javascript">
<!-- hide javascript from non-javascript browsers
"use strict";
if (window.location.host.match("board-generator\.")) {
window.location.href = "board-generator.html" + window.location.search + window.location.hash;
} else if (window.location.host.match("board\.")) {
window.location.href = "board.html" + window.location.search + window.location.hash;
} else if (window.location.host.match("demo\.")) {
window.location.href = "demo.html" + window.location.search + window.location.hash;
} else if (window.location.host.match("viewer\.")) {
window.location.href = "viewer.php" + window.location.search + window.location.hash;
} else if (window.location.host.match("live\.")) {
window.location.href = "live.html" + window.location.search + window.location.hash;
} else if (window.location.host.match("test\.")) {
window.location.href = "test.html" + window.location.search + window.location.hash;
} else {
window.location.href = "home.html" + window.location.search + window.location.hash;
}
//-->
</script>
<noscript>
your web browser and/or your host do not support javascript as required by the pgn4web site
</noscript>
</head>
<body>
</body>
</html>

182
_assets/vendor/pgn4web/analysis.css vendored Normal file
View File

@ -0,0 +1,182 @@
/*
* pgn4web javascript chessboard
* copyright (C) 2009-2013 Paolo Casaschi
* see README file and http://pgn4web.casaschi.net
* for credits, license and more details
*/
/*
* display optimized for a 664px high frame
*/
@import url("fonts/pgn4web-font-LiberationSans.css");
@import url("fonts/pgn4web-font-ChessSansUsual.css");
html,
body {
margin: 0px;
padding: 0px;
overflow: hidden;
}
body {
font-family: 'pgn4web Liberation Sans', sans-serif;
font-size: 19px;
color: black;
background: white;
}
a {
color: black;
text-decoration: none;
}
div, span {
font-family: 'pgn4web Liberation Sans', sans-serif; /* fixes IE9 body css issue */
}
.boardheaderDiv {
position: absolute;
top: 0px;
left: 0px;
padding: 30px;
overflow: hidden;
}
.topSpacer {
height: 30px;
}
.gametextresultDiv {
padding-left: 30px;
padding-right: 30px;
margin-left: 421px;
margin-bottom: 30px;
overflow-y: scroll;
overflow-x: hidden;
text-align: justify;
scrollbar-base-color: #FFFFFF;
}
.shortRowSpace {
height: 15px;
line-height: 15px;
}
.gameLastMove {
font-size: 14px;
line-height: 20px;
white-space: nowrap;
overflow: hidden;
}
.gameAnnotator {
float: right;
font-style: italic;
}
.headerLine {
overflow: hidden;
white-space: nowrap;
width: 376px;
font-weight: bold;
font-size: 22px;
line-height: 30px;
text-align: center;
}
.gameNum {
width:188px;
text-align: left;
}
.gameECO {
width:188px;
text-align: right;
}
.gameSiteEventDate {
font-style: italic;
font-weight: normal;
}
.boardTable {
width: 376px;
height: 376px;
border-style: solid;
border-color: #808080;
border-width: 3px;
box-shadow: 0px 0px 20px #DDDDDD;
}
.pieceImage {
width: 39px;
height: 39px;
}
.whiteSquare,
.blackSquare,
.highlightWhiteSquare,
.highlightBlackSquare {
width: 45px;
height: 45px;
border-style: solid;
border-width: 1px;
}
.whiteSquare,
.highlightWhiteSquare {
border-color: #FFFFFF;
background: #FFFFFF;
}
.blackSquare,
.highlightBlackSquare {
border-color: #DDDDDD;
background: #DDDDDD;
}
.highlightWhiteSquare,
.highlightBlackSquare {
border-color: #AAAAAA;
border-style: solid;
}
.move,
.variation,
.comment {
color: black;
line-height: 1.4em;
font-weight: normal;
text-decoration: none;
}
.move,
.variation,
.commentMove {
font-family: 'pgn4web ChessSansUsual', 'pgn4web Liberation Sans', sans-serif;
}
a.move,
a.variation,
.commentMove {
white-space: nowrap;
}
.comment,
.variation {
color: gray !important;
}
a.variation {
color: gray !important;
}
.moveOn,
.variationOn,
a.move:hover,
a.variation:hover {
background: #DDDDDD;
border-radius: 2px;
}

170
_assets/vendor/pgn4web/analysis.html vendored Normal file
View File

@ -0,0 +1,170 @@
<!DOCTYPE HTML>
<html>
<!--
pgn4web javascript chessboard
copyright (C) 2009-2013 Paolo Casaschi
see README file and http://pgn4web.casaschi.net
for credits, license and more details
-->
<head>
<title>0.</title>
<!-- use viewport settings when body.onresize adapts the chessboard to the available space -->
<meta name="viewport" content="initial-scale=1, maximum-scale=1">
<link rel="shortcut icon" href="pawn.ico" />
<link href="analysis.css" type="text/css" rel="stylesheet" />
<script src="pgn4web.js" type="text/javascript"></script>
<script src="fonts/chess-informant-NAG-symbols.js" type="text/javascript"></script>
<script src="fide-lookup.js" type="text/javascript"></script>
<script type="text/javascript">
"use strict";
var thisRegExp;
thisRegExp = /(&|\?)(help|h)=(true|t)(&|$)/i;
if (window.location.search.match(thisRegExp) !== null) {
alert("pgn4web analysis.html parameters" + "\n" +
" - pgnFile = filename.pgn" + "\n" +
" - initialGame = first | last | random | a number | a search expression (default first)" + "\n" +
" - initialVariation = a number (default 0)" + "\n" +
" - initialHalfmove = start | end | random | comment | variation | a number (default start)" + "\n" +
" - help = true");
}
var pgnFilename = "";
thisRegExp = /(&|\?)(pgnFile|pf)=([^&]*)(&|$)/i;
if (window.location.search.match(thisRegExp) !== null) {
pgnFilename = unescape(window.location.search.match(thisRegExp)[3]);
} else {
// accepts pgnData as alias for pgnFile for consistency with board.html
thisRegExp = /(&|\?)(pgnData|pd)=([^&]*)(&|$)/i;
if (window.location.search.match(thisRegExp) !== null) {
pgnFilename = unescape(window.location.search.match(thisRegExp)[3]);
}
}
if (pgnFilename !== "") { SetPgnUrl(pgnFilename); }
thisRegExp = /(&|\?)(initialGame|ig)=([^&]*)(&|$)/i;
if (window.location.search.match(thisRegExp) !== null) {
SetInitialGame(unescape(window.location.search.match(thisRegExp)[3]));
}
thisRegExp = /(&|\?)(initialVariation|iv)=([^&]*)(&|$)/i;
if (window.location.search.match(thisRegExp) !== null) {
SetInitialVariation(unescape(window.location.search.match(thisRegExp)[3]));
}
thisRegExp = /(&|\?)(initialHalfmove|ih)=([^&]*)(&|$)/i;
if (window.location.search.match(thisRegExp) !== null) {
SetInitialHalfmove(unescape(window.location.search.match(thisRegExp)[3]), false);
}
SetImagePath("images/merida/39");
SetImageType("png");
SetHighlightOption(true);
SetGameSelectorOptions(null, true, 12, 12, 2, 15, 15, 3, 10); // (head, num, chEvent, chSite, chRound, chWhite, chBlack, chResult, chDate);
SetCommentsIntoMoveText(true);
SetCommentsOnSeparateLines(false);
SetAutoplayDelay(1000); // milliseconds
SetAutostartAutoplay(false);
SetAutoplayNextGame(false);
SetShortcutKeysEnabled(true);
// customShortcutKey_Shift_1 defined by fide-lookup.js
// customShortcutKey_Shift_2 defined by fide-lookup.js
function customFunctionOnPgnTextLoad() {
myOnResize();
}
function customFunctionOnPgnGameLoad() {
document.getElementById('GameNum').innerHTML = (currentGame + 1) + '.';
customPgnHeaderTag('WhiteElo', 'GameWhiteElo');
customPgnHeaderTag('BlackElo', 'GameBlackElo');
customPgnHeaderTag('ECO', 'GameECO');
customPgnHeaderTag('Annotator', 'GameAnnotator');
if (document.getElementById('GameWhite').innerHTML && document.getElementById('GameWhiteElo').innerHTML) { document.getElementById('GameWhiteElo').style.marginLeft = '1ex'; }
if (document.getElementById('GameBlack').innerHTML && document.getElementById('GameBlackElo').innerHTML) { document.getElementById('GameBlackElo').style.marginLeft = '1ex'; }
if (document.getElementById('GameSite').innerHTML && document.getElementById('GameEvent').innerHTML) { document.getElementById('GameEvent').style.marginLeft = '1ex'; }
if ((document.getElementById('GameSite').innerHTML || document.getElementById('GameEvent').innerHTML) && document.getElementById('GameDate').innerHTML) { document.getElementById('GameDate').style.marginLeft = '1ex'; }
var newTitle = (currentGame + 1) + '.';
newTitle += '\u00a0 ' + (gameWhite[currentGame] || '?');
newTitle += '\u00a0 ' + (gameBlack[currentGame] || '?');
newTitle += '\u00a0 ' + (gameResult[currentGame] || '?');
if (gameSite[currentGame]) { newTitle += '\u00a0 ' + gameSite[currentGame]; }
if (gameEvent[currentGame]) { newTitle += '\u00a0 ' + gameEvent[currentGame]; }
if (gameDate[currentGame]) { newTitle += '\u00a0 ' + gameDate[currentGame]; }
document.title = simpleHtmlentitiesDecode(newTitle);
}
function searchPlayer(name, FideId) {
if (typeof(openFidePlayerUrl) == "function") { openFidePlayerUrl(name, FideId); }
}
function myOnResize() {
var ww, wh, theObj;
if (window.innerWidth && window.innerHeight) { ww = window.innerWidth; wh = window.innerHeight; }
else if (document.documentElement && document.documentElement.clientWidth) { ww = document.documentElement.clientWidth; wh = document.documentElement.clientHeight; }
else if (document.body && document.body.clientWidth) { ww = document.body.clientWidth; wh = document.body.clientHeight; }
else { return; }
if (theObj = document.getElementById("GameTextResult")) { theObj.style.height = (wh - 60) + "px"; }
autoScrollToCurrentMoveIfEnabled();
}
enableAutoScrollToCurrentMove("GameTextResult");
</script>
</head>
<body onResize="myOnResize();">
<!-- paste your PGN below and make sure you dont specify an external source with SetPgnUrl() -->
<form style="display: none;"><textarea style="display: none;" id="pgnText">
</textarea></form>
<!-- paste your PGN above and make sure you dont specify an external source with SetPgnUrl() -->
<div class="boardheaderDiv" id="boardHeader">
<table cellspacing=0 cellpadding=0 border=0><tr>
<td><div class="headerLine gameNum" id="GameNum" title="game number">1.</div></td>
<td><div class="headerLine gameECO" id="GameECO" title="opening"></div></td>
</tr></table>
<div class="shortRowSpace">&nbsp;</div>
<div class="headerLine" title="white player"><a id="GameWhite" href="javascript:void(0);" onclick="searchPlayer(this.innerHTML, customPgnHeaderTag('WhiteFideId')); this.blur();"></a><span id="GameWhiteElo"></span></div>
<div class="headerLine" title="black player"><a id="GameBlack" href="javascript:void(0);" onclick="searchPlayer(this.innerHTML, customPgnHeaderTag('BlackFideId')); this.blur();"></a><span id="GameBlackElo"></span></div>
<div class="shortRowSpace">&nbsp;</div>
<div class="headerLine gameSiteEventDate" title="event details"><span id="GameSite"></span><span id="GameEvent"></span><span id="GameDate"></span></div>
<div class="shortRowSpace">&nbsp;</div>
<div class="shortRowSpace">&nbsp;</div>
<div id="GameBoard"></div>
<div class="shortRowSpace">&nbsp;</div>
<div class="shortRowSpace">&nbsp;</div>
<div class="gameLastMove">
<span id="GameLastMove" title="last move"></span>&nbsp;&nbsp;<span id="GameLastVariations" title="last move alternatives"></span>&nbsp;
</div>
</div>
<div class="topSpacer">&nbsp;</div>
<div class="gametextresultDiv" id="GameTextResult">
<div id="GameText"></div>
<div class="gameAnnotator" id="GameAnnotator" title="annotator"></div>
<div id="GameResult" title="result"></div>
</div>
</body>
</html>

88
_assets/vendor/pgn4web/bare.html vendored Normal file
View File

@ -0,0 +1,88 @@
<!DOCTYPE HTML>
<html>
<!--
pgn4web javascript chessboard
copyright (C) 2009-2013 Paolo Casaschi
see README file and http://pgn4web.casaschi.net
for credits, license and more details
-->
<head>
<title>pgn4web bare template</title>
<link rel="shortcut icon" href="pawn.ico" />
<!-- uncomment following HTML code to cope with the occasional
bug of short-length buttons/controls at first load
see https://code.google.com/p/pgn4web/issues/detail?id=67
latest browsers should not require this fix anymore
<style type="text/css">.whiteSquare { width:40px; }</style>
-->
<script src="pgn4web.js" type="text/javascript"></script>
<script type="text/javascript">
"use strict";
SetPgnUrl("demoGames.pgn"); // if set, this has precedence over the inline PGN in the HTML file
</script>
</head>
<body>
<!-- paste your PGN below and make sure you dont specify an external source with SetPgnUrl() -->
<form style="display: none;"><textarea style="display: none;" id="pgnText">
</textarea></form>
<!-- paste your PGN above and make sure you dont specify an external source with SetPgnUrl() -->
<h1>Personal account on Kramnik and the Petrov</h1>
<table cellpadding=0 cellspacing=0 border=0>
<tr valign=top>
<td width=333>
<div id="GameSelector"></div>
<div id="GameSearch"></div>
<p></p>
<div id="GameBoard"></div>
<p></p>
<div id="GameButtons"></div>
</td>
<td>
<span class="label">Event:</span> <span id="GameEvent"></span>
<br>
<span class="label">Site:</span> <span id="GameSite"></span>
<br>
<span class="label">Round:</span> <span id="GameRound"></span>
<br>
<span class="label">Date:</span> <span id="GameDate"></span>
<p></p>
<span class="label">White:</span> <span id="GameWhite"></span>
<br>
<span class="label">Black:</span> <span id="GameBlack"></span>
<br>
<span class="label">Result:</span> <span id="GameResult"></span>
<p>
<span class="label">Side to move:</span> <span id="GameSideToMove"></span>
<br>
<span class="label">Last move:</span> <span id="GameLastMove"></span>&nbsp; <span class="label">variations:</span> <span id="GameLastVariations"></span>
<br>
<span class="label">Next move:</span> <span id="GameNextMove"></span>&nbsp; <span class="label">variations:</span> <span id="GameNextVariations"></span>
<p></p>
<span class="label">Move comment:</span><br><span id="GameLastComment"></span>
</td>
</tr>
</table>
<p></p>
<hr>
<div id="GameText"></div>
</body>
</html>

15
_assets/vendor/pgn4web/blank.html vendored Normal file
View File

@ -0,0 +1,15 @@
<!DOCTYPE HTML>
<html>
<!--
pgn4web javascript chessboard
copyright (C) 2009-2013 Paolo Casaschi
see README file and http://pgn4web.casaschi.net
for credits, license and more details
-->
<head></head>
<body style="background-color: transparent; margin: 0px; padding: 0px;"></body>
</html>

View File

@ -0,0 +1,226 @@
<!DOCTYPE HTML>
<html>
<!--
pgn4web javascript chessboard
copyright (C) 2009-2014 Paolo Casaschi
see README file and http://pgn4web.casaschi.net
for credits, license and more details
-->
<head>
<meta http-equiv="content-type" content="text-html; charset=utf-8">
<title>pgn4web board generator test set</title>
<link rel="shortcut icon" href="pawn.ico" />
<style type="text/css">
html,
body {
margin: 0px;
padding: 0px;
}
body {
font-family: sans-serif;
color: black;
background: white;
padding: 1.75em;
}
a {
text-decoration: none;
color: black;
}
</style>
</head>
<body>
<h1 style="margin-top:0px; padding-top:0px; text-align:right;">
<span style="float:left; color:black;">
pgn4web board generator test
</span>
<span style="width:49px; height:29px; background:url(pawns.png) -47px -15px; vertical-align:baseline; display:inline-block;"></span>
</h1>
<div style="height:1px;"></div>
<script type="text/javascript">
"use strict";
var targetWin = null;
var targetName = 'pgn4web_boardGeneratorTest';
function refreshTarget(targetRef) {
if (targetWin && !targetWin.closed) { targetWin.close(); }
targetWin = window.open(targetRef, targetName);
if (window.focus) { targetWin.focus(); }
return false;
}
</script>
<OL>
<LI><A ONCLICK='return refreshTarget(this.href);' HREF=board-generator.html#game_preview>
plain</A>
<LI><A ONCLICK='return refreshTarget(this.href);' HREF=board-generator.html?hd=h&amp;md=h#game_preview>
plain and bare</A>
<P></P>
<LI><A ONCLICK='return refreshTarget(this.href);' HREF='board-generator.html?am=g&amp;d=1000&amp;pf=a&amp;ps=30&amp;ss=40&amp;lch=EFF4EC&amp;dch=C6CEC3&amp;bbch=000000&amp;hm=s&amp;hch=DAF4D7&amp;bd=h&amp;hd=j&amp;md=f&amp;tm=0&amp;fhch=000000&amp;fhs=16&amp;fmch=000000&amp;fcch=808080&amp;hmch=DAF4D7&amp;fms=16&amp;fcs=16&amp;cd=h&amp;bch=FFFFFF&amp;hl=f&amp;fh=726&amp;fw=326&amp;fp=0&amp;pt=[Event ""] [Site "Paris"] [Date "1858"] [Round ""] [White "Paul Morphy"] [Black "Duke and Count"] [Result "1-0"] 1. e4 e5 2. Nf3 d6 3. d4 Bg4 $6 {This is a weak move already.} 4. dxe5 $1 Bxf3 5. Qxf3 dxe5 6. Bc4 Nf6 7. Qb3 Qe7 8. Nc3 c6 9. Bg5 {$23 Black cant develop the knight because the Pawn is hanging, the Bishop is blocked because of the Queen.} b5 10. Nxb5 cxb5 11. Bxb5+ Nbd7 12. O-O-O Rd8 13. Rxd7 Rxd7 14. Rd1 Qe6 15. Bxd7+ Nxd7 16. Qb8+ $18 Nxb8 17. Rd8 1-0#game_preview'>
plain game with hex colors</A>
<LI><A ONCLICK='return refreshTarget(this.href);' HREF='board-generator.html?am=g&amp;d=1000&amp;pf=a&amp;ps=30&amp;ss=40&amp;lch=EFF4EC&amp;dch=C6CEC3&amp;bbch=000000&amp;hm=s&amp;hch=DAF4D7&amp;bd=h&amp;hd=j&amp;md=f&amp;tm=0&amp;fhch=000000&amp;fhs=18&amp;fmch=000000&amp;fcch=808080&amp;hmch=DAF4D7&amp;fms=18&amp;fcs=m&amp;cd=i&amp;bch=FFFFFF&amp;hl=f&amp;fh=726&amp;fw=326&amp;fp=0&amp;pt=[Event ""] [Site "Paris"] [Date "1858"] [Round ""] [White "Paul Morphy"] [Black "Duke and Count"] [Result "1-0"] 1. e4 e5 2. Nf3 d6 3. d4 Bg4 $6 {This is a weak move already.} 4. dxe5 $1 Bxf3 5. Qxf3 dxe5 6. Bc4 Nf6 7. Qb3 Qe7 8. Nc3 c6 9. Bg5 {$23 Black cant develop the knight because the Pawn is hanging, the Bishop is blocked because of the Queen.} b5 10. Nxb5 cxb5 11. Bxb5+ Nbd7 12. O-O-O Rd8 13. Rxd7 Rxd7 14. Rd1 Qe6 15. Bxd7+ Nxd7 16. Qb8+ $18 Nxb8 17. Rd8 1-0#game_preview'>
game with comments of same size as moves</A>
<LI><A ONCLICK='return refreshTarget(this.href);' HREF='board-generator.html?am=g&amp;d=1000&amp;ss=40&amp;ps=30&amp;pf=a&amp;lcs=W_iH&amp;dcs=MHW2&amp;bbcs=$$$$&amp;hm=s&amp;hcs=RKim&amp;bd=s&amp;cbcs=W_iH&amp;ctcs=$$$$&amp;hd=j&amp;md=f&amp;tm=0&amp;fhcs=$$$$&amp;fhs=16&amp;fmcs=$$$$&amp;fccs=v71$&amp;hmcs=RKim&amp;fms=16&amp;fcs=16&amp;cd=i&amp;bcs=____&amp;pt=[Event ""] [Site "Paris"] [Date "1858"] [Round ""] [White "Paul Morphy"] [Black "Duke and Count"] [Result "1-0"] 1. e4 e5 2. Nf3 d6 3. d4 Bg4 4. dxe5 Bxf3 5. Qxf3 dxe5 6. Bc4 Nf6 7. Qb3 Qe7 8. Nc3 c6 9. Bg5 b5 10. Nxb5 cxb5 11. Bxb5+ Nbd7 12. O-O-O Rd8 13. Rxd7 Rxd7 14. Rd1 Qe6 15. Bxd7+ Nxd7 16. Qb8+ Nxb8 17. Rd8 1-0 [Event ""] [Site "New York"] [Date "1857"] [Round ""] [White "Louis Paulsen"] [Black "Paul Morphy"] [Result "0-1"] 1. e4 e5 2. Nf3 Nc6 3. Nc3 Nf6 4. Bb5 Bc5 5. O-O O-O 6. Nxe5 Re8 7. Nxc6 dxc6 8. Bc4 b5 9. Be2 Nxe4 10. Nxe4 Rxe4 11. Bf3 Re6 12. c3 Qd3 13. b4 Bb6 14. a4 bxa4 15. Qxa4 Bd7 16. Ra2 Rae8 17. Qa6 Qxf3 18. gxf3 Rg6+ 19. Kh1 Bh3 20. Rd1 Bg2+ 21. Kg1 Bxf3+ 22. Kf1 Bg2+ 23. Kg1 Bh3+ 24. Kh1 Bxf2 25. Qf1 Bxf1 26. Rxf1 Re2 27. Ra1 Rh6 28. d4 Be3 0-1#game_preview'>
two games with default control buttons and sex colors</A>
<LI><A ONCLICK='return refreshTarget(this.href);' HREF='board-generator.html?am=g&amp;d=1000&amp;ss=34&amp;ps=28&amp;pf=a&amp;lcs=W_iH&amp;dcs=MHW2&amp;bbcs=$$$$&amp;hm=s&amp;hcs=RKim&amp;bd=h&amp;hd=j&amp;md=f&amp;tm=12&amp;fhcs=$$$$&amp;fhs=16&amp;fmcs=$$$$&amp;fccs=v71$&amp;hmcs=RKim&amp;fms=16&amp;fcs=16&amp;cd=n&amp;bcs=____&amp;pt=[Event ""] [Site "Paris"] [Date "1858"] [Round ""] [White "Paul Morphy"] [Black "Duke and Count"] [Result "1-0"] 1. e4 e5 2. Nf3 d6 3. d4 Bg4 $6 {This is a weak move already.} 4. dxe5 $1 Bxf3 5. Qxf3 dxe5 6. Bc4 Nf6 7. Qb3 Qe7 8. Nc3 c6 9. Bg5 {$23 Black cant develop the knight because the Pawn is hanging, the Bishop is blocked because of the Queen.} b5 10. Nxb5 cxb5 11. Bxb5+ Nbd7 12. O-O-O Rd8 13. Rxd7 Rxd7 14. Rd1 Qe6 15. Bxd7+ Nxd7 16. Qb8+ $18 Nxb8 17. Rd8 1-0#game_preview'>
game with comments, smaller board, comments on separate lines, text overflow and text margin</A>
<LI><A ONCLICK='return refreshTarget(this.href);' HREF='board-generator.html?am=g&amp;d=1000&amp;ss=34&amp;ps=28&amp;pf=a&amp;lcs=W_iH&amp;dcs=MHW2&amp;bbcs=$$$$&amp;hm=s&amp;hcs=RKim&amp;bd=s&amp;cbcs=W_iH&amp;ctcs=$$$$&amp;hd=j&amp;md=f&amp;tm=12&amp;fhcs=$$$$&amp;fhs=16&amp;fmcs=$$$$&amp;fccs=v71$&amp;hmcs=RKim&amp;fms=16&amp;fcs=16&amp;cd=n&amp;bcs=____&amp;fp=0&amp;hl=f&amp;fh=500&amp;fw=278&amp;pt=[Event ""] [Site "Paris"] [Date "1858"] [Round ""] [White "Paul Morphy"] [Black "Duke and Count"] [Result "1-0"] 1. e4 e5 2. Nf3 d6 3. d4 Bg4 4. dxe5 Bxf3 5. Qxf3 dxe5 6. Bc4 Nf6 7. Qb3 Qe7 8. Nc3 c6 9. Bg5 b5 10. Nxb5 cxb5 11. Bxb5+ Nbd7 12. O-O-O Rd8 13. Rxd7 Rxd7 14. Rd1 Qe6 15. Bxd7+ Nxd7 16. Qb8+ Nxb8 17. Rd8 1-0 [Event ""] [Site "New York"] [Date "1857"] [Round ""] [White "Louis Paulsen"] [Black "Paul Morphy"] [Result "0-1"] 1. e4 e5 2. Nf3 Nc6 3. Nc3 Nf6 4. Bb5 Bc5 5. O-O O-O 6. Nxe5 Re8 7. Nxc6 dxc6 8. Bc4 b5 9. Be2 Nxe4 10. Nxe4 Rxe4 11. Bf3 Re6 12. c3 Qd3 13. b4 Bb6 14. a4 bxa4 15. Qxa4 Bd7 16. Ra2 Rae8 17. Qa6 Qxf3 18. gxf3 Rg6+ 19. Kh1 Bh3 20. Rd1 Bg2+ 21. Kg1 Bxf3+ 22. Kf1 Bg2+ 23. Kg1 Bh3+ 24. Kh1 Bxf2 25. Qf1 Bxf1 26. Rxf1 Re2 27. Ra1 Rh6 28. d4 Be3 0-1#game_preview'>
two games, smaller board, comments on separate lines, text overflow, text margin and standard controls</A>
<LI><A ONCLICK='return refreshTarget(this.href);' HREF='board-generator.html?am=g&amp;d=1000&amp;ss=34&amp;ps=28&amp;pf=a&amp;lcs=W_iH&amp;dcs=MHW2&amp;bbcs=$$$$&amp;hm=s&amp;hcs=RKim&amp;bd=s&amp;cbcs=W_iH&amp;ctcs=$$$$&amp;hd=j&amp;md=f&amp;tm=12&amp;fhcs=$$$$&amp;fhs=16&amp;fmcs=$$$$&amp;fccs=v71$&amp;hmcs=RKim&amp;fms=16&amp;fcs=16&amp;cd=n&amp;bcs=____&amp;fp=0&amp;hl=t&amp;fh=b&amp;fw=730&amp;pt=[Event ""] [Site "Paris"] [Date "1858"] [Round ""] [White "Paul Morphy"] [Black "Duke and Count"] [Result "1-0"] 1. e4 e5 2. Nf3 d6 3. d4 Bg4 4. dxe5 Bxf3 5. Qxf3 dxe5 6. Bc4 Nf6 7. Qb3 Qe7 8. Nc3 c6 9. Bg5 b5 10. Nxb5 cxb5 11. Bxb5+ Nbd7 12. O-O-O Rd8 13. Rxd7 Rxd7 14. Rd1 Qe6 15. Bxd7+ Nxd7 16. Qb8+ Nxb8 17. Rd8 1-0 [Event ""] [Site "New York"] [Date "1857"] [Round ""] [White "Louis Paulsen"] [Black "Paul Morphy"] [Result "0-1"] 1. e4 e5 2. Nf3 Nc6 3. Nc3 Nf6 4. Bb5 Bc5 5. O-O O-O 6. Nxe5 Re8 7. Nxc6 dxc6 8. Bc4 b5 9. Be2 Nxe4 10. Nxe4 Rxe4 11. Bf3 Re6 12. c3 Qd3 13. b4 Bb6 14. a4 bxa4 15. Qxa4 Bd7 16. Ra2 Rae8 17. Qa6 Qxf3 18. gxf3 Rg6+ 19. Kh1 Bh3 20. Rd1 Bg2+ 21. Kg1 Bxf3+ 22. Kf1 Bg2+ 23. Kg1 Bh3+ 24. Kh1 Bxf2 25. Qf1 Bxf1 26. Rxf1 Re2 27. Ra1 Rh6 28. d4 Be3 0-1#game_preview'>
same as above, without comments, with horizontal display, frame height as board and wider frame width</A>
<LI><A ONCLICK='return refreshTarget(this.href);' HREF='board-generator.html?am=g&amp;d=1000&amp;ss=34&amp;ps=28&amp;pf=a&amp;lcs=W_iH&amp;dcs=MHW2&amp;bbcs=$$$$&amp;hm=s&amp;hcs=RKim&amp;bd=s&amp;cbcs=W_iH&amp;ctcs=$$$$&amp;hd=j&amp;md=f&amp;tm=12&amp;fhcs=$$$$&amp;fhs=16&amp;fmcs=$$$$&amp;fccs=v71$&amp;hmcs=RKim&amp;fms=16&amp;fcs=16&amp;cd=n&amp;bcs=____&amp;fp=0&amp;hl=t&amp;fh=b&amp;fw=730&amp;pt=[Event ""] [Site ""] [Date ""] [Round ""] [White ""] [Black ""] [Result ""] 1. e4 e5 2. Nf3 d6 3. d4 Bg4 $6 {This is a weak move already.} 4. dxe5 $1 Bxf3 5. Qxf3 dxe5 6. Bc4 Nf6 7. Qb3 Qe7 8. Nc3 c6 9. Bg5 {$23 Black cant develop the knight because the Pawn is hanging, the Bishop is blocked because of the Queen.} b5 10. Nxb5 cxb5 11. Bxb5+ Nbd7 12. O-O-O Rd8 13. Rxd7 Rxd7 14. Rd1 Qe6 15. Bxd7+ Nxd7 16. Qb8+ $18 Nxb8 17. Rd8 1-0#game_preview'>
same as above, with one game only and with empty header</A>
<LI><A ONCLICK='return refreshTarget(this.href);' HREF='board-generator.html?am=g&amp;d=1000&amp;ss=34&amp;ps=28&amp;pf=a&amp;lcs=W_iH&amp;dcs=MHW2&amp;bbcs=$$$$&amp;hm=s&amp;hcs=RKim&amp;bd=s&amp;cbcs=W_iH&amp;ctcs=$$$$&amp;hd=h&amp;md=f&amp;tm=12&amp;fmcs=$$$$&amp;fccs=v71$&amp;hmcs=RKim&amp;fms=16&amp;fcs=16&amp;cd=n&amp;bcs=____&amp;fp=0&amp;hl=t&amp;fh=b&amp;fw=444&amp;pt=[Event ""] [Site "Paris"] [Date "1858"] [Round ""] [White "Paul Morphy"] [Black "Duke and Count"] [Result "1-0"] 1. e4 e5 2. Nf3 d6 3. d4 Bg4 4. dxe5 Bxf3 5. Qxf3 dxe5 6. Bc4 Nf6 7. Qb3 Qe7 8. Nc3 c6 9. Bg5 b5 10. Nxb5 cxb5 11. Bxb5+ Nbd7 12. O-O-O Rd8 13. Rxd7 Rxd7 14. Rd1 Qe6 15. Bxd7+ Nxd7 16. Qb8+ Nxb8 17. Rd8 1-0 [Event ""] [Site "New York"] [Date "1857"] [Round ""] [White "Louis Paulsen"] [Black "Paul Morphy"] [Result "0-1"] 1. e4 e5 2. Nf3 Nc6 3. Nc3 Nf6 4. Bb5 Bc5 5. O-O O-O 6. Nxe5 Re8 7. Nxc6 dxc6 8. Bc4 b5 9. Be2 Nxe4 10. Nxe4 Rxe4 11. Bf3 Re6 12. c3 Qd3 13. b4 Bb6 14. a4 bxa4 15. Qxa4 Bd7 16. Ra2 Rae8 17. Qa6 Qxf3 18. gxf3 Rg6+ 19. Kh1 Bh3 20. Rd1 Bg2+ 21. Kg1 Bxf3+ 22. Kf1 Bg2+ 23. Kg1 Bh3+ 24. Kh1 Bxf2 25. Qf1 Bxf1 26. Rxf1 Re2 27. Ra1 Rh6 28. d4 Be3 0-1#game_preview'>
same as above, again with two games, with header but without displaying it, with narrower frame width and overflow</A>
<LI><A ONCLICK='return refreshTarget(this.href);' HREF='board-generator.html?ep=t&amp;am=g&amp;d=1000&amp;ss=34&amp;ps=28&amp;pf=a&amp;lcs=W_iH&amp;dcs=MHW2&amp;bbcs=MHW2&amp;hm=s&amp;hcs=RKim&amp;bd=h&amp;hd=j&amp;md=f&amp;tm=12&amp;fhcs=$$$$&amp;fhs=16&amp;fmcs=$$$$&amp;fccs=v71$&amp;hmcs=RKim&amp;fms=16&amp;fcs=16&amp;cd=n&amp;bcs=W_iH&amp;fp=10&amp;hl=t&amp;fh=b&amp;fw=600&amp;pe=779$zlax9RvfEMab2l8$GSCLoZ9rheKl8$ydpr4d8sZmFWvfEMaZt2l8$GSAZjmWUXStaLEM7aaQ$V06NXd86AsMuuaQq1C3JzuGXGf7MUfjTb11nvBDf10zBgKzb05Xf3Cxb$yshpv9Fi7P16pEbyshpyv71Ex0zJfj16lBfVfF6$fcgzjU$T308VwGj5j0$QlIghGlDbn30kpQZvoGoj5f14MUrtmgSqz5n1dQRk6pW9vR$gSoDs8N2p0$ksAuD5GHF2r02GiCV0FIdfnD3sRU0yNzha4M4qf7jTAB0G3vfM0_$uWUX61C3yWQxf7OBxwixmuAVJT39rh_CvQxg$HZZmwCXmKaXCU4gixflmF0P1KtmUguKCOsTK1C3JzuGXGf8fXnjTb11nvBDf10zBfcizb0$Q5fbANb$v8Gj0jQ5vfJeaDm6APr0$QhpyE6790$QprysprwL30jM2lD6$v7x75Fi35j0$QhnyIhnvMvf3zNdzU0z$xy7sRN2b02l71pU0H$yR7pGW35P16pZM$lNDcL3sXxdZ7U0xvfWWzdQho0C$fCk8zsiUZvLT3me5v8Uz7j06sBv8c6V3504NoD1FzOY13$xU7P08D_fwv7Jic$iOeP7L1aCyf4k837P16jyf4k7P7T1dQhc6h7w0f7WTPstU16$gK303o1wTL0#game_preview'>
similar to the above, with encoded PGN, with nicer colors and displaying header</a>
<LI><A ONCLICK='return refreshTarget(this.href);' HREF='board-generator.html?ep=t&amp;am=g&amp;d=1000&amp;ss=34&amp;ps=28&amp;pf=a&amp;lcs=W_iH&amp;dcs=MHW2&amp;bbcs=MHW2&amp;hm=s&amp;hcs=RKim&amp;bd=h&amp;hd=j&amp;md=f&amp;tm=12&amp;fhcs=$$$$&amp;fhs=16&amp;fmcs=$$$$&amp;fccs=v71$&amp;hmcs=b&amp;fms=16&amp;fcs=16&amp;cd=n&amp;bcs=W_iH&amp;fp=10&amp;hl=t&amp;fh=b&amp;fw=600&amp;pe=779$zlax9RvfEMab2l8$GSCLoZ9rheKl8$ydpr4d8sZmFWvfEMaZt2l8$GSAZjmWUXStaLEM7aaQ$V06NXd86AsMuuaQq1C3JzuGXGf7MUfjTb11nvBDf10zBgKzb05Xf3Cxb$yshpv9Fi7P16pEbyshpyv71Ex0zJfj16lBfVfF6$fcgzjU$T308VwGj5j0$QlIghGlDbn30kpQZvoGoj5f14MUrtmgSqz5n1dQRk6pW9vR$gSoDs8N2p0$ksAuD5GHF2r02GiCV0FIdfnD3sRU0yNzha4M4qf7jTAB0G3vfM0_$uWUX61C3yWQxf7OBxwixmuAVJT39rh_CvQxg$HZZmwCXmKaXCU4gixflmF0P1KtmUguKCOsTK1C3JzuGXGf8fXnjTb11nvBDf10zBfcizb0$Q5fbANb$v8Gj0jQ5vfJeaDm6APr0$QhpyE6790$QprysprwL30jM2lD6$v7x75Fi35j0$QhnyIhnvMvf3zNdzU0z$xy7sRN2b02l71pU0H$yR7pGW35P16pZM$lNDcL3sXxdZ7U0xvfWWzdQho0C$fCk8zsiUZvLT3me5v8Uz7j06sBv8c6V3504NoD1FzOY13$xU7P08D_fwv7Jic$iOeP7L1aCyf4k837P16jyf4k7P7T1dQhc6h7w0f7WTPstU16$gK303o1wTL0#game_preview'>
same as above, with highlight move color as background</a>
<LI><A ONCLICK='return refreshTarget(this.href);' HREF='board-generator.html?ep=t&amp;am=g&amp;d=1000&amp;ss=34&amp;ps=28&amp;pf=a&amp;lcs=W_iH&amp;dcs=MHW2&amp;bbcs=MHW2&amp;hm=s&amp;hcs=RKim&amp;bd=h&amp;hd=j&amp;md=f&amp;tm=12&amp;fhcs=$$$$&amp;fhs=16&amp;fmcs=$$$$&amp;fccs=v71$&amp;hmcs=b&amp;fms=16&amp;fcs=16&amp;cd=n&amp;bcs=t&amp;fp=10&amp;hl=t&amp;fh=b&amp;fw=600&amp;pe=779$zlax9RvfEMab2l8$GSCLoZ9rheKl8$ydpr4d8sZmFWvfEMaZt2l8$GSAZjmWUXStaLEM7aaQ$V06NXd86AsMuuaQq1C3JzuGXGf7MUfjTb11nvBDf10zBgKzb05Xf3Cxb$yshpv9Fi7P16pEbyshpyv71Ex0zJfj16lBfVfF6$fcgzjU$T308VwGj5j0$QlIghGlDbn30kpQZvoGoj5f14MUrtmgSqz5n1dQRk6pW9vR$gSoDs8N2p0$ksAuD5GHF2r02GiCV0FIdfnD3sRU0yNzha4M4qf7jTAB0G3vfM0_$uWUX61C3yWQxf7OBxwixmuAVJT39rh_CvQxg$HZZmwCXmKaXCU4gixflmF0P1KtmUguKCOsTK1C3JzuGXGf8fXnjTb11nvBDf10zBfcizb0$Q5fbANb$v8Gj0jQ5vfJeaDm6APr0$QhpyE6790$QprysprwL30jM2lD6$v7x75Fi35j0$QhnyIhnvMvf3zNdzU0z$xy7sRN2b02l71pU0H$yR7pGW35P16pZM$lNDcL3sXxdZ7U0xvfWWzdQho0C$fCk8zsiUZvLT3me5v8Uz7j06sBv8c6V3504NoD1FzOY13$xU7P08D_fwv7Jic$iOeP7L1aCyf4k837P16jyf4k7P7T1dQhc6h7w0f7WTPstU16$gK303o1wTL0#game_preview'>
same as above, with background color as transparent</a>
<P></P>
<LI><A ONCLICK='return refreshTarget(this.href);' HREF='board-generator.html?am=l&amp;d=3000&amp;ss=50&amp;ps=40&amp;pf=m&amp;lcs=XItn&amp;dcs=NpQK&amp;bbcs=k03b&amp;hm=b&amp;hcs=__X$&amp;bd=h&amp;hd=c&amp;md=f&amp;tm=0&amp;fhcs=k03b&amp;fhs=150p&amp;fmcs=k03b&amp;fccs=DPQ1&amp;hmcs=__X$&amp;fms=133p&amp;fcs=120p&amp;cd=n&amp;bcs=VZ2d&amp;fp=0&amp;hl=f&amp;fh=831&amp;fw=800&amp;pt=[Event ""] [Site "Paris"] [Date "1858"] [Round ""] [White "Paul Morphy"] [Black "Duke and Count"] [Result "1-0"] 1. e4 e5 2. Nf3 d6 3. d4 Bg4 $6 {This is a weak move already.} 4. dxe5 $1 Bxf3 5. Qxf3 dxe5 6. Bc4 Nf6 7. Qb3 Qe7 8. Nc3 c6 9. Bg5 {$23 Black cant develop the knight because the Pawn is hanging, the Bishop is blocked because of the Queen.} b5 10. Nxb5 cxb5 11. Bxb5+ Nbd7 12. O-O-O Rd8 13. Rxd7 Rxd7 14. Rd1 Qe6 15. Bxd7+ Nxd7 16. Qb8+ $18 Nxb8 17. Rd8 1-0#game_preview'>
large board with colors, no buttons, font customizations with size in percentage, centered header and border highlight</A>
<LI><A ONCLICK='return refreshTarget(this.href);' HREF='board-generator.html?am=l&amp;d=3000&amp;ss=50&amp;ps=40&amp;pf=m&amp;lcs=XItn&amp;dcs=NpQK&amp;bbcs=k03b&amp;hm=b&amp;hcs=__X$&amp;bd=h&amp;hd=c&amp;md=h&amp;tm=0&amp;fhcs=k03b&amp;fhs=150p&amp;bcs=VZ2d&amp;fp=0&amp;hl=f&amp;fh=555&amp;fw=600&amp;pt=[Event ""] [Site "Paris"] [Date "1858"] [Round ""] [White "Paul Morphy"] [Black "Duke and Count"] [Result "1-0"] 1. e4 e5 2. Nf3 d6 3. d4 Bg4 4. dxe5 Bxf3 5. Qxf3 dxe5 6. Bc4 Nf6 7. Qb3 Qe7 8. Nc3 c6 9. Bg5 b5 10. Nxb5 cxb5 11. Bxb5+ Nbd7 12. O-O-O Rd8 13. Rxd7 Rxd7 14. Rd1 Qe6 15. Bxd7+ Nxd7 16. Qb8+ Nxb8 17. Rd8 1-0 [Event ""] [Site "New York"] [Date "1857"] [Round ""] [White "Louis Paulsen"] [Black "Paul Morphy"] [Result "0-1"] 1. e4 e5 2. Nf3 Nc6 3. Nc3 Nf6 4. Bb5 Bc5 5. O-O O-O 6. Nxe5 Re8 7. Nxc6 dxc6 8. Bc4 b5 9. Be2 Nxe4 10. Nxe4 Rxe4 11. Bf3 Re6 12. c3 Qd3 13. b4 Bb6 14. a4 bxa4 15. Qxa4 Bd7 16. Ra2 Rae8 17. Qa6 Qxf3 18. gxf3 Rg6+ 19. Kh1 Bh3 20. Rd1 Bg2+ 21. Kg1 Bxf3+ 22. Kf1 Bg2+ 23. Kg1 Bh3+ 24. Kh1 Bxf2 25. Qf1 Bxf1 26. Rxf1 Re2 27. Ra1 Rh6 28. d4 Be3 0-1#game_preview'>
same as above, with two games, no moves shown and loop trhough games</A>
<LI><A ONCLICK='return refreshTarget(this.href);' HREF='board-generator.html?am=n&amp;d=3000&amp;ss=50&amp;ps=40&amp;pf=m&amp;lcs=XItn&amp;dcs=NpQK&amp;bbcs=k03b&amp;hm=b&amp;hcs=__X$&amp;bd=h&amp;hd=h&amp;md=f&amp;tm=0&amp;fmcs=k03b&amp;fccs=DPQ1&amp;hmcs=__X$&amp;fms=133p&amp;fcs=120p&amp;cd=n&amp;bcs=VZ2d&amp;fp=0&amp;hl=f&amp;fh=700&amp;fw=600&amp;pt=[Event ""] [Site "Paris"] [Date "1858"] [Round ""] [White "Paul Morphy"] [Black "Duke and Count"] [Result "1-0"] 1. e4 e5 2. Nf3 d6 3. d4 Bg4 4. dxe5 Bxf3 5. Qxf3 dxe5 6. Bc4 Nf6 7. Qb3 Qe7 8. Nc3 c6 9. Bg5 b5 10. Nxb5 cxb5 11. Bxb5+ Nbd7 12. O-O-O Rd8 13. Rxd7 Rxd7 14. Rd1 Qe6 15. Bxd7+ Nxd7 16. Qb8+ Nxb8 17. Rd8 1-0 [Event ""] [Site "New York"] [Date "1857"] [Round ""] [White "Louis Paulsen"] [Black "Paul Morphy"] [Result "0-1"] 1. e4 e5 2. Nf3 Nc6 3. Nc3 Nf6 4. Bb5 Bc5 5. O-O O-O 6. Nxe5 Re8 7. Nxc6 dxc6 8. Bc4 b5 9. Be2 Nxe4 10. Nxe4 Rxe4 11. Bf3 Re6 12. c3 Qd3 13. b4 Bb6 14. a4 bxa4 15. Qxa4 Bd7 16. Ra2 Rae8 17. Qa6 Qxf3 18. gxf3 Rg6+ 19. Kh1 Bh3 20. Rd1 Bg2+ 21. Kg1 Bxf3+ 22. Kf1 Bg2+ 23. Kg1 Bh3+ 24. Kh1 Bxf2 25. Qf1 Bxf1 26. Rxf1 Re2 27. Ra1 Rh6 28. d4 Be3 0-1#game_preview'>
same as above but with moves shown, no comments, no header and no autoplay</A>
<LI><A ONCLICK='return refreshTarget(this.href);' HREF='board-generator.html?am=n&amp;d=3000&amp;ss=50&amp;ps=40&amp;pf=m&amp;lcs=XItn&amp;dcs=NpQK&amp;bbcs=k03b&amp;hm=b&amp;hcs=__X$&amp;bd=c&amp;cbcs=Tcq4&amp;ctcs=k03b&amp;hd=h&amp;md=f&amp;tm=0&amp;fmcs=k03b&amp;fccs=DPQ1&amp;hmcs=__X$&amp;fms=133p&amp;fcs=120p&amp;cd=n&amp;bcs=VZ2d&amp;fp=0&amp;hl=f&amp;fh=730&amp;fw=600&amp;pt=[Event ""] [Site "Paris"] [Date "1858"] [Round ""] [White "Paul Morphy"] [Black "Duke and Count"] [Result "1-0"] 1. e4 e5 2. Nf3 d6 3. d4 Bg4 4. dxe5 Bxf3 5. Qxf3 dxe5 6. Bc4 Nf6 7. Qb3 Qe7 8. Nc3 c6 9. Bg5 b5 10. Nxb5 cxb5 11. Bxb5+ Nbd7 12. O-O-O Rd8 13. Rxd7 Rxd7 14. Rd1 Qe6 15. Bxd7+ Nxd7 16. Qb8+ Nxb8 17. Rd8 1-0 [Event ""] [Site "New York"] [Date "1857"] [Round ""] [White "Louis Paulsen"] [Black "Paul Morphy"] [Result "0-1"] 1. e4 e5 2. Nf3 Nc6 3. Nc3 Nf6 4. Bb5 Bc5 5. O-O O-O 6. Nxe5 Re8 7. Nxc6 dxc6 8. Bc4 b5 9. Be2 Nxe4 10. Nxe4 Rxe4 11. Bf3 Re6 12. c3 Qd3 13. b4 Bb6 14. a4 bxa4 15. Qxa4 Bd7 16. Ra2 Rae8 17. Qa6 Qxf3 18. gxf3 Rg6+ 19. Kh1 Bh3 20. Rd1 Bg2+ 21. Kg1 Bxf3+ 22. Kf1 Bg2+ 23. Kg1 Bh3+ 24. Kh1 Bxf2 25. Qf1 Bxf1 26. Rxf1 Re2 27. Ra1 Rh6 28. d4 Be3 0-1#game_preview'>
same as above but with custom buttons</A>
<LI><A ONCLICK='return refreshTarget(this.href);' HREF='board-generator.html?am=n&amp;d=3000&amp;ss=50&amp;ps=40&amp;pf=m&amp;lcs=XItn&amp;dcs=NpQK&amp;bbcs=k03b&amp;hm=b&amp;hcs=__X$&amp;bd=c&amp;cbcs=Tcq4&amp;ctcs=k03b&amp;hd=j&amp;md=f&amp;tm=0&amp;fhcs=k03b&amp;fhs=150p&amp;fmcs=k03b&amp;fccs=DPQ1&amp;hmcs=__X$&amp;fms=133p&amp;fcs=120p&amp;cd=n&amp;bcs=VZ2d&amp;fp=0&amp;hl=t&amp;fh=b&amp;fw=p&amp;pt=[Event ""] [Site "Paris"] [Date "1858"] [Round ""] [White "Paul Morphy"] [Black "Duke and Count"] [Result "1-0"] 1. e4 e5 2. Nf3 d6 3. d4 Bg4 4. dxe5 Bxf3 5. Qxf3 dxe5 6. Bc4 Nf6 7. Qb3 Qe7 8. Nc3 c6 9. Bg5 b5 10. Nxb5 cxb5 11. Bxb5+ Nbd7 12. O-O-O Rd8 13. Rxd7 Rxd7 14. Rd1 Qe6 15. Bxd7+ Nxd7 16. Qb8+ Nxb8 17. Rd8 1-0 [Event ""] [Site "New York"] [Date "1857"] [Round ""] [White "Louis Paulsen"] [Black "Paul Morphy"] [Result "0-1"] 1. e4 e5 2. Nf3 Nc6 3. Nc3 Nf6 4. Bb5 Bc5 5. O-O O-O 6. Nxe5 Re8 7. Nxc6 dxc6 8. Bc4 b5 9. Be2 Nxe4 10. Nxe4 Rxe4 11. Bf3 Re6 12. c3 Qd3 13. b4 Bb6 14. a4 bxa4 15. Qxa4 Bd7 16. Ra2 Rae8 17. Qa6 Qxf3 18. gxf3 Rg6+ 19. Kh1 Bh3 20. Rd1 Bg2+ 21. Kg1 Bxf3+ 22. Kf1 Bg2+ 23. Kg1 Bh3+ 24. Kh1 Bxf2 25. Qf1 Bxf1 26. Rxf1 Re2 27. Ra1 Rh6 28. d4 Be3 0-1#game_preview'>
same as above, with horizontal layout, with header, frame width as page and frame height as board</A>
<LI><A ONCLICK='return refreshTarget(this.href);' HREF='board-generator.html?am=n&amp;d=3000&amp;ss=50&amp;ps=40&amp;pf=m&amp;lcs=XItn&amp;dcs=NpQK&amp;bbcs=k03b&amp;hm=b&amp;hcs=__X$&amp;bd=c&amp;cbcs=Tcq4&amp;ctcs=k03b&amp;hd=j&amp;md=f&amp;tm=0&amp;fhcs=k03b&amp;fhs=150p&amp;fmcs=k03b&amp;fccs=DPQ1&amp;hmcs=__X$&amp;fms=133p&amp;fcs=120p&amp;cd=n&amp;bcs=VZ2d&amp;fp=0&amp;hl=t&amp;fh=b&amp;fw=p&amp;pt=[Event ""] [Site "Paris"] [Date "1858"] [Round ""] [White "Paul Morphy"] [Black "Duke and Count"] [Result "1-0"] 1. e4 e5 2. Nf3 d6 3. d4 Bg4 $6 {This is a weak move already.} 4. dxe5 $1 Bxf3 5. Qxf3 dxe5 6. Bc4 Nf6 7. Qb3 Qe7 8. Nc3 c6 9. Bg5 {$23 Black cant develop the knight because the Pawn is hanging, the Bishop is blocked because of the Queen.} b5 10. Nxb5 cxb5 11. Bxb5+ Nbd7 12. O-O-O Rd8 13. Rxd7 Rxd7 14. Rd1 Qe6 15. Bxd7+ Nxd7 16. Qb8+ $18 Nxb8 17. Rd8 1-0#game_preview'>
same as above, with one game only and with comments</A>
<LI><A ONCLICK='return refreshTarget(this.href);' HREF='board-generator.html?am=n&amp;d=3000&amp;ss=50&amp;ps=40&amp;pf=m&amp;lcs=XItn&amp;dcs=NpQK&amp;bbcs=k03b&amp;hm=b&amp;hcs=__X$&amp;bd=c&amp;cbcs=Tcq4&amp;ctcs=k03b&amp;hd=j&amp;md=t&amp;tm=0&amp;fhcs=k03b&amp;fhs=150p&amp;fmcs=k03b&amp;fccs=DPQ1&amp;hmcs=__X$&amp;fms=133p&amp;fcs=120p&amp;cd=n&amp;bcs=VZ2d&amp;fp=0&amp;hl=t&amp;fh=b&amp;fw=p&amp;pt=[Event ""] [Site "Paris"] [Date "1858"] [Round ""] [White "Paul Morphy"] [Black "Duke and Count"] [Result "1-0"] 1. e4 e5 2. Nf3 d6 3. d4 Bg4 $6 {This is a weak move already.} 4. dxe5 $1 Bxf3 5. Qxf3 dxe5 6. Bc4 Nf6 7. Qb3 Qe7 8. Nc3 c6 9. Bg5 {$23 Black cant develop the knight because the Pawn is hanging, the Bishop is blocked because of the Queen.} b5 10. Nxb5 cxb5 11. Bxb5+ Nbd7 12. O-O-O Rd8 13. Rxd7 Rxd7 14. Rd1 Qe6 15. Bxd7+ Nxd7 16. Qb8+ $18 Nxb8 17. Rd8 1-0#game_preview'>
same as above, without figurine fonts</A>
<P></P>
<LI><A ONCLICK='return refreshTarget(this.href);' HREF='board-generator.html?am=l&amp;d=3000&amp;ss=26&amp;ps=20&amp;pf=u&amp;lcs=Wtyk&amp;dcs=OXJO&amp;bbcs=OXJO&amp;hm=s&amp;hcs=ZbNv&amp;bd=h&amp;hd=c&amp;md=f&amp;tm=0&amp;fhcs=$$$$&amp;fhs=11&amp;fmcs=$$$$&amp;fccs=v71$&amp;hmcs=ZbNv&amp;fms=11&amp;fcs=11&amp;cd=h&amp;bcs=Wtyk&amp;fp=0&amp;hl=f&amp;fh=388&amp;fw=214&amp;pt=[Event ""] [Site "Paris"] [Date "1858"] [Round ""] [White "Paul Morphy"] [Black "Duke and Count"] [Result "1-0"] 1. e4 e5 2. Nf3 d6 3. d4 Bg4 $6 {This is a weak move already.} 4. dxe5 $1 Bxf3 5. Qxf3 dxe5 6. Bc4 Nf6 7. Qb3 Qe7 8. Nc3 c6 9. Bg5 {$23 Black cant develop the knight because the Pawn is hanging, the Bishop is blocked because of the Queen.} b5 10. Nxb5 cxb5 11. Bxb5+ Nbd7 12. O-O-O Rd8 13. Rxd7 Rxd7 14. Rd1 Qe6 15. Bxd7+ Nxd7 16. Qb8+ $18 Nxb8 17. Rd8 1-0#game_preview'>
tiny board, tiny fonts and centered header</a>
<LI><A ONCLICK='return refreshTarget(this.href);' HREF='board-generator.html?am=l&amp;d=3000&amp;ss=26&amp;ps=20&amp;pf=u&amp;lcs=Wtyk&amp;dcs=OXJO&amp;bbcs=OXJO&amp;hm=s&amp;hcs=ZbNv&amp;bd=h&amp;hd=c&amp;md=f&amp;tm=0&amp;fhcs=$$$$&amp;fhs=11&amp;fmcs=$$$$&amp;fccs=v71$&amp;hmcs=ZbNv&amp;fms=11&amp;fcs=11&amp;cd=h&amp;bcs=Wtyk&amp;fp=10&amp;hl=f&amp;fh=400&amp;fw=234&amp;pt=[Event ""] [Site "Paris"] [Date "1858"] [Round ""] [White "Paul Morphy"] [Black "Duke and Count"] [Result "1-0"] 1. e4 e5 2. Nf3 d6 3. d4 Bg4 $6 {This is a weak move already.} 4. dxe5 $1 Bxf3 5. Qxf3 dxe5 6. Bc4 Nf6 7. Qb3 Qe7 8. Nc3 c6 9. Bg5 {$23 Black cant develop the knight because the Pawn is hanging, the Bishop is blocked because of the Queen.} b5 10. Nxb5 cxb5 11. Bxb5+ Nbd7 12. O-O-O Rd8 13. Rxd7 Rxd7 14. Rd1 Qe6 15. Bxd7+ Nxd7 16. Qb8+ $18 Nxb8 17. Rd8 1-0#game_preview'>
same as above, with frame padding</a>
<LI><A ONCLICK='return refreshTarget(this.href);' HREF='board-generator.html?am=l&amp;d=3000&amp;ss=26&amp;ps=20&amp;pf=u&amp;lcs=Wtyk&amp;dcs=OXJO&amp;bbcs=OXJO&amp;hm=s&amp;hcs=ZbNv&amp;bd=h&amp;hd=j&amp;md=f&amp;tm=0&amp;fhcs=$$$$&amp;fhs=11&amp;fmcs=$$$$&amp;fccs=kQka&amp;hmcs=ZbNv&amp;fms=11&amp;fcs=11&amp;cd=n&amp;bcs=Wtyk&amp;fp=10&amp;hl=f&amp;fh=580&amp;fw=234&amp;pt=[Event ""] [Site "Paris"] [Date "1858"] [Round ""] [White "Paul Morphy"] [Black "Duke and Count"] [Result "1-0"] 1. e4 e5 2. Nf3 d6 3. d4 Bg4 $6 {This is a weak move already.} 4. dxe5 $1 Bxf3 5. Qxf3 dxe5 6. Bc4 Nf6 7. Qb3 Qe7 8. Nc3 c6 9. Bg5 {$23 Black cant develop the knight because the Pawn is hanging, the Bishop is blocked because of the Queen.} b5 10. Nxb5 cxb5 11. Bxb5+ Nbd7 12. O-O-O Rd8 13. Rxd7 Rxd7 14. Rd1 Qe6 15. Bxd7+ Nxd7 16. Qb8+ $18 Nxb8 17. Rd8 1-0#game_preview'>
same as above, with justified header, with frame padding and comments</a>
<LI><A ONCLICK='return refreshTarget(this.href);' HREF='board-generator.html?am=l&amp;d=3000&amp;ss=26&amp;ps=20&amp;pf=u&amp;lcs=Wtyk&amp;dcs=OXJO&amp;bbcs=OXJO&amp;hm=s&amp;hcs=ZbNv&amp;bd=c&amp;cbcs=Vdef&amp;ctcs=umEH&amp;hd=j&amp;md=f&amp;tm=0&amp;fhcs=$$$$&amp;fhs=11&amp;fmcs=$$$$&amp;fccs=kQka&amp;hmcs=ZbNv&amp;fms=11&amp;fcs=11&amp;cd=n&amp;bcs=Wtyk&amp;fp=10&amp;hl=f&amp;fh=520&amp;fw=234&amp;pt=[Event ""] [Site "Paris"] [Date "1858"] [Round ""] [White "Paul Morphy"] [Black "Duke and Count"] [Result "1-0"] 1. e4 e5 2. Nf3 d6 3. d4 Bg4 4. dxe5 Bxf3 5. Qxf3 dxe5 6. Bc4 Nf6 7. Qb3 Qe7 8. Nc3 c6 9. Bg5 b5 10. Nxb5 cxb5 11. Bxb5+ Nbd7 12. O-O-O Rd8 13. Rxd7 Rxd7 14. Rd1 Qe6 15. Bxd7+ Nxd7 16. Qb8+ Nxb8 17. Rd8 1-0 [Event ""] [Site "New York"] [Date "1857"] [Round ""] [White "Louis Paulsen"] [Black "Paul Morphy"] [Result "0-1"] 1. e4 e5 2. Nf3 Nc6 3. Nc3 Nf6 4. Bb5 Bc5 5. O-O O-O 6. Nxe5 Re8 7. Nxc6 dxc6 8. Bc4 b5 9. Be2 Nxe4 10. Nxe4 Rxe4 11. Bf3 Re6 12. c3 Qd3 13. b4 Bb6 14. a4 bxa4 15. Qxa4 Bd7 16. Ra2 Rae8 17. Qa6 Qxf3 18. gxf3 Rg6+ 19. Kh1 Bh3 20. Rd1 Bg2+ 21. Kg1 Bxf3+ 22. Kf1 Bg2+ 23. Kg1 Bh3+ 24. Kh1 Bxf2 25. Qf1 Bxf1 26. Rxf1 Re2 27. Ra1 Rh6 28. d4 Be3 0-1#game_preview'>
same as above, with two games, frame padding, no comments and custom buttons</a>
<LI><A ONCLICK='return refreshTarget(this.href);' HREF='board-generator.html?am=l&amp;d=3000&amp;ss=26&amp;ps=20&amp;pf=u&amp;lcs=Wtyk&amp;dcs=OXJO&amp;bbcs=OXJO&amp;hm=s&amp;hcs=ZbNv&amp;bd=c&amp;cbcs=Vdef&amp;ctcs=umEH&amp;hd=j&amp;md=f&amp;tm=0&amp;fhcs=$$$$&amp;fhs=11&amp;fmcs=$$$$&amp;fccs=kQka&amp;hmcs=ZbNv&amp;fms=11&amp;fcs=11&amp;cd=n&amp;bcs=Wtyk&amp;fp=10&amp;hl=f&amp;fh=520&amp;fw=234&amp;ep=f&amp;pt=[Event ""] [Site "Paris"] [Date "1858"] [Round ""] [White "Paul Morphy"] [Black "Duke and Count"] [Result "1-0"] 1. e4 e5 2. Nf3 d6 3. d4 Bg4 4. dxe5 Bxf3 5. Qxf3 dxe5 6. Bc4 Nf6 7. Qb3 Qe7 8. Nc3 c6 9. Bg5 b5 10. Nxb5 cxb5 11. Bxb5+ Nbd7 12. O-O-O Rd8 13. Rxd7 Rxd7 14. Rd1 Qe6 15. Bxd7+ Nxd7 16. Qb8+ Nxb8 17. Rd8 1-0 [Event ""] [Site "New York"] [Date "1857"] [Round ""] [White "Louis Paulsen"] [Black "Paul Morphy"] [Result "0-1"] 1. e4 e5 2. Nf3 Nc6 3. Nc3 Nf6 4. Bb5 Bc5 5. O-O O-O 6. Nxe5 Re8 7. Nxc6 dxc6 8. Bc4 b5 9. Be2 Nxe4 10. Nxe4 Rxe4 11. Bf3 Re6 12. c3 Qd3 13. b4 Bb6 14. a4 bxa4 15. Qxa4 Bd7 16. Ra2 Rae8 17. Qa6 Qxf3 18. gxf3 Rg6+ 19. Kh1 Bh3 20. Rd1 Bg2+ 21. Kg1 Bxf3+ 22. Kf1 Bg2+ 23. Kg1 Bh3+ 24. Kh1 Bxf2 25. Qf1 Bxf1 26. Rxf1 Re2 27. Ra1 Rh6 28. d4 Be3 0-1#game_preview'>
same as above, without PGN encoding</a>
<LI><A ONCLICK='return refreshTarget(this.href);' HREF='board-generator.html?am=l&amp;d=3000&amp;ss=26&amp;ps=20&amp;pf=u&amp;lcs=Wtyk&amp;dcs=OXJO&amp;bbcs=OXJO&amp;hm=s&amp;hcs=ZbNv&amp;bd=c&amp;cbcs=Vdef&amp;ctcs=umEH&amp;hd=j&amp;md=f&amp;tm=0&amp;fhcs=$$$$&amp;fhs=11&amp;fmcs=$$$$&amp;fccs=kQka&amp;hmcs=ZbNv&amp;fms=11&amp;fcs=11&amp;cd=n&amp;bcs=Wtyk&amp;fp=10&amp;hl=f&amp;fh=520&amp;fw=234&amp;ep=f&amp;pe=779$zlax9RvfEMab2l8$GSCLoZ9rheKl8$ydpr4d8sZmFWvfEMaZt2l8$GSAZjmWUXStaLEM7aaQ$V06NXd86AsMuuaQq1C3JzuGXGf7MUfjTb11nvBDf10zBgKzb05Xf3Cxb$yshpv9Fi7P16pEbyshpyv71Ex0zJfj16lBfVfF6$fcgzjU$T308VwGj5j0$QlIghGlDbn30kpQZvoGoj5f14MUrtmgSqz5n1dQRk6pW9vR$gSoDs8N2p0$ksAuD5GHF2r02GiCV0FIdfnD3sRU0yNzha4M4qf7jTAB0G3vfM0_$uWUX61C3yWQxf7OBxwixmuAVJT39rh_CvQxg$HZZmwCXmKaXCU4gixflmF0P1KtmUguKCOsTK1C3JzuGXGf8fXnjTb11nvBDf10zBfcizb0$Q5fbANb$v8Gj0jQ5vfJeaDm6APr0$QhpyE6790$QprysprwL30jM2lD6$v7x75Fi35j0$QhnyIhnvMvf3zNdzU0z$xy7sRN2b02l71pU0H$yR7pGW35P16pZM$lNDcL3sXxdZ7U0xvfWWzdQho0C$fCk8zsiUZvLT3me5v8Uz7j06sBv8c6V3504NoD1FzOY13$xU7P08D_fwv7Jic$iOeP7L1aCyf4k837P16jyf4k7P7T1dQhc6h7w0f7WTPstU16$gK303o1wTL0#game_preview'>
same as above, supplying an encoded PGN</a>
<LI><A ONCLICK='return refreshTarget(this.href);' HREF='board-generator.html?am=l&amp;d=3000&amp;ss=26&amp;ps=20&amp;pf=u&amp;lcs=Wtyk&amp;dcs=OXJO&amp;bbcs=OXJO&amp;hm=n&amp;hcs=ZbNv&amp;bd=c&amp;cbcs=Vdef&amp;ctcs=umEH&amp;hd=h&amp;md=f&amp;tm=0&amp;fmcs=$$$$&amp;fccs=kQka&amp;hmcs=ZbNv&amp;fms=14&amp;fcs=14&amp;cd=n&amp;bcs=Wtyk&amp;fp=10&amp;hl=t&amp;fh=369&amp;fw=357&amp;ep=f&amp;pe=779$zlax9RvfEMab2l8$GSCLoZ9rheKl8$ydpr4d8sZmFWvfEMaZt2l8$GSAZjmWUXStaLEM7aaQ$V06NXd86AsMuuaQq1C3JzuGXGf7MUfjTb11nvBDf10zBgKzb05Xf3Cxb$yshpv9Fi7P16pEbyshpyv71Ex0zJfj16lBfVfF6$fcgzjU$T308VwGj5j0$QlIghGlDbn30kpQZvoGoj5f14MUrtmgSqz5n1dQRk6pW9vR$gSoDs8N2p0$ksAuD5GHF2r02GiCV0FIdfnD3sRU0yNzha4M4qf7jTAB0G3vfM0_$uWUX61C3yWQxf7OBxwixmuAVJT39rh_CvQxg$HZZmwCXmKaXCU4gixflmF0P1KtmUguKCOsTK1C3JzuGXGf8fXnjTb11nvBDf10zBfcizb0$Q5fbANb$v8Gj0jQ5vfJeaDm6APr0$QhpyE6790$QprysprwL30jM2lD6$v7x75Fi35j0$QhnyIhnvMvf3zNdzU0z$xy7sRN2b02l71pU0H$yR7pGW35P16pZM$lNDcL3sXxdZ7U0xvfWWzdQho0C$fCk8zsiUZvLT3me5v8Uz7j06sBv8c6V3504NoD1FzOY13$xU7P08D_fwv7Jic$iOeP7L1aCyf4k837P16jyf4k7P7T1dQhc6h7w0f7WTPstU16$gK303o1wTL0#game_preview'>
same as above, with horizontal layout, larger move fonts, taller frame height and no highlight</a>
<LI><A ONCLICK='return refreshTarget(this.href);' HREF='board-generator.html?am=n&amp;d=3000&amp;ig=l&amp;ih=33&amp;ss=26&amp;ps=20&amp;pf=u&amp;lcs=Wtyk&amp;dcs=OXJO&amp;bbcs=OXJO&amp;hm=n&amp;hcs=ZbNv&amp;bd=c&amp;cbcs=Vdef&amp;ctcs=umEH&amp;hd=c&amp;md=f&amp;tm=0&amp;fhcs=$$$$&amp;fhs=16&amp;fmcs=$$$$&amp;fccs=kQka&amp;hmcs=ZbNv&amp;fms=14&amp;fcs=14p&amp;cd=n&amp;bcs=Wtyk&amp;fp=10&amp;hl=t&amp;fh=b&amp;fw=p&amp;pe=779$zlax9RvfEMab2l8$GSCLoZ9rheKl8$ydpr4d8sZmFWvfEMaZt2l8$GSAZjmWUXStaLEM7aaQ$V06NXd86AsMuuaQq1C3JzuGXGf7MUfjTb11nvBDf10zBgKzb05Xf3Cxb$yshpv9Fi7P16pEbyshpyv71Ex0zJfj16lBfVfF6$fcgzjU$T308VwGj5j0$QlIghGlDbn30kpQZvoGoj5f14MUrtmgSqz5n1dQRk6pW9vR$gSoDs8N2p0$ksAuD5GHF2r02GiCV0FIdfnD3sRU0yNzha4M4qf7jTAB0G3vfM0_$uWUX61C3yWQxf7OBxwixmuAVJT39rh_CvQxg$HZZmwCXmKaXCU4gixflmF0P1KtmUguKCOsTK1C3JzuGXGf8fXnjTb11nvBDf10zBfcizb0$Q5fbANb$v8Gj0jQ5vfJeaDm6APr0$QhpyE6790$QprysprwL30jM2lD6$v7x75Fi35j0$QhnyIhnvMvf3zNdzU0z$xy7sRN2b02l71pU0H$yR7pGW35P16pZM$lNDcL3sXxdZ7U0xvfWWzdQho0C$fCk8zsiUZvLT3me5v8Uz7j06sBv8c6V3504NoD1FzOY13$xU7P08D_fwv7Jic$iOeP7L1aCyf4k837P16jyf4k7P7T1dQhc6h7w0f7WTPstU16$gK303o1wTL0#game_preview'>
same games, with horizontal layout, board height and page width, centered header, autoplay none, initial game last and initial halfmove number</a>
<P></P>
<LI><A ONCLICK='return refreshTarget(this.href);' HREF='board-generator.html?am=n&amp;d=3000&amp;ig=l&amp;ih=33&amp;ss=26&amp;ps=20&amp;pf=u&amp;lcs=Wtyk&amp;dcs=OXJO&amp;bbcs=OXJO&amp;hm=n&amp;hcs=ZbNv&amp;bd=c&amp;cbcs=Vdef&amp;ctcs=umEH&amp;hd=c&amp;md=f&amp;tm=0&amp;fhcs=$$$$&amp;fhs=16&amp;fmcs=$$$$&amp;fccs=kQka&amp;hmcs=ZbNv&amp;fms=14&amp;fcs=14&amp;cd=n&amp;bcs=Wtyk&amp;fp=10&amp;hl=t&amp;fh=b&amp;fw=p&amp;bu=board.html&amp;ut=t&amp;ep=f&amp;pt=[Event ""] [Site "Paris"] [Date "1858"] [Round ""] [White "Paul Morphy"] [Black "Duke and Count"] [Result "1-0"] 1. e4 e5 2. Nf3 d6 3. d4 Bg4 4. dxe5 Bxf3 5. Qxf3 dxe5 6. Bc4 Nf6 7. Qb3 Qe7 8. Nc3 c6 9. Bg5 b5 10. Nxb5 cxb5 11. Bxb5+ Nbd7 12. O-O-O Rd8 13. Rxd7 Rxd7 14. Rd1 Qe6 15. Bxd7+ Nxd7 16. Qb8+ Nxb8 17. Rd8 1-0 [Event ""] [Site "New York"] [Date "1857"] [Round ""] [White "Louis Paulsen"] [Black "Paul Morphy"] [Result "0-1"] 1. e4 e5 {comments коментарии} 2. Nf3 Nc6 3. Nc3 Nf6 4. Bb5 Bc5 5. O-O O-O 6. Nxe5 Re8 7. Nxc6 dxc6 8. Bc4 b5 9. Be2 Nxe4 10. Nxe4 Rxe4 11. Bf3 Re6 12. c3 Qd3 13. b4 Bb6 14. a4 bxa4 15. Qxa4 Bd7 16. Ra2 Rae8 17. Qa6 Qxf3 18. gxf3 Rg6+ 19. Kh1 Bh3 20. Rd1 Bg2+ 21. Kg1 Bxf3+ 22. Kf1 Bg2+ 23. Kg1 Bh3+ 24. Kh1 Bxf2 25. Qf1 Bxf1 26. Rxf1 Re2 27. Ra1 Rh6 28. d4 Be3 0-1#game_preview'>
same as above, enabling useTextarea (and setting baseUrl and disabling encodePgn as required by useTextarea) and adding non ascii characters as comments</a>
<P></P>
</OL>
</body>
</html>
<!--
Baseline URL excluding &amp;pt
==========================
<LI><A ONCLICK='return refreshTarget(this.href);' HREF='board-generator.html?am=g&amp;d=1000&amp;ss=40&amp;ps=d&amp;pf=d&amp;lcs=W_iH&amp;dcs=MHW2&amp;bbcs=$$$$&amp;hm=s&amp;hcs=RKim&amp;bd=h&amp;hd=j&amp;md=f&amp;tm=0&amp;fhcs=$$$$&amp;fhs=16&amp;fmcs=$$$$&amp;fccs=v71$&amp;hmcs=RKim&amp;fms=16&amp;fcs=m&amp;cd=i&amp;bcs=____&amp;fp=0&amp;hl=f&amp;fh=726&amp;fw=489'>
Remember to correct to the desired value the parameters fh and fw from the board-generator URL.
one game with comments
======================
[Event ""]
[Site "Paris"]
[Date "1858"]
[Round ""]
[White "Paul Morphy"]
[Black "Duke and Count"]
[Result "1-0"]
1. e4 e5 2. Nf3 d6 3. d4 Bg4 $6 {This is a weak move already.} 4. dxe5 $1 Bxf3 5. Qxf3 dxe5 6. Bc4 Nf6 7. Qb3 Qe7 8. Nc3 c6 9. Bg5 {$23 Black cant develop the knight because the Pawn is hanging, the Bishop is blocked because of the Queen.} b5 10. Nxb5 cxb5 11. Bxb5+ Nbd7 12. O-O-O Rd8 13. Rxd7 Rxd7 14. Rd1 Qe6 15. Bxd7+ Nxd7 16. Qb8+ $18 Nxb8 17. Rd8 1-0
&amp;pt=[Event ""] [Site "Paris"] [Date "1858"] [Round ""] [White "Paul Morphy"] [Black "Duke and Count"] [Result "1-0"] 1. e4 e5 2. Nf3 d6 3. d4 Bg4 $6 {This is a weak move already.} 4. dxe5 $1 Bxf3 5. Qxf3 dxe5 6. Bc4 Nf6 7. Qb3 Qe7 8. Nc3 c6 9. Bg5 {$23 Black cant develop the knight because the Pawn is hanging, the Bishop is blocked because of the Queen.} b5 10. Nxb5 cxb5 11. Bxb5+ Nbd7 12. O-O-O Rd8 13. Rxd7 Rxd7 14. Rd1 Qe6 15. Bxd7+ Nxd7 16. Qb8+ $18 Nxb8 17. Rd8 1-0
&amp;pe=490$zlax9RvfEMab2l8$GSCLoZ9rheKl8$ydpr4d8sZmFWvfEMaZt2l8$GSAZjmWUXStaLEM7aaQ$V06NXd86AsMuuaQq1C3JzuGXGf7MUfjTb11nvBDf10zBgKzb05Xf3Cx1_eOLo_$o_6D6Ue0P2WTJ86HCMeqaL2Zy$7SjBD1FzNc$wRFi7SjBDT1$Fnvoaz4$wQEzdz9wL32jo4dfd0$htDaXaaQ$V$OZ$NHtycQVtqy_NFrc_CTpLqUl6xexu_7t84e9Ryo1TBmOtae3vdk28KlwDAeaSU7HXhaSwZG$o_2SAjLNFntxOM712eSKBX0CXcouj2xqwDAeaSU7ZhxOM7smz7F$_DpQ0A$fckGjjFQF250$klIuD5pRk0z$wrtm6APsRU0B$yIsAgRJNDcv3sRp6hrvRvf4momV0FW9vS$fVPUZvpGiz5906sJfnXD0
two games without comments
==========================
[Event ""]
[Site "Paris"]
[Date "1858"]
[Round ""]
[White "Paul Morphy"]
[Black "Duke and Count"]
[Result "1-0"]
1. e4 e5 2. Nf3 d6 3. d4 Bg4 4. dxe5 Bxf3 5. Qxf3 dxe5 6. Bc4 Nf6 7. Qb3 Qe7 8. Nc3 c6 9. Bg5 b5 10. Nxb5 cxb5 11. Bxb5+ Nbd7 12. O-O-O Rd8 13. Rxd7 Rxd7 14. Rd1 Qe6 15. Bxd7+ Nxd7 16. Qb8+ Nxb8 17. Rd8 1-0
[Event ""]
[Site "New York"]
[Date "1857"]
[Round ""]
[White "Louis Paulsen"]
[Black "Paul Morphy"]
[Result "0-1"]
1. e4 e5 2. Nf3 Nc6 3. Nc3 Nf6 4. Bb5 Bc5 5. O-O O-O 6. Nxe5 Re8 7. Nxc6 dxc6 8. Bc4 b5 9. Be2 Nxe4 10. Nxe4 Rxe4 11. Bf3 Re6 12. c3 Qd3 13. b4 Bb6 14. a4 bxa4 15. Qxa4 Bd7 16. Ra2 Rae8 17. Qa6 Qxf3 18. gxf3 Rg6+ 19. Kh1 Bh3 20. Rd1 Bg2+ 21. Kg1 Bxf3+ 22. Kf1 Bg2+ 23. Kg1 Bh3+ 24. Kh1 Bxf2 25. Qf1 Bxf1 26. Rxf1 Re2 27. Ra1 Rh6 28. d4 Be3 0-1
&amp;pt=[Event ""] [Site "Paris"] [Date "1858"] [Round ""] [White "Paul Morphy"] [Black "Duke and Count"] [Result "1-0"] 1. e4 e5 2. Nf3 d6 3. d4 Bg4 4. dxe5 Bxf3 5. Qxf3 dxe5 6. Bc4 Nf6 7. Qb3 Qe7 8. Nc3 c6 9. Bg5 b5 10. Nxb5 cxb5 11. Bxb5+ Nbd7 12. O-O-O Rd8 13. Rxd7 Rxd7 14. Rd1 Qe6 15. Bxd7+ Nxd7 16. Qb8+ Nxb8 17. Rd8 1-0 [Event ""] [Site "New York"] [Date "1857"] [Round ""] [White "Louis Paulsen"] [Black "Paul Morphy"] [Result "0-1"] 1. e4 e5 2. Nf3 Nc6 3. Nc3 Nf6 4. Bb5 Bc5 5. O-O O-O 6. Nxe5 Re8 7. Nxc6 dxc6 8. Bc4 b5 9. Be2 Nxe4 10. Nxe4 Rxe4 11. Bf3 Re6 12. c3 Qd3 13. b4 Bb6 14. a4 bxa4 15. Qxa4 Bd7 16. Ra2 Rae8 17. Qa6 Qxf3 18. gxf3 Rg6+ 19. Kh1 Bh3 20. Rd1 Bg2+ 21. Kg1 Bxf3+ 22. Kf1 Bg2+ 23. Kg1 Bh3+ 24. Kh1 Bxf2 25. Qf1 Bxf1 26. Rxf1 Re2 27. Ra1 Rh6 28. d4 Be3 0-1
&amp;pe=779$zlax9RvfEMab2l8$GSCLoZ9rheKl8$ydpr4d8sZmFWvfEMaZt2l8$GSAZjmWUXStaLEM7aaQ$V06NXd86AsMuuaQq1C3JzuGXGf7MUfjTb11nvBDf10zBgKzb05Xf3Cxb$yshpv9Fi7P16pEbyshpyv71Ex0zJfj16lBfVfF6$fcgzjU$T308VwGj5j0$QlIghGlDbn30kpQZvoGoj5f14MUrtmgSqz5n1dQRk6pW9vR$gSoDs8N2p0$ksAuD5GHF2r02GiCV0FIdfnD3sRU0yNzha4M4qf7jTAB0G3vfM0_$uWUX61C3yWQxf7OBxwixmuAVJT39rh_CvQxg$HZZmwCXmKaXCU4gixflmF0P1KtmUguKCOsTK1C3JzuGXGf8fXnjTb11nvBDf10zBfcizb0$Q5fbANb$v8Gj0jQ5vfJeaDm6APr0$QhpyE6790$QprysprwL30jM2lD6$v7x75Fi35j0$QhnyIhnvMvf3zNdzU0z$xy7sRN2b02l71pU0H$yR7pGW35P16pZM$lNDcL3sXxdZ7U0xvfWWzdQho0C$fCk8zsiUZvLT3me5v8Uz7j06sBv8c6V3504NoD1FzOY13$xU7P08D_fwv7Jic$iOeP7L1aCyf4k837P16jyf4k7P7T1dQhc6h7w0f7WTPstU16$gK303o1wTL0
-->

File diff suppressed because it is too large Load Diff

1390
_assets/vendor/pgn4web/board.html vendored Normal file

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,475 @@
[Event ""]
[Site "Chicago"]
[Date "1982"]
[Round ""]
[White "Martz, W."]
[Black "Huebner, R."]
[Result "1/2-1/2"]
[WhiteElo "2405"]
[BlackElo "2620"]
[ECO "A16"]
[Opening "English opening"]
[Annotator "Huebner, R."]
1. c4 Nf6 2. Nc3 c5 3. Nf3 e6 4. e3 Be7 5. d4 O-O 6. d5 $6 (6. Bd3 cxd4 7.
exd4 d5 { - B14 }) 6... exd5 7. cxd5 d6 8. Bd3 $6 (8. Be2 $5) (8. Nd2 $5)
8... Bg4 9. h3 Bh5 $2 (9... Bxf3 $2 10. Qxf3 Na6 11. O-O (11. Qe2 Nc7 12.
e4 Nd7 13. O-O Bf6) 11... Nc7 12. b3 Rb8 13. a4 Na6) 10. e4 (10. g4 Bg6 11.
e4 c4 12. Bb1 b5 13. a3 Nfd7 $13) 10... Nfd7 $6 (10... Na6 $6 11. g4 Bg6
12. Nd2 { $140 f4 $16 }) (10... Bxf3 $5) 11. Bf4 $2 (11. g4 Bg6 12. h4 h5 (
12... h6 13. h5 Bh7 14. Rg1 { $140 g5 $16 }) 13. g5 { $140 Nd2, f4 $16 })
11... Na6 $5 (11... Bxf3 12. Qxf3 a6 13. a4 Qc7 14. Qe2 Bf6 15. Rc1 $14)
12. g4 Bg6 13. h4 $6 (13. Nd2 Nb6 $11) 13... c4 14. Bb1 (14. Bxc4 $2 Ndc5
15. Qe2 (15. Nd2 Bxh4 $17) (15. Bd3 Nxd3+ 16. Qxd3 Nc5 17. Qe2 Bf6) (15. e5
Nb4) 15... Bf6 16. e5 dxe5 17. Nxe5 Nb4 18. Rd1 (18. h5 Bxe5 19. Bxe5 Bd3
$19) (18. Kf1 Re8 $19) 18... Re8 19. O-O Nbd3 $19) (14. Bc2 $2 h5 15. Nd2
Nb4 16. gxh5 Bxh5) 14... h5 $2 (14... h6 15. h5 (15. g5 Bh5 16. gxh6 g6 $17
) 15... Bh7 16. Rg1 Ndc5 17. g5 (17. a3 Bg5 $17) 17... Nb4 18. Kf1 Nbd3 $17
) 15. Nd2 (15. g5 $2 Ndc5 16. Nd2 f6 17. Rg1 (17. Nxc4 fxg5 18. Bxg5 Bxg5
19. hxg5 Qxg5 $17 20. Nxd6 Qg2 21. Rf1 Rf3 { $140 22... Raf8, 22... Nb4 })
17... fxg5 18. Bxg5 Bxg5 19. Rxg5 Qf6 { $140 b5 }) (15. Nd4 $2 Ndc5 16.
gxh5 Bh7 { $140 17... Nb4, 17... Bf6 $17 }) 15... Rc8 (15... hxg4 $2 16. h5
Bh7 17. Nxc4 Ndc5 18. Qxg4 { $140 Rg1 $16 }) 16. gxh5 Bh7 17. Rg1 (17. Qe2
$2 Qb6 18. Na4 (18. Nxc4 Rxc4 19. Qxc4 Qxb2 20. O-O Qxa1) 18... Qb4 19. Bc2
b5 20. a3 Qa5 21. Nc3 b4) (17. h6 $6 g6 (17... Re8 18. hxg7 { $140 19. e5
Bb1 20. Rb1 de5 21. Qh5 }) 18. Rg1 (18. h5 g5) 18... Bxh4 { $140 Qb6 $17 })
17... Bf6 $5 (17... Qb6 $2 18. Na4 (18. Qg4 Bf6 19. Bh6 Ne5 20. Qg3 g6 $13)
18... Qa5 (18... Qd4 19. Qg4 { $140 e5 }) (18... Qb4 19. a3) 19. Qg4 Bf6
20. Qxd7 b5 21. Qxd6 { $140 22. Qf6, 22. e5 $18 }) (17... Kh8 18. h6 (18.
Qg4 Rg8 19. e5 Bxb1 20. exd6 Bd3 21. dxe7 Qxe7+ { $140 Nf6 }) 18... g6 19.
Bg5 (19. Qe2 Qb6 20. Nf3 Nac5) 19... Ne5 20. Nf3 Nxf3+ 21. Qxf3 Nc5 22. Qe3
Bf6 $14) 18. Bxd6 (18. h6 $2 Ne5 19. hxg7 Re8 $15) 18... Re8 19. Kf1 $1 {
$140 e5 } 19... Qb6 (19... Ne5 20. Bxe5 (20. Ba3 Bxh4 21. f4 Qf6) 20...
Bxe5 21. Nf3 Qf6 22. Nxe5 $1 (22. Ng5 $2 Bxc3 23. bxc3 (23. Nxh7 Qd4 $17) (
23. e5 Bxe5 24. Nxh7 Qxh4 $17) 23... Qxc3 24. e5 Bd3+ 25. Bxd3 cxd3 26. e6
fxe6 27. Nxe6 d2 28. Rxg7+ Kh8 (28... Qxg7 29. Nxg7 Re1+ 30. Qxe1 dxe1=Q+
31. Rxe1 Kxg7 32. Re7+ { $140 Rb7 $11 }) 29. Rg5 (29. Rg3 Qc4+ { $140 Qd5 })
29... Nc5 $19) 22... Rxe5 (22... Qxe5 23. Qg4 { $140 f4 $16 }) 23. Qg4 Rd8
(23... Rce8 24. d6 { $140 25. d7, 25. Nd5 }) 24. f4 Nc5 25. h6 $16) 20. Ba3
(20. e5 $2 Bxb1 21. Rxb1 Bxe5 22. Bxe5 Nxe5 23. Nde4 Nc5 $17) 20... Qa5 $2
(20... Ne5 $6 21. Nf3 { $140 Ng5 $16 }) (20... Bxh4 $6 21. Rg2 Ne5 22. Nf3
Nxf3 (22... Bf6 23. d6 { $140 Nd5 }) 23. Qxf3 Qh6 24. Bc2 $16) (20... Nac5
21. Qg4 (21. f4 $2 Bxc3 22. bxc3 Nxe4 23. Nxe4 Bxe4 24. Qg4 Qf6 $17) (21.
Nxc4 Qa6 22. Qe2 Bxc3 23. bxc3 Nxe4) (21. Qe2 Qa6) (21. Qf3 Bd4 22. Qg3 Qf6
$13) 21... Ne5 22. Qg3 Qa5 (22... Ncd3 23. d6 $18 (23. Bxd3 $2 Nxd3 24. f4
(24. Nxc4 Rxc4 25. Qxd3 Rd4 { $140 Be4 }) 24... Bd4 25. Rg2 Qh6 26. d6 (26.
Ne2 Bxb2) (26. Nxc4 Rxc4 27. Qxd3 Qxf4+ $19) 26... Bxc3 27. bxc3 (27. d7
Bxd2 28. Rxd2 Bxe4) 27... Bxe4 28. d7 Bxg2+ 29. Qxg2 Qxf4+ 30. Kg1 (30. Nf3
Ne5 31. dxc8=Q (31. dxe8=Q+ Rxe8 32. Re1 Re6 33. Rxe5 Rxe5 34. Bd6 Qc1+)
31... Rxc8 32. Kf2 Rd8) 30... Qe3+ 31. Kh2 (31. Kf1 $2 Qe1+) (31. Kh1 $2
Nf2+) 31... Qf4+ 32. Kg1 (32. Kh1 $2 Qxh4+ { $140 Re1 }) 32... Qe3+ $11) (
23. Nxc4 Nxc4 { $140 Na3 }) (23. f4 Nxb2 24. fxe5 Bxe5 25. Qf3 Nd3)) 23. f4
b5 24. Bxc5 (24. fxe5 Bxe5 25. Qf3 b4 26. Nxc4 Qa6) 24... Rxc5 25. fxe5
Bxe5 26. Qe3 (26. Qg2 Bxc3 27. bxc3 Qxc3 28. e5 Bd3+) 26... b4 $13) 21. e5
$18 (21. Qg4 $2 Ne5 22. Qg3 b5 23. f4 b4 $17) (21. Qf3 Be5 { $140 b5 })
21... Bxb1 (21... Nxe5 $2 22. Bxh7+ Kxh7 23. Nde4 Bxh4 (23... Qb6 24. d6)
24. f4 $18) (21... Bxe5 22. Bxh7+ Kxh7 23. Nf3 $1 (23. Nde4 Nf6 (23... Bxc3
24. Ng5+ Kg8 25. Qc2) 24. Qf3 $1 $16 (24. Nd6 Bxd6 (24... Bxc3 25. Qc2+ Kg8
26. Qxc3 $16) 25. Bxd6 Qb6 26. Bf4 Nc5 $13 (26... Qxb2 $2 27. Rc1 $16))) (
23. Qg4 $2 Bxc3 24. Ne4 (24. bxc3 Qxc3 25. Rc1 Qd3+ $19) (24. Qxd7 Bxd2 25.
Qxf7 Bh6 $19) 24... Qxd5 25. Nxc3 Qd3+ 26. Kg2 Ne5 $17) 23... Nf6 (23...
Nac5 24. Ng5+ Kg8 25. h6 $18 { $40 $242 }) (23... Bxc3 24. Qc2+ Kg8 25. Ng5
(25. Qxc3 $2 Qxc3 26. bxc3 Nc7 $11) 25... Nf6 (25... Bb4 26. Qh7+ Kf8 27.
d6 $18) (25... Nf8 26. Bxf8 Kxf8 27. bxc3 Qxd5 28. Nh7+ Ke7 29. Rd1 Qf3 30.
Rg3 Qh1+ 31. Ke2 $18) 26. h6 (26. Nxf7 $2 Ne4) (26. Qxc3 $2 Qxc3 27. bxc3
Nxd5 $17) 26... g6 27. h5 (27. Nxf7 Ne4 28. Nd6 Nd2+ $19) 27... Nxh5 28.
Nxf7 Nf4 29. Nd6 { $140 Rg6 $18 }) 24. Qc2+ Kh8 (24... Kg8 25. Nxe5 Rxe5
26. h6 g6 27. Rxg6+ $18) 25. Ng5 Qc7 (25... Bxc3 26. Nxf7+ Kg8 27. Rxg7+
Kxg7 28. Qg6#) 26. Nce4 $18) 22. Rxb1 (22. exf6 $2 Bd3+ 23. Kg2 Nxf6
24. Qf3 Re5 $13) 22... Bxe5 (22... Nxe5 $2 23. Nde4 $18) 23. Qg4 Nb6 (23...
Bxc3 $2 24. bxc3 Qxc3 25. Rg3 Qe5 26. Nf3 Qf6 27. Qxd7 $18) 24. Nde4 (24.
Nf3 $2 Bxc3 (24... Bf6 25. Ne4 Rxe4 26. Qxe4 Qxd5 27. Qxd5 Nxd5 28. Bd6 $18
) 25. bxc3 Qxc3 26. Bb2 Qd3+ 27. Kg2 c3 28. Kh2 Qh7) (24. h6 Bxc3 (24... g6
25. h5 $18 Bxc3 26. hxg6) (24... Nxd5 25. Nxc4 Rxc4 26. Qxc4 Nxc3 27. Re1
Qb5 28. Qxb5 Nxb5 29. f4 $18) 25. bxc3 Qxc3 26. Qxg7+ Qxg7 27. Rxg7+ Kh8
28. d6 $1 $16 (28. Nf3 f6 29. h5 Rc7 $13) (28. Rxf7 Rc7 29. Rxc7 Nxc7 30.
d6 Ncd5 $13)) 24... Nxd5 (24... Rcd8 25. Nd6 Bxc3 26. bxc3 Qxc3 27. Rg3 Qf6
28. Nxe8 Rxe8 29. Bb2 $18) 25. Nd6 Nxc3 26. bxc3 (26. Re1 $5 Nxa2 (26...
Rcd8 27. Nxe8 Rxe8 28. bxc3 Qxa3 29. Rxe5 Qc1+ 30. Kg2 Qxg1+ 31. Kxg1 Rxe5
32. Qc8+ Kh7 33. Qxb7 $18) (26... Nb1 27. Rxb1 Rcd8 28. Nxe8 Rxe8 29. Re1
c3 30. f4 Qb5+ 31. Qe2 $18) 27. Nxc8 (27. Nxe8 Rxe8 28. f4 (28. Bd6 Qxe1+
$13) 28... Qxe1+ 29. Kxe1 Bd4+ $13 (29... Bxb2+ 30. Kf1 Bd4 $13)) 27... c3
{ ($140 Qb5) } 28. Ne7+ (28. bxc3 Qxc3 $13) (28. f4 Qb5+ $13) (28. Qd7 Rd8
29. Rxe5 Rxd7 30. Rxa5 c2) 28... Kh8 29. Qf5 cxb2 30. Rxe5 (30. Qxf7 $2
Qxe1+ $19) (30. Bxb2 Qb5+ 31. Re2 Rxe7 32. Bxe5 f6 33. h6 $18) 30... b1=Q+
(30... Qxe5 31. Qxe5 b1=Q+ 32. Kg2 $18) 31. Qxb1 Qxe5 32. Qxa2 Rxe7 33.
Bxe7 Qxe7 34. h6 gxh6 35. Qb2+ f6 36. Rg6 $18) 26... Qxa3 27. Nxc8 Qxc3 (
27... Qc5 $2 28. Re1 $18 { ($140 f4) } 28... Nc7 29. Qd7 Re6 30. h6 Bxc3
31. Ne7+ Kh7 32. Rxe6 Nxe6 33. Qe8) 28. Rd1 $6 (28. Rxb7 $2 Qd3+ 29. Kg2
Qd5+ 30. Qf3 Qxf3+ 31. Kxf3 Rxc8) (28. Ne7+ $2 Rxe7 29. Qc8+ Kh7 30. Qf5+
$11) (28. Qd7 $6 Qd3+ 29. Qxd3 cxd3 30. Nxa7 Nc5 $13) (28. Nxa7 $6 Nc5 29.
Nb5 Qd3+ 30. Kg2 c3 $13 31. Rgd1 $2 c2) (28. h6 $6 Nc5 29. hxg7 Ne6 $13) (
28. Kg2 $5 Nc5 29. Rbc1 (29. Ne7+ Rxe7 (29... Kh8 30. Nd5 Qd3 31. Rgd1) 30.
Qc8+ Kh7 31. Qxc5 Re6 32. Rbc1 { $140 Qc4 }) 29... Qd3 30. Rgd1 $18) 28...
Qc2 (28... Nc5 29. Ne7+ Kh8 (29... Rxe7 30. Rd8+ Kh7 31. Qf5+ $18) 30. h6
g6 (30... gxh6 31. Nf5 { $140 Nh6 }) 31. h5 { $40 }) 29. Qd7 $2 (29. Re1 $2
Nc5 30. Rxe5 $2 Qd3+ 31. Kg2 $8 Rxe5 32. Kh2 Ne6 $19) (29. Ne7+ $2 Rxe7 30.
Rd8+ Kh7 31. Qc8 g6 $19) (29. Kg2 Nc5 (29... f5 $2 30. Ne7+ Rxe7 31. Rd8+
$18) 30. Rc1 Qxa2 31. Ne7+ Rxe7 32. Qc8+ Kh7 33. Qxc5 Re6 34. Qxc4 $11) (
29. h6 $1 Nc5 (29... g6 30. h5 $1 (30. Qd7 Kf8 $1 (30... Rf8 31. Ne7+ Kh8 (
31... Kh7 32. Nxg6) 32. Qd5 (32. Rg4 Nc5 { $140 Nd3 }) (32. Re1 Nc5) 32...
Bf6 33. Rd2 $13) (30... Re6 31. h7+ Kh8 32. h5 Nc5 33. Qd8+ Kxh7 34. Ne7
Rxe7 (34... Nd3 35. Qg8+ Kh6 36. Nf5+ gxf5 37. Qf8+ $18) 35. hxg6+ Kh6 36.
gxf7 Rxf7 37. Qh4#) (30... Nc7 31. h5 $16) 31. Nxa7 (31. Rd2 Qb1+ 32.
Kg2 Qe4+ 33. f3 Qf4 $17) (31. h7 Nc5 32. Qd6+ Kg7 $17) 31... c3 32. Nb5 Nc5
33. Qd5 Ne4 $19) 30... Nc5 31. hxg6 fxg6 32. Nd6 (32. Qxg6+ $2 Qxg6 33.
Rxg6+ Kh7 34. Rg5 Kxh6 35. f4 Nd3) 32... Bxd6 (32... Rd8 33. h7+ $18 Kxh7
34. Qh4+ Kg7 35. Nf5+ Qxf5 36. Rxd8) (32... Re6 33. Nxc4 $18) 33. Rxd6 Qb1+
(33... Kh7 34. Rd7+ $18) 34. Kg2 Qe4+ 35. Qxe4 Rxe4 36. Kf3 $18) 30. hxg7 {
$140 Ne7 } 30... Ne6 31. Nd6 (31. Qh5 Nxg7 (31... Bxg7 $2 32. Nd6 { $140
Nf5 $18 }) 32. Nd6 Bxd6 33. Rxd6 c3 $13) 31... Bxd6 (31... Rd8 32. Qh5 $18)
32. Rxd6 $16) 29... Re6 $5 (29... Kf8 $5 { ($140 Nc5) } 30. h6 g6 { - 29.
h6 } (30... Nc5 $2 31. hxg7+ Bxg7 32. Qg4 Ne6 33. Nd6 Rd8 34. Kg2 $16) (
30... gxh6 $2 31. Rg8+ Kxg8 32. Qxe8+ Kh7 33. Qxf7+ Bg7 34. Rd7 Qb1+ 35.
Kg2 Qe4+ 36. Kh2 Qe5+ 37. Kh3 $18)) 30. h6 (30. Qd8+ Kh7 31. Ne7 $2 Rxe7) (
30. Rd5 Qb1+ 31. Kg2 Qe4+ $17) 30... Nc5 (30... Rxh6 $2 31. Ne7+ Kh7 32.
Qd8 $18) (30... g6 $2 31. h7+ { - 29. h6 }) 31. Qd8+ Kh7 32. hxg7 Bxg7 33.
Qd2 $8 Qxd2 (33... Qf5 34. Qg5 (34. Rg3 $2 Ne4 $19) (34. Rg5 $2 Qh3+ 35.
Kg1 Nd3 $19) (34. Nd6 Qh3+ 35. Rg2 Rg6 $19) 34... Qh3+ 35. Qg2 (35. Rg2 $2
Rg6 36. Qh5+ Bh6 $19) 35... Qxg2+ 36. Kxg2 $16) 34. Rxd2 c3 $2 (34... a6
35. Rd6 (35. Rd5 Nd3 36. Nd6 Re1+ 37. Kg2 Rxg1+ 38. Kxg1 c3 $19) 35... Re4
36. Rg5 Ne6 $17) 35. Rc2 a6 36. Rxg7+ $8 Kxg7 37. Rxc3 Ne4 38. Rd3 $2 (38.
Rc7 $6 Rf6 39. Rc2 Rf4 40. Ne7 Kf8 $17) (38. Re3 b5 (38... Kf6 39. a4) 39.
Nb6 Nf6 40. Rxe6 fxe6 41. a4 Kf7 (41... b4 42. Ke2) 42. axb5 axb5 43. Nc8
$11) 38... Rc6 $2 (38... Rf6 39. f3 Ng3+ { $140 Nf5 $17 }) ($142 38... b5
39. Kg2 (39. Re3 b4 { $140 Nc3 }) 39... b4 (39... Rc6 40. Ne7 Rc2 41. Nf5+
Kg6 42. Ng3 $11) 40. a3 Rg6+ 41. Kf3 Nc5 42. Rd5 b3) 39. Ne7 Rc2 40. Nf5+
Kg6 41. Nd6 $11 (41. Ng3 $6 Nxf2 (41... Rxf2+ 42. Ke1 Rf4 43. Rd4 f5 44.
h5+ Kg5 45. Nxe4+ Rxe4+ 46. Rxe4 fxe4 47. Ke2 Kxh5 48. Ke3 Kg5 49. Kxe4 Kf6
50. Kd5 Ke7 51. Kc5 Kd7 52. Kb6 Kc8 53. a4 Kb8 54. a5 Kc8 55. Kc5 Kc7 56.
Kd5 $11) 42. Rd6+ f6 43. Rb6 (43. h5+ Kg5 44. h6 Ng4 45. h7 Rh2) 43... Rxa2
44. Rxb7 Ng4 $17) 41... Rxf2+ (41... Nxf2 42. Rg3+ Kh5 (42... Kf6 43. Rg2
Nd1 44. Rxc2 Ne3+ 45. Ke2 Nxc2 46. Nxb7 $11) 43. Rg2 Rc6 (43... Ng4 44.
Rxc2 Ne3+ 45. Kf2 Nxc2 46. Nxb7 Kxh4 47. Nc5 a5 48. Nb7 a4 49. a3 $11) 44.
Rxf2 (44. Nxb7 $2 Ng4 $17) (44. Nxf7 $2 Ng4 $17) 44... Rxd6 45. Rxf7 b5 46.
Rf4 Rd1+ 47. Ke2 { $140 a4 $11 }) 42. Ke1 Rf4 43. Nxb7 (43. Rd4 f5 44. Nxe4
fxe4 45. Rd6+ Kh5 46. Rb6 Rf7 47. Re6 $11) 43... Rxh4 44. Ra3 Kg5 45. Nd8
$6 (45. Rxa6 Kf4 (45... f5 46. Nd6) 46. Ra4 { $140 47.Nd6, 47.Nc5 } (46.
Nd6 $2 Rh6) 46... Kf3 47. Ra3+ $11) 45... Rh1+ 46. Ke2 Rh2+ 47. Ke1 f5 48.
Rxa6 Kg4 49. Ra4 (49. Ne6 $2 Rh6 50. Ke2 f4) (49. Nf7 f4 50. Ne5+ $11) (49.
Nc6 $11) 49... Rh6 50. Nf7 (50. Nb7 $2 Kf3 51. Ra3+ Kg2 { $140 f4 }) 50...
Re6 51. Nd8 Re8 52. Nc6 f4 53. Ra7 $8 f3 54. Re7 Rxe7 55. Nxe7 f2+ 56. Ke2
Kg3 57. Nf5+ (57. Nd5 $2 Nc3+ 58. Nxc3 Kg2 $19) 57... Kg2 58. Nh4+ (58.
Ne3+ $2 Kg1 59. a4 Ng3+ { $140 Nf5 $19 }) 58... Kh3 59. Nf5 Kg2 1/2-1/2
[Event ""]
[Site "Tilburg"]
[Date "1982"]
[Round ""]
[White "Huebner, R."]
[Black "Browne, W."]
[Result "1-0"]
[WhiteElo "2630"]
[BlackElo "2590"]
[ECO "A30"]
[Opening "English"]
[Variation "symmetrical, hedgehog system"]
[Annotator "Huebner, R."]
1. Nf3 c5 2. c4 Nf6 3. Nc3 e6 4. g3 b6 5. Bg2 Bb7 6. O-O Be7 7. d4 cxd4 8.
Qxd4 d6 9. b3 Nbd7 10. Bb2 (10. e4 Nc5 $5) 10... a6 11. Rfd1 O-O 12. h3 Qc7
13. Qe3 Rfc8 (13... Rfe8 $5) 14. Nd4 Bxg2 15. Kxg2 Ne5 $11 16. Kg1 (16. f3
Qb7 17. a4 Ng6 18. Rac1 h5 { ($140 h4) } 19. h4 Ne5 $36) 16... Nc6 $6 (
16... h5 $6 17. f4 Nc6 (17... Ng6 18. f5 $16) 18. Nf3 $14) (16... Ng6 $6
17. f4 { $140 18.f5, 18.Qf3 }) (16... Qb7 $5 17. f4 $140 Nc6 18. Nf3 $6 b5)
17. Rac1 (17. Qf3 Nd7) 17... Qb7 (17... Nd7 $2 18. Nd5) 18. Nxc6 Rxc6 (
18... Qxc6 $2 19. Nd5 exd5 20. Qxe7 Re8 21. cxd5 Qxc1 22. Qxe8+ Rxe8 23.
Rxc1 Rxe2 (23... Nxd5 24. Rc6 $16) 24. Kf1 Re8 25. Bxf6 gxf6 26. Rc6 $16)
19. a4 Ne8 $6 (19... Rac8 $5 20. Ba3 Bf8 21. Qf3 $140 d5 22. Bxf8 Kxf8 23.
cxd5 Nxd5) 20. Ba3 (20. Ne4 $6 b5 $15) (20. Rd3 Bf6 { ($140 b5) } 21. Ba3
Bxc3 22. Rdxc3 Rac8 $11 (22... b5 23. cxb5 Rxc3 24. Qxc3 axb5 25. a5 $14))
20... Rac8 21. Rd3 R6c7 (21... d5 $6 22. cxd5 (22. Bxe7 $2 dxc4) 22... Rxc3
23. Rdxc3 Rxc3 24. Rxc3 Bxa3 25. dxe6 Bc5 (25... f6 26. Qd3 { $140 27. Qd7,
27.Qc4 }) 26. exf7+ Qxf7 27. Qf3 $16) 22. Rcd1 Qb8 $6 (22... d5 23. Bxe7
dxc4 24. Rd6 (24. bxc4 Rxe7 25. Rb1 Rxc4 26. Qxb6 Qc6 (26... Qc8 $2 27. Rd8
Qc6 28. Qxc6 Rxc6 29. Rbb8 f5 30. Rxe8+ Rxe8 31. Rxe8+ Kf7 32. Ra8 Rxc3 33.
Rxa6 $16) (26... Qxb6 27. Rxb6 Rec7 28. Rd8 Rc8 29. Rxc8 Rxc8 30. Ne4 $14)
27. Qxc6 Rxc6 28. Rb8 f5 29. Ra8 $14) 24... Nxd6 (24... cxb3 25. Rxb6 Qa8
26. Bb4 a5 27. Nb5 $18) (24... Rxe7 25. Rxb6 Qa8 26. b4 $14) 25. Bxd6 Rd7
$44) (22... h6 $5 { $140 d5 }) 23. Qd2 { $140 Ne4 } (23. h4 $5) 23... Bf8 (
23... d5 $2 24. Bxe7 dxc4 25. Rd7 $18) 24. Bb2 $6 (24. Ne4 $2 d5 25. Bxf8
dxe4 $19) (24. h4 $5 d5 $6 (24... h5 $5 25. Qg5 g6 26. Ne4 d5 (26... Rc6
27. Bb2 { $140 Nf6 }) (26... Be7 27. Qf4 Rd7 28. Rf3 $36) 27. Bxf8 dxe4 28.
Rd7 { $140 Qe7 }) (24... h6 25. h5 { $140 g4 }) 25. Bxf8 dxc4 26. Bxg7 $1 {
(Browne, W) } 26... cxd3 (26... Nxg7 27. bxc4 $16) 27. Be5 dxe2 28. Qxe2
$16) 24... h6 25. h4 Nf6 (25... h5 26. Ba3 { $140 27.Qg5 g6 28.Ne4 }) 26.
Qf4 $5 (26. Ba3 Ne8 27. h5 $14) 26... Qb7 27. Rf3 { $140 g4 } (27. g4 $6 h5
28. g5 Nd7 29. Ne4 Nc5 30. Nxc5 (30. Nf6+ $2 gxf6 31. Qxf6 e5 $19) 30...
bxc5 $15) 27... h5 28. Rfd3 Rc5 29. f3 (29. Ba3 Rf5 30. Qd2 Ng4 31. f3 Ne5
32. Re3 Rd8 { $140 g6 $17 }) 29... R5c7 (29... Rf5 30. Qd2 Nd7 $2 31. Ne4
Nc5 32. Nxd6 Bxd6 33. Rxd6 Nxb3 34. Qc3 $18) 30. Kg2 Qa8 31. Qg5 (31. e4 $6
Nd7) (31. Ba3 d5 32. Bxf8 Kxf8 33. Qd6+ Kg8 34. Qxb6 dxc4 35. bxc4 (35.
Qxc7 cxd3 36. Qe5 dxe2 37. Nxe2 Nd5 $15) 35... Rxc4 36. Rd8+ Kh7 $15) (31.
Qd2 d5 32. cxd5 Nxd5 (32... exd5 33. Qf4 $14) 33. Nxd5 Rc2 34. Qg5 exd5 $8
35. R1d2 $16) 31... Rc5 32. Qd2 R5c6 33. Ba3 Ne8 (33... d5 34. Bxf8 Kxf8
35. cxd5 exd5 36. Nxd5 Rc2 37. Qb4+) 34. Qe3 $6 (34. Qg5 d5 (34... g6 35.
Ne4 Qb8 (35... d5 36. Bxf8 dxe4 37. Rd7 exf3+ 38. exf3 Ng7 39. Qe7 Rxf8 40.
Rd8 $18) 36. Bb2 Bg7 37. Bxg7 Kxg7 38. Nxd6 Nxd6 39. Rxd6 Rxd6 40. Qe5+ $18
) 35. Bxf8 Kxf8 36. Qxh5 Kg8 37. Rd4 Nf6 38. Qg5 dxc4 39. b4 { $140 h5 $16
}) 34... g6 (34... Be7 $5) 35. Qd2 (35. Ne4 d5 36. Bxf8 dxe4 37. Rd7 Nf6
$17) (35. Qf4 d5 36. Bxf8 Kxf8 $11) 35... Qb8 $6 (35... Bg7 $2 36. Ne4 $18)
(35... R8c7 36. Ne4 d5 37. Bxf8 dxe4 38. Rd8 exf3+ 39. exf3 Rc8 40. Ba3 $16
) (35... R6c7 $5) 36. Qf4 Qa8 $2 (36... d5 37. Qxb8 Rxb8 38. cxd5 Rxc3 39.
Rxc3 Bxa3 40. dxe6 fxe6 41. Rc6 { $140 Rd7 $14 }) 37. Ne4 $16 e5 (37... d5
38. Bxf8 dxe4 39. Rd7 exf3+ 40. exf3 Nf6 41. Rxf7 e5 (41... Kxf7 42. Rd7+
Ke8 43. Re7+ Kd8 44. Qxf6 $18) 42. Rg7+ Kxf8 43. Qh6 $18) 38. Qe3 (38. Qd2
$2 d5 39. cxd5 Rc2 $19) 38... Qb8 39. Nc3 Nf6 40. Nd5 Nxd5 41. Rxd5 Re8 (
41... Rd8 42. R1d3 Re8 (42... Be7 $2 43. Qd2 Qc7 44. Qd1 Qb8 45. a5 bxa5
46. c5 $16)) 42. Qd3 Re6 43. e4 (43. a5 bxa5 44. Rxa5 Rb6 45. b4 (45. Rb1
Qb7 46. Qd5 Re7 $13) 45... Re7 46. c5 e4 47. fxe4 dxc5 $13) 43... Be7 44.
Kf2 (44. a5 $6 bxa5 45. Rxa5 Bd8) 44... Qf8 45. Ke2 f5 $6 (45... Qb8 $5 46.
Rg1 (46. Kd2 Bf8 47. Kc2 $2 b5) 46... Qf8 47. Bc1 Qg7 { $140 Rc8 }) 46. Bc1
fxe4 $6 (46... f4 47. gxf4 exf4 (47... Bxh4 48. f5 $16) 48. Rg1 Kh7 49. Qd2
(49. Rxh5+ $2 gxh5 50. Qd5 Rg6 51. Rxg6 Rc5 52. Qe6 Re5 $19) 49... Bxh4 50.
Qxf4 Qxf4 51. Bxf4 $16) (46... Rc8 $5 47. Be3 Rb8) 47. Qxe4 (47. fxe4 Rf6
48. Qe3 (48. Be3 Rf3) 48... Qf7 $13) 47... Qf5 (47... Rc8 48. Be3 Rb8 49.
g4 hxg4 50. fxg4 $16 Bxh4 51. g5 Bg3 52. Qg4 $18) 48. Be3 Kf7 (48... Qh3
49. Bf2 Rc8 (49... Qh2 50. Rg1 Rc8 51. Rdd1 Qh3 52. Bxb6) 50. Rg1 Rb8 51.
g4 Bxh4 (51... hxg4 52. Rxg4 Kf7 53. Rd1 $16) 52. gxh5 Bxf2 53. Rxg6+ Kf7
54. Rxe6 $16) 49. R5d3 Qxe4 50. fxe4 g5 $6 (50... Bd8 51. Bg5 Ke8 (51...
Bxg5 52. hxg5 Kg7 (52... Ke7 53. Rf1 Rc8 54. Rdf3 Kd7 55. Rf7+ Re7 56. R7f6
Rg8 (56... Rg7 57. Rf7+) 57. b4 { $140 58.Rd1 Re6 59.c5 }) 53. Rf1 a5 (
53... Re7 54. Rf6 Rd7 55. Re6 { $140 Re5 }) (53... Rc7 54. Rf6) (53... b5
54. axb5 axb5 55. cxb5 Rc5 56. Rd5 Rxd5 57. exd5 Re7 58. Kd3 Rc7 59. Rf6)
54. Rdf3 Rc7 (54... Re7 55. Rf6) 55. Rf8 Rb7 56. Rd8) (51... Be7 52. Rf1+
Ke8 53. Rdf3 { ($140 Rf7) } 53... b5 54. cxb5 axb5 55. Bxe7 Rxe7 56. Rf8+
Kd7 57. a5 $16) 52. Rf1) (50... Ke8 $5 51. Bg5 Rc7 52. Rf1 Bxg5 53. hxg5
Rf7 54. Rxf7 Kxf7 55. a5 (55. Rd5 Ke7 56. a5 Kd7) 55... bxa5 56. Rd5 Re7)
51. hxg5 Kg6 52. Rf1 Bxg5 53. Rf8 Bxe3 54. Rxe3 $6 { $140 Ref3 } ($142 54.
Kxe3 b5 (54... Rf6 55. Ra8 $1 (55. Rxf6+ Kxf6 56. Kf3 Kg5 57. Rd5 (57. Kg2
h4) (57. Rd2 b5) 57... h4 58. g4 h3 59. Kg3 h2 60. Rd1 b5 $13) (55. Rb8 Kg5
$13) 55... Rc7 (55... b5 56. cxb5 axb5 57. a5) (55... a5 56. Rb8 Kg5 (56...
Rf1 57. Rd8 Rf6 58. Rd1) 57. Rd1 Rg6 58. Kf3) 56. Rxa6 Rcf7 57. Kd2 (57.
Rxb6 Rf2 58. Rdxd6+ (58. Rbxd6+ $2 Kg5 $19) 58... Kg7 59. Rd7 Rf3+ $11)
57... Rf2+ 58. Kc3 R2f3 59. Rxb6 $18) 55. cxb5 axb5 56. a5 (56. axb5 Rc5
$13 57. Rd8 (57. Rd5 Rc3+) (57. b6 Rb5 58. Rb8 Kg7) 57... Rxb5 58. R8xd6
Rxd6 59. Rxd6+ Kg5 60. Rd3 Rb4) 56... b4 57. Rb8 Rc5 58. a6 Ra5 59. Ra8 (
59. Rb6 Kg5 60. Rdxd6 Rxd6 61. Rxd6 Ra3 62. Kd3 Rxb3+ 63. Kc4 Rxg3 64. Kxb4
Rg1 $13) 59... Kg7 60. Rd5 Ra3 61. Kd3 Rxb3+ 62. Kc4 Ra3 63. Rb5 $18) 54...
b5 $8 (54... Rf6 55. Rb8 Kg5 56. Rd3 { ($140 Ra8) } 56... Kg4 57. Rg8+ Kh3
58. g4+ Kh4 59. gxh5 Rf4 60. h6) 55. cxb5 axb5 56. a5 (56. axb5 $2 Rb6 $11
57. Ref3 Rxb5 58. Rg8+ Kh7 59. Rg5 Kh6 60. Rff5 Rxb3 61. Rxh5+ Kg7) 56...
b4 (56... Ra6 57. b4 $18) (56... Rc2+ 57. Kd3 Ra2 58. Ra8 { $140 Kc3-b4 })
57. Rd3 (57. Rb8 Ra6 58. Rb5 Re8 { $140 59... Rea8, 59...Rc8 }) 57... Rc5
$6 (57... Kg7 58. Rb8 Rc5 59. Rd5 Rc2+ 60. Rd2 Rc5 61. Ra2 Rc3 62. a6 Rxg3
63. Ra1 { $140 a7 }) (57... Ra6 58. Rd5 { $140 59.Rb8, 59. Kd3 $18 }) (
57... Rc2+ 58. Rd2 Rc3 (58... Rxd2+ 59. Kxd2 d5 60. Rb8 { $140 Rb6 $18 })
59. a6 Rc7 60. Ra2 $18) (57... Rf6 $5 58. Rxf6+ Kxf6 59. Rd1 Rc2+ (59...
Ke6 60. Ra1 Ra6 61. Kd3 d5 62. exd5+ Kxd5 63. Ke3 e4 64. Rh1 $18) 60. Rd2
Rc6 (60... Rc3 61. Rxd6+ Kg5 62. Rd3 Rc2+ 63. Kf3 Ra2 64. Rd5 Kf6 (64...
Ra3 65. Rxe5+ Kg6 66. Kf4 Rxb3 67. Rg5+ Kh6 68. Rb5 Ra3 69. e5 Kg6 70. Rb6+
Kf7 71. a6) 65. Rb5 Ra3 66. Rxb4 Rxa5 67. Kg2) 61. Ra2 Rc3 62. a6 Rxg3 63.
Ra4 Rg8 64. Rxb4 h4 65. a7 Ra8 66. Rb7 $18) 58. Ra8 (58. Rd5 $2 Rxd5 59.
exd5 Re7 60. Ra8 (60. Rb8 Ra7 61. Rb5 Kf5 62. Kd3 Kg4 63. Kc4 Kxg3 64. Kxb4
h4 65. Rb8 h3 66. Rg8+ Kf2 67. Rh8 Kg2 68. Ka4 h2 69. b4 h1=Q 70. Rxh1 Kxh1
71. b5 e4 72. b6 Re7 73. a6 e3 74. b7 e2 $19) (60. Rd8 Ra7 61. Rxd6+ Kf5
62. a6 Ke4 $11) 60... Kf5 61. Kd3 Rc7 62. a6 Rc3+ 63. Kd2 Ke4 64. Rd8 (64.
a7 Rc7 { $140 Kd5 }) 64... Rc7 65. Rxd6 Ra7 $11) (58. a6 $5 Ra5 59. Ra8 d5
$5 (59... Kg7 60. Rd5 Ra3 61. Rb5 Re7 62. Rb7 Kf6 { ($140 Ra6) } 63. Rxe7
Kxe7 64. a7 $18) (59... Kg5 60. Rd5 Ra3 61. Kd3 Rxb3+ 62. Kc4 Ra3 63. Kxb4
Ra1 64. Ra5 $18) 60. a7 Rea6 61. Rxd5 Ra2+ 62. Rd2 R2a3 63. Rd7 Kf6 64. Rb7
$16) 58... Rf6 (58... Rc2+ 59. Rd2 Rc3 60. a6 $18) (58... Kg7 59. Ra7+ (59.
a6 Rf6 60. a7 Ra5 61. Rf3 Re6 $13 62. Rff8 $2 Rxa7) 59... Kg6 (59... Kg8
60. a6 Ra5 61. Ra8+ Kg7 62. Rd5) 60. a6 Rf6 61. Rd7 Ra5 62. a7 Kg5 63. Rd5
Ra3 64. Rb5 (64. Kd3 Rf3+ $13) 64... Rf8 65. Rxb4 $18) 59. a6 Ra5 (59...
Kg7 60. Ra7+) (59... Kg5 60. Rg8+ Rg6 61. Rxg6+ Kxg6 62. Rxd6+) 60. Rf3
Ra2+ (60... Re6 61. Rff8 d5 62. a7 Rea6 63. Rg8+ Kh7 64. Rh8+ Kg7 65. Rag8+
$18) (60... Rxf3 61. Kxf3 Kg7 62. Kg2 Ra2+ 63. Kh3 Kh7 64. a7 Kg7 65. Kh4
Kg6 66. g4 $18) 61. Ke3 Rxf3+ 62. Kxf3 Kg7 63. a7 Kh7 64. Ke3 Ra3 65. Kd3
Rxb3+ 66. Kc4 Ra3 (66... Rxg3 67. Rb8 Ra3 68. a8=Q Rxa8 69. Rxa8 h4 70. Kd3
Kg6 71. Ke3 $18) 67. Kxb4 Ra1 68. Kb5 Kg7 69. Kc6 Ra2 (69... Ra6+ 70. Kb7
$18) (69... Kh7 70. Kxd6 Ra5 71. Ke6 Kg7 72. Kf5 $18) 70. Kxd6 Ra5 71. Ke6
Kh7 72. Kf6 Ra3 73. Kxe5 1-0
[Event ""]
[Site "Belfort"]
[Date "1988"]
[Round ""]
[White "Huebner, R."]
[Black "Timman, J."]
[Result "1-0"]
[WhiteElo "2595"]
[BlackElo "2675"]
[ECO "B63"]
[Opening "Sicilian"]
[Variation "Richter-Rauzer, Rauzer attack, 7...Be7"]
[Annotator "Huebner, R."]
1. e4 c5 2. Nf3 d6 3. d4 cxd4 4. Nxd4 Nf6 5. Nc3 Nc6 6. Bg5 e6 7. Qd2 Be7
8. O-O-O Nxd4 9. Qxd4 O-O 10. e5 dxe5 11. Qxe5 Qe8 12. h4 a6 $2 $146 13.
Ne4 (13. Bd3 Bd7 (13... b5 $2 14. Bxf6 Bxf6 15. Qe4 $18) 14. Ne4 (14. Rh3
Bc6 15. Rg3 Kh8 16. Ne4 Qb8 $13) 14... Nd5 15. Bxe7 Qxe7 16. Ng5 Nf6 $14)
13... Nd5 (13... Nxe4 14. Qxe4 f6 (14... Bd7 15. Qxb7 $16) (14... f5 15.
Qe5 { $140 Bc4 $16 }) 15. Bd3 Qg6 16. Qxg6 hxg6 17. Be3 Kf7 18. Be4) 14.
Bxe7 Nxe7 (14... Qxe7 $2 15. Rxd5 f6 16. Qd6 $18) 15. h5 (15. Nd6 Qa4 16.
Rh3 Nc6 { $140 e5 }) 15... Nc6 (15... f6 16. Qc5 Nc6 17. h6 g6 18. Bc4 $16)
(15... h6 $5 16. Rh3 (16. g4 Qa4 $13 (16... f6 17. Qc5 Qc6 18. Qxe7 Qxe4
19. Bd3 Qf4+ (19... Qxg4 20. Bh7+ $18) 20. Kb1 { $140 Bh7 $18 }) (16... Nc6
17. Qc5 (17. Qg3 f6 18. f4 e5 $13) 17... f6 18. f4 e5 (18... Qe7 19. Bc4)
19. Bc4+ Kh8 (19... Be6 20. Nd6 Qe7 21. Nxb7) 20. g5 $40)) 16... Nc6 (16...
f6 17. Qc5 e5 18. Bc4+ Kh8 19. Rhh1 $16) 17. Qc5 (17. Nf6+ Kh8 18. Qc3 Qe7)
17... e5 $13) 16. Qg3 Qe7 17. h6 g6 18. f4 $2 ($142 18. Bc4 b5 (18... e5
19. Bd5 $16) 19. Qc3 f5 (19... f6 20. Bb3 $18) 20. Bb3 fxe4 21. Qxc6 $16)
18... e5 19. fxe5 (19. Bc4 Be6 20. Bxe6 Qxe6 $13) 19... Qxe5 $6 (19... Nxe5
$5 20. Be2 f6 (20... Bf5 21. Nd6) 21. Rhe1 Bf5 22. Nxf6+ Qxf6 (22... Rxf6
23. Bc4+ $18) 23. Qxe5 Rac8 24. Bd3 Qxe5 (24... Qg5+ 25. Kb1 Qxh6 26. Bc4+
Rxc4 27. Qd5+ $18) 25. Rxe5 Bxd3 26. Rxd3 Rf2 27. c3 Rxg2 28. Re7 Rh2 (
28... Rf8 29. Rg7+ Kh8 30. Rf7) 29. Rg7+ Kh8 30. Rxb7 Rxh6 31. Rd6 $16) 20.
Qxe5 Nxe5 21. Nf6+ Kh8 22. Rh4 Bf5 23. Rd5 $2 ($142 23. Rhd4 Rac8 24. c3
Nc6 25. Rd6 Ne7 26. g4 Be6 27. a3 g5 (27... Ng8 28. g5) 28. Bd3 $16) 23...
Nc6 24. g4 Bxc2 $1 (24... Be6 25. Rd2 { $140 g5 $18 }) 25. Kxc2 Nb4+ 26.
Kb3 (26. Kc3 Nxd5+ 27. Nxd5 Rac8+ 28. Kb3 (28. Kd4 Rc2 29. Bc4 Rxb2 $13))
26... Nxd5 27. Nxd5 Rfe8 $6 ($142 27... Rad8 28. Nf6 (28. Bg2 Rfe8 29. Rh3
(29. Nf6 Re3+ { $140 Re2 }) (29. Nc3 Rd4) (29. g5 Re5) 29... Re2 30. Bf3 (
30. Bh1 Re1) 30... Rf2) 28... Rd4 29. Rh1 g5 30. Be2 Rf4 31. Nd5 (31. Rf1
Rd8 32. Nh5 Rxf1 33. Bxf1 Rd6) 31... Rd4 $13 32. Nf6 Rf4 $11) 28. Rh3 Rad8
$2 ($142 28... Re4 29. Rf3 (29. Rg3 g5) 29... Rxg4 30. Rxf7 Rh4 $13) 29.
Nf6 $18 Re6 30. Rf3 (30. g5 Re5 31. Rg3 b5) 30... Rdd6 (30... g5 31. Bc4
Rb6+ 32. Ka3 Rdd6 33. Nh5) 31. g5 Rb6+ ($142 31... Re5 32. Rc3 Rd8 33. Rc7
Rf8 34. Nd7 (34. Rxb7 Rxg5 35. Bxa6 Rg3+ 36. Ka4 Rh3 37. b4 Rxh6 { $140 g5
$13 }) (34. Bc4 Rxg5 35. Bxf7 Rg3+ 36. Ka4 Rh3 $13) 34... Re7 35. Rxb7 Rd8
36. Nc5 (36. Bh3 $2 Re3+) 36... Rxb7+ (36... Re5 37. Nxa6) 37. Nxb7 Rd5 38.
Bxa6 Rxg5 39. a4) 32. Ka4 (32. Ka3 $2 Re5) 32... Rbd6 33. Bh3 Rd4+ (33...
Re5 34. Rc3 Rd8 35. Rc7 Rf8 36. Nd7 Re7 37. Rxb7 $18) 34. b4 Rb6 35. a3 Rb5
36. Re3 Rd8 37. Re7 Rf8 38. Nd7 1-0
[Event ""]
[Site "Wijk aan Zee"]
[Date "1988"]
[Round ""]
[White "Huebner, R."]
[Black "Piket, Je"]
[Result "1-0"]
[WhiteElo "2595"]
[BlackElo "2470"]
[ECO "B63"]
[Opening "Sicilian"]
[Variation "Richter-Rauzer, Rauzer attack, 7...Be7"]
[Annotator "Huebner, R."]
1. e4 c5 2. Nf3 d6 3. d4 cxd4 4. Nxd4 Nf6 5. Nc3 Nc6 6. Bg5 e6 7. Qd2 Be7
8. O-O-O O-O 9. Nb3 Qb6 10. f3 Rd8 11. Be3 Qc7 12. Qf2 d5 13. exd5 Nxd5 14.
Nxd5 Rxd5 15. Rxd5 exd5 16. Bb5 $146 (16. g4 Ne5 17. Kb1 Nc4 { $140 a5
$147f4 }) 16... Bf5 (16... Ne5 17. Rd1) (16... Na5 17. Bd3 Nxb3+ (17... Nc4
18. Bd4 { $140 Qg3 $16 }) 18. axb3 a5 19. Qg3 Bd6 20. Qh4 $14) 17. Bxc6 bxc6
18. Bc5 $1 (18. g3 a5 (18... c5 { (Piket, J) } 19. Bxc5 (19. Nxc5 Rc8 20.
b4 a5 $36) 19... Rc8 20. Bxe7 Bxc2 21. Nc5 Qxe7 22. Kxc2 Rxc5+ 23. Kb1 $14)
19. Nc5 (19. Bb6 Qb7 20. Bxa5 (20. Nxa5 Qa6 { ($140 c5) }) 20... c5) 19... a4
20. a3 Qa5 { $140 Rb8, Qb5 $15 }) (18. g4 Bg6 19. h4 h6 (19... h5 20. Rg1
hxg4 21. Rxg4 $36) 20. h5 Bh7 21. Re1 Bd6 { $147f4 } 22. f4 Be4) 18...
Bxc5 19. Qxc5 Re8 (19... Qf4+ 20. Kb1 Re8 21. Qd4 (21. Qxa7 Qc4 22. Rc1 (
22. Nd4 Bg6 23. Rc1 (23. Qd7 Ra8) 23... h5 { $140 c5, Re2 $17 }) 22... h5
23. g3 (23. Qd4 Bxc2+) 23... Bg6 { $140 Re2 $17 }) (21. Qxc6 Rc8 22. Re1
Qb8 23. Qxd5 Bxc2+ 24. Ka1 Qxh2 $15) 21... Qxd4 (21... Qg5 22. g4 Bc8 23.
Qc3 $16) (21... Qd6 22. Qxa7 $16) (21... Qc7 22. Qc3 { $140 g3 $14 }) 22.
Nxd4 Bd7 23. Rd1 $14) 20. g3 Qb6 (20... Qe5 21. a4 (21. Qxa7 Qe2 22. Qc5
Qxf3 23. Rd1 Re2 $19) (21. Rd1 Qe2 22. Qc3 (22. Nd4 Qe3+ 23. Kb1 Qd2 24.
Rc1 Re1 25. Nb3 Rxc1+ 26. Nxc1 Qxh2 27. Qxc6 h5 $17) 22... Qxh2 23. Nd4 Bd7
24. f4 Qh6 $17) (21. Qc3 Qxc3 22. bxc3 Kf8 $11) 21... g6 (21... Qe2 22. Nd4
Qf2 (22... Qe3+ 23. Kb1 { $140 Qa7 $16 }) (22... Qg2 23. Rd1 { $140 Nf5 })
23. b4 (23. Kb1 Bxc2+ 24. Qxc2 Qxd4 25. Qxc6 Rb8 $17) (23. Rd1 Re1 24. Qc3
Rxd1+ 25. Kxd1 Qg1+ 26. Ke2 Qxh2+ 27. Ke3 Qxg3 28. Nxf5 Qg5+ $17) 23...
Qe3+ 24. Kb2 Rb8 25. Rd1 $16) (21... Qe3+ 22. Qxe3 Rxe3 23. Nd4 Bd7 24. Kd2
Re8 25. b4 $16) 22. Nd4 Qe3+ 23. Kb1 Qf2 24. Rc1 Re1 25. Rxe1 Qxe1+ 26. Ka2
$16) 21. Kd2 h5 $6 (21... Qa6 22. Nd4 Bd7 23. a3 Qb6 24. b4 Qxc5 25. bxc5
Rb8 26. Re1 Kf8 27. Re3 { $140 28.Rb3 Rb3 29.cb3 $16 }) ($142 21... Bg6 22.
a4 (22. a3 h5 23. Qxb6 axb6 24. Nd4 c5 25. Nb5 d4 26. c3 Re3 $17) 22... Qa6
23. Nd4 Qxa4 24. b3 Qa6 25. Re1 Rxe1 26. Kxe1 h5 27. Nxc6 Qa1+ 28. Kd2 Qf1
$13) 22. a4 g6 (22... Qb8 23. Nd4 (23. Re1 Rxe1 24. Kxe1 Qe5+ 25. Kd2 Qxb2
26. Nd4 Bd7 27. Qxa7 Qb4+ $11) 23... Bd7 (23... Qe5 24. Kc1 $16) 24. b4 (
24. Kc1 Qb6) 24... h4 25. f4 hxg3 26. hxg3 Re4 (26... g5 27. Qc3) 27. Re1
$16) 23. Qxb6 (23. a5 Qb8 24. Nd4 (24. f4 Re4 { $140 Rc4 }) (24. Re1 Rxe1
25. Kxe1 Qe5+ 26. Kd2 Qxb2 $11) 24... Qxb2 25. Nxf5 gxf5 $11) 23... axb6
24. a5 bxa5 25. Ra1 Rb8 { $147b2 } (25... Bxc2 26. Kxc2 Re2+ 27. Kc3 Rxh2
28. Rxa5 Rg2 29. Nd4 Rxg3 30. b4 h4 31. Nxc6 h3 32. Ra1 Rxf3+ 33. Kd4 Rb3
34. Kc5 g5 35. b5 g4 36. b6 g3 37. Nb4 Rc3+ 38. Kb5 Rc8 39. b7 { $140 Ra8
$18 }) (25... h4 26. Rxa5 (26. Nxa5 c5 27. Nb3 hxg3 28. hxg3 Rb8 29. g4 Be6
30. Nxc5 Rxb2 31. Nxe6 fxe6 32. Ra7 Kf8 $11) 26... Bxc2 27. Kxc2 Re2+ 28.
Nd2 h3 29. b4 Rxh2 30. Ra1 Rg2 31. g4 Kf8 32. Rh1 h2 33. Kc3 Ke7 34. Nb3
Kd6 35. Nc5 { $140 Nd3 $16 }) (25... Kf8 $5 26. Rxa5 Ke7 27. Ra7+ Kd6 28.
Rxf7 c5 { $140 d4 $13 }) 26. Rxa5 Rb4 $2 (26... h4 27. Kc3 Kg7 (27... Kf8
28. Nd4 Bd7 29. Ra7 c5 30. Rxd7 cxd4+ 31. Kxd4 Rxb2 32. Rc7 $16) 28. Nd4
hxg3 29. hxg3 Bd7 30. Ra7 $16) ($142 26... Kf8 27. Kc3 (27. Ra7 Ke8 (27...
c5 28. Ra5 c4 (28... d4 29. Rxc5 d3 30. Nd4 $18) 29. Nd4 Rxb2 30. Rxd5 $16)
28. Rc7 Rb6 29. Kc3 Bh3 30. Nc5 (30. Nd4 Bd7 { $140 Ke7-d6 }) 30... Bg2 31.
f4 d4+ $11) (27. Ra6 Bd7 28. Nc5 Be8 29. Kc3 Ke7 { $140 Kd6 $14 }) 27...
Ke8 (27... Ke7 28. Ra7+ Kd6 29. Rxf7 c5 30. Rf6+ Ke5 31. Rc6 $18) 28. Nd4 (
28. Nc5 d4+ $11) (28. Ra7 c5 29. Nxc5 (29. Rc7 d4+ 30. Kd2 d3) 29... d4+
30. Kxd4 Rxb2 $11) 28... Bd7 29. h4 Ke7 { $140 Kd6 $14 }) 27. Rc5 Bd7 28.
Kc3 Ra4 $6 (28... Rb8 29. Ra5 Kf8 30. Ra7 Be8 (30... Ke8 31. Nc5 Bf5 32. b4
d4+ 33. Kb3 $16) 31. h4 $16) 29. Na5 $18 d4+ (29... Ra1 30. Nxc6 Rh1 31. b4
Rxh2 32. b5 Rh1 33. Rxd5) 30. Kd3 (30. Kb3 $2 Ra1 31. Nxc6 d3 32. cxd3 Rh1
$11) (30. Kd2 Ra1 31. Nxc6 Bxc6 32. Rxc6 Rh1 33. h4 $18) 30... Ra1 (30...
Bf5+ 31. Kd2 Ra2 32. Nxc6 Rxb2 33. Ne7+ $18) 31. Nxc6 Rd1+ 32. Ke2 Rh1 33.
Nxd4 Rxh2+ 34. Ke3 Rh3 35. Ne2 h4 36. gxh4 Rxh4 37. c4 f5 38. Nd4 Kf7 39.
Rc7 Ke8 40. c5 Rh2 (40... Kd8 41. Ra7 Rh2 42. b4 Rb2 43. c6 Bc8 44. b5 {
$140 45.Rg7, 45.Kd3 }) 41. c6 1-0
[Event ""]
[Site "Wijk aan Zee"]
[Date "1988"]
[Round ""]
[White "Ljubojevic, Lj"]
[Black "Huebner, R."]
[Result "1/2-1/2"]
[WhiteElo "2610"]
[BlackElo "2595"]
[ECO "C07"]
[Opening "French"]
[Variation "Tarrasch, open variation"]
[Annotator "Huebner, R."]
1. e4 e6 2. d4 d5 3. Nd2 c5 4. Ngf3 cxd4 5. exd5 Qxd5 6. Bc4 Qd6 7. O-O Nf6
8. Nb3 Nc6 9. Nbxd4 Nxd4 10. Nxd4 a6 11. a4 { $140 Ra3 } 11... Qc7 12. Qe2
Bd6 13. h3 O-O 14. Rd1 $146 (14. Bg5 b6 (14... Bh2+ 15. Kh1 Bf4 16. Bxf4 (
16. Bxf6 gxf6 $15) 16... Qxf4 17. Rfd1 $14 b6 $6 18. Qf3 Qxf3 19. Nxf3 {
$140 Rd6 }) 15. Rad1 (15. Rfd1 { - 14.Rd1 }) 15... Bh2+ 16. Kh1 Bf4 17.
Bxf4 (17. Qf3 $2 Bxg5 18. Qxa8 Qxc4 (18... Bb7 $2 19. Nxe6 $18)) 17... Qxf4
18. Qf3 Qxf3 19. Nxf3 Bd7 20. b3 b5 $11) 14... b6 15. Bg5 Bh2+ (15... Bb7
16. Bxf6 gxf6 17. Nxe6 Bh2+ 18. Kh1 fxe6 19. Qxe6+ Kh8 20. Rd7 Qc6 (20...
Bc8 21. Rxc7 Bxe6 22. Kxh2 $18) 21. Rxb7 Qxb7 22. Kxh2 (22. Bd5 Qc8) 22...
Rae8 (22... Qc7+ 23. Kg1 Rae8 24. Qg4 $16) 23. Qd6 $16) 16. Kh1 (16. Kf1
Bf4 (16... Be5 17. Ra3 Bb7 18. Re3 Bf4 19. Bxf4 Qxf4 20. Kg1 Rfd8 21. c3
$11 { - 16.Kh1 }) 17. Bxf4 Qxf4 18. Qf3 Qc7 19. Qxa8 Bb7 20. Qxf8+ (20.
Nxe6 Qxc4+ $19) 20... Kxf8 21. b3 Qh2 22. f3 Nh5 23. Ne2 Ke7 $13) 16... Be5
(16... Bb7 17. Bxf6 gxf6 18. Nxe6) (16... Bf4 17. Bxf4 Qxf4 18. Qf3) 17.
Ra3 Bb7 18. Re3 (18. Rc3 $2 Ne4) (18. Bxe6 $2 Bxd4) 18... Bf4 19. Bxf4 (19.
Nxe6 fxe6 20. Rxe6 Kh8 21. Bxf6 (21. Re7 Qc6 $19) 21... Rxf6 (21... gxf6
22. Re7 Qc6 23. Bd5 $13) 22. Re7 Qc6 23. Bd5 Qxd5 24. Rxd5 Bxd5 $17) 19...
Qxf4 20. c3 (20. Bxe6 Rad8 (20... fxe6 21. Nxe6 Qxa4 22. Nxf8 Rxf8 23. Re7
Qc6 24. Qe6+ $13) 21. Red3 (21. c3 fxe6 22. Nxe6 Rxd1+ 23. Qxd1 Qxf2 $19)
21... Rde8 (21... Qe4 22. Qxe4 Nxe4 23. Kg1 fxe6 24. Nxe6 Rxd3 25. cxd3 Rf6
$17) 22. Re3 fxe6 23. Nxe6 Rxe6 24. Rxe6 Ne4 $19) (20. Rxe6 Ne4 $1 21. Rf1
(21. Kg1 Nxf2 22. Rd2 Nxh3+ 23. gxh3 Qg3+ $19) 21... fxe6 22. Nxe6 Ng3+ (
22... Qh6 23. Nxf8+ Kxf8 $17) 23. fxg3 Qxf1+ 24. Qxf1 Rxf1+ 25. Bxf1 Rc8
$17) 20... Rfd8 21. Kg1 a5 { $140 Bd5 $147e6 } 22. Re1 (22. Red3 $5 Qe4
23. Qxe4 (23. Qf1 Nd5 { $140 Nf4 }) 23... Bxe4 24. R3d2 g5 $13) 22... Bd5 (
22... g6 $2 23. Rxe6 fxe6 24. Nxe6 $18) 23. Re5 Rac8 (23... g6 $6 24. g3
Qh6 25. Bxd5 Nxd5 (25... Rxd5 26. Rxe6 $18) 26. h4 $16) 24. Ba6 (24. Bxd5
Nxd5 $11) (24. Bb5 g6 25. g3 Qh6 26. h4 Qf8 $13 { $150 a8-h1 }) 24... Rc5
25. Bb5 (25. Qd3 $2 Bc4 26. Nxe6 Bxd3 27. Nxf4 Bxa6 $19) (25. g3 Qh6 26. h4
Nd7 { $140 Qf6 $13 }) 25... g6 26. Qd3 $6 (26. g3 Qh6 27. h4 Qf8 $13) 26...
Rdc8 (26... Bxg2 $2 27. Nxe6 $18) (26... Bc4 $2 27. Nxe6 $18) (26... Rcc8
27. R1e3 $16) 27. R1e3 Bb7 (27... Bc4 $2 28. Rxc5 $18) (27... Bxg2 $2 28.
Rxc5 bxc5 29. Ne2 Qg5 30. Rg3 $18) 28. Ne2 Qh4 (28... Qxe5 $2 29. Rxe5 Rxe5
30. Qd4 Rcc5 31. Qd8+ Kg7 32. Qxb6 $18) 29. Rxc5 (29. Qd6 $2 Nd5 30. Rd3
Rd8 $19) 29... bxc5 30. Re5 (30. Ba6 $2 c4 31. Qd6 Ne4 $19) (30. Qd6 Ne4
31. Qf4 Qxf4 32. Nxf4 c4 { $140 33...Nd6, 33...Rc5 $17 }) (30. Ng3 Qf4)
30... Nd5 (30... Ne4 $2 31. g3 $16) 31. Qd2 (31. c4 Qf6 32. Qg3 Nb4 $17)
31... Rd8 32. Qg5 (32. Rg5 { ($140 c4 Ljubojevic, Lj) } 32... Kg7 (32... h6
$2 33. Rg4 $16) 33. Ng3 (33. c4 Nf6 34. Qxd8 (34. Rxg6+ hxg6 35. Qxd8 Qe4
$19) 34... Qxg5 35. Ng3 h5 36. Qc7 (36. Qxa5 $2 h4 37. Qc7 hxg3 38. Qxb7
Qc1#) 36... h4 37. Qxb7 hxg3 38. fxg3 Qxg3 39. Bc6 Nh5 { $140 Nf4 $17
}) 33... f5 { ($140 Kf6 Karpov, An) } 34. c4 Kf6 (34... h6 $5) 35. Rh5 (35.
Qxa5 Ra8 $19) (35. cxd5 Qxg5 (35... Rxd5 36. Rh5 $13) 36. Qc3+ e5 37. Qxa5
Kf7 $17) 35... gxh5 36. Qh6+ Ke5 37. Qg7+ Qf6 38. Qxb7 Qe7 { $140 39...Nb4,
39...Nf4 $17 }) 32... Qxg5 33. Rxg5 f5 $2 $138 (33... f6 34. Rg3 Nb6 35.
Nf4 Rd1+ 36. Kh2 e5 37. Rd3 Rxd3 38. Nxd3 c4 39. Nc5 Bd5 40. f3 f5 41. Kg3
Kf7 42. Nd7 (42. Kf2 Ke7 $19) 42... Nxd7 43. Bxd7 Ke7 44. Bb5 Kd6 { $140
Kc5, Bc6 $17 }) 34. Rg3 Nb6 35. Re3 $2 $138 (35. Nf4 Rd1+ 36. Kh2 Bd5 (
36... e5 37. Rd3 $16) 37. Rd3 Rb1 38. Rd2 $14) 35... Kf7 (35... Kf7 36. Nf4
Rd1+ 37. Kh2 Nd5 38. Nxd5 (38. Rd3 Rb1 39. Nxd5 exd5 40. Rd2 f4 41. Be2 Ke6
42. Bf3 c4 43. g3 fxg3+ 44. Kxg3 Ra1 45. Bd1 Bc6 46. Kf4 h6 $17) 38... Bxd5
(38... exd5 39. Re8 d4 40. Rh8 Ke6 41. Rxh7 Bd5 42. Rc7 $13) 39. Rd3 Rxd3 (
39... Rb1 40. c4 Be4 41. Rd7+ { $140 f3 }) 40. Bxd3 $11) 1/2-1/2

View File

@ -0,0 +1,56 @@
<!DOCTYPE HTML>
<html>
<!--
pgn4web javascript chessboard
copyright (C) 2009-2013 Paolo Casaschi
see README file and http://pgn4web.casaschi.net
for credits, license and more details
-->
<head>
<title>Chess Informant symbols</title>
<link href="template.css" type="text/css" rel="stylesheet" />
<link rel="shortcut icon" href="pawn.ico" />
<script src="pgn4web.js" type="text/javascript"></script>
<script type="text/javascript">
"use strict";
var NAG_text = new Array();
for (var ii = 0; ii < NAG.length; ii++) {
if (!NAG[ii]) { continue; }
NAG_text[ii] = NAG[ii];
}
</script>
<script src="fonts/chess-informant-NAG-symbols.js" type="text/javascript"></script>
<script type="text/javascript">
if (location.search == "?alternative") { document.write('<script src="chess-informant-NAG-symbols-alternative.js" type="text/javascript"><\/script>'); }
</script>
</head>
<body>
<script type="text/javascript">
"use strict";
document.write("<table cellpadding='5'>");
var ix = Math.max(NAG.length, NAG_text.length);
for (var ii = 0; ii < ix; ii++) {
if ((!NAG[ii]) && (!NAG_text[ii])) { continue; }
document.write("<tr><td>$" + ii + "</td><td>" + (NAG[ii] ? NAG[ii] : "") + "</td><td>" + (NAG_text[ii] ? NAG_text[ii] : "") + "</td></tr>");
}
document.write("</table>");
</script>
</body>
</html>

View File

@ -0,0 +1,107 @@
<!DOCTYPE HTML>
<html>
<!--
pgn4web javascript chessboard
copyright (C) 2009-2013 Paolo Casaschi
see README file and http://pgn4web.casaschi.net
for credits, license and more details
-->
<head>
<title>pgn4web template</title>
<link href="template.css" type="text/css" rel="stylesheet" />
<link rel="shortcut icon" href="pawn.ico" />
<script src="pgn4web.js" type="text/javascript"></script>
<script src="fonts/chess-informant-NAG-symbols.js" type="text/javascript"></script>
<script src="engine.js" type="text/javascript"></script>
<script type="text/javascript">
if (location.search == "?alternative") { document.write('<script src="chess-informant-NAG-symbols-alternative.js" type="text/javascript"><\/script>'); }
</script>
<script type="text/javascript">
"use strict";
SetPgnUrl("chess-informant-sample.pgn"); // if set, this has precedence over the inline PGN in the HTML file
// SetImagePath("images");
// SetImageType("png");
// SetHighlightOption(true); // true or false
// SetGameSelectorOptions(null, false, 0, 0, 0, 15, 15, 0, 10); // (head, num, chEvent, chSite, chRound, chWhite, chBlack, chResult, chDate);
SetCommentsIntoMoveText(true);
SetCommentsOnSeparateLines(false);
// SetAutoplayDelay(1000); // milliseconds
// SetAutostartAutoplay(false);
// SetAutoplayNextGame(false); // if set, move to the next game at the end of the current game during autoplay
SetInitialGame(3); // number of game to be shown at load, from 1 (default); values (keep the quotes) of "first", "last", "random" are accepted; other string values assumed as PGN search string
SetInitialVariation(3); // halfmove number to be shown at load, 0 (default) for main variation
SetInitialHalfmove(32,false); // halfmove number to be shown at load, 0 (default) for start position; values (keep the quotes) of "start", "end", "random", "comment" (go to first comment or variation), "variation" (go to the first variation) are also accepted. Second parameter if true applies the setting to every selected game instead of startup only
SetShortcutKeysEnabled(true);
// SetLiveBroadcast(1, false, false, false); // set live broadcast; parameters are delay (refresh delay in minutes, 0 means no broadcast, default 0) alertFlag (if true, displays debug error messages, default false) demoFlag (if true starts broadcast demo mode, default false) stepFlag (if true, autoplays updates in steps, default false)
</script>
</head>
<body>
<!-- paste your PGN below and make sure you dont specify an external source with SetPgnUrl() -->
<form style="display: none;"><textarea style="display: none;" id="pgnText">
</textarea></form>
<!-- paste your PGN above and make sure you dont specify an external source with SetPgnUrl() -->
<h1 style="margin-top:0px; padding-top:0px;">Chess Informant symbols example</h1>
<table cellpadding=0 cellspacing=0 border=0>
<tr valign=top>
<td width=380>
<div id="GameSelector"></div>
<div id="GameSearch"></div>
<p></p>
<div id="GameBoard"></div>
<p></p>
<div id="GameButtons"></div>
</td>
<td>
<span class="label">Event:</span> <span id="GameEvent"></span>
<br>
<span class="label">Site:</span> <span id="GameSite"></span>
<br>
<span class="label">Round:</span> <span id="GameRound"></span>
<br>
<span class="label">Date:</span> <span id="GameDate"></span>
<p></p>
<span class="label">White:</span> <span id="GameWhite"></span>
<br>
<span class="label">Black:</span> <span id="GameBlack"></span>
<br>
<span class="label">Result:</span> <span id="GameResult"></span>
<p>
<span class="label">Side to move:</span> <span id="GameSideToMove"></span>
<br>
<span class="label">Last move:</span> <span id="GameLastMove"></span>&nbsp; <span class="label">variations:</span> <span id="GameLastVariations"></span>
<br>
<span class="label">Next move:</span> <span id="GameNextMove"></span>&nbsp; <span class="label">variations:</span> <span id="GameNextVariations"></span>
<p></p>
<span class="label">Move comment:</span><br><span id="GameLastComment"></span>
</td>
</tr>
</table>
<p></p>
<hr>
<div style="text-align: justify;" id="GameText"></div>
</body>
</html>

139
_assets/vendor/pgn4web/chess960wch06.css vendored Normal file
View File

@ -0,0 +1,139 @@
/*
* pgn4web javascript chessboard
* copyright (C) 2009-2013 Paolo Casaschi
* see README file and http://pgn4web.casaschi.net
* for credits, license and more details
*/
html,
body {
margin: 0px;
padding: 0px;
}
body {
padding: 10px;
font-family: sans-serif;
font-size: 16px;
color: black;
background: white;
}
a {
text-decoration: none;
color: black;
}
ul {
margin-bottom: 0px;
}
.boardTable {
border-color: #C4B9A0;
border-width: 2px;
border-style: outset;
}
.pieceImage {
width: 32px;
height: 32px;
}
.whiteSquare,
.blackSquare,
.highlightWhiteSquare,
.highlightBlackSquare {
width: 42px;
height: 42px;
border-style: solid;
border-width: 1px;
}
.whiteSquare,
.highlightWhiteSquare {
border-color: #EFE6D0;
background: #EFE6D0;
}
.blackSquare,
.highlightBlackSquare {
border-color: #C4B9A0;
background: #C4B9A0;
}
.highlightWhiteSquare,
.highlightBlackSquare {
border-style: inset;
}
.selectControl {
/* a "width" attribute here must use the !important flag to override default settings */
}
.optionSelectControl {
}
.buttonControlPlay,
.buttonControlStop,
.buttonControl {
/* a "width" attribute here must use the !important flag to override default settings */
}
.buttonControlSpace {
/* a "width" attribute here must use the !important flag to override default settings */
}
.searchPgnButton {
/* a "width" attribute here must use the !important flag to override default settings */
}
.searchPgnExpression {
/* a "width" attribute here must use the !important flag to override default settings */
}
.move,
.variation,
.comment {
color: black;
font-family: sans-serif;
line-height: 1.3em;
font-weight: normal;
text-decoration: none;
}
.comment,
.variation {
color: gray;
}
a.move,
a.variation,
.commentMove {
white-space: nowrap;
}
a.variation {
color: gray;
}
.moveOn,
.variationOn {
background: #EFE6D0;
}
.label {
color: black;
font-weight: bold;
font-size: 16px;
}
.gameFEN {
font-size: 13px;
text-align: left;
}
.gameText {
font-size: 13px;
text-align: justify;
}

View File

@ -0,0 +1,161 @@
<!DOCTYPE HTML>
<html>
<!--
pgn4web javascript chessboard
copyright (C) 2009-2013 Paolo Casaschi
see README file and http://pgn4web.casaschi.net
for credits, license and more details
-->
<head>
<title>Chess960 World Championship 2006</title>
<link href="chess960wch06.css" type="text/css" rel="stylesheet" />
<link rel="shortcut icon" href="pawn.ico" />
<script src="pgn4web.js" type="text/javascript"></script>
<script type="text/javascript">
"use strict";
SetPgnUrl("chess960wch06.pgn");
SetImagePath("images/uscf/32");
SetImageType("png");
SetHighlightOption(true);
SetGameSelectorOptions(null, false, 0, 0, 1, 7, 7, 3, 0); // (head, num, chEvent, chSite, chRound, chWhite, chBlack, chResult, chDate);
SetCommentsIntoMoveText(true);
SetCommentsOnSeparateLines(true);
SetAutoplayDelay(2500); // milliseconds
SetAutostartAutoplay(false);
SetAutoplayNextGame(false);
SetInitialVariation(0);
SetInitialGame("first");
SetInitialHalfmove(2, true);
SetShortcutKeysEnabled(true);
function customFunctionOnPgnGameLoad() {
var theObj;
if (theObj = document.getElementById('GameFEN'))
{ if (gameFEN[currentGame]) { theObj.innerHTML = gameFEN[currentGame].match(/\s*\S*/); } }
if (theObj = document.getElementById('GameWhite'))
{ theObj.innerHTML = theObj.innerHTML.match(/\s*[^,]*/); }
if (theObj = document.getElementById('GameBlack'))
{ theObj.innerHTML = theObj.innerHTML.match(/\s*[^,]*/); }
}
</script>
</head>
<body>
<!-- paste your PGN below and make sure you dont specify an external source with SetPgnUrl() -->
<form style="display: none;"><textarea style="display: none;" id="pgnText">
</textarea></form>
<!-- paste your PGN above and make sure you dont specify an external source with SetPgnUrl() -->
<table width="100%" cellspacing="0" cellpadding="0" border="0">
<tr valign=top>
<td width="356" align="left">
<div id="GameHeader">
<div class="label" style="text-align: center;">
Mainz GER, 2006
<br/>
Chess960 rapid WCh
<div>&nbsp;</div>
</div>
<table width="100%"><tr><td align="left" width="15%">
<div class="label">#<span id="GameRound"></span></div>
</td><td align="center" width="70%">
<div class="label">
<span id="GameWhite"></span>
&nbsp;-&nbsp;
<span id="GameBlack"></span>
</div>
</td><td align="right" width="15%">
<div class="label"><span id="GameResult"></span></div>
</td></tr></table>
<div>&nbsp;</div>
</div>
<div id="GameBoard"></div>
<div>&nbsp;</div>
<div id="GameButtons"></div>
<div>&nbsp;</div>
<div id="GameSelector"></div>
<div>&nbsp;</div>
<div class="gameFEN" id="GameFEN"></div>
<div>&nbsp;</div>
<div class="gameText" id="GameText"></div>
</td>
<td align="left">
<div id="TextHeader" style="text-align: justify; margin-left: 40px; margin-right: 5px;">
These are the games for the <a target="_blank" href="http://en.wikipedia.org/wiki/Chess960">Chess960</a> rapid World Championship 2006 in Mainz (Germany) between Levon Aronian (Armenia) and Peter Svidler (Russia). Aronian won the match 5-3, with no draws!
<div>&nbsp;</div>
<div>&nbsp;</div>
</div>
<div style="text-align: justify; margin-left: 40px; margin-right: 5px;">
<script type="text/javascript">
document.write('This page shows pgn4web support for <a target="_blank" href="http://en.wikipedia.org/wiki/Chess960"><b>Chess960</b></a>, a.k.a. <b>Fischer random chess</b>.');
</script>
This chess variant uses the same board and pieces as standard chess, with extended options for the starting position and castling rules adapted accordingly.
<div>&nbsp;</div>
Starting position:
<ul style="margin-top:0px; list-style-type:square;">
<li>pawns start in the same position as in standard chess</li>
<li>White pieces are placed randomly on the first rank
<ul style="list-style-type:square;">
<li>the King must be placed somewhere between the Rooks</li>
<li>the Bishops must be on opposite color squares</li>
</ul></li>
<li>Black pieces are placed equal and opposite to the White pieces</li>
</ul>
<div>&nbsp;</div>
Castling rules:
<ul style="margin-top:0px; list-style-type:square;">
<li>castling is allowed under the following conditions
<ul style="list-style-type:square;">
<li>the King and the castling Rook must not have moved before</li>
<li>no square between the King's initial and final squares may be under attack by any opposing piece</li>
<li>all the squares between the King's initial and final squares and all the squares between the Rook's initial and final squares must be vacant except for the King and the castling Rook</li>
</ul></li>
<li>after castling, the Rook and King's final positions are exactly the same as they would be in standard chess</li>
</ul>
<div>&nbsp;</div>
Games notation:
<ul style="margin-top:0px; list-style-type:square;">
<li>games are recorded using the <a target="_blank" href="http://en.wikipedia.org/wiki/Portable_Game_Notation">PGN notation</a>, with an extension to the <a target="_blank" href="http://en.wikipedia.org/wiki/Forsyth-Edwards_Notation">FEN notation</a> in order to support castling information</li>
<li>two very similar <a target="_blank" href="http://en.wikipedia.org/wiki/Forsyth-Edwards_Notation">FEN</a> extensions have been proposed: <a target="_blank" href="http://en.wikipedia.org/wiki/X-FEN">X-FEN</a> and Shredder-FEN</li>
<script type="text/javascript">
document.write(' <li>pgn4web understands both extensions and generates <a target="_blank" href="http://en.wikipedia.org/wiki/X-FEN">X-FEN</a> strings when clicking the B8 square (assuming White on bottom, G1 otherwise)</li>');
</script>
</ul>
</div>
</td>
</tr>
</table>
<div>&nbsp;</div>
<script type="text/javascript">
"use strict";
var gameHeaderObj = document.getElementById("GameHeader");
var textHeaderObj = document.getElementById("TextHeader");
if (gameHeaderObj && gameHeaderObj.offsetHeight && textHeaderObj) {
textHeaderObj.style.minHeight = gameHeaderObj.offsetHeight + "px";
}
</script>
</body>
</html>

144
_assets/vendor/pgn4web/chess960wch06.pgn vendored Normal file
View File

@ -0,0 +1,144 @@
[Event "Chess960 rapid WCh"]
[Site "Mainz GER"]
[Date "2006"]
[Round "1"]
[White "Aronian, Levon"]
[Black "Svidler, Peter"]
[Result "1-0"]
[Variant "Chess960"]
[SetUp "1"]
[FEN "nbbrnkrq/pppppppp/8/8/8/8/PPPPPPPP/NBBRNKRQ w KQkq - 0 1"]
1. c4 c5 2. d4 cxd4 3. Rxd4 Be5 4. Rd1 O-O 5. Nf3 Bf6 6. Nc2 g6 7. b3
Nac7 8. Ne3 Bb2 9. O-O Bxc1 10. Rxc1 Nf6 11. h3 b6 12. Qh2 d6 13. Qg3 Qg7 14.
Qh4 Bb7 15. Rfd1 Rc8 16. Nd4 Rfd8 17. Rc3 e6 18. Nef5 exf5 19. Nxf5 g5 20. Qg3
Nh5 21. Qe3 Qf6 22. Ne7+ Kf8 23. Nxc8 Rxc8 24. Qd2 Nf4 25. Rg3 Rd8 26. Bxh7
Nce6 27. e3 Nh5 28. Rg4 Qh6 29. Bf5 Neg7 30. Qc2 Qf6 31. Be4 Bc8 32. Bf3 Qe5
33. Re4 Bf5 34. Rxe5 Bxc2 35. Rd2 Bg6 36. Bxh5 Nxh5 37. Rxg5 Nf6 38. f3 Ke7 39.
e4 Nh7 40. Rgd5 f6 41. f4 1-0
[Event "Chess960 rapid WCh"]
[Site "Mainz GER"]
[Date "2006"]
[Round "2"]
[White "Svidler, Peter"]
[Black "Aronian, Levon"]
[Result "0-1"]
[Variant "Chess960"]
[SetUp "1"]
[FEN "bqnrkbrn/pppppppp/8/8/8/8/PPPPPPPP/BQNRKBRN w KQkq - 0 1"]
1. c4 Ng6 2. e3 e6 3. f4 b6 4. b3 d5 5. cxd5 Bxd5 6. Ng3 Nd6 7. Bd3
Qa8 8. e4 Bc6 9. Nce2 Nb5 10. Qc2 Bc5 11. Bxb5 Bxb5 12. d4 Bb4+ 13. Kf2 O-O 14.
f5 exf5 15. Nxf5 Ne7 16. Neg3 Nxf5 17. Nxf5 Bd7 18. g4 Rde8 19. Kf3 f6 20. d5
Rf7 21. h4 Bf8 22. h5 c6 23. d6 c5 24. Rge1 g6 25. hxg6 hxg6 26. Nh4 f5 27.
gxf5 gxf5 28. Rg1+ Kh7 29. Ng6 Bh6 30. Ne5 Rxe5 31. Bxe5 fxe4+ 32. Ke2 Rf5 33.
Qc4 Qe8 34. Bg3 Bb5 35. d7 Bxc4+ 36. bxc4 Qh5+ 37. Ke1 Qf3 0-1
[Event "Chess960 rapid WCh"]
[Site "Mainz GER"]
[Date "2006"]
[Round "3"]
[White "Svidler, Peter"]
[Black "Aronian, Levon"]
[Result "1-0"]
[Variant "Chess960"]
[SetUp "1"]
[FEN "bnrkrbnq/pppppppp/8/8/8/8/PPPPPPPP/BNRKRBNQ w KQkq - 0 1"]
1. b3 b6 2. e4 e5 3. Nf3 f6 4. Bc4 Bc5 5. Qf1 Ne7 6. O-O-O Nbc6 7. Ba6
Rb8 8. Bc4 Qf8 9. Nc3 Nd4 10. Nxd4 Bxd4 11. Kb1 Nc8 12. f4 Nd6 13. Bd3 b5 14.
Nxb5 Nxb5 15. Bxb5 Bxa1 16. Kxa1 exf4 17. Qd3 Qd6 18. Qxd6 cxd6 19. Bd3 f5 20.
exf5 Bxg2 21. Rg1 f3 22. Bf1 O-O 23. Bxg2 fxg2 24. Rxg2 Rxf5 25. Rg4 Kf7 26.
Kb2 g5 27. Rd4 Rb6 28. h4 h6 29. hxg5 hxg5 30. Rh1 Kg7 31. c4 d5 32. c5 Rc6 33.
b4 d6 34. cxd6 Rxd6 35. a4 a6 36. Kc3 Rb6 37. b5 axb5 38. a5 Rc6+ 39. Kb4 Rc4+
40. Rxc4 bxc4 41. a6 Rf8 42. Kc5 Kg6 43. a7 g4 44. Kxd5 Ra8 45. Ra1 g3 46. Kc6
Kf5 47. Kb7 Rxa7+ 48. Rxa7 Ke4 49. Ra3 Kf4 50. Rc3 1-0
[Event "Chess960 rapid WCh"]
[Site "Mainz GER"]
[Date "2006"]
[Round "4"]
[White "Aronian, Levon"]
[Black "Svidler, Peter"]
[Result "0-1"]
[Variant "Chess960"]
[SetUp "1"]
[FEN "bbqrknrn/pppppppp/8/8/8/8/PPPPPPPP/BBQRKNRN w KQkq - 0 1"]
1. c4 c5 2. b3 b6 3. Nhg3 Nhg6 4. Ne3 Ne6 5. Nd5 Nef4 6. Nxf4 Bxf4 7.
e3 Bb8 8. d4 cxd4 9. Bxd4 O-O 10. e4 d5 11. exd5 e6 12. O-O exd5 13. c5 bxc5
14. Qxc5 Nf4 15. Nf5 Qxc5 16. Bxc5 Rfe8 17. Nd4 Ne6 18. Ba3 Nxd4 19. Rxd4 Bc6
20. Bd3 Be5 21. Rh4 g6 22. Bc1 Rc8 23. Ba6 Rcd8 24. Rh3 d4 25. f4 Bc7 26. Bd3
Re3 27. Rg3 Bb6 28. Bd2 f5 29. Kf2 Be4 30. Bc4+ Kg7 31. Rd1 Rc3 32. Rc1 Rc2 33.
Ke2 Rxa2 34. Kd1 d3 35. b4 Rc2 36. Rxc2 dxc2+ 37. Kc1 Bc7 0-1
[Event "Chess960 rapid WCh"]
[Site "Mainz GER"]
[Date "2006"]
[Round "5"]
[White "Aronian, Levon"]
[Black "Svidler, Peter"]
[Result "1-0"]
[Variant "Chess960"]
[SetUp "1"]
[FEN "bnqrnbkr/pppppppp/8/8/8/8/PPPPPPPP/BNQRNBKR w KQkq - 0 1"]
1. c4 c5 2. b3 b6 3. Nf3 e6 4. d4 cxd4 5. Nxd4 Nc6 6. Nf3 Be7 7. Nc3
O-O 8. g3 Nf6 9. Bg2 Nb4 10. O-O d5 11. a3 Na6 12. cxd5 Nxd5 13. b4 Nxc3 14.
Bxc3 Rxd1 15. Rxd1 Rd8 16. Rxd8+ Bxd8 17. Qb2 f6 18. Bh3 Nc7 19. Nd4 Qd7 20.
Bg4 f5 21. Bf3 Nd5 22. Qb3 Nxc3 23. Qxc3 Bf6 24. Bxa8 Bxd4 25. Qd3 Qd8 26. Bb7
Kf7 27. Ba6 Bf6 28. Qb3 Ke7 29. Bc4 Qd6 30. Qf3 Be5 31. Bb3 Kf6 32. h4 Bb2 33.
g4 Bxa3 34. Qc3+ Kg6 35. h5+ Kh6 36. g5+ Kxh5 37. Qxg7 Kg4 38. g6 h5 39. Qc3
1-0
[Event "Chess960 rapid WCh"]
[Site "Mainz GER"]
[Date "2006"]
[Round "6"]
[White "Svidler, Peter"]
[Black "Aronian, Levon"]
[Result "1-0"]
[Variant "Chess960"]
[SetUp "1"]
[FEN "qnrkbrnb/pppppppp/8/8/8/8/PPPPPPPP/QNRKBRNB w KQkq - 0 1"]
1. d4 g6 2. Nf3 c5 3. d5 d6 4. a4 Na6 5. c4 Bd7 6. Bc3 Nf6 7. b3 O-O-O
8. O-O Ne4 9. Bxh8 Rxh8 10. g3 Qb8 11. Ne1 Nf6 12. Nd3 h5 13. b4 h4 14. b5 Nc7
15. Nd2 Rh6 16. Nf3 hxg3 17. fxg3 Rdh8 18. Ng5 Rxh2 19. Bg2 R8h5 20. Nxf7 Ng4
21. Nf4 Ne3 22. Rf3 Nxg2 23. Nxh5 Rxh5 24. Kxg2 Bh3+ 25. Kg1 Ne8 26. a5 Bf5 27.
Re3 e5 28. dxe6 Qc7 29. e7 Rh7 30. Ng5 Rxe7 31. b6 1-0
[Event "Chess960 rapid WCh"]
[Site "Mainz GER"]
[Date "2006"]
[Round "7"]
[White "Svidler, Peter"]
[Black "Aronian, Levon"]
[Result "0-1"]
[Variant "Chess960"]
[SetUp "1"]
[FEN "rbbqnknr/pppppppp/8/8/8/8/PPPPPPPP/RBBQNKNR w HAha - 0 1"]
1. c4 c6 2. Ngf3 d5 3. cxd5 cxd5 4. d4 Ngf6 5. O-O O-O 6. Nd3 Bf5 7.
Nh4 Be4 8. f3 Bxd3 9. Qxd3 Qb6 10. b3 Nd6 11. Kh1 Rc8 12. g3 a6 13. Bd2 Qd8 14.
Bc2 Bc7 15. Rac1 Ba5 16. b4 Bb6 17. Bg5 g6 18. Bb3 Rxc1 19. Rxc1 Rc8 20. g4 Nb5
21. Rxc8 Qxc8 22. Be3 Qc3 23. g5 Qe1+ 24. Kg2 Nh5 25. Kh3 e6 26. a4 Nc3 27. Ng2
Qxe2 28. Qxe2 Nxe2 29. Bd1 Nc3 30. Bc2 Na2 31. b5 axb5 32. axb5 Nc3 33. Bd3 Nd1
34. Bg1 Kf8 35. Kg4 Ke7 36. f4 Ng7 37. Ne1 Nf5 38. Nc2 Nc3 39. h4 Bc7 40. Bf2
h5+ 41. gxh6 Nxh6+ 42. Kg5 Nf5 43. h5 gxh5 44. Kxh5 Ne4 0-1
[Event "Chess960 rapid WCh"]
[Site "Mainz GER"]
[Date "2006"]
[Round "8"]
[White "Aronian, Levon"]
[Black "Svidler, Peter"]
[Result "1-0"]
[Variant "Chess960"]
[SetUp "1"]
[FEN "bqrknbrn/pppppppp/8/8/8/8/PPPPPPPP/BQRKNBRN w GCgc - 0 1"]
1. c4 Ng6 2. Nf3 Nf6 3. Ng5 Ke8 4. e3 c5 5. f4 b6 6. b3 e6 7. Bd3 Nxf4
8. exf4 Qxf4 9. Nf3 Bd6 10. O-O-O Bxf3 11. gxf3 g6 12. Ng3 Be5 13. Ne2 1-0

View File

@ -0,0 +1,127 @@
<!DOCTYPE HTML>
<html>
<!--
pgn4web javascript chessboard
copyright (C) 2009-2014 Paolo Casaschi
see README file and http://pgn4web.casaschi.net
for credits, license and more details
-->
<head>
<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">
<title>pgn4web games collection example</title>
<style type="text/css">
html, body
{ margin: 0px; padding: 0px; }
body
{ color: black; background: white; font-family: sans-serif; padding: 1.75em; }
a
{ color: black; text-decoration: none; }
table, tr, td
{ border-style: solid; border-width: 1px; border-color: gray; border-collapse: collapse; }
</style>
<link rel="shortcut icon" href="pawn.ico" />
</head><body>
<p>
This is an application example showing how to use the pgn4web file collection.html to manage a collection of PGN files.
<br>
Two alternative options are shown.
</p>
<p style="font-size: 200%; font-weight: bold;">
links to the viewer
<p>
A link can be listed for viewing each PGN file in a new browser window:
</p>
<table width=100% cellpadding=20 cellspacing=0 border=1>
<tr>
<td align=left>Chess Informant sample</td>
<td align=center><a href="collection.html?pgnFile=chess-informant-sample.pgn&amp;title=Chess Informant sample" target="viewer">view</a></td>
<td align=center><a href="chess-informant-sample.pgn">download</a></td>
</tr>
<tr>
<td align=left>London Chess Classic 2009 round 5</td>
<td align=center><a href="collection.html?pgnFile=lon09r5.pgn&amp;title=London Chess Classic 2009 round 5" target="viewer">view</a></td>
<td align=center><a href="lon09r5.pgn">download</a></td>
</tr>
<tr>
<td align=left>Personal account on Kramnik and the Petrov</td>
<td align=center><a href="collection.html?pgnFile=demoGames.pgn&amp;title=Personal account on Kramnik and the Petrov" target="viewer">view</a></td>
<td align=center><a href="demoGames.pgn">download</a></td>
</tr>
<tr>
<td align=left>The Week In Chess #944</td>
<!-- when present the URL (in this case as part of the title string), the char # needs to be escaped as %23
same would apply to ? (%3F) & (%38) and any other URL special characters -->
<td align=center><a href="collection.html?pgnFile=twic944.pgn&amp;title=The Week In Chess %23944" target="viewer">view</a></td>
<td align=center><a href="twic944.pgn">download</a></td>
</tr>
<tr>
<td align=left>Tilburg Fontys 1998 round 2</td>
<td align=center><a href="collection.html?pgnFile=tilb98r2.pgn&amp;title=Tilburg Fontys 1998 round 2" target="viewer">view</a></td>
<td align=center><a href="tilb98r2.pgn">download</a></td>
</tr>
</table>
<p style="font-size: 200%; font-weight: bold; margin-top: 1em;">
dropdown menu selection
<form style="width:100%;">
<select id="selectmenu" style="width:100%;">
<option value="">select a PGN archive from the chess games collection for display in the inline frame underneath</option>
<option value="chess-informant-sample.pgn">Chess Informant sample</option>
<option value="lon09r5.pgn">London Chess Classic 2009 round 5</option>
<option value="demoGames.pgn">Personal account on Kramnik and the Petrov</option>
<option value="twic944.pgn">The Week In Chess #944</option>
<option value="tilb98r2.pgn">Tilburg Fontys 1998 round 2</option>
</select>
</form>
<br/>
<iframe id="inlineframe" name="inlineframe" height="1200" width="100%" frameborder="0" scrolling="auto" marginwidth="0px;" marginheight=0px;" src="collection.html">
your web browser and/or your host do not support iframes as required to display the chessboard
</iframe>
<script type="text/javascript">
"use strict";
var oldChosenoptionValue = "";
var selectmenu=document.getElementById("selectmenu");
selectmenu.onchange = function() {
var chosenoption = this.options[this.selectedIndex];
if ((chosenoption.value !== "") && (chosenoption.value != oldChosenoptionValue)) {
oldChosenoptionValue = chosenoption.value;
var theObj = frames['inlineframe'].document.getElementById('searchPgnExpression');
var searchPgnString = theObj ? '&search=' + escape(theObj.value) : '';
frames['inlineframe'].location.href = "collection.html?pgnFile=" + chosenoption.value + "&title=" + escape(chosenoption.innerHTML) + searchPgnString;
}
this.selectedIndex = 0;
this.blur();
};
</script>
</body>
</html>

178
_assets/vendor/pgn4web/collection.css vendored Normal file
View File

@ -0,0 +1,178 @@
/*
* pgn4web javascript chessboard
* copyright (C) 2009-2013 Paolo Casaschi
* see README file and http://pgn4web.casaschi.net
* for credits, license and more details
*/
@import url("fonts/pgn4web-font-LiberationSans.css");
@import url("fonts/pgn4web-font-ChessSansUsual.css");
html,
body {
margin: 0px;
padding: 0px;
}
body {
padding: 10px;
font-family: 'pgn4web Liberation Sans', sans-serif;
color: black;
background: white;
}
div, span, table, tr, td {
font-family: 'pgn4web Liberation Sans', sans-serif; /* fixes IE9 body css issue */
}
.containerTable {
width: 100%;
}
.containerCell {
padding: 20px;
}
.gametextContainerCell {
padding-left: 20px;
}
.gametextDiv {
padding-right: 20px;
height: 470px;
overflow: auto;
scrollbar-base-color: white;
}
.boardTable {
width: 376px;
height: 376px;
border-style: solid;
border-color: #663300;
border-width: 3px;
box-shadow: 0px 0px 20px #663300;
}
.pieceImage {
width: 36px;
height: 36px;
}
.whiteSquare,
.blackSquare,
.highlightWhiteSquare,
.highlightBlackSquare {
width: 43px;
height: 43px;
border-style: solid;
border-width: 2px;
}
.whiteSquare,
.highlightWhiteSquare {
border-color: #FFCC99;
background: #FFCC99;
}
.blackSquare,
.highlightBlackSquare {
border-color: #CC9966;
background: #CC9966;
}
.highlightWhiteSquare,
.highlightBlackSquare {
border-color: #663300;
border-style: solid;
}
.selectControl {
/* a "width" attribute here must use the !important flag to override default settings */
width: 100% !important;
}
.optionSelectControl {
}
.buttonControlPlay,
.buttonControlStop,
.buttonControl {
/* a "width" attribute here must use the !important flag to override default settings */
}
.buttonControlSpace {
/* a "width" attribute here must use the !important flag to override default settings */
}
.searchPgnButton {
/* a "width" attribute here must use the !important flag to override default settings */
width: 10% !important;
}
.searchPgnExpression {
/* a "width" attribute here must use the !important flag to override default settings */
width: 90% !important;
}
.move,
.variation,
.comment {
color: black;
line-height: 1.4em;
font-weight: normal;
text-decoration: none;
}
a.move:hover, a.variation:hover {
text-decoration: underline;
}
.move,
.variation,
.commentMove {
font-family: 'pgn4web ChessSansUsual', 'pgn4web Liberation Sans', sans-serif;
}
a.move,
a.variation,
.commentMove {
white-space: nowrap;
}
.comment,
.variation {
color: gray;
}
a.variation {
color: gray;
}
.moveOn,
.variationOn {
background: #FFCC99;
}
.label {
color: gray;
padding-right: 10px;
text-align: right;
}
.boldItem {
font-weight: bold;
}
.linkItem {
text-decoration: none;
color: black;
}
.linkItem:hover {
text-decoration: underline;
}
.rowSpace {
height: 8px;
}

186
_assets/vendor/pgn4web/collection.html vendored Normal file
View File

@ -0,0 +1,186 @@
<!DOCTYPE HTML>
<html>
<!--
pgn4web javascript chessboard
copyright (C) 2009-2013 Paolo Casaschi
see README file and http://pgn4web.casaschi.net
for credits, license and more details
-->
<head>
<title>chess games</title>
<link href="collection.css" type="text/css" rel="stylesheet" />
<link rel="shortcut icon" href="pawn.ico" />
<script src="pgn4web.js" type="text/javascript"></script>
<script src="fonts/chess-informant-NAG-symbols.js" type="text/javascript"></script>
<script src="fide-lookup.js" type="text/javascript"></script>
<script type="text/javascript">
"use strict";
var thisRegExp;
thisRegExp = /(&|\?)(help|h)=(true|t)(&|$)/i;
if (window.location.search.match(thisRegExp) !== null) {
alert("pgn4web collection.html parameters" + "\n" +
" - pgnFile=filename.pgn" + "\n" +
" - title=page title" + "\n" +
" - search=search expression" + "\n" +
" - help = true");
}
var pgnFilename = "";
thisRegExp = /(&|\?)(pgnFile|pf)=([^&]*)(&|$)/i;
if (window.location.search.match(thisRegExp) !== null) {
pgnFilename = unescape(window.location.search.match(thisRegExp)[3]);
} else {
// accepts pgnData as alias for pgnFile for consistency with board.html
thisRegExp = /(&|\?)(pgnData|pd)=([^&]*)(&|$)/i;
if (window.location.search.match(thisRegExp) !== null) {
pgnFilename = unescape(window.location.search.match(thisRegExp)[3]);
}
}
var pgnTitle = "no PGN file loaded";
if (pgnFilename !== "") {
SetPgnUrl(pgnFilename); // if set, this has precedence over the inline PGN in the HTML file
pgnTitle = pgnFilename;
}
thisRegExp = /(&|\?)(title|t)=([^&]*)(&|$)/i;
if (window.location.search.match(thisRegExp) !== null) {
pgnTitle = unescape(window.location.search.match(thisRegExp)[3]);
}
document.title = "chess games: " + pgnTitle;
thisRegExp = /(&|\?)(search|s)=([^&]*)(&|$)/i;
var pgnSearchTarget;
if (window.location.search.match(thisRegExp) !== null) {
pgnSearchTarget = unescape(window.location.search.match(thisRegExp)[3]);
} else {
pgnSearchTarget = "";
}
SetImagePath("images/alpha/36"); // use "" path if images are in the same folder as this javascript file
SetImageType("png");
SetHighlightOption(false); // true or false
SetGameSelectorOptions(" Event Site Rd White Black Res Date", true, 12, 12, 2, 15, 15, 3, 10); // (head, num, chEvent, chSite, chRound, chWhite, chBlack, chResult, chDate);
SetCommentsIntoMoveText(true);
SetCommentsOnSeparateLines(false);
SetAutoplayDelay(1000); // milliseconds
SetAutostartAutoplay(false);
SetAutoplayNextGame(false); // if set, move to the next game at the end of the current game during autoplay
SetInitialGame(1); // number of game to be shown at load, from 1 (default); values (keep the quotes) of "first", "last", "random" are accepted; other string values assumed as PGN search string
SetInitialVariation(0); // number for the variation to be shown at load, 0 (default) for main variation
SetInitialHalfmove(1, true); // halfmove number to be shown at load, 0 for start position, -1 for random halfmove
SetShortcutKeysEnabled(true);
function customFunctionOnPgnTextLoad() {
var theObj = document.getElementById('numGm');
if (theObj) { theObj.innerHTML = numberOfGames; }
searchPgnGame(pgnSearchTarget);
}
function customFunctionOnPgnGameLoad() {
var theObj = document.getElementById('currGm');
if (theObj) { theObj.innerHTML = currentGame+1; }
}
// customShortcutKey_Shift_1 defined by fide-lookup.js
// customShortcutKey_Shift_2 defined by fide-lookup.js
</script>
</head>
<body>
<!-- paste your PGN below and make sure you dont specify an external source with SetPgnUrl() -->
<form style="display: none;"><textarea style="display: none;" id="pgnText">
</textarea></form>
<!-- paste your PGN above and make sure you dont specify an external source with SetPgnUrl() -->
<table class="containerTable">
<tr valign=bottom>
<td class="containerCell" colspan=2>
<div style="font-size: 200%; font-weight: bold; text-align: center;">
<script type="text/javascript">
document.write(pgnTitle);
</script>
</div>
</td>
</tr>
<tr valign=bottom>
<td class="containerCell" colspan=2>
<div id="GameSelector"></div>
<div id="GameSearch" style="white-space:nowrap;"></div>
</td>
</tr>
<tr valign=top>
<td class="containerCell" align="left" width=50%>
<div id="GameBoard"></div>
<p></p>
<div id="GameButtons"></div>
</td>
<td class="containerCell" width=50% style="text-align: left;">
<table>
<tr><td class="label">date</td><td><span id="GameDate"></span>&nbsp;</td></tr>
<tr><td class="label">site</td><td><span style="white-space: nowrap;" id="GameSite"></span>&nbsp;</td></tr>
<tr><td colspan=2 class="rowSpace"></td></tr>
<tr><td class="label">event</td><td><span style="white-space: nowrap;" id="GameEvent"></span>&nbsp;</td></tr>
<tr><td class="label">round</td><td><span id="GameRound"></span>&nbsp;</td></tr>
<tr><td colspan=2 class="rowSpace"></td></tr>
<tr><td class="label">white</td><td class="boldItem"><span style="white-space: nowrap;" id="GameWhite"></span>&nbsp;</td></tr>
<tr><td class="label">black</td><td class="boldItem"><span style="white-space: nowrap;" id="GameBlack"></span>&nbsp;</td></tr>
<tr><td colspan=2 class="rowSpace"></td></tr>
<tr><td class="label">result</td><td class="boldItem"><span id="GameResult"></span>&nbsp;</td></tr>
<tr><td colspan=2 class="rowSpace"></td></tr>
<tr><td class="label">last</td><td class="move"><span id="GameLastMove"></span>&nbsp; &nbsp;<span id="GameLastVariations"></span></td></tr>
<tr><td class="label">next</td><td class="move"><span id="GameNextMove"></span>&nbsp; &nbsp;<span id="GameNextVariations"></span></td></tr>
<!--
<tr><td class="label">side</td><td><span id="GameSideToMove"></span>&nbsp;</td></tr>
-->
<tr><td colspan=2 class="rowSpace"></td></tr>
<tr><td class="label">game</td><td><span id=currGm>0</span>&nbsp;(<span id=numGm>0</span>)</td></tr>
<tr><td class="label">archive</td>
<td>
<script type="text/javascript">
if (pgnFilename) {
document.write('<a class="linkItem" href="' + pgnFilename + '">' + pgnFilename + '</a>');
}
</script>
&nbsp;</td>
<!--
<tr><td colspan=2 class="rowSpace"></td></tr>
<tr><td class="label">Move comment</td><td><span id="GameLastComment"></span>&nbsp;</td></tr>
-->
</table>
</td>
</tr>
<tr valign=top>
<td class="gametextContainerCell" style="text-align: justify;" colspan=2>
<div class="gametextDiv" id="GameText"></div>
</td>
</tr>
</table>
</body>
</html>

38
_assets/vendor/pgn4web/crc32.js vendored Normal file
View File

@ -0,0 +1,38 @@
/*
* pgn4web javascript chessboard
* copyright (C) 2009-2013 Paolo Casaschi
* see README file and http://pgn4web.casaschi.net
* for credits, license and more details
*/
"use strict";
function crc32(str) {
var table = "00000000 77073096 EE0E612C 990951BA 076DC419 706AF48F E963A535 9E6495A3 0EDB8832 79DCB8A4 E0D5E91E 97D2D988 09B64C2B 7EB17CBD E7B82D07 90BF1D91 1DB71064 6AB020F2 F3B97148 84BE41DE 1ADAD47D 6DDDE4EB F4D4B551 83D385C7 136C9856 646BA8C0 FD62F97A 8A65C9EC 14015C4F 63066CD9 FA0F3D63 8D080DF5 3B6E20C8 4C69105E D56041E4 A2677172 3C03E4D1 4B04D447 D20D85FD A50AB56B 35B5A8FA 42B2986C DBBBC9D6 ACBCF940 32D86CE3 45DF5C75 DCD60DCF ABD13D59 26D930AC 51DE003A C8D75180 BFD06116 21B4F4B5 56B3C423 CFBA9599 B8BDA50F 2802B89E 5F058808 C60CD9B2 B10BE924 2F6F7C87 58684C11 C1611DAB B6662D3D 76DC4190 01DB7106 98D220BC EFD5102A 71B18589 06B6B51F 9FBFE4A5 E8B8D433 7807C9A2 0F00F934 9609A88E E10E9818 7F6A0DBB 086D3D2D 91646C97 E6635C01 6B6B51F4 1C6C6162 856530D8 F262004E 6C0695ED 1B01A57B 8208F4C1 F50FC457 65B0D9C6 12B7E950 8BBEB8EA FCB9887C 62DD1DDF 15DA2D49 8CD37CF3 FBD44C65 4DB26158 3AB551CE A3BC0074 D4BB30E2 4ADFA541 3DD895D7 A4D1C46D D3D6F4FB 4369E96A 346ED9FC AD678846 DA60B8D0 44042D73 33031DE5 AA0A4C5F DD0D7CC9 5005713C 270241AA BE0B1010 C90C2086 5768B525 206F85B3 B966D409 CE61E49F 5EDEF90E 29D9C998 B0D09822 C7D7A8B4 59B33D17 2EB40D81 B7BD5C3B C0BA6CAD EDB88320 9ABFB3B6 03B6E20C 74B1D29A EAD54739 9DD277AF 04DB2615 73DC1683 E3630B12 94643B84 0D6D6A3E 7A6A5AA8 E40ECF0B 9309FF9D 0A00AE27 7D079EB1 F00F9344 8708A3D2 1E01F268 6906C2FE F762575D 806567CB 196C3671 6E6B06E7 FED41B76 89D32BE0 10DA7A5A 67DD4ACC F9B9DF6F 8EBEEFF9 17B7BE43 60B08ED5 D6D6A3E8 A1D1937E 38D8C2C4 4FDFF252 D1BB67F1 A6BC5767 3FB506DD 48B2364B D80D2BDA AF0A1B4C 36034AF6 41047A60 DF60EFC3 A867DF55 316E8EEF 4669BE79 CB61B38C BC66831A 256FD2A0 5268E236 CC0C7795 BB0B4703 220216B9 5505262F C5BA3BBE B2BD0B28 2BB45A92 5CB36A04 C2D7FFA7 B5D0CF31 2CD99E8B 5BDEAE1D 9B64C2B0 EC63F226 756AA39C 026D930A 9C0906A9 EB0E363F 72076785 05005713 95BF4A82 E2B87A14 7BB12BAE 0CB61B38 92D28E9B E5D5BE0D 7CDCEFB7 0BDBDF21 86D3D2D4 F1D4E242 68DDB3F8 1FDA836E 81BE16CD F6B9265B 6FB077E1 18B74777 88085AE6 FF0F6A70 66063BCA 11010B5C 8F659EFF F862AE69 616BFFD3 166CCF45 A00AE278 D70DD2EE 4E048354 3903B3C2 A7672661 D06016F7 4969474D 3E6E77DB AED16A4A D9D65ADC 40DF0B66 37D83BF0 A9BCAE53 DEBB9EC5 47B2CF7F 30B5FFE9 BDBDF21C CABAC28A 53B39330 24B4A3A6 BAD03605 CDD70693 54DE5729 23D967BF B3667A2E C4614AB8 5D681B02 2A6F2B94 B40BBE37 C30C8EA1 5A05DF1B 2D02EF8D";
var crc = 0;
var x = 0;
var y = 0;
crc = crc ^ (-1);
for (var i = 0, iTop = str.length; i < iTop; i++) {
y = ( crc ^ (str.charCodeAt( i ) % 0x100) ) & 0xFF;
x = "0x" + table.substr( y * 9, 8 );
crc = ( crc >>> 8 ) ^ x;
}
return crc ^ (-1);
}
function printHex(n) {
var hex = "0123456789ABCDEF";
var s = "";
var r = 0;
for (var i = 0; i < 8; i++) {
r = n % 16;
if (r < 0) { r += 16; }
s = hex.charAt(r) + s;
n >>= 4;
}
return s;
}

259
_assets/vendor/pgn4web/demo.html vendored Normal file
View File

@ -0,0 +1,259 @@
<!DOCTYPE HTML>
<html>
<!--
pgn4web javascript chessboard
copyright (C) 2009-2014 Paolo Casaschi
see README file and http://pgn4web.casaschi.net
for credits, license and more details
-->
<head>
<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">
<title>pgn4web demo site</title>
<style type="text/css">
html, body { margin: 0px; padding: 0px; }
body
{ color: black; background: white; font-family: sans-serif; padding: 1.75em; padding-bottom: 4em; overflow-x: hidden; }
a
{ color: black; text-decoration: none; }
.linkhead,
a.linklist,
a.linkselected
{ font-size: 80%; color: black; text-decoration: none; word-spacing: normal; white-space: nowrap; }
a.linkhead:hover,
a.linklist:hover,
a.linkselected
{ color: red; }
</style>
<link rel="shortcut icon" href="pawn.ico" />
<script type="text/javascript">
"use strict";
function gup(name) {
name = name.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");
var regexS = "[\\?&]"+name+"=([^&#]*)";
regexS = regexS+"(?!.*"+regexS+")"; // matches the LAST occurrence
var regex = new RegExp( regexS, "i" );
var results = regex.exec( window.location.href );
if (results === null) { return ""; }
else { return decodeURIComponent(results[1]); }
}
var pgn4webTestWin = null;
function openPgn4webTest(url) {
if (pgn4webTestWin && !pgn4webTestWin.closed) { pgn4webTestWin.close(); }
pgn4webTestWin = window.open(url, "pgn4webTest");
if (window.focus) { pgn4webTestWin.focus(); }
return false;
}
</script>
</head><body>
<h1 style="margin-top:0px; padding-top:0px; text-align:right;">
<span style="float:left; color:red;">
pgn4web demo site
</span>
<a href="." onfocus="this.blur();" style="width:49px; height:29px; background:url(pawns.png) -47px -15px; vertical-align:baseline; display:inline-block;"></a>
</h1>
<div style="height:1em;"></div>
<table style="font-size: 100%; font-weight: bold; text-align: left; line-height: 1.5em; word-spacing: 1em">
<tbody><tr valign="top"><td>
<a class="linkhead" style="font-weight: normal; white-space: nowrap; margin-right: 1em;" href="http://pgn4web-test.casaschi.net" onclick="return openPgn4webTest(this.href);">platform integration tests:</a>
</td><td>
<a class="linklist" href="http://pgn4web-test.casaschi.net/blogger/" onclick="return openPgn4webTest(this.href);">blogger</a>
<a class="linklist" href="http://pgn4web-test.casaschi.net/drupal/" onclick="return openPgn4webTest(this.href);">drupal</a>
<a class="linklist" href="http://pgn4web-test.casaschi.net/googlesites/" onclick="return openPgn4webTest(this.href);">google sites</a>
<a class="linklist" href="http://pgn4web-test.casaschi.net/joomla/" onclick="return openPgn4webTest(this.href);">joomla</a>
<a class="linklist" href="http://pgn4web-test.casaschi.net/mediawiki/" onclick="return openPgn4webTest(this.href);">mediawiki</a>
<a class="linklist" href="http://pgn4web-test.casaschi.net/phpbb/" onclick="return openPgn4webTest(this.href);">phpbb</a>
<a class="linklist" href="http://pgn4web-test.casaschi.net/simplemachines/" onclick="return openPgn4webTest(this.href);">simplemachines</a>
<a class="linklist" href="http://pgn4web-test.casaschi.net/wordpress/" onclick="return openPgn4webTest(this.href);">wordpress.org</a>
</td></tr></tbody></table>
<table style="font-size: 100%; font-weight: bold; text-align: left; line-height: 1.5em; word-spacing: 1em">
<tbody><tr valign="top"><td>
<span class="linkhead" style="font-weight: normal; margin-right: 1em;">html demos:</span>
</td><td>
<a class="linklist" id="chess960" target="pgnframe" onclick="return select_frame(this.id);" onfocus="this.blur();" href="chess960wch06.html">chess960</a>
<a class="linklist" id="debug" target="pgnframe" onclick="return select_frame(this.id);" onfocus="this.blur();" href="board.html?am=l&amp;d=3000&amp;ss=36&amp;ps=d&amp;pf=d&amp;lcs=YeiP&amp;dcs=Qcij&amp;bbcs=D91v&amp;bscs=Lb2$&amp;hm=n&amp;hcs=Udiz&amp;bd=h&amp;hd=j&amp;md=f&amp;tm=0&amp;fhcs=$$$$&amp;fhs=16&amp;fmcs=$$$$&amp;fccs=v71$&amp;hmcs=Qcij&amp;fms=16&amp;fcs=m&amp;cd=n&amp;bcs=____&amp;fp=18&amp;hl=t&amp;fh=330&amp;fw=660&amp;pe=520$A_e0G3vgZt82XAeAsL4AVvs$ZZaxf5uL5kaKo0IxBHl3M0dgK1LKQNH3ueKCLtwmVLpw7HXh3HKeSvNFrlZqMzg9Pjt7_uIutuqw_BN_OTC_N9o0F0Plt7Z84KDu3avM0_4CxgW7yVPou8veUoK33Q4ca4zKUTcnz1eOM7HX5uqyZt2l8$ZZaxf5uL5kaKo0IxBHl3M0dgK3qPHaYrG06OWUX6DkZH5Dhae3waaOYTbFC4KBXo3hI46xeSWmSCRTuUHKXZ8_XxBfpvs4CxexgqV6M1TbfuMoTztN7ZI5mNn2Zl3M4ca4zKUTcnz1eOM7OEnp6YCLokd$OZ$NEsW7cHjQzHVl5viUkGcvUEkXRqIRWrOsJSqnqHqdcHmBcC5QVYtK5KmGOqDLiDfSn6XmdwRqftwh31BHl4ZJkvyUYXZ2P9_l2j84CxfAAUZX5kixSOtbx8lxyM6WYGWOWreXRmZu3_Zgi7cfdxOM6M7IY2Twr57eTHXheo3ulyaUb0_$0">debug</a>
<a class="linklist" id="huebner" target="pgnframe" onclick="return select_frame(this.id);" onfocus="this.blur();" href="analysis.html?ig=3&amp;iv=3&amp;ih=32&amp;pd=chess-informant-sample.pgn">huebner</a>
<a class="linklist" id="kk" target="pgnframe" onclick="return select_frame(this.id);" onfocus="this.blur();" href="mini.html">kk</a>
<a class="linklist" id="kramnik" target="pgnframe" onclick="return select_frame(this.id);" onfocus="this.blur();" href="board.html?am=n&amp;d=3000&amp;ih=18&amp;ss=50&amp;ps=d&amp;pf=d&amp;lcs=_XNo&amp;dcs=O8AB&amp;bbcs=r4fT&amp;hm=b&amp;hcs=r4fT&amp;bd=s&amp;cbcs=YeiP&amp;ctcs=$$$$&amp;hd=j&amp;md=f&amp;tm=25&amp;fhcs=$$$$&amp;fhs=23&amp;fmcs=$$$$&amp;fccs=v71$&amp;hmcs=_XNo&amp;fms=19&amp;fcs=m&amp;cd=i&amp;bcs=____&amp;fp=0&amp;hl=t&amp;fh=b&amp;fw=p&amp;pd=demoGames.pgn">kramnik</a>
<a class="linklist" id="london" target="pgnframe" onclick="return select_frame(this.id);" onfocus="this.blur();" href="lon09r5.html">london</a>
<a class="linklist" id="morphy" target="pgnframe" onclick="return select_frame(this.id);" onfocus="this.blur();" href="widget.html">morphy</a>
<a class="linklist" id="pgn_collection" target="pgnframe" onclick="return select_frame(this.id);" onfocus="this.blur();" href="collection-example.html">pgn collection</a>
<a class="linklist" id="pgn_form" target="pgnframe" onclick="return select_frame(this.id);" onfocus="this.blur();" href="inputform.html">pgn form</a>
<a class="linklist" id="puzzles" target="pgnframe" onclick="return select_frame(this.id);" onfocus="this.blur();" href="tactics.html">puzzles</a>
<a class="linklist" id="reykjavik" target="pgnframe" onclick="return select_frame(this.id);" onfocus="this.blur();" href='board.html?am=g&amp;d=1000&amp;ss=50&amp;ps=40&amp;pf=u&amp;lcs=Ut65&amp;dcs=ObJH&amp;bbcs=$$$$&amp;hm=b&amp;hcs=__X$&amp;bd=h&amp;hd=c&amp;md=f&amp;tm=50&amp;fhcs=$$$$&amp;fhs=16&amp;fmcs=$$$$&amp;fccs=_L$$&amp;hmcs=__X$&amp;fms=14&amp;fcs=m&amp;cd=i&amp;bcs=____&amp;fp=10&amp;hl=f&amp;fh=1000&amp;fw=609&amp;pe=1227$zlax9RvmYXZNS4XYTucLSNGYTbS4coab2l8$JzaLr6WMr52wilheKl8$y2xz1BHASUtGJ05n9pNmXX5Hh0oyuOYZ64Tef4XZ2eMilh1NYfdvls2eVe3u0Vd_c3ul4coaE6V_9P1je54cnHb11nvoaz7$ij2qQ2$gK3qU5$fbzN3ZgD30jM$Om7T1$BBf3BjH90$OlPfJeaDr02O7YF0L7YxcQ8F29$yshpvqS7bn3ayNV0FpvN$fVg3dzrl5n10xnvoFKHfq$71GW32kYx2p06h5voGz5T1$IDyR7bj1$zYfYN2d$v8W308pwnnr13Xf3iz7j0$RXf4i37b16sDwSoj7f1dZRpdE3rw2$fAx$IVw5$fcijdPrl7P16pbvC7gL3me7vqoj790$RRgij7r0$OlDsEN32vfcKzdQSN59$vAsXv9I5a5502kpbwazbf13YfYkejbn13FEVwajbL1$zRgrzk2c$vnBKP2k8F5r0$khpwGhMwf7VzpdKdfML308ryO7nd06jHgU3nj04bf4lB7Ln3q9vatDLv3m8HyKBuAB5$xy7VYUNbn06mHfijnP1dK4uDJ8Nbr06h4uDJSNb4$yIhpyIpb_gwL3m87yI3uAB0L7J7paFW9yhv7VhJYuDJENc506sX_grPk5z$yJNKPmtU5B$yElPgRJPgG$7JGI3cnlpP16HgrQFcr02RDExc4$yKyfCkWjpr01u7tM5wL7i9wUzrj0$g1DVBU1Owvf3zU2N7Tv3mjg4QdgMv7WHPcb_gO$7JDN6yoDW6c$yImygsKjrT1aBzfAwoLD3sRqY4MbgML3sDpaIHyvT3sRqY4M3fjD1dPc1i79b1$FpyIjND9f1dQExdW9l4b06hn_grzp1H$vat7hg0uRt2eTDXgZ_pZXZS$_2qi8p9tkwDzq2eRZmxXir0AnaSNYY$_7P_2l81OUY2lmNr0ZmKWfPmD29KNeG0AjTY2XbeBZg7u3h7Z7Gfz6fNJfojz8eK2TCZxSPtwJBGvuzpwGWOWra$ZWCPjmKWu2TcBUcLeLQCDaSNYY4We2gKQKgUmr4WUtZwJZ7zgXglw6U_fDtb0'>reykjavik</a>
<a class="linklist" id="tallinn_live_dynamic" target="pgnframe" onclick="return select_frame(this.id);" onfocus="this.blur();" href="dynamic-frame.html?pgnData=demoLiveGames.pgn&amp;refreshMinutes=0.25&amp;refreshDemo=true&amp;initialGame=vovk&amp;showColorFlag=true&amp;pieceFont=random&amp;colorTheme=blue">tallinn live dynamic</a>
<a class="linklist" id="tallinn_live_mosaic" target="pgnframe" onclick="return select_frame(this.id);" onfocus="this.blur();" href="live-mosaic-viewer.html?pgnData=demoLiveGames.pgn&amp;refreshMinutes=0.25&amp;refreshDemo=true&amp;demoPly=0,1,2,3&amp;maxBoards=4&amp;barePadding=40px">tallinn live mosaic</a>
<a class="linklist" id="tallinn_live_widget" target="pgnframe" onclick="return select_frame(this.id);" onfocus="this.blur();" href="board.html?am=n&amp;d=1000&amp;ig=vovk&amp;ih=e&amp;ss=36&amp;ps=d&amp;pf=d&amp;lcs=Wtyk&amp;dcs=OXJO&amp;bbcs=OXJO&amp;hm=b&amp;hcs=C8B5&amp;bd=c&amp;cbcs=UJ2e&amp;ctcs=nkYj&amp;hd=l&amp;md=h&amp;tm=0&amp;fhcs=nkYi&amp;fhs=18&amp;fmcs=nkYi&amp;fccs=DoRa&amp;hmcs=ZbNv&amp;fms=18&amp;fcs=m&amp;cd=h&amp;bcs=Wtyk&amp;fp=18&amp;hl=f&amp;fh=515&amp;fw=b&amp;pd=demoLiveGames.pgn&amp;rm=0.25&amp;rd=t">tallinn live widget</a>
<a class="linklist" id="tilburg_live" target="pgnframe" onclick="return select_frame(this.id);" onfocus="this.blur();" href="live-compact.html?pgnData=tilb98r2.pgn&amp;initialGame=2&amp;refreshMinutes=0.25&amp;refreshDemo=true">tilburg live</a>
<a class="linklist" id="tilburg_replay" target="pgnframe" onclick="return select_frame(this.id);" onfocus="this.blur();" href="tilb98r2.html">tilburg replay</a>
<a class="linklist" id="twic" target="pgnframe" onclick="return select_frame(this.id);" onfocus="this.blur();" href="twic944.html">twic</a>
<a class="linklist" id="youtube" target="pgnframe" onclick="return select_frame(this.id);" onfocus="this.blur();" href="video.html?youtubeVideoid=rquK2U23WMU&amp;videoWidth=480&amp;videoHeight=270&amp;videoLoop=true">youtube</a>
<!-- ogg file backed up on the pgn4web wiki: http://pgn4web.googlecode.com/svn/wiki/video/KrushKosteniuk2010.ogv -->
<a class="linklist" id="video" target="pgnframe" onclick="return select_frame(this.id);" onfocus="this.blur();" href="video.html?pgnData=KrushKosteniuk2010.pgn&amp;videoUrl=http://go.casaschi.net/pgn4web-demo-video-ogg-file&amp;videoWidth=480&amp;videoHeight=270&amp;videoLoop=true">video</a>
</td></tr></tbody></table>
<div>&nbsp;</div>
<div style="text-align:center;"><a href="#top" onfocus="this.blur();" style="display:inline-block; width:20%;">&nbsp;</a><span style="display:inline-block; width:20%;"></span><a name="demo" href="#demo" onfocus="this.blur();" style="display:inline-block; width:20%;">&nbsp;</a></div>
<p></p>
<center>
<iframe id="pgnframe" name="pgnframe" frameborder='0' height="2000" width="100%" scrolling="no" marginheight="0" marginwidth="0">your browser does not support the required iframe functionality</iframe>
</center>
<script type="text/javascript">
"use strict";
var selected_object = null;
function select_frame(new_frame) {
var new_object = document.getElementById(new_frame);
if (new_object !== null) {
if (selected_object !== null) {
if (new_object == selected_object) { return false; }
selected_object.className = "linklist";
}
selected_object = new_object;
frames['pgnframe'].location.href = selected_object.href;
var new_frame_width = "100%";
var new_frame_height = "1000px";
var new_frame_border = "";
var new_frame_borderRadius = "";
var new_frame_boxShadow = "";
switch (new_frame) {
case "huebner":
new_frame_height = "664px";
break;
case "kramnik":
new_frame_height = "556px";
break;
case "kk":
new_frame_height = "450px";
break;
case "pgn_collection":
new_frame_height = "2000px";
break;
case "pgn_form":
new_frame_width = "753px";
break;
case "puzzles":
new_frame_width = "508px";
new_frame_height = "246px";
new_frame_border = "solid 50px transparent";
new_frame_borderRadius = "3px";
new_frame_boxShadow = "0px 0px 15px #C9AD6F";
break;
case "tallinn_live_dynamic":
if (Math.random() > 0.33) {
new_frame_width = "800px";
new_frame_height = "400px";
} else {
new_frame_width = "333px";
new_frame_height = "592px";
}
new_frame_border = "double 8px #80B0E0";
new_frame_borderRadius = "4px";
new_frame_boxShadow = "0px 0px 10px #80B0E0";
break;
case "tallinn_live_mosaic":
new_frame_width = "672px"; // ((256 + 40) * 2) + 40 * 2
new_frame_height = "747px"; // ((306 + 20) * 2 + 15) + 40 * 2
new_frame_boxShadow = "0px 0px 10px #E4E4E4";
break;
case "tallinn_live_widget":
new_frame_height = "515px";
new_frame_width = "330px";
new_frame_border = "solid 10px #EDE8D5";
new_frame_borderRadius = "10px";
new_frame_boxShadow = "0px 0px 20px #663300";
break;
case "tilburg_live":
new_frame_width = "480px";
new_frame_height = "360px";
new_frame_border = "solid 30px #EDE8D5";
new_frame_borderRadius = "15px";
new_frame_boxShadow = "0px 0px 20px #663300";
break;
case "twic":
new_frame_height = "1200px";
break;
default:
break;
}
document.getElementById("pgnframe").width = new_frame_width;
document.getElementById("pgnframe").height = new_frame_height;
document.getElementById("pgnframe").style.border = new_frame_border;
document.getElementById("pgnframe").style.borderRadius = new_frame_borderRadius;
document.getElementById("pgnframe").style.boxShadow = new_frame_boxShadow;
selected_object.className = "linkselected";
} else {
select_frame("kk");
}
return false;
}
function random_frame() {
var random_selection = ["chess960", "chess960", "huebner", "huebner", "kramnik", "kramnik", "kk", "kk", "kk", "kk", "kk", "london", "london", "morphy", "morphy", "puzzles", "puzzles", "tallinn_live_dynamic", "tallinn_live_dynamic", "tallinn_live_dynamic", "tallinn_live_mosaic", "tallinn_live_mosaic", "tallinn_live_mosaic", "tallinn_live_widget", "tilburg_replay", "tilburg_replay", "tilburg_live", "video", "youtube", "youtube"];
return random_selection[Math.floor(random_selection.length * Math.random())];
}
var initial_frame = gup("frame");
if (initial_frame === "") { initial_frame = "random"; }
if (initial_frame == "random") { initial_frame = random_frame(); }
select_frame(initial_frame);
</script>
</body>
</html>

86
_assets/vendor/pgn4web/demoGames.pgn vendored Normal file
View File

@ -0,0 +1,86 @@
[Event "Tilburg Fontys"]
[Site "Tilburg"]
[Date "1998.10.24"]
[Round "2"]
[White "Anand, Viswanathan"]
[Black "Kramnik, Vladimir"]
[Result "1-0"]
[ECO "C42"]
[Opening "Petrov"]
[Variation "classical attack, Chigorin variation"]
[Annotator "pgn4web with notes from http://www.chessgames.com"]
[WhiteElo "2825"]
[BlackElo "2810"]
[WhiteFideId "5000017"]
[BlackFideId "4101588"]
[WhiteTitle "GM"]
[BlackTitle "GM"]
{ pgn4web personal account on Kramnik and the Petrov, part 1: in October
1998, I watched this game live from the tournament hall in Tilburg. At some
point I was hoping to witness a masterpiece sacrifice win from Kramnik, but
apparently Anand was well prepared. }
1. e4 e5 2. Nf3 Nf6 3. Nxe5 d6 4. Nf3 Nxe4 5. d4 d5 6. Bd3 Nc6 7. O-O Be7
8. Re1 Bg4 9. c3 f5 { This is a very old line, with games from Lasker and
Capablanca's times. } 10. Qb3 O-O 11. Nbd2 Na5 12. Qa4 { Later White tried
an alternative plan with Qc2 followed by b4 and rapid expansion on the
queenside, often preceeded by a repetition, as in } (12. Qa4 Nc6 13. Qb3
Na5 14. Qc2 Nc6 15. b4 { see Anand-Leko, Leon 2001 and the next game of
this PGN file }) 12... Nc6 13. Bb5 Nxd2 { After this game Black tried to
improve with } (13... Bh4 14. g3 Bf6 15. Bxc6 bxc6 16. Qxc6 Re8 { as in
Anand-Kamnik at Wijk An Zee 1999 and in Shirov-Kramnik, Belgrade 1999 })
14. Nxd2 Qd6 { So far following Anand-Yusupov, Linares 1993, where 15. Nb3
ensued, eventually a draw. } 15. h3 { $1 This novelty was suggested by
Anand's second Ubilava after the game in Linares. 15. h3 diverts Black's
Bishop control of the e6 square and makes sure the h Pawn will not be
captured when the Black's Queen arrives on h2. This move was voted the 4th
most important novelty in Informant 74. } 15... Bh5 16. Nb3 Bh4 17. Nc5
Bxf2+ { A thematic sacrifice for the variation, but Anand was well
prepared. } 18. Kxf2 Qh2 19. Bxc6 bxc6 20. Qxc6 f4 21. Qxd5+ Kh8 22. Qxh5
f3 23. Qxf3 { Apparently Anand's home analysis already assessed this
position as won for White. } 23... Rxf3+ 24. Kxf3 Rf8+ 25. Ke2 Qxg2+ 26.
Kd3 Qxh3+ 27. Kc2 Qg2+ 28. Bd2 Qg6+ 29. Re4 h5 30. Re1 Re8 31. Kc1 Rxe4 32.
Nxe4 h4 33. Ng5 Qh5 34. Re3 Kg8 35. c4 { Sadly, it was not the day for a
masterpiece sacrifice win from Kramnik, but look at the next game to see
what happened more than 10 years later. } 1-0
[Event "London Chess Classic"]
[Site "London"]
[Date "2009.12.13"]
[Round "5"]
[White "Howell, David"]
[Black "Kramnik, Vladimir"]
[Result "1/2-1/2"]
[ECO "C42"]
[Opening "Petrov"]
[Variation "classical attack, Chigorin variation"]
[Annotator "pgn4web"]
[WhiteElo "2597"]
[BlackElo "2772"]
[WhiteFideId "410608"]
[BlackFideId "4101588"]
[WhiteTitle "GM"]
[BlackTitle "GM"]
{ pgn4web personal account on Kramnik and the Petrov, part 2: since the
previous game at Tilburg 1998 I did not attend in person any other top
event until December 2009. More than 10 years had passed when I was in the
tournament hall in London, watching Kramnik sacrificing a piece in the same
variation of the Petrov. Again, I did not witness a masterpiece sacrifice
win from Kramnik, but the similarity between the two games amazed me. }
1. e4 e5 2. Nf3 Nf6 3. Nxe5 d6 4. Nf3 Nxe4 5. d4 d5 6. Bd3 Nc6 7. O-O Be7
8. Re1 Bg4 9. c3 f5 10. Qb3 O-O 11. Nbd2 Na5 12. Qa4 Nc6 13. Qb3 Na5 14.
Qc2 Nc6 15. b4 a6 16. Rb1 b5 17. a4 Rb8 18. axb5 axb5 19. Ne5 Nxe5 20. dxe5
Nxf2 { Again a piece sacrifice on f2 for attacking chances, however Howell
defends well. } 21. Kxf2 Bh4+ 22. Kf1 Bxe1 23. Kxe1 Qh4+ 24. g3 Qxh2 25.
Nf1 Qxc2 26. Bxc2 Rbe8 27. Bd3 Rxe5+ 28. Kf2 f4 29. gxf4 Bf5 30. Bxf5 Rexf5
31. Ng3 R5f6 32. Kf3 Rc6 33. Bd2 g5 34. Ne2 gxf4 35. Nd4 Rg6 36. Nxb5 Rg3+
37. Kf2 Rd3 38. Rg1+ Kh8 39. Ke2 Rg3 40. Kf2 Rxg1 41. Kxg1 c5 42. Nd6 cxb4
43. cxb4 Kg7 44. Bc3+ Kg6 45. b5 Rd8 46. Be5 Rb8 47. Bd4 Rd8 48. Be5 Rb8
49. Kf2 Rb6 50. Kf3 Kg5 51. Nf7+ Kg6 52. Nd6 Kg5 53. Nf7+ Kg6 { Once again,
not the day for a masterpiece sacrifice win from Kramnik. Maybe Kramnik and
I will be more lucky next time, I'll tell you about part 3 of this personal
account in another 10 years. pgn4web, London 2011. } 1/2-1/2

180
_assets/vendor/pgn4web/demoLiveGames.pgn vendored Normal file
View File

@ -0,0 +1,180 @@
[Event "Paul Keres Memorial"]
[Site "Tallinn EST"]
[Date "2011.01.09"]
[Round "7"]
[White "Ehlvest, Jaan"]
[Black "Shirov, Alexei"]
[Result "1/2-1/2"]
[TimeControl "900+10"]
[Board "1"]
[Input "DGT1234"]
[WhiteClock "0:15.10"]
[BlackClock "0:15.10"]
[Clock "B/0:15.29"]
[WhiteElo "2586"]
[BlackElo "2722"]
[WhiteFideId "4500016"]
[BlackFideId "2209390"]
[WhiteTitle "GM"]
[BlackTitle "GM"]
1. c4 { [%clk 0:15.16] } 1... e5 { [%clk 0:15.18] } 2. g3 { [%clk 0:15.11]
} 2... Nf6 { [%clk 0:15.24] } 3. Bg2 { [%clk 0:15.19] } 3... d5 { [%clk
0:15.29] } 4. cxd5 { [%clk 0:15.25] } 4... Nxd5 { [%clk 0:15.40] } 5. Nc3 {
[%clk 0:15.26] } 5... Nb6 { [%clk 0:15.47] } 6. Nf3 { [%clk 0:14.51] } 6...
Nc6 { [%clk 0:15.54] } 7. d3 { [%clk 0:14.19] } 7... Be7 { [%clk 0:15.59] }
8. O-O { [%clk 0:14.14] } 8... O-O { [%clk 0:15.50] } 9. Be3 { [%clk
0:12.41] } 1/2-1/2
[Event "Paul Keres Memorial"]
[Site "Tallinn EST"]
[Date "2011.01.09"]
[Round "7"]
[White "Vovk, Ilja"]
[Black "Smirnov, Artem"]
[Result "1-0"]
[TimeControl "900+10"]
[Board "2"]
[Input "DGT2345"]
[WhiteClock "0:15.10"]
[BlackClock "0:15.10"]
[Clock "B/0:00.04"]
[WhiteElo "2267"]
[BlackElo "2428"]
[WhiteFideId "4501764"]
[BlackFideId "4143256"]
[WhiteTitle "FM"]
[BlackTitle "IM"]
1. d4 { [%clk 0:15.17] } 1... Nf6 { [%clk 0:15.19] } 2. c4 { [%clk 0:15.26]
} 2... c5 { [%clk 0:15.27] } 3. d5 { [%clk 0:15.33] } 3... e5 { [%clk
0:15.35] } 4. Nc3 { [%clk 0:15.25] } 4... d6 { [%clk 0:15.43] } 5. e4 {
[%clk 0:15.31] } 5... Be7 { [%clk 0:15.51] } 6. g3 { [%clk 0:15.20] } 6...
a6 { [%clk 0:15.52] } 7. Bg2 { [%clk 0:15.16] } 7... O-O { [%clk 0:15.57] }
8. Nf3 { [%clk 0:15.13] } 8... b5 { [%clk 0:15.47] } 9. Nd2 { [%clk
0:14.54] } 9... Nbd7 { [%clk 0:15.32] } 10. O-O { [%clk 0:14.50] } 10...
Nb6 { [%clk 0:15.23] } 11. Qe2 { [%clk 0:13.26] } 11... bxc4 { [%clk
0:14.50] } 12. a4 { [%clk 0:12.28] } 12... a5 { [%clk 0:13.59] } 13. Nb5 {
[%clk 0:12.12] } 13... Ba6 { [%clk 0:13.49] } 14. Nxc4 { [%clk 0:10.26] }
14... Nxa4 { [%clk 0:13.12] } 15. Nbxd6 { [%clk 0:09.54] } 15... Nb6 {
[%clk 0:11.18] } 16. Rxa5 { [%clk 0:05.47] } 16... Nxc4 { [%clk 0:05.31] }
17. Rxa6 { [%clk 0:05.49] } 17... Nxd6 { [%clk 0:05.35] } 18. Rxa8 { [%clk
0:05.58] } 18... Qxa8 { [%clk 0:05.46] } 19. f4 { [%clk 0:06.07] } 19...
Nd7 { [%clk 0:05.17] } 20. Bh3 { [%clk 0:06.16] } 20... Qd8 { [%clk
0:04.48] } 21. Bxd7 { [%clk 0:06.23] } 21... Qxd7 { [%clk 0:04.59] } 22.
fxe5 { [%clk 0:06.32] } 22... Nb5 { [%clk 0:04.21] } 23. Be3 { [%clk
0:05.58] } 23... Nd4 { [%clk 0:04.30] } 24. Qc4 { [%clk 0:05.33] } 24...
Qb5 { [%clk 0:00.21] } 25. Qxb5 { [%clk 0:05.19] } 25... Nxb5 { [%clk
0:00.30] } 26. d6 { [%clk 0:05.25] } 26... Bd8 { [%clk 0:00.39] } 27. Bxc5
{ [%clk 0:04.11] } 27... Re8 { [%clk 0:00.05] } 28. Ra1 { [%clk 0:04.20] }
28... Bg5 { [%clk 0:00.13] } 29. h4 { [%clk 0:03.16] } 29... Bh6 { [%clk
0:00.22] } 30. d7 { [%clk 0:03.11] } 1-0
[Event "Paul Keres Memorial"]
[Site "Tallinn EST"]
[Date "2011.01.09"]
[Round "7"]
[White "Kovaljov, Denis"]
[Black "Volodin, Aleksandr"]
[Result "0-1"]
[TimeControl "900+10"]
[Board "3"]
[Input "DGT4567"]
[WhiteClock "0:15.10"]
[BlackClock "0:15.10"]
[Clock "W/0:00.18"]
[WhiteElo "2274"]
[BlackElo "2487"]
[WhiteFideId "4500814"]
[BlackFideId "4501950"]
[BlackTitle "IM"]
1. d4 { [%clk 0:15.19] } 1... Nf6 { [%clk 0:15.09] } 2. Nf3 { [%clk
0:15.28] } 2... c5 { [%clk 0:15.26] } 3. e3 { [%clk 0:15.18] } 3... e6 {
[%clk 0:15.29] } 4. Be2 { [%clk 0:15.06] } 4... Be7 { [%clk 0:15.36] } 5.
O-O { [%clk 0:15.14] } 5... O-O { [%clk 0:15.42] } 6. b3 { [%clk 0:15.03] }
6... b6 { [%clk 0:15.46] } 7. c4 { [%clk 0:15.06] } 7... Bb7 { [%clk
0:15.54] } 8. Bb2 { [%clk 0:15.13] } 8... d6 { [%clk 0:16.03] } 9. Nc3 {
[%clk 0:15.14] } 9... Nbd7 { [%clk 0:16.11] } 10. d5 { [%clk 0:14.40] }
10... e5 { [%clk 0:16.16] } 11. Qc2 { [%clk 0:14.42] } 11... Re8 { [%clk
0:16.07] } 12. Nd2 { [%clk 0:14.38] } 12... Bf8 { [%clk 0:16.08] } 13. Rae1
{ [%clk 0:14.41] } 13... a6 { [%clk 0:15.45] } 14. a4 { [%clk 0:14.24] }
14... Bc8 { [%clk 0:15.17] } 15. f4 { [%clk 0:13.33] } 15... Qc7 { [%clk
0:12.48] } 16. f5 { [%clk 0:12.59] } 16... h6 { [%clk 0:10.21] } 17. g4 {
[%clk 0:13.01] } 17... Be7 { [%clk 0:10.21] } 18. Bc1 { [%clk 0:11.27] }
18... Nh7 { [%clk 0:09.32] } 19. e4 { [%clk 0:08.02] } 19... g5 { [%clk
0:08.57] } 20. Nf3 { [%clk 0:06.23] } 20... Ndf6 { [%clk 0:07.46] } 21. h4
{ [%clk 0:06.05] } 21... Nxg4 { [%clk 0:06.50] } 22. hxg5 { [%clk 0:05.58]
} 22... hxg5 { [%clk 0:06.54] } 23. Nxg5 { [%clk 0:05.45] } 23... Bxg5 {
[%clk 0:07.02] } 24. Bxg4 { [%clk 0:05.45] } 24... f6 { [%clk 0:06.37] }
25. Re2 { [%clk 0:05.03] } 25... Re7 { [%clk 0:04.32] } 26. Rg2 { [%clk
0:04.30] } 26... Rg7 { [%clk 0:04.41] } 27. Kf2 { [%clk 0:02.56] } 27...
Bd7 { [%clk 0:04.42] } 28. Rh1 { [%clk 0:02.09] } 28... Be8 { [%clk
0:04.33] } 29. Bf3 { [%clk 0:02.03] } 29... Bxc1 { [%clk 0:03.45] } 30.
Rxg7+ { [%clk 0:01.12] } 30... Qxg7 { [%clk 0:03.54] } 31. Qxc1 { [%clk
0:01.21] } 31... Ng5 { [%clk 0:03.58] } 32. Qg1 { [%clk 0:01.07] } 32... b5
{ [%clk 0:03.49] } 33. cxb5 { [%clk 0:00.37] } 33... axb5 { [%clk 0:03.57]
} 34. axb5 { [%clk 0:00.46] } 34... Ra3 { [%clk 0:03.55] } 35. Qb1 { [%clk
0:00.43] } 35... Qa7 { [%clk 0:03.57] } 36. Be2 { [%clk 0:00.43] } 36...
c4+ { [%clk 0:04.03] } 37. Kg2 { [%clk 0:00.25] } 37... Rxb3 { [%clk
0:04.07] } 38. Qe1 { [%clk 0:00.30] } 38... Qe3 { [%clk 0:03.11] } 39. Qh4
{ [%clk 0:00.14] } 39... Kf8 { [%clk 0:02.58] } 40. Qh8+ { [%clk 0:00.14] }
40... Ke7 { [%clk 0:03.08] } 41. Qg7+ { [%clk 0:00.27] } 41... Nf7 { [%clk
0:02.30] } 42. Rh8 { [%clk 0:00.27] } 42... Qg5+ { [%clk 0:02.15] } 43.
Qxg5 { [%clk 0:00.31] } 43... Nxg5 { [%clk 0:02.23] } 44. Nd1 { [%clk
0:00.18] } 44... c3 { [%clk 0:02.25] } 45. Ne3 { [%clk 0:00.20] } 45... Rb2
{ [%clk 0:02.19] } 46. Kf2 { [%clk 0:00.24] } 46... Bxb5 { [%clk 0:02.17] }
0-1
[Event "Paul Keres Memorial"]
[Site "Tallinn EST"]
[Date "2011.01.09"]
[Round "7"]
[White "Miezis, Normunds"]
[Black "Lugovoi, Aleksei"]
[Result "1/2-1/2"]
[TimeControl "900+10"]
[Board "4"]
[Input "DGT3456"]
[WhiteClock "0:15.08"]
[BlackClock "0:15.10"]
[Clock "W/0:00.55"]
[WhiteElo "2546"]
[BlackElo "2531"]
[WhiteFideId "11600136"]
[BlackFideId "4116194"]
[WhiteTitle "GM"]
[BlackTitle "GM"]
1. c4 { [%clk 0:15.15] } 1... Nf6 { [%clk 0:15.17] } 2. Nc3 { [%clk
0:15.22] } 2... d5 { [%clk 0:15.26] } 3. cxd5 { [%clk 0:15.29] } 3... Nxd5
{ [%clk 0:15.35] } 4. g3 { [%clk 0:15.34] } 4... e6 { [%clk 0:15.42] } 5.
Bg2 { [%clk 0:15.35] } 5... Be7 { [%clk 0:15.47] } 6. Nf3 { [%clk 0:15.25]
} 6... O-O { [%clk 0:15.52] } 7. d4 { [%clk 0:14.59] } 7... b6 { [%clk
0:15.21] } 8. e4 { [%clk 0:14.09] } 8... Nxc3 { [%clk 0:15.25] } 9. bxc3 {
[%clk 0:14.14] } 9... Ba6 { [%clk 0:14.47] } 10. Be3 { [%clk 0:13.19] }
10... Nd7 { [%clk 0:14.20] } 11. Nd2 { [%clk 0:12.04] } 11... c5 { [%clk
0:13.21] } 12. e5 { [%clk 0:09.18] } 12... Rc8 { [%clk 0:12.47] } 13. Qa4 {
[%clk 0:08.12] } 13... Nb8 { [%clk 0:12.54] } 14. Be4 { [%clk 0:07.07] }
14... Qc7 { [%clk 0:11.34] } 15. f4 { [%clk 0:06.28] } 15... h6 { [%clk
0:09.12] } 16. Kf2 { [%clk 0:04.47] } 16... b5 { [%clk 0:08.50] } 17. Qb3 {
[%clk 0:04.42] } 17... Rcd8 { [%clk 0:07.09] } 18. Nf3 { [%clk 0:03.58] }
18... Nc6 { [%clk 0:06.01] } 19. f5 { [%clk 0:03.07] } 19... exf5 { [%clk
0:05.55] } 20. Bxf5 { [%clk 0:03.14] } 20... b4 { [%clk 0:05.44] } 21. Rhe1
{ [%clk 0:02.52] } 21... Na5 { [%clk 0:04.16] } 22. Qc2 { [%clk 0:02.49] }
22... Qb6 { [%clk 0:04.07] } 23. Qe4 { [%clk 0:02.48] } 23... Bb7 { [%clk
0:03.39] } 24. Qg4 { [%clk 0:02.56] } 24... bxc3 { [%clk 0:02.51] } 25.
Rab1 { [%clk 0:03.00] } 25... Qc6 { [%clk 0:03.03] } 26. Rxb7 { [%clk
0:03.08] } 26... Nxb7 { [%clk 0:03.01] } 27. Be4 { [%clk 0:03.13] } 27...
Qe6 { [%clk 0:02.54] } 28. Bf5 { [%clk 0:02.15] } 28... Qa6 { [%clk
0:02.48] } 29. e6 { [%clk 0:02.21] } 29... h5 { [%clk 0:02.39] } 30. Qxh5 {
[%clk 0:02.24] } 30... g6 { [%clk 0:02.27] } 31. Bxg6 { [%clk 0:02.32] }
31... fxg6 { [%clk 0:02.37] } 32. Qxg6+ { [%clk 0:02.28] } 32... Kh8 {
[%clk 0:02.46] } 33. Qh6+ { [%clk 0:02.33] } 33... Kg8 { [%clk 0:02.56] }
34. Qg6+ { [%clk 0:02.17] } 34... Kh8 { [%clk 0:03.06] } 35. Qh6+ { [%clk
0:02.00] } 35... Kg8 { [%clk 0:03.15] } 36. Bg5 { [%clk 0:02.07] } 36...
Qxa2+ { [%clk 0:02.00] } 37. Re2 { [%clk 0:02.06] } 37... Qd5 { [%clk
0:02.10] } 38. Qg6+ { [%clk 0:01.55] } 38... Kh8 { [%clk 0:02.19] } 39.
Qh5+ { [%clk 0:01.31] } 39... Kg8 { [%clk 0:02.28] } 40. Qg6+ { [%clk
0:01.23] } 40... Kh8 { [%clk 0:02.38] } 1/2-1/2

View File

@ -0,0 +1,158 @@
<!DOCTYPE HTML>
<html>
<!--
pgn4web javascript chessboard
copyright (C) 2009-2013 Paolo Casaschi
see README file and http://pgn4web.casaschi.net
for credits, license and more details
-->
<head>
<title>dynamic frame test</title>
<link rel="shortcut icon" href="pawn.ico" />
<style type="text/css">
html, body {
margin: 0px;
padding: 0px;
}
span {
white-space:nowrap;
}
input {
height:20px;
font-size:9px;
}
</style>
</head>
<body style="overflow:hidden; font-size:9px; font-family:sans-serif;" onload="atLoad();">
<center>
<div style="padding:10px;" id="header">
<span>&nbsp; width <input id="width" style="width:6em;" type="number" onchange="change_w(this.value);"> &nbsp;</span>
<span>&nbsp; height <input id="height" style="width:6em;" type="number" onchange="change_h(this.value);"> &nbsp;</span>
<span>&nbsp; <input type="button" value="swap" onclick="swap_wh();"/> &nbsp;</span>
<span>&nbsp;&nbsp;</span>
<span>&nbsp; <input type="button" value="2:1" onclick="preselect(2,1);"/> &nbsp;</span>
<span>&nbsp; <input type="button" value="16:9" onclick="preselect(16,9);"/> &nbsp;</span>
<span>&nbsp; <input type="button" value="4:3" onclick="preselect(4,3);"/> &nbsp;</span>
<span>&nbsp; <input type="button" value="1:1" onclick="preselect(1,1);"/> &nbsp;</span>
<span>&nbsp; <input type="button" value="3:4" onclick="preselect(3,4);"/> &nbsp;</span>
<span>&nbsp; <input type="button" value="9:16" onclick="preselect(9,16);"/> &nbsp;</span>
<span>&nbsp; <input type="button" value="1:2" onclick="preselect(1,2);"/> &nbsp;</span>
<span>&nbsp;&nbsp;</span>
<span>&nbsp; <input type="button" value="narrow" onclick="modify(1/1.05, 1);"/> &nbsp;</span>
<span>&nbsp; <input type="button" value="wide" onclick="modify(1.05, 1);"/> &nbsp;</span>
<span>&nbsp; <input type="button" value="short" onclick="modify(1, 1/1.05);"/> &nbsp;</span>
<span>&nbsp; <input type="button" value="tall" onclick="modify(1, 1.05);"/> &nbsp;</span>
<span>&nbsp;&nbsp;</span>
<span>&nbsp; <input type="button" value="poke" onclick="modify(0, 0);"/>&nbsp;</span>
<span>&nbsp;&nbsp;</span>
<span>&nbsp; <input type="button" value="refresh" onclick="frameRefresh();"/> &nbsp;</span>
</div>
<iframe id="frame" src="" height="" width="" style="margin:10px;" frameborder="no" scrolling='no' marginheight='0' marginwidth='0'></iframe>
</center>
<script type="text/javascript">
"use strict";
var thisRegExp;
var minBoardSize = 200;
var frameWidth = "";
thisRegExp = /(&|\?)(frameWidth|fw)=([^&]*)(&|$)/i;
if (window.location.search.match(thisRegExp) !== null) {
frameWidth = unescape(window.location.search.match(thisRegExp)[3]);
}
var frameHeight = "";
thisRegExp = /(&|\?)(frameHeight|fh)=([^&]*)(&|$)/i;
if (window.location.search.match(thisRegExp) !== null) {
frameHeight = unescape(window.location.search.match(thisRegExp)[3]);
}
try {
document.getElementById("width").min = minBoardSize;
document.getElementById("height").min = minBoardSize;
} catch(e) {}
function atLoad() {
if (frameHeight || frameWidth) {
if (frameWidth && !frameHeight) { try { frameHeight = Math.floor(frameWidth * 9 / 16); } catch(e) {} }
if (frameHeight && !frameWidth) { try { frameWidth = Math.ceil(frameHeight / 9 * 16); } catch(e) {} }
change_w(frameWidth);
change_h(frameHeight);
} else { preselect(16, 9); }
frameRefresh();
}
var frameUrlSearch = location.search.replace(/(&|\?)(frameWidth|fw|frameHeight|fh)=([^&]*)/ig, "$1").replace(/(&|\?)&+/ig, "$1");
function frameRefresh() {
document.getElementById("frame").src = "dynamic-frame.html" + frameUrlSearch;
}
function preselect(w, h) {
var ww, wh, aw, ah, fw, fh;
if (window.innerWidth && window.innerHeight) { ww = window.innerWidth; wh = window.innerHeight; }
else if (document.documentElement && document.documentElement.clientWidth) { ww = document.documentElement.clientWidth; wh = document.documentElement.clientHeight; }
else if (document.body && document.body.clientWidth) { ww = document.body.clientWidth; wh = document.body.clientHeight; }
else { throw("failed to get window size"); }
aw = ww - 20;
ah = wh - document.getElementById("header").offsetHeight - 20;
if (w > h) {
fw = Math.ceil(Math.min(aw, ah * w / h));
fh = Math.floor(fw * h / w);
} else if (w < h) {
fw = Math.floor(Math.min(aw, ah * w / h));
fh = Math.ceil(fw * h / w);
} else {
fw = fh = Math.floor(Math.min(aw, ah));
}
change_w(fw);
change_h(fh);
}
function change_w(w) {
if (isNaN(w) || (w < minBoardSize)) { w = document.getElementById("width").value = minBoardSize; }
document.getElementById("frame").width = w;
if (w !== document.getElementById("width").value) { document.getElementById("width").value = w; }
}
function change_h(h) {
if (isNaN(h) || (h < minBoardSize)) { h = document.getElementById("height").value = minBoardSize; }
document.getElementById("frame").height = h;
if (h !== document.getElementById("height").value) { document.getElementById("height").value = h; }
}
function modify(dw, dh) {
if (dw === 0) { dw = (95 + 10 * Math.random()) / 100; }
if (dh === 0) { dh = (95 + 10 * Math.random()) / 100; }
if (dw != 1) { change_w(Math.round(document.getElementById("width").value * dw)); }
if (dh != 1) { change_h(Math.round(document.getElementById("height").value * dh)); }
}
function swap_wh() {
var fw = document.getElementById("height").value;
var fh = document.getElementById("width").value;
change_w(fw);
change_h(fh);
}
</script>
</body>
</html>

View File

@ -0,0 +1,881 @@
<!DOCTYPE HTML>
<html>
<!--
pgn4web javascript chessboard
copyright (C) 2009-2013 Paolo Casaschi
see README file and http://pgn4web.casaschi.net
for credits, license and more details
-->
<head>
<title>chess games</title>
<!-- use viewport settings when body.onresize adapts the chessboard to the available space -->
<meta name="viewport" content="initial-scale=1, maximum-scale=1">
<!-- AppCheck: meta -->
<link rel="shortcut icon" href="pawn.ico" />
<link rel="apple-touch-icon" href="pawn.png" />
<style type="text/css">
</style>
<style id="dynamicStyle" type="text/css"></style>
<script src="pgn4web.js" type="text/javascript"></script>
<script src="engine.js" type="text/javascript"></script>
<script src="fide-lookup.js" type="text/javascript"></script>
<script type="text/javascript">
"use strict";
SetHighlightOption(true);
SetGameSelectorOptions("&middot;&middot;&middot;", true, 30, 0, 8, 15, 15, 3, 0); // (head, num, chEvent, chSite, chRound, chWhite, chBlack, chResult, chDate);
SetAutoplayDelay(2000); // milliseconds
SetAutostartAutoplay(false);
SetAutoplayNextGame(false);
SetShortcutKeysEnabled(true);
var pgnData_default = "";
var refreshMinutes_default = 0;
var initialGame_default = "first";
var pieceBaseSize_default = 96;
var pieceFont_default = "uscf";
var theme = new Array();
theme[0] = new Array("black", "FFFFFF", "000000", "999999", "777777", "000000");
theme[1] = new Array("blue", "000000", "80B0E0", "E6EDF3", "A0BED8", "596978");
theme[2] = new Array("braun", "221100", "FFCE9E", "FFCE9E", "D18B47", "663300");
theme[3] = new Array("dark", "FFFFFF", "000000", "FFCE9E", "D18B47", "663300");
theme[4] = new Array("gray", "666666", "F4F4F4", "F4F4F4", "E0E0E0", "AAAAAA");
theme[5] = new Array("green", "333333", "EFF4EC", "EFF4EC", "C6CEC3", "999999");
theme[6] = new Array("light", "000000", "FFFFFF", "FFCE9E", "D18B47", "663300");
theme[7] = new Array("pink", "615F54", "EDE8D5", "EDE8D5", "CFCBB3", "F8CCA0");
theme[8] = new Array("white", "000000", "FFFFFF", "FFFFFF", "E4E4E4", "000000");
theme[9] = new Array("wood", "663300", "FFFFFF", "FFCC99", "CC9966", "663300");
theme[10] = new Array("yellow", "54110C", "F2D798", "F2D798", "C9AD6F", "54110C");
var colorTheme_indexDefault = 2;
var colorThemeOptions = "";
for (var ii = 0; ii < theme.length; ii++) { colorThemeOptions += "'" + theme[ii][0] + "' | "; }
colorThemeOptions += "'random' ";
var fontSizeRatio_default = 0.8;
var pieceSizeRatio_default = 0.8;
var sizeRatio_min = 0.3;
var sizeRatio_max = 1;
var framePaddingRatio_default = 0;
var thisParamString = window.location.search;
var thisRegExp;
thisRegExp = /(&|\?)(help|h)=(true|t)(&|$)/i;
if (thisParamString.match(thisRegExp) !== null) {
document.write("<pre style='font-size: smaller;'>pgn4web dynamic-frame.html parameters" + "\n" +
" - pgnData = file.pgn (no default)" + "\n" +
" - initialGame = initial game (default " + initialGame_default + ")" + "\n" +
" - live = if set true enables live broadcast with default values (default false)" + "\n" +
" - refreshMinutes = live broadcast delay (default " + refreshMinutes_default + ")" + "\n" +
" - refreshDemo = if set true sets live demo mode (default false)" + "\n" +
// " - pieceBaseSize = size of baseline piece bitmap (default " + pieceBaseSize_default + ")" + "\n" +
" - pieceFont = 'alpha' | 'merida' | 'uscf' | 'random' (default " + pieceFont_default + ")" + "\n" +
" - colorTheme = " + colorThemeOptions + "(default '" + theme[colorTheme_indexDefault][0] + "')" + "\n" +
" - fontColorHex = font color hex code, like FF0000 (default according to the selected color theme)" + "\n" +
" - backgroundColorHex = page background color hex code, like FF0000 (default according to the selected color theme)" + "\n" +
" - lightColorHex = light square color hex code, like FF0000 (default according to the selected color theme)" + "\n" +
" - darkColorHex = dark square color hex code, like FF0000 (default according to the selected color theme)" + "\n" +
" - highlightColorHex = highlight square color hex code, like FF0000, or 'transparent' for no highlight (default according to the selected color theme)" + "\n" +
" - showColorFlag = if set true shows a color flag for the side to move (default false)" + "\n" +
" - showEco = if set true shows the ECO code if available (default false)" + "\n" +
// " - fontSizeRatio = font size ratio, from " + sizeRatio_min + " to " + sizeRatio_max + " (default " + fontSizeRatio_default + ")" + "\n" +
// " - pieceSizeRatio = piece size ratio, from " + sizeRatio_min + " to " + sizeRatio_max + " (default " + pieceSizeRatio_default + ")" + "\n" +
// " - framePaddingRatio = frame padding as a square ratio (default " + framePaddingRatio_default + ")" + "\n" +
// " - horizontalCentered = if set true centers vertically the chessboard when in horizontal layout (default false)" + "\n" +
" - bare = if set true shows chessboard only (default false)" + "\n" +
// " - engineWinPrepareIdle = if set true preloads the analysis board with an empty board; use only for embedded analysis boards
// " - debug = true | false (default false)" + "\n" +
" - help = true" + "\n" +
"</pre>");
}
// undocumented feature
thisRegExp = /(&|\?)(engineWinPrepareIdle|ewpi)=(true|t)(&|$)/i;
var engineWinPrepareIdle = (thisParamString.match(thisRegExp) !== null);
// undocumented feature
thisRegExp = /(&|\?)(debug|d)=(true|t)(&|$)/i;
var debug = (thisParamString.match(thisRegExp) !== null);
var dynamicFrameDebugString = "";
var liveString = "";
thisRegExp = /(&|\?)(live|l)=([^&]*)(&|$)/i;
if (thisParamString.match(thisRegExp) !== null) {
liveString = unescape(thisParamString.match(thisRegExp)[3]);
}
if ((liveString == "true") || (liveString == "t")) {
refreshMinutes_default = 1;
}
var alertFlag = false;
var demoFlag = false;
thisRegExp = /(&|\?)(refreshDemo|rd)=([^&]*)(&|$)/i;
if (thisParamString.match(thisRegExp) !== null) {
var refreshDemo = unescape(thisParamString.match(thisRegExp)[3]);
if ((refreshDemo == "true") || (refreshDemo == "t")) { alertFlag = demoFlag = true; }
}
var refreshMinutes = refreshMinutes_default;
var stepFlag = true;
thisRegExp = /(&|\?)(refreshMinutes|rm)=([^&]*)(&|$)/i;
if (thisParamString.match(thisRegExp) !== null) {
refreshMinutes = parseFloat(unescape(thisParamString.match(thisRegExp)[3]));
if (isNaN(refreshMinutes)) { refreshMinutes = refreshMinutes_default; }
if (refreshMinutes <= 0) { refreshMinutes = refreshMinutes_default; }
}
if (refreshMinutes) {
pgnData_default = "live/live.pgn";
initialGame_default = "\\[\\s*Result\\s*\"\\*\"\\s*\\]";
}
SetInitialHalfmove(refreshMinutes ? "end" : "start", true);
SetLiveBroadcast(refreshMinutes, alertFlag, demoFlag, stepFlag);
var pgnData = pgnData_default;
thisRegExp = /(&|\?)(pgnData|pd)=([^&]*)(&|$)/i;
if (thisParamString.match(thisRegExp) !== null) {
pgnData = unescape(thisParamString.match(thisRegExp)[3]);
}
SetPgnUrl(pgnData);
var iniGame = initialGame_default;
thisRegExp = /(&|\?)(initialGame|ig)=([^&]*)(&|$)/i;
if (thisParamString.match(thisRegExp) !== null) {
iniGame = unescape(thisParamString.match(thisRegExp)[3]);
}
SetInitialGame(iniGame);
// undocumented feature
var allowedPieceBaseSize = new Array(20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 52, 56, 60, 64, 72, 80, 88, 96, 112, 128, 144, 300);
var pieceBaseSize = pieceBaseSize_default;
thisRegExp = /(&|\?)(pieceBaseSize|pbs)=([^&]*)(&|$)/i;
if (thisParamString.match(thisRegExp) !== null) {
var pieceBaseSize_input = unescape(thisParamString.match(thisRegExp)[3]);
pieceBaseSize = parseInt(pieceBaseSize_input, 10);
var validPieceBaseSize = false;
for (var pieceBaseIndex in allowedPieceBaseSize) {
if (pieceBaseSize === allowedPieceBaseSize[pieceBaseIndex]) {
validPieceBaseSize = true;
break;
}
}
if (!validPieceBaseSize) {
myAlert("warning: invalid pieceBaseSize=" + pieceBaseSize_input + ", reverting to " + pieceBaseSize_default + " as default");
pieceBaseSize = pieceBaseSize_default;
}
}
var pieceFont = pieceFont_default;
thisRegExp = /(&|\?)(pieceFont|pf)=([^&]*)(&|$)/i;
if (thisParamString.match(thisRegExp) !== null) {
pieceFont = unescape(thisParamString.match(thisRegExp)[3]);
}
if (pieceFont == "a") { pieceFont = "alpha"; }
if (pieceFont == "m") { pieceFont = "merida"; }
if (pieceFont == "u") { pieceFont = "uscf"; }
if (pieceFont == "i") { pieceFont = "igorsvg"; }
if (pieceFont == "s") { pieceFont = "svgchess"; }
if (pieceFont == "t") { pieceFont = "tilesvg"; }
if ((pieceFont == "random") || (pieceFont == "r")) {
pieceFont = ["alpha", "merida", "uscf"][Math.floor(3 * Math.random())];
}
if ((pieceFont != "alpha") && (pieceFont != "merida") && (pieceFont != "uscf") && (pieceFont != "igorsvg") && (pieceFont != "svgchess") && (pieceFont != "tilesvg")) { pieceFont = pieceFont_default; }
if ((pieceFont == "igorsvg") || (pieceFont == "svgchess") || (pieceFont == "tilesvg")) {
SetImagePath("images/" + pieceFont);
SetImageType("svg");
} else {
SetImagePath("images/" + pieceFont + "/" + pieceBaseSize);
SetImageType("png");
}
var colorTheme = theme[colorTheme_indexDefault][0];
thisRegExp = /(&|\?)(colorTheme|ct)=([\w]*)(&|$)/i;
if (thisParamString.match(thisRegExp) !== null) {
colorTheme = unescape(thisParamString.match(thisRegExp)[3]);
}
var colorTheme_index = colorTheme_indexDefault;
if (colorTheme == "random") { colorTheme_index = Math.floor(theme.length * Math.random()); }
else { for (ii = 0; ii < theme.length; ii++) { if (theme[ii][0] === colorTheme) { colorTheme_index = ii; break; } } }
var fontColorHex_default = theme[colorTheme_index][1];
var backgroundColorHex_default = theme[colorTheme_index][2];
var lightColorHex_default = theme[colorTheme_index][3];
var darkColorHex_default = theme[colorTheme_index][4];
var highlightColorHex_default = theme[colorTheme_index][5];
var fontColorHex = fontColorHex_default;
thisRegExp = /(&|\?)(fontColorHex|fch)=([A-F0-9]*)(&|$)/i;
if (thisParamString.match(thisRegExp) !== null) {
fontColorHex = unescape(thisParamString.match(thisRegExp)[3]);
}
var backgroundColorHex = backgroundColorHex_default;
thisRegExp = /(&|\?)(backgroundColorHex|bch)=([A-F0-9]*)(&|$)/i;
if (thisParamString.match(thisRegExp) !== null) {
backgroundColorHex = unescape(thisParamString.match(thisRegExp)[3]);
}
var lightColorHex = lightColorHex_default;
thisRegExp = /(&|\?)(lightColorHex|lch)=([A-F0-9]*)(&|$)/i;
if (thisParamString.match(thisRegExp) !== null) {
lightColorHex = unescape(thisParamString.match(thisRegExp)[3]);
}
var darkColorHex = darkColorHex_default;
thisRegExp = /(&|\?)(darkColorHex|dch)=([A-F0-9]*)(&|$)/i;
if (thisParamString.match(thisRegExp) !== null) {
darkColorHex = unescape(thisParamString.match(thisRegExp)[3]);
}
var highlightColorHex = highlightColorHex_default;
thisRegExp = /(&|\?)(highlightColorHex|hch)=(t|transparent)(&|$)/i;
if (thisParamString.match(thisRegExp) !== null) {
highlightColorHex = "";
clearShortcutSquares("D", "7");
} else {
thisRegExp = /(&|\?)(highlightColorHex|hch)=([A-F0-9]*)(&|$)/i;
if (thisParamString.match(thisRegExp) !== null) {
highlightColorHex = unescape(thisParamString.match(thisRegExp)[3]);
}
}
var showColorFlagString = "false";
thisRegExp = /(&|\?)(showColorFlag|scf)=([^&]*)(&|$)/i;
if (thisParamString.match(thisRegExp) !== null) {
showColorFlagString = unescape(thisParamString.match(thisRegExp)[3]);
}
var showColorFlag = ((showColorFlagString == "true") || (showColorFlagString == "t"));
var showEcoString = "false";
thisRegExp = /(&|\?)(showEco|se)=([^&]*)(&|$)/i;
if (thisParamString.match(thisRegExp) !== null) {
showEcoString = unescape(thisParamString.match(thisRegExp)[3]);
}
var showEco = ((showEcoString == "true") || (showEcoString == "t"));
// undocumented feature
var fontSizeRatio = fontSizeRatio_default;
thisRegExp = /(&|\?)(fontSizeRatio|fsr)=([0-9.]*)(&|$)/i;
if (thisParamString.match(thisRegExp) !== null) {
fontSizeRatio = parseFloat(unescape(thisParamString.match(thisRegExp)[3]));
if (isNaN(fontSizeRatio) || (fontSizeRatio < sizeRatio_min) || (fontSizeRatio > sizeRatio_max)) { fontSizeRatio = fontSizeRatio_default; }
}
// undocumented feature
var pieceSizeRatio = pieceSizeRatio_default;
thisRegExp = /(&|\?)(pieceSizeRatio|psr)=([0-9.]*)(&|$)/i;
if (thisParamString.match(thisRegExp) !== null) {
pieceSizeRatio = parseFloat(unescape(thisParamString.match(thisRegExp)[3]));
if (isNaN(pieceSizeRatio) || (pieceSizeRatio < sizeRatio_min) || (pieceSizeRatio > sizeRatio_max)) { pieceSizeRatio = pieceSizeRatio_default; }
}
// undocumented feature
var framePaddingRatio = framePaddingRatio_default;
thisRegExp = /(&|\?)(framePaddingRatio|fpr)=([0-9.]*)(&|$)/i;
if (thisParamString.match(thisRegExp) !== null) {
framePaddingRatio = parseFloat(unescape(thisParamString.match(thisRegExp)[3]));
if (isNaN(framePaddingRatio)) { framePaddingRatio = framePaddingRatio_default; }
}
// undocumented feature
var horizontalCenteredString = "";
thisRegExp = /(&|\?)(horizontalCentered|hc)=([^&]*)(&|$)/i;
if (thisParamString.match(thisRegExp) !== null) {
horizontalCenteredString = unescape(thisParamString.match(thisRegExp)[3]);
}
var horizontalCentered = ((horizontalCenteredString == "true") || (horizontalCenteredString == "t"));
var bareString = "";
thisRegExp = /(&|\?)(bare|b)=([^&]*)(&|$)/i;
if (thisParamString.match(thisRegExp) !== null) {
bareString = unescape(thisParamString.match(thisRegExp)[3]);
}
var bare = ((bareString == "true") || (bareString == "t"));
function myRulesLength(sheet) {
if (sheet.cssRules) { return sheet.cssRules.length; }
if (sheet.rules) { return sheet.rules.length; }
return null;
}
function myInsertRule(sheet, selector, declaration) {
if (sheet.insertRule) { sheet.insertRule(selector + "{ " + declaration + " }", myRulesLength(sheet)); }
else if (sheet.addRule) { sheet.addRule(selector, declaration); }
}
function myDeleteRule(sheet, index) {
if (sheet.deleteRule) { sheet.deleteRule(index); }
else if (sheet.removeRule) { sheet.removeRule(index); }
}
function toggleColorFlag() {
var theObj;
showColorFlag = !showColorFlag;
if (!showColorFlag) {
if (theObj = document.getElementById("whiteColorFlag")) { theObj.style.display = "none"; }
if (theObj = document.getElementById("whiteColorFlagFiller")) { theObj.style.display = "none"; }
if (theObj = document.getElementById("blackColorFlag")) { theObj.style.display = "none"; }
if (theObj = document.getElementById("blackColorFlagFiller")) { theObj.style.display = "none"; }
}
myOnResize();
}
function toggleShowEco() {
if (showEco = !showEco) {
fixHeaderItem("ECO", "GameECO", "ECO");
fixHeaderItem("ECO", "GameECOFiller", "ECO");
} else {
var theObj;
if (theObj = document.getElementById("GameECO")) { theObj.innerHTML = theObj.title = ""; }
if (theObj = document.getElementById("GameECOFiller")) { theObj.innerHTML = theObj.title = ""; }
}
}
var horizontalLayout;
function myOnResize() {
var ww, wh;
if (window.innerWidth && window.innerHeight) { ww = window.innerWidth; wh = window.innerHeight; }
else if (document.documentElement && document.documentElement.clientWidth) { ww = document.documentElement.clientWidth; wh = document.documentElement.clientHeight; }
else if (document.body && document.body.clientWidth) { ww = document.body.clientWidth; wh = document.body.clientHeight; }
else { return false; }
var squareSize;
if (bare) {
horizontalLayout = (ww >= wh);
squareSize = Math.min(ww / (8 + 2 * framePaddingRatio), wh / (8 + 2 * framePaddingRatio));
} else {
var squareSize_H = Math.min(ww / (16 / 9), wh) / (8 + 2 * framePaddingRatio);
var squareSize_V = Math.min(ww, wh / (16 / 9)) / (8 + 2 * framePaddingRatio);
horizontalLayout = (squareSize_H >= squareSize_V);
squareSize = horizontalLayout ? squareSize_H : squareSize_V;
}
var framePadding = framePaddingRatio * squareSize;
var bodyHeight = wh - 2 * framePadding;
var lineHeight;
if (horizontalLayout) {
lineHeight = Math.floor(squareSize * 8 / 16.5);
} else {
lineHeight = Math.floor(Math.min((wh - framePadding * 2 - squareSize * 8) / (11 + 6/2), squareSize * 8 / 16.5));
}
var fontSize = Math.floor(lineHeight * fontSizeRatio);
if (fontSize > lineHeight) { fontSize = lineHeight; }
var squareBorderWidth = Math.min(Math.ceil(squareSize / 50), 3);
var bareSquareSize = squareSize - 2 * squareBorderWidth;
var pieceSize = Math.floor(squareSize * pieceSizeRatio);
if (pieceSize > bareSquareSize) { pieceSize = Math.floor(bareSquareSize); }
var headerContainerWidth = horizontalLayout ? ww - 2 * framePadding - 9 * squareSize + Math.floor(3 * lineHeight / 4) : ww - 2 * framePadding;
if (document.styleSheets.length === 0) { return false; }
var sheet = document.styleSheets[0];
var oldRules = myRulesLength(sheet);
myInsertRule(sheet, "body", "-webkit-user-select: none; -moz-user-select: none; -ms-user-select: none; -o-user-select: none; user-select: none; -webkit-text-size-adjust: none; -moz-text-size-adjust: none; -ms-text-size-adjust: none; -o-text-size-adjust: none; text-size-adjust: none; -webkit-touch-callout: none; height: " + bodyHeight + "px; padding: 0px; margin: " + framePadding + "px; white-space: nowrap; overflow: hidden; color: #" + fontColorHex + "; background-color: #" + backgroundColorHex + "; font-family: sans-serif; line-height: " + lineHeight + "px; font-size: " + fontSize + "px;");
myInsertRule(sheet, "a", "text-decoration: none; color: #" + fontColorHex + ";");
if (bare) {
if (horizontalLayout) { myInsertRule(sheet, ".boardTable", "margin-left: " + ((ww - 2 * framePadding - 8 * squareSize) / 2) + "px;"); }
else { myInsertRule(sheet, ".boardTable", "margin-top: " + ((wh - 2 * framePadding - 8 * squareSize) / 2) + "px;"); }
} else {
if (horizontalLayout) { myInsertRule(sheet, ".boardTable", "float: left;" + (horizontalCentered ? " margin-top: " + ((wh - 2 * framePadding - 8 * squareSize) / 2) + "px;" : "")); }
else { myInsertRule(sheet, ".boardTable", "margin-left: " + ((ww - 2 * framePadding - 8 * squareSize) / 2) + "px;"); }
}
myInsertRule(sheet, ".pieceImage", "width:" + pieceSize + "px; height:" + pieceSize + "px;");
myInsertRule(sheet, ".whiteSquare", "width:" + bareSquareSize + "px; height:" + bareSquareSize + "px; border-style: solid; border-width: " + squareBorderWidth + "px;" + "background-color: #" + lightColorHex + "; border-color: #" + lightColorHex + ";");
myInsertRule(sheet, ".blackSquare", "width:" + bareSquareSize + "px; height:" + bareSquareSize + "px; border-style: solid; border-width: " + squareBorderWidth + "px;" + "background-color: #" + darkColorHex + "; border-color: #" + darkColorHex + ";");
myInsertRule(sheet, ".highlightWhiteSquare", "width:" + bareSquareSize + "px; height:" + bareSquareSize + "px; border-style: solid; border-width: " + squareBorderWidth + "px;" + "background-color: #" + lightColorHex + "; border-color: #" + (highlightColorHex ? highlightColorHex : lightColorHex) + ";");
myInsertRule(sheet, ".highlightBlackSquare", "width:" + bareSquareSize + "px; height:" + bareSquareSize + "px; border-style: solid; border-width: " + squareBorderWidth + "px;" + "background-color: #" + darkColorHex + "; border-color: #" + (highlightColorHex ? highlightColorHex : darkColorHex) + ";");
myInsertRule(sheet, ".headerContainer", "width: " + headerContainerWidth + "px; white-space: nowrap; overflow: hidden;" + (horizontalLayout ? " float: right; text-align: left;" + (horizontalCentered ? " margin-top: " + ((wh - 2 * framePadding - 8 * squareSize) / 2) + "px;" : "") : " text-align: center;"));
if (LiveBroadcastDelay > 0) {
myInsertRule(sheet, ".gameButtons", "display: none;");
} else {
myInsertRule(sheet, ".liveStatusLine", "display: none;");
if (horizontalLayout) { myInsertRule(sheet, ".gameButtons", "width: " + (headerContainerWidth - lineHeight) + "px; " + "text-align: left;"); }
var buttonCss = "margin: 0px; padding: 0px; width: " + (3 * lineHeight / 2) + "px !important; height: " + lineHeight + "px; color: #" + fontColorHex + "; border-style: none; -webkit-appearance: none; background-color: #" + backgroundColorHex + "; font-family: sans-serif; line-height: " + lineHeight + "px; font-size: " + fontSize + "px;";
myInsertRule(sheet, ".buttonControl", buttonCss);
myInsertRule(sheet, ".buttonControlPlay", buttonCss);
myInsertRule(sheet, ".buttonControlStop", buttonCss);
myInsertRule(sheet, ".buttonControlSpace", "margin: 0px; padding: 0px; width: " + (lineHeight / 4) + "px !important;");
}
myInsertRule(sheet, ".colorFlag", "height: 0.8ex; width: 0.8ex; border-width: 1px; border-color: #" + fontColorHex + "; border-style: solid; margin-bottom: 0.2ex; margin-left: " + Math.floor(5 * lineHeight / 9) + "px; margin-right:" + Math.floor(5 * lineHeight / 9) + "px;");
myInsertRule(sheet, ".leftRightSpacing", "margin-left: " + Math.floor(lineHeight / 2) + "px; margin-right: " + Math.floor(lineHeight / 2) + "px;");
if (!horizontalLayout) {
var variableSpacerLineHeight = Math.floor(Math.min((wh - framePadding * 2 - squareSize * 8 - lineHeight * 11) / 6, lineHeight / 2));
var variableSpacerFontSize = Math.floor(variableSpacerLineHeight * 0.8);
myInsertRule(sheet, ".variableSpacer", "line-height: " + variableSpacerLineHeight + "px; font-size: " + variableSpacerFontSize + "px;");
}
myInsertRule(sheet, ".gameLiveStatusExtraInfoLeft", horizontalLayout ? "display: none;" : "");
myInsertRule(sheet, ".showGameListLink", "padding-right: " + squareSize + "px; padding-left: " + (horizontalLayout ? 0 : squareSize) + "px;");
var gameListFontSize = Math.floor(Math.min((ww - framePadding * 2) / 30, (wh - framePadding * 2) / 24));
gameListLineHeight = Math.floor(1.4 * gameListFontSize);
var gameListPadding = Math.floor(gameListLineHeight / 2);
gameListBodyHeight = gameListLineHeight * Math.floor((wh - 2 * framePadding - gameListLineHeight - 2.5 * gameListPadding) / gameListLineHeight) + 1;
myInsertRule(sheet, ".gameList", "display: none; position: absolute; overflow: hidden; font-family: monospace; white-space: pre; font-size: " + gameListFontSize + "px; line-height: " + gameListLineHeight + "px;");
myInsertRule(sheet, ".gameListHeader", "overflow: hidden; width: " + (ww - 2 * framePadding) + "px; padding-top: " + gameListPadding + "px; padding-bottom: " + gameListPadding + "px;");
myInsertRule(sheet, ".gameListBody", "height: " + gameListBodyHeight + "px; width: " + (ww - 2 * framePadding) + "px; overflow-x: hidden; overflow-y: auto; scrollbar-base-color: #" + backgroundColorHex + "; overflow-scrolling: touch; -webkit-overflow-scrolling: touch;");
myInsertRule(sheet, ".gameListBodyItems", "min-height: " + gameListBodyHeight + "px; min-width: " + (ww - 2 * framePadding) + "px;");
myInsertRule(sheet, ".scrollLink", "visibility: " + (numberOfGames > gameListBodyHeight / gameListLineHeight + 0.2 ? "visible" : "hidden") + ";");
for (var ii = 0; ii < oldRules; ii++) { myDeleteRule(sheet, 0); }
var theObj;
if (theObj = document.getElementById("boardTable")) {
theObj.style.height = (squareSize * 8) + "px";
theObj.style.width = (squareSize * 8) + "px";
}
if (theObj = document.getElementById("HeaderContainer")) { theObj.style.display = bare ? "none" : document.getElementById("GameBoard").style.display; }
if (!firstStart) {
fixColorFlag();
fixECO();
}
dynamicFrameDebugString = "fw=" + ww + " fh=" + wh + " fp=" + Math.round(framePadding*100)/100 + " fs=" + fontSize + " ss=" + Math.round(squareSize*100)/100 + " sb=" + squareBorderWidth + " ps=" + pieceSize + " pbs=" + pieceBaseSize;
return pieceSize;
}
function customFunctionOnCheckLiveBroadcastStatus() {
updateBareShortcut();
}
function customDebugInfo() {
var dbg = "";
if (highlightColorHex) { dbg += "highlightOption=" + highlightOption + " "; }
if (LiveBroadcastDelay === 0) { dbg += "initialHalfmove=" + initialHalfmove + " "; }
dbg += "showColorFlag=" + showColorFlag + " " + "showEco=" + showEco;
if (debug) { dbg += " " + dynamicFrameDebugString; }
return dbg;
}
var textSelectOptionsLast = "none";
var currentGameLast = -1;
var gameListBodyHeight = -1;
var gameListLineHeight = -1;
function fillGameList(force) {
var theObj;
if ((currentGame !== currentGameLast) || (textSelectOptions !== textSelectOptionsLast)) {
currentGameLast = currentGame;
textSelectOptionsLast = textSelectOptions;
force = true;
var text;
if (theObj = document.getElementById("GameListBodyItems")) {
var extractGamesRegExp = /<OPTION CLASS="optionSelectControl" value=(\d+)>(\s*\d+)(\s{1,2}.{30})(.{10})([^<]+)/g;
var thisGameText, thisGameTitle1, thisGameTitle2;
var thisOption, thisNum, thisEvent, thisRound, thesePlayers, thisBold;
var firstGame = true;
var matches;
text = "";
while (matches = extractGamesRegExp.exec(textSelectOptions.replace(/&nbsp;/g, " "))) {
thisOption = matches[1];
thisNum = matches[2];
thisEvent = matches[3].replace(/\s+$/, "");
if (thisRound = matches[4].replace(/^\s+|\s+$/g, "")) { thisRound = " - " + thisRound; }
thesePlayers = simpleHtmlentities(matches[5]);
if (firstGame) { firstGame = false; } else { text += "<br/>"; }
thisBold = ((parseInt(thisNum, 10) - 1) === currentGame);
thisGameText = thisNum + (thisBold ? "." : " ") + thesePlayers + " " + thisEvent + thisRound + " ";
thisGameTitle1 = gameWhite[thisNum - 1] || "";
thisGameTitle1 += (thisGameTitle1 && gameBlack[thisNum - 1]) ? " " : "";
thisGameTitle1 += gameBlack[thisNum - 1] || "";
thisGameTitle1 += (thisGameTitle1 && gameResult[thisNum - 1]) ? " " : "";
thisGameTitle1 += gameResult[thisNum - 1] || "";
if (thisGameTitle1) { thisGameTitle1 = " " + thisGameTitle1 + " "; }
thisGameTitle2 = gameEvent[thisNum - 1] || "";
thisGameTitle2 += (thisGameTitle2 && gameRound[thisNum - 1]) ? " - " : "";
thisGameTitle2 += gameRound[thisNum - 1] || "";
if (thisGameTitle2) { thisGameTitle2 = " " + thisGameTitle2 + " "; }
text += "<a" + (thisBold ? " style='font-weight: bold;' " : " ") + "href='javascript:void(0);' onclick='selectGameList(" + thisOption + ");' title='" + thisGameTitle1 + (thisGameTitle1 && thisGameTitle2 ? "\n" : "") + thisGameTitle2 + "'>" + thisGameText + "</a>";
}
if (text === "") { text += "<a href='javascript:void(0);' onclick='selectGameList(-1);' title='back to chessboard'> --------------- --------------- --- </a>"; }
theObj.innerHTML = text;
if (theObj = document.getElementById("GameListHeader")) {
text = "";
text += "<a href='javascript:void(0);' onclick='selectGameList(-1);' title='back to chessboard'> " + numberOfGames.toString().replace(/\d$/, "").replace(/./g, " ") + "&crarr; </a> ";
text += "<a class='scrollLink' href='javascript:void(0);' onclick='if (theObj = document.getElementById(\"GameListBody\")) { theObj.scrollTop = 0; theObj.scrollLeft = 0; } this.blur();' title='scroll to first page'> &lt;&lt; </a> ";
text += "<a class='scrollLink' href='javascript:void(0);' onclick='if (theObj = document.getElementById(\"GameListBody\")) { theObj.scrollTop = gameListLineHeight * (Math.ceil(theObj.scrollTop / gameListLineHeight) - Math.floor(gameListBodyHeight / gameListLineHeight)); theObj.scrollLeft = 0; } this.blur();' title='scroll to previous page'> &lt; </a> ";
text += "<a class='scrollLink' href='javascript:void(0);' onclick='if (theObj = document.getElementById(\"GameListBody\")) { theObj.scrollTop = gameListLineHeight * (Math.ceil(theObj.scrollTop / gameListLineHeight) + Math.floor(gameListBodyHeight / gameListLineHeight)); theObj.scrollLeft = 0; } this.blur();' title='scroll to next page'> &gt; </a> ";
text += "<a class='scrollLink' href='javascript:void(0);' onclick='if (theObj = document.getElementById(\"GameListBody\")) { theObj.scrollTop = theObj.scrollHeight; theObj.scrollLeft = 0; } this.blur();' title='scroll to last page'> &gt;&gt; </a> ";
text += "<a class='scrollLink' href='javascript:void(0);' onclick='if (theObj = document.getElementById(\"GameListBody\")) { theObj.scrollTop = gameListLineHeight * (currentGame ? currentGame - 1 : 0); theObj.scrollLeft = 0; } this.blur();' title='scroll to current game'> &middot; </a> ";
theObj.innerHTML = text;
}
}
}
if (force && (theObj = document.getElementById("GameListBody"))) {
setTimeout("document.getElementById('GameListBody').scrollTop = (currentGame - 1) * gameListLineHeight; document.getElementById('GameListBody').scrollLeft = 0;", 111);
}
}
var oldHeaderContainerDisplay;
function showGameList() {
if (numberOfGames < 2) { return; }
var theObj = document.getElementById("GameList");
if ((theObj) && (theObj.style.display == "block")) { return; }
disableShortcutKeysAndStoreStatus();
fillGameList(true);
if (theObj = document.getElementById("HeaderContainer")) {
oldHeaderContainerDisplay = theObj.style.display;
theObj.style.display = "none";
}
if (theObj = document.getElementById("GameBoard")) { theObj.style.display = "none"; }
if (theObj = document.getElementById("GameList")) { theObj.style.display = "block"; }
}
function selectGameList(gameNum) {
var theObj = document.getElementById("GameList");
if ((theObj) && (theObj.style.display === "")) { return; }
if (gameNum != -1) { Init(gameNum); }
if (theObj = document.getElementById("GameList")) { theObj.style.display = ""; }
if (theObj = document.getElementById("GameBoard")) { theObj.style.display = ""; }
if (theObj = document.getElementById("HeaderContainer")) { theObj.style.display = oldHeaderContainerDisplay; }
restoreShortcutKeysStatus();
}
var liveBroadcastUpdateTicker = 0;
var previousPlyNumber = -1;
function customFunctionOnPgnTextLoad() {
var noGamesLoaded = (numberOfGames == 1) && (PlyNumber === 0) && (StartPly === 0) && (!gameWhite[0]) && (!gameBlack[0]) && (!gameResult[0]) && (!gameFEN[0]);
if (LiveBroadcastDelay > 0) {
if (previousPlyNumber !== PlyNumber) {
previousPlyNumber = PlyNumber;
liveBroadcastUpdateTicker++;
}
document.title = liveBroadcastUpdateTicker + "." + LiveBroadcastStatusString.replace(/^(\d*)\D*(\d*)$/, "$1.$2") + " live broadcast" + (demoFlag ? " demo" : "");
} else {
if (noGamesLoaded) { document.title = alertNum ? "PGN data error" : "chess games viewer"; }
else { document.title = numberOfGames + " game" + (numberOfGames == 1 ? "" : "s"); }
}
fillGameList(false);
if (theObj = document.getElementById("ShowGameListLink")) {
theObj.title = "select from " + numberOfGames + " games";
var text = "", ii;
for (ii = 0; ii <= 4 + Math.log(numberOfGames)/Math.LN2; ii++) { text += "&middot; "; }
text += "&middot;";
theObj.innerHTML = text;
}
if (theObj = document.getElementById("ShowGameList")) {
theObj.style.visibility = numberOfGames > 1 ? "visible" : "hidden";
}
if (numberOfGames > 1) {
boardShortcut("F5", "show games list", function(t,e){ showGameList(); });
} else {
boardShortcut("F5", "", function(t,e){});
}
if (engineWinPrepareIdle) {
showEngineAnalysisBoard(true, true);
engineWinPrepareIdle = false;
}
<!-- AppCheck: customFunctionOnPgnTextLoad -->
}
function fixHeaderItem(tag, objectId, label) {
var theObj = document.getElementById(objectId);
if (theObj) {
var tagValue = simpleHtmlentitiesDecode(tag ? customPgnHeaderTag(tag, objectId) : theObj.innerHTML);
if (tagValue) {
theObj.title = label + ": " + tagValue;
theObj.className = "leftRightSpacing";
} else {
theObj.title = label;
theObj.className = "";
}
}
}
function customFunctionOnPgnGameLoad() {
myOnResize();
fixHeaderItem(null, "GameEvent", "event");
fixHeaderItem(null, "GameSite", "site");
fixHeaderItem(null, "GameDate", "date");
fixHeaderItem(null, "GameRound", "round");
fixHeaderItem(null, "GameWhite", "white player");
fixHeaderItem(null, "GameBlack", "black player");
fixHeaderItem(null, "GameResult", "result");
fixHeaderItem("Section", "GameSection", "section");
fixHeaderItem("Stage", "GameStage", "stage");
fixHeaderItem("WhiteTitle", "GameWhiteTitle", "white title");
fixHeaderItem("WhiteElo", "GameWhiteElo", "white elo");
fixHeaderItem("WhiteTeam", "GameWhiteTeam", "white team");
fixHeaderItem("BlackTitle", "GameBlackTitle", "black title");
fixHeaderItem("BlackElo", "GameBlackElo", "black elo");
fixHeaderItem("BlackTeam", "GameBlackTeam", "black team");
if (showEco) {
fixHeaderItem("ECO", "GameECO", "ECO");
fixHeaderItem("ECO", "GameECOFiller", "ECO");
}
updateBareShortcut();
var theObj = document.getElementById("GameResult");
if ((theObj) && (theObj.innerHTML == "*")) { theObj.innerHTML = "&lowast;"; }
<!-- AppCheck: customFunctionOnPgnGameLoad -->
}
function customFunctionOnMove() {
var extraMoves = 2;
document.getElementById("GamePrevMoves").innerHTML = "";
document.getElementById("GameCurrMove").innerHTML = "";
document.getElementById("GameNextMoves").innerHTML = "";
var theObj = document.getElementById("GamePrevMoves");
var thisPly = Math.max(CurrentPly - extraMoves - 1, StartPly);
if (thisPly > StartPly) { theObj.innerHTML += "... "; }
for (; thisPly < Math.min(CurrentPly + extraMoves, StartPly + PlyNumber); thisPly++) {
if (thisPly == CurrentPly) {
theObj = document.getElementById("GameNextMoves");
}
if (thisPly % 2 === 0) { theObj.innerHTML += Math.floor(1 + thisPly / 2) + ". "; }
if (thisPly == CurrentPly - 1) {
theObj = document.getElementById("GameCurrMove");
}
theObj.innerHTML += Moves[thisPly] + " ";
}
if (thisPly < StartPly + PlyNumber) { theObj.innerHTML += "..."; }
fixHeaderItem(null, "GameWhiteClock", "white clock");
fixHeaderItem(null, "GameBlackClock", "black clock");
fixColorFlag();
fixECO();
<!-- AppCheck: customFunctionOnMove -->
}
function fixColorFlag() {
var theObj;
if (showColorFlag) {
var whiteFlagPadding = (horizontalLayout || ((theObj = document.getElementById("GameWhiteClock")) && (theObj.innerHTML)));
if (theObj = document.getElementById("whiteColorFlag")) {
theObj.style.display = "inline";
theObj.style.visibility = CurrentPly % 2 ? "hidden" : "visible";
}
if (theObj = document.getElementById("whiteColorFlagFiller")) {
theObj.style.display = whiteFlagPadding ? "inline" : "none";
theObj.style.visibility = "hidden";
}
var blackFlagPadding = (horizontalLayout || ((theObj = document.getElementById("GameBlackClock")) && (theObj.innerHTML)));
if (theObj = document.getElementById("blackColorFlag")) {
theObj.style.display = "inline";
theObj.style.visibility = CurrentPly % 2 ? "visible" : "hidden";
}
if (theObj = document.getElementById("blackColorFlagFiller")) {
theObj.style.display = blackFlagPadding ? "inline" : "none";
theObj.style.visibility = "hidden";
}
}
}
function fixECO() {
var theObj = document.getElementById("GameECOFiller");
if (theObj) {
theObj.style.display = horizontalLayout ? "none" : "";
}
}
function searchPlayer(name, FideId) {
if (typeof(openFidePlayerUrl) == "function") { openFidePlayerUrl(name, FideId); }
}
function customShortcutKey_Shift_1() {
searchPlayer(gameWhite[currentGame], customPgnHeaderTag('WhiteFideId'));
}
function customShortcutKey_Shift_2() {
searchPlayer(gameBlack[currentGame], customPgnHeaderTag('BlackFideId'));
}
function customShortcutKey_Shift_3() {
showGameList();
}
function customShortcutKey_Shift_4() {
toggleBareChessboard();
}
var showFullscreenChessboardTimeout = null;
function customShortcutKey_Shift_5() {
if (showFullscreenChessboardTimeout) {
clearTimeout(showFullscreenChessboardTimeout);
showFullscreenChessboardTimeout = null;
showFullscreenChessboard(true);
} else {
showFullscreenChessboardTimeout = setTimeout("showFullscreenChessboardTimeout = false; showFullscreenChessboard(false);", 333);
}
}
function customShortcutKey_Shift_6() {
toggleShowEco();
}
function customShortcutKey_Shift_7() {
toggleColorFlag();
}
// customShortcutKey_Shift_8 defined by engine.js
// customShortcutKey_Shift_9 defined by engine.js
// customShortcutKey_Shift_0 defined by engine.js
function toggleBareChessboard() {
bare = !bare;
myOnResize();
updateBareShortcut();
}
function showFullscreenChessboard(newWin) {
var win = window;
if (newWin) { win.open(location.href.replace(/(pieceBaseSize|pbs)=[^&]*/gi, ""), "_blank"); }
else {
while (win.parent !== win) { win = win.parent; }
win.location.href = location.href.replace(/(pieceBaseSize|pbs)=[^&]*/gi, "");
}
}
function toggleInitialHalfmove(reset2default) {
SetInitialHalfmove(reset2default ? 'start' : (initialHalfmove == 'end' ? 'start' : 'end'), true);
GoToMove(initialHalfmove == 'end' ? StartPlyVar[0] + PlyNumberVar[0] : StartPlyVar[0], 0);
}
boardShortcut("E7", "toggle ECO code", function(t,e){ toggleShowEco(); });
// disable FlipBoard functionality, otherwise remember to redefine FlipBoard() to include myOnResize()
var warnedFlipBoard = false;
function FlipBoard() { if (!warnedFlipBoard) { myAlert("warning: flip board functionality disabled", false, true); warnedFlipBoard = true; } }
boardShortcut("F7", "toggle side to move flag", function(t,e){ toggleColorFlag(); });
if (LiveBroadcastDelay === 0) {
boardShortcut("G6", "toggle initial halfmove", function(t,e){ toggleInitialHalfmove(e.shiftKey); });
}
if (window.parent !== window) {
boardShortcut("H5", "show fullscreen chessboard", function(t,e){ showFullscreenChessboard(e.shiftKey); });
}
function updateBareShortcut() {
boardShortcut("G5", bare ? "unhide game info\n\n" + gameTooltipInfo() : "maximize chessboard and hide game info", function(t,e){ toggleBareChessboard(); });
}
function meaningfulHeader(tagValue) {
return ((typeof(tagValue) == "string") && (tagValue.match(/[^\s?.-]/)));
}
function gameTooltipInfo() {
var str = " game " + (currentGame+1) + " of " + numberOfGames + " ";
if (LiveBroadcastDelay > 0) { str += LiveBroadcastStatusString.replace(/^(\d*).*$/, "($1 live) "); }
if (meaningfulHeader(gameEvent[currentGame])) { str+= "\n event: " + gameEvent[currentGame] + " "; }
if (meaningfulHeader(gameSite[currentGame])) { str+= "\n site: " + gameSite[currentGame] + " "; }
if (meaningfulHeader(gameDate[currentGame])) { str+= "\n date: " + gameDate[currentGame] + " "; }
if (meaningfulHeader(gameRound[currentGame])) { str+= "\n round: " + gameRound[currentGame] + " "; }
if (meaningfulHeader(gameWhite[currentGame])) { str+= "\n white: " + gameWhite[currentGame] + " "; }
if (meaningfulHeader(gameBlack[currentGame])) { str+= "\n black: " + gameBlack[currentGame] + " "; }
if (meaningfulHeader(gameResult[currentGame])) { str+= "\n result: " + gameResult[currentGame] + " "; }
return str;
}
function searchNextEventRound(backward) {
searchPgnGame('\\[\\s*Event\\s*"(?!' + fixRegExp(gameEvent[currentGame]) + '"\\s*\\])|\\[\\s*Section\\s*"(?!' + fixRegExp(customPgnHeaderTag("Section")) + '"\\s*\\])|\\[\\s*Stage\\s*"(?!' + fixRegExp(customPgnHeaderTag("Stage")) + '"\\s*\\])|\\[\\s*Round\\s*"(?!' + fixRegExp(gameRound[currentGame]) + '"\\s*\\])', backward);
}
var lastOrientation;
var lastOrientationTimeout = null;
simpleAddEvent(window, "orientationchange", function() {
var theObj;
if (window.orientation === lastOrientation) { return; }
var lastOrientationTimeoutString = "lastOrientationTimeout = null;";
if (lastOrientationTimeout) {
clearTimeout(lastOrientationTimeout);
if ((theObj = document.getElementById("GameList")) && (theObj.style.display)) { selectGameList(-1); }
lastOrientationTimeoutString += " refreshPgnSource();";
} else {
if (theObj = document.getElementById("GameListBody")) {
setTimeout("document.getElementById('GameListBody').scrollTop = (currentGame - 1) * gameListLineHeight; document.getElementById('GameListBody').scrollLeft = 0;", 111);
}
}
lastOrientationTimeout = setTimeout(lastOrientationTimeoutString, 1800);
lastOrientation = window.orientation;
});
</script>
</head>
<body onResize="myOnResize();" onLoad="myOnResize();">
<!-- paste your PGN below and make sure you dont specify an external source with SetPgnUrl() -->
<form style="display: none;"><textarea style="display: none;" id="pgnText">
</textarea></form>
<!-- paste your PGN above and make sure you dont specify an external source with SetPgnUrl() -->
<div style="display:none;" id="GameSelector"></div>
<div class="gameList" id="GameList"><div class="gameListHeader" id="GameListHeader"></div><div class="gameListBody" id="GameListBody"><div class="gameListBodyItems" id="GameListBodyItems"></div></div></div>
<div id="GameBoard"></div>
<div class="headerContainer" id="HeaderContainer">
<div class="firstVariableSpacer">&nbsp;</div>
<div>&nbsp;<span id="GameSite" title="site"></span><span id="GameDate" title="date"></span>&nbsp;</div>
<div>&nbsp;<a href="javascript:void(0);" onclick="searchNextEventRound(event.shiftKey); this.blur();"><span id="GameEvent" title="event"></span><span id="GameSection" title="section"></span><span id="GameStage" title="stage"></span><span id="GameRound" title="round"></span></a>&nbsp;</div>
<div class="variableSpacer">&nbsp;</div>
<div>&nbsp;<span style="display:inline-block;" title="white to move"><img class="colorFlag" style="background:white; display:none;" id="whiteColorFlag" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACgAAAAoEAYAAADcbmQuAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAAZiS0dEAMAAwADAGp0HVAAAAAlwSFlzAAAASAAAAEgARslrPgAAAAl2cEFnAAAAKAAAACgAo3CU+AAAACNJREFUaN7twQENAAAAwqD3T20PBxQAAAAAAAAAAAAAAAAPBjIoAAFxtd2pAAAAAElFTkSuQmCC" /></span><a id="GameWhiteClock" href="javascript:void(0);" onclick="if (!showColorFlag) { toggleColorFlag(); setTimeout('if (showColorFlag) { toggleColorFlag(); }', 1111); } this.blur();" title="white clock"></a><span style="display:inline-block;"><img class="colorFlag" style="background:white; display:none;" id="whiteColorFlagFiller" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACgAAAAoEAYAAADcbmQuAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAAZiS0dEAMAAwADAGp0HVAAAAAlwSFlzAAAASAAAAEgARslrPgAAAAl2cEFnAAAAKAAAACgAo3CU+AAAACNJREFUaN7twQENAAAAwqD3T20PBxQAAAAAAAAAAAAAAAAPBjIoAAFxtd2pAAAAAElFTkSuQmCC" /></span>&nbsp;</div>
<div>&nbsp;<a style="font-weight: bold;" id="GameWhite" href="javascript:void(0);" onclick="searchPlayer(this.innerHTML, customPgnHeaderTag('WhiteFideId')); this.blur();" title="white player"></a><span id="GameWhiteTitle" title="white title"></span><span id="GameWhiteElo" title="white elo"></span><span id="GameWhiteTeam" title="white team"></span><span style="font-weight: bold;">&nbsp;</span></div>
<div>&nbsp;<a style="font-weight:bold;" id="GameBlack" href="javascript:void(0);" onclick="searchPlayer(this.innerHTML, customPgnHeaderTag('BlackFideId')); this.blur();" title="black player"></a><span id="GameBlackTitle" title="black title"></span><span id="GameBlackElo" title="black elo"></span><span id="GameBlackTeam" title="black team"></span><span style="font-weight: bold;">&nbsp;</span></div>
<div>&nbsp;<span style="display:inline-block;" title="black to move"><img class="colorFlag" style="background:black; display:none;" id="blackColorFlag" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACgAAAAoEAYAAADcbmQuAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAAZiS0dEAMAAwADAGp0HVAAAAAlwSFlzAAAASAAAAEgARslrPgAAAAl2cEFnAAAAKAAAACgAo3CU+AAAACNJREFUaN7twQENAAAAwqD3T20PBxQAAAAAAAAAAAAAAAAPBjIoAAFxtd2pAAAAAElFTkSuQmCC" /></span><a id="GameBlackClock" href="javascript:void(0);" onclick="if (!showColorFlag) { toggleColorFlag(); setTimeout('if (showColorFlag) { toggleColorFlag(); }', 1111); } this.blur();" title="black clock"></a><span style="display:inline-block;"><img class="colorFlag" style="background:black; display:none;" id="blackColorFlagFiller" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACgAAAAoEAYAAADcbmQuAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAAZiS0dEAMAAwADAGp0HVAAAAAlwSFlzAAAASAAAAEgARslrPgAAAAl2cEFnAAAAKAAAACgAo3CU+AAAACNJREFUaN7twQENAAAAwqD3T20PBxQAAAAAAAAAAAAAAAAPBjIoAAFxtd2pAAAAAElFTkSuQmCC" /></span>&nbsp;</div>
<div class="variableSpacer">&nbsp;</div>
<div>&nbsp;<span style="visibility:hidden; padding-right:2.5em;" id="GameECOFiller"></span><a style="font-weight: bold;" id="GameResult" href="javascript:void(0);" onclick="if (!showEco) { toggleShowEco(); setTimeout('if (showEco) { toggleShowEco(); }', 1111); } this.blur();" title="result"></a><span style="padding-left:2.5em;" id="GameECO"></span><span style="font-weight: bold;">&nbsp;</span></div>
<div class="variableSpacer">&nbsp;</div>
<div class="leftRightSpacing">&nbsp;<a id="GamePrevMoves" href="javascript:void(0);" onclick="GoToMove(CurrentPly - 1); this.blur();" title="previous moves"></a><a style="font-weight: bold;" id="GameCurrMove" href="javascript:void(0);" onclick="if (!highlightOption) { SetHighlight(!highlightOption); setTimeout('if (highlightOption) { SetHighlight(!highlightOption); }', 1111); } this.blur();" title="current move as shown on chessboard"></a><a id="GameNextMoves" href="javascript:void(0);" onclick="GoToMove(CurrentPly + 1); this.blur();" title="next moves"></a><span style="font-weight: bold;">&nbsp;</span></div>
<div class="variableSpacer">&nbsp;</div>
<center><div class="leftRightSpacing gameButtons" id="GameButtons"></div></center>
<div class="liveStatusLine">&nbsp;<span id="GameLiveStatusExtraInfoLeft" class="leftRightSpacing gameLiveStatusExtraInfoLeft" style="visibility: hidden;"></span><a id="GameLiveStatus" class="leftRightSpacing" href="javascript:void(0);" onclick="refreshPgnSource(); this.blur();"></a><span id="GameLiveStatusExtraInfoRight" class="leftRightSpacing" style="visibility: hidden;"></span>&nbsp;</div>
<div class="variableSpacer">&nbsp;</div>
<div class="leftRightSpacing" style="visibility: hidden;" id="ShowGameList">&nbsp;<a class="showGameListLink" id="ShowGameListLink" href="javascript:void(0);" onclick="showGameList();"></a>&nbsp;</div>
</div>
<script type="text/javascript">
"use strict";
if (LiveBroadcastDelay && LiveBroadcastDemo) {
var theObj = document.getElementById("GameLiveStatusExtraInfoRight");
if (theObj) {
theObj.innerHTML = "demo";
theObj.title = "this is a broadcast simulation";
theObj.style.visibility = "visible";
}
if (theObj = document.getElementById("GameLiveStatusExtraInfoLeft")) {
theObj.innerHTML = "demo";
}
}
<!-- AppCheck: footer -->
</script>
</body>
</html>

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,107 @@
<?php
/*
* pgn4web javascript chessboard
* copyright (C) 2009-2013 Paolo Casaschi
* see README file and http://pgn4web.casaschi.net
* for credits, license and more details
*/
error_reporting(E_ALL | E_STRICT);
include "pgn-encoder.php";
function get_param($param, $shortParam, $default) {
if (isset($_REQUEST[$param])) { return $_REQUEST[$param]; }
if (isset($_REQUEST[$shortParam])) { return $_REQUEST[$shortParam]; }
return $default;
}
$pgnText = get_param("pgnText", "pt", "");
if ($pgnText) {
$pgnText = str_replace(array("&", "<", ">"), array("&amp;", "&lt;", "&gt;"), $pgnText);
$pgnTextBox = $pgnText;
$pgnText = str_replace("\\\"", "\"", $pgnText);
$pgnText = preg_replace("/\[/", "\n\n[", $pgnText);
$pgnText = preg_replace("/\]/", "]\n\n", $pgnText);
$pgnText = preg_replace("/([012\*])(\s*)(\[)/", "$1\n\n$3", $pgnText);
$pgnText = preg_replace("/\]\s*\[/", "]\n[", $pgnText);
$pgnText = preg_replace("/^\s*\[/", "[", $pgnText);
$pgnText = preg_replace("/\n[\s*\n]+/", "\n\n", $pgnText);
} else {
$pgnText = <<<END
[White ""]
[Black ""]
[Result ""]
[Date ""]
[Event ""]
[Site ""]
[Round ""]
{please enter your PGN games in the textbox and then click the button}
END;
$pgnTextBox = $pgnText;
}
$pgnLength = strlen($pgnTextBox);
$pgnEncoded = EncodePGN($pgnText);
$pgnEncodedLength = strlen($pgnEncoded);
$compressionRatio = round(100 * $pgnEncodedLength / $pgnLength) . "%";
$frameUrl = "board.html?am=l&d=1000&ss=26&ps=d&pf=d&lcs=YeiP&dcs=Qcij&bbcs=D91v&hm=n&hcs=Udiz&bd=s&cbcs=YeiP&ctcs=\$\$\$\$&hd=j&md=f&tm=13&fhcs=\$\$\$\$&fhs=13&fmcs=\$\$\$\$&fccs=v71\$&hmcs=Qcij&fms=13&fcs=m&cd=i&bcs=____&fp=13&hl=t&fh=b&fw=p&pe=" . $pgnEncoded;
$frameUrlLength = strlen($frameUrl);
$thisScript = $_SERVER['SCRIPT_NAME'];
print <<<END
<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">
<title>pgn4web PGN encoder/decoder php example</title>
<link rel="shortcut icon" href="pawn.ico" />
</head>
<body style="font-family: sans-serif; margin:20px; padding:0px;">
<h1 style="margin-top:0px; padding-top:0px;">pgn4web PGN encoder/decoder php example</h1>
<center>
<iframe src="$frameUrl"
height="312" width="900" frameborder="0" scrolling="no" marginheight="0" marginwidth="0">
your web browser and/or your host do not support iframes as required to display the chessboard
</iframe>
<form action="$thisScript" method="POST">
<input type="submit" style="width:900px;" value="pgn4web PGN encoder/decoder php example">
<textarea id="pgnText" name="pgnText" style="height:300px; width:900px; margin:13px;">$pgnTextBox</textarea>
</form>
<div style="width:900px; text-align:left; font-size:66%;">PGN:$pgnLength &nbsp; &nbsp; encoded:$pgnEncodedLength &nbsp; &nbsp; ratio:$compressionRatio &nbsp; &nbsp; url:$frameUrlLength</div>
</center>
</body>
</html>
END;
?>

1211
_assets/vendor/pgn4web/engine.html vendored Normal file

File diff suppressed because it is too large Load Diff

114
_assets/vendor/pgn4web/engine.js vendored Normal file
View File

@ -0,0 +1,114 @@
/*
* pgn4web javascript chessboard
* copyright (C) 2009-2013 Paolo Casaschi
* see README file and http://pgn4web.casaschi.net
* for credits, license and more details
*/
if (typeof(pgn4web_engineWindowDisableAnalysisBoard) == "undefined") { var pgn4web_engineWindowDisableAnalysisBoard = false; }
if (!pgn4web_engineWindowDisableAnalysisBoard) {
boardShortcut("A8", "pgn4web v" + pgn4web_version + " debug info", function(t,e){ if (e.shiftKey) { if (engineWinCheck()) { engineWin.displayDebugInfo(); } } else { displayDebugInfo(); } }, true);
boardShortcut("E8", "open/update analysis board", function(t,e){ showEngineAnalysisBoard(e.shiftKey); });
boardShortcut("F8", "close/pause analysis board", function(t,e){ if (engineWinCheck()) { if (e.shiftKey) { if ((engineWin.top === engineWin.self) && (engineWin.focus)) { engineWin.focus(); } } else { engineWin.StopBackgroundEngine(); if ((engineWin.top === engineWin.self) && (engineWin.close)) { engineWin.close(); } } } });
function customShortcutKey_Shift_8() { showEngineAnalysisBoard(true); }
function customShortcutKey_Shift_9() { showEngineAnalysisBoard(false); }
function customShortcutKey_Shift_0() { showEngineAnalysisBoard(); }
}
"use strict";
var pgn4web_engineWindowTarget = "pgn4webEngineAnalysisBoard";
var pgn4web_engineWindowUrlParameters = "";
var pgn4web_engineWindowHeight = 30 * 12; // window height/width corresponding to default squareSize = 30
var pgn4web_engineWindowWidth = 30 * 10;
// notes:
// - all pages on the same site will use the same analysis board popup; if the analysis board is embedded as iframe within a page (see the live-results-viewer.html example) the pgn4web_engineWindowTarget variable should be customized in order to prevent conflicts
// - if pgn4web_engineWindowUrlParameters is customized using the corresponding URL parameter of the main page, the value must be encoded with encodeURIComponent()
thisRegExp = /(&|\?)(engineWindowDisableAnalysisBoard|ewdab)=(true|t)(&|$)/i;
if (window.location.search.match(thisRegExp) !== null) {
pgn4web_engineWindowDisableAnalysisBoard = true;
}
thisRegExp = /(&|\?)(engineWindowTarget|ewt)=([^&]+)(&|$)/i;
if (window.location.search.match(thisRegExp) !== null) {
pgn4web_engineWindowTarget = unescape(window.location.search.match(thisRegExp)[3]);
}
thisRegExp = /(&|\?)(engineWindowUrlParameters|ewup)=([^&]+)(&|$)/i;
if (window.location.search.match(thisRegExp) !== null) {
pgn4web_engineWindowUrlParameters = unescape(window.location.search.match(thisRegExp)[3]);
}
thisRegExp = /(&|\?)(engineWindowHeight|ewh)=([1-9][0-9]*)(&|$)/i;
if (window.location.search.match(thisRegExp) !== null) {
pgn4web_engineWindowHeight = parseInt(unescape(window.location.search.match(thisRegExp)[3]), 10);
}
thisRegExp = /(&|\?)(engineWindowWidth|eww)=([1-9][0-9]*)(&|$)/i;
if (window.location.search.match(thisRegExp) !== null) {
pgn4web_engineWindowWidth = parseInt(unescape(window.location.search.match(thisRegExp)[3]), 10);
}
var pgn4web_engineWinSignature = Math.ceil(1073741822 * Math.random()); // from 1 to (2^30 -1) = 1073741823
var engineWinParametersSeparator = "?";
function detectEngineLocation() {
return detectJavascriptLocation().replace(/(pgn4web|pgn4web-compacted)\.js/, "engine.html");
}
var engineWin;
var engineWinLastFen = "";
var warnedAboutUnsupportedVariation = "";
function showEngineAnalysisBoard(engineDisabled, startFen) {
if (pgn4web_engineWindowDisableAnalysisBoard) { return null; }
if ((typeof(gameVariant[currentGame]) == "undefined") || (gameVariant[currentGame].match(/^\s*(|chess|normal|standard)\s*$/i) !== null)) {
warnedAboutUnsupportedVariation = "";
engineWinLastFen = startFen ? FenStringStart : CurrentFEN();
var doneAccessingDOM = false;
try {
if (engineWinCheck()) {
if (typeof(engineDisabled) != "undefined") {
engineWin.setDisableEngine(engineDisabled);
}
engineWin.updateFEN(engineWinLastFen);
doneAccessingDOM = true;
}
} catch(e) {}
if (!doneAccessingDOM) {
var parameters = "fs=" + encodeURIComponent(engineWinLastFen) + "&es=" + pgn4web_engineWinSignature;
if (engineDisabled) { parameters += "&de=t"; }
if (pgn4web_engineWindowUrlParameters) { parameters += "&" + pgn4web_engineWindowUrlParameters; }
var options = "resizable=no,scrollbars=no,toolbar=no,location=no,menubar=no,status=no";
if (pgn4web_engineWindowHeight) { options = "height=" + pgn4web_engineWindowHeight + "," + options; }
if (pgn4web_engineWindowWidth) { options = "width=" + pgn4web_engineWindowWidth + "," + options; }
engineWin = window.open(detectEngineLocation() + engineWinParametersSeparator + parameters, pgn4web_engineWindowTarget, options);
// note bug with IE and Opera failing to set window.opener at this point, resulting in no autoUpdate possible and no update from the engine window possible
}
if ((engineWinCheck(true)) && (engineWin.top === engineWin.self) && (window.focus)) { engineWin.focus(); }
return engineWin;
} else if (warnedAboutUnsupportedVariation != gameVariant[currentGame]) {
warnedAboutUnsupportedVariation = gameVariant[currentGame];
myAlert("warning: analysis board unavailable for the " + gameVariant[currentGame] + " variant", true);
}
return null;
}
function engineWinCheck(skipSignature) {
return ((!pgn4web_engineWindowDisableAnalysisBoard) && (typeof(engineWin) == "object") && (engineWin !== null) && (!engineWin.closed) && (typeof(engineWin.engineSignature) != "undefined") && ((pgn4web_engineWinSignature === engineWin.engineSignature) || (skipSignature)));
}
function engineWinOnMove() {
if (engineWinCheck()) {
if ((engineWin.autoUpdate === true) && (CurrentFEN() != engineWinLastFen) && (engineWin.CurrentFEN() == engineWinLastFen)) {
showEngineAnalysisBoard();
}
engineWin.updateGameAnalysisFlag();
} else {
engineWinLastFen = "";
}
}

2026
_assets/vendor/pgn4web/euroteams2011.pgn vendored Normal file

File diff suppressed because it is too large Load Diff

27
_assets/vendor/pgn4web/fide-lookup.js vendored Normal file
View File

@ -0,0 +1,27 @@
/*
* pgn4web javascript chessboard
* copyright (C) 2009-2013 Paolo Casaschi
* see README file and http://pgn4web.casaschi.net
* for credits, license and more details
*/
//
// example of external javascript library enhancing pgn4web:
// lookpup player info on the FIDE website based on FIDE id or name
//
"use strict";
function openFidePlayerUrl(name, FideId) {
if (FideId) { window.open("http://ratings.fide.com/card.phtml?event=" + escape(FideId)); }
else if (name) { window.open("http://ratings.fide.com/seek.phtml?idcode=&name=" + name + "&offset=0"); }
}
function customShortcutKey_Shift_1() {
openFidePlayerUrl(gameWhite[currentGame], customPgnHeaderTag('WhiteFideId'));
}
function customShortcutKey_Shift_2() {
openFidePlayerUrl(gameBlack[currentGame], customPgnHeaderTag('BlackFideId'));
}

View File

@ -0,0 +1,235 @@
<!DOCTYPE HTML>
<html>
<!--
pgn4web javascript chessboard
copyright (C) 2009-2014 Paolo Casaschi
see README file and http://pgn4web.casaschi.net
for credits, license and more details
-->
<head>
<title>flash replacement</title>
<link rel="shortcut icon" href="pawn.ico" />
<style type="text/css">
html,
body {
margin: 0px;
padding: 0px;
}
body {
padding: 1.75em;
font-family: sans-serif;
color: black;
background: #F4F4F4;
}
a {
color: black;
}
p {
padding: 0.25em;
}
ul {
list-style-type: square;
}
.exampleLink {
background: #E8E8E8;
padding-left: 0.25em;
padding-right: 0.25em;
white-space: pre;
}
</style>
</head>
<body>
<h1 style="margin-top:0px; padding-top:0px; text-align:right;">
<span style="float:left; color:black;">
pgn4web live broadcast: flash replacement
</span>
<span style="width:49px; height:29px; background:url(pawns.png) -47px -15px; vertical-align:baseline; display:inline-block;"></span>
</h1>
<div style="height:1px;"></div>
<p>
What about replacing with a broadly supported technology a well known live chess broadcast client based on the adobe flash technology and therefore not supported by mobile devices such as android phones and tablets, the iphone and the ipad? This page shows equivalent functionality based on HTML5 (javascript + css) that works on mobile devices as well.
</p>
<a name="basicExample"></a>
<h3>basic example</h3>
<p>
This replicates the flash based client layout and functionality:
</p>
<p>
<center>
<!--
this is the inline frame code showing the live chessboard on the page;
when copying the code on a new live page, please adjust the inline frame src
property with the relative path from the new live page to dynamic-frame.html
-->
<iframe id='gameframe' frameborder='0' scrolling='no'
style='width: 640px; height: 360px; border: solid black 1px; padding: 5px; margin: 0px; background: transparent;'
src='./dynamic-frame.html?ct=blue&amp;hch=t&amp;pf=merida&amp;scf=t&amp;l=t'
>your web browser and/or your host do not support iframes as required to display the chessboard
</iframe>
</center>
</p>
<p>
</p>
<a name="advancedExample"></a>
<h3>advanced example</h3>
<p>
This shows additional functionality of the pgn4web viewer, including customized colors, customized chess pieces and integrated user/engine analysis board:
</p>
<p>
<center>
<table style="border: 40px solid #FFCE9E; border-radius: 10px; background: #FFCE9E; box-shadow: 0 0 25px #CC9966;" cellspacing="0" cellpadding="0" border="0"><tr><td valign="middle">
<iframe id='analysisframeAdvanced' name='analysisframeAdvanced' frameborder='0' scrolling='no'
style='width: 208px; height: 260px; margin-right: 40px; opacity: 0.9;'
src='./blank.html'
>your web browser and/or your host do not support iframes as required to display the chessboard
</iframe>
</td><td valign="middle">
<iframe id='gameframeAdvanced' frameborder='0' scrolling='no'
style='width: 580px; height: 320px;'
src='./dynamic-frame.html?ct=brown&amp;hch=t&amp;pf=u&amp;scf=t&amp;l=t&amp;ewt=analysisframeAdvanced&amp;eww=216&amp;ewh=260&amp;ewup=lch%3DFFCE9E%26dch%3DE3B688%26hch%3DD18B47%26fmch%3D000000%26ctch%3D7D654C%26bch%3DFFCE9E%26ss%3D26%26fpr%3D0%26pf%3Du%26fms%3D11%26fcs%3D19&amp;ewpi=t'
>your web browser and/or your host do not support iframes as required to display the chessboard
</iframe>
</td></tr></table>
</center>
</p>
<p>
</p>
<h3>more examples</h3>
<p>
Please find below links to few more live chess broadcast examples showing the multiple options available from pgn4web:
<ul>
<li><a id="liveCompact" href="./live-compact.html" target="_blank">live compact view</a></li>
<li><a id="liveFullscreen" href="./dynamic-frame.html?l=t&amp;scf=t" target="_blank">live fullscreen view</a></li>
<li><a id="liveMosaic" href="./live-mosaic-viewer.html" target="_blank">live mosaic view</a></li>
<li><a id="liveResults" href="./live-results-viewer.html" target="_blank">live results view</a></li>
</ul>
</p>
<h3>end user hints for the client user interface</h3>
<ul>
<li>use the arrow keys to move throughout the game</li>
<li>click on the dots at the bottom or click on square F5 for the list of available games</li>
<li>click on square H5 for a fullscreen view, then use the browser's back button to return to this page</li>
<li>click on square E8 of the main board to activate the analysis board, copying the postion from the main board and starting the built-in chess engine (if supported by the web browser); try moves and variations clicking the from/to squares on the analysis board.</li>
<li>click on square H8 for further general help</li>
</ul>
<h3>webmaster hints to setup a live games broadcast</h3>
<p>
The following instructions refer to the basic example; the advanced example including the integrated user/engine analysis board is relatively more complex, please contact the pgn4web project for detailed instructions based on specific requirements.
</p>
<ul>
<li>copy the pgn4web files on the server, for instance in the folder accessible as <span class='exampleLink'>http://example.com/somewhere/pgn4web/</span></li>
<li>reuse the same tools that generate the chess moves for the flash based client processing the inputs from the electronic boards</li>
<li>configure those tools to save games as a PGN file accessible as <span class='exampleLink'>http://example.com/somewhere/pgn4web/live/live.pgn</span>, including clock information if available</li>
<li>replace the flash object in the live web pages with an inline frame using a src url similar to the example of this page, such as <span class='exampleLink'>http://example.com/somewhere/pgn4web/dynamic-frame.html?<span id='urlparameters'></span></span></li>
<li>set the inline frame height/width as appropriate to each live web page on the server and add any desired iframe css style property</li>
<li>done</li>
<li>more info about configuration options <a href="http://code.google.com/p/pgn4web/wiki/DynamicFrame_summary">at the pgn4web wiki</a></li>
</ul>
<!--
the following scripts are normally not required in user pages embedding
dynamic-frame.html and should be left out unless otherwise instructed
-->
<script src="pgn4web-server-config.js" type="text/javascript"></script>
<script type="text/javascript">
"use strict";
var pgn4web_live_pointer_url;
var theIframeObject;
var theSpanObject;
var theLinkObject;
if (pgn4web_live_pointer_url === undefined) { pgn4web_live_pointer_url = "."; }
if (theIframeObject = document.getElementById('gameframe')) {
theIframeObject.src = fixUrlAllParameters(theIframeObject.src);
if (theSpanObject = document.getElementById('urlparameters')) {
theSpanObject.innerHTML = extractParametersAfterRemoving(theIframeObject.src);
}
}
if (theIframeObject = document.getElementById('gameframeAdvanced')) {
theIframeObject.src = fixUrlOnlyParameters(theIframeObject.src);
}
if (theIframeObject = document.getElementById('analysisframeAdvanced')) {
theIframeObject.src = fixUrlNoParameters(theIframeObject.src);
}
if (theLinkObject = document.getElementById('liveCompact')) {
theLinkObject.href = fixUrlOnlyParameters(theLinkObject.href);
}
if (theLinkObject = document.getElementById('liveFullscreen')) {
theLinkObject.href = fixUrlOnlyParameters(theLinkObject.href);
}
if (theLinkObject = document.getElementById('liveMosaic')) {
theLinkObject.href = fixUrlOnlyParameters(theLinkObject.href);
}
if (theLinkObject = document.getElementById('liveResults')) {
theLinkObject.href = fixUrlOnlyParameters(theLinkObject.href);
}
function fixUrlAllParameters(url) {
if (pgn4web_live_pointer_url == "." && !window.location.search.match(/\?.+$/)) { return url; }
var matches = url.match(/\?(.*)(#|$)/);
var parameters = matches ? matches[1] : "";
matches = url.match(/.*(\/[^\/\?]*)/);
return pgn4web_live_pointer_url + matches[1] + "?" + window.location.search.replace(/^\?(.+)$/, '$1&') + parameters;
}
function extractParametersAfterRemoving(url) {
var parameters = url.replace(/(^[^\?]+|#.*$)/g, "");
return parameters.replace(/(^|\?|&)(pd|pgnData|rm|refreshMinutes|rd|refreshDemo)=[^&]*/g, "").replace(/^[\?^]+/, "");
}
function fixUrlOnlyParameters(url) {
if (pgn4web_live_pointer_url == "." && !window.location.search.match(/\?.+$/)) { return url; }
var matches = url.match(/\?(.*)(#|$)/);
var parameters = matches ? matches[1] : "";
matches = window.location.search.match(/(\?|&)((pd|pgnData)=[^&]*)(&|$)/);
parameters = (matches ? matches[2] + "&" : "") + parameters;
matches = window.location.search.match(/(\?|&)((l|live)=[^&]*)(&|$)/);
parameters = (matches ? matches[2] + "&" : "") + parameters;
matches = window.location.search.match(/(\?|&)((rm|refreshMinutes)=[^&]*)(&|$)/);
parameters = (matches ? matches[2] + "&" : "") + parameters;
matches = window.location.search.match(/(\?|&)((rd|refreshDemo)=[^&]*)(&|$)/);
parameters = (matches ? matches[2] + "&" : "") + parameters;
matches = url.match(/.*(\/[^\/\?]*)/);
return pgn4web_live_pointer_url + matches[1] + "?" + parameters;
}
function fixUrlNoParameters(url) {
if (pgn4web_live_pointer_url == ".") { return url; }
var matches = url.match(/.*(\/[^\/]*)/);
return pgn4web_live_pointer_url + matches[1];
}
</script>
</body>
</html>

Binary file not shown.

View File

@ -0,0 +1,222 @@
<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
<svg xmlns="http://www.w3.org/2000/svg">
<metadata>
This is a custom SVG webfont generated by Font Squirrel.
Copyright : Beke
</metadata>
<defs>
<font id="CReaderTRegular" horiz-adv-x="1024" >
<font-face units-per-em="2048" ascent="1638" descent="-410" />
<missing-glyph horiz-adv-x="512" />
<glyph unicode=" " horiz-adv-x="512" />
<glyph unicode="&#x09;" horiz-adv-x="512" />
<glyph unicode="&#xa0;" horiz-adv-x="512" />
<glyph unicode="!" horiz-adv-x="681" d="M225 1243q0 -145 37 -434l57 -451h41l95 885q6 53 -28 98t-87 45q-115 0 -115 -143zM229 82q0 -47 32 -78t79 -31t79 31t32 78t-32 79t-79 32t-79 -32t-32 -79z" />
<glyph unicode="&#x22;" horiz-adv-x="835" d="M135 1276q0 -111 27 -238l49 -235h49q12 59 24.5 117.5t24.5 117.5q27 131 27 238q0 111 -100 110q-45 0 -73 -31.5t-28 -78.5zM502 1276q0 -111 26 -238l50 -235h49q12 59 24.5 117.5t24.5 117.5q27 131 26 238q0 111 -100 110q-45 0 -72.5 -31.5t-27.5 -78.5z" />
<glyph unicode="#" horiz-adv-x="1787" d="M68 348h495v-473h99v473h464v-473h99v473h493v86h-493v451h493v84h-493v491h-99v-491h-464v491h-99v-491h-495v-84h495v-451h-495v-86zM662 434v451h464v-451h-464z" />
<glyph unicode="$" d="M106 51q193 -78 355 -78v-127h63v127q158 0 277 103q117 100 117 258q0 178 -220 338q-86 63 -129 94t-45 33v514q135 -14 213 -100.5t78 -221.5h39v299q-209 88 -330 88v92h-63v-92q-145 0 -248 -90q-106 -92 -107 -237q0 -229 355 -430v-584q-68 0 -125 21.5t-98 60.5 t-64.5 93t-23.5 122h-44v-283zM264 1110q0 86 55.5 140.5t141.5 62.5v-473q-197 137 -197 270zM524 37v543q123 -92 154 -123q82 -82 82 -170q0 -49 -18.5 -92t-50.5 -77t-75 -54.5t-92 -26.5z" />
<glyph unicode="%" horiz-adv-x="1705" d="M70 1018q0 -150 69 -250q76 -117 219 -117q141 0 220 117q70 100 69 250q0 150 -69 250q-78 117 -220 116q-143 0 -219 -116q-69 -100 -69 -250zM229 1016q0 315 131 315q127 0 127 -311q0 -315 -131 -315q-127 0 -127 311zM330 -29h90l969 1415h-91zM1059 338 q0 -150 69 -250q78 -115 220 -115q141 0 219 115q70 100 69 250q0 150 -69 250q-78 117 -219 117q-143 0 -220 -117q-69 -100 -69 -250zM1219 336q0 315 131 315q127 0 127 -311q0 -315 -131 -315q-127 0 -127 311z" />
<glyph unicode="&#x26;" horiz-adv-x="1593" d="M72 266q0 -139 110 -221q100 -74 244 -74q223 0 440 193q174 -193 346 -193q125 0 209 76q78 70 107 197l-37 26q-35 -147 -182 -147q-143 0 -303 186q53 80 90 137.5t57 92.5q47 78 77 126t44 64q86 106 186 107v36h-418v-36q39 0 66 -37t27 -78q0 -145 -177 -352 q-143 174 -266 413q330 164 330 359q0 117 -78 181t-194 64q-74 0 -137.5 -23.5t-109.5 -66.5t-71.5 -103t-25.5 -134q0 -123 79 -301q-413 -224 -413 -492zM279 358q0 209 241 332q174 -330 295 -469q-174 -131 -287 -131q-109 0 -180 78q-69 77 -69 190zM575 1130 q0 78 51.5 130.5t129.5 52.5q68 0 108.5 -48t40.5 -116q0 -195 -246 -301q-84 163 -84 282z" />
<glyph unicode="'" horiz-adv-x="1351" d="M68 -94v1450h100v-1356h1114v-94h-1214z" />
<glyph unicode="(" horiz-adv-x="681" d="M84 639q0 -152 37 -289t107.5 -256t173 -217t235.5 -168v43q-360 195 -361 887q0 694 361 889v43q-270 -143 -411.5 -384t-141.5 -548z" />
<glyph unicode=")" horiz-adv-x="681" d="M45 -248v-43q270 143 411.5 383t141.5 547q0 150 -37 288t-107.5 258t-174 217t-234.5 169v-43q360 -195 361 -889q-1 -692 -361 -887z" />
<glyph unicode="*" d="M145 840q0 -31 22.5 -51.5t53.5 -20.5q57 0 148 90q104 104 125 113q0 -49 -33 -135q-31 -86 -31 -134q0 -109 82 -108q82 0 82 108q0 49 -33 134q-31 88 -31 135q20 -8 123 -113q86 -90 150 -90q31 0 53.5 20.5t22.5 51.5q0 74 -131 112q-115 33 -197 56l197 53 q131 33 131 115q0 31 -22.5 51t-53.5 20q-57 0 -148 -90q-104 -104 -125 -113q0 47 31 134q33 86 33 135q0 109 -82 108q-82 0 -82 -108q0 -47 31 -135q33 -84 33 -134l-127 123q-84 80 -146 80q-31 0 -53.5 -20.5t-22.5 -50.5q0 -74 131 -113q106 -35 197 -55l-197 -54 q-131 -32 -131 -114z" />
<glyph unicode="+" horiz-adv-x="1501" d="M68 633h630v-633h99v633h633v98h-633v633h-99v-633h-630v-98z" />
<glyph unicode="," horiz-adv-x="512" d="M111 80q0 -106 102 -107q8 0 21.5 4.5t27.5 9.5t24.5 9t12.5 4q27 0 27 -39q0 -43 -17.5 -84t-46.5 -74.5t-68.5 -59.5t-82.5 -38v-43q125 33 206 115q90 90 91 213q0 80 -43 141q-45 70 -125 70q-53 0 -91 -34t-38 -87z" />
<glyph unicode="-" horiz-adv-x="669" d="M82 381h518v158h-518v-158z" />
<glyph unicode="." horiz-adv-x="512" d="M145 82q0 -47 32 -78t79 -31t79 31t32 78t-32 79t-79 32t-79 -32t-32 -79z" />
<glyph unicode="/" horiz-adv-x="569" d="M0 -27h80l489 1448h-77z" />
<glyph unicode="0" d="M74 678q0 -256 94 -453q119 -252 344 -252q223 0 344 252q94 197 94 453t-94 452q-119 254 -344 254t-344 -254q-94 -196 -94 -452zM270 612q0 711 242 711q147 0 205 -229q37 -141 37 -349q0 -713 -242 -712q-139 0 -201 231q-41 158 -41 348z" />
<glyph unicode="1" d="M240 1223l14 -31q68 31 104 31q55 0 72 -68q8 -31 8 -111v-829q0 -111 -32 -143q-35 -35 -142 -35v-37h510v37q-119 0 -149 61q-20 39 -21 170v1116h-35z" />
<glyph unicode="2" d="M43 0h801l94 260h-37q-49 -109 -221 -108h-422q297 299 377 401q221 276 221 475q0 158 -115 260q-113 96 -270 96q-330 0 -387 -383h37q29 104 109.5 168t191.5 64q121 0 192 -90q68 -84 68 -207q0 -201 -240 -490q-41 -47 -140 -149t-259 -260v-37z" />
<glyph unicode="3" d="M82 80q0 -106 229 -107q229 0 381 117q162 125 162 354q0 260 -254 359q186 150 186 303q0 125 -96 203q-94 76 -223 75q-260 0 -363 -286l31 -17q94 166 256 166q104 0 167 -63.5t63 -167.5q0 -129 -93 -215q-82 -80 -217 -99v-30q166 0 275 -80q119 -88 119 -252 q0 -113 -70 -195t-180 -82q-53 0 -152 46q-104 47 -137 47q-84 0 -84 -76z" />
<glyph unicode="4" d="M31 356h573v-356h166v356h182v144h-182v884h-108l-631 -899v-129zM129 500l475 667v-667h-475z" />
<glyph unicode="5" d="M98 106q0 -72 84 -106q59 -27 146 -27q225 0 381 144q158 145 157 366q0 217 -172 363q-152 129 -381 158l95 188h407l74 164h-486l-260 -529q236 0 400 -104q195 -123 194 -344q0 -125 -88 -213q-86 -88 -211 -88q-43 0 -137 51t-123 51q-80 0 -80 -74z" />
<glyph unicode="6" d="M88 535q0 -215 107 -377q119 -184 325 -185q184 0 307 150q117 141 117 330q0 166 -88 278q-94 125 -256 125q-160 0 -287 -100q55 242 203 405q172 186 402 187v36q-358 0 -594 -245q-236 -244 -236 -604zM281 477q0 92 18 207q129 86 207 86q135 0 205 -149 q55 -121 55 -269q0 -125 -51 -213q-61 -106 -178 -106q-131 0 -201 166q-55 124 -55 278z" />
<glyph unicode="7" d="M76 1034l28 -10q53 92 117 130t168 38h385l-405 -1219h112l451 1346v37h-727z" />
<glyph unicode="8" d="M123 303q0 -154 121 -246q113 -84 268 -84q162 0 274 90q119 98 119 261q0 125 -102 245q-53 61 -207 183q125 76 186 137q94 94 95 201q0 137 -121 221q-109 74 -250 73q-154 0 -254 -81q-111 -90 -111 -238q0 -117 80 -217q45 -55 172 -164q-270 -191 -270 -381z M276 315q0 205 162 330q150 -123 205 -180q119 -125 119 -229q0 -47 -18.5 -84t-51.5 -64t-75 -41t-89 -14q-117 0 -188 84q-64 75 -64 198zM285 1130q0 86 71 142q63 51 154 51q104 0 163.5 -57.5t59.5 -161.5q0 -100 -53 -178q-16 -27 -50 -61t-81 -77q-70 57 -112 94.5 t-58 53.5q-94 100 -94 194z" />
<glyph unicode="9" d="M80 899q0 -160 90 -278q96 -127 254 -127q135 0 287 100q-63 -248 -205 -401q-166 -184 -397 -185v-35q352 0 589.5 244t237.5 600q0 217 -107 379q-123 188 -325 188q-195 0 -314 -149q-110 -139 -110 -336zM258 997q0 127 49 217q59 109 180 109q133 0 203 -168 q55 -129 55 -283q0 -68 -18 -202q-90 -86 -221 -86q-133 0 -197 149q-51 114 -51 264z" />
<glyph unicode=":" horiz-adv-x="569" d="M174 82q0 -47 32 -78t79 -31t78.5 31t31.5 78t-31.5 79t-78.5 32t-79 -32t-32 -79zM174 834q0 -47 32 -79t79 -32t78.5 31.5t31.5 79.5q0 47 -31.5 78.5t-78.5 31.5t-79 -31.5t-32 -78.5z" />
<glyph unicode=";" horiz-adv-x="569" d="M139 80q0 -106 103 -107q8 0 21 4.5t27.5 9.5t25 9t12.5 4q27 0 26 -39q0 -43 -17.5 -84t-46 -74.5t-68.5 -59.5t-83 -38v-43q125 33 207 115q90 90 90 213q0 80 -43 141q-45 70 -125 70q-53 0 -91 -34t-38 -87zM174 834q0 -47 32 -79t79 -32t78.5 31.5t31.5 79.5 q0 47 -31.5 78.5t-78.5 31.5t-79 -31.5t-32 -78.5z" />
<glyph unicode="&#x3c;" horiz-adv-x="978" d="M68 266q0 -172 125 -291q127 -121 294 -120q168 0 295 120q125 119 125 291q0 154 -106 281q-113 137 -262 137v580h39l110 -152h76l-272 385l-277 -385h72l114 152h39v-580q-154 0 -266 -135q-106 -125 -106 -283zM158 264q0 133 98 236q98 104 229 104q137 0 236 -100 q98 -102 98 -240q0 -129 -102 -225q-100 -94 -230 -94q-129 0 -229 94t-100 225z" />
<glyph unicode="=" horiz-adv-x="1746" d="M68 410h1607v100h-1607v-100zM68 762h1607v98h-1607v-98z" />
<glyph unicode="&#x3e;" horiz-adv-x="1693" d="M68 0l1556 610v107l-1556 596v-92l1437 -557l-1437 -576v-88z" />
<glyph unicode="?" horiz-adv-x="909" d="M88 1098q0 -55 27 -101q31 -53 84 -53q35 0 57.5 25.5t22.5 60.5q0 23 -31 84.5t-31 87.5q0 66 66 101q53 29 125 28q111 0 174 -88q55 -78 55 -192q0 -78 -115 -342q-115 -260 -114 -390h41q0 150 96 277q59 72 105 127t77 90q96 121 96 256q0 154 -110 240 q-102 78 -258 77q-150 0 -250 -69q-117 -78 -117 -219zM319 82q0 -47 32 -78t79 -31t79 31t32 78t-32 79t-79 32t-79 -32t-32 -79z" />
<glyph unicode="@" horiz-adv-x="1886" d="M100 440q0 -387 244 -635q242 -246 633 -245q295 0 532 168q246 166 330 444h-57q-111 -260 -320 -405.5t-489 -145.5q-352 0 -565 219t-213 574q0 395 229 667q242 289 633 289q283 0 463 -170q180 -168 180 -450q0 -205 -109 -406q-133 -240 -311 -240q-78 0 -78 76 q0 121 82 381q41 133 73 231.5t54 163.5l-156 -20l-34 -105q-8 59 -57.5 95.5t-110.5 36.5q-207 0 -387 -252q-166 -231 -166 -453q0 -88 47 -154q51 -74 137 -73q158 0 385 278l4 -4q-8 -39 -12 -72.5t-4 -64.5q0 -137 153 -137q254 0 412 231q139 207 139 473 q0 322 -196 504q-195 182 -521 182q-416 0 -679 -282q-265 -281 -265 -699zM659 295q0 152 127 377q137 246 275 246q59 0 92 -42t33 -104q0 -180 -119 -385q-135 -236 -293 -235q-55 0 -85 43t-30 100z" />
<glyph unicode="A" horiz-adv-x="1478" d="M20 0h426v37q-158 0 -157 90q0 49 127 328h524q123 -283 123 -326q0 -92 -139 -92v-37h534v37q-100 0 -160 78q-14 18 -34.5 59t-46.5 107l-461 1105h-37l-488 -1142q-20 -49 -39.5 -83t-35.5 -55q-51 -59 -136 -69v-37zM446 528l236 547l231 -547h-467z" />
<glyph unicode="B" horiz-adv-x="1366" d="M39 0h694q213 0 352 80q170 98 170 297q0 123 -92 213q-82 82 -211 104q106 31 173 109t67 188q0 197 -174 291q-139 74 -352 74h-627v-37q131 0 166 -49q27 -35 26 -174v-836q0 -133 -28 -174q-35 -49 -164 -49v-37zM424 100v553q29 4 72 7.5t100 3.5q174 0 289 -66 q141 -80 141 -244q0 -143 -119 -217q-100 -63 -252 -63q-127 -1 -231 26zM424 745v521q84 23 176 22q154 0 260 -65q123 -78 123 -224q0 -135 -102 -206q-90 -61 -232 -62q-78 0 -134 3t-91 11z" />
<glyph unicode="C" horiz-adv-x="1366" d="M76 651q0 -301 178 -487q180 -193 479 -193q375 0 561 346l-30 21q-92 -137 -189 -205q-109 -76 -264 -76q-254 0 -387 176q-119 156 -119 420q0 274 98 447q119 215 375 215q350 0 455 -389h31l-31 460h-35q-12 -94 -80 -94q-27 0 -153 45q-131 47 -195 47 q-311 0 -506 -213q-188 -207 -188 -520z" />
<glyph unicode="D" horiz-adv-x="1478" d="M39 0h631q328 0 526 176q207 182 207 508q0 373 -244 537q-203 135 -596 135h-524v-37q131 0 166 -49q27 -35 26 -174v-836q0 -133 -28 -174q-35 -49 -164 -49v-37zM424 100v1153q104 29 205 29q264 0 407 -174q137 -162 138 -430q0 -264 -136 -426q-145 -178 -401 -178 q-104 -1 -213 26z" />
<glyph unicode="E" horiz-adv-x="1251" d="M39 0h1051l114 340h-39q-41 -70 -74.5 -117t-62.5 -71q-88 -78 -215 -78h-278q-61 0 -86 21.5t-25 80.5v496h272q129 0 176 -35q49 -41 62 -166h37v473h-37q0 -125 -60 -166q-47 -33 -178 -33h-272v537h346q145 0 201 -43q57 -39 86 -180h41l-19 297h-1040v-37 q131 0 166 -49q27 -35 26 -174v-836q0 -133 -28 -174q-35 -49 -164 -49v-37z" />
<glyph unicode="F" horiz-adv-x="1138" d="M39 0h577v37q-133 0 -165 49q-27 35 -27 174v406h221q113 0 158 -39t45 -150h37v459h-37q0 -111 -45 -149.5t-158 -38.5h-221v534h274q147 0 213 -41q72 -45 113 -182h35l-12 297h-1008v-37q131 0 166 -49q27 -35 26 -174v-836q0 -133 -28 -174q-35 -49 -164 -49v-37z " />
<glyph unicode="G" horiz-adv-x="1478" d="M76 655q0 -324 221 -510q207 -174 534 -174q252 0 467 117v424q0 100 25 141q33 49 129 49v37h-539v-37q131 0 166 -49q27 -35 27 -174v-366q-115 -74 -275 -74q-256 0 -399 211q-127 186 -127 450q0 256 119 424q135 193 381 193q346 0 452 -359h37l-34 428h-37 q1 -10 1 -19q0 -66 -53 -67q-57 0 -186 43t-192 43q-313 0 -517 -208q-200 -212 -200 -523z" />
<glyph unicode="H" horiz-adv-x="1478" d="M39 0h577v37q-133 0 -165 49q-27 35 -27 174v393h631v-393q0 -133 -29 -174q-35 -49 -164 -49v-37h578v37q-133 0 -166 49q-27 35 -27 174v836q0 133 29 174q33 49 164 49v37h-578v-37q131 0 166 -49q27 -35 27 -174v-369h-631v369q0 133 29 174q33 49 163 49v37h-577 v-37q131 0 166 -49q27 -35 26 -174v-836q0 -133 -28 -174q-35 -49 -164 -49v-37z" />
<glyph unicode="I" horiz-adv-x="681" d="M51 0h578v37q-133 0 -166 49q-27 35 -27 174v836q0 133 29 174q33 49 164 49v37h-578v-37q131 0 166 -49q27 -35 27 -174v-836q0 -133 -29 -174q-35 -49 -164 -49v-37z" />
<glyph unicode="J" horiz-adv-x="796" d="M45 121q0 -78 70 -117q57 -33 137 -33q174 0 266 148q76 121 76 309v668q0 133 29 174q33 49 163 49v37h-577v-37q131 0 166 -49q27 -35 26 -174v-881q0 -176 -67 -176q-16 0 -80 94t-107 94q-102 0 -102 -106z" />
<glyph unicode="K" horiz-adv-x="1478" d="M39 0h577v37q-133 0 -165 49q-27 35 -27 174v416l450 -445q90 -90 91 -131q0 -63 -109 -63v-37h645v37q-109 0 -223 78q-35 23 -79 62.5t-101 94.5l-484 480l353 352q215 215 356 215v37h-498v-37q123 0 123 -62q0 -70 -188 -245l-336 -312v396q0 133 29 174 q33 49 163 49v37h-577v-37q131 0 166 -49q27 -35 26 -174v-836q0 -133 -28 -174q-35 -49 -164 -49v-37z" />
<glyph unicode="L" horiz-adv-x="1251" d="M39 0h1048l117 369l-33 6q-57 -143 -127 -207q-86 -80 -225 -80h-303q-66 0 -84 62q-8 25 -8 116v809q0 150 41 197t186 47v37h-612v-37q131 0 166 -49q27 -35 26 -174v-836q0 -133 -28 -174q-35 -49 -164 -49v-37z" />
<glyph unicode="M" horiz-adv-x="1820" d="M37 0h473v37q-123 0 -160 45q-33 39 -33 166l5 887l520 -1135h32l523 1135v-875q0 -133 -29 -174q-35 -49 -164 -49v-37h578v37q-133 0 -166 49q-27 35 -27 174v836q0 133 29 174q33 49 164 49v37h-383l-486 -1061l-491 1061h-385v-37q123 0 164 -55q29 -41 28 -166v-838 q0 -133 -28 -174q-35 -49 -164 -49v-37z" />
<glyph unicode="N" horiz-adv-x="1478" d="M-23 1319q88 0 152 -35q55 -33 115 -106v-918q0 -133 -29 -174q-35 -49 -164 -49v-37h473v37q-133 0 -166 49q-27 35 -26 166l4 815l889 -1087h37v1116q0 133 28 174q33 49 164 49v37h-473v-37q131 0 166 -49q27 -35 27 -166l-5 -762l-825 1014h-367v-37z" />
<glyph unicode="O" horiz-adv-x="1478" d="M76 678q0 -305 178 -502q184 -205 485 -205t486 205q178 197 178 502t-178 502q-184 207 -486 206q-301 0 -485 -206q-178 -197 -178 -502zM305 678q0 260 86 424q111 211 348 211q238 0 348 -211q86 -164 87 -424q0 -262 -87 -424q-111 -211 -348 -211q-238 0 -348 211 q-86 162 -86 424z" />
<glyph unicode="P" horiz-adv-x="1138" d="M39 0h577v37q-133 0 -165 49q-27 35 -27 174v375q137 -31 227 -31q184 0 297 94q125 100 125 279q0 188 -151 291q-131 88 -330 88h-553v-37q131 0 166 -49q27 -35 26 -174v-836q0 -133 -28 -174q-35 -49 -164 -49v-37zM424 694v561q68 18 139 19q63 0 115.5 -23.5 t89.5 -64.5t56.5 -97.5t19.5 -121.5q0 -111 -58 -195q-66 -98 -168 -98q-49 0 -98 5t-96 15z" />
<glyph unicode="Q" horiz-adv-x="1478" d="M76 678q0 -252 125 -430t360 -260q391 -391 834 -391v36q-295 0 -490 355q231 66 367 258q131 186 131 432q0 305 -178 502q-184 207 -486 206q-301 0 -485 -206q-178 -197 -178 -502zM305 678q0 260 86 424q111 211 348 211q238 0 348 -211q86 -164 87 -424 q0 -258 -89 -426q-111 -215 -346 -215q-238 0 -348 215q-86 166 -86 426z" />
<glyph unicode="R" horiz-adv-x="1366" d="M39 0h577v37q-133 0 -165 49q-27 35 -27 174v373h139l461 -633h362v37q-125 0 -212 76q-53 43 -148 178l-264 368q145 31 233 113q102 96 103 232q0 182 -152 274q-127 78 -319 78h-588v-37q131 0 166 -49q27 -35 26 -174v-836q0 -133 -28 -174q-35 -49 -164 -49v-37z M424 698v566l123 12q61 6 45 6q125 0 200.5 -81t75.5 -206q0 -158 -127 -235q-102 -61 -272 -62h-45z" />
<glyph unicode="S" horiz-adv-x="1138" d="M133 1024q0 -190 186 -307q35 -23 61 -36t40 -22q84 -47 145.5 -82.5t102.5 -62.5q186 -119 186 -244q0 -109 -84 -168q-76 -53 -186 -53q-174 0 -279.5 103.5t-122.5 281.5h-37v-463h37q8 74 62 74q59 0 180 -37q119 -37 180 -37q180 0 301 103q127 109 127 286 q0 141 -131 254q-43 37 -61 48l-357 204q-193 111 -192 230q0 90 71 149q70 61 164 62q170 0 275 -111q104 -109 104 -278h37v468h-37q-16 -78 -69 -77q-41 0 -144 39q-98 39 -157 38q-166 0 -279 -98q-123 -102 -123 -264z" />
<glyph unicode="T" horiz-adv-x="1251" d="M57 1038h37q0 229 232 230h202v-1008q0 -133 -28 -174q-35 -49 -164 -49v-37h577v37q-133 0 -165 49q-27 35 -27 174v1008h203q231 0 231 -230h37l-14 318h-1106z" />
<glyph unicode="U" horiz-adv-x="1478" d="M18 1319q133 0 168 -47q25 -35 25 -176v-611q0 -514 532 -514q522 0 523 521v604q0 141 24 176q37 47 168 47v37h-473v-37q131 0 166 -49q27 -35 27 -174v-504q0 -258 -80 -381q-98 -154 -344 -154q-217 0 -295 152q-55 106 -56 346v541q0 133 29 174q33 49 164 49v37 h-578v-37z" />
<glyph unicode="V" horiz-adv-x="1478" d="M20 1319q100 0 150 -57q23 -25 76 -148l497 -1143h37l463 1129q20 51 40 86t36 57q51 66 137 76v37h-418v-37q143 -14 144 -102q0 -41 -56 -177l-311 -764q-391 854 -391 947q0 53 53 75q12 4 37 10.5t61 10.5v37h-555v-37z" />
<glyph unicode="W" horiz-adv-x="1933" d="M25 1319q86 0 129 -51q23 -31 59 -129l418 -1168h41l305 858l307 -858h39l389 1127q20 57 35.5 95t28.5 54q49 72 137 72v37h-406v-37q150 0 150 -96q0 -47 -49 -185l-254 -710l-250 700q-53 154 -53 199q0 63 45 82q31 10 100 10v37h-530v-37q113 0 182 -131 q23 -41 82 -227l-230 -633l-276 788q-31 88 -31 117q0 86 133 86v37h-501v-37z" />
<glyph unicode="X" horiz-adv-x="1478" d="M18 0h482v37q-131 0 -131 78q0 51 149 237q66 82 115 142.5t82 101.5q295 -422 295 -481q0 -78 -133 -78v-37h581v37q-96 8 -153 55q-23 18 -50.5 49t-56.5 76l-358 535l254 323q47 59 82.5 100.5t58.5 61.5q90 82 192 82v37h-481v-37q145 0 146 -78q0 -57 -304 -418 q-256 360 -256 416q0 80 140 80v37h-627v-37q121 0 221 -90q29 -27 68 -75t86 -118l252 -368l-303 -385q-182 -231 -351 -246v-37z" />
<glyph unicode="Y" horiz-adv-x="1478" d="M27 1319q117 0 196 -123l420 -639v-297q0 -133 -29 -174q-35 -49 -163 -49v-37h577v37q-133 0 -166 49q-27 35 -26 174v315l344 543q127 201 276 201v37h-473v-37q137 0 137 -98q0 -66 -157 -303l-168 -254q-66 94 -114 164.5t-81 117.5q-152 225 -151 283q0 90 157 90 v37h-579v-37z" />
<glyph unicode="Z" horiz-adv-x="1251" d="M23 0h1103l64 358h-37q-29 -76 -54.5 -126t-47.5 -74q-70 -76 -207 -76h-561l893 1274h-1004l-29 -340h39q20 152 84 205t217 53h408l-868 -1237v-37z" />
<glyph unicode="[" horiz-adv-x="681" d="M168 -254h440v88h-280v1614h280v88h-440v-1790z" />
<glyph unicode="\" horiz-adv-x="1519" d="M68 102l61 -57l1038 1251l154 29l-8 -162l-1039 -1247l64 -59l969 1171l-15 -291l37 -6l107 721l-682 -199l6 -34l280 55z" />
<glyph unicode="]" horiz-adv-x="681" d="M74 -166v-88h440v1790h-440v-88h280v-1614h-280z" />
<glyph unicode="^" horiz-adv-x="1646" d="M70 -18l82 -82l671 669l672 -669l82 82l-672 669l672 672l-82 82l-672 -672l-671 672l-82 -82l671 -672z" />
<glyph unicode="_" horiz-adv-x="1351" d="M68 0v-92h1214v1448h-98v-1356h-1116z" />
<glyph unicode="a" horiz-adv-x="909" d="M70 211q0 -104 57 -171t162 -67q78 0 153 52q39 27 73 50t63 46q0 -147 110 -148q98 0 213 148v57q-80 -80 -106 -80q-41 0 -50 64q-2 10 -2 94v440q0 248 -301 248q-127 0 -221 -51q-117 -61 -117 -178q0 -98 84 -99q57 0 76 76q10 45 17 79l10 56q20 55 119 56 q111 0 147 -97q20 -49 21 -190q-131 -51 -210 -85t-108 -50q-190 -111 -190 -250zM236 254q0 98 126 182q23 14 76.5 40t139.5 61v-351q-125 -100 -197 -100q-66 0 -107 53q-38 45 -38 115z" />
<glyph unicode="b" d="M-4 1309l12 -35q43 16 70 16q72 0 72 -139v-1063q168 -115 335 -115q209 0 342 160q127 152 127 365q0 178 -82 303q-94 143 -266 143q-162 0 -291 -186v663h-45zM315 145v549q100 106 205 107q129 0 201 -121q59 -102 59 -240q0 -141 -53 -254q-68 -141 -197 -141 q-121 0 -215 100z" />
<glyph unicode="c" horiz-adv-x="909" d="M70 461q0 -201 94 -334q106 -154 297 -154q147 0 256 115q98 106 125 260l-29 14q-86 -236 -285 -235q-147 0 -229 141q-70 119 -70 277q0 133 56 223q63 106 190 106q88 0 117 -61q8 -29 15 -56.5t16 -56.5q25 -61 102 -61q90 0 90 84q0 98 -108 164q-94 57 -199 57 q-199 0 -322 -145q-116 -135 -116 -338z" />
<glyph unicode="d" d="M70 424q0 -180 94 -307q104 -143 276 -144q145 0 273 129v-129h45l276 111l-14 35q-43 -16 -70 -17q-72 0 -71 140v1179h-45l-277 -112l14 -35q43 16 70 16q72 0 72 -139v-285q-74 78 -203 78q-199 0 -324 -166q-116 -151 -116 -354zM256 496q0 145 51 249 q63 137 193 138q98 0 157 -84q55 -78 56 -178v-447q-84 -92 -176 -92q-143 0 -220 143q-61 113 -61 271z" />
<glyph unicode="e" horiz-adv-x="909" d="M70 442q0 -195 100 -325q111 -143 299 -144q147 0 252 109q94 98 123 252l-31 20q-78 -219 -274 -219q-164 0 -252 141q-78 121 -78 293h635q0 166 -94 269q-94 106 -256 106q-207 0 -322 -151q-102 -138 -102 -351zM211 631q0 94 61 166q61 74 154 73q104 0 156.5 -66.5 t52.5 -172.5h-424z" />
<glyph unicode="f" horiz-adv-x="681" d="M78 842h178v-574q0 -129 -23 -170q-35 -61 -151 -61v-37h510v37q-117 0 -150 61q-20 39 -20 170v574h235v73h-235v166q0 115 16 170q31 96 121 97q45 0 135 -91q88 -88 113 -88q31 0 56.5 26t25.5 56q0 78 -88 127q-78 43 -160 43q-385 0 -385 -506h-178v-73z" />
<glyph unicode="g" d="M57 -246q0 -98 160 -153q119 -41 244 -41q172 0 327 84q182 102 183 260q0 170 -191 217q-72 16 -325 16q-176 0 -176 62q0 59 75 116q68 -20 131 -20q152 0 254 78q113 86 113 233q0 113 -49 185q158 0 176 8q8 14 8 37q0 20 -8 34q-18 8 -256 9q-90 66 -221 65 q-158 0 -260 -88q-111 -92 -111 -246q0 -201 174 -276q-94 -82 -104 -94q-57 -59 -58 -123q0 -59 101 -103q-187 -192 -187 -260zM205 -174q0 61 88 174q123 -4 208 -8t136 -8q260 -18 260 -105q0 -109 -131 -160q-92 -39 -225 -38q-117 0 -205 26q-131 37 -131 119z M305 655q0 240 170 240q104 0 160 -109q43 -84 43 -200q0 -242 -172 -242q-106 0 -160 109q-41 85 -41 202z" />
<glyph unicode="h" d="M10 1309l15 -35q43 16 69 16q72 0 72 -139v-977q0 -80 -31 -108.5t-110 -28.5v-37h448v37q-78 0 -109.5 29.5t-31.5 107.5v516q125 131 231 131q145 0 146 -223v-424q0 -80 -31 -108.5t-111 -28.5v-37h449v37q-78 0 -110 29.5t-32 107.5v461q0 127 -51 209 q-61 100 -180 100q-92 0 -174 -61q-47 -35 -137 -131v669h-45z" />
<glyph unicode="i" horiz-adv-x="569" d="M55 831l15 -34q43 16 69 16q72 0 72 -139v-500q0 -80 -30.5 -108.5t-110.5 -28.5v-37h448v37q-80 0 -110.5 28.5t-30.5 108.5v770h-45zM193 1321q0 -43 28.5 -71.5t71.5 -28.5t71.5 28.5t28.5 71.5t-28.5 71.5t-71.5 28.5t-71.5 -28.5t-28.5 -71.5z" />
<glyph unicode="j" horiz-adv-x="569" d="M-160 -340q0 -53 64 -80q47 -20 108 -20q193 0 285 137q80 119 80 317v930h-45l-277 -113l15 -34q43 16 69 16q72 0 72 -139v-862q0 -172 -90 -172q-18 0 -96 53t-103 53q-35 0 -58.5 -25.5t-23.5 -60.5zM193 1321q0 -43 28.5 -71.5t71.5 -28.5t71.5 28.5t28.5 71.5 t-28.5 71.5t-71.5 28.5t-71.5 -28.5t-28.5 -71.5z" />
<glyph unicode="k" d="M10 1309l15 -35q43 16 69 16q72 0 72 -139v-977q0 -80 -31 -108.5t-110 -28.5v-37h448v37q-80 0 -110.5 28.5t-30.5 108.5v1247h-45zM334 510q322 -389 321 -434q0 -16 -16 -33q-18 -6 -47 -6v-37h444v37q-82 0 -151 53q-33 27 -109 121l-278 350q203 197 219 209 q127 109 272 109v36h-401v-36q74 0 74 -45q0 -41 -328 -324z" />
<glyph unicode="l" horiz-adv-x="569" d="M55 1309l15 -35q43 16 69 16q72 0 72 -139v-977q0 -80 -30.5 -108.5t-110.5 -28.5v-37h448v37q-80 0 -110.5 28.5t-30.5 108.5v1247h-45z" />
<glyph unicode="m" horiz-adv-x="1593" d="M10 831l15 -34q43 16 69 16q72 0 72 -139v-500q0 -80 -31 -108.5t-110 -28.5v-37h448v37q-78 0 -109.5 29.5t-31.5 107.5v524q131 123 237 123q96 0 131 -78q20 -47 21 -163v-406q0 -80 -31 -108.5t-110 -28.5v-37h448v37q-78 0 -109.5 29.5t-31.5 107.5v524 q131 123 237 123q96 0 131 -78q20 -47 21 -163v-406q0 -80 -31 -108.5t-110 -28.5v-37h448v37q-78 0 -109.5 29.5t-31.5 107.5v461q0 129 -56 213q-66 96 -186 96q-98 0 -182 -59q-27 -20 -61.5 -54t-75.5 -86q-6 43 -25.5 80t-50.5 62.5t-71 41t-83 15.5q-90 0 -178 -63 q-49 -37 -141 -131v194h-45z" />
<glyph unicode="n" d="M10 831l15 -34q43 16 69 16q72 0 72 -139v-500q0 -80 -31 -108.5t-110 -28.5v-37h448v37q-78 0 -109.5 29.5t-31.5 107.5v516q125 131 231 131q145 0 146 -223v-424q0 -80 -31 -108.5t-111 -28.5v-37h449v37q-78 0 -110 29.5t-32 107.5v461q0 127 -51 209 q-61 100 -180 100q-92 0 -174 -61q-47 -35 -137 -131v192h-45z" />
<glyph unicode="o" d="M70 449q0 -195 116 -332q119 -143 314 -144q207 0 334 152q121 145 120 354q0 199 -123 332q-121 133 -317 133q-197 0 -326 -151q-118 -143 -118 -344zM256 537q0 338 223 337q154 0 232 -172q57 -127 57 -309q0 -352 -221 -352q-156 0 -232 180q-59 142 -59 316z" />
<glyph unicode="p" d="M-6 -397v-37h479v37q-88 0 -121 22q-37 27 -37 115v313q76 -80 213 -80q207 0 320 162q102 145 102 359q0 178 -82 303q-96 147 -262 147q-160 0 -291 -211v211h-45l-274 -113l12 -34q43 16 70 16q72 0 72 -139v-934q0 -84 -36 -110.5t-120 -26.5zM315 285v381 q119 135 211 135q129 0 197 -142q53 -113 53 -256q0 -141 -51 -241q-66 -129 -193 -129q-217 0 -217 252z" />
<glyph unicode="q" d="M70 412q0 -172 86 -297q94 -141 260 -142q139 0 297 185v-418q0 -84 -36 -110.5t-122 -26.5v-37h481v37q-88 0 -121 22q-37 27 -36 115v1204h-35l-111 -67q-80 68 -188 67q-219 0 -350 -160q-125 -149 -125 -372zM244 483q0 154 55 256q70 131 209 131q205 0 205 -215 v-434q-80 -106 -201 -106q-139 0 -211 121q-57 95 -57 247z" />
<glyph unicode="r" horiz-adv-x="681" d="M10 831l15 -34q43 16 69 16q72 0 72 -139v-500q0 -80 -31 -108.5t-110 -28.5v-37h477v37q-119 0 -150 55q-20 35 -20 166v395q74 154 131 154q113 -68 145 -68q37 0 62.5 28t25.5 64q0 49 -39 81t-90 32q-106 0 -235 -196v196h-45z" />
<glyph unicode="s" horiz-adv-x="796" d="M104 670q0 -117 123 -199q78 -41 135.5 -72.5t96.5 -52.5q123 -72 123 -174q0 -66 -45 -102.5t-113 -36.5q-113 0 -193 86q-72 76 -88 194h-37v-325h37q6 25 37 24q39 0 117 -18q74 -20 119 -21q125 0 215 72q98 76 98 201q0 152 -131 221q-88 47 -148.5 79t-95.5 48 q-131 70 -131 164q0 59 47 92t109 33q190 0 246 -252h37v313h-37l-17 -31l-26 -8q-35 4 -95 21q-66 18 -98 18q-129 0 -207 -72.5t-78 -201.5z" />
<glyph unicode="t" horiz-adv-x="569" d="M16 842h144v-635q0 -90 41 -150q45 -68 133 -67q162 0 235 194h-41q-27 -82 -106 -82q-66 0 -86 62q-10 35 -10 115v563h215v73h-215v302h-31q-106 -264 -279 -334v-41z" />
<glyph unicode="u" d="M6 879q96 0 125 -31q27 -29 27 -129v-447q0 -123 53 -206q61 -92 180 -93q133 0 311 193v-193h46l276 111l-14 35q-43 -16 -70 -17q-72 0 -72 140v673h-317v-36q96 0 125 -31q27 -29 26 -129v-494q-125 -131 -225 -131q-154 0 -153 185v636h-318v-36z" />
<glyph unicode="v" d="M18 879q74 -10 111 -50q14 -14 28.5 -40.5t30.5 -65.5l316 -750h41l315 762q57 143 146 144v36h-299v-36q104 0 104 -54q0 -51 -238 -606q-233 518 -233 586q0 74 109 74v36h-431v-36z" />
<glyph unicode="w" horiz-adv-x="1478" d="M16 879q70 -12 103 -56q20 -23 51 -106l285 -744h37l268 584l227 -584h43l295 766q53 139 137 140v36h-288v-36q96 0 96 -56q0 -84 -213 -587q-215 492 -215 567q0 76 121 76v36h-437v-36q102 0 138 -74q16 -37 18 -51q10 -29 20.5 -55.5t20.5 -55.5l-195 -428 q-215 530 -215 600q0 63 86 64v36h-383v-36z" />
<glyph unicode="x" d="M27 879q115 0 233 -174q27 -41 66 -100.5t90 -141.5q-72 -100 -116 -160.5t-60 -83.5q-145 -182 -205 -182v-37h299v37q-90 0 -90 53t213 316q199 -279 198 -322q0 -47 -88 -47v-37h432v37q-74 0 -135 65q-10 10 -92 127l-215 308q125 174 150 204q113 137 194 138v36 h-309v-36q72 0 72 -50q0 -27 -148 -229q-133 199 -133 227q0 51 76 52v36h-432v-36z" />
<glyph unicode="y" d="M12 879q94 -8 172 -174l320 -668q-29 -76 -47.5 -121t-26.5 -61q-66 -127 -131 -127q-23 0 -68 18q-47 18 -67 18q-104 0 -105 -90q0 -53 41 -83.5t97 -30.5q94 0 184 84q76 70 117 172l391 956q43 106 123 107v36h-299v-36q92 0 92 -52q0 -82 -98 -305l-123 -280 q-53 104 -91 174.5t-59 111.5q-106 211 -106 277q0 74 110 74v36h-426v-36z" />
<glyph unicode="z" horiz-adv-x="909" d="M37 0h809l12 281h-37q-14 -135 -63 -175q-47 -37 -189 -36h-309l612 809v36h-770v-253h37q12 125 62 157q39 27 170 27h274l-608 -809v-37z" />
<glyph unicode="{" horiz-adv-x="1374" d="M68 655l739 -788h115l-732 788l717 799h-114zM455 655l735 -788h115l-727 788l712 799h-114z" />
<glyph unicode="|" horiz-adv-x="1759" d="M68 229h1353q27 0 27 -28l-12 -25l-267 -190l23 -25l498 315l-498 310l-23 -23l267 -198l12 -23q0 -27 -27 -27h-1353v-86zM68 807l499 -322l25 27l-268 195l-13 20q0 27 27 27h1352v90h-1352q-27 0 -27 26l13 23l268 199l-25 24z" />
<glyph unicode="}" horiz-adv-x="1374" d="M68 -133h118l736 788l-721 799h-119l715 -799zM455 -133h114l736 788l-721 799h-115l715 -799z" />
<glyph unicode="~" horiz-adv-x="1751" d="M68 467l499 -451l31 39l-158 158l4 49h867v-49l-162 -158l35 -39l495 451l-495 434l-35 -39l162 -157v-48h-867l-4 48l158 157l-31 39zM186 467l127 106h1127l123 -106l-127 -121h-1121z" />
<glyph unicode="&#xa1;" horiz-adv-x="1251" d="M25 377l206 166v-283q0 -133 -28 -174q-35 -49 -164 -49v-37h1048l117 369l-33 6q-57 -143 -127 -207q-86 -80 -225 -80h-303q-66 0 -84 62q-8 25 -8 116v434l227 193v94l-227 -186v274q0 150 41 197t186 47v37h-612v-37q131 0 166 -49q27 -35 26 -174v-455l-206 -172 v-92z" />
<glyph unicode="&#xa2;" horiz-adv-x="1331" d="M68 -31v-96h1194v96h-1194zM68 141h1194v101h-1194v-101zM68 895h546v-469h99v469h549v100h-549v473h-99v-473h-546v-100z" />
<glyph unicode="&#xa3;" horiz-adv-x="1331" d="M68 330h546v-471h99v471h549v98h-549v467h-99v-467h-546v-98zM68 1083h1194v101h-1194v-101zM68 1358h1194v98h-1194v-98z" />
<glyph unicode="&#xa4;" horiz-adv-x="1331" d="M68 475h546v-475h99v475h549v100h-549v467h-99v-467h-546v-100zM68 1225h1194v100h-1194v-100z" />
<glyph unicode="&#xa5;" horiz-adv-x="1331" d="M68 0h1194v98h-1194v-98zM68 754h546v-469h99v469h549v100h-549v475h-99v-475h-546v-100z" />
<glyph unicode="&#xa7;" horiz-adv-x="1755" d="M68 442q0 -150 112 -274q115 -133 260 -133q113 0 189 51q23 14 55.5 47t77.5 86q86 98 117 113q57 -72 94 -131q80 -125 131 -168q76 -63 199 -64q201 0 299 156q84 133 84 344q0 178 -107 309q-115 141 -289 142q-203 0 -354 -263q-57 -100 -70 -108q-59 72 -100 120 t-64 76q-82 94 -231 95q-170 0 -289 -115q-114 -115 -114 -283zM76 1049h1607v98h-1607v-98zM76 1290h1607v99h-1607v-99zM115 457q0 137 94 223t233 86q121 0 248 -92q135 -102 135 -219q0 -88 -141 -219q-137 -131 -227 -132q-166 0 -254 92.5t-88 260.5zM934 401 q0 106 145.5 258t251.5 152q131 0 228 -109q94 -106 94 -243q0 -141 -88 -242q-92 -106 -232 -106q-74 0 -130 11t-100 37.5t-80 69.5t-67 107q-22 49 -22 65z" />
<glyph unicode="&#xa9;" horiz-adv-x="569" d="M33 442l178 148v-416q0 -80 -30.5 -108.5t-110.5 -28.5v-37h448v37q-80 0 -110.5 28.5t-30.5 108.5v553l178 145v84l-178 -145v610h-45l-277 -112l15 -35q43 16 69 16q72 0 72 -139v-477l-178 -148v-84z" />
<glyph unicode="&#xaa;" horiz-adv-x="1478" d="M37 672h194v-412q0 -133 -28 -174q-35 -49 -164 -49v-37h631q328 0 526 176q207 182 207 508q0 373 -244 537q-203 135 -596 135h-524v-37q131 0 166 -49q27 -35 26 -174v-351h-194v-73zM424 100v572h393v73h-393v508q104 29 205 29q264 0 407 -174q137 -162 138 -430 q0 -264 -136 -426q-145 -178 -401 -178q-104 -1 -213 26z" />
<glyph unicode="&#xab;" horiz-adv-x="1478" d="M76 678q0 -309 200 -516l-131 -162l60 -45l127 156q176 -139 407 -140q301 0 486 205q178 197 178 502q0 307 -197 514l131 164l-57 43l-127 -158q-176 145 -414 145q-301 0 -485 -206q-178 -197 -178 -502zM305 678q0 260 86 424q111 211 348 211q225 0 326 -180 l-686 -846q-74 160 -74 391zM418 215l684 848q72 -154 72 -385q0 -262 -87 -424q-111 -211 -348 -211q-215 0 -321 172z" />
<glyph unicode="&#xad;" horiz-adv-x="669" d="M82 381h518v158h-518v-158z" />
<glyph unicode="&#xae;" d="M39 -20l47 -43l135 147q119 -111 279 -111q207 0 334 152q121 145 120 354q0 178 -106 305l137 154l-47 43l-133 -150q-127 113 -291 113q-197 0 -326 -151q-119 -143 -118 -344q0 -184 108 -318zM256 537q0 338 223 337q143 0 221 -159l-399 -447q-45 124 -45 269z M328 205l399 444q41 -123 41 -256q0 -352 -221 -352q-141 0 -219 164z" />
<glyph unicode="&#xb0;" horiz-adv-x="1628" d="M68 664q0 -307 217 -518.5t526 -211.5t528 209q219 213 220 521q0 309 -218 514q-215 209 -522 208q-307 0 -526 -206q-225 -213 -225 -516zM162 664q0 268 192 448q195 182 461 182q274 0 461 -180q188 -182 188 -450q0 -270 -190.5 -454.5t-462.5 -184.5 q-270 0 -459 186q-190 187 -190 453zM303 621h457v-451h90v451h469v88h-469v446h-90v-446h-457v-88z" />
<glyph unicode="&#xb2;" d="M43 0h801l94 260h-37q-49 -109 -221 -108h-422q297 299 377 401q221 276 221 475q0 158 -115 260q-113 96 -270 96q-330 0 -387 -383h37q29 104 109.5 168t191.5 64q121 0 192 -90q68 -84 68 -207q0 -201 -240 -490q-41 -47 -140 -149t-259 -260v-37z" />
<glyph unicode="&#xb3;" d="M82 80q0 -106 229 -107q229 0 381 117q162 125 162 354q0 260 -254 359q186 150 186 303q0 125 -96 203q-94 76 -223 75q-260 0 -363 -286l31 -17q94 166 256 166q104 0 167 -63.5t63 -167.5q0 -129 -93 -215q-82 -80 -217 -99v-30q166 0 275 -80q119 -88 119 -252 q0 -113 -70 -195t-180 -82q-53 0 -152 46q-104 47 -137 47q-84 0 -84 -76z" />
<glyph unicode="&#xb4;" horiz-adv-x="1351" d="M68 -94v1450h100v-1356h1114v-94h-1214z" />
<glyph unicode="&#xb6;" horiz-adv-x="1617" d="M68 647q0 -313 219 -514q211 -193 528 -192q307 0 520 202.5t213 511.5h-94q0 -276 -180 -456.5t-455 -180.5q-276 0 -463 172q-195 178 -194 451q0 291 182 469q180 178 475 178q311 0 506 -246l-203 -47l342 -75v362l-100 -166q-57 119 -238 193q-152 63 -307 63 q-330 0 -536 -198q-215 -201 -215 -527z" />
<glyph unicode="&#xb9;" d="M240 1223l14 -31q68 31 104 31q55 0 72 -68q8 -31 8 -111v-829q0 -111 -32 -143q-35 -35 -142 -35v-37h510v37q-119 0 -149 61q-20 39 -21 170v1116h-35z" />
<glyph unicode="&#xba;" horiz-adv-x="770" d="M51 -236h164l481 895l-481 897h-164l430 -897z" />
<glyph unicode="&#xbb;" horiz-adv-x="1501" d="M70 641h1362v96h-1362v-96z" />
<glyph unicode="&#xbf;" horiz-adv-x="1632" d="M68 -94h1495v1472h-1495v-1472zM168 0v1282h1296v-1282h-1296zM309 606h451v-467h98v467h467v96h-467v439h-98v-439h-451v-96z" />
<glyph unicode="&#xc0;" d="M70 424q0 -180 94 -307q104 -143 276 -144q145 0 273 129v-129h45l276 111l-14 35q-43 -16 -70 -17q-72 0 -71 140v868h110v41h-110v270h-45l-277 -112l14 -35q43 16 70 16q72 0 72 -139h-205v-41h205v-244q-74 78 -203 78q-199 0 -324 -166q-116 -151 -116 -354z M256 496q0 145 51 249q63 137 193 138q98 0 157 -84q55 -78 56 -178v-447q-84 -92 -176 -92q-143 0 -220 143q-61 113 -61 271z" />
<glyph unicode="&#xc1;" horiz-adv-x="1628" d="M68 664q0 -307 217 -518.5t526 -211.5t528 209q219 213 220 521q0 309 -218 514q-215 209 -522 208q-307 0 -526 -206q-225 -213 -225 -516zM162 664q0 268 192 448q195 182 461 182q274 0 461 -180q188 -182 188 -450q0 -270 -190.5 -454.5t-462.5 -184.5 q-270 0 -459 186q-190 187 -190 453z" />
<glyph unicode="&#xc2;" horiz-adv-x="1628" d="M68 664q0 -307 217 -518.5t526 -211.5t528 209q219 213 220 521q0 309 -218 514q-215 209 -522 208q-307 0 -526 -206q-225 -213 -225 -516zM162 664q0 268 192 448q195 182 461 182q274 0 461 -180q188 -182 188 -450q0 -270 -190.5 -454.5t-462.5 -184.5 q-270 0 -459 186q-190 187 -190 453zM721 664q0 -35 25.5 -59.5t60.5 -24.5q37 0 62.5 23.5t25.5 60.5q0 88 -88 88q-35 0 -60.5 -26.5t-25.5 -61.5z" />
<glyph unicode="&#xc3;" horiz-adv-x="770" d="M72 659l481 -895h164l-430 895l430 897h-164z" />
<glyph unicode="&#xc4;" horiz-adv-x="1892" d="M68 0h1753q0 594 -492 856q-176 94 -405 94q-215 0 -404 -112q-452 -269 -452 -838zM158 96q0 307 229 543q231 238 533 238q326 0 563 -230q240 -231 239 -551h-1564z" />
<glyph unicode="&#xc5;" horiz-adv-x="1710" d="M68 -76h1572l-792 1596zM203 0l645 1329l657 -1329h-1302z" />
<glyph unicode="&#xc6;" horiz-adv-x="16" d="M199 1077h32l250 211l250 -211h33l-191 330h-184z" />
<glyph unicode="&#xc7;" horiz-adv-x="16" d="M442 1772l293 -347h35l-104 347h-224z" />
<glyph unicode="&#xc8;" horiz-adv-x="1882" d="M72 737q0 -111 80 -209q47 -57 84 -100l61 -72q80 -96 80 -186q0 -31 -27 -86q-25 -59 -24 -78q0 -170 616 -170t617 170q0 23 -27 78q-25 57 -25 86q0 92 80 188q47 57 84 98.5t62 69.5q80 100 79 211q0 166 -96 260.5t-262 94.5q-195 0 -338 -150q16 76 17 121 q0 125 -146 199v94h90v90h-90v90h-90v-90h-90v-90h90v-94q-145 -74 -145 -197q0 -47 16 -123q-137 150 -330 150q-168 0 -267 -94.5t-99 -260.5zM143 745q0 61 22.5 111.5t62.5 86.5t94.5 55.5t115.5 19.5q141 0 299 -141q160 -139 160 -279v-133q-291 0 -508 -86 q-66 68 -105.5 108.5t-52.5 57.5q-88 108 -88 200zM426 59q33 51 33 119t-33 125q227 78 516 78t516 -78q-35 -53 -35 -125q0 -59 35 -119q-188 74 -516 74q-330 0 -516 -74zM451 -8q133 63 491 63q362 0 492 -63q-137 -76 -492 -76q-358 0 -491 76zM821 1051q0 55 34 95 t87 40q55 0 88 -39t33 -94q0 -82 -43 -187q-27 -59 -45.5 -105t-32.5 -75q-121 283 -121 365zM987 465v133q0 139 158 279q160 141 301 141q125 0 209 -72q86 -78 86 -201q0 -86 -90 -200q-16 -20 -54 -61.5t-102 -104.5q-219 86 -508 86z" />
<glyph unicode="&#xc9;" horiz-adv-x="16" d="M209 1464l293 -346h35l-105 346h-223z" />
<glyph unicode="&#xca;" horiz-adv-x="1890" d="M68 1120q0 -43 32.5 -77.5t75.5 -34.5l119 -568q4 -20 23.5 -58t54.5 -93q61 -98 61 -154q0 -25 -26 -76q-25 -49 -25 -69q0 -25 51 -62q127 -90 445 -90q631 0 630 152q0 10 -26 61q-25 55 -25 84q0 55 62 154q35 55 54 93t23 58l119 568q43 0 76 34.5t33 77.5 q0 49 -34 83t-83 34t-83 -34t-34 -83q0 -55 45 -94l-252 -461l-12 594q37 8 62.5 42t25.5 73q0 49 -33.5 83t-83.5 34q-49 0 -82.5 -34t-33.5 -83q0 -74 57 -100l-192 -560l-101 609q72 37 72 108q0 49 -34 83t-83 34t-83 -34t-34 -83q0 -72 72 -108l-100 -609l-193 560 q57 31 58 100q0 49 -34 83t-83 34t-83 -34t-34 -83q0 -94 88 -115l-12 -594l-252 461q45 45 45 94t-34 83t-83 34t-82.5 -34t-33.5 -83zM125 1120q0 20 19.5 40t39.5 20q59 0 60 -60q0 -59 -60 -59q-59 0 -59 59zM258 881l246 -432l61 6l17 583l190 -559l74 8l100 594 l98 -594l74 -8l187 559l20 -583l61 -6l246 432q-94 -553 -180 -578q-233 88 -506 88q-242 0 -512 -88q-61 49 -115 268q-6 27 -21 104t-40 206zM469 23q41 41 41 127q0 55 -25 96q143 82 461 82q303 0 467 -84q-33 -39 -33 -105q0 -61 37 -116q-231 74 -471 73 q-260 1 -477 -73zM489 1274q0 59 60 59q59 0 59 -59t-59 -60q-60 1 -60 60zM504 -35q172 68 442 68q98 0 225 -19q143 -18 215 -49q-121 -63 -364 -63h-148q-251 0 -370 63zM887 1331q0 59 59 60q59 0 60 -60q0 -59 -60 -59q-59 0 -59 59zM1284 1274q0 59 59 59t60 -59 q0 -59 -60 -60q-59 1 -59 60zM1649 1120q0 59 59 60q59 0 59 -60q0 -59 -59 -59t-59 59z" />
<glyph unicode="&#xcb;" horiz-adv-x="1558" d="M68 61v-213h1425v213h-133v129l-160 160v639l184 150v323h-274v-137h-158v137h-344v-139h-157v139h-275v-323l184 -150v-641l-159 -160v-127h-133zM141 -10h1278v-68h-1278v68zM250 1176v213h127v-140h305v140h197v-140h305v140h127v-213l-185 -148h-692zM274 61v95 l160 159h692l160 -159v-95h-1012zM434 389v565h692v-565h-692z" />
<glyph unicode="&#xcc;" horiz-adv-x="1873" d="M68 23l131 -187q78 53 200 53q20 0 48 -3t67 -7q76 -12 117 -12q207 0 307 143q100 -143 307 -143q37 0 115 12q39 4 67.5 7t49.5 3q123 0 200 -53l131 187q-111 115 -266 114q-23 0 -59.5 -3t-83.5 -11q-96 -12 -144 -12q-45 0 -88 20q-53 25 -53 62q119 31 125 30 q90 31 90 74l-82 217q160 172 160 317q0 272 -416 445q94 82 94 137q0 63 -42 103t-105 40t-105 -39.5t-42 -103.5q0 -55 94 -137q-416 -184 -416 -445q0 -143 160 -317q-29 -72 -48.5 -127t-33.5 -90q0 -43 90 -74q4 -2 36 -9t89 -21q0 -37 -53 -62q-43 -20 -88 -20 q-49 0 -144 12q-47 8 -84 11t-59 3q-155 1 -266 -114zM166 10q78 51 186 51q49 0 133 -14q88 -12 133 -12q72 0 140 37q78 43 78 108h63q0 -111 -73.5 -174t-186.5 -63q-39 0 -109 12q-35 4 -62.5 7t-45.5 3q-117 0 -199 -37zM547 811q0 270 391 430q55 -23 121 -61 q18 -10 46 -30t64 -46q86 -61 123 -127t37 -166q0 -92 -143 -248q-111 37 -248 37t-248 -37q-143 156 -143 248zM635 315l63 174q80 33 240 33q156 0 240 -33l65 -176q-82 -57 -305 -57q-225 0 -303 59zM745 844h156v-156h74v156h155v74h-155v149h-74v-149h-156v-74z M862 1413q0 29 23.5 55.5t52.5 26.5q33 0 54.5 -24.5t21.5 -57.5t-21.5 -60.5t-54.5 -27.5t-54.5 27.5t-21.5 60.5zM977 180h63q0 -66 78 -108q68 -37 139 -37q43 0 134 12q84 14 133 14q104 0 186 -51l-57 -82q-86 37 -199 37q-18 0 -46 -3t-62 -7q-72 -12 -109 -12 q-113 0 -186.5 63t-73.5 174z" />
<glyph unicode="&#xcd;" horiz-adv-x="1794" d="M68 397q0 -41 77 -131q76 -88 117 -88q33 0 39 31q31 -57 76 -57q20 0 121 124q29 35 84 79t137 98q162 98 182 135h14q0 -104 -104 -234q-57 -68 -101 -118t-73 -82q-98 -117 -98 -306h1187q0 559 -131 883q-186 461 -645 545q-10 29 -24.5 57.5t-34.5 57.5 q-53 78 -90 77q-61 -41 -109 -196h-30q-31 53 -95 114q-76 76 -118 76q-49 0 -50 -100q0 -53 37 -154q-27 -35 -52.5 -80t-47.5 -100l-37 -98q-18 -49 -37 -96q-96 -168 -121 -211q-73 -134 -73 -226zM131 403q0 63 158 338q33 57 104 228q61 145 121 223l-43 197 q88 -63 135 -156q-84 -84 -84 -115q0 -35 25 -31q123 98 162 99l36 -12q0 125 70 219q43 -53 55 -115q6 -35 7 -127h53l20 72q639 -139 639 -1080v-227h-966q0 117 96 236q63 78 107 131t69 82q96 121 96 297q33 63 33 219h-70q0 -186 -147 -281q-104 -66 -175 -110 t-112 -66q-45 -29 -147 -182l-33 8q33 72 51 98v6q0 27 -29 27q-23 0 -108 -105q-23 0 -74 52q-49 50 -49 75zM190 430q0 -39 29 -39q23 0 49 39q31 39 31 64q0 31 -35 30q-12 0 -25.5 -10t-23.5 -24.5t-17.5 -31t-7.5 -28.5zM414 872q12 -23 53 -32l14 14q-8 18 -10 39 l16 22q43 -23 58 -32q37 0 37 35q0 6 -5.5 14t-12.5 17t-13 16.5t-6 11.5q6 8 26.5 13t26.5 14l-14 14l-37 2q-45 2 -90 -49q-43 -54 -43 -99z" />
<glyph unicode="&#xce;" horiz-adv-x="1370" d="M68 -152h1232q0 283 -63 418q-82 180 -311 279q156 94 155 235q0 213 -247 299q68 55 67 154q0 92 -62.5 147.5t-154.5 55.5t-154.5 -55.5t-62.5 -147.5q0 -98 68 -154q-248 -88 -248 -299q0 -143 155 -235q-229 -98 -311 -279q-63 -139 -63 -418zM145 -72q0 238 88 357 q76 102 302 217v78q-172 106 -173 213q0 147 252 243v78q-72 53 -71 119q0 57 41 92t100 35q141 0 141 -127q0 -66 -71 -119v-78q252 -96 252 -243q0 -106 -172 -213v-78q223 -113 299 -217q90 -125 90 -357h-1078z" />
<glyph unicode="&#xcf;" horiz-adv-x="1617" d="M68 0v-96h1480v96h-690v1475h-98v-1475h-692z" />
<glyph unicode="&#xd1;" horiz-adv-x="1767" d="M68 590h1628v211h-1628v-211z" />
<glyph unicode="&#xd2;" horiz-adv-x="2000" d="M68 0h1214v295h647v860h-1227v-297h-634v-858zM168 96v664h534v-465h482v-199h-1016zM801 393v367h383v-367h-383zM801 858v197h1030v-662h-549v465h-481z" />
<glyph unicode="&#xd3;" horiz-adv-x="2000" d="M68 0h1214v295h647v860h-1227v-297h-634v-858zM168 96v664h534v-465h482v-199h-1016z" />
<glyph unicode="&#xd4;" horiz-adv-x="2000" d="M68 0h1214v295h647v860h-1227v-297h-634v-858z" />
<glyph unicode="&#xd5;" horiz-adv-x="1755" d="M68 514q0 -150 112 -274q115 -133 260 -134q113 0 191 50q51 33 139 139q35 45 62.5 71.5t46.5 36.5q41 -37 110 -155q35 -57 64.5 -96t56.5 -60q72 -59 193 -59q197 0 299 160q84 133 84 344q0 178 -107 309q-115 141 -289 141q-209 0 -358 -266q-53 -92 -66 -105 l-164 197q-80 96 -231 96q-174 0 -289 -112q-114 -111 -114 -283zM115 528q0 137 94 223.5t233 86.5q123 0 248 -95q135 -102 135 -217q0 -84 -141 -219q-143 -133 -227 -133q-168 0 -255 93t-87 261zM934 471q0 106 145.5 258t251.5 152q131 0 228 -109q94 -106 94 -242 q0 -143 -88 -243q-90 -102 -228 -103q-147 0 -229 43q-92 49 -152 176q-22 50 -22 68z" />
<glyph unicode="&#xd6;" horiz-adv-x="16" d="M293 1112h33l221 346h-189zM606 1112h33l221 346h-188z" />
<glyph unicode="&#xd8;" horiz-adv-x="569" d="M168 -408h344v82h-242v2036h242v82h-344v-2200z" />
<glyph unicode="&#xd9;" horiz-adv-x="1937" d="M68 487q0 -170 122 -299q123 -127 293 -127q168 0 287 132q117 125 117 294q0 170 -119 295q-121 127 -285 127q-172 0 -295 -125q-120 -127 -120 -297zM150 485q0 145 94 246q96 102 239 103q143 0 234 -99q92 -98 92 -243q0 -143 -90 -246q-92 -106 -236 -107 q-143 0 -237 101q-96 102 -96 245zM1049 487q0 -166 120 -297q119 -129 289 -129q166 0 287 129q121 131 121 297q0 168 -121 295t-287 127t-289 -127q-120 -127 -120 -295zM1130 485q0 143 93 246q96 102 235 103q143 0 236 -99q94 -96 94 -243q0 -150 -92 -250 q-92 -102 -238 -103q-139 0 -235 103q-93 100 -93 243z" />
<glyph unicode="&#xda;" horiz-adv-x="956" d="M68 111q0 -168 120 -295q123 -125 295 -125q164 0 285 127q119 125 119 293q0 170 -119 295q-121 129 -285 129q-172 0 -295 -127q-120 -127 -120 -297zM68 1069q0 -172 120 -299q123 -125 295 -125q168 0 285 127q119 127 119 297t-119 295q-121 127 -285 127 q-172 0 -295 -125q-120 -125 -120 -297zM150 109q0 145 94 245q96 102 239 103q147 0 236 -101q90 -100 90 -243t-92 -244q-90 -102 -234 -102q-141 0 -237 102.5t-96 239.5zM150 1067q0 141 96 243.5t237 102.5q145 0 236 -98q90 -96 90 -242q0 -143 -90 -246 q-96 -109 -236 -108q-143 0 -239 102q-94 101 -94 246z" />
<glyph unicode="&#xdb;" horiz-adv-x="2463" d="M68 500q0 -172 120 -299q123 -127 295 -127q168 0 287 131q117 125 117 295q0 168 -119 293q-121 129 -285 129q-172 0 -295 -125q-120 -127 -120 -297zM150 498q0 141 96 243.5t237 102.5q143 0 234 -99q92 -98 92 -243q0 -143 -90 -246q-92 -106 -236 -106 q-143 0 -239 102q-94 101 -94 246zM1004 502q0 -35 25.5 -59.5t60.5 -24.5q33 0 60.5 25.5t27.5 58.5q0 35 -24 62.5t-56 27.5q-35 0 -64.5 -27.5t-29.5 -62.5zM1286 502q0 -33 27.5 -58.5t60.5 -25.5q35 0 59.5 24.5t24.5 59.5t-29.5 62.5t-64.5 27.5q-33 0 -55.5 -28.5 t-22.5 -61.5zM1577 500q0 -172 119 -299q121 -127 286 -127q168 0 289 127q123 129 123 299q0 168 -123 295q-121 127 -289 127q-166 0 -286 -127q-119 -125 -119 -295zM1655 502q0 143 90 243q92 98 237 99q139 0 236 -105q96 -102 96 -241t-96 -246q-96 -102 -236 -102 q-143 0 -235 104.5t-92 247.5z" />
<glyph unicode="&#xdc;" horiz-adv-x="16" d="M223 1458l191 -330h184l190 330h-32l-250 -211l-250 211h-33z" />
<glyph unicode="&#xdd;" horiz-adv-x="1478" d="M134 1510v1450h100v-1356h1114v-94h-1214zM27 1319q117 0 196 -123l420 -639v-297q0 -133 -29 -174q-35 -49 -163 -49v-37h577v37q-133 0 -166 49q-27 35 -26 174v315l344 543q127 201 276 201v37h-473v-37q137 0 137 -98q0 -66 -157 -303l-168 -254q-66 94 -114 164.5 t-81 117.5q-152 225 -151 283q0 90 157 90v37h-579v-37z" />
<glyph unicode="&#xdf;" horiz-adv-x="595" d="M68 -143h104v1599h-104v-1599zM422 -143h104v1599h-104v-1599z" />
<glyph unicode="&#xe0;" horiz-adv-x="16" d="M653 1620q0 -47 32 -79t79 -32t78.5 32t31.5 79t-31.5 79t-78.5 32t-79 -32t-32 -79z" />
<glyph unicode="&#xe1;" horiz-adv-x="1644" d="M133 1296l17 -28q49 20 67 20q35 0 35 -133v-377q0 -41 -14 -67q-20 -4 -42 -7.5t-46 -3.5v-36h329v36q-25 0 -46 3.5t-42 7.5q-25 49 -24 262q0 35 1 86t3 119q6 137 6 206h-39zM244 -51h90l934 1435h-88zM942 0h494l59 152h-43q-33 -57 -141 -58h-211q80 68 133 117 t82 78q129 137 129 243q0 86 -78 140q-72 49 -160 49q-213 0 -243 -209h45q37 115 166 115q61 0 103 -40t42 -102q0 -109 -143 -252q-66 -66 -234 -196v-37z" />
<glyph unicode="&#xe2;" horiz-adv-x="16" d="M432 1468h31q18 139 96 140q25 0 145.5 -70t176.5 -70q100 0 149 86q41 72 41 177h-31q-18 -139 -96 -140q-25 0 -145.5 70t-175.5 70q-100 0 -150 -86q-41 -73 -41 -177z" />
<glyph unicode="&#xe3;" horiz-adv-x="569" d="M55 831l15 -34q43 16 69 16q72 0 72 -139v-500q0 -80 -30.5 -108.5t-110.5 -28.5v-37h448v37q-80 0 -110.5 28.5t-30.5 108.5v770h-45zM180 1051h35l293 346h-223z" />
<glyph unicode="&#xe4;" horiz-adv-x="16" d="M479 1757q0 -117 84 -201q82 -80 203 -79q119 0 203 79q84 84 84 201h-33q-59 -129 -254 -129q-199 0 -254 129h-33z" />
<glyph unicode="&#xe5;" horiz-adv-x="16" d="M500 1630q0 -47 31.5 -78.5t78.5 -31.5t79 31.5t32 78.5t-32 79t-79 32t-78.5 -32t-31.5 -79zM850 1630q0 -47 31.5 -78.5t79.5 -31.5q47 0 78.5 31.5t31.5 78.5t-31.5 79t-78.5 32t-79 -32t-32 -79z" />
<glyph unicode="&#xe6;" horiz-adv-x="16" d="M416 1118h35l292 346h-223z" />
<glyph unicode="&#xe7;" horiz-adv-x="16" d="M582 1665q0 -41 15 -76t41 -60.5t60.5 -40.5t75.5 -15q39 0 75 15t61.5 40.5t41 60.5t15.5 76q0 39 -15.5 75t-41 61.5t-61.5 41t-75 15.5q-41 0 -75.5 -15.5t-60.5 -41t-41 -61.5t-15 -75zM651 1665q0 51 36 87t87 36t87 -36t36 -87t-36 -87t-87 -36t-87 36t-36 87z" />
<glyph unicode="&#xe8;" horiz-adv-x="16" d="M477 1839l191 -330h184l190 330h-32l-250 -211l-250 211h-33z" />
<glyph unicode="&#xe9;" horiz-adv-x="16" d="M471 1452h33l250 211l250 -211h32l-190 330h-184z" />
<glyph unicode="&#xea;" horiz-adv-x="16" d="M532 -362q70 -16 125 -17q90 0 164 49q84 55 84 142q0 141 -170 141l-133 -72q55 0 99 -30.5t44 -83.5q0 -45 -39.5 -77t-87.5 -32q-23 0 -77 18z" />
<glyph unicode="&#xeb;" horiz-adv-x="16" d="M565 1454h33l221 346h-188zM879 1454h32l222 346h-189z" />
<glyph unicode="&#xec;" horiz-adv-x="1632" d="M68 -94h1495v1446h-1495v-1446zM168 0v1253h1296v-1253h-1296z" />
<glyph unicode="&#xed;" horiz-adv-x="1558" d="M70 678q0 -305 200 -506q205 -201 508 -201q305 0 506 201q203 201 203 506t-203 506q-201 203 -506 202q-305 0 -508 -202q-200 -201 -200 -506zM131 678q0 279 184.5 463t462.5 184q281 0 463 -184q184 -182 184 -463t-184 -465q-182 -182 -463 -182q-279 0 -465 182 q-182 186 -182 465zM319 666q0 -193 131.5 -316t327.5 -123q254 0 389 203l-39 21q-106 -162 -309 -162q-334 0 -334 411q0 166 78 273q86 117 248 117q238 0 299 -236h39l-21 281h-38l-21 -33l-29 -12q-20 4 -47.5 11t-62.5 15q-72 18 -109 19q-211 0 -354 -127 q-148 -133 -148 -342z" />
<glyph unicode="&#xee;" horiz-adv-x="768" d="M68 999l24 -26l199 268l24 14q27 2 27 -28v-1346h86v1346q0 29 27 28q27 0 221 -282l22 26l-319 496z" />
<glyph unicode="&#xef;" horiz-adv-x="1759" d="M68 520h1353q27 0 27 -26l-12 -21l-267 -197l23 -26l498 323l-498 308l-23 -25l267 -197l12 -20q0 -29 -27 -29l-1353 -2v-88z" />
<glyph unicode="&#xf1;" horiz-adv-x="569" d="M55 831l15 -34q43 16 69 16q72 0 72 -139v-500q0 -80 -30.5 -108.5t-110.5 -28.5v-37h448v37q-80 0 -110.5 28.5t-30.5 108.5v770h-45z" />
<glyph unicode="&#xf2;" horiz-adv-x="16" d="M350 1231q0 -47 32 -79t79 -32t78.5 32t31.5 79t-31.5 78.5t-78.5 31.5t-79 -31.5t-32 -78.5z" />
<glyph unicode="&#xf3;" d="M82 262h860v860h-860v-860z" />
<glyph unicode="&#xf4;" horiz-adv-x="16" d="M205 1102h31q18 139 96 139q25 0 145.5 -69.5t175.5 -69.5q100 0 150 86q41 72 41 176h-31q-18 -139 -96 -139q-25 0 -145.5 69.5t-176.5 69.5q-100 0 -149 -86q-41 -72 -41 -176z" />
<glyph unicode="&#xf5;" horiz-adv-x="1697" d="M137 0l1501 657l-1501 658v-1315z" />
<glyph unicode="&#xf6;" horiz-adv-x="16" d="M225 1372q0 -117 84 -201q82 -80 203 -79q119 0 203 79q84 84 84 201h-33q-59 -129 -254 -129q-199 0 -254 129h-33z" />
<glyph unicode="&#xf8;" horiz-adv-x="569" d="M57 -326v-82h344v2200h-344v-82h242v-2036h-242z" />
<glyph unicode="&#xf9;" horiz-adv-x="16" d="M268 1239q0 -41 15.5 -76t41 -60.5t60.5 -40.5t76 -15q39 0 74.5 15t61.5 40.5t41 60.5t15 76q0 39 -15 75t-41 61.5t-61.5 41t-74.5 15.5q-41 0 -76 -15.5t-60.5 -41t-41 -61.5t-15.5 -75zM338 1239q0 51 36 87t87 36t87 -36t36 -87t-36 -87t-87 -36t-87 36t-36 87z" />
<glyph unicode="&#xfa;" horiz-adv-x="1200" d="M63 477h1076v82h-1076v-82zM63 801h1076v82h-1076v-82z" />
<glyph unicode="&#xfb;" horiz-adv-x="16" d="M186 1231q0 -47 32 -79t79 -32t79 32t32 79t-32 78.5t-79 31.5t-79 -31.5t-32 -78.5zM537 1231q0 -47 31.5 -79t78.5 -32t79 32t32 79t-32 78.5t-79 31.5t-78.5 -31.5t-31.5 -78.5z" />
<glyph unicode="&#xfc;" horiz-adv-x="16" d="M725 1425h35l293 347h-224z" />
<glyph unicode="&#xfd;" d="M-96 1067v1450h100v-1356h1114v-94h-1214zM12 879q94 -8 172 -174l320 -668q-29 -76 -47.5 -121t-26.5 -61q-66 -127 -131 -127q-23 0 -68 18q-47 18 -67 18q-104 0 -105 -90q0 -53 41 -83.5t97 -30.5q94 0 184 84q76 70 117 172l391 956q43 106 123 107v36h-299v-36 q92 0 92 -52q0 -82 -98 -305l-123 -280q-53 104 -91 174.5t-59 111.5q-106 211 -106 277q0 74 110 74v36h-426v-36z" />
<glyph unicode="&#xff;" horiz-adv-x="16" d="M262 -360q70 -16 125 -17q90 0 164 49q84 55 84 142q0 141 -170 141l-133 -72q55 0 99 -30.5t44 -83.5q0 -45 -40 -77t-87 -32q-23 0 -78 18z" />
<glyph unicode="&#x152;" horiz-adv-x="2729" d="M1518 0h1051l114 340h-39q-41 -70 -74.5 -117t-62.5 -71q-88 -78 -215 -78h-278q-61 0 -86 21.5t-25 80.5v496h272q129 0 176 -35q49 -41 62 -166h37v473h-37q0 -125 -60 -166q-47 -33 -178 -33h-272v537h346q145 0 201 -43q57 -39 86 -180h41l-19 297h-1040v-37 q131 0 166 -49q27 -35 26 -174v-836q0 -133 -28 -174q-35 -49 -164 -49v-37zM76 678q0 -305 178 -502q184 -205 485 -205t486 205q178 197 178 502t-178 502q-184 207 -486 206q-301 0 -485 -206q-178 -197 -178 -502zM305 678q0 260 86 424q111 211 348 211q238 0 348 -211 q86 -164 87 -424q0 -262 -87 -424q-111 -211 -348 -211q-238 0 -348 211q-86 162 -86 424z" />
<glyph unicode="&#x153;" horiz-adv-x="1933" d="M1094 442q0 -195 100 -325q111 -143 299 -144q147 0 252 109q94 98 123 252l-31 20q-78 -219 -274 -219q-164 0 -252 141q-78 121 -78 293h635q0 166 -94 269q-94 106 -256 106q-207 0 -322 -151q-102 -138 -102 -351zM1235 631q0 94 61 166q61 74 154 73 q104 0 156.5 -66.5t52.5 -172.5h-424zM70 449q0 -195 116 -332q119 -143 314 -144q207 0 334 152q121 145 120 354q0 199 -123 332q-121 133 -317 133q-197 0 -326 -151q-118 -143 -118 -344zM256 537q0 338 223 337q154 0 232 -172q57 -127 57 -309q0 -352 -221 -352 q-156 0 -232 180q-59 142 -59 316z" />
<glyph unicode="&#x2c6;" horiz-adv-x="1646" d="M70 -18l82 -82l671 669l672 -669l82 82l-672 669l672 672l-82 82l-672 -672l-671 672l-82 -82l671 -672z" />
<glyph unicode="&#x2dc;" horiz-adv-x="512" d="M-804 573l499 -451l31 39l-158 158l4 49h867v-49l-162 -158l35 -39l495 451l-495 434l-35 -39l162 -157v-48h-867l-4 48l158 157l-31 39zM-686 573l127 106h1127l123 -106l-127 -121h-1121z" />
<glyph unicode="&#x2000;" horiz-adv-x="1478" />
<glyph unicode="&#x2001;" horiz-adv-x="2959" />
<glyph unicode="&#x2002;" horiz-adv-x="1478" />
<glyph unicode="&#x2003;" horiz-adv-x="2959" />
<glyph unicode="&#x2004;" horiz-adv-x="985" />
<glyph unicode="&#x2005;" horiz-adv-x="739" />
<glyph unicode="&#x2006;" horiz-adv-x="491" />
<glyph unicode="&#x2007;" horiz-adv-x="491" />
<glyph unicode="&#x2008;" horiz-adv-x="368" />
<glyph unicode="&#x2009;" horiz-adv-x="591" />
<glyph unicode="&#x200a;" horiz-adv-x="163" />
<glyph unicode="&#x2010;" horiz-adv-x="669" d="M82 381h518v158h-518v-158z" />
<glyph unicode="&#x2011;" horiz-adv-x="669" d="M82 381h518v158h-518v-158z" />
<glyph unicode="&#x2012;" horiz-adv-x="669" d="M82 381h518v158h-518v-158z" />
<glyph unicode="&#x2013;" d="M82 381v158h872v-158h-872z" />
<glyph unicode="&#x2014;" horiz-adv-x="2048" d="M82 381v158h1896v-158h-1896z" />
<glyph unicode="&#x2018;" horiz-adv-x="1351" d="M68 -92h1214v92h-1114v1356h-100v-1448z" />
<glyph unicode="&#x2019;" horiz-adv-x="681" d="M188 1270q0 -43 31 -74t74 -31q12 0 34.5 8.5t34.5 8.5q37 0 37 -62q0 -66 -53 -123q-31 -31 -113 -82v-47q117 35 189 119t72 201q0 39 -12.5 74.5t-35 63.5t-54.5 44t-68 16q-55 0 -95.5 -31.5t-40.5 -84.5z" />
<glyph unicode="&#x201c;" horiz-adv-x="835" d="M135 1276q0 -111 27 -238l49 -235h49q12 59 24.5 117.5t24.5 117.5q27 131 27 238q0 111 -100 110q-45 0 -73 -31.5t-28 -78.5zM502 1276q0 -111 26 -238l50 -235h49q12 59 24.5 117.5t24.5 117.5q27 131 26 238q0 111 -100 110q-45 0 -72.5 -31.5t-27.5 -78.5z" />
<glyph unicode="&#x201d;" horiz-adv-x="835" d="M135 1276q0 -111 27 -238l49 -235h49q12 59 24.5 117.5t24.5 117.5q27 131 27 238q0 111 -100 110q-45 0 -73 -31.5t-28 -78.5zM502 1276q0 -111 26 -238l50 -235h49q12 59 24.5 117.5t24.5 117.5q27 131 26 238q0 111 -100 110q-45 0 -72.5 -31.5t-27.5 -78.5z" />
<glyph unicode="&#x2026;" horiz-adv-x="1536" d="M1169 82q0 -47 32 -78t79 -31t79 31t32 78t-32 79t-79 32t-79 -32t-32 -79zM657 82q0 -47 32 -78t79 -31t79 31t32 78t-32 79t-79 32t-79 -32t-32 -79zM145 82q0 -47 32 -78t79 -31t79 31t32 78t-32 79t-79 32t-79 -32t-32 -79z" />
<glyph unicode="&#x202f;" horiz-adv-x="591" />
<glyph unicode="&#x2039;" horiz-adv-x="978" d="M68 266q0 -172 125 -291q127 -121 294 -120q168 0 295 120q125 119 125 291q0 154 -106 281q-113 137 -262 137v580h39l110 -152h76l-272 385l-277 -385h72l114 152h39v-580q-154 0 -266 -135q-106 -125 -106 -283zM158 264q0 133 98 236q98 104 229 104q137 0 236 -100 q98 -102 98 -240q0 -129 -102 -225q-100 -94 -230 -94q-129 0 -229 94t-100 225z" />
<glyph unicode="&#x203a;" horiz-adv-x="1693" d="M68 0l1556 610v107l-1556 596v-92l1437 -557l-1437 -576v-88z" />
<glyph unicode="&#x205f;" horiz-adv-x="739" />
<glyph unicode="&#x2122;" horiz-adv-x="3072" d="M1288 0h473v37q-123 0 -160 45q-33 39 -33 166l5 887l520 -1135h32l523 1135v-875q0 -133 -29 -174q-35 -49 -164 -49v-37h578v37q-133 0 -166 49q-27 35 -27 174v836q0 133 29 174q33 49 164 49v37h-383l-486 -1061l-491 1061h-385v-37q123 0 164 -55q29 -41 28 -166 v-838q0 -133 -28 -174q-35 -49 -164 -49v-37zM57 1038h37q0 229 232 230h202v-1008q0 -133 -28 -174q-35 -49 -164 -49v-37h577v37q-133 0 -165 49q-27 35 -27 174v1008h203q231 0 231 -230h37l-14 318h-1106z" />
<glyph unicode="&#xe000;" horiz-adv-x="915" d="M0 915h915v-915h-915v915z" />
<glyph unicode="&#xfb01;" horiz-adv-x="1251" d="M737 831l15 -34q43 16 69 16q72 0 72 -139v-500q0 -80 -30.5 -108.5t-110.5 -28.5v-37h448v37q-80 0 -110.5 28.5t-30.5 108.5v770h-45zM875 1321q0 -43 28.5 -71.5t71.5 -28.5t71.5 28.5t28.5 71.5t-28.5 71.5t-71.5 28.5t-71.5 -28.5t-28.5 -71.5zM78 842h178v-574 q0 -129 -23 -170q-35 -61 -151 -61v-37h510v37q-117 0 -150 61q-20 39 -20 170v574h235v73h-235v166q0 115 16 170q31 96 121 97q45 0 135 -91q88 -88 113 -88q31 0 56.5 26t25.5 56q0 78 -88 127q-78 43 -160 43q-385 0 -385 -506h-178v-73z" />
<glyph unicode="&#xfb02;" horiz-adv-x="1251" d="M737 1309l15 -35q43 16 69 16q72 0 72 -139v-977q0 -80 -30.5 -108.5t-110.5 -28.5v-37h448v37q-80 0 -110.5 28.5t-30.5 108.5v1247h-45zM78 842h178v-574q0 -129 -23 -170q-35 -61 -151 -61v-37h510v37q-117 0 -150 61q-20 39 -20 170v574h235v73h-235v166 q0 115 16 170q31 96 121 97q45 0 135 -91q88 -88 113 -88q31 0 56.5 26t25.5 56q0 78 -88 127q-78 43 -160 43q-385 0 -385 -506h-178v-73z" />
<glyph unicode="&#xfb03;" horiz-adv-x="1933" d="M1419 831l15 -34q43 16 69 16q72 0 72 -139v-500q0 -80 -30.5 -108.5t-110.5 -28.5v-37h448v37q-80 0 -110.5 28.5t-30.5 108.5v770h-45zM1557 1321q0 -43 28.5 -71.5t71.5 -28.5t71.5 28.5t28.5 71.5t-28.5 71.5t-71.5 28.5t-71.5 -28.5t-28.5 -71.5zM760 842h178v-574 q0 -129 -23 -170q-35 -61 -151 -61v-37h510v37q-117 0 -150 61q-20 39 -20 170v574h235v73h-235v166q0 115 16 170q31 96 121 97q45 0 135 -91q88 -88 113 -88q31 0 56.5 26t25.5 56q0 78 -88 127q-78 43 -160 43q-385 0 -385 -506h-178v-73zM78 842h178v-574 q0 -129 -23 -170q-35 -61 -151 -61v-37h510v37q-117 0 -150 61q-20 39 -20 170v574h235v73h-235v166q0 115 16 170q31 96 121 97q45 0 135 -91q88 -88 113 -88q31 0 56.5 26t25.5 56q0 78 -88 127q-78 43 -160 43q-385 0 -385 -506h-178v-73z" />
<glyph unicode="&#xfb04;" horiz-adv-x="1933" d="M1419 1309l15 -35q43 16 69 16q72 0 72 -139v-977q0 -80 -30.5 -108.5t-110.5 -28.5v-37h448v37q-80 0 -110.5 28.5t-30.5 108.5v1247h-45zM760 842h178v-574q0 -129 -23 -170q-35 -61 -151 -61v-37h510v37q-117 0 -150 61q-20 39 -20 170v574h235v73h-235v166 q0 115 16 170q31 96 121 97q45 0 135 -91q88 -88 113 -88q31 0 56.5 26t25.5 56q0 78 -88 127q-78 43 -160 43q-385 0 -385 -506h-178v-73zM78 842h178v-574q0 -129 -23 -170q-35 -61 -151 -61v-37h510v37q-117 0 -150 61q-20 39 -20 170v574h235v73h-235v166q0 115 16 170 q31 96 121 97q45 0 135 -91q88 -88 113 -88q31 0 56.5 26t25.5 56q0 78 -88 127q-78 43 -160 43q-385 0 -385 -506h-178v-73z" />
</font>
</defs></svg>

After

Width:  |  Height:  |  Size: 56 KiB

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -0,0 +1,245 @@
<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
<svg xmlns="http://www.w3.org/2000/svg">
<metadata>
This is a custom SVG webfont generated by Font Squirrel.
Copyright : C Copyright 1993 ChessOle Frank David 37081 Gttingen Germany
</metadata>
<defs>
<font id="ChessOle!FigurinMedium" horiz-adv-x="1228" >
<font-face units-per-em="2048" ascent="1638" descent="-410" />
<missing-glyph horiz-adv-x="500" />
<glyph unicode=" " />
<glyph unicode="!" horiz-adv-x="1572" d="M88 676q0 -143 54.5 -272.5t152.5 -227.5t227 -152.5t273 -54.5q143 0 272 54.5t227.5 152.5t152.5 227t54 273q0 143 -54 272t-152.5 227.5t-227.5 152.5t-272 54t-272.5 -54t-227.5 -152.5t-152.5 -227.5t-54.5 -272zM197 676q0 121 46 230.5t129 192.5t192.5 129 t230.5 46t230.5 -46t192 -129t129 -192.5t46.5 -230.5t-46.5 -230.5t-129 -192.5t-192.5 -129t-230 -46q-121 0 -230.5 46t-192.5 129t-129 192.5t-46 230.5zM287 621h452v-457h111v457h457v110h-457v451h-111v-451h-452v-110z" />
<glyph unicode="&#x22;" horiz-adv-x="1173" d="M12 0h113h1036v113h-1036v1036h-113v-1149z" />
<glyph unicode="#" horiz-adv-x="1024" d="M49 393h221l-22 -426h100l21 426h264l-19 -426h99l18 426h221l4 94h-219l17 373h217l6 94h-219l22 424h-100l-21 -424h-266l21 424h-97l-24 -424h-211l-4 -94h213l-19 -373h-217zM373 487l18 373h262l-16 -373h-264z" />
<glyph unicode="$" horiz-adv-x="1198" d="M29 2h1149v113v1036h-113v-1036h-1036v-113z" />
<glyph unicode="%" horiz-adv-x="661" d="M55 0h144v1378h-144v-1378zM465 0h143v1378h-143v-1378z" />
<glyph unicode="&#x26;" horiz-adv-x="1198" d="M29 2h1149v113h-1149v-113z" />
<glyph unicode="'" />
<glyph unicode="(" />
<glyph unicode=")" />
<glyph unicode="*" />
<glyph unicode="+" horiz-adv-x="1316" d="M68 498h485v-498h113v498h485v112h-485v482h-113v-482h-485v-112z" />
<glyph unicode="," />
<glyph unicode="-" horiz-adv-x="1251" d="M74 498h1073v112h-1073v-112z" />
<glyph unicode="." horiz-adv-x="512" d="M141 80q0 -47 34 -81t81 -34t81 34t34 81t-34 81t-81 34t-81 -34t-34 -81z" />
<glyph unicode="/" />
<glyph unicode="0" horiz-adv-x="1124" d="M20 0h1084v113h-1084v-113zM20 723h486v-485h112v485h486v113h-486v485h-112v-485h-486v-113z" />
<glyph unicode="1" horiz-adv-x="1124" d="M20 -2h1078v113h-1078v-113zM20 389h1084v113h-1084v-113zM20 1112h486v-485h112v485h486v113h-486v485h-112v-485h-486v-113z" />
<glyph unicode="2" horiz-adv-x="1124" d="M20 489h486v-485h112v485h486v113h-486v485h-112v-485h-486v-113zM20 1212h1084v113h-1084v-113zM20 1604h1078v112h-1078v-112z" />
<glyph unicode="3" horiz-adv-x="1124" d="M20 496h486v-486h112v486h486v112h-486v486h-112v-486h-486v-112zM20 1219h1084v112h-1084v-112z" />
<glyph unicode="4" horiz-adv-x="1460" d="M47 891q0 -4 2 -14v-13q10 -106 94 -181t195 -75q63 0 125 27q37 16 63.5 31.5t54 36t57.5 46t89 78.5q55 -49 87 -76.5t58.5 -47t54 -36t64.5 -32.5q61 -27 125 -27q111 0 195 75t94 181v13q2 10 2 14q0 51 -20.5 103.5t-57.5 94t-88 67.5t-111 26l-12 -2h-14 q-115 -10 -196 -63.5t-152 -127.5q-20 -20 -29 -26q-8 6 -29 26q-72 76 -151.5 128t-196.5 63h-12l-14 2q-57 0 -108.5 -26t-89.5 -67.5t-58.5 -94t-20.5 -103.5zM49 27h1360v112h-1360v-112zM49 418h1360v112h-1360v-112zM152 905q2 76 59 127t133 51q23 0 45 -6 q76 -16 119 -47t131 -115l20 -20q-92 -78 -143 -112.5t-100 -53.5q-41 -14 -80 -14q-84 0 -134 61t-50 129zM795 895l20 20q88 84 131 115t119 47q23 6 45 6q76 0 133 -50t60 -128q0 -68 -50.5 -129t-134.5 -61q-39 0 -80 14q-49 18 -100 53t-143 113z" />
<glyph unicode="5" horiz-adv-x="1460" d="M51 545q0 -51 20.5 -103.5t58.5 -94.5t89 -67.5t109 -25.5l14 2h12q117 12 197 64.5t151 125.5q20 20 29 27q8 -6 29 -27q74 -74 153.5 -126t194.5 -64h14l13 -2q59 0 110 25.5t88 67.5t57.5 94.5t20.5 103.5q0 6 -2 14v12q-10 106 -93 181t-196 75q-63 0 -125 -26 q-37 -16 -64.5 -32.5t-57 -38t-59.5 -47.5t-83 -75q-59 55 -87 79t-55.5 44.5t-55 36.5t-66.5 33q-61 27 -125 26q-113 0 -194.5 -74.5t-94.5 -181.5v-12q-2 -8 -2 -14zM156 530q0 68 50 129.5t134 61.5q39 0 80 -14q51 -18 100 -52t144 -114q-12 -10 -21 -19 q-88 -86 -131 -115.5t-119 -48.5q-23 -6 -45 -6q-76 0 -133 51t-59 127zM799 541q94 80 144 113.5t99 52.5q41 14 80 14q84 0 134.5 -61.5t50.5 -129.5q-2 -76 -59.5 -127t-133.5 -51q-23 0 -45 6q-76 18 -119 48t-131 116q-8 9 -20 19z" />
<glyph unicode="6" horiz-adv-x="1460" d="M47 299q0 -51 20.5 -103.5t58.5 -94.5t89 -67.5t109 -25.5l14 2h12q117 12 197 64.5t151 126.5q20 20 29 26q8 -6 29 -26q74 -74 153.5 -126t194.5 -65h14l12 -2q59 0 110.5 25.5t88.5 67.5t57.5 94.5t20.5 103.5q0 6 -2 14v13q-10 106 -93 181t-196 75q-63 0 -125 -27 q-37 -16 -64.5 -32.5t-57 -38t-59.5 -47t-83 -75.5q-59 55 -87 79t-55.5 44.5t-55 37t-66.5 32.5q-61 27 -125 27q-113 0 -195 -75t-94 -181v-13q-2 -8 -2 -14zM49 659h1360v113h-1360v-113zM49 1051h1360v112h-1360v-112zM152 285q0 68 50 129t134 61q39 0 80 -14 q51 -18 100 -52t143 -114q-12 -10 -20 -19q-88 -86 -131 -115.5t-119 -47.5q-23 -6 -45 -7q-76 0 -133 51.5t-59 127.5zM795 295q94 80 144 113.5t99 52.5q41 14 80 14q84 0 134.5 -61.5t50.5 -128.5q-2 -76 -59.5 -127.5t-133.5 -51.5q-23 0 -45 7q-76 18 -119 47.5 t-131 115.5q-8 9 -20 19z" />
<glyph unicode="7" horiz-adv-x="1370" d="M27 123h897v242h413v596h-897v-242h-413v-596zM117 213v416h323v-264h396v-152h-719zM530 455v174h306v-174h-306zM530 719v151h717v-415h-323v264h-394z" />
<glyph unicode="8" horiz-adv-x="1370" d="M27 123h897v242h413v596h-897v-242h-413v-596zM117 213v416h323v-264h396v-152h-719z" />
<glyph unicode="9" horiz-adv-x="1370" d="M27 123h897v242h413v596h-897v-242h-413v-596z" />
<glyph unicode=":" horiz-adv-x="2134" d="M55 502q94 -86 154.5 -145.5t114 -116t102.5 -114.5t141 -167l82 70l-155 194h1163l-156 -194l82 -70q96 113 145.5 171t100.5 112.5t113.5 116t152.5 143.5q-90 82 -152.5 143.5t-114.5 117.5t-105.5 117.5t-139.5 163.5l-82 -69l156 -195h-1163l155 195l-82 69 q-102 -121 -146 -173t-95.5 -107t-114 -115.5t-156.5 -146.5zM231 502l172 176h1346l172 -176l-172 -176h-1346z" />
<glyph unicode=";" horiz-adv-x="1873" d="M55 295l76 -78l1270 1266l254 20l-23 -254l-1270 -1263l76 -78l1190 1184l10 -275l117 23v90q-2 51 -2 71q0 78 3 149t7 139.5t13.5 162.5t21.5 195q-223 -25 -350 -34t-266 -9h-86q-66 2 -105 2l-20 -117l272 -10z" />
<glyph unicode="&#x3c;" horiz-adv-x="995" d="M51 829l471 -829l105 45l-447 784l447 785l-105 45zM371 829l471 -829l104 45l-446 784l446 785l-104 45z" />
<glyph unicode="=" horiz-adv-x="1124" d="M23 289h1077v112h-1077v-112zM23 686h1077v113h-1077v-113z" />
<glyph unicode="&#x3e;" horiz-adv-x="960" d="M25 45l104 -45l471 829l-471 830l-104 -45l446 -785zM344 45l105 -45l471 829l-471 830l-105 -45l447 -785z" />
<glyph unicode="?" />
<glyph unicode="@" />
<glyph unicode="A" />
<glyph unicode="B" horiz-adv-x="2048" d="M406 90q0 -45 4 -90h1228q6 45 7 90q0 96 -23 183t-56.5 156t-68.5 115t-63 70q-57 53 -114.5 86t-111.5 37q100 33 142.5 96.5t42.5 190.5q0 104 -85 182t-202 84q57 14 82.5 68.5t25.5 120.5q-2 74 -60 116.5t-130 42.5t-130 -43t-60 -116q0 -66 25.5 -120t82.5 -69 q-117 -6 -202 -84t-85 -182q0 -127 42 -190.5t143 -96.5q-53 -4 -110.5 -36.5t-115.5 -86.5q-27 -23 -62.5 -70.5t-69 -115.5t-55 -155t-21.5 -183z" />
<glyph unicode="C" />
<glyph unicode="D" horiz-adv-x="2048" d="M102 1335q0 -35 32 -65.5t71 -30.5t70.5 30.5t31.5 65.5q0 37 -31.5 67t-70.5 30t-71 -30t-32 -67zM217 1237l127 -633l154 -174l41 -182l-82 -174q27 -41 176 -74q90 -14 174 -18.5t217 -4.5t217 4.5t174 18.5q150 33 176 74l-82 174l41 182l154 174l127 631l-19 8 l-333 -571l-41 717l-21 6l-248 -688l-137 755h-16l-137 -755l-248 688l-19 -6l-43 -717l-2 6l-331 565zM487 1483q0 -37 32 -67t71 -30t70.5 30t31.5 67q0 35 -31.5 64.5t-70.5 29.5t-71 -29.5t-32 -64.5zM494 113q29 16 97 34.5t153 35t160 26.5t120 10t120 -10t161 -27.5 t153.5 -35t95.5 -33.5l-43 -72q-49 16 -114.5 31.5t-138 29t-134 21.5t-100.5 8t-99.5 -8t-134 -21.5t-141 -30t-112.5 -30.5zM520 381v86q94 45 237.5 75.5t266.5 30.5t266.5 -30.5t237.5 -75.5v-86q-96 45 -239.5 75.5t-264.5 30.5t-264.5 -30.5t-239.5 -75.5zM567 209v86 q35 20 94.5 39.5t126 34t129 23.5t107.5 9t107.5 -8t130 -23.5t126 -35t93.5 -39.5v-86q-35 20 -94.5 38.5t-125 34t-129 23.5t-108.5 8t-108.5 -8t-129 -23.5t-125 -34t-94.5 -38.5zM922 1563q0 -33 32.5 -66t69.5 -33t69.5 33t32.5 66q0 35 -31.5 65.5t-70.5 30.5 t-70.5 -30.5t-31.5 -65.5zM1356 1483q0 -37 31.5 -67t70.5 -30t71 30t32 67q0 35 -32 64.5t-71 29.5t-70.5 -29.5t-31.5 -64.5zM1741 1335q0 -35 31.5 -65.5t70.5 -30.5t71 30.5t32 65.5q0 37 -32 67t-71 30t-70.5 -30t-31.5 -67z" />
<glyph unicode="E" horiz-adv-x="1753" d="M43 799q0 -168 63.5 -318.5t177 -265.5t264 -178.5t318.5 -63.5t318.5 63.5t264.5 177.5t177.5 265.5t63.5 319.5q0 129 -37 247.5t-107 219.5l-114 -60q63 -88 97 -191.5t34 -215.5q0 -141 -53.5 -269.5t-149.5 -224.5t-224 -150.5t-270 -54.5q-141 0 -268 54.5 t-224.5 150.5t-150.5 224t-53 270q0 141 54.5 269t149.5 224.5t223 150.5t269 54q109 0 213 -33l-100 -202l389 153l-127 381l-92 -221q-131 49 -283 49q-168 0 -318.5 -63.5t-264 -177t-177 -265t-63.5 -319.5z" />
<glyph unicode="F" horiz-adv-x="1572" d="M88 676q0 -143 54.5 -272.5t152.5 -227.5t227 -152.5t273 -54.5q143 0 272 54.5t227.5 152.5t152.5 227t54 273q0 143 -54 272t-152.5 227.5t-227.5 152.5t-272 54t-272.5 -54t-227.5 -152.5t-152.5 -227.5t-54.5 -272zM197 676q0 121 46 230.5t129 192.5t192.5 129 t230.5 46t230.5 -46t192 -129t129 -192.5t46.5 -230.5t-46.5 -230.5t-129 -192.5t-192.5 -129t-230 -46q-121 0 -230.5 46t-192.5 129t-129 192.5t-46 230.5z" />
<glyph unicode="G" horiz-adv-x="2021" d="M117 498q162 -154 275.5 -273t238.5 -266l71 72q-41 51 -87 107.5t-96 115.5t-95 109.5t-72 76.5h1628v115h-1628q31 29 74 78t98.5 114.5t100.5 121t77 96.5l-71 71q-125 -147 -238.5 -265.5t-275.5 -272.5zM117 1149h1628q-29 -29 -70 -75t-94 -108.5t-99 -118.5 t-87 -108l71 -71q125 147 239 266t275 272q-162 154 -275.5 272.5t-238.5 266.5l-71 -72q33 -41 83 -102.5t100 -120.5t94 -109.5t73 -76.5h-1628v-115z" />
<glyph unicode="H" horiz-adv-x="2021" d="M117 508h1628q-29 -29 -70 -75t-94 -108.5t-99 -118.5t-87 -108l71 -71q125 147 239 266t275 272q-162 154 -275.5 272.5t-238.5 266.5l-71 -72q33 -41 83 -102.5t100 -120.5t94 -109.5t73 -76.5h-1628v-115z" />
<glyph unicode="I" horiz-adv-x="1234" d="M92 1350l72 -72q51 41 107.5 87t115.5 96t109.5 95.5t76.5 71.5v-1628h115v1628q29 -29 78 -73t114.5 -99t121 -100t96.5 -78l71 72q-147 125 -266 238.5t-272 275.5q-154 -162 -273 -275.5t-266 -238.5z" />
<glyph unicode="J" horiz-adv-x="1525" d="M55 676q0 -143 54.5 -272.5t152.5 -227.5t227 -152.5t273 -54.5q143 0 272 54.5t227.5 152.5t152.5 227t54 273q0 143 -54 272t-152.5 227.5t-227.5 152.5t-272 54t-272.5 -54t-227.5 -152.5t-152.5 -227.5t-54.5 -272zM164 676q0 121 46 230.5t129 192.5t192.5 129 t230.5 46t230.5 -46t192.5 -129t129 -192.5t46 -230.5t-46 -230.5t-129 -192.5t-192.5 -129t-230.5 -46t-230.5 46t-192.5 129t-129 192.5t-46 230.5zM659 676q0 -43 30 -73t73 -30q41 0 71.5 30t30.5 73q0 41 -30.5 71.5t-71.5 30.5q-43 0 -73 -30.5t-30 -71.5z" />
<glyph unicode="K" horiz-adv-x="2048" d="M129 942q0 -41 13.5 -79t60.5 -113q76 -86 109.5 -138.5t58.5 -124.5q31 -78 48 -143t17 -117q0 -37 1 -65.5t7 -73.5q45 -12 121 -27.5t160 -31t164 -24.5t135 -9q63 2 146 11t164 23.5t155 30t115 27.5q4 43 5 72.5t1 66.5q0 51 17.5 116t47.5 144q27 72 62 124.5 t108 138.5q37 61 53.5 104t16.5 88q0 49 -25 117q-55 80 -119.5 108.5t-164.5 30.5q-96 -2 -215 -67.5t-240 -190.5q10 70 16.5 125t6.5 100q0 43 -8.5 83t-26.5 71q-18 27 -38 41t-52 16v97h108v49h-108v116h-50v-116h-106v-49h106v-97q-33 -2 -52 -16t-38 -41 q-18 -29 -26.5 -69t-8.5 -85q0 -100 23 -225q-121 125 -239.5 190.5t-217.5 67.5q-51 0 -103 -13.5t-98 -41t-77 -78.5t-33 -123zM180 942q2 66 34 108t75 62.5t82 27.5t69 9q59 -2 151.5 -46t242.5 -161q4 -6 30 -39q41 -55 66.5 -95t44.5 -87q4 -23 10 -86q4 -49 4 -51h68 q4 37 8 75q4 39 8 62q18 49 45 89t70 97q10 14 24 35q147 117 240.5 161t153.5 46h14q63 -2 117.5 -20.5t103.5 -86.5q18 -57 19 -96q0 -37 -14.5 -73.5t-45.5 -86.5q-76 -94 -117 -164.5t-77 -189.5q-174 27 -335 42t-245 18q-80 0 -236.5 -15.5t-330.5 -42.5l-37 86 q-25 59 -62.5 117.5t-111.5 148.5q-43 63 -54.5 94t-13.5 62zM272 969q0 -10 4 -23q16 -45 29.5 -71.5t44.5 -67.5q47 -74 64.5 -101.5t62.5 -97.5l47 -73q240 27 385 49q-10 29 -16 46t-14 42q-4 16 -9.5 28.5t-11.5 28.5q-27 63 -53.5 104t-73.5 93q-78 63 -151.5 107 t-114.5 44q-61 0 -127 -28.5t-66 -79.5zM477 322q158 25 312.5 40t234.5 15t234.5 -15.5t312.5 -39.5l-8 -91q-145 23 -301 38.5t-238 17.5q-80 0 -232.5 -15.5t-310.5 -40.5zM483 164q141 27 293 40t248 13q98 0 247.5 -13.5t291.5 -39.5l-27 -82q-125 20 -261 30.5 t-251 12.5q-98 -2 -245.5 -13.5t-266.5 -29.5zM924 1165v11v18q0 47 15 86t60 51q4 0 11 2q8 2 14 2q4 0 12 -2t13 -2q47 -14 61 -56t14 -110q0 -43 -6 -95t-18 -130q-6 -29 -33 -96q-31 -78 -43 -123q-12 49 -45 129q-27 66 -33 90q-2 12 -4 35q-18 129 -18 190zM977 1178 q0 -61 12 -139t35 -152q23 74 34 148.5t11 138.5q0 115 -33 114l-4 2q-4 2 -8 2q-2 0 -6 -2t-6 -2q-35 1 -35 -110zM1139 584q145 -23 385 -49l47 73q41 61 64.5 100.5t62.5 98.5q33 43 44 64.5t25 64.5l5 10q4 14 4 27q0 51 -58.5 75.5t-134.5 28.5q-41 0 -114.5 -44 t-151.5 -107q-47 -51 -73.5 -92t-53.5 -105q-8 -18 -12 -30.5t-9 -26.5q-4 -8 -14 -41t-16 -47z" />
<glyph unicode="L" horiz-adv-x="2048" d="M184 20l123 -122q100 88 205 102q86 14 174 22.5t215 18.5q37 10 61.5 22.5t61.5 38.5q37 -27 61.5 -39t61.5 -22q127 -10 215 -18.5t174 -22.5q104 -14 205 -102l123 122q-57 53 -142.5 94.5t-185.5 49.5q-47 6 -168 16q-80 6 -136 12.5t-85 12.5q-41 18 -68 63h-108 q-14 -25 -30.5 -38t-39.5 -25q-31 -6 -76 -11.5t-145 -13.5q-121 -10 -168 -16q-100 -8 -185.5 -49.5t-142.5 -94.5zM543 883q0 -72 40 -142.5t134 -126.5l-62 -245q96 -47 171 -71t145 -30q18 -2 53 -2q37 0 55 2q72 6 145.5 30t168.5 71l-62 245q94 55 135 125t41 144 q0 41 -12 80q-33 53 -82 102t-123 111q-45 37 -61 53l-205 205l-205 -205q-16 -16 -61 -53q-74 -61 -123 -110.5t-82 -102.5q-10 -39 -10 -80zM705 446q123 70 319 70q197 0 319 -70l-38 -63q-100 49 -281 49q-180 0 -281 -49zM745 674q55 25 139.5 36t139.5 11t139 -11.5 t140 -35.5l-41 -78q-55 16 -123 24.5t-115 8.5t-114.5 -8.5t-123.5 -24.5zM870 952v103h103v102h102v-102h103v-103h-103v-102h-102v102h-103zM922 1536q0 -39 31.5 -70.5t70.5 -31.5t70.5 31.5t31.5 70.5t-31.5 70.5t-70.5 31.5t-70.5 -31.5t-31.5 -70.5z" />
<glyph unicode="M" />
<glyph unicode="N" />
<glyph unicode="O" />
<glyph unicode="P" horiz-adv-x="819" d="M41 340q0 -76 28.5 -142.5t80 -117.5t118 -80t142.5 -29t143.5 29t117.5 80t78.5 117.5t28.5 142.5q0 74 -28.5 140.5t-80 117.5t-119 80t-140.5 29q-74 0 -141.5 -28t-119 -79t-80 -118.5t-28.5 -141.5zM139 340q0 111 79 189.5t190 78.5q113 0 192.5 -79.5t79.5 -188.5 q0 -113 -80 -191.5t-190 -78.5q-113 0 -192 78.5t-79 191.5z" />
<glyph unicode="Q" horiz-adv-x="819" d="M41 340q0 -76 28.5 -142.5t80 -117.5t118 -80t142.5 -29t143.5 29t117.5 80t78.5 117.5t28.5 142.5q0 74 -28.5 140.5t-80 117.5t-119 80t-140.5 29q-74 0 -141.5 -28t-119 -79t-80 -118.5t-28.5 -141.5zM41 1149q0 -76 28.5 -142.5t80 -116.5t119 -79t141.5 -29t141 29 t118.5 79t80 116.5t28.5 142.5q0 74 -28.5 141.5t-80 118.5t-118 80t-141.5 29q-74 0 -141.5 -29t-119 -80t-80 -117.5t-28.5 -142.5zM139 340q0 111 79 189.5t190 78.5q113 0 192.5 -79.5t79.5 -188.5q0 -113 -80 -191.5t-190 -78.5q-113 0 -192 78.5t-79 191.5zM139 1149 q0 113 79 191.5t190 78.5q113 0 192.5 -79.5t79.5 -190.5t-80 -189.5t-190 -78.5q-113 0 -192 77.5t-79 190.5z" />
<glyph unicode="R" horiz-adv-x="819" d="M41 344q0 -76 28.5 -143.5t79 -118.5t118 -80t143.5 -29t142 29t117.5 80t80 118.5t28.5 143.5q0 68 -23.5 130.5t-68.5 113.5q-92 104 -227 123v161h121l-170 164l-172 -164h120v-161q-135 -18 -226 -123t-91 -244zM139 344q0 113 79 191.5t190 78.5q113 0 192.5 -79.5 t79.5 -190.5q0 -113 -80 -192.5t-190 -79.5q-113 0 -192 79.5t-79 192.5z" />
<glyph unicode="S" horiz-adv-x="2048" d="M137 592q0 -25 6 -60q10 -53 39 -81.5t105 -40.5q23 -4 35 -4t26 4q0 -27 10 -52q20 -27 50 -26q33 0 53 37q49 51 74 88q14 23 26 48t33 68q45 59 108.5 99.5t137.5 64.5q29 10 54.5 26.5t61.5 45.5q35 25 48 31q0 -100 -29 -228.5t-84 -212.5q-12 -25 -80 -86 q-55 -49 -93 -90t-63 -90q-23 -45 -22 -121v-30q2 -23 2 -33h1270q-6 238 -35 445.5t-88 424.5q-18 76 -56 160t-88.5 164t-103.5 145.5t-100 104.5q-57 49 -138.5 78.5t-156.5 29.5q-68 0 -115 -26l-100 223l-156 -162l-256 154l20 -256q-33 -25 -79 -101l-2 -2l-19 -22 q-12 -14 -30.5 -38t-32.5 -42q-8 -18 -9 -39q0 -23 9 -43q-2 -12 -23.5 -58.5t-58.5 -121.5q-59 -119 -92 -188.5t-52 -123.5q-6 -34 -6 -63zM209 567q0 14 6 27q12 37 40 61.5t58 30.5q14 -6 25.5 -20.5t11.5 -26.5v-6q-2 -2 -2 -4q-4 -20 -14 -31.5t-35 -26.5 q-18 -16 -46 -30.5t-38 -14.5q-6 27 -6 41zM442 1071l13 19q20 33 33.5 53t25.5 37q23 27 43.5 40t63.5 27h10q4 2 8 2q18 0 33 -14q0 -35 -23 -57q-33 -41 -84 -70t-123 -37zM1024 1315v110q43 25 106 25q72 0 148 -27.5t129 -74.5q45 -37 94 -98.5t96.5 -137.5t83 -155.5 t52.5 -151.5q57 -209 84.5 -403.5t35.5 -411.5l-118 -2q-10 209 -37 404.5t-72 365.5q-16 59 -50 134t-76 150.5t-83 136t-69 85.5q-35 35 -100.5 59.5t-127.5 24.5q-65 0 -96 -33z" />
<glyph unicode="T" horiz-adv-x="2048" d="M358 0h666h666v154h-103v174l-174 184v614l205 154v276h-236v-122h-215v122h-286v-122h-215v122h-236v-276l205 -154v-614l-174 -184v-174h-103v-154zM492 1331h1064l-122 -92h-410h-410zM522 106v93h502h502v-93h-502h-502zM522 283l86 92h416h416l86 -92h-502h-502z M696 467v92h656v-92h-328h-328zM696 1075v92h328h328v-92h-656z" />
<glyph unicode="U" horiz-adv-x="1253" d="M12 0h1233l-577 1409zM147 100l447 959l397 -959h-844z" />
<glyph unicode="V" horiz-adv-x="1253" d="M0 0h1229v1229h-1229v-1229zM102 102v1024h1024v-1024h-1024z" />
<glyph unicode="W" horiz-adv-x="1253" d="M10 0h1229v102q0 113 -51 223.5t-140.5 199.5t-200 140.5t-222.5 51.5q-113 0 -223.5 -51.5t-199.5 -140.5t-140.5 -199.5t-51.5 -223.5v-102zM113 102q0 94 43 186.5t116.5 166t165.5 116.5t187 43q94 0 186 -43t166 -116.5t117 -165.5t43 -187h-1024z" />
<glyph unicode="X" horiz-adv-x="1124" d="M35 92l76 -76l452 455l453 -455l76 76l-451 453l451 452l-76 76l-453 -455l-452 455l-76 -76l450 -452z" />
<glyph unicode="Y" horiz-adv-x="1347" d="M31 0h1304v113h-596v1267h-112v-1267h-596v-113z" />
<glyph unicode="Z" horiz-adv-x="1253" d="M0 0h1229v1229h-1229v-1229zM102 102v461h461v-461h-461zM102 666v460h461v-460h-461zM666 102v461h460v-461h-460zM666 666v460h460v-460h-460z" />
<glyph unicode="[" />
<glyph unicode="\" />
<glyph unicode="]" />
<glyph unicode="^" />
<glyph unicode="_" />
<glyph unicode="`" />
<glyph unicode="a" />
<glyph unicode="b" horiz-adv-x="1329" d="M51 90q0 -45 4 -90h615h614q6 45 6 90q0 96 -22.5 183t-56 156t-68.5 115t-64 70q-57 53 -114.5 86t-110.5 37q100 33 142 96.5t42 190.5q0 104 -85 182t-201 84q57 14 82.5 68.5t25.5 120.5q-2 74 -60.5 116.5t-129.5 42.5q-72 0 -130.5 -43t-60.5 -116q0 -66 25.5 -120 t83.5 -69q-117 -6 -202 -84t-85 -182q0 -127 42 -190.5t142 -96.5q-53 -4 -110.5 -36.5t-114.5 -86.5q-27 -23 -62.5 -70.5t-69.5 -115.5t-55.5 -155t-21.5 -183zM100 76v28q0 80 22.5 159t56.5 144.5t68 111.5t58 69q39 51 105.5 84t148.5 37q12 2 12 22q0 23 -12 27 q-119 41 -162 98t-47 168q4 86 79 154.5t194 76.5q12 10 12 33q0 16 -6 21q-47 23 -74 75t-27 95q4 51 47 80.5t95 29.5q53 0 95 -29.5t46 -80.5q0 -43 -25.5 -95.5t-74.5 -74.5q-4 -4 -4 -19q0 -27 10 -35q119 -8 193.5 -76.5t78.5 -154.5q-4 -111 -46 -168t-163 -98 q-12 -4 -12 -27q0 -20 12 -22q82 -4 148.5 -37t105.5 -84q25 -23 58.5 -69t68.5 -111.5t56.5 -144.5t21.5 -159v-28q-2 -14 -2 -27h-567h-568q0 13 -2 27z" />
<glyph unicode="c" />
<glyph unicode="d" horiz-adv-x="1933" d="M39 1329q0 -41 37 -75.5t80 -34.5q45 0 81.5 34.5t36.5 75.5t-36.5 77t-81.5 36q-43 0 -80 -36t-37 -77zM88 1329q0 25 21.5 45.5t46.5 20.5q27 0 48 -20.5t21 -45.5t-21.5 -45t-47.5 -20q-25 0 -46.5 20t-21.5 45zM168 1217l125 -619l153 -174l39 -182l-79 -172 q29 -43 174 -76q90 -12 175 -16.5t214 -4.5q131 0 215 4.5t174 16.5q145 33 174 76l-31 65l-49 107l41 182l152 174l124 616l-24 9l-324 -557l-41 698l-26 8l-240 -672l-135 744h-21l-135 -744l-239 672l-27 -6l-41 -700l-323 557zM260 1014l219 -379q-33 2 -80 20 q-10 -23 -28.5 -33t-30.5 -10zM375 575q20 6 43 31q35 -14 82 -14t93 15.5t83 47.5q59 -27 129 -26q92 0 164 45q72 -45 164 -45q70 0 129 26q37 -33 84 -48t92 -15q47 0 82 14q23 -27 47 -31l-107 -122q-98 43 -236.5 72.5t-254.5 29.5q-117 0 -256.5 -29.5t-235.5 -72.5z M426 1477q0 -41 36 -76t81 -35t82 35t37 76q0 43 -37 77.5t-82 34.5t-81 -34.5t-36 -77.5zM475 106l53 121q37 18 95.5 37t122 33t122 21.5t101.5 7.5t100 -7.5t122.5 -21.5t123 -31.5t94.5 -36.5l57 -123q-39 14 -105.5 31t-144 31t-142 22.5t-105.5 8.5t-104.5 -8.5 t-139.5 -22.5t-143.5 -31t-106.5 -31zM475 1477q0 25 20.5 45t47.5 20t48 -20.5t21 -44.5q0 -23 -21.5 -43.5t-47.5 -20.5q-27 0 -47.5 20.5t-20.5 43.5zM494 66q51 16 113.5 30.5t133 27.5t130 20.5t98.5 7.5t101.5 -8.5t131 -20.5t133 -28.5t111.5 -31.5q-41 -14 -88 -22 q-90 -14 -173 -18.5t-216 -4.5q-131 0 -215 4.5t-174 18.5q-49 11 -86 25zM496 414q96 41 227 67.5t246 26.5t244.5 -26.5t228.5 -67.5l-31 -140q-39 18 -94 36t-123 32t-126 22.5t-99 8.5q-39 0 -100.5 -8.5t-125 -21.5t-121 -31.5t-96.5 -37.5zM563 645l31 563l194 -534 q-68 6 -120 28q-50 -43 -105 -57zM850 1556q0 -41 37 -75.5t82 -34.5t81.5 35t36.5 75q0 41 -36.5 76t-81.5 35t-82 -35t-37 -76zM868 678l101 553l100 -553q-49 8 -100 41q-52 -33 -101 -41zM899 1556q0 25 21.5 45.5t48.5 20.5t48 -20.5t21 -45.5t-21.5 -45t-47.5 -20 q-27 0 -48.5 20t-21.5 45zM1151 674l192 534l31 -563q-55 14 -104 57q-53 -20 -119 -28zM1282 1477q0 -43 37 -78t82 -35t81 35t36 78q0 41 -36 75.5t-81 34.5t-82 -34.5t-37 -75.5zM1331 1477q0 23 21.5 43t48.5 20t48 -20.5t21 -42.5q0 -25 -21.5 -45.5t-47.5 -20.5 q-27 0 -48.5 20.5t-21.5 45.5zM1458 635l219 379l-80 -402q-12 0 -30.5 10.5t-28.5 32.5q-47 -18 -80 -20zM1663 1329q0 -41 37 -75.5t82 -34.5q43 0 79.5 34.5t36.5 75.5t-36.5 77t-79.5 36q-45 0 -82 -36t-37 -77zM1712 1329q0 25 21.5 45.5t48.5 20.5t47 -20.5t20 -45.5 t-20.5 -45t-46.5 -20q-27 0 -48.5 20t-21.5 45z" />
<glyph unicode="e" horiz-adv-x="0" d="M94 1329q0 -41 37 -75.5t80 -34.5q45 0 82 34.5t37 75.5t-37 77t-82 36q-43 0 -80 -36t-37 -77zM143 1329q0 25 21.5 45.5t46.5 20.5q27 0 48.5 -20.5t21.5 -45.5t-21.5 -45t-48.5 -20q-25 0 -46.5 20t-21.5 45zM481 1477q0 -41 36 -76t81 -35t82 35t37 76q0 43 -37 77.5 t-82 34.5t-81 -34.5t-36 -77.5zM530 1477q0 25 20.5 45t47.5 20t48.5 -20.5t21.5 -44.5q0 -23 -21.5 -43.5t-48.5 -20.5t-47.5 20.5t-20.5 43.5zM905 1556q0 -41 37 -75.5t82 -34.5t82 35t37 75q0 41 -37 76t-82 35t-82 -35t-37 -76zM954 1556q0 25 21.5 45.5t48.5 20.5 t48.5 -20.5t21.5 -45.5t-21.5 -45t-48.5 -20t-48.5 20t-21.5 45zM1337 1477q0 -43 37 -78t82 -35t81 35t36 78q0 41 -36 75.5t-81 34.5t-82 -34.5t-37 -75.5zM1386 1477q0 23 22 43t48 20q27 0 48.5 -20.5t21.5 -42.5q0 -25 -21.5 -45.5t-48.5 -20.5t-48.5 20.5t-21.5 45.5z M1718 1329q0 -41 37 -75.5t82 -34.5q43 0 80 34.5t37 75.5t-37 77t-80 36q-45 0 -82 -36t-37 -77zM1767 1329q0 25 21.5 45.5t48.5 20.5t47.5 -20.5t20.5 -45.5t-20.5 -45t-47.5 -20t-48.5 20t-21.5 45z" />
<glyph unicode="f" horiz-adv-x="2048" d="M223 1217l125 -619l154 -174l39 -182l-80 -172q29 -43 174 -76q90 -12 175 -16.5t214 -4.5q131 0 215 4.5t174 16.5q145 33 174 76l-31 65l-49 107l41 182l152 174l125 616l-25 9l-323 -557l-41 698l-27 8l-240 -672l-135 744h-20l-135 -744l-240 672l-27 -8l-41 -698 l-323 557zM315 1014l220 -379q-33 2 -80 20q-10 -23 -28.5 -33t-31.5 -10zM430 575q20 6 43 31q35 -14 82 -14t93 15.5t83 47.5q59 -27 129 -26q92 0 164 45q72 -45 164 -45q70 0 129 26q37 -33 84 -48t92 -15q47 0 82 14q23 -27 47 -31l-106 -122q-98 43 -236.5 72.5 t-255.5 29.5t-256 -29.5t-236 -72.5zM530 106l54 121q37 18 95 37t121.5 33t122 21.5t101.5 7.5t100.5 -7.5t123 -21.5t122.5 -31.5t94 -36.5l58 -123q-39 14 -105.5 31t-144.5 31t-142.5 22.5t-105.5 8.5t-104.5 -8.5t-139 -22.5t-143.5 -31t-107 -31zM549 66 q51 16 113.5 30.5t133 27.5t130 20.5t98.5 7.5t101.5 -8.5t131 -20.5t133 -28.5t111.5 -31.5q-41 -14 -88 -22q-90 -14 -173 -18.5t-216 -4.5q-131 0 -215 4.5t-174 18.5q-49 11 -86 25zM551 414q96 41 227 67.5t246 26.5t245 -26.5t228 -67.5l-31 -140q-39 18 -94 36 t-122.5 32t-126 22.5t-99.5 8.5q-39 0 -100.5 -8.5t-125 -21.5t-120.5 -31.5t-96 -37.5zM618 645l31 563l195 -534q-68 6 -121 28q-50 -43 -105 -57zM924 678l100 553l100 -553q-49 8 -100 41q-51 -33 -100 -41zM1206 674l193 534l31 -563q-55 14 -105 57q-53 -20 -119 -28z M1513 635l220 379l-80 -402q-12 0 -30.5 10.5t-29.5 32.5q-47 -18 -80 -20z" />
<glyph unicode="g" />
<glyph unicode="h" />
<glyph unicode="i" />
<glyph unicode="j" />
<glyph unicode="k" horiz-adv-x="1886" d="M53 942q0 -41 13.5 -79t60.5 -113q76 -86 109.5 -138.5t58.5 -124.5q31 -78 48 -143t17 -117q0 -37 1 -65.5t8 -73.5q45 -12 120.5 -27.5t159.5 -31t164 -24.5t135 -9q63 2 146.5 11t164 23.5t154.5 30t115 27.5q4 43 5 72.5t1 66.5q0 51 17.5 116t47.5 144 q27 72 62 124.5t108 138.5q37 61 53.5 104t16.5 88q0 49 -24 117q-55 80 -120 108.5t-165 30.5q-96 -2 -215 -67.5t-240 -190.5q10 70 16.5 125t6.5 100q0 43 -8.5 83t-26.5 71q-18 27 -37.5 41t-52.5 16v97h108v49h-108v116h-49v-116h-107v-49h107v-97q-33 -2 -52.5 -16 t-37.5 -41q-18 -29 -26.5 -69t-8.5 -85q0 -100 22 -225q-121 125 -239.5 190.5t-216.5 67.5q-51 0 -103.5 -13.5t-98.5 -41t-77 -78.5t-33 -123zM104 942q2 66 34 108t75 62.5t82 27.5t70 9q59 -2 151 -46t242 -161q4 -6 30 -39q41 -55 67 -95t44 -87q4 -23 10 -86 q4 -49 4 -51q-115 -10 -248 -24.5t-319 -39.5q-25 59 -62.5 117.5t-111.5 148.5q-43 63 -54.5 94t-13.5 62zM360 471q86 12 171 22.5t176.5 20.5t148.5 15.5t92 5.5q31 0 91.5 -5.5t149.5 -15.5t172 -20.5t173 -22.5l-39 -170q-158 25 -312.5 40t-234.5 15t-234.5 -15 t-312.5 -40zM406 252q158 25 310 40t232 15q82 -2 237.5 -17.5t301.5 -37.5v-100q-141 27 -290.5 40t-248.5 13q-96 0 -247.5 -13.5t-292.5 -39.5zM436 113q119 18 266.5 29.5t245.5 13.5q115 -2 251 -12.5t261 -30.5q-57 -12 -119.5 -23.5t-134 -22t-139.5 -16.5t-119 -6 q-49 0 -117.5 6t-136 15.5t-136.5 22t-122 24.5zM848 1165v11v18q0 47 15.5 86t60.5 51q4 0 10 2q8 2 14 2q4 0 13 -2q8 -2 12 -2q47 -14 61.5 -56t14.5 -110q0 -43 -6.5 -95t-18.5 -130q-6 -29 -33 -96q-31 -78 -43 -123q-12 49 -45 129q-27 66 -33 90q-2 12 -4 35 q-18 129 -18 190zM981 584q4 37 8 75q4 39 8 62q18 49 45 89t70 97l25 35q147 117 240 161t153 46h14q63 -2 117.5 -20.5t103.5 -86.5q18 -57 19 -96q0 -37 -14.5 -73.5t-45.5 -86.5q-72 -90 -110.5 -148t-63.5 -118q-188 25 -320 39.5t-249 24.5z" />
<glyph unicode="l" horiz-adv-x="1837" d="M57 14l150 -143q61 41 113.5 71.5t89.5 37.5q27 2 104 10q70 6 145.5 14t139.5 16q31 6 57.5 19.5t67.5 42.5q43 -29 68.5 -42t56.5 -20q63 -8 115.5 -13t170.5 -17q76 -8 103 -10q37 -6 89 -36t113 -73l150 143q-72 76 -154 117t-200 53q-55 6 -176 19q-82 6 -131.5 11 t-81.5 11q-8 4 -19 6q-12 6 -22.5 12.5t-20.5 22.5h-123q-12 -16 -20 -22t-23 -13q-10 -2 -18 -6q-31 -6 -65 -9l-146 -13q-123 -12 -178 -19q-119 -12 -201 -53t-154 -117zM129 16q127 104 283 119q47 6 172 17q80 6 138 12t87 12t64.5 23.5t50.5 40.5q14 -23 50 -40.5 t64 -23.5q31 -6 77 -11t149 -13q125 -10 172 -17q156 -14 282 -119l-84 -75q-70 47 -109.5 63t-88.5 25q-25 4 -73 9t-106.5 11t-106.5 11.5t-103 9.5q-47 8 -123 61q-74 -53 -123 -61q-55 -4 -101.5 -9.5t-97.5 -10.5t-108.5 -11t-81.5 -10q-49 -8 -89 -24.5t-110 -63.5z M442 883q0 -72 40 -142.5t134 -126.5l-61 -245q96 -47 171 -71t144 -30q18 -2 54 -2q37 0 55 2q72 6 145.5 30t167.5 71l-61 245q94 55 135 125t41 144q0 41 -12 80q-33 53 -82 102t-123 111q-45 37 -62 53l-204 205l-205 -205q-16 -16 -62 -53q-74 -61 -123 -110.5 t-81 -102.5q-11 -39 -11 -80zM492 889q0 39 12 74q29 39 75 81.5t113 100.5q63 55 84 76l150 151l149 -151q20 -20 84 -76q74 -63 117 -103.5t72 -78.5q12 -35 12 -72q0 -70 -41 -136.5t-125 -119.5q-53 23 -135 34t-135 11q-55 0 -133 -11.5t-134 -33.5 q-84 53 -124.5 119.5t-40.5 134.5zM621 422l43 168q70 20 141.5 29.5t118.5 9.5t118.5 -9.5t141.5 -29.5l43 -166q-119 59 -303 59q-180 0 -303 -61zM639 377q102 55 285 55q180 0 286 -53q-63 -27 -118.5 -42t-110.5 -20h-115q-106 9 -227 60zM770 963h113v-113h82v113h112 v81h-112v113h-82v-113h-113v-81zM805 1544q0 -41 37 -75.5t82 -34.5t81.5 34.5t36.5 75.5t-36.5 76t-81.5 35t-82 -35t-37 -76zM854 1544q0 25 21.5 45.5t48.5 20.5t48 -20.5t21 -45.5t-21.5 -45t-47.5 -20q-27 0 -48.5 20t-21.5 45z" />
<glyph unicode="m" />
<glyph unicode="n" />
<glyph unicode="o" />
<glyph unicode="p" />
<glyph unicode="q" />
<glyph unicode="r" />
<glyph unicode="s" horiz-adv-x="1865" d="M59 592q0 -25 7 -60q10 -53 38.5 -81.5t104.5 -40.5q23 -4 35 -4t26 4q0 -27 11 -52q20 -27 49 -26q33 0 53 37q49 51 72.5 87t60.5 117q45 59 108.5 99.5t137.5 64.5q51 18 123 74q29 23 41 29q0 -100 -29 -228.5t-84 -212.5q-12 -25 -80 -86q-55 -49 -93 -90t-62 -90 q-23 -45 -23 -121v-30q2 -23 2 -33h1270q-6 238 -35 445.5t-88 424.5q-18 76 -56 160t-88.5 164t-103.5 145.5t-100 104.5q-57 49 -138 78.5t-157 29.5q-68 0 -115 -26l-100 223l-156 -162l-256 154l21 -256q-33 -25 -80 -101l-2 -2q-12 -16 -39 -47q-25 -31 -43 -55 q-8 -18 -8 -39q0 -23 8 -43q-2 -12 -23.5 -58.5t-58.5 -121.5q-59 -119 -92 -188.5t-51 -123.5q-7 -34 -7 -63zM111 594q0 29 6 63q16 51 53 129t90 183q41 84 60.5 126t21.5 54q-6 18 -6 39q0 25 6 41q29 29 44 49t34 53q55 57 80 92l-15 174l215 -124l129 145l86 -205 q63 33 144 33q74 0 145.5 -26.5t124.5 -71.5q45 -37 94.5 -98.5t96.5 -137.5t82.5 -155.5t52.5 -151.5q57 -207 84.5 -400.5t36.5 -406.5h-1168q4 35 15 80q8 33 8 45q31 53 74 97t104 97q55 49 65 64q55 96 81 219t26 260q0 12 -2 35v33q-47 -25 -117 -72q-74 -49 -114 -63 q-154 -51 -261 -170q-10 -18 -41 -70q-27 -43 -41 -67.5t-36 -67.5q-23 -43 -39 -43q-8 0 -17 12v2q-14 33 -16 57q-39 10 -88 11q-78 10 -92 78q-6 34 -6 59zM172 608q0 -14 6 -41q12 2 39 15.5t45 29.5q25 14 35 25.5t14 32.5q0 2 2 4v6q0 12 -11 26.5t-26 20.5 q-31 -6 -58.5 -30.5t-39.5 -61.5q-6 -13 -6 -27zM393 1085q72 8 123 37t84 70q23 23 23 57q-14 14 -33 15q-4 0 -8 -2h-11q-43 -14 -63.5 -27.5t-42.5 -40.5q-14 -18 -23.5 -32.5t-35.5 -57.5z" />
<glyph unicode="t" horiz-adv-x="1431" d="M57 0h1332v164h-103v164l-174 184v614l205 154v276h-236v-122h-215v122h-286v-122h-215v122h-236v-276l205 -154v-614l-174 -184v-164h-103v-164zM106 49v66h103h1130v-66h-1233zM178 1317v190h137v-123h314v123h188v-123h313v123h138v-190h-1090zM209 164v127h1028v-127 h-1028zM227 1268h992l-140 -105h-696h-16zM244 340l127 135h704l127 -135h-958zM383 524v590h680v-590h-680z" />
<glyph unicode="u" />
<glyph unicode="v" />
<glyph unicode="w" />
<glyph unicode="x" />
<glyph unicode="y" />
<glyph unicode="z" />
<glyph unicode="{" />
<glyph unicode="|" />
<glyph unicode="}" />
<glyph unicode="~" />
<glyph unicode="&#xa0;" />
<glyph unicode="&#xa1;" />
<glyph unicode="&#xa2;" />
<glyph unicode="&#xa3;" />
<glyph unicode="&#xa4;" />
<glyph unicode="&#xa5;" />
<glyph unicode="&#xa6;" />
<glyph unicode="&#xa7;" />
<glyph unicode="&#xa8;" />
<glyph unicode="&#xa9;" />
<glyph unicode="&#xaa;" />
<glyph unicode="&#xab;" />
<glyph unicode="&#xac;" />
<glyph unicode="&#xad;" />
<glyph unicode="&#x2212;" />
<glyph unicode="&#xae;" />
<glyph unicode="&#xaf;" />
<glyph unicode="&#xb0;" />
<glyph unicode="&#xb1;" />
<glyph unicode="&#xb2;" />
<glyph unicode="&#xb3;" />
<glyph unicode="&#xb4;" />
<glyph unicode="&#xb5;" />
<glyph unicode="&#xb6;" />
<glyph unicode="&#xb7;" />
<glyph unicode="&#x2219;" />
<glyph unicode="&#xb8;" />
<glyph unicode="&#xb9;" />
<glyph unicode="&#xba;" />
<glyph unicode="&#xbb;" />
<glyph unicode="&#xbc;" />
<glyph unicode="&#xbd;" />
<glyph unicode="&#xbe;" />
<glyph unicode="&#xbf;" />
<glyph unicode="&#xc0;" />
<glyph unicode="&#xc1;" />
<glyph unicode="&#xc2;" />
<glyph unicode="&#xc3;" />
<glyph unicode="&#xc4;" />
<glyph unicode="&#xc5;" />
<glyph unicode="&#xc6;" />
<glyph unicode="&#xc7;" />
<glyph unicode="&#xc8;" />
<glyph unicode="&#xc9;" />
<glyph unicode="&#xca;" />
<glyph unicode="&#xcb;" />
<glyph unicode="&#xcc;" />
<glyph unicode="&#xcd;" />
<glyph unicode="&#xce;" />
<glyph unicode="&#xcf;" />
<glyph unicode="&#xd0;" />
<glyph unicode="&#xd1;" />
<glyph unicode="&#xd2;" />
<glyph unicode="&#xd3;" />
<glyph unicode="&#xd4;" />
<glyph unicode="&#xd5;" />
<glyph unicode="&#xd6;" />
<glyph unicode="&#xd7;" />
<glyph unicode="&#xd8;" />
<glyph unicode="&#xd9;" />
<glyph unicode="&#xda;" />
<glyph unicode="&#xdb;" />
<glyph unicode="&#xdc;" />
<glyph unicode="&#xdd;" />
<glyph unicode="&#xde;" />
<glyph unicode="&#xdf;" />
<glyph unicode="&#xe0;" />
<glyph unicode="&#xe1;" />
<glyph unicode="&#xe2;" />
<glyph unicode="&#xe3;" />
<glyph unicode="&#xe4;" />
<glyph unicode="&#xe5;" />
<glyph unicode="&#xe6;" />
<glyph unicode="&#xe7;" />
<glyph unicode="&#xe8;" />
<glyph unicode="&#xe9;" horiz-adv-x="0" />
<glyph unicode="&#xea;" />
<glyph unicode="&#xeb;" />
<glyph unicode="&#xec;" />
<glyph unicode="&#xed;" />
<glyph unicode="&#xee;" />
<glyph unicode="&#xef;" />
<glyph unicode="&#xf0;" />
<glyph unicode="&#xf1;" />
<glyph unicode="&#xf2;" />
<glyph unicode="&#xf3;" />
<glyph unicode="&#xf4;" />
<glyph unicode="&#xf5;" />
<glyph unicode="&#xf6;" />
<glyph unicode="&#xf7;" />
<glyph unicode="&#xf8;" />
<glyph unicode="&#xf9;" />
<glyph unicode="&#xfa;" />
<glyph unicode="&#xfb;" />
<glyph unicode="&#xfc;" />
<glyph unicode="&#xfd;" />
<glyph unicode="&#xfe;" />
<glyph unicode="&#xff;" />
<glyph unicode="&#x152;" />
<glyph unicode="&#x153;" />
<glyph unicode="&#x178;" />
<glyph unicode="&#x2c6;" />
<glyph unicode="&#x2dc;" />
<glyph unicode="&#x2000;" horiz-adv-x="931" />
<glyph unicode="&#x2001;" horiz-adv-x="1863" />
<glyph unicode="&#x2002;" horiz-adv-x="931" />
<glyph unicode="&#x2003;" horiz-adv-x="1863" />
<glyph unicode="&#x2004;" horiz-adv-x="620" />
<glyph unicode="&#x2005;" horiz-adv-x="464" />
<glyph unicode="&#x2006;" horiz-adv-x="309" />
<glyph unicode="&#x2007;" horiz-adv-x="309" />
<glyph unicode="&#x2008;" horiz-adv-x="231" />
<glyph unicode="&#x2009;" horiz-adv-x="372" />
<glyph unicode="&#x200a;" horiz-adv-x="102" />
<glyph unicode="&#x2010;" horiz-adv-x="1251" d="M74 498h1073v112h-1073v-112z" />
<glyph unicode="&#x2011;" horiz-adv-x="1251" d="M74 498h1073v112h-1073v-112z" />
<glyph unicode="&#x2012;" horiz-adv-x="1251" d="M74 498h1073v112h-1073v-112z" />
<glyph unicode="&#x2013;" />
<glyph unicode="&#x2014;" />
<glyph unicode="&#x2018;" />
<glyph unicode="&#x2019;" />
<glyph unicode="&#x201a;" />
<glyph unicode="&#x201c;" />
<glyph unicode="&#x201d;" />
<glyph unicode="&#x201e;" />
<glyph unicode="&#x2022;" />
<glyph unicode="&#x2026;" />
<glyph unicode="&#x202f;" horiz-adv-x="372" />
<glyph unicode="&#x2039;" />
<glyph unicode="&#x203a;" />
<glyph unicode="&#x205f;" horiz-adv-x="464" />
<glyph unicode="&#x2122;" />
<glyph unicode="&#xe000;" horiz-adv-x="500" d="M0 0v0v0v0v0z" />
<glyph unicode="&#xfb01;" horiz-adv-x="3276" d="M223 1217l125 -619l154 -174l39 -182l-80 -172q29 -43 174 -76q90 -12 175 -16.5t214 -4.5q131 0 215 4.5t174 16.5q145 33 174 76l-31 65l-49 107l41 182l152 174l125 616l-25 9l-323 -557l-41 698l-27 8l-240 -672l-135 744h-20l-135 -744l-240 672l-27 -8l-41 -698 l-323 557zM315 1014l220 -379q-33 2 -80 20q-10 -23 -28.5 -33t-31.5 -10zM430 575q20 6 43 31q35 -14 82 -14t93 15.5t83 47.5q59 -27 129 -26q92 0 164 45q72 -45 164 -45q70 0 129 26q37 -33 84 -48t92 -15q47 0 82 14q23 -27 47 -31l-106 -122q-98 43 -236.5 72.5 t-255.5 29.5t-256 -29.5t-236 -72.5zM530 106l54 121q37 18 95 37t121.5 33t122 21.5t101.5 7.5t100.5 -7.5t123 -21.5t122.5 -31.5t94 -36.5l58 -123q-39 14 -105.5 31t-144.5 31t-142.5 22.5t-105.5 8.5t-104.5 -8.5t-139 -22.5t-143.5 -31t-107 -31zM549 66 q51 16 113.5 30.5t133 27.5t130 20.5t98.5 7.5t101.5 -8.5t131 -20.5t133 -28.5t111.5 -31.5q-41 -14 -88 -22q-90 -14 -173 -18.5t-216 -4.5q-131 0 -215 4.5t-174 18.5q-49 11 -86 25zM551 414q96 41 227 67.5t246 26.5t245 -26.5t228 -67.5l-31 -140q-39 18 -94 36 t-122.5 32t-126 22.5t-99.5 8.5q-39 0 -100.5 -8.5t-125 -21.5t-120.5 -31.5t-96 -37.5zM618 645l31 563l195 -534q-68 6 -121 28q-50 -43 -105 -57zM924 678l100 553l100 -553q-49 8 -100 41q-51 -33 -100 -41zM1206 674l193 534l31 -563q-55 14 -105 57q-53 -20 -119 -28z M1513 635l220 379l-80 -402q-12 0 -30.5 10.5t-29.5 32.5q-47 -18 -80 -20z" />
<glyph unicode="&#xfb02;" horiz-adv-x="3885" d="M2105 14l150 -143q61 41 113.5 71.5t89.5 37.5q27 2 104 10q70 6 145.5 14t139.5 16q31 6 57.5 19.5t67.5 42.5q43 -29 68.5 -42t56.5 -20q63 -8 115.5 -13t170.5 -17q76 -8 103 -10q37 -6 89 -36t113 -73l150 143q-72 76 -154 117t-200 53q-55 6 -176 19 q-82 6 -131.5 11t-81.5 11q-8 4 -19 6q-12 6 -22.5 12.5t-20.5 22.5h-123q-12 -16 -20 -22t-23 -13q-10 -2 -18 -6q-31 -6 -65 -9l-146 -13q-123 -12 -178 -19q-119 -12 -201 -53t-154 -117zM2177 16q127 104 283 119q47 6 172 17q80 6 138 12t87 12t64.5 23.5t50.5 40.5 q14 -23 50 -40.5t64 -23.5q31 -6 77 -11t149 -13q125 -10 172 -17q156 -14 282 -119l-84 -75q-70 47 -109.5 63t-88.5 25q-25 4 -73 9t-106.5 11t-106.5 11.5t-103 9.5q-47 8 -123 61q-74 -53 -123 -61q-55 -4 -101.5 -9.5t-97.5 -10.5t-108.5 -11t-81.5 -10 q-49 -8 -89 -24.5t-110 -63.5zM2490 883q0 -72 40 -142.5t134 -126.5l-61 -245q96 -47 171 -71t144 -30q18 -2 54 -2q37 0 55 2q72 6 145.5 30t167.5 71l-61 245q94 55 135 125t41 144q0 41 -12 80q-33 53 -82 102t-123 111q-45 37 -62 53l-204 205l-205 -205 q-16 -16 -62 -53q-74 -61 -123 -110.5t-81 -102.5q-11 -39 -11 -80zM2540 889q0 39 12 74q29 39 75 81.5t113 100.5q63 55 84 76l150 151l149 -151q20 -20 84 -76q74 -63 117 -103.5t72 -78.5q12 -35 12 -72q0 -70 -41 -136.5t-125 -119.5q-53 23 -135 34t-135 11 q-55 0 -133 -11.5t-134 -33.5q-84 53 -124.5 119.5t-40.5 134.5zM2669 422l43 168q70 20 141.5 29.5t118.5 9.5t118.5 -9.5t141.5 -29.5l43 -166q-119 59 -303 59q-180 0 -303 -61zM2687 377q102 55 285 55q180 0 286 -53q-63 -27 -118.5 -42t-110.5 -20h-115 q-106 9 -227 60zM2818 963h113v-113h82v113h112v81h-112v113h-82v-113h-113v-81zM2853 1544q0 -41 37 -75.5t82 -34.5t81.5 34.5t36.5 75.5t-36.5 76t-81.5 35t-82 -35t-37 -76zM2902 1544q0 25 21.5 45.5t48.5 20.5t48 -20.5t21 -45.5t-21.5 -45t-47.5 -20q-27 0 -48.5 20 t-21.5 45zM223 1217l125 -619l154 -174l39 -182l-80 -172q29 -43 174 -76q90 -12 175 -16.5t214 -4.5q131 0 215 4.5t174 16.5q145 33 174 76l-31 65l-49 107l41 182l152 174l125 616l-25 9l-323 -557l-41 698l-27 8l-240 -672l-135 744h-20l-135 -744l-240 672l-27 -8 l-41 -698l-323 557zM315 1014l220 -379q-33 2 -80 20q-10 -23 -28.5 -33t-31.5 -10zM430 575q20 6 43 31q35 -14 82 -14t93 15.5t83 47.5q59 -27 129 -26q92 0 164 45q72 -45 164 -45q70 0 129 26q37 -33 84 -48t92 -15q47 0 82 14q23 -27 47 -31l-106 -122 q-98 43 -236.5 72.5t-255.5 29.5t-256 -29.5t-236 -72.5zM530 106l54 121q37 18 95 37t121.5 33t122 21.5t101.5 7.5t100.5 -7.5t123 -21.5t122.5 -31.5t94 -36.5l58 -123q-39 14 -105.5 31t-144.5 31t-142.5 22.5t-105.5 8.5t-104.5 -8.5t-139 -22.5t-143.5 -31t-107 -31z M549 66q51 16 113.5 30.5t133 27.5t130 20.5t98.5 7.5t101.5 -8.5t131 -20.5t133 -28.5t111.5 -31.5q-41 -14 -88 -22q-90 -14 -173 -18.5t-216 -4.5q-131 0 -215 4.5t-174 18.5q-49 11 -86 25zM551 414q96 41 227 67.5t246 26.5t245 -26.5t228 -67.5l-31 -140 q-39 18 -94 36t-122.5 32t-126 22.5t-99.5 8.5q-39 0 -100.5 -8.5t-125 -21.5t-120.5 -31.5t-96 -37.5zM618 645l31 563l195 -534q-68 6 -121 28q-50 -43 -105 -57zM924 678l100 553l100 -553q-49 8 -100 41q-51 -33 -100 -41zM1206 674l193 534l31 -563q-55 14 -105 57 q-53 -20 -119 -28zM1513 635l220 379l-80 -402q-12 0 -30.5 10.5t-29.5 32.5q-47 -18 -80 -20z" />
<glyph unicode="&#xfb03;" horiz-adv-x="5324" d="M2271 1217l125 -619l154 -174l39 -182l-80 -172q29 -43 174 -76q90 -12 175 -16.5t214 -4.5q131 0 215 4.5t174 16.5q145 33 174 76l-31 65l-49 107l41 182l152 174l125 616l-25 9l-323 -557l-41 698l-27 8l-240 -672l-135 744h-20l-135 -744l-240 672l-27 -8l-41 -698 l-323 557zM2363 1014l220 -379q-33 2 -80 20q-10 -23 -28.5 -33t-31.5 -10zM2478 575q20 6 43 31q35 -14 82 -14t93 15.5t83 47.5q59 -27 129 -26q92 0 164 45q72 -45 164 -45q70 0 129 26q37 -33 84 -48t92 -15q47 0 82 14q23 -27 47 -31l-106 -122q-98 43 -236.5 72.5 t-255.5 29.5t-256 -29.5t-236 -72.5zM2578 106l54 121q37 18 95 37t121.5 33t122 21.5t101.5 7.5t100.5 -7.5t123 -21.5t122.5 -31.5t94 -36.5l58 -123q-39 14 -105.5 31t-144.5 31t-142.5 22.5t-105.5 8.5t-104.5 -8.5t-139 -22.5t-143.5 -31t-107 -31zM2597 66 q51 16 113.5 30.5t133 27.5t130 20.5t98.5 7.5t101.5 -8.5t131 -20.5t133 -28.5t111.5 -31.5q-41 -14 -88 -22q-90 -14 -173 -18.5t-216 -4.5q-131 0 -215 4.5t-174 18.5q-49 11 -86 25zM2599 414q96 41 227 67.5t246 26.5t245 -26.5t228 -67.5l-31 -140q-39 18 -94 36 t-122.5 32t-126 22.5t-99.5 8.5q-39 0 -100.5 -8.5t-125 -21.5t-120.5 -31.5t-96 -37.5zM2666 645l31 563l195 -534q-68 6 -121 28q-50 -43 -105 -57zM2972 678l100 553l100 -553q-49 8 -100 41q-51 -33 -100 -41zM3254 674l193 534l31 -563q-55 14 -105 57 q-53 -20 -119 -28zM3561 635l220 379l-80 -402q-12 0 -30.5 10.5t-29.5 32.5q-47 -18 -80 -20zM223 1217l125 -619l154 -174l39 -182l-80 -172q29 -43 174 -76q90 -12 175 -16.5t214 -4.5q131 0 215 4.5t174 16.5q145 33 174 76l-31 65l-49 107l41 182l152 174l125 616 l-25 9l-323 -557l-41 698l-27 8l-240 -672l-135 744h-20l-135 -744l-240 672l-27 -8l-41 -698l-323 557zM315 1014l220 -379q-33 2 -80 20q-10 -23 -28.5 -33t-31.5 -10zM430 575q20 6 43 31q35 -14 82 -14t93 15.5t83 47.5q59 -27 129 -26q92 0 164 45q72 -45 164 -45 q70 0 129 26q37 -33 84 -48t92 -15q47 0 82 14q23 -27 47 -31l-106 -122q-98 43 -236.5 72.5t-255.5 29.5t-256 -29.5t-236 -72.5zM530 106l54 121q37 18 95 37t121.5 33t122 21.5t101.5 7.5t100.5 -7.5t123 -21.5t122.5 -31.5t94 -36.5l58 -123q-39 14 -105.5 31t-144.5 31 t-142.5 22.5t-105.5 8.5t-104.5 -8.5t-139 -22.5t-143.5 -31t-107 -31zM549 66q51 16 113.5 30.5t133 27.5t130 20.5t98.5 7.5t101.5 -8.5t131 -20.5t133 -28.5t111.5 -31.5q-41 -14 -88 -22q-90 -14 -173 -18.5t-216 -4.5q-131 0 -215 4.5t-174 18.5q-49 11 -86 25z M551 414q96 41 227 67.5t246 26.5t245 -26.5t228 -67.5l-31 -140q-39 18 -94 36t-122.5 32t-126 22.5t-99.5 8.5q-39 0 -100.5 -8.5t-125 -21.5t-120.5 -31.5t-96 -37.5zM618 645l31 563l195 -534q-68 6 -121 28q-50 -43 -105 -57zM924 678l100 553l100 -553q-49 8 -100 41 q-51 -33 -100 -41zM1206 674l193 534l31 -563q-55 14 -105 57q-53 -20 -119 -28zM1513 635l220 379l-80 -402q-12 0 -30.5 10.5t-29.5 32.5q-47 -18 -80 -20z" />
<glyph unicode="&#xfb04;" horiz-adv-x="5933" d="M4153 14l150 -143q61 41 113.5 71.5t89.5 37.5q27 2 104 10q70 6 145.5 14t139.5 16q31 6 57.5 19.5t67.5 42.5q43 -29 68.5 -42t56.5 -20q63 -8 115.5 -13t170.5 -17q76 -8 103 -10q37 -6 89 -36t113 -73l150 143q-72 76 -154 117t-200 53q-55 6 -176 19 q-82 6 -131.5 11t-81.5 11q-8 4 -19 6q-12 6 -22.5 12.5t-20.5 22.5h-123q-12 -16 -20 -22t-23 -13q-10 -2 -18 -6q-31 -6 -65 -9l-146 -13q-123 -12 -178 -19q-119 -12 -201 -53t-154 -117zM4225 16q127 104 283 119q47 6 172 17q80 6 138 12t87 12t64.5 23.5t50.5 40.5 q14 -23 50 -40.5t64 -23.5q31 -6 77 -11t149 -13q125 -10 172 -17q156 -14 282 -119l-84 -75q-70 47 -109.5 63t-88.5 25q-25 4 -73 9t-106.5 11t-106.5 11.5t-103 9.5q-47 8 -123 61q-74 -53 -123 -61q-55 -4 -101.5 -9.5t-97.5 -10.5t-108.5 -11t-81.5 -10 q-49 -8 -89 -24.5t-110 -63.5zM4538 883q0 -72 40 -142.5t134 -126.5l-61 -245q96 -47 171 -71t144 -30q18 -2 54 -2q37 0 55 2q72 6 145.5 30t167.5 71l-61 245q94 55 135 125t41 144q0 41 -12 80q-33 53 -82 102t-123 111q-45 37 -62 53l-204 205l-205 -205 q-16 -16 -62 -53q-74 -61 -123 -110.5t-81 -102.5q-11 -39 -11 -80zM4588 889q0 39 12 74q29 39 75 81.5t113 100.5q63 55 84 76l150 151l149 -151q20 -20 84 -76q74 -63 117 -103.5t72 -78.5q12 -35 12 -72q0 -70 -41 -136.5t-125 -119.5q-53 23 -135 34t-135 11 q-55 0 -133 -11.5t-134 -33.5q-84 53 -124.5 119.5t-40.5 134.5zM4717 422l43 168q70 20 141.5 29.5t118.5 9.5t118.5 -9.5t141.5 -29.5l43 -166q-119 59 -303 59q-180 0 -303 -61zM4735 377q102 55 285 55q180 0 286 -53q-63 -27 -118.5 -42t-110.5 -20h-115 q-106 9 -227 60zM4866 963h113v-113h82v113h112v81h-112v113h-82v-113h-113v-81zM4901 1544q0 -41 37 -75.5t82 -34.5t81.5 34.5t36.5 75.5t-36.5 76t-81.5 35t-82 -35t-37 -76zM4950 1544q0 25 21.5 45.5t48.5 20.5t48 -20.5t21 -45.5t-21.5 -45t-47.5 -20q-27 0 -48.5 20 t-21.5 45zM2271 1217l125 -619l154 -174l39 -182l-80 -172q29 -43 174 -76q90 -12 175 -16.5t214 -4.5q131 0 215 4.5t174 16.5q145 33 174 76l-31 65l-49 107l41 182l152 174l125 616l-25 9l-323 -557l-41 698l-27 8l-240 -672l-135 744h-20l-135 -744l-240 672l-27 -8 l-41 -698l-323 557zM2363 1014l220 -379q-33 2 -80 20q-10 -23 -28.5 -33t-31.5 -10zM2478 575q20 6 43 31q35 -14 82 -14t93 15.5t83 47.5q59 -27 129 -26q92 0 164 45q72 -45 164 -45q70 0 129 26q37 -33 84 -48t92 -15q47 0 82 14q23 -27 47 -31l-106 -122 q-98 43 -236.5 72.5t-255.5 29.5t-256 -29.5t-236 -72.5zM2578 106l54 121q37 18 95 37t121.5 33t122 21.5t101.5 7.5t100.5 -7.5t123 -21.5t122.5 -31.5t94 -36.5l58 -123q-39 14 -105.5 31t-144.5 31t-142.5 22.5t-105.5 8.5t-104.5 -8.5t-139 -22.5t-143.5 -31t-107 -31z M2597 66q51 16 113.5 30.5t133 27.5t130 20.5t98.5 7.5t101.5 -8.5t131 -20.5t133 -28.5t111.5 -31.5q-41 -14 -88 -22q-90 -14 -173 -18.5t-216 -4.5q-131 0 -215 4.5t-174 18.5q-49 11 -86 25zM2599 414q96 41 227 67.5t246 26.5t245 -26.5t228 -67.5l-31 -140 q-39 18 -94 36t-122.5 32t-126 22.5t-99.5 8.5q-39 0 -100.5 -8.5t-125 -21.5t-120.5 -31.5t-96 -37.5zM2666 645l31 563l195 -534q-68 6 -121 28q-50 -43 -105 -57zM2972 678l100 553l100 -553q-49 8 -100 41q-51 -33 -100 -41zM3254 674l193 534l31 -563q-55 14 -105 57 q-53 -20 -119 -28zM3561 635l220 379l-80 -402q-12 0 -30.5 10.5t-29.5 32.5q-47 -18 -80 -20zM223 1217l125 -619l154 -174l39 -182l-80 -172q29 -43 174 -76q90 -12 175 -16.5t214 -4.5q131 0 215 4.5t174 16.5q145 33 174 76l-31 65l-49 107l41 182l152 174l125 616 l-25 9l-323 -557l-41 698l-27 8l-240 -672l-135 744h-20l-135 -744l-240 672l-27 -8l-41 -698l-323 557zM315 1014l220 -379q-33 2 -80 20q-10 -23 -28.5 -33t-31.5 -10zM430 575q20 6 43 31q35 -14 82 -14t93 15.5t83 47.5q59 -27 129 -26q92 0 164 45q72 -45 164 -45 q70 0 129 26q37 -33 84 -48t92 -15q47 0 82 14q23 -27 47 -31l-106 -122q-98 43 -236.5 72.5t-255.5 29.5t-256 -29.5t-236 -72.5zM530 106l54 121q37 18 95 37t121.5 33t122 21.5t101.5 7.5t100.5 -7.5t123 -21.5t122.5 -31.5t94 -36.5l58 -123q-39 14 -105.5 31t-144.5 31 t-142.5 22.5t-105.5 8.5t-104.5 -8.5t-139 -22.5t-143.5 -31t-107 -31zM549 66q51 16 113.5 30.5t133 27.5t130 20.5t98.5 7.5t101.5 -8.5t131 -20.5t133 -28.5t111.5 -31.5q-41 -14 -88 -22q-90 -14 -173 -18.5t-216 -4.5q-131 0 -215 4.5t-174 18.5q-49 11 -86 25z M551 414q96 41 227 67.5t246 26.5t245 -26.5t228 -67.5l-31 -140q-39 18 -94 36t-122.5 32t-126 22.5t-99.5 8.5q-39 0 -100.5 -8.5t-125 -21.5t-120.5 -31.5t-96 -37.5zM618 645l31 563l195 -534q-68 6 -121 28q-50 -43 -105 -57zM924 678l100 553l100 -553q-49 8 -100 41 q-51 -33 -100 -41zM1206 674l193 534l31 -563q-55 14 -105 57q-53 -20 -119 -28zM1513 635l220 379l-80 -402q-12 0 -30.5 10.5t-29.5 32.5q-47 -18 -80 -20z" />
</font>
</defs></svg>

After

Width:  |  Height:  |  Size: 44 KiB

Binary file not shown.

Binary file not shown.

Binary file not shown.

File diff suppressed because it is too large Load Diff

After

Width:  |  Height:  |  Size: 235 KiB

Binary file not shown.

Binary file not shown.

Binary file not shown.

File diff suppressed because it is too large Load Diff

After

Width:  |  Height:  |  Size: 263 KiB

Binary file not shown.

Binary file not shown.

Binary file not shown.

File diff suppressed because it is too large Load Diff

After

Width:  |  Height:  |  Size: 234 KiB

Binary file not shown.

Binary file not shown.

Binary file not shown.

File diff suppressed because it is too large Load Diff

After

Width:  |  Height:  |  Size: 251 KiB

Binary file not shown.

Binary file not shown.

Binary file not shown.

File diff suppressed because it is too large Load Diff

After

Width:  |  Height:  |  Size: 286 KiB

Binary file not shown.

Binary file not shown.

Binary file not shown.

File diff suppressed because it is too large Load Diff

After

Width:  |  Height:  |  Size: 218 KiB

Binary file not shown.

Binary file not shown.

Binary file not shown.

File diff suppressed because it is too large Load Diff

After

Width:  |  Height:  |  Size: 217 KiB

Binary file not shown.

Binary file not shown.

10
_assets/vendor/pgn4web/fonts/README.txt vendored Normal file
View File

@ -0,0 +1,10 @@
The figurine fonts are derived from the Liberation Sans font (released under
GNU General Public License, see https://fedorahosted.org/liberation-fonts/)
with the addition of chess pieces from freeware fonts: the alpha2 font (Peter
Strickland), the good companion font (David L. Brown), the merida font (Armando
H. Marroquin), the pirate font (Klaus Wolf) and the chess usual font (Armando
H. Marroquin). The original chess fonts and more details are available at
http://www.enpassant.dk/chess/fonteng.htm
The chess informant symbols font is used with permission from the Chess
Informant publishing company (http://www.chessinformant.rs). The chess ole
figurin font is from the ChessOLE project (http://www.chessole.de, David Frank).

View File

@ -0,0 +1,93 @@
/*
* pgn4web javascript chessboard
* copyright (C) 2009-2013 Paolo Casaschi
* see README file and http://pgn4web.casaschi.net
* for credits, license and more details
*/
"use strict";
if ((typeof(blockChessInformantNAGSymbols) != "boolean") || (!blockChessInformantNAGSymbols)) {
if (typeof(ii) == "undefined") { var ii; }
var jsre = new RegExp("chess-informant-NAG-symbols-alternative\.js$", "");
var FontPath = detectJavascriptLocation(jsre).replace(jsre, "");
document.write('<link href="' + FontPath + 'pgn4web-font-ChessOleFigurin.css" type="text/css" rel="stylesheet" />');
document.write('<style type="text/css">.NAGs, .NAGl { font-family: "pgn4web ChessOleFigurin"; line-height: 1em; }</style>');
var Ns = '<span class="NAGs">';
var Nl = '<span class="NAGl">';
var Ne = '</span>';
var basicNAGs = /^([\?!+#\s]|<span class="NAGs">[^<]*<.span>)+(\s|$)/;
if (typeof(NAGstyle) == "undefined") { var NAGstyle; }
NAGstyle = 'olefigurin';
NAG[0] = '';
NAG[1] = '!'; // 'good move';
NAG[2] = '?'; // 'bad move';
NAG[3] = '!!'; // 'very good move';
NAG[4] = '??'; // 'very bad move';
NAG[5] = '!?'; // 'speculative move';
NAG[6] = '?!'; // 'questionable move';
NAG[7] = NAG[8] = Ns + '&#86;' + Ne; // 'forced move';
NAG[9] = '??'; // 'worst move';
NAG[10] = NAG[11] = NAG[12] = Ns + '&#61;' + Ne; // 'drawish position';
NAG[13] = Ns + '&#53;' + Ne; // 'unclear position';
NAG[14] = Ns + '&#49;' + Ne; // 'White has a slight advantage';
NAG[15] = Ns + '&#50;' + Ne; // 'Black has a slight advantage';
NAG[16] = Ns + '&#48;' + Ne; // 'White has a moderate advantage';
NAG[17] = Ns + '&#51;' + Ne; // 'Black has a moderate advantage';
NAG[18] = NAG[20] = Ns + '&#43;&#45;' + Ne; // 'White has a decisive advantage';
NAG[19] = NAG[21] = Ns + '&#45;&#43;' + Ne; // 'Black has a decisive advantage';
NAG[22] = NAG[23] = Ns + '&#74;' + Ne; // 'zugzwang';
NAG[24] = NAG[25] = NAG[26] = NAG[27] = NAG[28] = NAG[29] = Ns + '&#70;' + Ne; // 'space advantage';
NAG[30] = NAG[31] = NAG[32] = NAG[33] = NAG[34] = NAG[35] = Ns + '&#69;' + Ne; // 'time (development) advantage';
NAG[36] = NAG[37] = NAG[38] = NAG[39] = Ns + '&#73;' + Ne; // 'initiative';
NAG[40] = NAG[41] = Ns + '&#72;' + Ne; // 'attack';
NAG[42] = NAG[43] = Ns + '&#52;' + Ne; // 'insufficient compensation for material deficit';
NAG[44] = NAG[45] = NAG[46] = NAG[47] = Ns + '&#54;' + Ne; // 'sufficient compensation for material deficit';
NAG[48] = NAG[49] = NAG[50] = NAG[51] = NAG[52] = NAG[53] = Ns + '&#90;' + Ne; // 'center control advantage';
for (ii = 54; ii <= 129; ii++) { NAG[ii] = ''; }
NAG[130] = NAG[131] = NAG[132] = NAG[133] = NAG[134] = NAG[135] = Ns + '&#71;' + Ne; // 'counterplay';
NAG[136] = NAG[137] = NAG[138] = NAG[139] = Ns + '&#33;' + Ne; // 'time control pressure';
NAG[140] = Nl + '&#85;' + Ne; // 'with the idea';
NAG[141] = ''; // 'aimed against';
NAG[142] = Nl + '&#87;' + Ne; // 'better is';
NAG[143] = ''; // 'worse is';
NAG[144] = Nl + '&#61;' + Ne; // 'equivalent is';
NAG[145] = 'RR'; // 'editorial comment';
NAG[146] = 'N'; // 'novelty';
NAG[147] = NAG[244] = Nl + '&#88;' + Ne; // 'weak point';
NAG[148] = NAG[245] = Nl + '&#89;' + Ne; // 'endgame';
NAG[149] = NAG[239] = Nl + '&#58;' + Ne; // 'file';
NAG[150] = NAG[240] = Nl + '&#59;' + Ne; // 'diagonal';
NAG[151] = NAG[152] = NAG[246] = Nl + '&#55;' + Ne; // 'bishop pair';
NAG[153] = NAG[247] = Nl + '&#56;' + Ne; // 'opposite bishops';
NAG[154] = NAG[248] = Nl + '&#57;' + Ne; // 'same bishops';
NAG[155] = NAG[156] = NAG[193] = NAG[249] = Nl + '&#80;&#80;' + Ne; // 'connected pawns';
NAG[157] = NAG[158] = NAG[192] = NAG[250] = Nl + '&#80;&#46;&#46;&#80;' + Ne; // 'isolated pawns';
NAG[159] = NAG[160] = NAG[191] = NAG[251] = Nl + '&#81;' + Ne; // 'doubled pawns';
NAG[161] = NAG[162] = NAG[252] = Nl + '&#82;' + Ne; // 'passed pawn';
NAG[163] = NAG[164] = NAG[253] = '>'; // 'pawn majority';
for (ii = 165; ii <= 189; ii++) { NAG[ii] = ''; }
NAG[190] = Nl + '&#37;' + Ne; // 'etc';
NAG[194] = ''; // 'hanging pawns';
NAG[195] = ''; // 'backward pawns';
for (ii = 196; ii <= 200; ii++) { NAG[ii] = ''; }
NAG[201] = NAG[220] = NAG[221] = ''; // 'diagram';
for (ii = 202; ii <= 219; ii++) { NAG[ii] = ''; }
for (ii = 222; ii <= 237; ii++) { NAG[ii] = ''; }
NAG[238] = Nl + '&#70;' + Ne; // 'space advantage';
NAG[241] = Nl + '&#90;' + Ne; // 'center';
NAG[242] = Nl + '&#62;' + Ne; // 'kingside';
NAG[243] = Nl + '&#60;' + Ne; // 'queenside';
NAG[254] = Nl + '&#34;' + Ne; // 'with';
NAG[255] = Nl + '&#36;' + Ne; // 'without';
}

View File

@ -0,0 +1,93 @@
/*
* pgn4web javascript chessboard
* copyright (C) 2009-2013 Paolo Casaschi
* see README file and http://pgn4web.casaschi.net
* for credits, license and more details
*/
"use strict";
if ((typeof(blockChessInformantNAGSymbols) != "boolean") || (!blockChessInformantNAGSymbols)) {
if (typeof(ii) == "undefined") { var ii; }
var jsre = new RegExp("chess-informant-NAG-symbols\.js$", "");
var FontPath = detectJavascriptLocation(jsre).replace(jsre, "");
document.write('<link href="' + FontPath + 'pgn4web-font-ChessInformantReader.css" type="text/css" rel="stylesheet" />');
document.write('<style type="text/css">.NAGs, .NAGl { font-family: "pgn4web ChessInformantReader"; line-height: 1em; }</style>');
var Ns = '<span class="NAGs">';
var Nl = '<span class="NAGl">';
var Ne = '</span>';
var basicNAGs = /^([\?!+#\s]|<span class="NAGs">[^<]*<.span>)+(\s|$)/;
if (typeof(NAGstyle) == "undefined") { var NAGstyle; }
NAGstyle = 'informantreader';
NAG[0] = '';
NAG[1] = '!'; // 'good move';
NAG[2] = '?'; // 'bad move';
NAG[3] = '!!'; // 'very good move';
NAG[4] = '??'; // 'very bad move';
NAG[5] = '!?'; // 'speculative move';
NAG[6] = '?!'; // 'questionable move';
NAG[7] = NAG[8] = Ns + '&#236;' + Ne; // 'forced move';
NAG[9] = '??'; // 'worst move';
NAG[10] = NAG[11] = NAG[12] = Ns + '&#61;' + Ne; // 'drawish position';
NAG[13] = Ns + '&#213;' + Ne; // 'unclear position';
NAG[14] = Ns + '&#162;' + Ne; // 'White has a slight advantage';
NAG[15] = Ns + '&#163;' + Ne; // 'Black has a slight advantage';
NAG[16] = Ns + '&#165;' + Ne; // 'White has a moderate advantage';
NAG[17] = Ns + '&#164;' + Ne; // 'Black has a moderate advantage';
NAG[18] = NAG[20] = Ns + '&#43;&#187;' + Ne; // 'White has a decisive advantage';
NAG[19] = NAG[21] = Ns + '&#187;&#43;' + Ne; // 'Black has a decisive advantage';
NAG[22] = NAG[23] = Ns + '&#194;' + Ne; // 'zugzwang';
NAG[24] = NAG[25] = NAG[26] = NAG[27] = NAG[28] = NAG[29] = Ns + '&#193;' + Ne; // 'space advantage';
NAG[30] = NAG[31] = NAG[32] = NAG[33] = NAG[34] = NAG[35] = Ns + '&#182;' + Ne; // 'time (development) advantage';
NAG[36] = NAG[37] = NAG[38] = NAG[39] = Ns + '&#238;' + Ne; // 'initiative';
NAG[40] = NAG[41] = Ns + '&#239;' + Ne; // 'attack';
NAG[42] = NAG[43] = ''; // 'insufficient compensation for material deficit';
NAG[44] = NAG[45] = NAG[46] = NAG[47] = Ns + '&#167;' + Ne; // 'sufficient compensation for material deficit';
NAG[48] = NAG[49] = NAG[50] = NAG[51] = NAG[52] = NAG[53] = Ns + '&#191;' + Ne; // 'center control advantage';
for (ii = 54; ii <= 129; ii++) { NAG[ii] = ''; }
NAG[130] = NAG[131] = NAG[132] = NAG[133] = NAG[134] = NAG[135] = Ns + '&#124;' + Ne; // 'counterplay';
NAG[136] = NAG[137] = NAG[138] = NAG[139] = Ns + '&#176;' + Ne; // 'time control pressure';
NAG[140] = Nl + '&#197;' + Ne; // 'with the idea';
NAG[141] = ''; // 'aimed against';
NAG[142] = Nl + '&#196;' + Ne; // 'better is';
NAG[143] = ''; // 'worse is';
NAG[144] = Nl + '&#61;' + Ne; // 'equivalent is';
NAG[145] = 'RR'; // 'editorial comment';
NAG[146] = 'N'; // 'novelty';
NAG[147] = NAG[244] = Nl + '&#94;' + Ne; // 'weak point';
NAG[148] = NAG[245] = Nl + '&#207;' + Ne; // 'endgame';
NAG[149] = NAG[239] = Nl + '&nbsp;&nbsp;&#732;&nbsp;' + Ne; // 'file';
NAG[150] = NAG[240] = Nl + '&#92;' + Ne; // 'diagonal';
NAG[151] = NAG[152] = NAG[246] = Nl + '&#210;' + Ne; // 'bishop pair';
NAG[153] = NAG[247] = Nl + '&#211;' + Ne; // 'opposite bishops';
NAG[154] = NAG[248] = Nl + '&#212;' + Ne; // 'same bishops';
NAG[155] = NAG[156] = NAG[193] = NAG[249] = Nl + '&#217;' + Ne; // 'connected pawns';
NAG[157] = NAG[158] = NAG[192] = NAG[250] = Nl + '&#219;' + Ne; // 'isolated pawns';
NAG[159] = NAG[160] = NAG[191] = NAG[251] = Nl + '&#218;' + Ne; // 'doubled pawns';
NAG[161] = NAG[162] = NAG[252] = Nl + '&#8249;' + Ne; // 'passed pawn';
NAG[163] = NAG[164] = NAG[253] = Nl + '&#8250;' + Ne; // 'pawn majority';
for (ii = 165; ii <= 189; ii++) { NAG[ii] = ''; }
NAG[190] = Nl + '&#223;' + Ne; // 'etc';
NAG[194] = ''; // 'hanging pawns';
NAG[195] = ''; // 'backward pawns';
for (ii = 196; ii <= 200; ii++) { NAG[ii] = ''; }
NAG[201] = NAG[220] = NAG[221] = ''; // 'diagram';
for (ii = 202; ii <= 219; ii++) { NAG[ii] = ''; }
for (ii = 222; ii <= 237; ii++) { NAG[ii] = ''; }
NAG[238] = Nl + '&#193;' + Ne; // 'space advantage';
NAG[241] = Nl + '&#191;' + Ne; // 'center';
NAG[242] = Nl + '&#125;' + Ne; // 'kingside';
NAG[243] = Nl + '&#123;' + Ne; // 'queenside';
NAG[254] = Nl + '&#8216;' + Ne; // 'with';
NAG[255] = Nl + '&#95;' + Ne; // 'without';
}

View File

@ -0,0 +1 @@

View File

@ -0,0 +1,21 @@
/*
* pgn4web javascript chessboard
* copyright (C) 2009-2012 Paolo Casaschi
* see README file and http://pgn4web.casaschi.net
* for credits, license and more details
*
*
* allows using the following chess symbols font-family setting for the chess NAGs:
*
* 'pgn4web ChessInformantReader'
*
* dont try using this font-family directly, instead add the chess informant symbols
* support by including fonts/chess-informant-NAG-symbols.js immediately after pgn4web.js
*/
@font-face {
font-family: 'pgn4web ChessInformantReader';
src: url('ChessInformantReader.eot');
src: url('ChessInformantReader.eot?#iefix') format('embedded-opentype'), url('ChessInformantReader.woff') format('woff'), url('ChessInformantReader.ttf') format('truetype'), url('ChessInformantReader.svg#CReaderTRegular') format('svg');
}

View File

@ -0,0 +1,21 @@
/*
* pgn4web javascript chessboard
* copyright (C) 2009-2012 Paolo Casaschi
* see README file and http://pgn4web.casaschi.net
* for credits, license and more details
*
*
* allows using the following chess symbols font-family setting for the chess NAGs:
*
* 'pgn4web ChessInformantReader'
*
* dont try using this font-family directly, instead add the chess informant symbols
* support by including fonts/chess-informant-NAG-symbols.js immediately after pgn4web.js
*/
@font-face {
font-family: 'pgn4web ChessOleFigurin';
src: url('ChessOleFigurin.eot');
src: url('ChessOleFigurin.eot?#iefix') format('embedded-opentype'), url('ChessOleFigurin.woff') format('woff'), url('ChessOleFigurin.ttf') format('truetype'), url('ChessOleFigurin.svg#ChessOle!FigurinMedium') format('svg');
}

View File

@ -0,0 +1,21 @@
/*
* pgn4web javascript chessboard
* copyright (C) 2009-2012 Paolo Casaschi
* see README file and http://pgn4web.casaschi.net
* for credits, license and more details
*
*
* allows using the following chess figurine font-family setting for the chess moves:
*
* 'pgn4web ChessSansAlpha'
*
* make sure you include this CSS file into your HTML file or your CSS file, then set
* the font-family for the .move class to the chess font of your choice.
*/
@font-face {
font-family: 'pgn4web ChessSansAlpha';
src: url('ChessSansAlpha.eot');
src: url('ChessSansAlpha.eot?#iefix') format('embedded-opentype'), url('ChessSansAlpha.woff') format('woff'), url('ChessSansAlpha.ttf') format('truetype'), url('ChessSansAlpha.svg#ChessSansAlpha') format('svg');
}

View File

@ -0,0 +1,21 @@
/*
* pgn4web javascript chessboard
* copyright (C) 2009-2012 Paolo Casaschi
* see README file and http://pgn4web.casaschi.net
* for credits, license and more details
*
*
* allows using the following chess figurine font-family setting for the chess moves:
*
* 'pgn4web ChessSansMerida'
*
* make sure you include this CSS file into your HTML file or your CSS file, then set
* the font-family for the .move class to the chess font of your choice.
*/
@font-face {
font-family: 'pgn4web ChessSansMerida';
src: url('ChessSansMerida.eot');
src: url('ChessSansMerida.eot?#iefix') format('embedded-opentype'), url('ChessSansMerida.woff') format('woff'), url('ChessSansMerida.ttf') format('truetype'), url('ChessSansMerida.svg#ChessSansMerida') format('svg');
}

View File

@ -0,0 +1,21 @@
/*
* pgn4web javascript chessboard
* copyright (C) 2009-2012 Paolo Casaschi
* see README file and http://pgn4web.casaschi.net
* for credits, license and more details
*
*
* allows using the following chess figurine font-family setting for the chess moves:
*
* 'pgn4web ChessSansPiratf'
*
* make sure you include this CSS file into your HTML file or your CSS file, then set
* the font-family for the .move class to the chess font of your choice.
*/
@font-face {
font-family: 'pgn4web ChessSansPiratf';
src: url('ChessSansPiratf.eot');
src: url('ChessSansPiratf.eot?#iefix') format('embedded-opentype'), url('ChessSansPiratf.woff') format('woff'), url('ChessSansPiratf.ttf') format('truetype'), url('ChessSansPiratf.svg#ChessSansPiratf') format('svg');
}

View File

@ -0,0 +1,21 @@
/*
* pgn4web javascript chessboard
* copyright (C) 2009-2012 Paolo Casaschi
* see README file and http://pgn4web.casaschi.net
* for credits, license and more details
*
*
* allows using the following chess figurine font-family setting for the chess moves:
*
* 'pgn4web ChessSansUscf'
*
* make sure you include this CSS file into your HTML file or your CSS file, then set
* the font-family for the .move class to the chess font of your choice.
*/
@font-face {
font-family: 'pgn4web ChessSansUscf';
src: url('ChessSansUscf.eot');
src: url('ChessSansUscf.eot?#iefix') format('embedded-opentype'), url('ChessSansUscf.woff') format('woff'), url('ChessSansUscf.ttf') format('truetype'), url('ChessSansUscf.svg#ChessSansUscf') format('svg');
}

View File

@ -0,0 +1,21 @@
/*
* pgn4web javascript chessboard
* copyright (C) 2009-2012 Paolo Casaschi
* see README file and http://pgn4web.casaschi.net
* for credits, license and more details
*
*
* allows using the following chess figurine font-family setting for the chess moves:
*
* 'pgn4web ChessSansUsual'
*
* make sure you include this CSS file into your HTML file or your CSS file, then set
* the font-family for the .move class to the chess font of your choice.
*/
@font-face {
font-family: 'pgn4web ChessSansUsual';
src: url('ChessSansUsual.eot');
src: url('ChessSansUsual.eot?#iefix') format('embedded-opentype'), url('ChessSansUsual.woff') format('woff'), url('ChessSansUsual.ttf') format('truetype'), url('ChessSansUsual.svg#ChessSansUsual') format('svg');
}

View File

@ -0,0 +1,26 @@
/*
* pgn4web javascript chessboard
* copyright (C) 2009-2012 Paolo Casaschi
* see README file and http://pgn4web.casaschi.net
* for credits, license and more details
*
*
* The standard LiberationSans font is supplied to allow for consistent display of
* header and text with the moves, when chess moves are displayed using a supplied
* figurine font.
*/
@font-face {
font-family: 'pgn4web Liberation Sans';
src: url('LiberationSans-Regular.eot');
src: url('LiberationSans-Regular.eot?#iefix') format('embedded-opentype'), url('LiberationSans-Regular.woff') format('woff'), url('LiberationSans-Regular.ttf') format('truetype'), url('LiberationSans-Regular.svg#LiberationSans') format('svg');
font-weight: normal;
}
@font-face {
font-family: 'pgn4web Liberation Sans';
src: url('LiberationSans-Bold.eot');
src: url('LiberationSans-Bold.eot?#iefix') format('embedded-opentype'), url('LiberationSans-Bold.woff') format('woff'), url('LiberationSans-Bold.ttf') format('truetype'), url('LiberationSans-Bold.svg#LiberationSans-Bold') format('svg');
font-weight: bold;
}

View File

@ -0,0 +1,28 @@
/*
* pgn4web javascript chessboard
* copyright (C) 2009-2012 Paolo Casaschi
* see README file and http://pgn4web.casaschi.net
* for credits, license and more details
*
*
* allows using the following chess figurine font-family setting for the chess moves:
*
* 'pgn4web ChessSansAlpha'
* 'pgn4web ChessSansMerida'
* 'pgn4web ChessSansPiratf'
* 'pgn4web ChessSansUscf'
* 'pgn4web ChessSansUsual'
*
* make sure you include this CSS file into your HTML file or your CSS file, then set
* the font-family for the .move class to the chess font of your choice.
* The standard LiberationSans font is also supplied to allow for consistent display
* of header and text with the moves.
*/
@import url("pgn4web-font-ChessSansAlpha.css");
@import url("pgn4web-font-ChessSansMerida.css");
@import url("pgn4web-font-ChessSansPiratf.css");
@import url("pgn4web-font-ChessSansUscf.css");
@import url("pgn4web-font-ChessSansUsual.css");
@import url("pgn4web-font-LiberationSans.css");

1992
_assets/vendor/pgn4web/gotd.pgn vendored Normal file

File diff suppressed because it is too large Load Diff

56
_assets/vendor/pgn4web/gotd.php vendored Normal file
View File

@ -0,0 +1,56 @@
<?php
/*
* pgn4web javascript chessboard
* copyright (C) 2009-2013 Paolo Casaschi
* see README file and http://pgn4web.casaschi.net
* for credits, license and more details
*/
error_reporting(E_ALL | E_STRICT);
function get_param($param, $shortParam, $default) {
if (isset($_REQUEST[$param])) { return $_REQUEST[$param]; }
if (isset($_REQUEST[$shortParam])) { return $_REQUEST[$shortParam]; }
return $default;
}
$pgnData = get_param("pgnData", "pd", "gotd.pgn");
function get_pgnText($pgnUrl) {
if (strpos($pgnUrl, ":") || (strpos($pgnUrl, "%3A"))) { return "[Event \"error: invalid pgnData=$pgnUrl\"]\n"; }
$fileLimitBytes = 10000000; // 10Mb
$pgnText = file_get_contents($pgnUrl, NULL, NULL, 0, $fileLimitBytes + 1);
if (!$pgnText) { return "[Event \"error: failed to get pgnData=$pgnUrl\"]\n"; }
$pgnText = str_replace(array("&", "<", ">"), array("&amp;", "&lt;", "&gt;"), $pgnText);
return $pgnText;
}
$pgnText = get_pgnText($pgnData);
$numGames = preg_match_all("/(\s*\[\s*(\w+)\s*\"([^\"]*)\"\s*\]\s*)+[^\[]*/", $pgnText, $games );
$gameNum = get_param("gameNum", "gn", "");
$expiresDate = "";
if ($gameNum == "random") { $gameNum = rand(1, $numGames); }
else if (!preg_match("/^\d+$/", $gameNum)) {
$timeNow = time();
$expiresDate = gmdate("D, d M Y H:i:s", (floor($timeNow / (60 * 60 * 24)) + 1) * (60 * 60 * 24)) . " GMT";
if (!preg_match("/^[ +-]\d+$/", $gameNum)) { $gameNum = 0; } // space is needed since + is urldecoded as space
$gameNum = floor(($gameNum + ($timeNow / (60 * 60 * 24))) % $numGames) + 1;
}
else if ($gameNum < 1) { $gameNum = 1; }
else if ($gameNum > $numGames) { $gameNum = $numGames; }
$gameNum -= 1;
header("content-type: application/x-chess-pgn");
header("content-disposition: inline; filename=game.pgn");
if ($expiresDate) {
header("expires: " . $expiresDate);
}
print $games[0][$gameNum];
?>

213
_assets/vendor/pgn4web/home.html vendored Normal file
View File

@ -0,0 +1,213 @@
<!DOCTYPE HTML>
<html>
<!--
pgn4web javascript chessboard
copyright (C) 2009-2014 Paolo Casaschi
see README file and http://pgn4web.casaschi.net
for credits, license and more details
-->
<head>
<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">
<title>pgn4web</title>
<script src="pgn4web-server-config.js" type="text/javascript"></script>
<style type="text/css">
html, body {
margin: 0px;
padding: 0px;
}
body {
color: black;
background: white;
font-family: sans-serif;
padding: 1.75em;
}
a {
color: black;
text-decoration: none;
}
a:hover, a:active {
color: red;
}
.menu_heading {
font-weight: normal;
margin-left: 0px;
margin-right: 2em;
margin-top: 1.5em;
margin-bottom: 0px;
white-space: nowrap;
}
.menu_item {
font-weight: bold;
margin-left: 1.25em;
margin-right: 2em;
margin-top: 0.5em;
margin-bottom: 0px;
white-space: nowrap;
}
.menu_subitem {
display: inline-block;
font-size: 0.8em;
margin-left: 1em;
margin-top: 0.4em;
white-space: nowrap;
}
.banner {
font-size: 1.5em;
letter-spacing: 0.1em;
word-spacing: 0.1em;
line-height: 1.4em;
margin-bottom: 0.1em;
white-space: nowrap;
text-align: center;
}
.iframe_area {
display: block;
margin: 0;
margin-right: 1em;
background-color: #EDE8D5;
box-shadow: 0px 0px 20px #663300;
border-style: solid;
border-color: #EDE8D5;
border-width: 13px;
border-radius: 10px;
}
.positionLink {
display:block;
width:708px;
height:0.5em;
margin-right:1em;
}
</style>
<link rel="shortcut icon" href="pawn.ico" />
<!-- DeploymentCheck: google analytics code -->
<!-- end DeploymentCheck -->
</head>
<body>
<table border="0" cellpadding="0" cellspacing="0" width="99.9%"><tbody>
<tr>
<td align="left" valign="top">
<div class="menu_heading" style="display:inline-block; margin-top:0px;"><a title="read how to add the chess puzzler to your website or your blog" href="http://code.google.com/p/pgn4web/wiki/Example_Puzzler">chess&nbsp;puzzler</a></div>
<h1 style="display:inline-block; margin:0px; padding:0px;">&nbsp;</h1>
</td>
<td align="center" valign="top">
<h1 style="margin:0px; padding:0px; text-align:right;">
<span style="float:left; color:red; padding-left:13%">
pgn4web
</span>
<a href="." onfocus="this.blur();" style="width:49px; height:29px; background:url(pawns.png) -47px -15px; vertical-align:baseline; display:inline-block; padding-right:0.5em;"></a>
</h1>
</td>
</tr>
<tr>
<td align="left" valign="top">
<div class="menu_item" style="margin-left:0px;">
<iframe height='218' width='194' frameborder='0' scrolling='no' marginheight='0' marginwidth='0' src='puzzler.php?pgnData=tactics.pgn&amp;gameNum=&amp;pieceFont=hash&amp;squareSize=24&amp;lightColorHex=FFFFFF&amp;darkColorHex=EEEEEE&amp;controlBackgroundColorHex=FFFFFF&amp;controlTextColorHex=888888&amp;frameBorderColorHex=none'>
iframe support required to display the chess puzzler
</iframe>
</div>
</td>
<td align="center" valign="middle">
<div class="banner">javascript chess games viewer<br/>for websites, blogs and live broadcasts</div>
</td>
</tr>
<tr>
<td align="left" valign="top">
<div class="menu_heading"><a href="http://code.google.com/p/pgn4web/wiki/ServiceAvailability">online&nbsp;services</a></div>
<div class="menu_item"><a title="online service adding an interactive chessboard to your website or your blog" href="board-generator.html">board&nbsp;generator</a></div>
<div class="menu_item"><a id="viewer_link" title="online service for viewing chess games from *.PGN files, from links to *.PGN URLs and from PGN text" href=.>games&nbsp;viewer</a></div>
<div class="menu_item"><a title="online service broadcasting live games from current chess events" href="live/live.html">live&nbsp;broadcast</a><br/><a class="menu_subitem" title="live broadcast analysis view" href="live/live.html?m=a">analysis&nbsp;view</a><br/><a class="menu_subitem" title="live broadcast fullscreen view" href="live/live-fullscreen.html?scf=t">fullscreen&nbsp;view</a><br/><a class="menu_subitem" title="live broadcast mosaic view with multiple chessboards" href="live/live-mosaic.html">mosaic&nbsp;view</a><br/><a class="menu_subitem" title="live broadcast results view" href="live/live-results.html">results&nbsp;view</a></div>
<div class="menu_heading"><a href="http://code.google.com/p/pgn4web/">software</a></div>
<div class="menu_item"><a href="demo.html">demo</a></div>
<div class="menu_item"><a href="http://pgn4web-downloads.casaschi.net">downloads</a></div>
<div class="menu_item"><a href="http://code.google.com/p/pgn4web/wiki/Index?tm=6">wiki</a></div>
<div class="menu_heading"><a href="http://code.google.com/p/pgn4web/wiki/Credits_and_License">contacts</a></div>
<div class="menu_item"><a id="blog_link" href=.>blog</a></div>
<!-- DeploymentCheck: donations code -->
<!-- end DeploymentCheck -->
<div class="menu_item"><a id="email_link" href=.>email</a></div>
</td>
<td align="center" valign="top" width="100%">
<a name="board" href="#board" onfocus="this.blur();" class="positionLink" style="margin-bottom:1em;">&nbsp;</a>
<iframe
class='iframe_area' height='354' width='708' frameborder='0' scrolling='no' marginheight='0' marginwidth='0'
src='board.html?am=l&amp;d=3000&amp;ih=1&amp;ss=41&amp;ps=33&amp;pf=r&amp;lcs=Wtyk&amp;dcs=OXJO&amp;bbcs=OXJO&amp;hm=n&amp;hcs=ZbNv&amp;bd=h&amp;hd=c&amp;md=f&amp;tm=17&amp;fhcs=nkYj&amp;fhs=14&amp;fmcs=nkYj&amp;fccs=nkYj&amp;hmcs=ZbNv&amp;fms=14&amp;fcs=m&amp;cd=h&amp;bcs=Wtyk&amp;fp=10&amp;hl=t&amp;fh=b&amp;fw=p&amp;pd=gotd.php'
>
your web browser and/or your host do not support iframes as required to display the chessboard
</iframe>
<a href="#top" onfocus="this.blur();" class="positionLink" style="margin-top:1em;">&nbsp;</a>
</td>
</tr>
<tr>
<td align="left" valign="top" colspan="2">
<!-- DeploymentCheck: news feed code -->
<!-- end DeploymentCheck -->
</td>
</tr>
</tbody></table>
<!-- DeploymentCheck: hostedBy code -->
<!-- end DeploymentCheck -->
<script type="text/javascript">
"use strict";
var theObj;
if (theObj = document.getElementById("viewer_link")) { theObj.href = pgn4web_viewer_url; }
if (theObj = document.getElementById("blog_link")) { theObj.href = pgn4web_project_blog; }
if (theObj = document.getElementById("email_link")) { theObj.href = "mailto:" + pgn4web_project_email; }
</script>
</body>
</html>

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 310 B

View File

@ -0,0 +1 @@

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.1 KiB

Some files were not shown because too many files have changed in this diff Show More