/* @license
* Copyright (c) 2016, Jeff Hlywa (jhlywa@gmail.com) * Released under the BSD license * https://github.com/jhlywa/chess.js/blob/master/LICENSE */
var Chess=function®{function e(){ur=new Array(128),lr={w:x,b:x},sr=U,pr={w:0,b:0},cr=x,vr=0,gr=1,hr=[],dr={},a(i())}function n(){t(H)}function t®{var n=r.split(/s+/),t=n,f=0;if(!o®.valid)return!1;e();for(var u=0;u<t.length;u++){var s=t.charAt(u);if(“/”===s)f+=8;else if(O(s))f+=parseInt(s,10);else{var p=“a”>s?U:Q;l({type:s.toLowerCase(),color:p},R(f)),f++}}return sr=n,n.indexOf(“K”)>-1&&(pr.w|=er.KSIDE_CASTLE),n.indexOf(“Q”)>-1&&(pr.w|=er.QSIDE_CASTLE),n.indexOf(“k”)>-1&&(pr.b|=er.KSIDE_CASTLE),n.indexOf(“q”)>-1&&(pr.b|=er.QSIDE_CASTLE),cr=“-”===n?x:fr[n],vr=parseInt(n,10),gr=parseInt(n,10),a(i()),!0}function o®{var e={0:“No errors.”,1:“FEN string must contain six space-delimited fields.”,2:“6th field (move number) must be a positive integer.”,3:“5th field (half move counter) must be a non-negative integer.”,4:“4th field (en-passant square) is invalid.”,5:“3rd field (castling availability) is invalid.”,6:“2nd field (side to move) is invalid.”,7:“1st field (piece positions) does not contain 8 '/'-delimited rows.”,8:“1st field (piece positions) is invalid [consecutive numbers].”,9:“1st field (piece positions) is invalid [invalid piece].”,10:“1st field (piece positions) is invalid [row too large].”,11:“Illegal en-passant square”},n=r.split(/s+/);if(6!==n.length)return{valid:!1,error_number:1,error:e};if(isNaN(n)||parseInt(n,10)<=0)return{valid:!1,error_number:2,error:e};if(isNaN(n)||parseInt(n,10)<0)return{valid:!1,error_number:3,error:e};if(!/^(-|[36])$/.test(n))return{valid:!1,error_number:4,error:e};if(!/^(KQ?k?q?|Qk?q?|kq?|q|-)$/.test(n))return{valid:!1,error_number:5,error:e};if(!/^(w|b)$/.test(n))return{valid:!1,error_number:6,error:e};var t=n.split(“/”);if(8!==t.length)return{valid:!1,error_number:7,error:e};for(var o=0;o<t.length;o++){for(var i=0,f=!1,a=0;a------------------------
n”,e=fr.a8;e<=fr.h1;e++){if(0===L(e)&&(r+=“ ”+“87654321”+“ |”),null==ur)r+=“ . ”;else{var n=ur.type,t=ur.color,o=t===U?n.toUpperCase():n.toLowerCase();r+=“ ”o
“ ”}e+1&136&&(r+=“|n”,e+=8)}return r+=“ ------------------------
n”,r+=“ a b c d e f g hn”}function P(r,e){var n=g®;if(e){var t=n.match(/()?([a-h])x?-?([1-8])()?/);if(t)var o=t,i=t,f=t,a=t}for(var u=c(),l=0,s=u.length;s>l;l++){if(n===g(v(u))||e&&n===g(v(u,!0)))return u;if(!(!t||o&&o.toLowerCase()!=u.piece||fr!=u.from||fr!=u.to||a&&a.toLowerCase()!=u.promotion))return u}return null}function w®{return r>>4}function L®{return 15&r}function R®{var e=L®,n=w®;return“abcdefgh”.substring(e,e+1)+“87654321”.substring(n,n+1)}function N®{return r===U?Q:U}function O®{return-1!==“0123456789”.indexOf®}function k®{var e=q®;e.san=v(e,!1),e.to=R(e.to),e.from=R(e.from);var n=“”;for(var t in er)er&e.flags&&(n+=rr);return e.flags=n,e}function q®{var e=r instanceof Array?[]:{};for(var n in r)“object”==typeof n?e=q(r):e=r;return e}function D®{return r.replace(/^s+|s+$/g,“”)}function K®{for(var e=c({legal:!1}),n=0,t=sr,o=0,i=e.length;i>o;o++){if(S(e),!d(t))if(r-1>0){var f=K(r-1);n+=f}else n++;C()}return n}var Q=“b”,U=“w”,x=-1,$=“p”,j=“n”,B=“b”,M=“r”,G=“q”,F=“k”,W=“pnbrqkPNBRQK”,H=“rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1”,Z=,z={b:,w:},J={n:,b:,r:,q:,k:},V=,X=,Y={p:0,n:1,b:2,r:3,q:4,k:5},rr={NORMAL:“n”,CAPTURE:“c”,BIG_PAWN:“b”,EP_CAPTURE:“e”,PROMOTION:“p”,KSIDE_CASTLE:“k”,QSIDE_CASTLE:“q”},er={NORMAL:1,CAPTURE:2,BIG_PAWN:4,EP_CAPTURE:8,PROMOTION:16,KSIDE_CASTLE:32,QSIDE_CASTLE:64},nr=7,tr=6,or=1,ir=0,fr={a8:0,b8:1,c8:2,d8:3,e8:4,f8:5,g8:6,h8:7,a7:16,b7:17,c7:18,d7:19,e7:20,f7:21,g7:22,h7:23,a6:32,b6:33,c6:34,d6:35,e6:36,f6:37,g6:38,h6:39,a5:48,b5:49,c5:50,d5:51,e5:52,f5:53,g5:54,h5:55,a4:64,b4:65,c4:66,d4:67,e4:68,f4:69,g4:70,h4:71,a3:80,b3:81,c3:82,d3:83,e3:84,f3:85,g3:86,h3:87,a2:96,b2:97,c2:98,d2:99,e2:100,f2:101,g2:102,h2:103,a1:112,b1:113,c1:114,d1:115,e1:116,f1:117,g1:118,h1:119},ar={w:,b:},ur=new Array(128),lr={w:x,b:x},sr=U,pr={w:0,b:0},cr=x,vr=0,gr=1,hr=[],dr={};return t(“undefined”==typeof r?H:r),{WHITE:U,BLACK:Q,PAWN:$,KNIGHT:j,BISHOP:B,ROOK:M,QUEEN:G,KING:F,SQUARES:function(){for(var r=[],e=fr.a8;e<=fr.h1;e++)136&e?e+=7:r.push(R(e));return r}(),FLAGS:rr,load:function®{return t®},reset:function(){return n()},moves:function®{for(var e=c®,n=[],t=0,o=e.length;o>t;t++)n.push(“undefined”!=typeof r&&“verbose”in r&&r.verbose?k(e):v(e,!1));return n},in_check:function(){return E()},in_checkmate:function(){return b()},in_stalemate:function(){return _()},in_draw:function(){return vr>=100||_()||y()||m()},insufficient_material:function(){return y()},in_threefold_repetition:function(){return m()},game_over:function(){return vr>=100||b()||_()||y()||m()},validate_fen:function®{return o®},fen:function(){return i()},pgn:function®{var e=“object”==typeof r&&“string”==typeof r.newline_char?r.newline_char:“n”,n=“object”==typeof r&&“number”==typeof r.max_width?r.max_width:0,t=[],o=!1;for(var i in dr)t.push(“[”i
' “'dr[i]
'”]'+e),o=!0;o&&hr.length&&t.push(e);for(var f=[];hr.length>0;)f.push(C());for(var a=[],u=“”;f.length>0;){var l=f.pop();hr.length||“b”!==l.color?“w”===l.color&&(u.length&&a.push(u),u=gr+“.”):u=gr+“. …”,u=u+“ ”+v(l,!1),S(l)}if(u.length&&a.push(u),“undefined”!=typeof dr.Result&&a.push(dr.Result),0===n)return t.join(“”)+a.join(“ ”);for(var s=0,i=0;i