From e4163ec2a01ff7b7636e58a547630c7182967a8a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Eduardo=20C=C3=A1ceres?= Date: Tue, 14 Jan 2025 13:49:32 +0100 Subject: [PATCH] =?UTF-8?q?=E2=9A=96=EF=B8=8F=20Add=20opponent=20king=20bu?= =?UTF-8?q?ckets=20to=20passed=20pawns=20bucketed=20arrays=20(#1349)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/Lynx/Model/Position.cs | 16 +- src/Lynx/TunableEvalParameters.cs | 11190 ++++++++++++------------ tests/Lynx.Test/Model/PositionTest.cs | 4 +- 3 files changed, 5818 insertions(+), 5392 deletions(-) diff --git a/src/Lynx/Model/Position.cs b/src/Lynx/Model/Position.cs index 8628751ea..798cdf5dc 100644 --- a/src/Lynx/Model/Position.cs +++ b/src/Lynx/Model/Position.cs @@ -584,7 +584,7 @@ public bool WasProduceByAValidMove() bitboard.ResetLS1B(); gamePhase += GamePhaseByPiece[pieceIndex]; - packedScore += AdditionalPieceEvaluation(whiteBucket, pieceSquareIndex, pieceIndex, (int)Side.White, whiteKing, blackKing, blackPawnAttacks); + packedScore += AdditionalPieceEvaluation(whiteBucket, blackBucket, pieceSquareIndex, pieceIndex, (int)Side.White, whiteKing, blackKing, blackPawnAttacks); } } @@ -603,7 +603,7 @@ public bool WasProduceByAValidMove() bitboard.ResetLS1B(); gamePhase += GamePhaseByPiece[pieceIndex]; - packedScore -= AdditionalPieceEvaluation(blackBucket, pieceSquareIndex, pieceIndex, (int)Side.Black, blackKing, whiteKing, whitePawnAttacks); + packedScore -= AdditionalPieceEvaluation(blackBucket, whiteBucket, pieceSquareIndex, pieceIndex, (int)Side.Black, blackKing, whiteKing, whitePawnAttacks); } } } @@ -629,7 +629,7 @@ public bool WasProduceByAValidMove() gamePhase += GamePhaseByPiece[pieceIndex]; - packedScore += AdditionalPieceEvaluation(whiteBucket, pieceSquareIndex, pieceIndex, (int)Side.White, whiteKing, blackKing, blackPawnAttacks); + packedScore += AdditionalPieceEvaluation(whiteBucket, blackBucket, pieceSquareIndex, pieceIndex, (int)Side.White, whiteKing, blackKing, blackPawnAttacks); } } @@ -652,7 +652,7 @@ public bool WasProduceByAValidMove() gamePhase += GamePhaseByPiece[pieceIndex]; - packedScore -= AdditionalPieceEvaluation(blackBucket, pieceSquareIndex, pieceIndex, (int)Side.Black, blackKing, whiteKing, whitePawnAttacks); + packedScore -= AdditionalPieceEvaluation(blackBucket, whiteBucket, pieceSquareIndex, pieceIndex, (int)Side.Black, blackKing, whiteKing, whitePawnAttacks); } } @@ -816,11 +816,11 @@ public static int EvaluateFinalPosition(int ply, bool isInCheck) /// Doesn't include and evaluation /// [MethodImpl(MethodImplOptions.AggressiveInlining)] - internal int AdditionalPieceEvaluation(int bucket, int pieceSquareIndex, int pieceIndex, int pieceSide, int sameSideKingSquare, int oppositeSideKingSquare, BitBoard enemyPawnAttacks) + internal int AdditionalPieceEvaluation(int bucket, int oppositeSideBucket, int pieceSquareIndex, int pieceIndex, int pieceSide, int sameSideKingSquare, int oppositeSideKingSquare, BitBoard enemyPawnAttacks) { return pieceIndex switch { - (int)Piece.P or (int)Piece.p => PawnAdditionalEvaluation(bucket, pieceSquareIndex, pieceIndex, sameSideKingSquare, oppositeSideKingSquare), + (int)Piece.P or (int)Piece.p => PawnAdditionalEvaluation(bucket, oppositeSideBucket, pieceSquareIndex, pieceIndex, sameSideKingSquare, oppositeSideKingSquare), (int)Piece.R or (int)Piece.r => RookAdditionalEvaluation(pieceSquareIndex, pieceIndex, pieceSide, oppositeSideKingSquare, enemyPawnAttacks), (int)Piece.B or (int)Piece.b => BishopAdditionalEvaluation(pieceSquareIndex, pieceIndex, pieceSide, oppositeSideKingSquare, enemyPawnAttacks), (int)Piece.N or (int)Piece.n => KnightAdditionalEvaluation(pieceSquareIndex, pieceSide, oppositeSideKingSquare, enemyPawnAttacks), @@ -830,7 +830,7 @@ internal int AdditionalPieceEvaluation(int bucket, int pieceSquareIndex, int pie } [MethodImpl(MethodImplOptions.AggressiveInlining)] - private int PawnAdditionalEvaluation(int bucket, int squareIndex, int pieceIndex, int sameSideKingSquare, int oppositeSideKingSquare) + private int PawnAdditionalEvaluation(int bucket, int oppositeSideBucket, int squareIndex, int pieceIndex, int sameSideKingSquare, int oppositeSideKingSquare) { int packedBonus = 0; @@ -857,6 +857,7 @@ private int PawnAdditionalEvaluation(int bucket, int squareIndex, int pieceIndex if ((passedPawnsMask & OccupancyBitBoards[oppositeSide]) == 0) { packedBonus += PassedPawnBonusNoEnemiesAheadBonus[bucket][rank]; + packedBonus += PassedPawnBonusNoEnemiesAheadEnemyBonus[oppositeSideBucket][rank]; } // King distance to passed pawn @@ -866,6 +867,7 @@ private int PawnAdditionalEvaluation(int bucket, int squareIndex, int pieceIndex var enemyKingDistance = Constants.ChebyshevDistance[squareIndex][oppositeSideKingSquare]; packedBonus += PassedPawnBonus[bucket][rank] + + PassedPawnEnemyBonus[oppositeSideBucket][rank] + FriendlyKingDistanceToPassedPawnBonus[friendlyKingDistance] + EnemyKingDistanceToPassedPawnPenalty[enemyKingDistance]; } diff --git a/src/Lynx/TunableEvalParameters.cs b/src/Lynx/TunableEvalParameters.cs index a519dcd84..004a6bcf2 100644 --- a/src/Lynx/TunableEvalParameters.cs +++ b/src/Lynx/TunableEvalParameters.cs @@ -1,4 +1,4 @@ -// 2025-1-6 3:56:16 6 +// 2025-1-9 15:51:49 6 using static Lynx.Utils; @@ -12,191 +12,191 @@ internal static class TunableEvalParameters [ [ [ - +28, +261, +45, +378, +843, 0, - -28, -261, -45, -378, -843, 0 + +28, +261, +46, +377, +842, 0, + -28, -261, -46, -377, -842, 0 ], [ - +44, +303, +75, +418, +937, 0, - -44, -303, -75, -418, -937, 0 + +46, +302, +76, +416, +936, 0, + -46, -302, -76, -416, -936, 0 ], [ - +39, +299, +77, +397, +957, 0, - -39, -299, -77, -397, -957, 0 + +39, +299, +79, +397, +957, 0, + -39, -299, -79, -397, -957, 0 ], [ - +29, +266, +40, +341, +809, 0, - -29, -266, -40, -341, -809, 0 + +27, +266, +42, +341, +810, 0, + -27, -266, -42, -341, -810, 0 ], [ - +35, +290, +64, +392, +910, 0, - -35, -290, -64, -392, -910, 0 + +35, +291, +66, +393, +911, 0, + -35, -291, -66, -393, -911, 0 ], [ - +37, +280, +60, +354, +872, 0, - -37, -280, -60, -354, -872, 0 + +34, +281, +62, +355, +872, 0, + -34, -281, -62, -355, -872, 0 ], [ - +49, +315, +95, +427, +1020, 0, - -49, -315, -95, -427, -1020, 0 + +48, +315, +96, +427, +1020, 0, + -48, -315, -96, -427, -1020, 0 ], [ - +37, +315, +89, +425, +965, 0, - -37, -315, -89, -425, -965, 0 + +37, +314, +90, +424, +965, 0, + -37, -314, -90, -424, -965, 0 ], [ - +30, +270, +37, +351, +843, 0, - -30, -270, -37, -351, -843, 0 + +29, +270, +38, +351, +844, 0, + -29, -270, -38, -351, -844, 0 ], [ - +27, +279, +46, +337, +849, 0, - -27, -279, -46, -337, -849, 0 + +23, +279, +48, +337, +850, 0, + -23, -279, -48, -337, -850, 0 ], [ - +27, +258, +34, +315, +865, 0, - -27, -258, -34, -315, -865, 0 + +21, +259, +37, +317, +867, 0, + -21, -259, -37, -317, -867, 0 ], [ - +28, +264, +38, +306, +874, 0, - -28, -264, -38, -306, -874, 0 + +22, +265, +40, +307, +876, 0, + -22, -265, -40, -307, -876, 0 ], [ - +34, +286, +62, +345, +882, 0, - -34, -286, -62, -345, -882, 0 + +30, +286, +64, +346, +883, 0, + -30, -286, -64, -346, -883, 0 ], [ - +39, +317, +93, +406, +930, 0, - -39, -317, -93, -406, -930, 0 + +38, +317, +95, +407, +932, 0, + -38, -317, -95, -407, -932, 0 ], [ - +39, +319, +88, +412, +936, 0, - -39, -319, -88, -412, -936, 0 + +39, +319, +90, +411, +937, 0, + -39, -319, -90, -411, -937, 0 ], [ - +2, +240, +15, +324, +769, 0, - -2, -240, -15, -324, -769, 0 + +1, +239, +16, +322, +770, 0, + -1, -239, -16, -322, -770, 0 ], [ - -4, +238, +40, +319, +743, 0, - +4, -238, -40, -319, -743, 0 + -0, +237, +41, +315, +744, 0, + +0, -237, -41, -315, -744, 0 ], [ - -6, +239, +38, +319, +734, 0, - +6, -239, -38, -319, -734, 0 + +3, +238, +38, +314, +734, 0, + -3, -238, -38, -314, -734, 0 ], [ - +4, +250, +39, +319, +720, 0, - -4, -250, -39, -319, -720, 0 + +4, +248, +40, +316, +721, 0, + -4, -248, -40, -316, -721, 0 ], [ - -1, +242, +45, +310, +735, 0, - +1, -242, -45, -310, -735, 0 + +1, +242, +46, +306, +734, 0, + -1, -242, -46, -306, -734, 0 ], [ - +15, +239, +40, +307, +737, 0, - -15, -239, -40, -307, -737, 0 + +15, +238, +41, +303, +738, 0, + -15, -238, -41, -303, -738, 0 ], [ - +3, +240, +40, +319, +748, 0, - -3, -240, -40, -319, -748, 0 + +5, +239, +40, +316, +748, 0, + -5, -239, -40, -316, -748, 0 ], [ - -11, +241, +38, +321, +757, 0, - +11, -241, -38, -321, -757, 0 + -6, +241, +38, +317, +756, 0, + +6, -241, -38, -317, -756, 0 ], ], [ [ - +38, +29, +13, +57, +67, 0, - -38, -29, -13, -57, -67, 0 + +34, +29, +14, +57, +67, 0, + -34, -29, -14, -57, -67, 0 ], [ - +54, +52, +36, +94, +145, 0, - -54, -52, -36, -94, -145, 0 + +47, +51, +36, +94, +144, 0, + -47, -51, -36, -94, -144, 0 ], [ - +48, +43, +32, +74, +175, 0, - -48, -43, -32, -74, -175, 0 + +43, +43, +33, +74, +174, 0, + -43, -43, -33, -74, -174, 0 ], [ - +39, +12, +1, +29, +105, 0, - -39, -12, -1, -29, -105, 0 + +28, +12, +2, +29, +104, 0, + -28, -12, -2, -29, -104, 0 ], [ - +46, +45, +32, +84, +173, 0, - -46, -45, -32, -84, -173, 0 + +42, +44, +33, +84, +171, 0, + -42, -44, -33, -84, -171, 0 ], [ - +46, +33, +25, +56, +152, 0, - -46, -33, -25, -56, -152, 0 + +31, +33, +26, +57, +151, 0, + -31, -33, -26, -57, -151, 0 ], [ - +48, +57, +45, +108, +214, 0, - -48, -57, -45, -108, -214, 0 + +48, +57, +45, +108, +213, 0, + -48, -57, -45, -108, -213, 0 ], [ - +39, +51, +35, +103, +153, 0, - -39, -51, -35, -103, -153, 0 + +38, +51, +36, +103, +152, 0, + -38, -51, -36, -103, -152, 0 ], [ - +49, +28, +1, +27, +107, 0, - -49, -28, -1, -27, -107, 0 + +37, +28, +2, +28, +106, 0, + -37, -28, -2, -28, -106, 0 ], [ - +42, +35, +7, +18, +146, 0, - -42, -35, -7, -18, -146, 0 + +27, +35, +8, +19, +145, 0, + -27, -35, -8, -19, -145, 0 ], [ - +45, +29, -8, -2, +177, 0, - -45, -29, +8, +2, -177, 0 + +20, +29, -7, -1, +176, 0, + -20, -29, +7, +1, -176, 0 ], [ - +45, +23, +6, -5, +190, 0, - -45, -23, -6, +5, -190, 0 + +28, +23, +7, -4, +188, 0, + -28, -23, -7, +4, -188, 0 ], [ - +47, +40, +15, +33, +182, 0, - -47, -40, -15, -33, -182, 0 + +29, +40, +16, +35, +180, 0, + -29, -40, -16, -35, -180, 0 ], [ - +58, +71, +54, +91, +166, 0, - -58, -71, -54, -91, -166, 0 + +47, +71, +55, +91, +165, 0, + -47, -71, -55, -91, -165, 0 ], [ - +41, +64, +46, +87, +136, 0, - -41, -64, -46, -87, -136, 0 + +36, +64, +47, +88, +135, 0, + -36, -64, -47, -88, -135, 0 ], [ - +4, +8, -26, -9, +33, 0, - -4, -8, +26, +9, -33, 0 + +17, +8, -27, -11, +34, 0, + -17, -8, +27, +11, -34, 0 ], [ - -18, +2, -39, +14, +11, 0, - +18, -2, +39, -14, -11, 0 + +2, +2, -40, +12, +13, 0, + -2, -2, +40, -12, -13, 0 ], [ - -25, +3, -45, +10, +14, 0, - +25, -3, +45, -10, -14, 0 + +0, +3, -46, +9, +16, 0, + -0, -3, +46, -9, -16, 0 ], [ - -20, +4, -48, +20, +13, 0, - +20, -4, +48, -20, -13, 0 + -3, +4, -49, +20, +15, 0, + +3, -4, +49, -20, -15, 0 ], [ - -14, +2, -55, +16, +12, 0, - +14, -2, +55, -16, -12, 0 + +4, +2, -57, +15, +14, 0, + -4, -2, +57, -15, -14, 0 ], [ - -17, -3, -46, +10, +16, 0, - +17, +3, +46, -10, -16, 0 + -2, -3, -48, +11, +16, 0, + +2, +3, +48, -11, -16, 0 ], [ - -6, +5, -29, +3, +11, 0, - +6, -5, +29, -3, -11, 0 + +13, +5, -30, +3, +13, 0, + -13, -5, +30, -3, -13, 0 ], [ - -16, +5, -21, -2, +6, 0, - +16, -5, +21, +2, -6, 0 + +4, +5, -21, -2, +8, 0, + -4, -5, +21, +2, -8, 0 ], ], ]; @@ -205,191 +205,191 @@ internal static class TunableEvalParameters [ [ [ - +43, +225, +29, +568, +747, 0, - -43, -225, -29, -568, -747, 0 + +41, +226, +31, +570, +749, 0, + -41, -226, -31, -570, -749, 0 ], [ - +47, +255, +60, +611, +832, 0, - -47, -255, -60, -611, -832, 0 + +46, +256, +61, +613, +833, 0, + -46, -256, -61, -613, -833, 0 ], [ - +56, +282, +87, +654, +851, 0, - -56, -282, -87, -654, -851, 0 + +57, +282, +88, +655, +853, 0, + -57, -282, -88, -655, -853, 0 ], [ - +42, +249, +35, +580, +754, 0, - -42, -249, -35, -580, -754, 0 + +47, +249, +35, +581, +756, 0, + -47, -249, -35, -581, -756, 0 ], [ - +42, +262, +65, +621, +833, 0, - -42, -262, -65, -621, -833, 0 + +46, +262, +65, +621, +837, 0, + -46, -262, -65, -621, -837, 0 ], [ - +44, +265, +58, +639, +848, 0, - -44, -265, -58, -639, -848, 0 + +48, +264, +58, +639, +849, 0, + -48, -264, -58, -639, -849, 0 ], [ - +62, +341, +141, +758, +1064, 0, - -62, -341, -141, -758, -1064, 0 + +59, +342, +143, +760, +1066, 0, + -59, -342, -143, -760, -1066, 0 ], [ - +36, +245, +54, +633, +869, 0, - -36, -245, -54, -633, -869, 0 + +35, +246, +55, +634, +869, 0, + -35, -246, -55, -634, -869, 0 ], [ - +59, +256, +59, +619, +797, 0, - -59, -256, -59, -619, -797, 0 + +58, +258, +61, +621, +798, 0, + -58, -258, -61, -621, -798, 0 ], [ - +69, +286, +79, +659, +838, 0, - -69, -286, -79, -659, -838, 0 + +68, +287, +80, +660, +840, 0, + -68, -287, -80, -660, -840, 0 ], [ - +72, +310, +101, +687, +873, 0, - -72, -310, -101, -687, -873, 0 + +70, +311, +102, +688, +875, 0, + -70, -311, -102, -688, -875, 0 ], [ - +71, +309, +95, +692, +887, 0, - -71, -309, -95, -692, -887, 0 + +68, +309, +96, +693, +889, 0, + -68, -309, -96, -693, -889, 0 ], [ - +63, +288, +80, +668, +880, 0, - -63, -288, -80, -668, -880, 0 + +59, +289, +81, +668, +881, 0, + -59, -289, -81, -668, -881, 0 ], [ - +56, +275, +65, +654, +886, 0, - -56, -275, -65, -654, -886, 0 + +52, +277, +67, +656, +887, 0, + -52, -277, -67, -656, -887, 0 ], [ - +51, +248, +47, +631, +858, 0, - -51, -248, -47, -631, -858, 0 + +48, +249, +49, +633, +858, 0, + -48, -249, -49, -633, -858, 0 ], [ - +60, +216, +19, +555, +688, 0, - -60, -216, -19, -555, -688, 0 + +57, +219, +22, +560, +689, 0, + -57, -219, -22, -560, -689, 0 ], [ - +80, +203, -10, +542, +650, 0, - -80, -203, +10, -542, -650, 0 + +67, +209, -6, +550, +652, 0, + -67, -209, +6, -550, -652, 0 ], [ - +82, +199, -18, +521, +645, 0, - -82, -199, +18, -521, -645, 0 + +68, +205, -13, +529, +646, 0, + -68, -205, +13, -529, -646, 0 ], [ - +81, +206, -20, +517, +634, 0, - -81, -206, +20, -517, -634, 0 + +66, +211, -16, +524, +636, 0, + -66, -211, +16, -524, -636, 0 ], [ - +76, +200, -29, +511, +643, 0, - -76, -200, +29, -511, -643, 0 + +60, +203, -27, +517, +644, 0, + -60, -203, +27, -517, -644, 0 ], [ - +67, +183, -44, +504, +647, 0, - -67, -183, +44, -504, -647, 0 + +52, +189, -40, +510, +648, 0, + -52, -189, +40, -510, -648, 0 ], [ - +73, +191, -27, +523, +654, 0, - -73, -191, +27, -523, -654, 0 + +61, +195, -23, +530, +654, 0, + -61, -195, +23, -530, -654, 0 ], [ - +69, +206, -10, +538, +658, 0, - -69, -206, +10, -538, -658, 0 + +61, +209, -6, +543, +658, 0, + -61, -209, +6, -543, -658, 0 ], ], [ [ - +43, +12, -17, +66, +132, 0, - -43, -12, +17, -66, -132, 0 + +51, +11, -18, +66, +130, 0, + -51, -11, +18, -66, -130, 0 ], [ - +63, +46, +24, +127, +221, 0, - -63, -46, -24, -127, -221, 0 + +61, +46, +23, +126, +220, 0, + -61, -46, -23, -126, -220, 0 ], [ - +67, +74, +52, +160, +240, 0, - -67, -74, -52, -160, -240, 0 + +67, +74, +50, +158, +238, 0, + -67, -74, -50, -158, -238, 0 ], [ - +49, +30, -7, +84, +92, 0, - -49, -30, +7, -84, -92, 0 + +54, +29, -9, +82, +90, 0, + -54, -29, +9, -82, -90, 0 ], [ - +60, +63, +28, +126, +210, 0, - -60, -63, -28, -126, -210, 0 + +59, +61, +26, +123, +206, 0, + -59, -61, -26, -123, -206, 0 ], [ - +57, +55, +26, +141, +192, 0, - -57, -55, -26, -141, -192, 0 + +62, +53, +24, +137, +189, 0, + -62, -53, -24, -137, -189, 0 ], [ - +89, +140, +114, +269, +446, 0, - -89, -140, -114, -269, -446, 0 + +79, +139, +113, +268, +445, 0, + -79, -139, -113, -268, -445, 0 ], [ - +70, +62, +32, +164, +281, 0, - -70, -62, -32, -164, -281, 0 + +66, +61, +31, +163, +279, 0, + -66, -61, -31, -163, -279, 0 ], [ - +45, +38, +4, +103, +151, 0, - -45, -38, -4, -103, -151, 0 + +49, +38, +3, +102, +151, 0, + -49, -38, -3, -102, -151, 0 ], [ - +55, +61, +31, +142, +176, 0, - -55, -61, -31, -142, -176, 0 + +58, +60, +30, +140, +175, 0, + -58, -60, -30, -140, -175, 0 ], [ - +60, +80, +49, +174, +199, 0, - -60, -80, -49, -174, -199, 0 + +62, +79, +47, +173, +198, 0, + -62, -79, -47, -173, -198, 0 ], [ - +59, +84, +45, +174, +213, 0, - -59, -84, -45, -174, -213, 0 + +60, +82, +43, +173, +210, 0, + -60, -82, -43, -173, -210, 0 ], [ - +50, +68, +35, +153, +215, 0, - -50, -68, -35, -153, -215, 0 + +56, +67, +33, +151, +213, 0, + -56, -67, -33, -151, -213, 0 ], [ - +48, +60, +23, +138, +249, 0, - -48, -60, -23, -138, -249, 0 + +49, +60, +22, +137, +249, 0, + -49, -60, -22, -137, -249, 0 ], [ - +55, +46, +12, +123, +247, 0, - -55, -46, -12, -123, -247, 0 + +55, +45, +11, +122, +247, 0, + -55, -45, -11, -122, -247, 0 ], [ - +54, -7, -32, +37, +56, 0, - -54, +7, +32, -37, -56, 0 + +42, -5, -30, +41, +59, 0, + -42, +5, +30, -41, -59, 0 ], [ - +60, -45, -36, +7, +8, 0, - -60, +45, +36, -7, -8, 0 + +39, -43, -31, +13, +14, 0, + -39, +43, +31, -13, -14, 0 ], [ - +60, -31, -29, +1, -4, 0, - -60, +31, +29, -1, +4, 0 + +42, -29, -25, +6, +1, 0, + -42, +29, +25, -6, -1, 0 ], [ - +55, -28, -30, +2, -22, 0, - -55, +28, +30, -2, +22, 0 + +37, -26, -26, +7, -18, 0, + -37, +26, +26, -7, +18, 0 ], [ - +51, -27, -37, -10, -13, 0, - -51, +27, +37, +10, +13, 0 + +32, -25, -33, -6, -10, 0, + -32, +25, +33, +6, +10, 0 ], [ - +50, -44, -47, -22, +6, 0, - -50, +44, +47, +22, -6, 0 + +33, -42, -43, -18, +10, 0, + -33, +42, +43, +18, -10, 0 ], [ - +56, -47, -39, -7, +16, 0, - -56, +47, +39, +7, -16, 0 + +42, -45, -35, -2, +20, 0, + -42, +45, +35, +2, -20, 0 ], [ - +56, -24, -35, +12, +19, 0, - -56, +24, +35, -12, -19, 0 + +40, -22, -32, +17, +22, 0, + -40, +22, +32, -17, -22, 0 ], ], ]; @@ -398,232 +398,232 @@ internal static class TunableEvalParameters [ [ 0, 0, 0, 0, 0, 0, 0, 0, - 26, -24, 30, -14, -100, -26, 51, 9, - -27, 43, 51, 48, 62, -5, -51, -31, - 8, 47, -18, -8, 2, -26, -10, -52, - 38, 26, 6, 20, 9, -7, -19, -38, - 28, 34, 21, -11, -13, -24, -35, -49, - 5, 84, 37, -2, 12, -21, -41, -46, + 21, -31, 19, -26, -107, -33, 42, -9, + -10, 51, 58, 51, 70, 3, -41, -17, + 13, 50, -15, -4, 5, -22, -9, -50, + 40, 27, 6, 19, 9, -7, -21, -41, + 29, 33, 20, -13, -15, -25, -37, -52, + 6, 84, 35, -4, 9, -21, -44, -49, 0, 0, 0, 0, 0, 0, 0, 0, ], [ 0, 0, 0, 0, 0, 0, 0, 0, - -21, -30, -47, 43, -10, 16, -33, -71, - 26, 2, 16, 40, 39, 29, -14, -42, - 66, 21, 4, -12, 2, -8, -8, -33, - 59, 12, 9, 8, -1, -4, -5, -28, - 49, 44, 1, -11, -17, -23, -44, -45, - 38, 55, 21, 14, -3, -24, -42, -36, + -30, -45, -60, 28, -19, 3, -46, -88, + 45, 17, 32, 51, 52, 41, 0, -23, + 68, 23, 6, -9, 4, -4, -5, -30, + 57, 11, 7, 7, -2, -5, -6, -29, + 47, 43, -1, -13, -19, -24, -45, -45, + 36, 52, 17, 11, -5, -24, -42, -37, 0, 0, 0, 0, 0, 0, 0, 0, ], [ 0, 0, 0, 0, 0, 0, 0, 0, - 74, 54, -23, -93, 12, -56, -46, -69, - -21, 22, -22, 43, 1, 35, -21, -41, - 46, 18, 5, 3, 4, 1, -10, -27, - 35, 31, 4, 13, 1, 1, -7, -24, - 45, 51, 3, -5, -8, -9, -33, -51, - 44, 60, 11, 18, 8, -6, -36, -39, + 63, 44, -28, -103, 4, -65, -60, -84, + -3, 38, -8, 55, 14, 47, -6, -23, + 49, 21, 7, 6, 5, 3, -8, -25, + 34, 29, 3, 12, -0, -1, -9, -26, + 43, 49, 1, -8, -10, -12, -36, -54, + 42, 57, 7, 14, 5, -8, -38, -41, 0, 0, 0, 0, 0, 0, 0, 0, ], [ 0, 0, 0, 0, 0, 0, 0, 0, - 45, 39, -22, 5, -39, -22, -40, -26, - -23, -16, 23, -26, -1, -4, -8, -18, - 3, -14, 10, -16, 23, 1, -11, -2, - 3, 6, 20, -5, 18, 8, 5, -1, - 3, 17, 14, -0, 25, -0, -12, -9, - 8, 24, 3, -0, 20, 10, -7, -13, + 40, 34, -24, 5, -53, -34, -48, -36, + -10, -2, 36, -17, 12, 6, 5, -3, + 5, -11, 13, -12, 26, 5, -9, -2, + 0, 5, 19, -6, 17, 7, 3, -5, + -1, 15, 12, -4, 22, -2, -15, -14, + 5, 22, -0, -4, 17, 8, -10, -16, 0, 0, 0, 0, 0, 0, 0, 0, ], [ 0, 0, 0, 0, 0, 0, 0, 0, - -29, -35, -8, -38, -63, -51, 26, 17, - -22, -18, 17, 11, -43, 27, -42, -35, - -1, 7, 2, 20, 4, 17, 14, -0, - 5, 1, 17, 21, 5, 20, 19, -1, - 8, -5, 5, 10, 3, 11, 8, -12, - 6, 9, 17, 16, 6, 17, 27, 6, + -44, -46, -15, -38, -72, -65, 16, 4, + -5, -2, 30, 21, -30, 39, -27, -17, + 2, 10, 5, 24, 6, 20, 16, 2, + 3, -1, 16, 20, 4, 18, 17, -4, + 6, -8, 3, 7, 0, 9, 6, -15, + 4, 7, 15, 12, 2, 15, 25, 5, 0, 0, 0, 0, 0, 0, 0, 0, ], [ 0, 0, 0, 0, 0, 0, 0, 0, - -31, -17, -47, 110, 39, -42, -124, 7, - -24, -29, -10, 22, 5, 6, -26, 24, - -22, -11, -10, -13, 16, 5, 18, 11, - -10, -18, 1, 6, 13, 7, 31, 9, - -15, -23, -8, 16, 13, 17, 26, 10, - -8, -14, -0, 31, 23, 21, 10, 6, + -47, -23, -57, 107, 41, -47, -135, -5, + -11, -14, 2, 33, 22, 20, -10, 39, + -22, -10, -6, -9, 19, 10, 20, 11, + -15, -21, -0, 5, 12, 7, 28, 5, + -20, -26, -10, 13, 12, 16, 22, 5, + -13, -17, -3, 27, 20, 19, 5, 2, 0, 0, 0, 0, 0, 0, 0, 0, ], [ 0, 0, 0, 0, 0, 0, 0, 0, - 4, -22, 30, -36, 32, -17, -6, -17, - -35, -13, 13, 11, -13, 30, 3, 26, - -18, -13, -12, -5, 1, 5, 7, 32, - -18, -15, -7, -5, 2, 7, 13, 35, - -25, -30, -21, -15, -7, -5, 23, 38, - -18, -22, -17, 13, 17, 12, 33, 25, + -22, -43, 10, -55, 13, -37, -21, -42, + -14, 5, 29, 25, 3, 46, 21, 46, + -13, -9, -8, 0, 4, 9, 11, 36, + -17, -14, -7, -5, 3, 7, 13, 35, + -25, -30, -21, -16, -7, -6, 23, 38, + -18, -22, -18, 11, 15, 11, 32, 24, 0, 0, 0, 0, 0, 0, 0, 0, ], [ 0, 0, 0, 0, 0, 0, 0, 0, - -30, 16, -23, 2, 36, 32, -63, -18, - -29, -2, 12, 13, 20, 10, 36, 4, - -21, -18, -8, -8, 8, 10, 6, 4, - -15, -18, -4, -0, 8, 9, 12, 20, - -24, -32, -20, -10, -6, 6, 5, 36, - -16, -20, -8, -3, 9, 18, 36, 26, + -46, 3, -34, -11, 24, 15, -74, -39, + -9, 14, 26, 25, 34, 24, 51, 22, + -18, -16, -5, -4, 10, 14, 8, 6, + -16, -19, -5, -1, 8, 9, 11, 18, + -25, -34, -20, -11, -6, 5, 4, 35, + -18, -21, -9, -4, 7, 18, 35, 24, 0, 0, 0, 0, 0, 0, 0, 0, ], [ 0, 0, 0, 0, 0, 0, 0, 0, - 67, 30, -28, -28, 64, -50, -26, -38, - 40, -53, 31, -5, 57, -61, -50, -21, - 49, 14, 42, 1, 8, -5, -4, -24, - 34, 18, 18, 17, 4, 11, -4, -38, - 13, 20, 16, 4, -14, -7, -33, -41, - 7, -23, 53, 14, 18, -21, -29, -48, + 62, 22, -36, -36, 54, -56, -38, -55, + 56, -40, 40, 1, 67, -49, -39, -7, + 53, 16, 45, 5, 11, -1, -2, -22, + 33, 18, 18, 16, 3, 10, -6, -41, + 11, 19, 14, 1, -17, -9, -35, -43, + 6, -23, 50, 12, 13, -23, -30, -50, 0, 0, 0, 0, 0, 0, 0, 0, ], [ 0, 0, 0, 0, 0, 0, 0, 0, - 11, 43, -118, 108, -20, -72, 24, 5, - -25, 11, 22, 17, 18, -14, 15, 4, - 18, 32, -3, 33, 12, 13, -17, -20, - -12, 0, 7, 22, 16, 16, -8, -14, - -5, -6, -1, 5, 3, 5, -33, -44, - -13, 6, -6, 23, 21, -6, -27, -46, + 4, 40, -123, 102, -29, -75, 14, -7, + -12, 25, 31, 23, 26, -3, 27, 17, + 20, 36, 0, 38, 16, 17, -14, -19, + -14, -1, 6, 21, 16, 15, -10, -17, + -8, -9, -3, 1, 1, 2, -36, -47, + -16, 3, -9, 21, 17, -8, -29, -48, 0, 0, 0, 0, 0, 0, 0, 0, ], [ 0, 0, 0, 0, 0, 0, 0, 0, - -44, 20, 22, 32, 29, -60, -12, -4, - -26, 15, 16, 42, 35, 51, 9, 9, - -27, -12, 19, 10, 28, 17, -10, -19, - -22, 5, 13, 15, 24, 3, -14, -21, - -15, 2, 4, 4, 8, 4, -13, -59, - -28, 4, 16, -22, 13, 9, -21, -49, + -55, 12, 22, 32, 28, -61, -16, -18, + -15, 26, 29, 49, 48, 60, 20, 21, + -26, -9, 23, 15, 33, 22, -9, -19, + -26, 3, 13, 15, 24, 3, -17, -27, + -20, -1, 1, -0, 5, 2, -18, -64, + -33, 2, 13, -24, 10, 7, -24, -54, 0, 0, 0, 0, 0, 0, 0, 0, ], [ 0, 0, 0, 0, 0, 0, 0, 0, - 8, -22, -1, 76, -145, 25, 42, -27, - -12, -9, 17, 43, 0, 53, 28, -19, - -32, -10, -4, 11, 12, 27, -5, -15, - -26, -21, 4, 24, 19, 25, 17, -14, - -31, -17, 3, 1, 11, 11, -11, -26, - -37, -13, 10, 7, 33, 22, -4, -25, + 2, -29, -4, 76, -144, 16, 36, -42, + -0, 3, 29, 52, 15, 65, 41, -7, + -32, -8, 0, 16, 16, 32, -2, -14, + -30, -23, 3, 23, 17, 25, 14, -19, + -37, -21, 1, -5, 6, 7, -15, -32, + -41, -16, 6, 4, 31, 19, -7, -29, 0, 0, 0, 0, 0, 0, 0, 0, ], [ 0, 0, 0, 0, 0, 0, 0, 0, - -18, -32, 1, 41, 111, -37, -108, 16, - -63, 17, 11, 11, 42, 20, 27, 2, - -17, -17, -9, 3, 21, 3, 22, 4, - -27, -17, 4, 18, 22, 11, 13, 9, - -33, -32, -1, 19, 9, 8, -2, -18, - -34, -21, 1, 9, 10, 10, 4, -12, + -26, -40, -3, 34, 105, -44, -118, 2, + -51, 28, 20, 19, 55, 33, 40, 17, + -16, -14, -5, 9, 25, 8, 26, 8, + -30, -20, 3, 17, 22, 11, 13, 8, + -38, -37, -5, 12, 5, 6, -5, -20, + -37, -24, -3, 5, 7, 9, 2, -13, 0, 0, 0, 0, 0, 0, 0, 0, ], [ 0, 0, 0, 0, 0, 0, 0, 0, - -17, -30, 14, -26, 55, -11, 41, -40, - -30, -31, -12, 12, 22, 39, 26, -17, - -19, -12, -13, 3, 13, 24, 17, 23, - -21, -18, -5, 9, 24, 17, 21, 9, - -27, -27, -18, -2, 5, 17, 13, -21, - -21, -25, -16, 9, 26, 56, -21, -13, + -31, -43, 6, -36, 45, -25, 25, -57, + -14, -17, 1, 22, 35, 54, 41, 1, + -17, -10, -10, 7, 17, 29, 20, 27, + -24, -20, -6, 7, 24, 17, 21, 9, + -31, -29, -20, -6, 3, 15, 12, -22, + -24, -27, -19, 5, 23, 55, -21, -13, 0, 0, 0, 0, 0, 0, 0, 0, ], [ 0, 0, 0, 0, 0, 0, 0, 0, - -3, -9, -8, -1, 22, 18, -22, -33, - -10, -14, 4, 47, 23, 26, 50, 14, - -26, -29, -24, -16, 21, 7, 20, -4, - -15, -21, -12, 4, 13, 30, 9, 17, - -28, -33, -23, -12, 4, 10, 20, -0, - -23, -29, -14, -2, 17, 42, 52, -59, + -17, -19, -21, -14, 9, -2, -36, -48, + 7, 3, 17, 57, 35, 39, 62, 31, + -22, -26, -21, -11, 23, 11, 23, -1, + -16, -21, -13, 4, 13, 30, 8, 17, + -29, -33, -24, -14, 3, 9, 19, -2, + -24, -29, -15, -5, 13, 41, 51, -59, 0, 0, 0, 0, 0, 0, 0, 0, ], [ 0, 0, 0, 0, 0, 0, 0, 0, - -52, -20, 57, 26, 51, 33, 3, 19, - -26, -14, 64, 81, -5, 46, 18, -37, - -28, 9, 83, 71, 17, -16, -40, -12, - -44, 53, 35, 31, -6, -57, -70, -49, - -60, 69, 75, 21, -5, -4, -54, -66, - -63, 81, 49, -17, -27, -97, -68, -53, + -61, -26, 40, 10, 48, 32, -0, 10, + -24, -5, 71, 85, -0, 47, 27, -42, + -27, 16, 86, 72, 17, -15, -46, -16, + -48, 48, 36, 30, -1, -59, -74, -53, + -62, 69, 76, 28, 2, -3, -53, -69, + -68, 84, 58, -9, -19, -90, -64, -56, 0, 0, 0, 0, 0, 0, 0, 0, ], [ 0, 0, 0, 0, 0, 0, 0, 0, - -52, 59, 90, 140, -43, -13, -5, 46, - -92, 13, 114, 93, 119, 85, 18, 22, - -60, 134, 126, 47, 57, 50, -73, 27, - -141, 2, 66, 16, -8, -56, -147, -61, - -109, 46, 57, 38, -27, -44, -119, -66, - -65, 129, 16, -28, -7, -114, -138, -139, + -59, 38, 75, 118, -49, -19, -12, 32, + -93, 6, 102, 76, 111, 91, 18, 11, + -56, 134, 121, 40, 53, 49, -63, 24, + -146, -5, 69, 18, -16, -54, -145, -58, + -96, 54, 68, 52, -6, -38, -113, -55, + -58, 144, 28, -32, -7, -98, -127, -126, 0, 0, 0, 0, 0, 0, 0, 0, ], [ 0, 0, 0, 0, 0, 0, 0, 0, - -118, 103, 89, 122, 4, 9, 65, 38, - 28, 39, 43, 161, 152, -26, 12, 13, - -98, 100, 45, 85, -2, 73, -28, -15, - -103, -11, 55, -28, 13, -11, -42, -79, - -63, -15, 68, 15, -30, -5, -132, -49, - -78, -42, 11, -51, -63, -80, -96, -78, + -139, 88, 69, 91, -19, -6, 51, 28, + 10, 25, 21, 153, 145, -26, 12, 4, + -103, 99, 39, 80, -7, 75, -19, -7, + -100, -9, 63, -24, 13, -7, -32, -69, + -55, -14, 66, 36, -11, 7, -119, -32, + -61, -29, 23, -47, -61, -59, -78, -63, 0, 0, 0, 0, 0, 0, 0, 0, ], [ 0, 0, 0, 0, 0, 0, 0, 0, - -49, 61, 90, 46, -19, 67, 34, 16, - 81, 68, 122, 51, 77, 86, 125, -8, - -25, 33, 51, -16, 33, 43, -11, -8, - -71, -47, 27, 9, 23, -85, -89, -76, - -94, 13, 36, 10, 40, 30, -49, -37, - -92, -108, 31, -33, -88, -91, -136, -69, + -59, 56, 73, 21, -23, 63, 36, 8, + 74, 58, 121, 51, 78, 81, 128, -18, + -27, 34, 53, -15, 34, 41, -14, -7, + -76, -45, 25, 8, 24, -91, -95, -78, + -82, 13, 44, 18, 46, 35, -47, -30, + -84, -94, 45, -33, -83, -79, -126, -65, 0, 0, 0, 0, 0, 0, 0, 0, ], [ 0, 0, 0, 0, 0, 0, 0, 0, - 52, 46, -33, 113, 4, 86, -4, -55, - 32, 91, 94, 127, 34, 55, 68, 42, - -101, 1, 35, 47, 37, -1, 18, 3, - -59, -1, 22, 9, 34, -34, 1, -40, - -134, -74, -7, 42, -20, 28, -26, -100, - -86, -108, -10, -60, -6, 2, -103, -61, + 37, 28, -45, 102, 4, 74, -19, -63, + 22, 75, 89, 113, 34, 61, 64, 39, + -102, -8, 38, 39, 46, -2, 8, 4, + -53, -1, 24, 11, 34, -37, 2, -33, + -123, -59, 4, 60, -11, 31, -16, -91, + -78, -94, 1, -61, -7, 6, -96, -51, 0, 0, 0, 0, 0, 0, 0, 0, ], [ 0, 0, 0, 0, 0, 0, 0, 0, - -26, -10, 34, 39, 47, 28, -35, -19, - -28, 20, 0, 58, 144, 133, 75, 54, - -68, -27, 22, 104, 102, 159, 99, 47, - -128, -40, -22, 23, -24, 58, 22, -81, - -104, -73, -34, -52, 15, 54, 28, -28, - -130, -139, -8, -51, -2, -63, -83, -88, + -33, -24, 32, 28, 45, 17, -44, -28, + -27, 12, -3, 49, 142, 129, 75, 57, + -74, -36, 18, 97, 98, 158, 87, 47, + -123, -43, -22, 35, -25, 55, 13, -82, + -94, -68, -21, -29, 24, 58, 27, -24, + -124, -124, 13, -47, 4, -56, -80, -90, 0, 0, 0, 0, 0, 0, 0, 0, ], [ 0, 0, 0, 0, 0, 0, 0, 0, - -79, -58, 24, 44, 86, 187, 5, -39, - -13, -17, 1, 115, 80, 180, 59, -52, - -16, 8, 49, -69, 130, 106, 10, -32, - -55, -60, -62, -10, 79, 70, 44, -64, - -97, -84, -26, -26, 32, 24, 18, -47, - -95, -88, -87, -80, 2, 1, -17, -81, + -84, -62, 11, 39, 80, 169, -9, -57, + -8, -20, -3, 98, 73, 182, 56, -52, + -17, 2, 52, -70, 129, 105, 19, -24, + -55, -61, -63, -12, 74, 67, 42, -64, + -89, -80, -17, -12, 41, 31, 21, -40, + -85, -80, -82, -76, 8, 10, -10, -78, 0, 0, 0, 0, 0, 0, 0, 0, ], [ 0, 0, 0, 0, 0, 0, 0, 0, - 31, -4, 66, 33, 37, 51, -71, 31, - -13, 64, -34, -4, 75, 143, 42, 12, - -86, -54, -83, 64, 67, 144, 57, -48, - -36, -63, -70, 11, 57, 132, 58, -43, - -107, -67, -36, -13, 24, 21, 74, -53, - -126, -124, -76, -39, 2, -39, 41, -50, + 20, -13, 56, 23, 25, 34, -94, 18, + -15, 56, -46, -14, 67, 139, 37, 15, + -83, -49, -83, 62, 61, 148, 57, -35, + -36, -62, -73, 19, 60, 130, 61, -39, + -94, -60, -30, 1, 34, 29, 79, -50, + -114, -113, -66, -41, 4, -30, 46, -42, 0, 0, 0, 0, 0, 0, 0, 0, ], ]; @@ -632,232 +632,232 @@ internal static class TunableEvalParameters [ [ 0, 0, 0, 0, 0, 0, 0, 0, - 102, 26, -5, -33, 30, -47, -112, -48, - 93, 53, 14, -15, -37, -2, 11, 31, - 27, 15, 20, 4, -10, -2, -6, 20, - -11, -0, 6, -6, -19, -10, -14, 3, - -30, -17, -9, -2, -2, -8, -3, 9, - -40, -5, 7, 29, -29, 5, 6, 14, + 88, 13, -16, -42, 18, -59, -123, -58, + 90, 51, 15, -13, -38, -1, 10, 27, + 27, 16, 21, 7, -8, -1, -4, 22, + -7, 3, 9, -2, -16, -8, -13, 5, + -26, -12, -5, 3, 2, -7, -2, 10, + -33, -0, 12, 38, -23, 8, 6, 17, 0, 0, 0, 0, 0, 0, 0, 0, ], [ 0, 0, 0, 0, 0, 0, 0, 0, - 28, 43, 55, -100, -16, -79, -50, 4, - 48, 89, 35, -17, -17, -23, 43, 46, - 6, 0, 7, -3, -5, -3, -4, 15, - -14, -16, -4, -14, -13, -15, -11, 5, - -17, -27, -1, -6, 8, 2, 7, 12, - -24, -15, 5, -13, -5, 7, 25, 24, + 15, 31, 44, -110, -29, -91, -61, -8, + 42, 85, 28, -20, -22, -27, 37, 38, + 9, 2, 9, 1, 0, 0, -1, 18, + -9, -12, -0, -10, -8, -9, -6, 8, + -12, -21, 4, -1, 13, 7, 11, 15, + -19, -10, 9, -8, 1, 11, 28, 27, 0, 0, 0, 0, 0, 0, 0, 0, ], [ 0, 0, 0, 0, 0, 0, 0, 0, - -36, 30, -46, 1, -68, -16, -11, -16, - 42, 46, 18, -25, 14, -7, 29, 34, - 7, 15, -4, -5, -3, -6, -7, 15, - -8, -9, -11, -9, -5, -7, -10, 10, - -17, -16, -8, -0, 3, -3, 6, 21, - -2, -20, 13, -7, 12, 9, 24, 36, + -51, 14, -64, -14, -81, -31, -22, -29, + 39, 42, 14, -26, 14, -8, 24, 30, + 8, 17, -3, -2, 1, -2, -1, 20, + -4, -5, -8, -6, -1, -1, -4, 16, + -12, -12, -5, 4, 7, 3, 12, 27, + 1, -16, 16, -2, 16, 14, 29, 41, 0, 0, 0, 0, 0, 0, 0, 0, ], [ 0, 0, 0, 0, 0, 0, 0, 0, - -16, -12, -11, 23, 27, -48, -30, -29, - 40, 41, 23, 15, 21, 8, 24, 39, - 6, 4, -13, -26, -20, -10, 3, 1, - -1, -5, -20, -10, -6, -17, -12, -6, - -3, -12, -5, -4, -3, -6, -8, 0, - 7, 2, 3, 18, 2, 2, 7, 16, + -37, -34, -32, 2, 13, -63, -46, -46, + 40, 40, 25, 19, 21, 10, 24, 38, + 8, 6, -11, -23, -17, -9, 6, 4, + 4, -0, -15, -4, -2, -12, -7, -1, + 3, -7, 1, 5, 4, -1, -3, 6, + 10, 6, 7, 25, 7, 7, 11, 19, 0, 0, 0, 0, 0, 0, 0, 0, ], [ 0, 0, 0, 0, 0, 0, 0, 0, - -7, -9, -26, 45, -7, -17, -30, 3, - 24, 20, 10, -14, 11, 2, 34, 31, - 4, -18, -10, -18, -12, -21, -13, 5, - -5, -3, -13, -3, -1, -10, -14, -3, - -1, 2, 7, 8, 4, -6, -13, -7, - 12, 13, 22, 9, 22, -8, -5, 3, + -25, -28, -42, 24, -22, -30, -43, -12, + 23, 18, 10, -9, 12, 4, 34, 29, + 5, -17, -9, -15, -10, -19, -10, 7, + -1, 1, -9, 2, 3, -5, -9, 2, + 5, 8, 11, 14, 9, 0, -8, -2, + 16, 18, 26, 14, 28, -3, -0, 6, 0, 0, 0, 0, 0, 0, 0, 0, ], [ 0, 0, 0, 0, 0, 0, 0, 0, - 0, -23, -15, -58, -13, -17, 68, -23, - 18, 16, 0, -12, -15, -8, 56, 13, - 21, 4, -7, -4, -19, -16, -4, 12, - 6, 7, -6, -9, -6, -15, -16, -8, - 11, 10, 2, -10, 3, -11, -13, -6, - 21, 20, 14, 16, 8, 5, -6, 7, + -17, -44, -32, -76, -36, -34, 53, -36, + 18, 17, 1, -9, -14, -9, 55, 13, + 24, 7, -5, -1, -18, -16, -2, 15, + 12, 12, -1, -4, -3, -12, -10, -3, + 17, 16, 7, -3, 6, -7, -6, -0, + 27, 25, 18, 22, 12, 8, -0, 12, 0, 0, 0, 0, 0, 0, 0, 0, ], [ 0, 0, 0, 0, 0, 0, 0, 0, - 7, 16, -55, -5, -33, 14, 22, 60, - 32, 7, -15, -24, -3, 3, 30, 52, - 10, -4, -9, -17, -13, -11, -4, 3, - 3, -5, -10, -5, -6, -13, -16, -20, - 7, 2, 2, 8, 2, -2, -25, -28, - 17, 17, 13, 8, 23, 8, -19, -25, + -8, 0, -72, -21, -50, -1, 2, 47, + 29, 4, -18, -24, -4, 1, 26, 48, + 13, 0, -5, -13, -9, -8, -1, 7, + 8, 0, -5, 0, -1, -7, -11, -15, + 11, 6, 7, 13, 7, 3, -20, -23, + 21, 22, 17, 13, 28, 13, -14, -20, 0, 0, 0, 0, 0, 0, 0, 0, ], [ 0, 0, 0, 0, 0, 0, 0, 0, - 49, -31, 12, -42, -20, -17, 49, 44, - 35, 13, 5, -3, -3, 10, 26, 39, - 11, 3, -14, -18, -12, -7, -12, 1, - 3, -12, -14, -11, -15, -6, -20, -23, - 3, -2, -2, -0, 2, -5, -15, -25, - 10, 8, 11, 26, 19, 16, -25, -40, + 34, -49, -5, -54, -33, -28, 37, 37, + 30, 8, -1, -6, -7, 6, 21, 36, + 14, 6, -11, -14, -9, -5, -7, 4, + 7, -9, -10, -6, -10, -2, -14, -17, + 7, 2, 1, 4, 7, -0, -10, -19, + 14, 11, 14, 33, 26, 21, -21, -33, 0, 0, 0, 0, 0, 0, 0, 0, ], [ 0, 0, 0, 0, 0, 0, 0, 0, - 3, -19, 30, -21, -60, -30, -49, -34, - 49, 69, 26, 10, -20, 12, 8, 16, - 17, 22, 3, 2, -5, -10, -8, 6, - 6, 3, 4, -2, -9, -16, -17, 2, - -0, -7, 1, -7, -0, -7, -6, 3, - 4, 5, -1, -3, -4, 6, 8, 21, + -15, -39, 13, -36, -74, -44, -62, -49, + 49, 70, 30, 15, -16, 14, 10, 16, + 18, 24, 5, 5, -2, -7, -5, 8, + 10, 6, 8, 3, -4, -11, -13, 5, + 3, -4, 5, -2, 5, -2, -2, 5, + 7, 7, 2, 1, 0, 10, 10, 23, 0, 0, 0, 0, 0, 0, 0, 0, ], [ 0, 0, 0, 0, 0, 0, 0, 0, - -20, -20, 47, -44, -35, -35, -5, -51, - 34, 52, 29, 6, -5, 1, 7, 11, - 16, 8, 9, -9, -6, -13, 4, 3, - 10, 16, -11, -7, -7, -11, -7, -0, - 4, 2, 0, -11, -4, -9, 2, 14, - 6, 7, -5, -4, -3, 1, 9, 26, + -39, -40, 28, -62, -52, -52, -20, -69, + 37, 54, 34, 13, 1, 4, 9, 12, + 18, 10, 11, -6, -4, -12, 6, 5, + 15, 20, -7, -3, -3, -7, -4, 2, + 10, 7, 5, -5, 1, -5, 5, 17, + 11, 11, -1, 1, 2, 4, 12, 28, 0, 0, 0, 0, 0, 0, 0, 0, ], [ 0, 0, 0, 0, 0, 0, 0, 0, - -2, -27, -15, -41, -33, -18, -22, -12, - 32, 23, 18, -8, 14, -4, 5, 19, - 18, 11, -3, -2, -8, -11, -2, 3, - 13, 7, -1, -9, -6, -4, -3, 1, - 8, 1, -1, -9, -5, -8, -4, 12, - 20, 3, -2, 14, 7, 0, 7, 22, + -19, -45, -33, -59, -49, -36, -38, -28, + 35, 27, 22, -0, 19, -1, 7, 21, + 19, 13, -1, 1, -6, -10, -0, 5, + 17, 11, 3, -5, -3, -1, 0, 4, + 13, 5, 3, -4, -1, -4, -0, 16, + 24, 7, 3, 18, 11, 4, 10, 25, 0, 0, 0, 0, 0, 0, 0, 0, ], [ 0, 0, 0, 0, 0, 0, 0, 0, - -8, -31, -10, -48, 42, -18, -16, -29, - 14, 6, 0, -2, 7, 8, 2, 15, - 12, 4, 0, -2, 3, -7, 3, 6, - 8, 6, -1, -10, -7, -8, -1, -2, - 10, 2, -0, -6, -3, -6, 2, 4, - 22, 12, 1, 6, -2, 3, 5, 12, + -28, -51, -29, -67, 24, -34, -32, -46, + 16, 8, 3, 4, 11, 11, 5, 17, + 12, 5, 2, 1, 5, -5, 5, 8, + 12, 9, 3, -5, -2, -4, 2, 2, + 14, 6, 5, 1, 3, -0, 6, 8, + 25, 15, 6, 11, 3, 8, 8, 16, 0, 0, 0, 0, 0, 0, 0, 0, ], [ 0, 0, 0, 0, 0, 0, 0, 0, - -5, -25, -19, -30, -49, -3, 54, -7, - 16, -3, -6, -1, -1, 19, 21, 29, - 1, -0, 0, -6, -1, 0, 2, 4, - 5, 0, -5, -6, -7, -5, -3, -4, - 7, 3, -2, -7, -8, -2, -5, -0, - 18, 11, 2, 8, 6, -3, -1, 4, + -24, -44, -39, -46, -66, -19, 39, -24, + 18, -1, -3, 6, 3, 21, 23, 31, + 2, 2, 2, -4, 1, 2, 4, 6, + 8, 3, -1, -2, -3, -1, 1, 1, + 11, 7, 3, 0, -3, 2, -1, 5, + 21, 15, 7, 13, 11, 1, 3, 8, 0, 0, 0, 0, 0, 0, 0, 0, ], [ 0, 0, 0, 0, 0, 0, 0, 0, - -14, -28, -38, -16, -32, 8, 43, 49, - 3, 2, -10, -9, -10, 13, 40, 50, - -1, -9, -8, -13, -4, 2, 7, 8, - -2, -7, -8, -7, -7, -3, -6, -2, - 1, -2, -2, -2, 2, -8, -8, -0, - 11, 7, 6, -1, 3, -0, 2, 1, + -32, -46, -56, -32, -49, -7, 28, 32, + 3, 3, -8, -4, -7, 14, 40, 49, + 0, -7, -5, -10, -0, 4, 10, 9, + 1, -4, -3, -2, -2, 1, -3, 1, + 4, 2, 4, 6, 8, -4, -5, 4, + 13, 10, 12, 5, 8, 4, 5, 5, 0, 0, 0, 0, 0, 0, 0, 0, ], [ 0, 0, 0, 0, 0, 0, 0, 0, - -23, -31, -27, -18, -23, -20, 39, 61, - 4, -8, 1, -14, -5, 17, 54, 57, - -1, -8, -13, -6, -12, 2, 9, 17, - -7, -12, -11, -14, -4, -3, 1, -10, - -1, -7, -3, -1, -2, 4, -12, -18, - 4, 5, -1, 12, 10, 3, 4, 11, + -39, -49, -43, -34, -38, -32, 26, 43, + 4, -10, 1, -11, -3, 17, 54, 54, + 1, -6, -10, -4, -9, 5, 11, 18, + -3, -9, -8, -9, 1, 1, 5, -7, + 3, -4, 2, 6, 4, 9, -8, -15, + 8, 8, 3, 18, 18, 8, 8, 15, 0, 0, 0, 0, 0, 0, 0, 0, ], [ 0, 0, 0, 0, 0, 0, 0, 0, - 38, 32, 48, -38, -85, -81, -86, -43, - 34, 101, 55, -11, -21, -34, -22, 8, - 26, 51, 11, -18, -9, -10, -11, -1, - 28, 30, 20, -4, -17, -7, -16, -6, - 16, 6, -10, -12, -3, -17, -4, 6, - 34, 12, -1, 6, -9, 9, -3, 11, + 25, 20, 37, -51, -98, -89, -98, -54, + 36, 104, 59, -6, -16, -30, -21, 14, + 27, 52, 13, -15, -6, -8, -9, 1, + 33, 36, 25, 0, -14, -5, -15, -4, + 22, 11, -7, -13, -3, -17, -4, 7, + 39, 14, -1, 6, -12, 7, -6, 11, 0, 0, 0, 0, 0, 0, 0, 0, ], [ 0, 0, 0, 0, 0, 0, 0, 0, - 25, -24, 33, -31, -40, -109, -120, -65, - 88, 73, 66, 43, -28, -36, -18, -30, - 87, 20, 48, 16, -21, -25, -6, -30, - 68, 21, 19, 1, -16, -16, -5, -18, - 36, 1, -1, -4, -12, -14, -9, -12, - 49, -13, -1, 15, -19, -0, 2, 13, + 20, -26, 29, -35, -45, -113, -126, -69, + 93, 79, 72, 52, -20, -32, -17, -27, + 87, 22, 53, 21, -16, -22, -7, -31, + 72, 27, 23, 4, -10, -13, -6, -21, + 34, 2, -1, -8, -15, -17, -14, -19, + 50, -16, -4, 12, -22, -4, -6, 8, 0, 0, 0, 0, 0, 0, 0, 0, ], [ 0, 0, 0, 0, 0, 0, 0, 0, - -3, -51, -26, -19, 13, -41, -124, -69, - 53, 65, 56, 40, 10, -3, -24, -16, - 59, 45, 39, 28, -2, -30, -16, -20, - 41, 27, 1, 16, -21, -19, -20, -12, - 15, 17, -10, 4, -20, -25, -7, -11, - 19, 7, -4, 41, 5, -17, 3, 5, + -8, -57, -30, -20, 12, -45, -130, -77, + 60, 72, 65, 47, 16, -0, -24, -13, + 62, 49, 43, 34, 3, -28, -16, -21, + 43, 31, 5, 19, -18, -17, -22, -14, + 13, 16, -8, -2, -24, -28, -11, -17, + 18, 5, -4, 40, 4, -21, -3, 2, 0, 0, 0, 0, 0, 0, 0, 0, ], [ 0, 0, 0, 0, 0, 0, 0, 0, - -60, -53, -4, -18, 5, -47, -79, -89, - 5, 44, 38, 40, 41, 30, -33, -6, - 26, 15, 41, 31, 15, -8, 5, -3, - 20, 21, 11, -3, -4, 1, 4, -3, - 23, -4, -5, -2, -4, -21, -7, -6, - 13, 7, -11, 6, 4, 1, 15, 5, + -65, -58, -3, -16, 4, -50, -85, -95, + 8, 49, 43, 45, 44, 34, -35, -3, + 27, 17, 45, 36, 18, -5, 5, -3, + 21, 22, 14, 2, -1, 5, 3, -3, + 19, -5, -4, -4, -4, -22, -10, -10, + 11, 3, -13, 8, 2, -0, 9, 2, 0, 0, 0, 0, 0, 0, 0, 0, ], [ 0, 0, 0, 0, 0, 0, 0, 0, - -94, -73, -28, -25, -4, -24, -30, -24, - -18, -10, 15, 26, 47, 32, 11, -5, - 12, 19, 5, 35, 27, 33, 9, 2, - 1, 2, 1, 13, -3, 21, 6, 6, - 11, -1, -9, 2, 0, 3, 1, 14, - 4, 8, -4, -23, -16, 4, 11, 10, + -97, -73, -30, -24, -5, -22, -28, -28, + -17, -5, 20, 32, 50, 35, 13, -3, + 10, 20, 7, 41, 30, 37, 11, 2, + -3, 1, 4, 14, 1, 24, 6, 4, + 4, -7, -11, -5, -1, 3, -3, 11, + -0, 1, -5, -22, -15, 5, 8, 8, 0, 0, 0, 0, 0, 0, 0, 0, ], [ 0, 0, 0, 0, 0, 0, 0, 0, - -74, -62, -74, -25, 15, -20, 19, -23, - -1, 0, 6, 11, 25, 15, 30, 35, - 2, -2, -15, -4, 29, -5, 22, 15, - 12, -2, -1, 7, 20, -2, 23, 16, - 2, -1, -10, -11, -1, -7, 1, 1, - 14, 14, -15, -6, -26, 14, 16, 23, + -80, -65, -80, -26, 13, -19, 20, -25, + -2, 2, 8, 17, 28, 19, 32, 36, + 2, 0, -11, 1, 36, -1, 27, 17, + 8, -3, 0, 5, 25, 4, 26, 17, + -5, -7, -13, -18, -0, -5, 2, -0, + 7, 5, -20, -11, -25, 15, 17, 24, 0, 0, 0, 0, 0, 0, 0, 0, ], [ 0, 0, 0, 0, 0, 0, 0, 0, - -74, -70, -62, -89, -23, -2, 22, 17, - -13, -9, 7, -18, 40, 42, 63, 74, - -22, -19, -24, 14, -8, 30, 57, 55, - -14, -12, -6, -9, -15, 11, 12, 40, - 4, -9, -25, -5, -19, 1, 2, 24, - 7, -1, -12, 8, -11, 4, 6, 34, + -83, -81, -67, -97, -28, -2, 19, 14, + -13, -7, 12, -12, 45, 46, 67, 78, + -23, -17, -21, 17, -4, 35, 56, 57, + -18, -13, -3, -8, -10, 16, 16, 42, + -2, -14, -27, -11, -19, 2, 4, 24, + 1, -8, -13, 10, -8, 4, 8, 36, 0, 0, 0, 0, 0, 0, 0, 0, ], [ 0, 0, 0, 0, 0, 0, 0, 0, - -99, -98, -4, -63, -66, 15, 82, -8, - 10, -42, -4, 17, 15, 56, 76, 3, - -6, -17, 6, -27, 21, 15, 67, 14, - -12, -24, 10, -11, 5, -8, 37, 26, - 7, -15, -20, -17, -8, -11, 20, 20, - 5, 4, 1, 23, -34, 9, 14, 16, + -110, -106, -9, -71, -74, 9, 78, -16, + 15, -39, 2, 21, 20, 62, 82, 6, + -4, -16, 10, -23, 27, 19, 71, 14, + -11, -23, 13, -10, 9, -3, 42, 29, + 3, -19, -22, -23, -9, -10, 22, 22, + 1, -2, -4, 19, -31, 8, 16, 17, 0, 0, 0, 0, 0, 0, 0, 0, ], ]; @@ -865,1872 +865,1872 @@ internal static class TunableEvalParameters internal static readonly short[][] MiddleGameKnightTable = [ [ - -107, -36, -23, -73, -82, -64, -4, -71, - 69, -11, -23, 62, 67, -34, 24, 1, - -20, 35, 111, 20, 42, 19, 7, -12, - 9, 69, 44, 67, 27, 3, 4, -53, - 35, 20, 39, 45, 10, 5, 33, -26, - 37, -3, 29, 9, 20, -11, -20, -29, - -18, 10, 37, 16, -14, -68, 17, -60, - 39, 12, -13, 8, -11, -46, -76, -93, - ], - [ - -29, -30, 46, -35, -82, -37, -148, -19, - 7, 5, 29, 62, 35, -9, -3, 21, - 5, 25, 54, 53, 6, 10, 18, 15, - -1, 36, 20, 33, 31, 6, 4, -10, - 17, 25, 10, 26, 13, 8, -13, -12, - 14, 10, 23, 14, 20, -5, 1, -27, - -31, 1, 4, 1, 1, -10, -28, -69, - -27, -57, 29, 12, 5, -5, -14, -55, - ], - [ - -77, -79, -51, -0, 98, 43, -90, -41, - -41, 16, 35, 51, 42, 10, -15, 11, - -20, 46, 23, 22, 40, 1, -13, -19, + -104, -33, -22, -76, -81, -67, -4, -70, + 68, -3, -26, 61, 67, -30, 22, 2, + -19, 37, 111, 21, 41, 19, 8, -11, + 9, 69, 44, 67, 26, 3, 3, -54, + 34, 20, 39, 44, 10, 3, 32, -26, + 36, -5, 30, 8, 21, -12, -21, -30, + -16, 10, 37, 16, -14, -69, 15, -58, + 32, 13, -12, 8, -10, -46, -75, -93, + ], + [ + -31, -30, 45, -36, -82, -37, -150, -19, + 7, 5, 29, 62, 36, -10, -3, 20, + 6, 26, 54, 53, 6, 11, 17, 15, + -1, 37, 20, 33, 31, 6, 4, -10, + 18, 25, 11, 26, 13, 8, -13, -12, + 13, 9, 23, 14, 20, -6, 1, -27, + -31, 1, 4, 1, 1, -10, -27, -69, + -27, -57, 29, 13, 5, -4, -14, -53, + ], + [ + -77, -80, -53, 1, 99, 45, -89, -40, + -39, 16, 35, 51, 42, 11, -15, 11, + -20, 46, 23, 21, 41, 1, -13, -19, -1, 14, 23, 31, 25, 18, 6, 20, - 15, 21, 10, 17, 4, 7, -7, 2, - -20, 2, 18, 9, 15, -11, 2, -28, - 7, -2, 6, -2, -2, -10, -32, -45, - -31, -4, -53, 31, -8, -8, -17, -14, - ], - [ - -133, -63, -48, -59, -62, -82, 27, -17, - -50, -43, 25, 27, 67, -23, -39, -4, - 89, -31, 0, 34, 4, -13, -2, -60, - 7, 5, 29, 18, 43, 12, 6, 21, - -14, 35, -0, 18, 16, 23, 12, 28, - -19, 16, 18, 28, 25, 5, 40, 8, - -53, -35, 20, 9, 6, -28, 68, -16, - 13, -8, 41, -20, 25, 14, -7, 47, - ], - [ - -53, -100, -106, -83, -44, 21, -11, -21, - -24, -9, 13, -31, 8, 43, -21, -34, - -32, 21, 23, 7, 31, -4, -3, -17, - 10, -1, 5, 16, 21, 29, 4, 9, - 3, 29, 11, 27, 11, 18, -0, 10, - -7, 12, 9, 34, 29, 16, 20, -4, - -25, 12, 14, 12, 21, 19, 16, -14, - 26, 10, 21, 17, -45, 10, 13, 6, - ], - [ - -81, -125, -29, -49, 6, -161, -13, -106, - -30, -5, 21, 33, -10, 9, -71, 4, - -9, -10, 14, 13, 14, 15, 75, -39, - 12, -10, 6, 34, 50, 53, 36, 2, - -31, -9, 8, 33, 33, 56, 27, 30, - -39, -17, 11, 45, 26, 30, 38, 25, - 14, -55, 36, 11, 11, 32, 14, -29, - 52, -34, -30, 16, 32, -34, 24, 28, - ], - [ - -67, -82, -35, -14, 56, -44, -24, -48, - 5, 3, 9, 18, 33, 46, 16, -35, - -14, 19, 33, 22, 43, 31, 4, -3, - 12, -1, 11, 18, 22, 23, 8, 9, - -4, 11, 4, 18, 1, 11, 6, 5, - -20, -1, -1, 16, 21, 10, 13, 1, - -29, -16, -7, 7, 7, -9, -2, -2, - -37, -12, -4, 8, -6, 19, -69, -12, - ], - [ - -125, -10, -142, -3, -119, 108, -66, 35, - 10, -10, 24, 1, 47, 78, 31, 27, - -32, 6, 30, 17, 45, 83, 27, 54, - -9, -12, 3, 23, 42, 29, 37, 3, - -19, 12, 8, 25, 6, 20, 31, 27, - -34, -17, -11, 13, 23, 2, 21, 7, + 15, 22, 11, 17, 4, 7, -8, 1, + -22, 1, 18, 9, 14, -11, 1, -28, + 7, -2, 6, -2, -2, -10, -32, -46, + -32, -4, -53, 31, -8, -7, -17, -13, + ], + [ + -132, -65, -49, -59, -57, -81, 26, -17, + -48, -43, 26, 26, 68, -22, -37, -3, + 91, -30, 0, 33, 5, -13, -3, -59, + 6, 5, 29, 19, 44, 12, 5, 22, + -15, 35, -0, 18, 15, 22, 11, 28, + -20, 15, 18, 27, 25, 4, 39, 7, + -52, -34, 19, 9, 5, -28, 66, -17, + 12, -7, 41, -20, 25, 15, -7, 47, + ], + [ + -54, -100, -107, -83, -42, 20, -13, -23, + -23, -8, 14, -31, 9, 43, -20, -34, + -32, 21, 23, 7, 32, -3, -2, -16, + 11, -1, 5, 17, 22, 30, 3, 9, + 4, 29, 11, 27, 11, 18, -1, 10, + -8, 11, 9, 34, 28, 16, 20, -4, + -25, 12, 14, 12, 21, 18, 16, -14, + 25, 10, 21, 17, -45, 10, 13, 6, + ], + [ + -84, -125, -29, -45, 4, -159, -14, -107, + -28, -4, 22, 34, -8, 11, -70, 10, + -10, -11, 15, 12, 16, 16, 77, -38, + 11, -9, 6, 34, 50, 54, 36, 1, + -31, -9, 8, 33, 32, 56, 25, 29, + -40, -18, 11, 44, 26, 29, 36, 24, + 14, -56, 35, 11, 11, 32, 12, -31, + 51, -34, -30, 16, 32, -35, 23, 27, + ], + [ + -68, -82, -35, -14, 57, -44, -26, -48, + 4, 2, 9, 17, 33, 46, 16, -34, + -13, 19, 32, 21, 44, 32, 3, -4, + 12, 0, 11, 19, 23, 23, 8, 9, + -4, 11, 5, 18, 0, 11, 6, 4, + -20, -2, -1, 16, 20, 10, 12, 2, + -29, -16, -7, 7, 7, -9, -2, -3, + -36, -11, -4, 8, -6, 19, -70, -12, + ], + [ + -124, -13, -142, -4, -119, 108, -66, 37, + 10, -10, 25, 0, 48, 76, 30, 27, + -31, 6, 30, 16, 46, 85, 26, 53, + -9, -11, 3, 23, 43, 29, 37, 4, + -19, 13, 9, 25, 6, 20, 31, 26, + -35, -18, -11, 12, 22, 2, 21, 7, -48, -26, -17, -11, -7, -7, -2, 7, - -77, -45, -28, -18, -22, -5, 27, -69, - ], - [ - -57, 17, 49, 29, -24, -65, -101, -70, - -50, -88, 85, 5, -106, 46, 15, -27, - -70, 49, 120, 66, 6, 33, 64, 38, - 47, 57, 53, 30, 55, 42, 27, -43, - -10, 48, 1, 37, 7, 3, 2, -21, - 21, 20, 13, 10, 33, 10, -3, -12, - -24, -20, 36, 12, 11, -33, -76, -11, - -21, -1, 6, 31, -35, -34, -37, -193, - ], - [ - -110, -64, 24, 32, -37, -32, -62, -114, - 83, -29, -98, 73, 44, 30, -58, -54, - 53, 35, 11, 55, 8, -2, 32, 29, - 43, 47, 47, 66, 34, 39, -14, 55, - 31, 41, 6, 25, 23, 9, -26, -34, - -1, 25, 31, 9, 3, -12, 7, -14, - -14, -40, 47, 29, -27, 3, -26, -40, - -74, -22, 14, -29, -19, -21, -45, -24, - ], - [ - -71, -52, -64, -2, 8, -67, -51, -68, - -67, 4, -48, -91, 58, -58, 6, 62, - 14, 16, 63, 42, -3, -9, -15, -68, - 51, -9, 20, 51, 62, 13, 9, 51, - 1, 48, 34, 50, 27, 19, 9, -24, - -7, 19, 22, 29, 33, 5, 5, -35, - 13, 4, 9, 26, 17, 22, -11, -19, - 7, 1, 14, 5, -20, -46, -2, -42, - ], - [ - -90, -20, -62, -35, -75, -97, -44, -119, - 15, -13, -27, -58, -92, 40, -6, -5, - 25, 39, 52, 29, 21, 78, -5, 22, - -1, 9, 38, 48, 50, 45, 4, 47, - -43, 7, 20, 51, 12, 29, 35, 21, - -23, 14, 19, 26, 37, 10, 14, 4, - 92, 28, -16, 14, 23, 21, 44, -49, - -79, -20, -42, -41, 15, -44, 12, -1, - ], - [ - -46, -94, -105, -129, -34, -37, -35, -42, - -27, -29, -42, -12, 20, -17, -85, -13, - -21, 21, 32, 7, 56, 58, 12, 75, - 9, -16, 19, 32, 57, 51, 40, 17, - 11, -18, 29, 32, 33, 27, 49, 13, - -43, -5, 1, 14, 32, 43, 37, -1, - 10, -4, -7, 6, 16, 80, 10, 8, - -23, -33, -41, 3, -2, 16, 18, -32, - ], - [ - -94, -62, -26, 40, 134, -11, -76, -72, - -46, -52, -8, 54, -11, 17, -1, -63, - -44, -18, 30, 14, 39, 72, 42, 72, - -33, -10, 4, 38, 47, 55, 21, 34, - -27, -26, -3, 32, 20, 29, 9, 30, - -29, -17, 5, 20, 32, 9, 32, 26, - -45, -33, -38, -3, 2, 35, 35, -7, - -124, -37, -8, -33, -5, 7, 29, -4, - ], - [ - -187, -46, -119, 42, 12, 45, 37, 11, - -11, -16, -23, 76, 52, 91, -46, 147, - -55, -35, 21, 15, 15, 29, 42, 38, - -42, 3, 24, 29, 30, 39, 41, 22, - -32, -4, -6, 13, 21, 15, 30, 10, - -51, -25, -7, 24, 32, 6, 18, 20, - -96, -51, -32, -13, 1, -6, -27, 23, - -77, -39, -32, -8, -36, 24, 6, 19, - ], - [ - -12, 19, -15, 16, -9, -5, 7, -29, - 26, -9, 44, 18, 69, -33, 96, 25, - 26, 42, 36, 26, -40, -86, -20, -16, - 140, -11, 79, 64, 88, -26, 66, -18, - 25, -60, 63, -6, -14, -37, -65, 46, - -63, 31, 44, -9, -143, 5, -108, -13, - 104, 48, 38, -68, 3, -33, -38, -52, - 72, -36, -37, -8, 5, -85, -193, 30, - ], - [ - 78, -2, 38, 0, -6, 22, -9, -31, - 13, 14, 53, -1, 16, -3, -20, 9, - 14, -19, 9, 9, 48, -23, 0, -23, - 29, -18, 86, 96, -46, -32, -6, 35, - -2, -15, 24, -2, 34, -26, 8, -39, - 49, 54, -28, -15, 47, -89, -6, -28, - -4, 7, -63, -121, -15, 7, -3, 30, - -21, 6, -27, -36, 5, -47, -12, -1, - ], - [ - 3, 18, 6, 17, -6, -19, -14, 21, - -12, 28, -8, 12, 10, 5, 24, -41, - -54, 3, -41, 75, 86, -17, 70, -23, - 1, 37, 79, 73, 93, 34, 65, 8, - 28, -74, 37, 44, 124, -50, -11, -26, - -5, -41, -8, -60, -21, -40, -41, -6, - -33, -39, -29, -40, -104, 18, -10, 4, - -1, 15, -48, -10, 13, -19, -80, -19, - ], - [ - 3, -18, 60, 15, -22, 17, -11, 9, - -8, 9, -54, 27, 57, 4, -1, -1, - -2, 16, 29, 75, 124, 74, 23, -2, - 31, 32, 39, 95, -27, -26, 3, -32, - 32, -18, -22, -1, 157, -3, -27, 16, - -22, -51, -47, 6, -69, -32, -75, -9, - -42, -23, -55, -46, -42, 5, -22, -10, - -2, -9, -67, -6, 28, -39, -24, -19, - ], - [ - -31, -9, -10, 14, 3, 53, 1, 40, - 4, 0, 29, 41, 19, 4, -35, -32, - -14, -40, 16, -12, 86, 20, -42, -5, - -58, -5, -5, 58, 75, 10, 79, -19, - -6, 28, -6, 2, 87, 61, 47, -36, - 0, -55, -14, 1, -3, -36, 52, 14, - -37, -8, 0, -76, -21, 20, -14, -8, - -14, -102, -14, 23, -28, -53, -45, 5, - ], - [ - -20, 9, -1, -16, 24, 21, 10, -11, - -29, -21, 41, 17, 50, 59, 7, -38, - 16, 15, -7, -30, 141, -7, 82, -26, - 12, -6, 13, 14, -64, 18, 58, 20, - -46, 6, 18, -3, 38, 64, 38, 49, - -60, -30, -61, 70, -5, -66, -105, 12, - -16, -5, -46, -54, 1, -33, 11, 8, - -3, -63, -27, -33, -15, -12, -23, 39, - ], - [ - 7, -18, 32, 41, -20, 1, -3, 0, - -67, -22, 24, 62, 92, -17, 39, 35, - -28, 15, -21, -40, 65, 65, 87, 60, - -19, 62, 9, -70, 29, 25, -14, 41, - -11, -55, -15, -98, -21, 75, 51, 28, - -53, -3, -22, 45, -22, 5, -44, -22, - -3, 23, -14, -82, -23, -19, -4, -15, - 26, -45, -39, -57, -8, -39, -4, 17, - ], - [ - -13, 4, 1, -25, 38, -13, -0, 36, - 20, -10, -20, 40, 31, -5, -35, 17, - -47, -12, -25, 42, 92, 82, 60, 29, - -68, -14, 44, 29, 43, -1, 86, 23, - -52, -23, -29, -55, 53, 64, 59, 62, - -48, 24, 6, -32, -36, -45, -24, -34, - -48, -30, -21, -85, 14, 32, -18, -8, - 3, -89, 4, -9, -5, -10, -35, -16, + -76, -45, -28, -19, -22, -4, 28, -69, + ], + [ + -60, 17, 52, 29, -24, -64, -101, -68, + -48, -95, 84, 7, -107, 46, 14, -30, + -69, 50, 118, 67, 7, 33, 67, 38, + 47, 58, 53, 31, 56, 43, 27, -44, + -9, 49, 2, 37, 7, 3, 4, -22, + 21, 20, 13, 11, 34, 11, -3, -12, + -24, -20, 36, 12, 12, -33, -75, -11, + -24, -1, 4, 31, -35, -34, -36, -197, + ], + [ + -109, -65, 23, 32, -36, -32, -63, -115, + 84, -32, -98, 73, 45, 30, -54, -56, + 53, 36, 9, 54, 7, -1, 33, 28, + 41, 48, 47, 68, 34, 40, -15, 55, + 32, 39, 6, 25, 23, 9, -26, -33, + -2, 24, 31, 9, 4, -12, 8, -13, + -13, -41, 48, 29, -27, 3, -26, -39, + -73, -23, 14, -30, -19, -20, -45, -27, + ], + [ + -72, -54, -65, -1, 7, -68, -52, -67, + -66, 6, -45, -91, 60, -56, 8, 61, + 13, 14, 63, 40, -0, -9, -19, -68, + 52, -8, 20, 52, 61, 14, 8, 52, + 0, 45, 34, 50, 26, 19, 10, -23, + -7, 18, 22, 29, 34, 5, 6, -34, + 13, 3, 10, 26, 17, 22, -11, -22, + 8, 0, 14, 6, -20, -44, -1, -44, + ], + [ + -89, -20, -61, -37, -75, -99, -46, -118, + 16, -13, -27, -58, -91, 41, -4, -8, + 26, 39, 52, 29, 24, 78, -4, 21, + -0, 10, 38, 48, 51, 46, 3, 48, + -43, 6, 20, 51, 11, 28, 34, 20, + -23, 14, 19, 26, 37, 10, 14, 3, + 90, 27, -16, 13, 23, 20, 42, -49, + -80, -19, -42, -42, 13, -42, 12, 1, + ], + [ + -47, -91, -106, -127, -32, -36, -34, -43, + -28, -27, -42, -11, 21, -17, -84, -13, + -22, 21, 31, 7, 57, 57, 13, 74, + 8, -15, 20, 33, 58, 51, 39, 19, + 11, -19, 29, 31, 33, 27, 49, 13, + -43, -5, 3, 15, 33, 42, 37, -1, + 9, -4, -7, 5, 15, 81, 10, 6, + -28, -33, -42, 3, -3, 17, 18, -36, + ], + [ + -92, -62, -25, 38, 134, -10, -76, -73, + -47, -51, -6, 54, -9, 18, 1, -64, + -45, -18, 30, 14, 40, 72, 42, 72, + -34, -9, 5, 38, 48, 55, 21, 34, + -28, -26, -3, 32, 19, 29, 9, 30, + -30, -18, 5, 20, 32, 9, 32, 26, + -46, -34, -39, -3, 1, 35, 36, -8, + -124, -37, -9, -33, -5, 8, 30, -4, + ], + [ + -188, -49, -121, 42, 9, 44, 39, 6, + -12, -16, -22, 75, 53, 89, -47, 149, + -54, -35, 21, 15, 14, 29, 41, 37, + -42, 4, 25, 30, 31, 40, 42, 23, + -31, -3, -5, 13, 21, 16, 30, 10, + -51, -26, -6, 24, 32, 6, 18, 21, + -95, -50, -30, -13, 2, -6, -27, 21, + -76, -38, -32, -6, -35, 24, 6, 17, + ], + [ + -10, 19, -16, 16, -7, -6, 8, -30, + 25, -13, 45, 17, 68, -33, 100, 19, + 26, 43, 34, 34, -37, -85, -25, -15, + 144, -5, 82, 62, 86, -32, 67, -17, + 21, -61, 59, -8, -20, -39, -64, 47, + -59, 35, 44, -5, -143, -5, -110, -21, + 99, 51, 43, -69, 1, -32, -38, -47, + 81, -31, -38, -5, 6, -89, -198, 32, + ], + [ + 83, -4, 38, 2, -5, 23, -12, -30, + 14, 16, 56, 1, 14, 0, -19, 11, + 13, -17, 5, 9, 43, -22, 2, -25, + 31, -19, 84, 96, -49, -36, -10, 33, + -2, -19, 23, -9, 33, -24, 11, -39, + 50, 54, -32, -12, 46, -88, -6, -24, + -1, 9, -69, -123, -15, 10, -3, 33, + -20, 2, -26, -34, 6, -46, -11, 2, + ], + [ + 1, 15, 5, 17, -10, -18, -11, 22, + -13, 29, -9, 14, 9, 6, 27, -39, + -55, 2, -44, 73, 82, -12, 65, -23, + 4, 36, 73, 68, 96, 31, 67, 7, + 30, -71, 36, 37, 123, -49, -10, -27, + -3, -41, -6, -61, -25, -38, -42, -5, + -32, -39, -31, -33, -104, 18, -8, 6, + -0, 18, -44, -12, 16, -16, -83, -19, + ], + [ + 3, -18, 64, 14, -18, 19, -11, 8, + -8, 11, -57, 29, 55, 5, -2, 2, + -4, 14, 34, 75, 119, 73, 26, -3, + 31, 34, 36, 92, -27, -27, 6, -31, + 36, -18, -25, -10, 153, -3, -27, 18, + -22, -53, -51, 7, -67, -32, -76, -13, + -40, -20, -56, -50, -45, 4, -19, -8, + -1, -6, -69, -5, 32, -36, -25, -16, + ], + [ + -25, -9, -9, 9, 2, 52, 1, 36, + 6, -3, 30, 36, 12, 6, -35, -25, + -14, -42, 10, -9, 89, 26, -38, -12, + -58, -4, 1, 48, 77, 12, 75, -18, + -9, 24, -9, 12, 77, 61, 48, -35, + 2, -41, -15, -6, -4, -34, 55, 15, + -37, -8, -0, -76, -19, 22, -13, -6, + -14, -105, -13, 22, -28, -53, -39, 5, + ], + [ + -22, 9, 2, -19, 25, 26, 9, -6, + -28, -21, 41, 14, 50, 54, 6, -36, + 17, 16, -6, -39, 135, -11, 79, -24, + 13, -10, 14, 10, -66, 17, 56, 22, + -48, 4, 21, -8, 34, 64, 38, 48, + -50, -25, -66, 75, -1, -61, -98, 12, + -14, -1, -45, -55, 5, -32, 12, 8, + -0, -64, -29, -36, -14, -12, -25, 38, + ], + [ + 3, -18, 34, 43, -18, -0, -2, -3, + -65, -21, 23, 57, 90, -15, 35, 38, + -30, 16, -18, -35, 63, 61, 87, 62, + -21, 63, 6, -72, 25, 24, -16, 41, + -9, -53, -21, -93, -25, 73, 59, 28, + -56, -3, -24, 46, -28, 6, -45, -17, + -0, 25, -14, -78, -28, -22, -3, -15, + 27, -43, -37, -60, -8, -38, 1, 18, + ], + [ + -13, 4, 1, -24, 39, -13, 2, 37, + 21, -11, -21, 45, 29, -7, -32, 19, + -45, -10, -25, 43, 87, 82, 59, 33, + -67, -14, 44, 28, 33, -9, 86, 24, + -52, -23, -32, -55, 53, 62, 45, 62, + -46, 19, 10, -32, -36, -40, -24, -33, + -45, -28, -21, -73, 17, 30, -17, -9, + 3, -94, 3, -7, -4, -9, -32, -16, ], ]; internal static readonly short[][] EndGameKnightTable = [ [ - -16, -49, -0, 37, 46, -10, -72, -39, - 15, -81, 15, 1, -18, 34, -18, 35, - 7, -8, -39, 32, -8, -19, -41, 22, - -4, -22, -2, -4, 12, 13, 11, 26, - 26, 9, 28, 21, 18, 15, -27, 24, - -4, 8, 9, -4, 4, 12, 11, 44, - 32, 4, -15, -10, -3, 28, -34, -23, - -31, 42, 18, -36, 5, 18, -4, -41, - ], - [ - -72, -33, -46, 13, 56, 61, -23, -49, - 47, -16, -29, -36, -51, -13, 22, -59, - -12, -14, -53, -26, 14, -8, 16, -5, - 20, -0, -2, 15, 23, 26, 12, 14, - 16, -7, 18, 27, 21, 25, 31, 13, - 33, -10, -2, 11, 28, -7, 2, 17, - 56, -8, -6, 26, -1, -2, 16, 63, - -29, -37, -9, 8, -1, -36, 1, -48, - ], - [ - -88, 18, 18, -36, -72, -37, -51, -87, - -3, -5, -18, -55, -15, 16, -10, -29, - -14, 2, -1, 16, 9, 30, 15, -9, - 8, 5, 11, 11, 32, 16, 3, -6, - 7, 9, 28, 21, 36, 21, 4, -11, - 22, 19, -0, 24, 2, 20, 0, 37, - 7, 12, 12, 20, 29, 6, 10, 4, - -19, 4, -65, 3, 6, 14, 34, 11, - ], - [ - -15, 29, -36, -39, -7, -55, -3, -102, - -1, 12, -11, -29, -32, 30, -8, -14, - 8, 13, 16, -21, 18, 9, -14, 31, - -6, 14, -4, 2, -4, 14, 5, -8, - 16, -6, 6, -4, 1, 1, 27, -24, - -0, 5, 11, 5, 25, 3, -17, 28, - 32, 86, -19, 13, -6, 51, 14, 2, - -41, -2, 2, -31, 6, -5, 8, 25, - ], - [ - -68, -23, -39, 40, -38, -71, 52, -123, - 3, -3, 1, -1, -29, -6, 25, -50, - 5, 5, -11, 12, -17, 9, -7, -7, - 20, 17, 7, 39, 2, 12, -6, 6, - 42, -9, 25, 11, 8, 25, 25, -8, - -1, 16, 17, 10, 14, -7, 4, 18, - 18, 1, 34, -1, 16, 5, 5, -16, - -17, 5, 11, 28, -44, 36, 16, -40, - ], - [ - -62, 24, -26, 11, -33, 4, -15, -16, - -5, -15, -8, -25, 6, -26, 3, -3, - 23, 26, 18, 6, 19, -1, -13, 52, - 6, 11, 23, 6, 5, -1, -5, 11, - 14, 30, 10, -1, 6, -15, 6, -14, - 14, 11, -5, 6, 20, -15, -3, -26, - -15, 29, -11, 25, 2, 3, -5, 8, - -60, 7, 15, 12, 14, -47, 5, -19, - ], - [ - -27, 25, 7, -1, -38, -17, -22, -85, - 0, 15, 7, -4, -20, -20, -23, -16, - 17, 1, 11, 7, -10, -10, -16, 6, - 10, 21, 22, 34, 17, 11, 14, 4, - 14, 8, 23, 13, 22, 8, 5, 8, - 2, 5, 5, 15, 3, 0, -5, 14, - 8, 3, 2, 6, 19, -4, 7, 18, - -17, -6, -1, 9, 12, 15, -124, -9, - ], - [ - 1, 20, 35, 22, 24, -87, -10, -23, - -15, 8, -20, 8, -45, -21, -15, 1, - 27, -9, 17, -7, 1, -39, 5, -44, - 6, 8, 10, 27, 13, 16, 21, 4, - 4, -10, -1, 15, 21, -1, -7, 16, - -5, -15, 6, 8, 24, 15, 8, -7, - 1, -11, -8, 32, 12, 33, -24, 11, - -43, -6, -14, 1, 4, 11, 23, -28, - ], - [ - -68, 26, -29, 4, 4, 42, 8, -37, - 17, 37, -33, 9, 15, -27, -5, -23, - 34, -26, -33, -16, 9, -18, -45, -16, - -0, 5, 17, 3, -4, 10, -9, -11, - 22, -14, 30, 10, 22, 3, 0, 7, - 9, -17, -6, 8, 2, -15, -3, -26, - 4, 16, -6, 15, -2, 12, 28, 39, - 36, 21, 21, -14, 3, -32, -10, -8, - ], - [ - -44, -15, -4, -21, 31, 28, 7, -11, - -22, 3, 11, -15, 5, -30, 38, 11, - -10, 7, 7, -10, 15, 6, -29, -31, - 15, 1, 4, 9, 8, 2, 14, -15, - 5, 10, 13, 12, 11, 10, 2, -0, - -13, -1, -6, 11, 10, -4, -10, -16, - -10, 2, -9, -8, 15, -18, -1, 5, - -7, 6, 2, 19, -4, -11, 29, -8, - ], - [ - -9, -11, 15, -14, -7, 8, 5, -0, - -1, -1, 7, 24, -19, 13, 14, -4, - -4, 1, 6, 3, 12, 2, 3, -7, - -5, 14, 11, 6, 6, 12, 0, -10, - -3, 3, 9, 0, 1, 7, 1, 5, - -16, -1, -10, 1, -1, -5, -12, 17, - -15, -7, -6, 2, -7, -7, -6, -28, - 3, -14, -12, -4, 10, 5, 15, 7, - ], - [ - -45, -5, 24, 33, 24, 13, -26, -28, - 17, -6, 12, 21, 9, 6, 16, -17, - -14, -3, -3, -2, 4, -7, -9, -8, - 12, 3, -0, 3, 3, -3, 8, -6, - 18, -2, 11, 5, 8, 3, -0, 4, - -7, -13, -8, -6, -4, -9, 10, -5, - -57, -7, -4, -4, -4, 4, -25, -10, - -7, -10, 18, 27, 3, 18, 6, 19, - ], - [ - -25, -16, 22, 30, -2, 33, -45, 0, - -8, 11, 17, 22, 0, 11, 23, -6, - 6, -10, 3, 4, -4, -11, -3, -21, - -4, 13, 8, 11, 6, 2, 3, 5, - -5, 9, 3, 9, 6, 5, -2, -6, - 2, -0, -3, 9, -4, -14, -5, 5, - -27, -15, -12, 1, -7, -8, -1, -14, - -8, -17, -10, 5, -4, 4, -14, 40, - ], - [ - -13, 22, 7, -7, -45, 9, -5, -28, - 14, 17, -1, -6, 6, -17, 2, 1, - -5, 2, 2, 8, 2, -23, -13, -18, - 9, 6, 3, 5, 12, -0, 10, 1, - -0, 13, 13, 2, 14, 8, 13, 8, - -23, -3, -6, 6, -1, -6, -3, -6, - -6, -16, 11, -5, -2, -23, 33, 8, - 40, -24, -7, 9, 4, 3, -9, -4, - ], - [ - 23, 19, 4, 1, -11, 5, 14, -79, - -25, -8, 6, -24, 11, -28, 3, -43, - 4, 3, -2, 14, 17, 10, 1, -17, - -4, 4, 13, 13, 17, 23, 21, 21, + -15, -46, -0, 38, 48, -8, -71, -38, + 14, -81, 18, 4, -18, 34, -18, 36, + 5, -11, -39, 32, -8, -20, -42, 21, + -4, -22, -1, -3, 13, 13, 12, 27, + 26, 8, 28, 22, 18, 16, -26, 25, + -5, 9, 8, -3, 4, 13, 12, 43, + 32, 3, -15, -11, -5, 27, -34, -30, + -30, 42, 16, -39, 4, 17, -7, -37, + ], + [ + -71, -34, -44, 15, 57, 63, -18, -48, + 45, -16, -29, -35, -50, -12, 23, -59, + -14, -15, -53, -26, 15, -9, 18, -4, + 19, -1, -2, 15, 24, 26, 12, 13, + 17, -8, 17, 26, 21, 24, 32, 13, + 33, -10, -2, 12, 28, -6, 3, 17, + 56, -9, -6, 26, -1, -3, 15, 63, + -31, -36, -9, 7, -2, -38, 1, -52, + ], + [ + -86, 19, 16, -34, -72, -36, -53, -88, + -6, -5, -18, -56, -13, 15, -12, -32, + -15, -0, 1, 17, 10, 30, 16, -10, + 8, 5, 12, 12, 32, 17, 3, -6, + 7, 8, 27, 22, 37, 22, 4, -11, + 23, 20, 0, 25, 3, 20, 1, 38, + 4, 10, 13, 21, 29, 6, 10, 3, + -22, 4, -63, 4, 6, 13, 34, 9, + ], + [ + -11, 30, -32, -40, -3, -57, -1, -101, + -3, 11, -9, -29, -32, 31, -11, -13, + 8, 15, 15, -21, 17, 8, -15, 27, + -7, 14, -4, 2, -5, 14, 5, -9, + 17, -6, 7, -4, 1, 2, 29, -24, + -1, 5, 11, 5, 25, 3, -18, 27, + 28, 84, -18, 14, -5, 52, 16, 1, + -43, -2, 3, -29, 8, -8, 7, 21, + ], + [ + -70, -21, -38, 42, -36, -69, 56, -120, + 1, -5, -0, -1, -26, -6, 24, -50, + 4, 5, -11, 13, -17, 8, -7, -8, + 18, 16, 7, 39, 3, 13, -6, 5, + 42, -9, 25, 11, 9, 26, 25, -7, + -1, 16, 17, 10, 16, -7, 4, 18, + 16, -0, 32, -1, 17, 5, 4, -18, + -18, 4, 10, 28, -42, 36, 17, -43, + ], + [ + -61, 26, -25, 10, -32, 2, -12, -13, + -7, -15, -8, -24, 5, -27, 3, -8, + 24, 26, 18, 6, 17, -1, -13, 51, + 6, 10, 23, 6, 5, -1, -5, 10, + 14, 29, 9, -1, 6, -15, 8, -13, + 15, 12, -5, 6, 21, -15, -2, -24, + -16, 30, -11, 25, 2, 2, -3, 8, + -64, 7, 13, 11, 15, -45, 5, -22, + ], + [ + -25, 25, 8, -0, -38, -17, -18, -86, + -0, 15, 7, -3, -20, -20, -22, -16, + 16, 1, 11, 7, -10, -10, -16, 6, + 9, 20, 21, 34, 17, 11, 13, 4, + 13, 7, 23, 13, 22, 8, 5, 8, + 3, 6, 5, 16, 4, 0, -5, 14, + 8, 2, 1, 6, 19, -4, 7, 18, + -20, -6, -2, 8, 11, 15, -123, -10, + ], + [ + -0, 20, 35, 23, 24, -85, -7, -23, + -16, 8, -21, 8, -45, -20, -16, 0, + 28, -10, 17, -7, 0, -40, 5, -45, + 5, 7, 9, 27, 13, 16, 20, 3, + 3, -10, -2, 15, 21, -1, -7, 17, + -6, -14, 7, 9, 24, 16, 8, -7, + 1, -13, -8, 32, 12, 33, -23, 10, + -44, -6, -16, 2, 5, 11, 24, -26, + ], + [ + -65, 25, -31, 3, 2, 42, 5, -39, + 16, 38, -33, 7, 17, -28, -5, -23, + 34, -29, -33, -17, 8, -18, -46, -17, + -1, 4, 16, 2, -5, 9, -9, -10, + 20, -15, 29, 10, 22, 3, -0, 8, + 8, -17, -6, 8, 2, -15, -2, -25, + 4, 15, -6, 15, -2, 13, 29, 43, + 41, 21, 22, -12, 5, -29, -9, 1, + ], + [ + -43, -14, -5, -21, 30, 28, 7, -10, + -23, 3, 10, -14, 5, -29, 37, 11, + -10, 6, 8, -10, 15, 6, -30, -30, + 15, 1, 4, 8, 8, 1, 14, -16, + 4, 10, 12, 11, 10, 9, 1, -1, + -13, -2, -7, 11, 10, -4, -11, -16, + -6, 3, -9, -8, 15, -17, -0, 8, + -9, 6, 1, 19, -4, -11, 30, -6, + ], + [ + -9, -9, 16, -15, -7, 8, 3, 1, + -1, 0, 7, 25, -19, 14, 14, -3, + -4, 1, 7, 3, 11, 1, 4, -7, + -7, 13, 11, 6, 6, 11, -0, -10, + -4, 3, 9, 0, 1, 6, 1, 4, + -18, -2, -10, 0, -2, -6, -13, 16, + -11, -5, -5, 1, -7, -7, -5, -25, + 2, -13, -12, -5, 9, 4, 15, 9, + ], + [ + -45, -5, 24, 34, 24, 14, -25, -29, + 17, -6, 13, 22, 9, 7, 17, -16, + -13, -3, -3, -2, 4, -7, -10, -7, + 11, 3, -1, 3, 3, -3, 8, -6, + 17, -2, 11, 5, 8, 3, 0, 3, + -8, -14, -9, -7, -4, -9, 9, -5, + -54, -7, -3, -3, -4, 4, -25, -9, + -8, -11, 17, 27, 4, 18, 7, 17, + ], + [ + -26, -17, 23, 28, -3, 33, -46, 1, + -7, 10, 17, 22, -0, 11, 22, -6, + 6, -10, 4, 4, -4, -10, -3, -21, + -5, 13, 7, 10, 6, 2, 3, 4, + -6, 8, 3, 9, 5, 5, -3, -6, + 1, -1, -4, 9, -5, -15, -6, 5, + -23, -14, -12, 2, -8, -10, 0, -12, + -2, -16, -10, 5, -4, 4, -13, 45, + ], + [ + -15, 21, 6, -7, -46, 10, -6, -29, + 15, 17, -2, -6, 5, -17, 2, 1, + -5, 2, 2, 8, 1, -23, -13, -18, + 10, 6, 3, 4, 11, -0, 10, 0, + -0, 14, 13, 2, 14, 8, 12, 8, + -22, -2, -6, 6, -1, -6, -3, -6, + -3, -14, 12, -5, -1, -23, 33, 8, + 41, -24, -6, 11, 5, 3, -9, -3, + ], + [ + 22, 19, 5, 1, -12, 6, 13, -80, + -26, -8, 7, -24, 10, -28, 3, -44, + 3, 3, -2, 14, 17, 10, 1, -17, + -3, 3, 13, 13, 17, 22, 20, 21, -14, -6, 17, 15, 18, 32, 9, 13, - -6, -14, 0, -6, -3, 1, -17, 9, - 23, 12, -5, -9, -4, -12, 13, -10, - 13, -41, -2, -16, 7, 4, 7, -36, - ], - [ - -44, -29, 30, -15, -30, -23, 12, 14, - -24, 17, 18, -4, 1, 36, -38, -11, - -0, -4, 19, -12, 21, 23, -5, -2, - -16, 26, 4, -1, -1, 23, -45, 0, - 26, 19, 6, 29, 18, 10, 12, 5, - -19, -11, 3, 23, 20, -1, -2, -15, - 26, 8, -16, 37, -19, 8, -35, -72, - -7, 19, -25, -11, -10, 6, 43, -16, - ], - [ - 79, 4, 20, -12, 62, -61, -1, -60, - 12, 4, -16, -37, -2, -14, 31, -31, - 3, 42, -20, -13, -9, 12, -13, -23, - 1, 6, -10, 26, 10, 16, 14, -0, - 14, 1, 16, -5, 36, 1, -19, -26, - 3, -48, 17, 8, -4, 17, 7, -12, - -26, -9, -8, 14, 0, -13, 15, 10, - -17, 2, -3, 8, 19, 11, 8, -34, - ], - [ - -20, -6, 51, -40, 5, -50, -71, -15, - 19, 6, 25, 13, 6, 16, 30, -21, - -6, 9, -5, -2, -7, 1, -4, -16, - -21, 14, -31, -1, -5, 16, 0, -27, - -0, 7, 10, 27, 24, 16, 19, -30, - -11, 24, 5, 10, 25, 22, -1, -14, - -19, -20, -11, 15, 15, -22, 14, 5, - 55, 69, 28, 20, -24, -47, -22, -54, - ], - [ - 23, -37, 19, 28, 16, 23, -19, 30, - -27, 13, 20, 4, 23, -22, -20, 27, - -17, 24, -1, 1, -10, -3, -19, 23, - 1, 9, 6, -27, 17, 12, -17, 1, - -21, -15, 5, -3, 1, -3, 20, -1, - -40, -5, 12, -1, 15, 12, 14, -32, - -17, -16, 7, -5, -4, 14, -30, 28, - -82, 21, 8, 4, 24, 13, -3, -21, - ], - [ - -47, 25, 27, 8, -3, 44, -4, 32, - 11, 3, -19, 9, 7, 20, -53, 31, - 18, 1, -19, 26, 19, 19, 23, -24, - -20, -29, 6, 3, -16, 7, 2, 7, - -5, 12, 12, 27, 3, 16, 1, -8, - -25, -27, -3, 17, 11, 30, -23, -6, - -39, 30, -19, -10, 17, -0, -41, -12, - 19, -33, -36, 2, -6, -19, 20, -14, - ], - [ - -85, 8, 13, 13, 69, 27, 6, 62, - -27, -14, -7, -22, -41, -6, 26, -17, - -58, -28, -35, 20, -27, -7, 17, 44, - 26, 8, -4, 9, 20, -49, -4, 8, - -13, 5, -4, 2, -8, -27, 9, 37, - -14, -21, -5, -27, -4, 20, 18, 35, - -28, -8, -1, 29, 12, -64, -16, 27, - 4, -14, 1, 20, 36, 3, -2, 52, - ], - [ - 41, -41, 18, -15, 2, -51, 38, -11, - -38, -23, 26, -41, -60, 3, -10, 39, - -11, -26, 33, 9, -13, 1, 6, -0, - -27, -22, -4, 36, 31, 1, -57, 50, - -24, 3, 16, 23, 25, -2, -24, 20, - -6, -10, -2, 8, 11, -14, -31, -9, - -20, -11, 7, 27, 6, -5, 25, -5, - 51, -61, -12, 15, 20, 3, -8, 103, - ], - [ - -12, -54, -63, -21, 31, -17, -68, 63, - -57, 3, 0, 24, 33, 2, 2, 24, - -1, 3, 18, 9, -15, 1, 12, 44, - 10, -5, -9, 12, 7, 33, 38, 34, - 8, -8, -15, 51, 31, 49, -14, 2, - -44, -9, -22, 23, -4, 45, 39, -8, - -3, -22, 18, -37, -1, -26, -40, 26, - 8, 31, 18, 22, -42, -55, -50, -52, + -6, -13, 1, -6, -3, 1, -18, 9, + 24, 13, -4, -8, -3, -11, 13, -9, + 12, -40, -2, -16, 7, 5, 7, -35, + ], + [ + -45, -29, 29, -15, -32, -22, 11, 10, + -25, 16, 18, -6, -1, 34, -37, -11, + 1, -4, 19, -15, 22, 23, -2, -2, + -18, 24, 4, 1, 0, 26, -44, 0, + 27, 21, 7, 29, 20, 12, 11, 7, + -18, -13, 3, 20, 18, 3, -1, -15, + 30, 8, -18, 38, -18, 11, -37, -70, + -6, 17, -25, -13, -13, 9, 43, -19, + ], + [ + 77, -0, 18, -13, 63, -60, -12, -68, + 10, 2, -18, -40, -4, -17, 29, -37, + 1, 39, -24, -14, -10, 14, -13, -27, + -2, 8, -11, 23, 10, 17, 18, 5, + 12, 1, 15, -5, 38, 1, -20, -28, + 7, -48, 19, 8, -3, 17, 12, -7, + -26, -8, -7, 15, 2, -12, 19, 19, + -16, 9, -3, 4, 21, 18, 12, -33, + ], + [ + -26, -6, 47, -43, 3, -54, -69, -20, + 22, 2, 25, 10, 3, 16, 35, -22, + -9, 7, -7, -3, -9, -2, -7, -19, + -22, 13, -31, -3, -6, 19, 0, -28, + 1, 9, 9, 28, 25, 19, 25, -30, + -6, 25, 5, 9, 25, 23, 2, -12, + -19, -19, -12, 17, 16, -24, 13, 4, + 54, 65, 33, 26, -24, -43, -20, -42, + ], + [ + 18, -36, 18, 28, 17, 27, -20, 27, + -23, 7, 21, 3, 21, -20, -18, 25, + -16, 25, -6, 1, -11, -3, -22, 26, + -0, 11, 5, -29, 17, 12, -17, 1, + -18, -14, 9, -1, 1, -0, 20, 0, + -39, -6, 11, -1, 15, 15, 14, -36, + -18, -20, 10, -5, -3, 15, -31, 26, + -77, 23, 11, 2, 25, 10, -4, -21, + ], + [ + -43, 29, 30, 10, -1, 43, -4, 26, + 18, 5, -21, 9, 9, 17, -52, 35, + 25, 3, -19, 25, 19, 17, 20, -23, + -19, -25, 5, 4, -17, 5, 5, 9, + -4, 13, 13, 26, 5, 16, 0, -8, + -25, -31, -0, 20, 10, 31, -25, -9, + -46, 27, -18, -12, 17, 1, -42, -15, + 15, -36, -37, 4, -12, -20, 16, -21, + ], + [ + -84, 7, 10, 6, 66, 25, 5, 65, + -26, -15, -8, -24, -42, -5, 29, -13, + -58, -28, -38, 21, -27, -7, 17, 43, + 28, 9, -5, 8, 19, -52, -4, 8, + -9, 8, -6, 3, -8, -28, 8, 39, + -11, -19, -4, -26, -5, 18, 16, 38, + -26, -5, -1, 26, 11, -62, -17, 26, + 10, -12, 5, 21, 34, 0, -6, 51, + ], + [ + 37, -47, 18, -16, 3, -56, 35, -8, + -38, -22, 25, -43, -60, 1, -10, 41, + -8, -24, 31, 6, -13, 3, 4, -3, + -27, -16, -1, 37, 33, 0, -58, 48, + -23, 3, 19, 24, 26, -2, -27, 19, + -6, -8, -0, 9, 13, -14, -29, -11, + -27, -10, 5, 25, 9, -4, 27, -8, + 56, -64, -13, 16, 20, 5, -8, 107, + ], + [ + -15, -63, -67, -20, 29, -19, -74, 63, + -54, 3, 2, 22, 30, 2, -3, 27, + 1, 5, 18, 10, -13, 2, 14, 46, + 12, -1, -8, 11, 10, 34, 37, 32, + 10, -8, -12, 52, 32, 46, -13, 1, + -43, -8, -20, 24, -3, 45, 40, -7, + -9, -21, 20, -39, -2, -26, -40, 25, + 10, 33, 19, 20, -41, -54, -50, -55, ], ]; internal static readonly short[][] MiddleGameBishopTable = [ [ - 57, -37, -19, -105, 41, -27, -50, -10, - -16, -63, 32, 21, -53, 14, 17, -51, - 5, 5, 26, 71, 16, -33, -13, -1, - 1, 15, -21, 2, 52, 16, -5, -50, - 12, 29, -1, 45, -2, -17, 7, -25, - 73, -1, 6, 14, -12, -42, -7, -11, - 11, 59, 1, 11, -28, -5, -21, -11, - 69, 9, 18, 21, -15, -24, 14, -13, - ], - [ - -13, -152, -61, -3, -15, -56, -162, -20, - -16, -20, 10, -14, -3, 24, -18, -22, - 20, -6, 54, -14, 32, 11, -6, -9, - 32, 12, -15, 17, 21, 16, 16, -10, - 10, 22, 15, 10, 5, 5, 12, 11, - 47, 30, 22, 11, 13, -6, -3, 4, - 23, 57, 30, 16, 5, 9, -6, -28, - 16, -23, 26, 24, 0, 14, -3, 7, - ], - [ - 65, -3, 11, -3, -95, -100, 73, -88, - -35, -27, 15, 9, 16, 3, -15, -42, - -11, -16, 1, 24, -5, 8, 14, 9, - 33, 9, -8, -1, 24, -12, 14, -15, - 22, 21, 0, 14, -14, 5, -5, 11, - 9, 25, 18, 2, 8, -8, 2, -8, - 8, 57, 20, 8, -5, 6, -19, -6, - 8, -2, -25, -5, 2, 7, -10, 4, - ], - [ - -52, -6, 23, -54, 44, -81, 70, -32, - -3, -22, 13, -69, 66, -36, -30, 2, - 20, 7, -32, 57, -78, -42, -17, 5, - -12, 4, 4, -15, 44, 24, 28, 23, - 5, -16, 10, 5, 10, 17, 2, 19, - 16, -19, 7, 8, 20, 8, -12, -14, - 16, 34, 9, 28, -3, -12, 7, -84, - 33, 6, 7, 12, 1, 32, -27, 19, - ], - [ - -49, -32, -76, -83, -147, -84, -72, 13, - -19, 25, 17, -63, -36, -19, -15, -9, - 4, 2, -23, 2, -20, 29, 17, 14, - 8, 9, -2, 7, 6, -8, 20, -12, - 19, -13, 15, 11, 15, 14, 0, 38, - 13, 6, 15, 13, 21, 20, 24, 11, - 13, 32, 17, 17, 25, 39, 39, 19, - 45, 26, 13, 24, -12, 23, 12, 46, - ], - [ - -31, 69, -73, -83, -122, -38, -23, -34, - -30, 22, -31, -0, 23, -16, -10, -7, - -18, -25, 16, 42, 17, 25, 38, 29, - 20, 2, -33, 9, 24, 15, 18, -6, - -1, -44, 9, -1, 38, 10, -7, 5, - -21, 5, -4, 18, 9, 34, 20, 21, - -21, 7, 18, -1, 18, 13, 40, 18, - -14, 15, -2, 2, 32, -7, 6, -2, - ], - [ - -23, -17, 3, -69, -43, -13, -59, 12, - -18, -1, 19, -1, 10, -7, -24, -33, - 11, 11, 8, 7, 1, 34, 4, 4, - 1, -1, -0, 10, 12, -0, 15, -17, - -8, -2, -8, -0, -3, 6, -7, 26, - 5, -8, -3, -4, 5, 3, 27, 27, - -9, 8, 3, -1, 5, 22, 37, 23, - -2, 4, 5, -7, -0, 48, -42, 15, - ], - [ - -34, -74, -110, -87, -42, 65, -24, -34, - -0, 21, 28, -6, 32, -21, -2, -15, - 1, 16, -2, -4, 2, 68, 32, 31, - -12, -10, -3, 12, 23, 5, 23, -7, - -7, 2, -1, 4, 15, 18, -5, 12, - -7, -19, -1, -3, 1, 7, 24, 23, - -16, -2, -7, -5, -5, 8, 27, 38, - -11, -2, -3, -24, 23, 35, 44, -37, - ], - [ - 22, 47, -61, -92, -147, -46, -3, -118, - 35, -2, 3, -39, -51, -40, -10, 39, - -8, 101, 67, 5, 72, 14, -91, -3, - -3, -10, 43, 2, 29, 16, 10, -29, - 21, 71, 15, 32, 5, 29, 9, 15, - 39, 47, 48, 23, 16, -4, -39, -33, - -24, 63, 49, 16, 13, 27, -25, -102, - -54, -5, 15, -26, -7, 14, -2, 3, - ], - [ - -161, -35, -25, -89, 7, -86, -4, -16, - -9, 35, -24, 3, -52, -9, 18, 30, - 47, 28, 38, 18, 31, 49, -35, 32, - -7, 22, 14, 7, 23, -42, 41, 14, - 0, 10, 8, -5, -10, -0, -15, -41, - 4, -34, 43, 18, 21, 4, -34, -13, - 18, 11, -0, 24, 22, 14, -2, 36, - 5, 24, 20, -35, -10, 16, 10, 27, - ], - [ - 9, -18, -6, -63, 30, -20, -24, -112, - 48, 7, -14, 8, 59, -42, -7, 13, - -2, 38, 17, -27, 21, 29, -32, 30, - 21, -18, 17, 17, 52, -10, 38, 13, - -41, 19, 8, -2, 11, 12, -1, -33, - -30, -7, 9, 24, 36, -7, 12, -28, - -16, -3, 16, 12, 26, 21, 3, 28, - -46, -18, -22, -9, -41, 20, -35, 7, - ], - [ - -124, -33, 1, -34, -52, -16, -12, -1, - 17, 12, 47, -12, -25, 16, -12, 17, - 51, 0, 14, 12, 25, 20, -4, 2, - -6, -5, 20, 35, 13, -6, -19, -22, - -12, -28, 12, 22, 15, -17, -12, -13, - -9, 6, 7, 17, 18, 21, -11, -11, - 6, 13, 33, -0, 59, -3, 4, 29, - 3, -4, -1, -55, 40, -8, -23, -21, - ], - [ - 1, -94, -36, -39, -103, -4, -61, 68, - 22, -8, -3, 8, 33, 1, -26, 23, - 15, 3, 11, 3, 19, 15, 3, -15, - -4, 9, 24, 13, 31, 17, 30, 15, - -1, -20, 5, 23, 22, 9, -26, 10, - -37, -14, 27, 4, 29, 16, 14, 4, - 14, -1, 23, 6, 4, -28, 12, 4, - -21, 8, 7, -8, -1, 2, -30, -27, - ], - [ - 18, -101, -41, 40, -20, -86, -12, -37, - -54, 27, -26, -16, 11, 36, -20, -17, - -42, 2, 33, 13, 22, 48, 46, 8, - 1, -2, -4, 54, 18, 40, 11, 19, - 0, -24, 4, 8, 45, 3, 15, -9, - -3, 3, -17, 17, 4, 28, 44, 8, - -12, -12, -1, -4, 5, 15, 21, 3, - -36, -6, -4, 19, -28, 10, 4, -71, - ], - [ - -49, 38, -48, -81, -10, 80, -1, -48, - -5, 9, 23, -56, -0, -0, -59, 0, - -21, -18, 7, -3, 25, 55, 23, 28, - -28, -4, -16, 21, 51, 45, 26, 6, - -22, -30, -5, 16, 17, 7, 9, 2, - -5, -11, -2, -5, 13, -6, 26, 19, - -43, -9, -15, 2, -2, 20, 37, -19, - -16, -0, 4, -6, 5, 20, 3, 8, - ], - [ - 15, 61, 53, 75, 37, -13, 53, 41, - -51, -64, -20, 18, 1, 69, 36, -13, - -48, 99, 17, 33, 16, -24, -65, -72, - 46, -15, 56, 72, -33, 55, -112, -16, - -14, 3, -9, 17, -0, -55, -35, 27, - 6, 76, -11, -21, 29, -10, -98, -8, - 19, -55, -28, 21, -8, 47, -84, 51, - -74, -7, -69, 27, 54, -122, 91, -65, - ], - [ - 0, 7, 16, 51, -9, -19, 27, 18, - 8, 54, -54, 0, 16, 13, 11, -27, - -12, -16, -6, 17, 36, -48, -30, -62, - -43, -31, 29, 104, 25, 45, -10, 14, - -47, 34, 8, -17, 47, 89, -28, 79, - 19, 87, -14, -5, -1, -6, -35, -24, - 49, 33, 15, -67, -38, -11, 22, 3, - -37, 1, -132, -45, -16, -131, 34, 7, - ], - [ - -11, 39, 11, 33, 30, -38, 6, 7, - -19, 16, -35, 29, 82, 8, 17, -79, - -12, 83, -69, 39, 57, 5, 38, 48, - -35, -15, 54, -15, 23, 34, -45, 37, - 10, -23, 102, -14, 115, -43, 18, 31, - -13, -10, 18, 5, -87, -45, 3, 54, - 11, -125, 31, -39, -20, -47, -79, 20, - 17, 15, -104, -57, -34, -50, -1, 18, - ], - [ - -6, 13, 25, 27, 18, -32, -10, -18, - -21, -0, 59, -47, 5, 98, 17, -6, - -11, 9, 11, -80, 103, 86, 40, 6, - 38, 46, -33, 12, -14, -27, 44, 21, - 7, 12, 21, 73, -13, -19, -50, -50, - -35, -29, 130, 93, -12, 41, 0, -4, - -67, -48, -9, -12, -55, -43, -70, 3, - -3, 5, -1, -6, -7, -143, -39, -43, - ], - [ - -8, 55, 1, 32, -8, 18, 24, 4, - 4, 0, 15, 71, -1, -14, 22, -11, - -35, -51, 45, 93, -6, -2, 40, 43, - -11, -29, 125, 16, 1, -59, -28, -35, - 55, 10, -4, 36, 72, -44, 56, -15, - -43, -42, -36, 90, 12, -25, -31, -10, - -13, -98, -7, -36, -4, -76, -49, -13, - -14, -29, -58, 4, -38, 62, -3, -17, - ], - [ - -4, 38, -4, -0, -57, 71, 6, -2, - -41, -25, -55, -39, -14, -34, 13, 18, - -50, 65, 32, 80, -26, -80, 12, -20, - 30, 38, 49, 28, 11, 52, -17, 22, - -49, -55, 49, 30, -11, 76, 45, -7, - 3, 34, -26, 12, -11, 48, 29, -19, - -27, 21, 18, 32, 10, -37, -39, -19, - 31, -38, -67, -61, -76, -22, 18, 9, - ], - [ - 4, -21, 6, 34, 15, 16, 4, -6, - -52, 34, -19, 18, 6, 1, 0, -21, - -14, 40, -7, 7, -2, 29, 38, 13, - -31, 35, 82, 35, 31, 109, -33, 55, - -49, -2, -38, 27, -34, 1, -29, 30, - -1, 43, -54, -21, -24, 22, -34, 34, - -10, -153, 3, 39, 98, -49, -73, -39, - -15, 41, -74, 34, 10, -95, -27, 34, - ], - [ - -4, 5, 33, -21, 40, 8, 31, -25, - -1, -64, 29, 16, -16, 43, 22, -17, - -10, -64, 12, 26, -17, 55, 31, -43, - -21, -13, 52, -9, 64, 32, 20, 25, - -21, -44, 21, -5, 61, 39, 35, -62, - 36, 5, -69, 11, -10, 33, -47, 24, - 17, -33, -64, -40, 12, 32, -51, 64, - -37, -8, -70, -1, 12, -45, -16, -0, + 57, -38, -18, -104, 40, -23, -44, -6, + -18, -61, 33, 21, -55, 13, 17, -50, + 5, 2, 25, 69, 17, -34, -14, -2, + -0, 16, -20, 1, 52, 16, -6, -49, + 13, 29, -1, 45, -3, -19, 6, -26, + 75, -1, 5, 14, -13, -43, -6, -10, + 11, 59, 1, 10, -29, -5, -23, -10, + 68, 7, 19, 21, -15, -23, 13, -13, + ], + [ + -14, -155, -58, -5, -12, -57, -163, -20, + -16, -20, 10, -16, -4, 25, -18, -23, + 20, -5, 53, -14, 33, 11, -7, -9, + 32, 12, -15, 18, 22, 16, 16, -10, + 10, 22, 15, 11, 4, 5, 12, 11, + 48, 29, 21, 10, 13, -6, -2, 4, + 23, 57, 29, 15, 4, 9, -8, -27, + 16, -23, 27, 24, 0, 14, -3, 8, + ], + [ + 63, -2, 11, -1, -98, -98, 73, -87, + -35, -26, 15, 8, 17, 2, -15, -41, + -11, -15, 1, 25, -4, 8, 14, 9, + 33, 9, -8, -0, 25, -12, 14, -14, + 22, 21, 0, 15, -14, 5, -6, 11, + 10, 24, 17, 1, 7, -9, 2, -8, + 8, 57, 19, 8, -5, 6, -20, -6, + 8, -3, -25, -6, 2, 7, -10, 4, + ], + [ + -53, -7, 23, -54, 47, -78, 72, -31, + -3, -21, 11, -66, 68, -37, -28, 4, + 21, 8, -32, 59, -77, -42, -19, 6, + -12, 4, 5, -14, 45, 25, 28, 22, + 4, -16, 10, 5, 10, 17, 1, 19, + 16, -20, 6, 7, 19, 6, -11, -15, + 15, 34, 8, 27, -4, -12, 5, -84, + 32, 5, 8, 12, 1, 31, -27, 18, + ], + [ + -49, -32, -77, -82, -145, -85, -72, 14, + -18, 25, 17, -63, -37, -19, -16, -9, + 4, 3, -23, 4, -19, 29, 17, 14, + 7, 9, -1, 7, 7, -7, 20, -12, + 19, -13, 14, 11, 15, 13, -0, 38, + 14, 6, 14, 13, 20, 19, 24, 11, + 13, 32, 16, 16, 24, 38, 38, 19, + 44, 25, 14, 23, -13, 23, 12, 45, + ], + [ + -30, 73, -71, -85, -122, -38, -25, -33, + -27, 23, -30, -3, 22, -17, -7, -4, + -19, -24, 17, 43, 17, 25, 38, 29, + 20, 2, -32, 9, 27, 15, 18, -7, + -1, -46, 9, -0, 38, 10, -8, 4, + -20, 4, -5, 17, 8, 33, 19, 21, + -21, 6, 17, -1, 16, 12, 38, 18, + -15, 13, -1, 3, 32, -8, 6, -3, + ], + [ + -23, -16, 4, -70, -43, -13, -58, 14, + -18, -1, 19, -2, 9, -8, -23, -33, + 11, 12, 9, 8, 2, 33, 4, 4, + 2, -1, -0, 11, 13, 0, 15, -17, + -8, -1, -9, -0, -3, 6, -7, 26, + 5, -9, -4, -5, 5, 2, 27, 27, + -8, 7, 2, -2, 4, 21, 36, 23, + -2, 3, 6, -7, -0, 48, -42, 15, + ], + [ + -36, -74, -110, -89, -42, 64, -21, -35, + -1, 23, 28, -8, 31, -21, -1, -15, + 2, 17, -2, -3, 4, 68, 32, 31, + -12, -10, -3, 13, 24, 5, 23, -6, + -7, 3, -1, 4, 15, 18, -5, 12, + -6, -19, -2, -3, -0, 7, 24, 24, + -16, -2, -8, -5, -5, 8, 27, 39, + -11, -3, -2, -24, 23, 35, 44, -36, + ], + [ + 21, 48, -59, -91, -149, -49, -2, -118, + 35, -3, 3, -39, -53, -40, -9, 39, + -8, 100, 69, 5, 73, 15, -92, -2, + -3, -10, 43, 3, 30, 17, 11, -29, + 22, 70, 15, 33, 5, 30, 10, 16, + 40, 47, 47, 22, 16, -4, -37, -32, + -23, 63, 48, 16, 13, 26, -26, -102, + -58, -6, 15, -28, -8, 14, -2, 3, + ], + [ + -163, -36, -26, -87, 6, -84, -2, -18, + -9, 38, -28, 5, -51, -10, 19, 32, + 45, 29, 39, 17, 29, 49, -34, 33, + -3, 21, 15, 8, 24, -41, 42, 14, + -1, 12, 9, -4, -9, 1, -14, -41, + 6, -35, 42, 18, 21, 3, -34, -13, + 17, 11, -1, 23, 22, 14, -3, 33, + 4, 23, 20, -36, -11, 15, 10, 28, + ], + [ + 10, -17, -7, -65, 28, -21, -24, -112, + 49, 8, -13, 6, 61, -41, -5, 17, + -5, 38, 19, -25, 23, 30, -34, 29, + 20, -18, 18, 18, 53, -8, 37, 13, + -42, 19, 8, -1, 11, 12, -3, -33, + -28, -5, 8, 24, 36, -8, 14, -27, + -16, -4, 14, 12, 24, 20, 2, 28, + -48, -18, -21, -10, -41, 20, -34, 7, + ], + [ + -123, -37, -2, -32, -55, -16, -13, -4, + 20, 13, 47, -13, -24, 17, -10, 16, + 51, 1, 14, 13, 26, 22, -4, 2, + -6, -5, 20, 37, 16, -6, -19, -23, + -11, -27, 12, 24, 16, -16, -11, -13, + -8, 7, 7, 18, 17, 21, -10, -10, + 4, 13, 31, -2, 58, -4, 3, 30, + 3, -5, 0, -53, 39, -8, -24, -21, + ], + [ + -2, -94, -37, -42, -104, -5, -59, 70, + 24, -7, -2, 8, 33, 0, -24, 25, + 15, 4, 11, 5, 22, 18, 2, -15, + -2, 9, 24, 14, 33, 19, 30, 15, + 1, -20, 6, 24, 24, 9, -27, 8, + -37, -14, 27, 4, 29, 17, 14, 5, + 13, -1, 21, 5, 3, -28, 11, 2, + -24, 5, 7, -10, -4, 2, -30, -31, + ], + [ + 20, -102, -41, 39, -18, -85, -15, -38, + -53, 28, -26, -18, 11, 37, -20, -17, + -42, 3, 34, 14, 23, 48, 47, 8, + 1, -2, -4, 54, 19, 41, 12, 19, + -0, -24, 3, 8, 44, 3, 15, -9, + -2, 2, -17, 17, 3, 28, 45, 9, + -11, -12, -1, -6, 4, 14, 20, 3, + -36, -8, -4, 19, -28, 9, 4, -69, + ], + [ + -48, 37, -46, -81, -8, 78, -1, -53, + -6, 10, 24, -57, -2, -1, -59, 0, + -21, -17, 8, -3, 26, 54, 22, 29, + -28, -4, -16, 22, 51, 45, 26, 6, + -21, -29, -5, 16, 17, 7, 9, 2, + -4, -11, -3, -5, 12, -6, 27, 20, + -42, -9, -15, 1, -3, 21, 37, -27, + -15, -1, 5, -6, 6, 20, 3, 9, + ], + [ + 17, 60, 48, 73, 38, -13, 55, 41, + -53, -63, -21, 17, 2, 66, 36, -10, + -46, 93, 11, 25, 7, -25, -67, -68, + 41, -19, 51, 67, -33, 51, -104, -16, + -11, -3, -9, 16, 2, -58, -37, 25, + 6, 79, -13, -13, 31, -8, -100, -10, + 14, -55, -26, 33, -1, 54, -82, 54, + -69, -10, -65, 36, 56, -116, 89, -70, + ], + [ + 2, 5, 18, 47, -7, -18, 27, 17, + 11, 46, -53, -1, 14, 11, 12, -30, + -10, -23, -5, 18, 35, -39, -28, -66, + -40, -35, 29, 97, 17, 39, -14, 13, + -49, 28, 5, -18, 45, 89, -25, 83, + 21, 84, -14, 0, 5, -9, -35, -26, + 49, 31, 21, -65, -31, -9, 31, 6, + -34, 3, -124, -49, -16, -127, 36, 6, + ], + [ + -14, 38, 12, 38, 31, -38, 7, 8, + -24, 6, -33, 28, 83, 8, 13, -77, + -12, 85, -80, 37, 56, 5, 42, 49, + -43, -24, 49, -28, 22, 30, -51, 36, + 12, -21, 94, -16, 117, -41, 21, 36, + -8, -15, 18, 8, -83, -41, 6, 52, + 14, -116, 35, -35, -16, -40, -76, 22, + 22, 19, -112, -58, -31, -47, 2, 20, + ], + [ + -6, 10, 24, 30, 16, -32, -8, -17, + -17, -12, 61, -42, 5, 100, 16, -7, + -20, 10, 8, -80, 97, 84, 41, 5, + 39, 43, -37, 6, -24, -32, 44, 20, + 8, 8, 17, 64, -12, -18, -52, -45, + -41, -31, 133, 93, -9, 40, 1, -3, + -66, -45, -4, -7, -47, -37, -61, 4, + 3, 6, 3, -3, -7, -139, -36, -43, + ], + [ + -10, 54, -4, 32, -10, 15, 22, 3, + 5, 2, 16, 69, 0, -11, 21, -9, + -37, -44, 42, 85, -14, 1, 36, 45, + -15, -28, 121, 7, -12, -59, -28, -37, + 55, 12, -6, 40, 66, -44, 53, -15, + -40, -43, -32, 83, 13, -23, -33, -9, + -9, -92, -3, -38, 6, -75, -37, -9, + -10, -19, -68, 2, -38, 71, -2, -14, + ], + [ + -2, 36, -3, 3, -61, 73, 1, -5, + -42, -23, -52, -38, -16, -43, 14, 18, + -48, 62, 27, 75, -26, -84, 6, -17, + 35, 50, 53, 31, 7, 53, -19, 22, + -50, -56, 48, 30, -16, 72, 46, -6, + -4, 40, -19, 13, -9, 49, 19, -22, + -22, 24, 26, 35, 11, -39, -40, -20, + 34, -33, -76, -62, -73, -18, 19, 13, + ], + [ + 3, -20, 6, 37, 15, 17, 2, -6, + -52, 34, -17, 19, 6, 1, -2, -22, + -16, 41, -2, 4, -12, 22, 34, 10, + -30, 30, 79, 37, 32, 105, -36, 57, + -42, -7, -40, 23, -37, -8, -19, 33, + -6, 47, -48, -20, -21, 21, -32, 34, + -11, -149, 2, 42, 101, -45, -72, -36, + -15, 51, -86, 31, 13, -86, -28, 34, + ], + [ + -0, 4, 36, -17, 37, 8, 32, -25, + 2, -65, 30, 21, -15, 39, 24, -17, + -10, -62, 10, 22, -24, 53, 24, -43, + -20, -14, 50, -24, 64, 21, 21, 26, + -22, -44, 23, -4, 61, 43, 37, -63, + 35, 8, -67, 13, -9, 30, -48, 23, + 18, -27, -65, -36, 16, 31, -47, 62, + -36, -4, -69, 3, 14, -48, -15, 0, ], ]; internal static readonly short[][] EndGameBishopTable = [ [ - -8, -19, 31, 34, 18, -12, 21, 9, - -19, 30, -19, -6, 0, 0, -54, 11, - 22, 8, -7, -15, -11, 22, 9, 0, - 3, 7, 11, 20, -17, -6, 7, 24, - 6, 13, 25, -15, 15, 17, 4, -25, - -21, 24, 1, -13, -4, 23, -32, -8, - 6, -21, 19, -20, 30, -22, 6, 25, - -45, -13, 9, -14, -6, -3, -3, -50, - ], - [ - 22, 53, -13, -60, -10, 13, 62, -22, - 17, 33, -25, 15, -27, -22, 5, 12, - 12, 34, -10, 12, -3, 8, 15, 11, - -20, 11, 15, -1, 13, -15, -1, 9, - 10, -4, 6, 10, 2, -10, -9, -9, - -10, -36, -10, 4, 3, -0, -2, -19, - -15, -1, 12, -5, 5, -10, -14, -7, - -8, -27, 9, -8, -0, 5, 12, -18, - ], - [ - -83, 15, -34, 0, 23, -14, -51, 67, - 22, 13, -43, -40, 2, 1, 19, 13, - 18, 25, 12, -6, 24, 10, 3, 17, - -6, -10, 5, 8, 1, 28, 1, -10, - -45, -11, -11, 15, 8, 7, -2, -5, - 26, -17, 4, 6, 13, 8, 6, -7, - -7, -2, -1, 27, 18, 4, 8, 3, - -7, -5, -55, 4, -18, 19, 23, -34, - ], - [ - -6, -8, -11, -42, 21, 35, -43, 37, - -17, 21, 19, 19, 7, 6, -10, 5, - -12, -5, 23, -19, 20, 13, 12, 18, - 9, -18, 25, 4, -16, 9, -9, 10, - 12, 11, 2, -1, 10, -10, 0, -21, - -41, -3, 16, 2, -4, -1, -3, -11, - -43, -11, 6, 9, 17, 13, -11, -19, - 13, -15, 8, -2, 5, -20, 30, -35, - ], - [ - 28, 3, -4, 27, 33, 33, 30, -27, - -22, -32, -5, 50, 2, 6, 4, -5, - -4, 7, 16, 15, 13, -7, -6, -8, - 17, 5, -10, 26, -3, -4, -19, 0, - -22, 10, -16, 3, 6, 0, 6, -24, - -12, -2, 18, 5, 0, -16, -1, 2, - -7, 3, 10, 8, 2, -9, -8, -19, - -30, -3, -4, -8, -32, 2, -6, -15, - ], - [ - -3, -17, 6, 15, 30, -18, 1, -74, - -9, -25, 12, 4, -2, -11, 3, -9, - -8, 35, -1, -17, 16, -3, 6, -6, - 3, 15, 23, 3, 1, 10, 6, 17, - -16, 32, 12, 3, 3, 4, 1, 3, - 8, -3, 10, 13, 15, -13, -12, -16, - 2, 1, -9, 15, 18, 11, -13, -31, - -16, 3, 9, 4, -1, -25, -3, -8, - ], - [ - 5, -4, -12, 9, -3, -2, 18, -28, - 4, -1, -3, -9, 3, -3, 5, -10, + -7, -21, 33, 35, 20, -11, 21, 8, + -19, 28, -21, -5, 2, 1, -53, 13, + 21, 8, -8, -14, -10, 23, 10, 2, + 4, 7, 11, 21, -17, -6, 7, 25, + 4, 12, 25, -14, 15, 18, 4, -25, + -22, 24, 1, -15, -5, 23, -33, -9, + 8, -22, 18, -20, 29, -22, 4, 25, + -46, -11, 8, -16, -7, -6, -3, -50, + ], + [ + 26, 55, -16, -61, -10, 16, 61, -24, + 16, 35, -24, 16, -26, -23, 6, 14, + 11, 34, -8, 12, -3, 8, 16, 11, + -21, 9, 15, -2, 14, -14, -1, 10, + 9, -4, 6, 10, 2, -10, -10, -9, + -11, -36, -10, 4, 3, -0, -2, -18, + -16, -1, 13, -5, 5, -11, -14, -8, + -8, -27, 9, -9, -1, 5, 13, -18, + ], + [ + -81, 16, -32, -0, 24, -13, -51, 67, + 21, 13, -43, -38, -1, 1, 18, 13, + 17, 26, 14, -6, 25, 10, 4, 16, + -7, -10, 5, 8, 1, 27, 1, -10, + -45, -12, -11, 14, 8, 7, -2, -5, + 26, -17, 4, 6, 14, 8, 5, -8, + -8, -2, -1, 27, 18, 4, 8, 2, + -8, -5, -54, 4, -19, 18, 23, -34, + ], + [ + -3, -6, -10, -41, 23, 34, -41, 36, + -18, 21, 21, 19, 5, 6, -9, 3, + -13, -5, 23, -19, 20, 14, 13, 18, + 10, -18, 25, 4, -17, 9, -9, 10, + 11, 11, 2, -1, 10, -11, 0, -20, + -41, -3, 16, 3, -4, -0, -5, -12, + -46, -12, 6, 11, 19, 12, -11, -24, + 13, -15, 8, -0, 5, -21, 28, -35, + ], + [ + 29, 5, -5, 29, 35, 34, 31, -28, + -23, -31, -4, 50, 3, 7, 4, -5, + -5, 6, 16, 15, 13, -7, -5, -8, + 16, 5, -11, 27, -4, -4, -18, 1, + -23, 9, -16, 2, 6, 1, 5, -24, + -13, -3, 18, 6, 1, -15, -1, 1, + -10, 2, 10, 9, 4, -9, -8, -20, + -31, -4, -4, -7, -31, 2, -7, -15, + ], + [ + -4, -18, 7, 16, 32, -17, 2, -73, + -12, -25, 12, 5, -1, -11, 1, -11, + -9, 34, -1, -17, 16, -4, 6, -5, + 2, 15, 22, 3, 0, 10, 6, 16, + -17, 32, 12, 2, 2, 4, 2, 2, + 8, -3, 10, 14, 15, -12, -12, -16, + 1, 1, -9, 16, 19, 11, -12, -32, + -16, 3, 8, 3, -1, -23, -3, -9, + ], + [ + 5, -3, -12, 10, -3, -1, 18, -29, + 4, -1, -2, -8, 3, -3, 5, -10, -6, 10, 9, 2, 9, 11, 15, 29, - 12, 5, 8, 13, 7, 6, -0, 20, - 9, 1, 10, 11, 10, 3, -0, -20, - 6, -2, 9, 13, 2, -2, -25, -2, - -10, -1, -4, 9, 12, 12, -3, -3, - -10, -1, -2, 0, 3, 2, -109, -38, - ], - [ - 46, 36, 4, 19, 17, -61, 15, -25, - -8, -7, 5, -3, -14, -6, -0, 22, - -4, 2, 10, -2, 4, -37, 0, 10, - -10, 11, -2, 15, 6, 8, -14, 5, - -11, -22, 15, 3, 17, -19, 16, -13, - -6, 3, 6, 19, 16, 18, -12, -7, - 5, -6, -12, 16, 16, 16, 6, -19, - -10, -8, -6, -22, -21, 5, -2, -21, - ], - [ - 43, -19, 13, 28, 16, -2, 9, 21, - -1, 3, 28, 7, 7, -11, -8, -20, - 27, -31, 1, 15, -10, 12, 46, 10, - 6, 8, 3, 18, 8, 9, 1, -13, - 2, -5, -5, 3, 8, -0, -2, 14, - -12, -14, -11, -3, -2, 4, 0, -14, - -5, -46, -30, -3, 3, -21, 3, -9, - -5, -3, -13, -11, -22, -5, 3, -27, - ], - [ - 7, 24, 2, 20, -5, 4, 12, -8, - 3, -10, 6, 9, 10, -9, -9, -7, - 6, 7, -4, 20, -7, -6, 16, -16, - 4, -5, 7, 10, -0, 17, 0, -11, - -4, 1, 9, 12, 9, 7, 0, 20, - 8, 5, -6, -1, 2, -0, 11, -22, - 17, -8, -6, -7, -6, 1, -10, -32, - -35, -8, -12, 1, 8, -8, -2, -33, - ], - [ - -2, 6, 8, -5, -5, -2, -11, 15, - -10, 2, 5, -3, -0, 18, 14, -9, - 7, -4, 8, 14, 2, 7, 5, -9, - -10, 5, -7, 4, -8, 9, -8, -6, - 5, 1, 3, 12, 4, 2, -3, 2, - 6, 11, -2, -5, -6, 5, -14, -4, - -1, -11, -6, -4, -12, -13, -11, -18, - 15, 4, -4, 0, 2, 0, 25, -13, - ], - [ - 28, 14, -10, 10, -8, -9, -7, -10, - -0, -2, -8, -0, 1, -2, 14, -8, - -10, 4, 5, 7, -2, 14, 8, 12, - 2, 5, -5, -1, 5, 1, 12, 4, - -7, 13, 3, 5, -1, 9, 4, 4, - 6, -0, 1, -2, 2, -10, 4, -11, - -16, -12, -9, 5, -8, 11, -15, -23, - -5, 7, 6, 15, -14, 8, -28, -3, - ], - [ - -3, 25, 2, 4, 17, 5, -5, -18, - -26, 1, -1, -6, 3, -7, 17, 6, - -4, 3, -1, 4, 12, 2, 16, 8, - 2, 1, -1, 4, 4, 15, -10, -3, - 6, 10, 3, 3, 9, 2, 9, -15, - 11, 4, -6, 4, -10, -3, 5, -9, - -16, -10, -8, -1, -2, 2, -14, -20, - 3, -4, -9, -0, 2, 11, 5, -25, - ], - [ - -4, 27, 12, -1, 6, 26, 3, 46, - 3, -11, 14, 8, -1, -6, 2, -4, - -4, -4, -4, -3, 10, 2, -9, 17, - -4, -6, 7, -10, 9, -2, 3, -13, - -12, 11, -0, 11, 1, 6, -6, 12, - -3, -3, 8, 3, 3, -5, -16, 1, - -5, -2, -6, 0, -8, -9, -15, -41, - -0, -3, -1, -15, 18, -6, -10, -13, - ], - [ - 9, 5, 6, 23, -6, -12, -16, -21, - 5, -20, 4, 21, 17, -25, 31, 1, - -11, -0, 9, 13, 22, -1, 3, 21, - 14, -1, 8, 11, -3, -4, 6, 23, - 0, 10, 7, 6, 8, 14, 3, 5, - -8, -6, 4, 11, 2, 7, 4, 2, - -1, -8, 3, -12, -6, -7, -19, 0, - -14, -12, -22, -1, -12, -12, -36, -41, - ], - [ - 2, -62, -19, -8, 32, -8, -33, 20, - 40, 26, -16, -17, -0, -9, -9, -28, - 32, -2, 18, 2, 1, 29, -5, 21, - 14, 21, 12, 3, 16, -10, 24, 19, - -3, -24, 18, -8, -18, 20, 12, 10, - -12, -21, 3, 2, 2, 1, 11, -17, - -12, -5, -16, -21, -3, -18, -4, -31, - 18, 9, 6, -9, -43, 33, -27, 41, - ], - [ - 15, -31, -7, 38, -29, -48, -14, 2, - 20, 12, 8, 14, 20, -3, -34, -39, - 4, 22, -3, 4, -19, 5, -4, -5, - 12, 60, 10, -12, -12, -8, -11, -7, - -1, 13, 6, 16, -2, -4, -19, 18, - -13, -7, -1, -4, -3, -2, 28, -1, - 4, -19, -17, -11, 7, -19, 16, -8, - -28, 14, 17, 12, 17, 33, -25, 21, - ], - [ - 11, 11, 3, 1, -8, -23, -35, 6, - 43, -15, 5, -9, -21, -36, 1, 0, - 17, -18, 28, 2, 1, -17, -29, -11, - -5, 22, 2, 15, -19, -26, -1, -27, - 8, 8, -12, 5, -14, -2, -9, 49, - 8, 23, -8, -2, 31, 2, 28, -12, - -9, 15, -25, 17, -14, -12, 31, -6, - -33, 0, 14, 17, 26, -18, -2, 29, - ], - [ - 12, 21, -5, -1, -11, -4, -21, -28, - -31, -27, -1, -3, -0, -27, 1, -18, - -4, 7, -7, 32, -19, -20, -26, 16, - 20, 3, 27, -6, 11, -5, -1, -12, - 35, 4, -5, -5, -3, 16, 3, 56, - -6, 9, -13, -24, 17, 5, 7, 30, - 13, 21, -12, -10, -9, 5, -4, 10, - -2, -19, 23, -5, -17, 4, -13, 17, - ], - [ - -15, -18, -15, -21, -30, 8, 15, 13, - -19, 13, -6, -28, -24, 2, -2, 19, - 12, -25, -1, -24, 24, -5, 15, 3, - -13, 5, -19, -5, -6, 38, 17, 10, - 7, 14, 8, -6, -18, 18, 18, 43, - 19, 0, -14, -20, -6, 26, 2, 28, - 7, 11, -27, 14, -10, 10, -0, -13, - 17, -23, 20, 2, 11, -12, -6, -38, - ], - [ - 5, -17, -17, -17, -20, 6, -24, 1, - -8, -8, 10, -7, -7, -4, 3, 5, - -0, -18, -15, -11, 9, 37, 13, 16, - -23, -11, -8, 3, 13, 12, 23, 24, - 30, 17, 8, 10, 4, -7, 11, -8, - -8, 19, 5, 2, 0, -4, 41, 30, - 42, -18, -10, -6, -14, 16, 8, -24, - -32, -6, 6, -14, 3, -19, -22, -26, - ], - [ - -13, -18, -21, 1, 28, -7, 27, -25, - -34, -8, -15, -19, -7, -9, 2, 9, - 2, -18, -13, -6, 15, 9, 25, 0, - 8, -12, -26, -8, 8, 5, 14, 26, - -13, 4, 21, -12, 17, 2, 18, 8, - 21, 1, 24, 11, 0, 11, -24, 12, - 3, 42, 13, -12, -29, -29, 4, -13, - -4, -13, 21, -13, -5, 16, -11, 9, - ], - [ - -41, -1, -26, 12, -15, 9, 10, 8, - -19, -9, -12, 16, -42, 62, 8, 7, - 2, -25, 6, -1, -1, 49, 31, -22, - -18, 5, 7, 12, 6, 20, 17, 6, - -6, -16, -19, 3, 14, 2, 8, -11, - -16, 29, -7, 26, 11, 10, -0, -20, - 4, -9, 5, -12, -21, -12, -20, 30, - -10, -18, 14, -0, 8, -1, -37, 12, + 12, 5, 8, 13, 7, 6, 0, 20, + 9, 0, 10, 11, 10, 3, -0, -21, + 7, -1, 10, 13, 2, -2, -25, -2, + -11, -1, -4, 9, 12, 12, -2, -4, + -11, -1, -2, -0, 2, 2, -108, -38, + ], + [ + 48, 37, 5, 21, 17, -61, 16, -23, + -7, -7, 5, -1, -13, -5, 0, 22, + -5, 0, 10, -2, 4, -37, 1, 10, + -9, 10, -3, 15, 5, 9, -14, 4, + -10, -23, 15, 3, 17, -19, 16, -14, + -7, 4, 7, 20, 16, 18, -12, -7, + 4, -6, -12, 15, 16, 15, 5, -20, + -13, -8, -7, -23, -23, 4, -2, -21, + ], + [ + 42, -20, 11, 28, 16, -2, 9, 20, + -2, 2, 27, 7, 7, -11, -9, -20, + 27, -31, -1, 14, -11, 11, 46, 10, + 5, 7, 3, 17, 8, 8, 1, -15, + 1, -6, -6, 2, 7, 0, -2, 14, + -14, -15, -11, -3, -1, 6, 1, -13, + -5, -47, -30, -2, 4, -19, 4, -6, + 1, -1, -13, -9, -20, -3, 6, -24, + ], + [ + 8, 23, 2, 20, -5, 4, 12, -7, + 3, -11, 6, 9, 10, -9, -9, -6, + 6, 6, -4, 20, -7, -6, 16, -17, + 2, -6, 6, 9, -1, 17, -0, -11, + -4, 0, 8, 12, 8, 7, -0, 19, + 7, 4, -7, -1, 2, -1, 11, -22, + 20, -7, -6, -6, -6, 1, -10, -30, + -33, -5, -12, 2, 9, -7, -1, -32, + ], + [ + -2, 7, 8, -3, -4, -2, -12, 15, + -10, 3, 5, -2, -0, 18, 15, -9, + 7, -4, 8, 13, 2, 6, 5, -8, + -10, 4, -7, 2, -9, 8, -8, -7, + 5, 0, 3, 12, 3, 1, -3, 1, + 4, 9, -2, -5, -7, 5, -15, -6, + 2, -10, -5, -4, -12, -12, -11, -15, + 16, 5, -4, 1, 3, 1, 26, -13, + ], + [ + 29, 15, -9, 11, -7, -8, -6, -9, + -0, -2, -8, 0, 1, -2, 13, -8, + -10, 4, 5, 7, -2, 13, 8, 12, + 1, 5, -6, -2, 5, 1, 12, 4, + -9, 12, 2, 4, -1, 8, 3, 2, + 5, -2, -0, -3, 2, -11, 3, -12, + -14, -12, -8, 6, -8, 12, -14, -23, + -5, 8, 6, 16, -12, 9, -26, -3, + ], + [ + -2, 26, 3, 5, 18, 6, -7, -19, + -27, 1, -1, -7, 4, -8, 16, 5, + -5, 2, -1, 3, 10, 1, 15, 8, + 1, 0, -2, 3, 3, 13, -11, -4, + 5, 9, 3, 2, 8, 1, 8, -15, + 11, 3, -6, 3, -10, -4, 4, -10, + -14, -9, -7, 1, -2, 2, -13, -18, + 5, -1, -9, 2, 4, 11, 7, -22, + ], + [ + -4, 28, 12, -1, 4, 26, 3, 45, + 3, -12, 14, 9, -1, -7, 1, -4, + -4, -5, -4, -4, 9, 1, -10, 17, + -4, -6, 6, -11, 8, -2, 2, -14, + -11, 11, 0, 11, 0, 6, -6, 11, + -2, -2, 8, 4, 3, -5, -17, 0, + -4, -1, -5, 2, -8, -9, -15, -42, + 0, -1, -1, -14, 19, -6, -10, -13, + ], + [ + 9, 5, 6, 23, -7, -11, -17, -19, + 5, -21, 4, 21, 17, -26, 30, 0, + -12, -0, 9, 12, 21, -1, 2, 20, + 14, -1, 7, 10, -3, -5, 5, 22, + 1, 10, 7, 7, 8, 14, 2, 3, + -7, -6, 4, 11, 3, 7, 4, 2, + 0, -6, 3, -11, -6, -7, -19, 2, + -14, -10, -22, -0, -11, -12, -36, -42, + ], + [ + 5, -64, -19, -6, 33, -7, -34, 25, + 41, 25, -16, -19, -2, -8, -7, -27, + 33, 1, 19, 5, 2, 30, -4, 22, + 15, 23, 14, 6, 17, -9, 23, 20, + -3, -23, 17, -8, -19, 20, 14, 10, + -12, -21, 3, -2, 0, 1, 12, -19, + -12, -6, -17, -26, -6, -20, -5, -36, + 18, 7, 4, -11, -45, 31, -27, 44, + ], + [ + 15, -30, -10, 34, -32, -52, -17, 2, + 20, 10, 5, 13, 18, -2, -38, -40, + 3, 25, -5, 2, -19, 4, -6, -8, + 13, 60, 10, -10, -8, -7, -8, -3, + -0, 16, 5, 17, -4, -3, -15, 19, + -12, -9, 0, -6, -2, -0, 31, 4, + 7, -21, -20, -14, 3, -17, 16, -4, + -31, 14, 17, 11, 19, 35, -20, 24, + ], + [ + 12, 10, 3, -1, -12, -27, -38, 4, + 46, -14, 3, -10, -20, -38, 0, 1, + 18, -19, 29, 2, -0, -19, -30, -15, + -4, 24, 3, 17, -21, -26, 0, -28, + 9, 8, -10, 6, -14, -3, -8, 54, + 9, 25, -7, -3, 30, 3, 29, -7, + -9, 15, -26, 16, -16, -12, 31, -8, + -34, -0, 13, 17, 26, -15, -2, 33, + ], + [ + 7, 23, -7, -5, -11, -4, -23, -29, + -31, -26, -2, -4, -0, -26, 1, -19, + -3, 9, -7, 33, -18, -21, -27, 14, + 21, 3, 28, -4, 13, -4, -1, -10, + 36, 8, -3, -2, -3, 16, 8, 58, + -8, 11, -12, -25, 16, 6, 6, 29, + 14, 17, -13, -11, -12, 0, -6, 10, + -0, -22, 25, -5, -18, 3, -12, 17, + ], + [ + -16, -15, -14, -22, -32, 9, 17, 19, + -16, 16, -7, -28, -24, 3, -0, 18, + 11, -26, -0, -23, 27, -6, 15, 4, + -11, 6, -18, -3, -2, 40, 16, 13, + 8, 15, 10, -5, -16, 19, 18, 44, + 19, 2, -13, -18, -6, 26, 0, 27, + -0, 8, -29, 14, -10, 10, -4, -15, + 14, -31, 19, 1, 11, -14, -14, -46, + ], + [ + 3, -19, -20, -20, -21, 4, -23, 2, + -5, -10, 8, -9, -7, -5, 2, 8, + -1, -17, -15, -12, 9, 36, 13, 13, + -23, -14, -9, 2, 13, 11, 23, 23, + 31, 15, 9, 10, 5, -7, 10, -11, + -5, 21, 7, 3, -0, -6, 44, 36, + 43, -15, -10, -7, -14, 19, 11, -21, + -29, -6, 8, -15, 5, -19, -21, -28, + ], + [ + -15, -20, -23, -2, 26, -8, 27, -25, + -36, -6, -16, -21, -9, -7, 0, 8, + 3, -20, -14, -5, 17, 9, 27, 2, + 11, -9, -25, -7, 8, 6, 14, 26, + -13, 6, 23, -10, 19, 5, 16, 9, + 23, 1, 23, 10, -0, 10, -22, 11, + -0, 43, 14, -12, -31, -30, 3, -15, + -1, -15, 25, -12, -6, 16, -11, 8, + ], + [ + -42, -0, -27, 9, -18, 9, 11, 7, + -18, -10, -16, 11, -43, 63, 8, 10, + 6, -27, 4, -0, 1, 53, 32, -20, + -19, 7, 9, 14, 6, 23, 17, 1, + -4, -17, -17, 4, 14, 2, 6, -11, + -14, 28, -7, 26, 13, 11, 1, -20, + 3, -9, 5, -12, -22, -12, -18, 31, + -8, -21, 14, -2, 7, -2, -40, 11, ], ]; internal static readonly short[][] MiddleGameRookTable = [ [ - -72, -97, 13, -36, -51, -66, -49, -4, - 65, 96, 61, -3, 3, 46, -13, -19, - -72, 15, 23, 3, 15, -32, -58, -9, - 27, 75, 47, 34, 30, 3, -3, -10, - -21, 74, -8, 19, 13, 29, -38, -26, - -51, 12, 10, 15, -1, -12, -20, -78, - 28, 2, 20, -7, -10, 21, -21, -26, - -12, 22, 28, 30, 24, 2, 14, 8, - ], - [ - -1, 19, -40, 11, -24, -73, -3, -55, - 48, 48, 4, 5, -7, 25, -12, -10, - 49, -35, 16, 21, 25, -9, 51, 15, - -8, 48, 0, 24, 12, 11, 11, -8, - -10, 23, -8, -3, 1, 7, -15, 5, - -38, 9, -7, -1, 17, -10, -20, 4, - -97, -0, -8, 11, 12, 0, -4, -3, - -39, -100, 20, 23, 22, -0, 30, 20, - ], - [ - 47, -13, 59, -1, 37, -17, -14, -48, - -38, 13, 16, -29, -4, 29, -45, -37, - 19, 40, 32, 8, 25, 25, 14, -6, - -0, -16, 21, 11, 29, -1, -1, 2, - -5, 16, 5, 1, -1, -23, -5, -11, - -28, -7, 33, 4, -14, -3, -6, -25, - -43, -4, -10, 10, 12, -5, -2, -9, - -34, 6, -79, 20, 26, 1, 22, 6, - ], - [ - -4, -102, -45, 14, -75, -97, -42, -11, - 4, 8, 21, -7, 9, -44, -47, -42, - 25, 1, -35, 75, -16, 4, -31, -7, - 38, 13, 59, -9, -10, 46, -34, -15, - 22, 14, 13, 23, 7, 14, 9, 25, - 30, 0, -16, 3, 27, 35, -32, 12, - -6, 12, 26, -18, 7, 60, -28, 10, - -9, 4, 37, -23, 32, 12, 39, 14, - ], - [ - -1, 2, -5, -7, 12, -26, 4, -5, - -40, -60, -60, -68, -19, -46, -45, 4, - -11, 8, -50, -9, 2, -14, -19, -21, - -16, 21, -32, -20, 26, 53, 1, 3, - 1, 14, -12, -34, -3, 24, 1, 10, - 13, 39, 4, 5, 41, 9, 3, 17, - 16, 20, 20, 24, 37, 4, 18, 14, - 38, 34, 31, 33, -75, 5, 35, 55, - ], - [ - -21, -40, -58, -2, -53, -96, -77, 18, - -22, -32, -22, -12, -0, 53, 34, 28, - -12, 15, -53, 14, 14, -47, 43, -12, - -20, 17, -20, 25, -13, 48, 13, 16, - -10, -36, 21, 17, 21, 35, 5, -14, - 4, 16, -22, 25, 4, 15, 41, 35, - -14, -32, 20, 4, 23, 31, 20, 10, - -3, 8, 11, 16, 21, -37, 32, 5, - ], - [ - -24, -19, -25, -16, -3, 31, 60, 2, - -21, -24, -14, -15, -21, 24, 53, 52, - -16, 19, -4, -10, 16, 38, 44, 12, - -8, -2, -16, 14, -0, 16, 18, 12, - -11, -32, -7, -7, -9, -21, 13, -15, - -23, -8, -9, -6, -4, -3, 9, 2, - -8, -13, -3, -0, 9, 12, 47, -10, - -3, 13, 15, 16, 21, 4, -110, -30, - ], - [ - -17, 51, -77, -44, 16, -8, -7, 20, - -22, -18, -19, -22, -16, -5, 22, -4, - -9, 12, -31, -16, 19, 7, 61, 67, - -6, -16, -20, 6, 0, 4, 15, 24, - -19, -33, -8, -3, 2, -7, 22, 17, - -36, -9, -16, -0, 7, 1, 15, 30, - -24, -17, -2, 10, 8, 15, 31, 63, - -4, 11, 13, 8, 18, 14, 32, -107, - ], - [ - 35, 85, -4, 0, 10, -24, -57, 46, - -15, 59, 65, -11, 32, -23, -42, -14, - 19, 23, 92, 60, -54, 35, -25, -42, - -6, -7, 37, 24, -29, 5, 14, -9, - 42, -52, -37, -0, -14, 3, -45, -26, - -45, 25, 7, -7, -13, 42, -49, -32, - -15, -36, -5, -6, -1, -5, -22, -37, - -4, -5, 12, 12, 22, -6, 17, -2, - ], - [ - 83, -91, 58, 58, 6, -6, -15, -59, - 36, -2, 29, 41, 72, -2, -45, 4, - 6, 72, 78, 23, 7, 25, -19, -16, - 12, 45, 54, 17, 27, 11, -4, 7, - -19, -57, 8, 37, -21, -57, -56, 15, - 6, -24, -81, -56, -34, 6, -38, -45, - -14, -9, -50, 26, 14, -22, -6, -26, - -24, 2, 10, -3, 9, -12, 12, -3, - ], - [ - 52, -70, 3, -13, -39, 39, 115, -36, - 3, 35, -35, 35, -53, -40, 11, 15, - 72, 29, -5, 11, 26, 49, 21, -13, - 39, 12, -17, 10, 21, 36, 16, 15, - -23, 22, -28, 31, -76, -2, -10, -24, - -25, 2, -22, 27, -15, -22, -14, -34, - -35, -54, 10, -56, -20, 2, -0, -20, - -20, 9, 9, -2, 14, 7, 20, 2, - ], - [ - -35, -53, -9, -59, 71, 76, -16, -19, - 23, -5, -28, 33, 24, -6, 14, 22, - -18, -4, -6, -32, 28, 55, -1, 13, - 13, -18, -3, -28, 28, 54, -1, -12, - -39, -1, -24, -9, 59, 16, -6, -5, - -11, -9, -9, -8, 36, -28, -41, -20, - -15, -18, 8, -15, 17, 18, -2, -13, - -19, -2, 18, 4, 27, -9, 13, -9, - ], - [ - -1, 17, -45, -12, 11, -48, -87, 1, - -16, -22, 1, 44, 32, 56, 45, 63, - -21, -6, 20, -11, 46, 4, -9, 39, - -27, 27, -26, 6, 5, 1, -1, 19, - -44, -11, -2, -21, 16, -4, 26, -1, - -15, -6, -38, -17, -9, 31, -16, 19, - -50, -14, 10, -2, 21, -73, 15, 27, - -13, 9, 9, 13, 13, -10, 22, 9, - ], - [ - -42, -10, -12, 23, 45, 35, 74, 21, - -24, -18, 31, 24, 19, 72, 31, 31, - -14, -3, -1, 6, 21, 71, 41, 28, - -30, -6, 1, 23, 16, 22, 51, 19, - -28, -38, -15, 8, -25, -8, -12, -7, - -54, -24, -23, 1, 5, -21, -7, -20, - -34, -20, -17, -23, 5, 11, -86, -9, - -28, -11, -2, -8, 1, -11, -41, -3, - ], - [ - -34, 15, -11, 31, -0, 83, 44, 53, - -27, -18, -22, -9, 18, 89, 53, 92, - -20, -1, -12, -6, 27, 24, 88, 101, - -34, 7, -31, 8, 14, 21, 17, -5, - -55, -26, -20, -30, -20, -21, 11, -1, - -44, -35, -29, -12, -5, -9, 1, 1, - -33, -26, -27, -18, -5, 5, 11, -81, - -30, -14, -12, -7, -2, -11, 16, -26, - ], - [ - -106, 31, 77, 22, -34, 60, 7, 27, - -0, 90, 116, -8, 35, 129, 33, 31, - -50, 59, 31, 86, 33, 135, 71, -6, - -94, 93, 112, 47, -111, -72, 64, -118, - -67, -12, 44, 13, 0, -36, -22, -105, - 26, -82, -47, -85, 19, -33, 43, -76, - -22, 40, 19, -20, -90, -84, 64, -61, - -103, 68, 16, -32, -41, -8, -57, -56, - ], - [ - 55, 7, 75, -2, 30, 17, 84, 56, - 94, 77, 72, 64, 66, 67, 60, 3, - 71, 82, 92, -22, 17, 16, 32, 21, - 4, -44, -56, 1, -16, 7, -24, 32, - -41, 3, 22, -64, -41, -3, -1, -49, - -84, 16, 36, 3, -18, 26, 62, 102, - 15, 11, -0, -36, -49, -30, -72, -7, - -179, -86, -130, -97, -58, -5, -120, -165, - ], - [ - -12, -10, 71, 29, 67, 86, 52, 77, - 59, -5, 75, 20, 70, 76, 71, -34, - 50, 12, -34, 94, 5, -19, 31, 25, - -10, 41, -32, -44, -27, 61, 20, 51, - 45, 13, -9, 2, -26, 54, 28, -7, - -72, -107, -5, -9, -2, -0, 28, -33, - 43, 58, 46, -4, -10, -5, -40, -15, - -280, -164, -120, -80, -87, -32, -8, -120, - ], - [ - 100, 75, -10, -7, -19, 10, 8, 63, - 46, 28, -0, 27, 81, -106, 36, 12, - -47, -56, 37, -18, 14, 9, 27, -7, - 42, 35, 39, -34, 67, 26, 35, 72, - -25, 17, 49, -22, 58, 7, 64, 3, - 27, 19, 57, 21, -56, -53, 29, -37, - -5, -51, -74, 26, -25, 38, 47, 13, - -262, -96, -60, -50, -121, -9, -27, -91, - ], - [ - 54, 17, -2, 54, 5, -14, 69, 77, - 36, 59, 119, 67, 8, 22, -38, 10, - -36, 30, -23, 19, 8, 89, 61, -42, - 3, -51, 15, -28, -34, 34, -26, 30, - 10, 44, 28, 19, 69, -85, 106, -5, - -9, -34, 16, -69, 40, 37, 34, 30, - -32, -6, 4, -51, -27, 9, -75, -78, - -132, -6, -74, -144, -62, -59, -58, -32, - ], - [ - 46, 36, 8, -29, 10, -16, -62, 65, - -26, 67, -40, 39, 68, -30, 60, 36, - -30, 9, 27, -15, -13, -9, 65, 66, - -28, -39, 17, -4, 33, 26, -28, 78, - -32, -53, -7, 36, 65, -31, 44, -17, - 23, 6, 17, -34, -1, 9, -17, -10, - 9, -5, -27, -61, 34, -1, 9, 21, - -74, -88, -40, -29, -67, -58, 17, -23, - ], - [ - 54, 2, -23, -56, 40, 47, -7, 43, - -11, 13, 9, 120, 35, -17, 97, -65, - -13, 16, 71, 59, 9, 38, 97, 28, - -10, -8, 9, 46, 62, 50, 56, -5, - 14, 8, -41, 35, 45, -8, -9, 2, - -65, -19, -45, 13, 50, 20, 60, -10, - -63, -2, -64, 42, -42, 10, -16, -47, - -187, -116, -46, -34, -47, -94, -38, -89, - ], - [ - 24, 18, -2, 73, 29, -45, 29, -6, - 6, 109, 30, 50, 84, 64, 113, 19, - 21, -4, 126, 25, 23, 67, 68, -3, - 27, -28, 16, -5, -12, 63, 33, 6, - 7, -54, -32, -111, 27, 124, 9, -8, - 15, -16, -41, 9, -71, -55, 52, -61, - -49, -98, 13, -10, -12, -27, -29, 53, - -245, -103, -90, -18, -105, -12, 7, -89, + -62, -99, 18, -33, -50, -65, -49, -4, + 68, 100, 62, -1, 4, 47, -10, -18, + -67, 19, 24, 3, 14, -30, -57, -10, + 28, 80, 46, 33, 29, 2, -5, -13, + -19, 75, -10, 15, 10, 26, -41, -30, + -51, 12, 10, 14, -1, -14, -22, -78, + 26, 1, 19, -7, -10, 20, -24, -28, + -13, 21, 27, 30, 23, 2, 11, 7, + ], + [ + -3, 17, -41, 12, -25, -73, -3, -53, + 50, 48, 6, 4, -7, 25, -9, -8, + 51, -34, 15, 22, 26, -8, 53, 15, + -6, 48, -1, 24, 12, 12, 11, -8, + -10, 22, -9, -3, 1, 7, -15, 5, + -39, 8, -7, -2, 16, -11, -22, 3, + -97, -2, -8, 11, 13, -0, -5, -4, + -39, -100, 20, 23, 22, -0, 29, 21, + ], + [ + 51, -16, 63, 1, 39, -14, -13, -47, + -34, 16, 18, -28, -4, 31, -41, -35, + 21, 43, 34, 9, 26, 27, 16, -5, + -1, -16, 21, 11, 28, -2, -1, 1, + -7, 15, 4, -0, -3, -24, -7, -13, + -30, -9, 32, 2, -16, -5, -10, -27, + -42, -5, -10, 9, 12, -6, -5, -12, + -34, 4, -81, 19, 24, 0, 19, 6, + ], + [ + -0, -102, -41, 16, -73, -93, -42, -8, + 8, 11, 26, -3, 11, -42, -44, -36, + 26, 1, -32, 74, -14, 3, -28, -8, + 36, 11, 61, -9, -12, 45, -36, -18, + 20, 14, 14, 25, 6, 13, 8, 22, + 26, -3, -16, 2, 28, 33, -36, 8, + -7, 11, 26, -19, 5, 58, -31, 7, + -9, 3, 37, -24, 31, 11, 36, 14, + ], + [ + 0, 6, -2, -4, 10, -25, 4, -6, + -38, -56, -56, -67, -18, -44, -41, 7, + -11, 11, -49, -7, 8, -11, -17, -22, + -17, 21, -32, -20, 27, 53, 0, 1, + -0, 13, -13, -34, -5, 23, -2, 8, + 10, 36, 4, 5, 41, 7, 0, 15, + 15, 18, 20, 24, 38, 3, 15, 11, + 37, 32, 30, 33, -77, 4, 31, 54, + ], + [ + -18, -41, -58, 5, -50, -94, -72, 20, + -19, -27, -18, -10, 0, 56, 38, 35, + -13, 16, -52, 16, 18, -44, 48, -12, + -21, 15, -20, 25, -12, 48, 12, 14, + -14, -38, 18, 16, 19, 33, 3, -17, + 1, 12, -22, 25, 5, 15, 37, 33, + -15, -36, 19, 3, 23, 30, 15, 7, + -4, 5, 10, 16, 21, -39, 29, 5, + ], + [ + -23, -20, -25, -16, -4, 32, 60, 4, + -19, -23, -13, -15, -22, 25, 55, 55, + -14, 20, -4, -9, 17, 40, 46, 14, + -8, -2, -17, 14, -1, 16, 19, 12, + -11, -32, -8, -8, -10, -22, 13, -16, + -24, -9, -9, -7, -4, -5, 8, 1, + -8, -14, -3, -1, 8, 10, 45, -11, + -3, 12, 14, 15, 21, 3, -111, -30, + ], + [ + -17, 48, -78, -42, 16, -8, -6, 24, + -20, -17, -18, -22, -15, -3, 24, -1, + -8, 11, -30, -15, 21, 8, 62, 68, + -5, -15, -19, 7, 0, 4, 15, 25, + -20, -33, -9, -4, 1, -7, 22, 17, + -38, -10, -16, -2, 6, -0, 13, 29, + -24, -17, -2, 10, 8, 13, 29, 61, + -4, 9, 12, 7, 18, 14, 30, -108, + ], + [ + 37, 83, -2, 0, 11, -23, -54, 46, + -12, 58, 67, -10, 31, -22, -38, -13, + 21, 22, 93, 60, -52, 35, -24, -41, + -6, -9, 39, 24, -29, 5, 14, -8, + 41, -53, -37, -1, -16, 1, -45, -25, + -46, 25, 7, -8, -13, 42, -48, -31, + -16, -38, -5, -7, -2, -6, -22, -38, + -5, -6, 11, 11, 20, -7, 15, -1, + ], + [ + 84, -91, 58, 57, 6, -5, -13, -57, + 40, -0, 31, 45, 71, -0, -44, 6, + 8, 73, 77, 25, 6, 24, -20, -15, + 10, 45, 55, 17, 26, 10, -6, 6, + -20, -55, 9, 37, -21, -56, -58, 14, + 4, -25, -82, -57, -34, 7, -40, -46, + -15, -9, -51, 25, 13, -22, -5, -26, + -24, 1, 10, -4, 8, -13, 10, -3, + ], + [ + 54, -69, 4, -11, -38, 40, 117, -31, + 5, 35, -34, 34, -52, -39, 10, 15, + 70, 30, -3, 11, 28, 50, 22, -14, + 41, 13, -18, 12, 19, 35, 15, 14, + -25, 21, -27, 30, -77, -3, -9, -25, + -27, 1, -21, 27, -14, -21, -13, -35, + -35, -55, 10, -57, -20, 1, -0, -21, + -21, 7, 7, -4, 13, 7, 18, 3, + ], + [ + -33, -53, -10, -58, 73, 77, -15, -16, + 25, -3, -27, 34, 24, -5, 15, 23, + -18, -3, -5, -31, 27, 56, 0, 13, + 11, -17, -5, -29, 27, 53, -1, -14, + -40, -1, -24, -11, 57, 15, -6, -7, + -11, -10, -7, -9, 36, -28, -40, -20, + -17, -20, 7, -16, 18, 17, -2, -15, + -18, -3, 17, 3, 26, -9, 11, -9, + ], + [ + 0, 16, -43, -9, 13, -49, -82, 3, + -14, -20, 3, 45, 32, 59, 47, 67, + -20, -4, 21, -9, 47, 5, -7, 40, + -28, 27, -27, 6, 3, 3, -1, 18, + -45, -12, -3, -22, 15, -4, 25, -2, + -16, -7, -38, -18, -9, 31, -17, 18, + -52, -15, 8, -4, 20, -74, 13, 25, + -14, 6, 6, 11, 12, -11, 19, 9, + ], + [ + -42, -12, -13, 25, 45, 35, 74, 23, + -23, -17, 33, 25, 19, 72, 35, 35, + -12, -3, 0, 7, 23, 73, 42, 29, + -31, -6, 0, 24, 16, 23, 52, 19, + -29, -38, -16, 7, -26, -8, -11, -8, + -55, -24, -23, -0, 5, -23, -8, -20, + -34, -21, -17, -24, 4, 9, -88, -10, + -28, -13, -3, -9, -0, -12, -43, -2, + ], + [ + -34, 13, -13, 31, -1, 82, 41, 54, + -25, -18, -21, -10, 16, 87, 52, 93, + -18, -1, -12, -5, 29, 24, 87, 101, + -33, 8, -32, 9, 15, 21, 18, -4, + -54, -25, -21, -30, -21, -21, 11, -1, + -45, -34, -28, -12, -5, -10, 0, 1, + -32, -24, -26, -18, -5, 4, 9, -80, + -30, -14, -12, -7, -2, -11, 15, -26, + ], + [ + -107, 28, 73, 15, -40, 57, 3, 23, + -5, 89, 116, -11, 34, 136, 25, 18, + -53, 57, 25, 83, 32, 131, 72, -4, + -92, 91, 106, 42, -111, -73, 65, -131, + -68, -15, 46, 11, 5, -32, -27, -97, + 26, -82, -47, -86, 22, -33, 50, -75, + -22, 49, 23, -12, -85, -76, 66, -56, + -108, 70, 15, -30, -36, 3, -36, -55, + ], + [ + 49, 9, 71, -5, 24, 9, 68, 48, + 91, 72, 72, 65, 66, 61, 56, -1, + 68, 79, 85, -21, 22, 18, 22, 22, + 3, -46, -56, 7, -12, 4, -20, 35, + -42, 4, 22, -61, -39, 2, 6, -49, + -85, 19, 37, 4, -10, 30, 67, 106, + 18, 12, -2, -41, -43, -26, -65, 2, + -193, -83, -129, -95, -52, 3, -113, -167, + ], + [ + -23, -20, 76, 22, 60, 89, 46, 68, + 45, -11, 73, 12, 65, 74, 68, -45, + 44, 8, -35, 94, 3, -16, 31, 16, + -12, 43, -32, -50, -22, 61, 24, 53, + 41, 17, -4, 4, -23, 62, 29, 1, + -78, -103, -8, -5, 3, 9, 29, -18, + 40, 56, 51, -9, -8, 1, -36, -8, + -282, -166, -121, -81, -80, -19, 15, -116, + ], + [ + 94, 77, -16, -10, -19, 12, 3, 54, + 33, 25, -10, 22, 84, -111, 30, 3, + -49, -59, 35, -19, 12, 10, 23, -9, + 37, 37, 37, -38, 67, 27, 37, 73, + -23, 21, 44, -19, 62, 9, 67, 6, + 35, 17, 54, 20, -51, -45, 35, -32, + -3, -49, -71, 29, -21, 40, 56, 17, + -259, -87, -60, -49, -112, -1, -27, -99, + ], + [ + 50, 8, -11, 39, 4, -16, 70, 71, + 32, 54, 109, 59, 6, 11, -43, -1, + -47, 26, -20, 19, 3, 87, 54, -41, + 1, -41, 21, -32, -35, 31, -23, 30, + 13, 44, 38, 21, 75, -77, 109, -10, + -3, -29, 23, -68, 39, 38, 46, 39, + -27, -13, 0, -46, -32, 16, -65, -70, + -131, -2, -70, -134, -69, -57, -41, -33, + ], + [ + 43, 33, 4, -35, 8, -14, -66, 63, + -32, 58, -48, 40, 69, -32, 53, 27, + -37, 8, 34, -13, -8, -14, 56, 58, + -26, -42, 22, -6, 32, 28, -31, 86, + -28, -52, -6, 42, 66, -27, 45, -15, + 25, 13, 17, -26, 0, 13, -19, -11, + 13, -2, -16, -47, 36, 4, 7, 22, + -76, -82, -41, -30, -71, -53, 5, -28, + ], + [ + 52, 4, -28, -61, 42, 45, -7, 41, + -14, 11, 2, 115, 28, -18, 95, -68, + -14, 15, 75, 58, 7, 38, 90, 25, + -9, -2, 15, 49, 59, 42, 60, -4, + 16, 13, -31, 37, 45, -11, -14, 4, + -63, -8, -43, 15, 48, 21, 58, -11, + -60, 3, -56, 49, -42, 12, -13, -46, + -197, -112, -43, -41, -46, -97, -38, -95, + ], + [ + 20, 11, -3, 69, 27, -47, 31, -5, + 2, 106, 31, 54, 85, 59, 107, 16, + 13, -5, 120, 24, 13, 67, 69, 0, + 28, -27, 13, -3, -13, 67, 34, 10, + 11, -51, -30, -111, 28, 125, 10, -9, + 19, -13, -39, 14, -67, -44, 55, -62, + -46, -95, 13, -8, -10, -24, -28, 55, + -251, -94, -95, -11, -102, -22, 4, -93, ], ]; internal static readonly short[][] EndGameRookTable = [ [ - 24, 50, 4, -1, 33, 9, 10, 15, - -30, -37, -1, 7, 5, -29, 9, 9, - 10, -8, 3, -0, -7, -5, -6, -0, - -12, -17, -21, -9, -8, -20, 13, -10, - -3, -20, 35, 16, 16, -15, 10, 16, - -11, -1, -6, -12, -13, 9, 8, 42, - -44, 25, 15, 10, 9, -14, 26, 18, - -32, -5, -11, -18, -25, -31, 7, 20, - ], - [ - 7, 46, 32, 24, 24, 45, 13, 24, - -24, 3, 24, 12, 19, -1, 32, 0, - -26, 35, 11, -19, -26, 5, -25, 5, - 2, -17, 26, -11, -7, -19, -20, -6, - -3, -17, 12, 11, 5, -10, -19, -22, - -9, 15, 15, 10, -23, -1, -3, -19, - -25, -0, 8, 5, -3, -10, 13, -13, - -74, -104, 33, 15, 1, -3, 4, 24, - ], - [ - 6, 22, 38, 29, 11, -5, 19, 24, - 24, 2, 16, 44, 26, -2, 50, 33, - -9, -10, -0, -3, -12, -22, -2, -3, - -7, 9, 21, 1, -5, 9, -5, -16, - 28, -16, 0, -3, 3, 3, -4, -17, - 3, 10, 8, -6, 8, 8, -14, 8, - -5, -55, -11, -17, -13, 2, -1, -11, - -34, -51, -147, 8, -4, -12, 16, 29, - ], - [ - 17, 35, 20, 25, 45, 33, 38, 28, - 1, 17, -13, 2, 22, 17, 15, 29, - -24, 6, 13, -17, 4, 1, -3, 11, - -16, -17, -16, 35, 12, -25, -9, 7, - -5, 12, 15, 10, 1, -6, -5, 4, - -12, 15, 8, 24, -9, -26, 5, -7, - -1, -5, -39, 26, -25, -24, 2, -29, - -27, -19, -36, -73, -21, -15, -34, 4, - ], - [ - 24, 22, 12, 16, 9, 27, -2, 18, - 15, 34, 33, 51, 28, 28, 19, -8, - 18, 2, 16, -8, 7, 3, 8, -6, - 4, -13, 23, 28, 2, -12, -13, 7, - 22, -7, 11, 26, 24, -19, -4, -20, - 11, 3, 15, 3, 3, -6, -15, -8, - -22, 1, -8, -35, -24, -7, -38, -33, - -2, -18, -3, -30, -114, -45, -24, -30, - ], - [ - 30, 17, 23, 6, 20, 40, 32, 15, - 16, 25, 14, 21, 12, -4, -2, -11, - 3, 7, 23, 5, -4, 21, -3, 7, - 10, -7, 12, 1, 10, -5, 2, -3, - 14, 18, -12, 6, 2, -2, 16, 5, - -5, -4, 10, -3, 3, 2, -26, -11, - -6, 13, -6, -18, -20, -10, -46, -24, - -3, 1, 5, 2, -4, -132, -51, -47, - ], - [ - 27, 24, 28, 24, 10, -7, -8, 7, - 21, 28, 31, 30, 25, 5, -7, -10, - 19, 1, 15, 12, 0, -17, -16, -13, - 11, 15, 15, -3, -2, -4, 4, -4, - 13, 18, 6, 1, 7, 10, -9, -8, - 9, 4, 4, 7, -0, 0, -12, -2, - -2, 8, 0, 0, -4, -12, -34, -22, - 18, 12, 15, 8, 2, 9, -251, -58, - ], - [ - 16, -6, 28, 28, -9, 4, -6, -27, - 10, 2, 2, 27, 5, 8, -13, 10, - 2, 2, 14, 4, -6, -3, -20, -54, - 4, 11, 0, -2, -9, 2, -10, -26, - -3, 11, -4, -0, -8, 16, 1, 0, - 25, -9, 2, 11, -5, 8, -22, -27, - 8, 2, 9, -1, 15, 4, -8, -60, - 36, 29, 16, 28, 13, 16, 37, -126, - ], - [ - -9, -16, 16, 9, 16, -4, 12, -18, - -4, -10, -9, 11, 5, 9, 22, 10, - -15, -8, -4, -16, 6, -5, 15, 23, - 0, 13, 7, 6, 18, 7, -13, 10, - -26, 31, 24, 15, -7, -2, -1, -12, - 4, 6, -2, 6, 4, -26, 4, 7, - -15, 13, 2, 15, -6, -1, -2, 3, - -24, -17, -9, -13, -21, -28, -13, 6, - ], - [ - -4, 33, 1, -7, 23, -4, -0, 32, - 3, 11, 1, 12, -14, 21, 23, 0, - 12, -14, -19, -4, 5, 21, 16, 12, - -0, -15, -10, -3, -6, -0, 6, -11, - 5, 27, -0, -13, 5, 15, 14, -0, - -10, 10, 17, 9, 0, -15, -22, 4, - -15, -6, 14, -13, -13, -3, -14, -11, - -7, -16, -24, -8, -18, -26, -16, 13, - ], - [ - 3, 30, 17, 3, 18, -19, -40, 20, - 10, 11, 23, -5, 35, 24, 10, 6, - -6, -0, 13, 2, -5, -10, 2, 12, - -3, 3, 10, 11, -13, -8, 3, 6, - 11, -9, 6, -6, 28, -1, 1, -1, - -0, -4, 3, -18, 3, 4, -16, -7, - -6, 0, -17, 17, 0, -19, -21, -5, - -10, -8, -10, -12, -23, -30, -12, -1, - ], - [ - 27, 29, 16, 21, -14, -19, -1, 19, - 11, 21, 29, -0, 5, 13, 15, -0, - 22, 16, 13, 13, -9, -14, 8, 2, - 5, 16, 13, 8, 2, -27, 7, 2, - 16, 2, 9, -3, -11, -5, 5, -12, - -1, -2, -4, -11, -17, 2, -10, -10, - -15, -6, -13, -2, -7, -7, -18, -10, - -10, -9, -13, -17, -41, -30, -7, 10, - ], - [ - 14, 10, 21, 8, 0, 17, 22, 9, - 21, 24, 19, 2, 1, 0, -2, -7, - 20, 12, 3, 17, -2, 9, 14, 1, - 21, -2, 15, 6, 2, 11, 0, -9, - 17, 5, 1, 3, -8, 0, -21, -10, - 2, -10, -2, -1, -8, -25, -18, -18, - 10, -3, -14, -6, -16, 9, -25, -25, - -11, -19, -15, -15, -25, -18, -13, 2, - ], - [ - 29, 16, 8, -4, -12, -16, -26, -8, - 19, 22, 3, 8, 4, -6, -3, -8, - 16, 5, 2, 10, -6, -14, -8, -10, - 17, 8, -2, -2, -3, 4, -9, -14, - 14, 11, -2, -6, 8, 7, 3, -3, - 15, 6, -1, -7, -6, 7, -9, 3, - 11, -1, -6, -1, -11, -10, 31, -19, - -12, -14, -14, -9, -15, -16, 21, 2, - ], - [ - 17, 6, 12, -10, 3, -27, -11, -19, - 14, 17, 16, 15, 5, -5, -9, -36, - 14, 9, 2, 6, -1, -5, -25, -31, - 17, 0, 9, -4, -9, 1, 4, -6, - 21, 1, -3, 18, 16, 16, -10, -1, - 13, -2, -7, 1, -6, 9, 2, 5, - 13, 8, -2, -6, -4, 3, -1, 24, - -15, -6, -8, -15, -12, -8, 2, -14, - ], - [ - 15, 7, -25, 19, 25, -20, -11, -2, - -27, -31, -30, 15, -10, -53, -6, -11, - 10, -1, 15, -19, -9, -33, -29, -6, - 17, -5, -26, -9, 43, 2, -15, 26, - 14, 49, 5, 12, -7, 8, 14, 21, - -18, 26, 16, 25, 13, -5, -12, 14, - -24, 1, 4, -0, 19, 10, -56, 1, - 25, -33, 1, 18, 9, -20, 28, 28, - ], - [ - -38, -16, -14, 18, -12, -12, -29, 4, - -33, -6, -31, -14, -20, -10, -24, 9, - -10, 3, -38, 15, 5, -10, -9, -3, - 18, 28, 4, 45, -9, -1, 16, -2, - 11, 17, -22, 26, 18, 14, 18, 31, - -1, -29, -10, 19, -11, -12, 13, -43, - 11, -4, -20, 17, 0, -11, 8, -26, - 29, 5, 47, 32, 7, -36, 16, 59, - ], - [ - -12, -6, -10, -17, 2, -47, -27, -7, - -27, 14, -15, -4, -23, -23, -22, 14, - -9, -12, -7, -33, 10, 0, -5, 1, - 19, -8, -4, 11, 22, -35, -22, 7, - -23, -4, 1, -2, 23, 7, -20, 19, - 18, 33, -26, 10, -13, 17, -18, 10, - -8, -21, -6, 19, -8, 13, 18, 22, - 69, 51, -0, 39, 9, -20, 4, 63, - ], - [ - -15, -6, 13, 9, 1, -23, -23, -3, - -7, 2, 16, 7, -27, 23, -16, 8, - 26, 10, -19, -13, -26, 10, -7, 2, - 1, 1, 1, 23, -5, 5, -7, -9, - -7, -15, -10, -1, -14, 5, -1, 6, - 13, -21, -10, -22, 18, 16, 4, 32, - -9, 13, 2, -18, 5, -2, -36, -24, - 55, 29, 7, -8, 48, -27, -13, 30, - ], - [ - 6, 5, 6, -10, -7, -16, -8, -19, - 9, 4, -27, -25, 16, -11, 2, -6, - 32, 3, 5, -14, 5, -12, -1, 16, - 8, 31, 6, -7, -10, -33, 5, -13, - -4, -16, -5, -18, -24, 28, -1, 15, - -3, -6, -3, 22, -2, -10, 5, -5, - 1, -8, -13, 14, -31, -9, 15, 19, - 20, 1, 11, 33, -8, 10, 12, 17, - ], - [ - 12, 17, -5, 12, -14, 22, 37, -38, - 22, 12, 17, -5, -11, 4, -31, -11, - 28, 3, -25, 9, -27, -2, -11, -11, - 0, 2, -8, 4, -29, 10, 15, -8, - 12, 10, -0, 0, -3, 11, -10, 15, - -33, -9, -23, 16, 1, -24, 10, -10, - -1, -2, 8, 18, 0, -4, 3, 5, - 4, 14, -16, -14, 13, 6, -2, 16, - ], - [ - 15, 0, 2, -9, 5, -20, -10, -23, - 13, -1, 11, -9, -1, 21, -42, 12, - 1, 7, -17, 1, 5, -12, -24, -11, - 14, -1, -12, 2, -21, -24, -17, -8, - 6, 21, 13, 4, -8, -1, 6, -11, - 23, 12, 19, 10, -32, 21, -36, 16, - 14, -12, 26, -29, 4, -11, -5, -12, - 36, 24, 7, -1, -0, 22, -24, 52, - ], - [ - 13, -1, 3, -17, -21, 11, -14, -7, - 23, -15, -12, -29, -33, -10, -29, 7, - 25, 6, -25, -2, 10, 3, -29, 18, - 11, 11, 4, -12, 10, 5, -20, -4, - 1, -0, 12, 23, -15, -16, 6, -27, - -18, 10, -21, -8, 31, 24, 14, -10, - 27, 5, -24, -10, -3, 4, -26, -6, - 48, 20, -2, -8, 17, 7, 21, 44, + 21, 50, 3, -2, 33, 9, 11, 15, + -31, -39, -2, 6, 5, -29, 9, 10, + 8, -10, 3, 1, -5, -5, -4, 2, + -13, -19, -21, -8, -8, -18, 15, -8, + -4, -20, 36, 17, 17, -14, 11, 18, + -11, -1, -6, -12, -13, 10, 8, 41, + -41, 25, 14, 8, 7, -15, 26, 16, + -31, -4, -12, -19, -26, -32, 7, 21, + ], + [ + 8, 46, 34, 26, 26, 46, 14, 25, + -24, 2, 23, 14, 20, -0, 31, 1, + -28, 36, 13, -19, -26, 5, -24, 5, + 1, -17, 26, -12, -7, -19, -19, -6, + -4, -17, 12, 11, 4, -10, -20, -23, + -9, 15, 15, 10, -23, -1, -4, -18, + -25, 0, 8, 5, -3, -10, 13, -15, + -75, -103, 33, 14, 0, -5, 3, 23, + ], + [ + 4, 23, 38, 29, 12, -5, 20, 25, + 22, 1, 16, 44, 27, -2, 48, 32, + -10, -11, -1, -3, -12, -23, -1, -4, + -6, 10, 22, 1, -5, 9, -5, -16, + 29, -17, 0, -3, 4, 4, -4, -16, + 4, 11, 9, -4, 9, 7, -14, 9, + -9, -56, -11, -16, -14, 2, 0, -10, + -35, -51, -145, 8, -4, -12, 16, 29, + ], + [ + 17, 36, 20, 24, 46, 32, 39, 28, + -1, 16, -13, 1, 22, 16, 14, 27, + -24, 7, 13, -15, 4, 3, -3, 11, + -14, -17, -15, 36, 14, -23, -7, 8, + -5, 10, 15, 12, 3, -6, -5, 3, + -14, 15, 7, 25, -9, -26, 4, -6, + -4, -8, -39, 28, -23, -24, 1, -28, + -29, -21, -37, -72, -22, -17, -36, 4, + ], + [ + 24, 21, 13, 16, 11, 28, -0, 19, + 15, 32, 32, 51, 29, 29, 19, -8, + 18, 1, 17, -8, 6, 3, 8, -6, + 5, -12, 23, 28, 2, -12, -12, 7, + 21, -7, 11, 26, 26, -17, -3, -20, + 11, 3, 15, 2, 3, -6, -15, -9, + -24, -1, -9, -35, -24, -7, -37, -34, + -3, -20, -5, -30, -111, -45, -24, -30, + ], + [ + 30, 17, 23, 4, 19, 40, 31, 14, + 15, 23, 13, 21, 13, -5, -3, -14, + 3, 6, 22, 5, -5, 20, -5, 6, + 10, -6, 12, 1, 10, -5, 3, -2, + 15, 19, -11, 7, 4, -1, 18, 6, + -3, -3, 9, -3, 3, 2, -24, -11, + -6, 14, -5, -18, -19, -10, -44, -24, + -4, 2, 3, 1, -4, -129, -51, -48, + ], + [ + 27, 25, 29, 24, 11, -6, -7, 6, + 20, 28, 31, 30, 25, 5, -7, -10, + 18, 1, 15, 11, -0, -18, -16, -13, + 11, 15, 15, -3, -1, -3, 3, -4, + 13, 18, 6, 1, 7, 10, -9, -9, + 10, 4, 4, 8, 0, 1, -12, -1, + -2, 8, 0, 0, -4, -12, -34, -23, + 18, 12, 14, 7, 2, 9, -250, -58, + ], + [ + 17, -5, 28, 28, -9, 3, -6, -28, + 9, 2, 2, 27, 6, 7, -13, 9, + 1, 2, 13, 4, -7, -2, -21, -55, + 3, 11, -1, -2, -9, 3, -10, -27, + -3, 12, -4, 1, -8, 17, 1, 0, + 26, -8, 2, 12, -4, 9, -21, -27, + 7, 2, 8, -1, 15, 4, -7, -60, + 35, 29, 15, 27, 12, 16, 38, -124, + ], + [ + -10, -17, 14, 8, 16, -5, 11, -18, + -6, -10, -11, 10, 5, 8, 20, 9, + -16, -8, -5, -16, 5, -5, 14, 23, + -0, 13, 6, 5, 17, 6, -12, 11, + -27, 30, 23, 15, -6, -1, -1, -11, + 3, 5, -2, 6, 5, -25, 5, 8, + -14, 12, 2, 16, -4, 2, 0, 6, + -23, -17, -8, -12, -19, -25, -10, 7, + ], + [ + -5, 33, 1, -6, 23, -5, -1, 31, + 2, 10, 0, 11, -13, 20, 23, 0, + 11, -15, -19, -4, 5, 21, 16, 12, + 0, -16, -11, -3, -6, -0, 7, -10, + 6, 26, -1, -13, 5, 14, 14, 0, + -9, 10, 16, 10, 0, -16, -22, 4, + -13, -5, 14, -13, -13, -3, -15, -9, + -7, -15, -25, -8, -18, -26, -16, 13, + ], + [ + 2, 30, 17, 3, 18, -19, -40, 19, + 10, 11, 24, -5, 35, 24, 11, 6, + -5, -0, 12, 2, -5, -10, 2, 13, + -4, 2, 11, 11, -12, -8, 4, 6, + 11, -9, 5, -6, 29, -2, -0, -1, + -1, -4, 2, -19, 2, 2, -18, -7, + -3, 2, -16, 17, 1, -19, -21, -4, + -10, -7, -9, -11, -23, -31, -12, -1, + ], + [ + 27, 29, 16, 22, -14, -18, -2, 19, + 12, 22, 30, 0, 5, 14, 16, 0, + 22, 15, 13, 12, -8, -13, 8, 2, + 6, 16, 13, 8, 2, -26, 7, 3, + 15, 1, 9, -2, -10, -5, 5, -12, + -2, -4, -6, -12, -18, 1, -12, -11, + -14, -6, -12, -1, -7, -7, -19, -10, + -11, -9, -13, -17, -41, -31, -7, 9, + ], + [ + 14, 10, 20, 7, -1, 17, 21, 8, + 20, 24, 18, 1, 1, -0, -2, -8, + 19, 11, 3, 16, -2, 9, 13, -0, + 21, -2, 14, 6, 2, 11, -0, -9, + 18, 5, 1, 3, -8, 0, -21, -10, + 3, -10, -2, -0, -9, -25, -18, -18, + 12, -2, -13, -4, -15, 9, -25, -24, + -10, -17, -13, -14, -24, -19, -12, 2, + ], + [ + 29, 16, 8, -5, -12, -16, -26, -10, + 19, 22, 2, 7, 4, -7, -4, -9, + 16, 4, 2, 9, -7, -15, -9, -12, + 18, 8, -2, -2, -3, 3, -9, -14, + 16, 12, -1, -6, 8, 7, 2, -3, + 17, 7, -1, -6, -6, 7, -10, 3, + 12, 1, -4, 1, -10, -9, 31, -18, + -11, -11, -13, -7, -14, -17, 21, 1, + ], + [ + 17, 6, 12, -10, 3, -27, -11, -21, + 13, 17, 15, 15, 5, -5, -10, -38, + 12, 8, 2, 5, -2, -6, -25, -32, + 17, 0, 10, -4, -9, 1, 4, -7, + 22, 2, -2, 19, 17, 17, -10, -2, + 15, -1, -7, 2, -6, 10, 3, 4, + 13, 9, -1, -4, -3, 3, 0, 21, + -15, -4, -7, -14, -12, -8, 2, -15, + ], + [ + 15, 9, -24, 22, 28, -19, -8, 1, + -26, -32, -31, 15, -10, -54, -4, -8, + 11, -0, 17, -17, -9, -31, -28, -4, + 16, -5, -26, -6, 43, 1, -15, 29, + 13, 50, 4, 11, -8, 7, 15, 18, + -19, 25, 16, 25, 13, -5, -14, 13, + -24, -1, 3, -3, 16, 7, -56, -0, + 26, -34, 1, 17, 8, -23, 22, 27, + ], + [ + -38, -19, -13, 17, -11, -10, -25, 6, + -34, -8, -33, -17, -22, -10, -23, 10, + -11, 2, -39, 12, 4, -12, -5, -3, + 17, 27, 2, 42, -10, -0, 15, -2, + 10, 13, -24, 24, 16, 13, 16, 33, + -0, -31, -9, 18, -12, -11, 16, -42, + 12, -3, -21, 18, 0, -9, 8, -23, + 34, 6, 50, 32, 8, -35, 22, 64, + ], + [ + -10, -5, -13, -16, 2, -48, -25, -5, + -26, 13, -17, -5, -22, -23, -23, 16, + -9, -13, -10, -35, 9, -1, -5, 2, + 17, -10, -5, 10, 20, -35, -22, 7, + -24, -6, -1, -5, 22, 5, -20, 16, + 21, 32, -25, 10, -13, 15, -14, 7, + -6, -20, -6, 20, -9, 12, 19, 23, + 71, 55, 4, 39, 11, -19, 6, 66, + ], + [ + -14, -7, 15, 10, -0, -24, -23, -1, + -4, 3, 17, 6, -30, 23, -14, 10, + 27, 10, -19, -14, -26, 10, -6, 3, + 2, 1, 1, 22, -8, 4, -8, -11, + -8, -16, -11, -4, -17, 3, -1, 6, + 11, -20, -9, -21, 18, 15, 3, 31, + -9, 12, 1, -19, 4, -2, -36, -21, + 57, 29, 10, -7, 48, -28, -10, 33, + ], + [ + 7, 8, 9, -4, -8, -15, -8, -17, + 11, 6, -24, -24, 15, -8, 4, -3, + 36, 4, 4, -14, 6, -12, 0, 16, + 10, 29, 4, -7, -12, -34, 2, -15, + -4, -17, -8, -19, -28, 25, -0, 16, + -4, -6, -5, 23, -1, -10, 2, -5, + -0, -6, -12, 13, -29, -11, 12, 17, + 19, 2, 9, 32, -6, 10, 10, 17, + ], + [ + 13, 18, -4, 13, -14, 21, 38, -38, + 24, 14, 19, -7, -12, 4, -30, -9, + 29, 3, -28, 5, -29, -3, -10, -9, + 0, 2, -10, 4, -31, 5, 15, -11, + 11, 9, -0, -3, -6, 8, -12, 14, + -33, -9, -22, 13, 0, -24, 11, -11, + 0, 0, 8, 17, 1, -7, 5, 5, + 9, 19, -12, -12, 14, 6, 2, 19, + ], + [ + 16, -0, 2, -9, 4, -20, -10, -23, + 14, -2, 11, -9, -1, 20, -43, 12, + 1, 7, -19, 0, 4, -13, -24, -12, + 16, -1, -13, 1, -20, -25, -19, -10, + 7, 21, 12, 2, -9, -3, 5, -13, + 24, 12, 18, 10, -31, 22, -36, 18, + 15, -10, 26, -30, 5, -12, -8, -12, + 42, 29, 9, 3, 0, 21, -23, 54, + ], + [ + 14, 1, 3, -17, -19, 12, -15, -9, + 25, -14, -13, -29, -32, -9, -26, 6, + 27, 7, -24, -2, 10, 5, -30, 17, + 12, 10, 5, -15, 10, 4, -21, -4, + 1, 0, 12, 23, -16, -18, 3, -30, + -16, 11, -20, -8, 30, 21, 12, -11, + 27, 6, -24, -10, -5, 3, -26, -6, + 50, 21, 1, -9, 17, 9, 21, 43, ], ]; internal static readonly short[][] MiddleGameQueenTable = [ [ - 62, -12, -44, -86, -57, -4, -77, -29, - -3, 90, -39, -46, -56, -17, -15, 6, - 46, 21, 2, -67, -30, 5, 14, 19, - 24, 41, 50, -2, 46, 13, 12, -7, - 27, 57, -4, 29, 23, 16, 15, -57, - 14, 7, 22, 1, 12, 4, 21, -30, - -35, 5, 6, 15, -2, 9, 2, -26, - -55, 32, -2, -0, 8, 17, 15, -4, - ], - [ - 46, 40, 37, -32, 62, -11, -42, -4, - -11, 13, 42, -69, -17, -12, -23, 11, - 16, -25, -37, 4, 6, -3, -4, 4, - -0, -14, 2, -2, 11, 19, -12, 16, - 19, 5, 4, -8, 3, 1, 29, -13, - -1, 11, -3, 10, 10, 3, 10, 0, - -60, -4, 18, 26, 16, 8, 22, 9, - -35, -193, 20, 8, 16, 8, 26, 18, - ], - [ - -54, 9, -63, -2, -23, -49, -105, -9, - -4, -22, -16, -39, -13, 19, -3, 30, - -19, 25, -33, 36, -3, -1, 18, 32, + 60, -12, -43, -85, -54, -2, -77, -27, + -3, 91, -39, -43, -57, -16, -13, 6, + 46, 23, 3, -67, -29, 4, 13, 19, + 25, 41, 50, -3, 45, 12, 9, -9, + 27, 58, -4, 29, 22, 16, 14, -57, + 15, 7, 25, 2, 12, 4, 21, -33, + -34, 4, 6, 14, -2, 8, 1, -27, + -56, 31, -2, -1, 8, 17, 14, -5, + ], + [ + 43, 40, 38, -33, 62, -10, -41, -3, + -10, 15, 43, -67, -15, -13, -24, 12, + 16, -23, -37, 5, 7, -2, -4, 3, + -0, -14, 2, -2, 11, 20, -12, 15, + 19, 5, 4, -8, 3, 1, 30, -12, + -1, 11, -3, 10, 10, 3, 10, -1, + -59, -4, 18, 26, 16, 7, 22, 9, + -35, -192, 20, 7, 16, 7, 25, 17, + ], + [ + -55, 12, -59, -2, -24, -49, -102, -10, + -3, -20, -15, -36, -12, 18, -1, 32, + -20, 25, -33, 36, -3, 0, 18, 31, 8, -11, -11, 5, 9, 24, 16, 13, - 11, 2, 13, 15, 13, -2, 15, 19, - 25, 11, 14, 15, 24, 11, 19, 11, - -7, 27, 31, 30, 22, 13, 25, 8, - -2, 5, -213, 11, 17, -2, 37, 17, - ], - [ - -78, -11, -6, 53, -23, -10, -89, -47, - 2, -52, 21, 6, 20, -44, -45, 12, - 12, -20, -76, -10, -4, -19, 30, 0, - 28, 3, -15, -4, 12, 33, 52, 13, - -28, 34, 22, 8, 42, 34, 53, 19, - 8, -9, 35, 9, 22, 26, 19, -3, - -22, 2, -12, 4, 7, 3, 42, 2, - -15, 6, 7, -65, -4, 11, 17, -16, - ], - [ - -58, -131, -91, 66, -76, 2, -57, -54, - 7, -29, -28, -66, -30, -9, -40, 13, - 17, -24, -19, 0, -46, -15, -0, 3, - 22, 11, 12, -6, -13, -1, 4, 2, - 25, 11, 11, -7, -13, 7, 17, 40, - 29, 29, 27, 11, 22, 33, 21, 32, - 38, 51, 37, 37, 30, 22, 44, 16, - 44, 38, 30, 23, -166, 13, 42, 37, - ], - [ - -70, -18, 10, -16, 39, 10, -33, -60, - 8, -3, -3, -23, -10, -35, 16, -10, - 8, -6, -6, 13, 12, 15, 14, 12, - -15, -25, -22, 20, 10, 28, 20, 17, - 4, -19, 13, 2, 23, 12, 2, 17, - -19, 17, 35, 7, 0, 40, 24, 36, - 12, 5, -5, -3, 7, 30, -10, -16, - -8, 13, 3, 3, 7, -128, -4, 4, - ], - [ - -17, 8, 44, 56, 15, 7, 41, -47, - -1, -7, 19, -16, -20, -22, -9, 39, - 12, -5, -6, -2, -19, -9, -14, -9, - 7, 8, -2, -2, -3, 9, -1, 8, - 6, 6, 9, -10, 0, -2, 10, 16, - 14, 10, 7, 3, 7, 18, 17, 14, - 19, 18, 8, 10, 11, 21, 4, -41, - 10, 13, 11, 7, 16, 6, -276, -26, - ], - [ - -12, -67, -27, -9, -42, 10, -7, 65, - 6, 1, 31, 9, -16, -7, 3, 84, - -3, -3, 18, -14, -7, 2, 46, -4, - -23, 1, -20, -1, -5, 38, 30, 17, - -14, -9, -7, -20, 27, -16, 36, 21, - -17, -9, 11, 6, -8, 22, 14, 20, - 0, 12, -3, -10, 2, -0, 25, 9, - 5, -3, 2, -3, 4, 4, 26, -221, - ], - [ - 28, -5, 30, 49, -11, -2, 60, -106, - 3, -129, -41, -47, 3, -16, 23, 40, - 3, 38, 42, 36, 42, -38, -6, -83, - 27, -38, -11, -30, 17, -40, 25, -10, - 44, 32, 24, 34, -14, 7, -4, 48, - 23, -7, 13, -22, 3, -15, 7, -42, - -37, -59, 29, 28, 4, -16, 3, 61, - 18, -24, 83, -5, -11, -31, -15, -10, - ], - [ - -116, -33, 17, -77, 43, 33, 59, 59, - 11, -15, 15, 6, -23, 14, 32, 9, - 52, 24, 28, 2, -65, -123, 17, -24, - 4, -4, 7, 27, 59, 4, -24, 29, - -24, 6, 4, 28, 16, -11, -39, -54, - 27, -18, -22, 8, 41, 25, -62, -22, - 36, -48, 21, 2, 1, -4, 17, -6, - 47, -30, -17, 5, -36, 27, 37, -3, - ], - [ - -62, -47, -8, -79, -47, 35, -74, -22, - -3, -28, -71, -39, -25, 18, -15, 45, - 4, -46, 28, 13, 34, -3, -41, 54, - -15, 39, 11, -4, 34, -12, 0, 9, - -14, 44, 12, 80, 25, 18, 20, -7, - 35, 15, 32, 12, 39, -16, 37, 13, - -41, -4, -6, -8, -6, -4, -5, 61, - -53, -0, -22, -24, 19, 15, 18, 28, - ], - [ - -24, -17, -16, -44, -20, -56, 87, 10, - 26, -11, -30, 11, -85, -52, 26, 44, - 16, 9, 30, -27, -82, 45, 42, 66, - -18, -24, -19, 8, -2, 12, 20, 22, - -3, -1, 13, 1, 1, 21, 8, -13, - -31, -3, -22, 15, 21, 12, 5, 31, - 7, -35, 2, -2, -59, 43, 10, 28, - -32, -3, -19, -12, 9, -21, 71, 12, - ], - [ - -107, 17, -64, 53, -15, 18, 69, -3, - -21, -11, -27, -22, 41, -28, -3, 26, - -45, -3, 41, 17, 65, 62, 28, 37, - -38, -13, 51, 0, 12, -41, 33, 15, - -23, -19, -2, 22, 27, 11, 44, -22, - -58, -8, 7, 13, 25, 21, 14, -3, - -5, -8, -3, 11, -19, -98, -11, 12, - -30, 8, -7, -6, 2, -55, 41, -24, - ], - [ - 16, 1, 113, 78, 56, -52, 3, -18, - -33, -14, 36, 30, 44, 12, -3, 60, - -18, -15, 7, -10, 12, 51, 0, 21, - -47, 8, 14, 11, 24, 22, 10, 9, - -7, -3, -6, -21, 7, 22, -13, -39, - -19, -13, -10, -7, -14, 20, 15, -32, - -8, -15, -13, -16, -5, -5, -42, -35, - -25, -5, -32, -15, -14, -16, -63, -1, - ], - [ - -2, 39, 3, 46, -15, 67, 120, 37, - -11, -30, 3, -11, 55, 97, 49, 87, - 2, -21, 2, 21, 6, 50, 14, 17, - -32, -35, -25, -19, 32, -1, 25, 3, - -33, -39, -6, -27, -14, -3, 19, 15, - -20, -25, -18, -20, -13, 5, 17, -17, - -42, -14, -27, -21, -18, -2, -18, -84, - -17, -25, -29, -16, -24, -25, 4, -35, - ], - [ - -47, -1, 17, 1, -48, -15, 2, -73, - 1, 30, 1, -82, -16, -32, -19, -29, - 13, 14, 59, 23, 29, -4, -74, 2, - 28, 22, 62, 78, 56, -3, -64, 5, - -11, 97, 11, 94, 8, -40, -18, -55, - -53, 16, 11, 36, -41, 24, 7, -42, - -48, -14, 54, 84, 86, -40, 24, -31, - -26, -90, 48, 9, 1, -34, 3, -2, - ], - [ - 51, -37, 15, 0, -25, -14, -31, -10, - 16, -11, 1, -14, -3, -4, 16, -5, - 4, 5, 37, 33, 13, 76, -31, -6, - 17, 0, 54, 41, -47, -0, -7, -47, - -12, 41, -39, 59, 80, -24, 50, 34, - -3, 7, -7, -11, 41, -22, -45, 14, - 4, -37, 33, 9, -50, 16, 3, -16, - 18, -36, -19, -82, -34, -36, -10, -14, - ], - [ - -11, -83, -40, 28, -17, -109, 19, 7, - 44, -3, 23, -33, 27, 45, -3, -73, - 6, 20, 26, 30, -4, 5, 46, 35, - -6, 14, 33, 35, 40, 2, -4, -1, - 63, -4, 51, 44, -26, 28, -12, 62, - 10, -32, 15, 12, 1, 2, -19, -35, - 9, -18, -78, -77, -25, 11, 23, 20, - -2, 26, -17, -48, -34, -5, -27, -18, - ], - [ - -15, -47, -48, 36, 21, -36, 22, -23, - 8, -13, 19, 40, 13, -22, 42, 5, - 19, 29, 51, -21, 4, -28, 4, -17, - 74, 16, -3, 2, -10, 27, -9, 2, - -6, 12, -35, -20, 5, 37, 43, -18, - 4, 35, -19, 26, -104, -73, 31, 13, - -7, -45, -5, 25, -15, 34, 27, -58, - 19, 14, 72, -127, 23, 17, -41, -3, - ], - [ - -33, 3, 40, -9, -26, -31, -61, 9, - 3, -32, -4, 85, 10, 36, -14, -35, - 0, 60, -43, -1, -15, 15, 5, 35, - -15, 11, 25, 18, 18, 12, -6, 43, - 16, -12, 48, 21, -24, 4, 33, -32, - -34, -33, 3, -2, -23, 3, 45, 52, - -7, -37, 16, -55, -56, 20, -29, 23, - -27, 20, 3, -46, -28, -6, 3, 33, - ], - [ - -115, -61, -37, -11, 42, -26, -31, -46, - -69, 57, 2, 42, -0, 55, 48, -30, - 0, -21, 44, -23, 5, 11, -61, 24, - 48, 45, -8, 17, 8, 26, -13, 17, - -10, 27, -36, 3, 7, 60, -75, -11, - 2, 11, 8, 41, 25, -19, 19, -0, - 44, 37, -12, -13, 11, -16, 7, 6, - -20, -45, -59, -19, 8, 7, 48, 26, - ], - [ - -9, -23, 25, 36, -27, 28, -31, 47, - -29, -71, -21, 10, 3, 67, -30, -17, - 11, 6, 41, -4, 12, 92, -14, -8, - -3, 41, 51, 67, -2, -10, 35, 8, - -48, 6, 9, -20, -17, 77, -54, -13, - -7, -36, -7, -25, -15, 7, 20, 17, - 12, -4, -18, -31, 25, 3, 10, -6, - -43, -35, -2, -78, -12, 12, -21, 11, - ], - [ - 56, -36, -3, 36, 48, 10, 65, -76, - -40, 35, -29, 41, -14, -10, 16, -18, - -16, 44, 66, 0, 31, -8, 46, 40, - -9, -19, 10, -11, 63, -9, 8, 36, - -27, 13, -17, -10, 87, -36, 4, 6, - -23, -71, 9, -1, 85, -60, 27, -23, - 17, -25, 17, -59, -11, -11, 5, 11, - -73, -25, -43, -124, -2, 29, 8, -31, + 11, 2, 12, 14, 13, -2, 15, 19, + 24, 10, 13, 14, 24, 11, 18, 10, + -7, 26, 31, 29, 21, 12, 24, 7, + -2, 4, -212, 11, 16, -3, 35, 16, + ], + [ + -77, -11, -6, 54, -22, -6, -89, -46, + 4, -50, 21, 7, 21, -43, -40, 15, + 12, -21, -76, -10, -3, -16, 28, 0, + 27, 3, -16, -4, 13, 32, 52, 12, + -29, 34, 22, 9, 40, 34, 53, 18, + 7, -10, 34, 8, 23, 26, 17, -3, + -23, 2, -13, 3, 5, 1, 40, -1, + -15, 5, 7, -66, -5, 11, 16, -16, + ], + [ + -58, -132, -89, 70, -77, 4, -54, -53, + 8, -28, -28, -64, -27, -10, -38, 15, + 18, -24, -19, 0, -46, -14, 1, 3, + 22, 11, 11, -5, -13, -1, 4, 1, + 25, 10, 10, -8, -14, 7, 17, 40, + 29, 28, 26, 10, 22, 32, 21, 31, + 38, 51, 36, 36, 29, 20, 43, 16, + 43, 37, 30, 22, -167, 13, 41, 37, + ], + [ + -66, -19, 9, -16, 41, 14, -34, -60, + 13, -2, -1, -21, -10, -31, 17, -6, + 7, -7, -5, 14, 12, 17, 13, 11, + -15, -26, -23, 21, 10, 28, 21, 15, + 3, -20, 12, 1, 22, 12, 0, 16, + -21, 16, 35, 6, -0, 39, 23, 33, + 13, 5, -5, -4, 7, 29, -11, -19, + -8, 12, 3, 3, 7, -128, -6, 3, + ], + [ + -17, 9, 44, 57, 14, 8, 37, -46, + -1, -6, 19, -15, -19, -22, -8, 41, + 12, -5, -5, -2, -18, -7, -13, -9, + 7, 8, -2, -1, -3, 9, -2, 8, + 6, 6, 8, -10, -1, -2, 11, 16, + 14, 10, 7, 2, 7, 18, 17, 13, + 19, 18, 8, 10, 11, 20, 3, -41, + 10, 13, 11, 7, 16, 5, -275, -26, + ], + [ + -12, -67, -27, -8, -43, 7, -7, 64, + 7, 2, 31, 11, -14, -7, 4, 87, + -2, -2, 18, -13, -6, 3, 47, -4, + -23, 2, -21, -0, -5, 39, 30, 16, + -14, -9, -8, -20, 26, -16, 36, 21, + -18, -10, 10, 5, -8, 22, 14, 19, + 1, 13, -3, -11, 1, -1, 24, 9, + 4, -4, 2, -3, 3, 4, 26, -220, + ], + [ + 27, -6, 30, 47, -9, -1, 62, -106, + 3, -127, -39, -49, 5, -15, 21, 40, + 2, 37, 42, 37, 42, -40, -7, -83, + 27, -38, -9, -31, 18, -39, 24, -10, + 44, 32, 24, 35, -13, 8, -3, 49, + 23, -7, 12, -22, 4, -15, 8, -42, + -37, -57, 29, 28, 3, -17, 3, 61, + 16, -27, 83, -5, -12, -32, -16, -11, + ], + [ + -117, -30, 20, -75, 44, 37, 59, 56, + 11, -13, 18, 8, -23, 13, 35, 9, + 51, 24, 26, 2, -67, -123, 18, -26, + 5, -3, 8, 30, 60, 4, -24, 29, + -25, 5, 3, 27, 16, -10, -38, -54, + 27, -19, -23, 7, 40, 24, -60, -24, + 35, -47, 20, 1, 1, -4, 16, -8, + 47, -31, -18, 5, -36, 27, 35, -3, + ], + [ + -63, -49, -9, -75, -47, 35, -71, -21, + 1, -26, -69, -38, -23, 17, -14, 48, + 3, -44, 28, 15, 36, -5, -40, 54, + -15, 38, 9, -2, 35, -12, 2, 9, + -15, 45, 11, 79, 25, 20, 19, -4, + 36, 14, 32, 10, 39, -17, 35, 12, + -42, -6, -7, -9, -8, -6, -6, 60, + -54, -3, -23, -25, 19, 16, 17, 27, + ], + [ + -25, -16, -15, -40, -21, -53, 88, 11, + 26, -10, -28, 9, -81, -50, 26, 42, + 16, 8, 30, -28, -80, 47, 40, 64, + -21, -24, -18, 9, -3, 12, 20, 24, + -4, -2, 14, 1, 1, 21, 9, -15, + -31, -3, -21, 14, 21, 11, 5, 30, + 10, -35, 2, -3, -60, 42, 9, 26, + -32, -5, -19, -13, 8, -24, 71, 12, + ], + [ + -107, 17, -62, 53, -15, 15, 72, -4, + -20, -10, -27, -21, 43, -29, -5, 25, + -46, -3, 44, 19, 65, 61, 26, 38, + -38, -11, 51, 2, 12, -41, 33, 14, + -24, -19, -3, 22, 28, 11, 44, -21, + -58, -8, 8, 13, 26, 21, 14, -5, + -5, -8, -3, 12, -20, -99, -12, 12, + -31, 7, -7, -6, 2, -56, 41, -24, + ], + [ + 18, -0, 113, 79, 55, -54, 5, -20, + -32, -13, 37, 32, 46, 12, -2, 58, + -19, -15, 8, -9, 13, 52, 2, 20, + -47, 9, 14, 13, 26, 23, 10, 9, + -7, -3, -7, -22, 7, 23, -13, -38, + -20, -14, -10, -7, -14, 20, 15, -33, + -8, -15, -13, -16, -6, -6, -42, -35, + -25, -6, -33, -15, -15, -16, -65, -1, + ], + [ + -3, 41, 2, 48, -15, 64, 114, 31, + -10, -29, 4, -10, 56, 97, 48, 85, + 2, -20, 2, 22, 7, 51, 15, 17, + -31, -35, -24, -18, 33, 0, 25, 3, + -32, -39, -6, -27, -14, -3, 20, 16, + -20, -26, -18, -20, -13, 4, 17, -17, + -40, -13, -27, -21, -18, -2, -19, -88, + -16, -26, -28, -16, -25, -26, 4, -35, + ], + [ + -49, 3, 12, 3, -49, -16, 1, -76, + 6, 31, -0, -84, -21, -28, -23, -38, + 17, 13, 66, 24, 21, -3, -72, 4, + 32, 20, 62, 82, 55, -5, -63, 1, + -7, 90, 13, 95, 11, -36, -15, -53, + -55, 14, 14, 34, -37, 20, 7, -43, + -56, -25, 53, 85, 80, -34, 23, -30, + -31, -90, 50, 12, 11, -27, 4, -5, + ], + [ + 49, -39, 19, -2, -26, -16, -29, -14, + 11, -12, -1, -18, -7, -4, 13, -12, + 6, 11, 39, 30, 13, 75, -28, -11, + 12, -2, 53, 42, -49, -1, -11, -44, + -11, 41, -50, 61, 81, -23, 51, 38, + -3, 5, -9, -12, 41, -20, -43, 18, + 1, -33, 31, 14, -49, 21, 10, -15, + 18, -33, -17, -79, -32, -32, -1, -13, + ], + [ + -14, -84, -49, 33, -15, -113, 18, 4, + 41, -5, 24, -38, 23, 38, -4, -74, + 8, 16, 21, 22, 5, 1, 45, 36, + -7, 14, 36, 38, 33, 2, -1, 0, + 62, -1, 56, 42, -28, 20, -4, 60, + 9, -29, 16, 14, 5, 5, -23, -35, + 9, -18, -76, -73, -24, 14, 29, 20, + 1, 28, -15, -51, -31, -1, -17, -18, + ], + [ + -23, -47, -51, 31, 21, -34, 21, -18, + 9, -13, 17, 38, 13, -17, 42, 11, + 19, 25, 48, -24, 4, -29, 4, -18, + 75, 16, 1, 2, -16, 25, -15, 3, + -10, 14, -34, -21, 3, 34, 46, -19, + 8, 40, -19, 25, -102, -75, 32, 17, + -4, -48, -4, 25, -16, 40, 27, -55, + 20, 15, 70, -129, 25, 16, -39, -2, + ], + [ + -30, -3, 33, -10, -34, -33, -66, 7, + -0, -37, -8, 82, 3, 36, -10, -34, + -3, 58, -30, -3, -13, 13, 4, 34, + -8, 12, 23, 15, 17, 14, -8, 40, + 14, -9, 51, 23, -25, 7, 29, -31, + -33, -30, 7, -5, -23, 3, 49, 59, + -7, -36, 16, -58, -52, 31, -29, 26, + -21, 26, 4, -60, -28, -1, 6, 33, + ], + [ + -117, -60, -32, -11, 36, -21, -30, -48, + -72, 50, 4, 41, -4, 55, 47, -31, + -2, -19, 40, -28, 3, 9, -62, 21, + 50, 45, -8, 16, 7, 25, -15, 19, + -8, 28, -31, 2, 15, 56, -76, -17, + 3, 11, 8, 43, 23, -17, 14, 1, + 46, 40, -11, -18, 15, -11, 10, 4, + -16, -35, -63, -16, 6, 13, 46, 26, + ], + [ + -9, -23, 25, 35, -29, 22, -26, 46, + -24, -77, -17, 10, -2, 66, -34, -16, + 8, 8, 37, -7, 16, 86, -14, -6, + -6, 42, 49, 59, -7, -14, 35, 5, + -49, 4, 4, -15, -10, 77, -53, -10, + -4, -27, -10, -25, -18, 7, 22, 22, + 15, 1, -20, -33, 34, 0, 9, -10, + -39, -32, -7, -73, -9, 14, -16, 7, + ], + [ + 55, -35, -5, 35, 50, 1, 61, -76, + -42, 39, -30, 44, -12, -16, 16, -23, + -15, 43, 67, 1, 29, -12, 48, 39, + -11, -18, 8, -11, 63, -6, 9, 37, + -24, 15, -16, -17, 84, -33, 1, -3, + -21, -64, 4, 9, 83, -59, 30, -24, + 20, -23, 22, -60, -3, -7, 6, 19, + -74, -22, -47, -131, -3, 29, 5, -28, ], ]; internal static readonly short[][] EndGameQueenTable = [ [ - 0, -0, 22, 41, -30, -36, 5, -16, - 11, -24, 35, 31, 30, -7, -26, -21, - -40, -5, 33, 72, -15, -39, -27, -54, - 25, 37, -10, 23, 30, -25, 4, 6, - 8, -4, 43, -13, 13, -3, -47, 29, - 9, 16, 10, -5, -4, -4, -2, 44, - -78, -2, 21, 29, -17, -6, -5, 37, - -66, 3, 17, -6, -24, -59, -47, 80, - ], - [ - -75, 47, -5, 46, -97, 12, -19, 35, - 29, -34, 16, 48, 24, -26, -21, -10, - -20, 37, 77, 3, 11, -50, -7, -23, - 47, 76, 21, 21, 46, -44, 53, -28, - -26, 33, 23, 50, -24, 8, -8, 22, - 3, -7, 39, -18, -7, 8, 3, 3, - 68, -4, -10, 2, 1, -9, -27, 14, - -109, -199, -9, -8, -4, -28, -3, 32, - ], - [ - 55, -26, 75, 43, -14, 0, 36, -62, - 11, 30, 58, 39, 24, -54, 13, -11, - 80, -28, 39, -54, 10, 24, -56, -26, - 20, 28, 72, 10, 31, -49, 1, 18, - 20, 6, 15, 15, -9, 13, 7, -2, - -74, 30, 23, 32, -6, 53, -1, 37, - -34, -50, -28, 5, 9, 16, 12, -4, - -66, -86, -219, -42, 10, 2, -12, -7, - ], - [ - 3, 7, -4, -7, 8, -50, 41, -23, - -32, 84, 19, -46, 8, 17, -29, -23, - 1, 3, 70, -29, 76, -8, -63, -23, - -13, 39, 31, 30, -27, 11, -22, -17, - 60, 52, 12, 28, -14, -20, -117, -10, - -7, 67, 34, 2, 29, 5, 35, 48, - 31, -22, 10, 16, 10, 12, -73, 6, - 54, -45, -34, -121, 6, -49, -71, 37, - ], - [ - 63, 94, 50, 32, 92, -40, 45, -10, - -29, 17, 34, 42, -11, -29, -15, -1, - -24, 38, 26, 33, 47, 5, 1, 13, - -54, -29, 37, 52, 40, 40, 21, 36, - -21, 8, -1, 83, 52, 41, 20, -49, - -25, -13, 13, 33, 21, -8, 11, -5, - -115, -58, -57, -25, -19, -9, -72, 17, - -39, -49, -33, -46, -201, -25, -24, -25, - ], - [ - 61, 10, -24, -10, 1, -11, -6, -4, - -68, -34, -27, 25, 19, 46, -39, 35, - 12, -46, -10, -14, -24, -53, -17, 31, - -11, 53, 22, -8, 4, 6, 22, 11, - -15, 11, -1, 29, 24, 7, 65, -14, - 21, -13, -7, 19, 45, 12, 2, 9, - -43, 7, 38, 65, 9, -38, 33, 7, - -4, -25, 13, -11, -25, -216, 40, 1, - ], - [ - 11, 5, -42, -51, 2, -12, -32, 42, - 11, -5, -18, 3, 31, 24, 4, 2, - -9, 8, 8, 14, 14, 26, 57, 14, - 2, -2, 18, 10, 33, 5, 49, 18, - 21, -0, 6, 8, 2, 19, 18, 21, - -6, 1, 9, 6, 4, 3, -0, -38, - -12, 15, 18, 17, 18, -27, -25, 47, - 47, 29, 20, 21, -6, -7, -431, -34, - ], - [ - 26, 53, 29, 7, 61, -3, -33, -54, - -34, -37, -47, -26, 7, -2, -27, -77, - 1, -19, -28, -5, 6, 56, -39, 32, - 33, 3, 19, 3, 26, -13, -1, 8, - 5, -6, 34, 10, -28, 60, -12, 21, - 22, -15, -6, -10, 21, 9, -11, -26, - -1, 16, 14, 62, 28, 27, -17, -41, - 53, 23, 38, 21, 22, 3, -4, -237, - ], - [ - -9, -57, -28, -10, -13, -16, -70, 42, - 39, 67, 63, 54, 34, -21, -23, -73, - 27, 27, 16, 23, -62, 28, -26, 47, - -21, 75, 46, 63, 40, 65, -8, 8, - -8, 10, 57, 11, 53, 28, 10, -32, - -50, 3, -2, 95, 28, 52, -30, 58, - -76, 2, -52, -1, -42, 5, 14, -115, - -143, -100, -99, -4, 2, -16, 73, -58, - ], - [ - 82, 4, -2, 74, 0, -68, -57, -61, - 4, 40, 15, 23, 62, -58, -17, 22, - -55, 27, 7, 1, 46, 51, -53, -6, - -15, 38, 26, 58, -23, -15, 28, -43, - -16, 1, 69, 17, 22, 0, 63, 87, - -21, 8, 37, -0, 15, 11, 57, 37, - -75, 10, -36, 22, 2, -24, -51, -30, - -102, -82, -19, -69, -64, -42, 29, 10, - ], - [ - 23, 25, 5, 10, 43, -39, 2, 9, - -15, 35, 87, 45, 69, -35, -69, 2, - -1, 44, -7, 4, 27, 47, -4, -12, - 33, -6, 41, 64, 46, 15, 35, -35, - 12, -20, 25, -11, 21, 51, -13, 22, - -40, -31, -1, 10, -7, 47, -51, -41, - -17, -73, -35, -42, 11, 8, -28, -56, - 5, -31, -59, -34, -56, -61, 39, -28, - ], - [ - 61, 40, 48, 61, -9, 51, -47, -11, - -41, 6, 17, -1, 61, 8, -57, -3, - 6, -10, -4, 41, 50, -26, -69, -65, - 46, 52, 43, 50, 24, 43, -33, -23, - 28, 15, 33, 39, 45, 31, 10, 13, - 13, -14, 30, -13, 10, -1, -20, -70, - -43, 48, -11, -12, -9, -51, -22, -67, - 23, -18, -3, -58, -71, -23, -51, -95, - ], - [ - 52, 3, 16, -12, 18, -22, -80, -1, - 14, -42, 20, 20, 43, -15, -36, -31, - 21, -15, -25, 2, -34, -54, -28, -28, - 7, 23, -44, 10, 2, 53, -6, 1, - 2, 19, 29, 6, -5, 4, -14, 47, - 49, -11, 21, 2, -18, -15, 4, 39, - -22, 14, -1, 1, 14, -3, -26, 25, - -21, -24, 7, -15, -1, 85, -67, 43, - ], - [ - -5, -2, -70, -58, -24, 43, -37, 33, - 13, -12, -58, -14, -30, -8, -7, -28, - 14, -16, -12, 18, -6, -32, 13, -39, - 16, -3, -7, 1, -3, 9, 13, -5, - 1, -12, 24, 20, 1, 4, 47, 58, - -39, 13, -1, 11, 30, -7, -2, 49, - -10, 11, 14, 20, 11, -31, -18, 31, - 31, 13, 30, 0, -7, -19, 16, 9, - ], - [ - -15, -23, 0, -29, 27, -37, -89, -27, - 4, 5, -8, -15, -39, -76, -54, -66, - -17, 13, -25, -17, -12, -39, -7, -2, - 16, 32, 43, 10, -15, 42, 18, 34, - 5, 33, 12, 33, 13, 21, 13, 29, - -7, 4, -2, 12, 18, 5, -7, 33, - 57, 22, 19, 31, 24, -9, -9, -35, - 7, 1, 1, -4, 43, 7, 1, -3, - ], - [ - -32, -39, -8, 14, 1, -10, -49, 16, - -8, -16, 41, 48, 34, 25, -58, -75, - 8, 20, 61, 16, 13, 56, 14, -23, - 37, 28, 13, -6, -13, 19, 5, 9, - -7, -12, -1, 51, 100, 65, 14, -37, - -26, 25, 72, -18, 45, 3, 35, -18, - -36, 4, -47, -66, -33, -17, -23, -21, - -79, -9, 28, 21, -28, -14, 4, -119, - ], - [ - -45, -62, 9, 18, -11, 38, -75, 15, - -2, -4, 15, 18, -34, -57, -13, 53, - 15, -4, 33, 70, -18, -5, 36, -11, - 44, 56, 54, 55, 15, 3, 6, -6, - -20, 57, -14, 43, 24, -18, 74, 48, - -28, -31, 9, 6, 58, -19, -58, -5, - -1, -70, 88, 40, -20, 10, 5, -40, - -33, -55, -10, -48, -34, -51, -41, -69, - ], - [ - -49, 47, -69, 35, -7, -52, -38, -59, - 2, -34, 7, 3, -28, 17, -59, -47, - -13, 53, -17, -12, 22, -30, -5, -15, - 12, 14, 73, 31, 6, 23, -7, 6, - 72, 14, 69, 71, 27, -22, -5, 42, - 13, 48, -32, 51, 13, -13, 9, -27, - -4, -5, -61, -42, -15, -4, 9, 14, - -38, 14, -31, 78, -37, -19, -1, -2, - ], - [ - -34, 22, -3, -88, -25, -39, -22, -52, - 49, 7, 6, 82, -30, -39, 11, -27, - 42, -5, 35, -43, 2, 6, -3, -104, - 67, -29, 13, -12, 34, 41, -2, 27, - 0, 30, 24, 11, 54, 17, 34, -3, - -7, 84, 4, 10, -4, -24, 15, -18, - -24, -25, -3, 9, 38, 33, -1, -59, - 8, 2, 58, -37, 8, -19, -73, -33, - ], - [ - -1, 1, 14, -22, -57, -65, -10, -28, - 3, 9, -31, 8, 26, -16, -58, -31, - 10, 57, -30, -12, -22, 2, 9, 5, - 20, -29, 47, -11, 24, 20, 4, 9, - 73, -10, 22, 20, 25, 51, 61, -3, - -22, 23, 4, -11, -11, 15, 43, 47, - -27, -15, 23, -67, -49, 47, -16, 14, - -25, 34, -9, 27, -86, -2, -70, 47, - ], - [ - -24, -18, -21, 8, -29, -102, -6, -64, - -33, 68, 36, 10, -3, 23, -23, -60, - -21, -55, 28, -45, 2, 2, -81, -19, - 37, 23, 8, 18, 46, -29, 13, 27, - -6, 8, 56, 25, 29, 33, -47, -37, - 37, 51, 17, 78, 85, 30, 2, -10, - 55, 52, 40, 14, 2, -46, -12, 13, - -63, -77, -124, -49, 31, -5, 79, 21, - ], - [ - -11, 13, -7, 49, 3, -21, -50, -37, - -29, -38, 37, 10, -29, 23, -56, -21, - 38, -8, 14, 32, 4, -16, 3, -9, - -5, 10, 12, 2, 37, -1, 16, -21, - -4, 43, -72, 25, 59, 27, 55, 3, - 14, -61, 0, -25, -11, 7, -13, -18, - 18, -2, -7, -5, 65, 20, 17, -46, - -44, -19, -0, -10, 10, 52, -62, 38, - ], - [ - 62, 13, 41, 27, 48, -24, -68, -101, - -32, 8, 3, -34, -64, 12, 44, -60, - 27, 71, 43, -4, 6, -12, 21, -47, - -13, 8, 8, 12, -35, 52, 66, 19, - -40, 36, 5, 11, 62, -35, 24, 35, - 8, -8, 89, -61, 121, -44, 20, -36, - 7, -23, -1, -33, 29, -31, 10, 34, - -78, -20, -38, -89, -6, 31, -4, -70, + 3, -0, 21, 44, -31, -37, 7, -17, + 14, -24, 36, 31, 33, -4, -26, -18, + -38, -4, 36, 73, -13, -37, -27, -54, + 25, 37, -8, 25, 33, -23, 6, 9, + 8, -6, 43, -13, 13, -3, -48, 30, + 9, 15, 7, -7, -4, -6, -4, 45, + -80, -2, 20, 27, -19, -9, -8, 34, + -71, 5, 16, -7, -26, -60, -53, 78, + ], + [ + -73, 48, -5, 51, -96, 16, -17, 34, + 29, -34, 18, 49, 26, -23, -17, -9, + -20, 36, 78, 4, 13, -50, -6, -22, + 47, 77, 20, 23, 47, -44, 54, -27, + -27, 31, 22, 50, -24, 6, -9, 21, + 1, -9, 38, -19, -8, 7, 1, 1, + 64, -6, -11, 1, 0, -10, -28, 13, + -110, -199, -10, -9, -4, -29, -5, 32, + ], + [ + 58, -26, 74, 42, -10, -1, 37, -63, + 13, 30, 59, 41, 27, -49, 12, -12, + 83, -26, 42, -51, 11, 24, -53, -25, + 22, 29, 72, 12, 33, -49, 0, 16, + 20, 6, 17, 17, -10, 11, 5, -2, + -74, 30, 23, 32, -7, 52, -2, 33, + -36, -50, -29, 4, 7, 14, 11, -6, + -67, -88, -219, -44, 8, 0, -15, -10, + ], + [ + 5, 9, -1, -4, 10, -48, 45, -24, + -35, 84, 20, -42, 11, 19, -31, -25, + 4, 4, 73, -24, 81, -6, -60, -23, + -11, 41, 34, 33, -28, 11, -23, -17, + 58, 51, 11, 31, -11, -20, -119, -9, + -10, 65, 34, 4, 28, 2, 35, 41, + 28, -28, 8, 18, 10, 11, -76, -0, + 48, -43, -33, -122, 4, -54, -77, 34, + ], + [ + 65, 99, 51, 32, 95, -36, 42, -11, + -29, 17, 37, 45, -10, -22, -15, -1, + -24, 40, 28, 36, 51, 10, 1, 14, + -52, -27, 39, 53, 44, 40, 22, 35, + -22, 8, -1, 85, 55, 42, 19, -50, + -27, -16, 13, 33, 21, -8, 9, -5, + -119, -62, -59, -25, -20, -11, -75, 13, + -42, -53, -34, -48, -203, -26, -30, -28, + ], + [ + 58, 12, -21, -8, 1, -12, -3, -5, + -72, -32, -27, 27, 24, 45, -37, 34, + 13, -46, -10, -11, -21, -52, -14, 32, + -11, 53, 23, -7, 6, 7, 21, 12, + -15, 9, -2, 29, 25, 8, 67, -13, + 20, -14, -8, 18, 45, 13, 2, 7, + -45, 6, 36, 64, 8, -38, 31, 9, + -7, -27, 11, -13, -26, -216, 37, -0, + ], + [ + 12, 5, -41, -51, 3, -11, -28, 41, + 12, -5, -16, 5, 32, 25, 3, 1, + -8, 9, 10, 14, 15, 25, 56, 14, + 2, -2, 18, 10, 33, 5, 48, 17, + 21, -0, 6, 8, 2, 19, 17, 20, + -6, 1, 9, 6, 3, 3, -2, -38, + -12, 14, 17, 16, 18, -29, -26, 45, + 46, 28, 19, 20, -7, -7, -432, -34, + ], + [ + 26, 54, 29, 8, 62, -1, -33, -52, + -35, -36, -46, -25, 8, -2, -30, -79, + 1, -20, -28, -6, 6, 56, -40, 33, + 33, 3, 21, 3, 26, -14, -1, 8, + 5, -6, 34, 11, -27, 60, -12, 21, + 22, -15, -5, -8, 21, 9, -12, -26, + -3, 15, 13, 61, 27, 26, -17, -40, + 52, 21, 38, 21, 22, 3, -5, -235, + ], + [ + -10, -58, -30, -9, -15, -19, -72, 40, + 39, 65, 62, 56, 31, -21, -22, -72, + 27, 26, 14, 21, -62, 30, -25, 47, + -24, 73, 43, 62, 39, 67, -8, 8, + -10, 9, 55, 9, 53, 29, 11, -32, + -52, 2, -1, 95, 29, 55, -27, 59, + -73, 1, -52, -0, -40, 9, 15, -113, + -143, -97, -100, -3, 4, -13, 75, -54, + ], + [ + 82, 4, -4, 74, 0, -68, -58, -60, + 5, 40, 14, 22, 64, -57, -17, 23, + -54, 27, 9, 2, 47, 53, -53, -4, + -16, 37, 26, 57, -24, -16, 28, -44, + -16, -1, 68, 18, 21, -1, 62, 87, + -21, 6, 37, -1, 14, 10, 54, 38, + -72, 9, -37, 22, 2, -25, -51, -30, + -99, -83, -16, -70, -64, -44, 30, 10, + ], + [ + 25, 27, 6, 10, 43, -38, 1, 8, + -16, 34, 88, 46, 68, -32, -68, 0, + 1, 43, -6, 5, 27, 49, -6, -12, + 33, -4, 42, 62, 45, 16, 32, -36, + 12, -21, 25, -11, 19, 48, -14, 19, + -42, -32, -3, 10, -7, 46, -52, -40, + -13, -71, -37, -44, 11, 8, -28, -56, + 10, -28, -60, -33, -58, -64, 38, -26, + ], + [ + 63, 40, 49, 62, -8, 49, -47, -10, + -41, 6, 17, 2, 60, 9, -54, -0, + 7, -7, -3, 44, 51, -25, -65, -64, + 47, 53, 43, 50, 25, 44, -32, -26, + 28, 13, 32, 38, 45, 30, 8, 14, + 10, -16, 28, -13, 10, -1, -22, -71, + -46, 47, -12, -12, -9, -52, -23, -68, + 22, -19, -3, -57, -69, -21, -55, -97, + ], + [ + 52, 3, 17, -12, 18, -20, -82, -0, + 16, -41, 21, 21, 43, -13, -32, -31, + 22, -14, -26, 2, -32, -52, -26, -29, + 6, 22, -43, 10, 3, 53, -6, -1, + 2, 18, 29, 5, -6, 4, -14, 46, + 50, -12, 20, 1, -19, -16, 3, 40, + -21, 14, -1, 0, 13, -6, -26, 22, + -19, -25, 7, -16, -2, 87, -68, 44, + ], + [ + -7, -1, -70, -59, -24, 43, -38, 33, + 14, -12, -58, -15, -31, -8, -8, -27, + 14, -16, -12, 18, -7, -33, 13, -40, + 15, -3, -7, -0, -5, 8, 12, -5, + 2, -10, 24, 21, 1, 4, 47, 57, + -36, 14, 1, 13, 30, -7, -5, 48, + -8, 15, 16, 22, 11, -32, -19, 29, + 32, 16, 32, 2, -6, -20, 16, 9, + ], + [ + -16, -25, -0, -30, 25, -37, -86, -24, + 4, 5, -9, -15, -39, -77, -55, -66, + -18, 12, -23, -18, -12, -40, -10, -5, + 15, 33, 43, 9, -16, 39, 16, 32, + 5, 33, 14, 34, 14, 20, 11, 28, + -7, 6, -0, 13, 19, 5, -9, 30, + 59, 25, 21, 33, 25, -9, -9, -34, + 8, 5, 3, -2, 44, 8, -0, -3, + ], + [ + -33, -41, -7, 13, 2, -11, -51, 19, + -11, -18, 38, 46, 33, 22, -58, -71, + 4, 19, 58, 15, 15, 57, 12, -25, + 36, 28, 13, -8, -14, 19, 5, 11, + -8, -7, -5, 50, 101, 66, 14, -37, + -27, 23, 70, -20, 43, 6, 40, -21, + -39, 4, -52, -66, -27, -11, -23, -19, + -80, -6, 32, 24, -23, -12, 11, -116, + ], + [ + -46, -62, 8, 15, -15, 37, -74, 12, + -6, -6, 13, 13, -38, -60, -11, 48, + 17, -5, 29, 66, -22, -6, 38, -15, + 38, 51, 54, 55, 15, 4, 5, -3, + -18, 55, -12, 39, 18, -20, 77, 54, + -28, -34, 6, 2, 59, -17, -53, -0, + -5, -69, 87, 44, -17, 18, 12, -37, + -34, -54, -7, -48, -35, -44, -25, -63, + ], + [ + -53, 44, -69, 29, -8, -56, -42, -62, + -4, -36, 2, -1, -35, 10, -59, -47, + -14, 51, -18, -11, 17, -32, -11, -14, + 11, 13, 72, 29, 4, 22, -6, 7, + 68, 16, 69, 66, 28, -22, 4, 41, + 16, 51, -33, 49, 18, -10, 17, -23, + -3, -6, -60, -44, -13, 0, 16, 18, + -38, 18, -26, 80, -31, -14, 12, 2, + ], + [ + -33, 23, -3, -88, -25, -39, -24, -53, + 50, 7, 5, 80, -31, -43, 7, -25, + 42, -10, 33, -44, -1, 4, -4, -106, + 68, -28, 11, -13, 31, 36, -5, 28, + -3, 35, 23, 13, 56, 14, 38, -4, + -3, 87, 3, 7, -3, -27, 20, -13, + -20, -29, -1, 8, 38, 36, 2, -57, + 8, 4, 53, -35, 12, -16, -67, -29, + ], + [ + 2, 2, 10, -24, -60, -64, -11, -26, + 1, 8, -37, 2, 24, -16, -57, -30, + 8, 53, -34, -17, -23, -1, 3, 3, + 22, -31, 42, -14, 23, 20, -0, 6, + 73, -6, 24, 20, 24, 52, 55, -2, + -20, 31, 7, -14, -11, 17, 49, 51, + -23, -12, 26, -67, -51, 57, -18, 18, + -19, 36, -9, 27, -85, 2, -65, 47, + ], + [ + -26, -19, -19, 4, -28, -103, -6, -60, + -35, 64, 33, 3, -6, 20, -25, -62, + -22, -56, 20, -46, -2, 0, -84, -26, + 40, 20, 9, 15, 45, -32, 14, 23, + -3, 9, 57, 28, 26, 35, -47, -43, + 42, 54, 18, 79, 91, 27, -0, -8, + 58, 58, 46, 14, 4, -40, -8, 15, + -59, -67, -128, -41, 30, 1, 77, 21, + ], + [ + -13, 9, -6, 49, 1, -20, -48, -36, + -27, -42, 36, 6, -26, 21, -55, -23, + 37, -8, 11, 30, 4, -16, 2, -7, + -10, 11, 11, -1, 39, 0, 14, -24, + -3, 40, -74, 23, 56, 24, 58, 5, + 15, -58, -2, -24, -12, 9, -12, -16, + 23, 5, -8, -4, 66, 18, 18, -48, + -44, -17, 1, -7, 13, 59, -56, 35, + ], + [ + 59, 8, 35, 25, 48, -20, -62, -96, + -32, 11, 6, -35, -65, 6, 42, -63, + 27, 67, 41, -2, 1, -13, 19, -44, + -13, 8, 8, 11, -36, 53, 61, 17, + -37, 37, 4, 5, 60, -33, 20, 32, + 9, -2, 85, -55, 120, -43, 23, -38, + 10, -21, 3, -34, 35, -30, 12, 42, + -78, -17, -40, -92, -7, 33, -8, -69, ], ]; @@ -2743,7 +2743,7 @@ internal static class TunableEvalParameters 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 20, 0, 0, 0, 0, 0, 0, 0, + 18, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, ], [ @@ -2754,7 +2754,7 @@ internal static class TunableEvalParameters 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 22, 0, 0, 0, 0, 0, 0, + 0, 21, 0, 0, 0, 0, 0, 0, ], [ 0, 0, 0, 0, 0, 0, 0, 0, @@ -2764,7 +2764,7 @@ internal static class TunableEvalParameters 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 16, 0, 0, 0, 0, 0, + 0, 0, 20, 0, 0, 0, 0, 0, ], [ 0, 0, 0, 0, 0, 0, 0, 0, @@ -2774,7 +2774,7 @@ internal static class TunableEvalParameters 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, -32, 0, 0, 0, 0, + 0, 0, 0, -26, 0, 0, 0, 0, ], [ 0, 0, 0, 0, 0, 0, 0, 0, @@ -2784,7 +2784,7 @@ internal static class TunableEvalParameters 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, -12, 0, 0, 0, + 0, 0, 0, 0, -9, 0, 0, 0, ], [ 0, 0, 0, 0, 0, 0, 0, 0, @@ -2794,7 +2794,7 @@ internal static class TunableEvalParameters 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, -29, 0, 0, + 0, 0, 0, 0, 0, -25, 0, 0, ], [ 0, 0, 0, 0, 0, 0, 0, 0, @@ -2821,9 +2821,9 @@ internal static class TunableEvalParameters 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, -19, 0, 0, 0, 0, 0, 0, - 0, 9, 0, 0, 0, 0, 0, 0, - 0, 30, 0, 0, 0, 0, 0, 0, + 0, -17, 0, 0, 0, 0, 0, 0, + 0, 10, 0, 0, 0, 0, 0, 0, + 0, 33, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ], [ @@ -2831,9 +2831,9 @@ internal static class TunableEvalParameters 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, -51, 0, 0, 0, 0, 0, - 0, 0, -31, 0, 0, 0, 0, 0, - 0, 0, 8, 0, 0, 0, 0, 0, + 0, 0, -47, 0, 0, 0, 0, 0, + 0, 0, -25, 0, 0, 0, 0, 0, + 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ], [ @@ -2841,9 +2841,9 @@ internal static class TunableEvalParameters 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, -105, 0, 0, 0, 0, - 0, 0, 0, -31, 0, 0, 0, 0, - 0, 0, 0, -3, 0, 0, 0, 0, + 0, 0, 0, -97, 0, 0, 0, 0, + 0, 0, 0, -22, 0, 0, 0, 0, + 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ], [ @@ -2851,9 +2851,9 @@ internal static class TunableEvalParameters 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, -95, 0, 0, 0, - 0, 0, 0, 0, -41, 0, 0, 0, - 0, 0, 0, 0, -11, 0, 0, 0, + 0, 0, 0, 0, -87, 0, 0, 0, + 0, 0, 0, 0, -31, 0, 0, 0, + 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ], [ @@ -2861,9 +2861,9 @@ internal static class TunableEvalParameters 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, -58, 0, 0, - 0, 0, 0, 0, 0, -36, 0, 0, - 0, 0, 0, 0, 0, -13, 0, 0, + 0, 0, 0, 0, 0, -52, 0, 0, + 0, 0, 0, 0, 0, -30, 0, 0, + 0, 0, 0, 0, 0, -5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ], [ @@ -2871,9 +2871,9 @@ internal static class TunableEvalParameters 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, -49, 0, - 0, 0, 0, 0, 0, 0, -4, 0, - 0, 0, 0, 0, 0, 0, 19, 0, + 0, 0, 0, 0, 0, 0, -46, 0, + 0, 0, 0, 0, 0, 0, -2, 0, + 0, 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, ], [ @@ -2881,86 +2881,86 @@ internal static class TunableEvalParameters 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, -62, - 0, 0, 0, 0, 0, 0, 0, -25, - 0, 0, 0, 0, 0, 0, 0, 20, + 0, 0, 0, 0, 0, 0, 0, -64, + 0, 0, 0, 0, 0, 0, 0, -28, + 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, ], [ - 58, 0, 0, 0, 0, 0, 0, 0, - -11, 0, 0, 0, 0, 0, 0, 0, - -1, 0, 0, 0, 0, 0, 0, 0, - -7, 0, 0, 0, 0, 0, 0, 0, - -34, 0, 0, 0, 0, 0, 0, 0, - 4, 0, 0, 0, 0, 0, 0, 0, + 52, 0, 0, 0, 0, 0, 0, 0, + -20, 0, 0, 0, 0, 0, 0, 0, + -9, 0, 0, 0, 0, 0, 0, 0, + -17, 0, 0, 0, 0, 0, 0, 0, + -39, 0, 0, 0, 0, 0, 0, 0, + -2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ], [ - 0, 58, 0, 0, 0, 0, 0, 0, - 0, 56, 0, 0, 0, 0, 0, 0, - 0, 54, 0, 0, 0, 0, 0, 0, - 0, -2, 0, 0, 0, 0, 0, 0, + 0, 37, 0, 0, 0, 0, 0, 0, + 0, 33, 0, 0, 0, 0, 0, 0, + 0, 33, 0, 0, 0, 0, 0, 0, + 0, -25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ], [ - 0, 0, 54, 0, 0, 0, 0, 0, - 0, 0, 4, 0, 0, 0, 0, 0, - 0, 0, -33, 0, 0, 0, 0, 0, - 0, 0, -50, 0, 0, 0, 0, 0, + 0, 0, 28, 0, 0, 0, 0, 0, + 0, 0, -23, 0, 0, 0, 0, 0, + 0, 0, -57, 0, 0, 0, 0, 0, + 0, 0, -78, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ], [ - 0, 0, 0, -32, 0, 0, 0, 0, - 0, 0, 0, 50, 0, 0, 0, 0, - 0, 0, 0, -49, 0, 0, 0, 0, - 0, 0, 0, -82, 0, 0, 0, 0, + 0, 0, 0, -53, 0, 0, 0, 0, + 0, 0, 0, 35, 0, 0, 0, 0, + 0, 0, 0, -67, 0, 0, 0, 0, + 0, 0, 0, -101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ], [ - 0, 0, 0, 0, 46, 0, 0, 0, - 0, 0, 0, 0, 38, 0, 0, 0, - 0, 0, 0, 0, 27, 0, 0, 0, - 0, 0, 0, 0, -69, 0, 0, 0, + 0, 0, 0, 0, 24, 0, 0, 0, + 0, 0, 0, 0, 18, 0, 0, 0, + 0, 0, 0, 0, 7, 0, 0, 0, + 0, 0, 0, 0, -87, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ], [ - 0, 0, 0, 0, 0, -55, 0, 0, - 0, 0, 0, 0, 0, -20, 0, 0, - 0, 0, 0, 0, 0, -8, 0, 0, - 0, 0, 0, 0, 0, -54, 0, 0, + 0, 0, 0, 0, 0, -70, 0, 0, + 0, 0, 0, 0, 0, -37, 0, 0, + 0, 0, 0, 0, 0, -21, 0, 0, + 0, 0, 0, 0, 0, -68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ], [ - 0, 0, 0, 0, 0, 0, 21, 0, - 0, 0, 0, 0, 0, 0, 53, 0, - 0, 0, 0, 0, 0, 0, 28, 0, - 0, 0, 0, 0, 0, 0, -11, 0, + 0, 0, 0, 0, 0, 0, -4, 0, + 0, 0, 0, 0, 0, 0, 32, 0, + 0, 0, 0, 0, 0, 0, 11, 0, + 0, 0, 0, 0, 0, 0, -29, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ], [ - 0, 0, 0, 0, 0, 0, 0, 70, - 0, 0, 0, 0, 0, 0, 0, 80, - 0, 0, 0, 0, 0, 0, 0, 77, - 0, 0, 0, 0, 0, 0, 0, 23, + 0, 0, 0, 0, 0, 0, 0, 46, + 0, 0, 0, 0, 0, 0, 0, 50, + 0, 0, 0, 0, 0, 0, 0, 54, + 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -2977,8 +2977,8 @@ internal static class TunableEvalParameters 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - -10, 0, 0, 0, 0, 0, 0, 0, - -38, 0, 0, 0, 0, 0, 0, 0, + -9, 0, 0, 0, 0, 0, 0, 0, + -36, 0, 0, 0, 0, 0, 0, 0, ], [ 0, 0, 0, 0, 0, 0, 0, 0, @@ -2988,7 +2988,7 @@ internal static class TunableEvalParameters 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 4, 0, 0, 0, 0, 0, 0, + 0, 2, 0, 0, 0, 0, 0, 0, ], [ 0, 0, 0, 0, 0, 0, 0, 0, @@ -2998,7 +2998,7 @@ internal static class TunableEvalParameters 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 14, 0, 0, 0, 0, 0, + 0, 0, 6, 0, 0, 0, 0, 0, ], [ 0, 0, 0, 0, 0, 0, 0, 0, @@ -3008,7 +3008,7 @@ internal static class TunableEvalParameters 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 8, 0, 0, 0, 0, + 0, 0, 0, -0, 0, 0, 0, 0, ], [ 0, 0, 0, 0, 0, 0, 0, 0, @@ -3018,7 +3018,7 @@ internal static class TunableEvalParameters 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 23, 0, 0, 0, + 0, 0, 0, 0, 15, 0, 0, 0, ], [ 0, 0, 0, 0, 0, 0, 0, 0, @@ -3028,7 +3028,7 @@ internal static class TunableEvalParameters 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 18, 0, 0, + 0, 0, 0, 0, 0, 11, 0, 0, ], [ 0, 0, 0, 0, 0, 0, 0, 0, @@ -3038,7 +3038,7 @@ internal static class TunableEvalParameters 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 18, 0, + 0, 0, 0, 0, 0, 0, 16, 0, ], [ 0, 0, 0, 0, 0, 0, 0, 0, @@ -3048,16 +3048,16 @@ internal static class TunableEvalParameters 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 28, + 0, 0, 0, 0, 0, 0, 0, 25, ], [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, + 0, -1, 0, 0, 0, 0, 0, 0, 0, -15, 0, 0, 0, 0, 0, 0, - 0, -35, 0, 0, 0, 0, 0, 0, + 0, -34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ], [ @@ -3065,8 +3065,8 @@ internal static class TunableEvalParameters 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 20, 0, 0, 0, 0, 0, - 0, 0, 4, 0, 0, 0, 0, 0, + 0, 0, 19, 0, 0, 0, 0, 0, + 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, -22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ], @@ -3075,8 +3075,8 @@ internal static class TunableEvalParameters 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 41, 0, 0, 0, 0, - 0, 0, 0, 11, 0, 0, 0, 0, + 0, 0, 0, 40, 0, 0, 0, 0, + 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, -14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ], @@ -3085,9 +3085,9 @@ internal static class TunableEvalParameters 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 42, 0, 0, 0, - 0, 0, 0, 0, 22, 0, 0, 0, - 0, 0, 0, 0, -4, 0, 0, 0, + 0, 0, 0, 0, 40, 0, 0, 0, + 0, 0, 0, 0, 20, 0, 0, 0, + 0, 0, 0, 0, -5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ], [ @@ -3095,7 +3095,7 @@ internal static class TunableEvalParameters 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 39, 0, 0, + 0, 0, 0, 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -3106,8 +3106,8 @@ internal static class TunableEvalParameters 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 0, - 0, 0, 0, 0, 0, 0, 6, 0, - 0, 0, 0, 0, 0, 0, -10, 0, + 0, 0, 0, 0, 0, 0, 7, 0, + 0, 0, 0, 0, 0, 0, -9, 0, 0, 0, 0, 0, 0, 0, 0, 0, ], [ @@ -3115,86 +3115,86 @@ internal static class TunableEvalParameters 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 23, - 0, 0, 0, 0, 0, 0, 0, 4, - 0, 0, 0, 0, 0, 0, 0, -14, + 0, 0, 0, 0, 0, 0, 0, 24, + 0, 0, 0, 0, 0, 0, 0, 5, + 0, 0, 0, 0, 0, 0, 0, -13, 0, 0, 0, 0, 0, 0, 0, 0, ], [ - -110, 0, 0, 0, 0, 0, 0, 0, - -52, 0, 0, 0, 0, 0, 0, 0, - -37, 0, 0, 0, 0, 0, 0, 0, - -39, 0, 0, 0, 0, 0, 0, 0, - -51, 0, 0, 0, 0, 0, 0, 0, - -65, 0, 0, 0, 0, 0, 0, 0, + -105, 0, 0, 0, 0, 0, 0, 0, + -46, 0, 0, 0, 0, 0, 0, 0, + -31, 0, 0, 0, 0, 0, 0, 0, + -33, 0, 0, 0, 0, 0, 0, 0, + -46, 0, 0, 0, 0, 0, 0, 0, + -60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ], [ - 0, -97, 0, 0, 0, 0, 0, 0, - 0, -72, 0, 0, 0, 0, 0, 0, - 0, -60, 0, 0, 0, 0, 0, 0, + 0, -86, 0, 0, 0, 0, 0, 0, 0, -62, 0, 0, 0, 0, 0, 0, + 0, -50, 0, 0, 0, 0, 0, 0, + 0, -51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ], [ - 0, 0, -57, 0, 0, 0, 0, 0, - 0, 0, -36, 0, 0, 0, 0, 0, - 0, 0, -18, 0, 0, 0, 0, 0, - 0, 0, -17, 0, 0, 0, 0, 0, + 0, 0, -45, 0, 0, 0, 0, 0, + 0, 0, -25, 0, 0, 0, 0, 0, + 0, 0, -8, 0, 0, 0, 0, 0, + 0, 0, -6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ], [ - 0, 0, 0, -45, 0, 0, 0, 0, - 0, 0, 0, -37, 0, 0, 0, 0, - 0, 0, 0, -4, 0, 0, 0, 0, - 0, 0, 0, -6, 0, 0, 0, 0, + 0, 0, 0, -33, 0, 0, 0, 0, + 0, 0, 0, -27, 0, 0, 0, 0, + 0, 0, 0, 6, 0, 0, 0, 0, + 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ], [ - 0, 0, 0, 0, -63, 0, 0, 0, - 0, 0, 0, 0, -24, 0, 0, 0, - 0, 0, 0, 0, -9, 0, 0, 0, - 0, 0, 0, 0, -2, 0, 0, 0, + 0, 0, 0, 0, -51, 0, 0, 0, + 0, 0, 0, 0, -13, 0, 0, 0, + 0, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ], [ - 0, 0, 0, 0, 0, -27, 0, 0, - 0, 0, 0, 0, 0, -13, 0, 0, - 0, 0, 0, 0, 0, -5, 0, 0, - 0, 0, 0, 0, 0, -4, 0, 0, + 0, 0, 0, 0, 0, -17, 0, 0, + 0, 0, 0, 0, 0, -3, 0, 0, + 0, 0, 0, 0, 0, 3, 0, 0, + 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ], [ - 0, 0, 0, 0, 0, 0, -42, 0, - 0, 0, 0, 0, 0, 0, -32, 0, - 0, 0, 0, 0, 0, 0, -21, 0, + 0, 0, 0, 0, 0, 0, -31, 0, 0, 0, 0, 0, 0, 0, -23, 0, + 0, 0, 0, 0, 0, 0, -13, 0, + 0, 0, 0, 0, 0, 0, -14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ], [ - 0, 0, 0, 0, 0, 0, 0, -131, - 0, 0, 0, 0, 0, 0, 0, -63, - 0, 0, 0, 0, 0, 0, 0, -54, - 0, 0, 0, 0, 0, 0, 0, -50, + 0, 0, 0, 0, 0, 0, 0, -120, + 0, 0, 0, 0, 0, 0, 0, -52, + 0, 0, 0, 0, 0, 0, 0, -46, + 0, 0, 0, 0, 0, 0, 0, -41, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -3206,232 +3206,232 @@ internal static class TunableEvalParameters [ [ 0, 0, 0, 0, 0, 0, 0, 0, - -142, 29, 3, -5, -27, -32, 29, 54, - -22, 134, 86, 21, 28, 46, 8, 13, - -18, 34, 42, 24, 10, -12, 11, 12, - -31, -25, -2, -4, -14, -21, 6, -10, - -42, -39, -22, -1, -21, -14, 19, 17, - -35, -35, -14, -18, -25, -5, 10, 2, + -141, 26, -1, -13, -40, -51, 15, 35, + -31, 118, 94, 43, 43, 48, 9, 7, + -23, 30, 41, 19, 7, -13, 8, 10, + -30, -23, 2, -0, -10, -17, 10, -7, + -39, -35, -18, 3, -16, -10, 22, 21, + -33, -32, -9, -14, -20, -1, 14, 4, 0, 0, 0, 0, 0, 0, 0, 0, ], [ 0, 0, 0, 0, 0, 0, 0, 0, - -42, -112, -102, 25, 49, 24, 56, 2, - 35, 35, 100, 90, 26, 19, 25, 56, - -19, -12, 21, 43, 12, 6, -11, 24, - -43, -35, 2, -2, -5, -8, -8, 5, - -56, -50, -17, -9, -14, -13, 9, 18, - -48, -45, -15, -32, -29, 2, 24, 21, + -36, -142, -98, 9, 27, 3, 38, -24, + 16, 19, 85, 84, 10, 8, 14, 42, + -16, -9, 25, 47, 18, 11, -6, 30, + -37, -28, 10, 5, 2, -1, -0, 14, + -49, -42, -9, -0, -5, -5, 17, 27, + -41, -38, -6, -22, -19, 10, 32, 29, 0, 0, 0, 0, 0, 0, 0, 0, ], [ 0, 0, 0, 0, 0, 0, 0, 0, - 102, -158, 56, -60, -39, -77, -78, 1, - 24, 36, 146, 56, 80, 7, -10, 52, - -7, -5, 19, 48, 23, 9, 3, 15, - -35, -24, -12, 14, 6, -4, -18, 12, - -47, -51, -14, -4, -2, -9, 9, 25, - -35, -43, -17, -23, -15, -1, 20, 24, + 90, -153, 69, -57, -45, -87, -82, -1, + 9, 20, 131, 45, 70, -7, -23, 35, + -7, -4, 21, 49, 25, 10, 4, 16, + -31, -19, -7, 19, 10, -0, -14, 16, + -43, -46, -8, 3, 3, -4, 14, 30, + -31, -38, -11, -17, -9, 3, 25, 28, 0, 0, 0, 0, 0, 0, 0, 0, ], [ 0, 0, 0, 0, 0, 0, 0, 0, - -22, -2, -15, 49, -12, -20, 22, 78, - -4, 14, 58, 109, 90, 61, 20, 23, - 0, -7, 11, 5, 10, 11, -4, 12, - -35, -24, -17, -9, -14, -11, -5, -9, - -49, -28, -32, -28, -38, -13, 5, -10, - -37, -22, -30, -42, -43, -3, 8, 1, + -46, -11, -7, 4, -6, -51, -3, 53, + -20, 5, 52, 106, 83, 53, 9, 7, + 0, -3, 14, 7, 14, 14, 0, 12, + -30, -16, -8, -1, -6, -3, 3, -4, + -41, -19, -23, -18, -29, -4, 13, -2, + -31, -14, -20, -31, -33, 6, 15, 8, 0, 0, 0, 0, 0, 0, 0, 0, ], [ 0, 0, 0, 0, 0, 0, 0, 0, - -25, -19, -36, -77, 51, -79, -28, -8, - 35, 15, 2, 46, 97, 46, 58, 49, - 1, -6, 3, 22, 21, 14, 3, 16, - -13, -11, -4, -1, -1, -5, -9, -1, - -21, -14, -12, -15, -16, -21, -0, 7, - -9, -4, -8, -16, -23, -12, 4, 5, + -28, -24, -39, -75, 51, -75, -27, -9, + 19, 3, -5, 43, 91, 37, 51, 34, + -2, -7, 2, 20, 21, 13, 3, 14, + -11, -7, -1, 3, 2, -1, -5, 2, + -18, -10, -8, -11, -12, -17, 4, 10, + -6, -0, -3, -11, -18, -8, 7, 8, 0, 0, 0, 0, 0, 0, 0, 0, ], [ 0, 0, 0, 0, 0, 0, 0, 0, - -21, -25, -8, 40, -44, 17, -73, 132, - 24, 7, 8, 89, 83, 138, 88, 46, - -19, -27, -2, 11, 23, -1, 4, 29, - -30, -44, -17, -10, -8, -27, -6, -26, - -32, -34, -19, -13, -22, -28, -16, -14, - -19, -30, -20, -36, -25, -20, -10, -14, + -59, -58, -57, 23, -29, 15, -60, 108, + -9, -26, -25, 54, 56, 124, 73, 28, + -15, -20, 5, 17, 34, 8, 14, 36, + -21, -32, -5, 2, 5, -14, 7, -14, + -24, -23, -8, -1, -8, -15, -4, -4, + -10, -18, -7, -23, -11, -7, 2, -3, 0, 0, 0, 0, 0, 0, 0, 0, ], [ 0, 0, 0, 0, 0, 0, 0, 0, - -65, -52, -49, 26, -5, -31, -82, -110, - 15, -1, 7, 20, 73, 108, 89, 27, - 2, 2, 11, 16, 35, 43, 0, -5, - -4, -7, -0, 7, 18, 9, -8, -23, - -6, -4, -5, -1, 1, 0, -7, -18, - 4, 6, 0, -15, -12, 5, 2, -15, + -38, -26, -21, 56, 26, -37, -70, -108, + -5, -18, -8, 8, 61, 93, 73, 7, + -2, -1, 7, 11, 32, 38, -3, -9, + -4, -7, -0, 6, 17, 9, -8, -23, + -5, -4, -4, 0, 2, 1, -7, -18, + 4, 6, 1, -14, -11, 5, 2, -15, 0, 0, 0, 0, 0, 0, 0, 0, ], [ 0, 0, 0, 0, 0, 0, 0, 0, - 3, -44, -102, 38, -24, 50, -4, -204, - 12, 20, 3, 5, 49, 88, 92, 13, - -6, -7, 2, 20, 24, 42, 28, -12, - -11, -14, -4, -1, 5, 15, 13, -24, - -12, -11, -7, -3, 5, 12, 12, -16, - -6, -11, -1, -29, -4, 3, 12, -9, + 21, -29, -82, 57, -3, 75, -4, -190, + -11, -0, -12, -7, 37, 73, 71, -10, + -9, -8, 0, 18, 26, 40, 25, -14, + -11, -13, -3, 0, 6, 16, 14, -24, + -12, -10, -6, -1, 6, 13, 13, -15, + -6, -10, 1, -27, -2, 3, 12, -9, 0, 0, 0, 0, 0, 0, 0, 0, ], [ 0, 0, 0, 0, 0, 0, 0, 0, - -13, 21, 27, 21, -52, 8, -17, 17, - 84, 17, 34, 58, 6, -4, 3, -20, - 4, 44, 55, 29, -2, -27, -11, -2, - -33, -19, 10, 4, -8, -11, -7, -12, - -37, -47, -3, -8, -2, -20, 8, 14, - -34, -44, -13, -19, -3, -8, 5, 5, + -55, 22, 1, 10, -78, -26, -45, -22, + 73, 4, 32, 47, -12, -18, -7, -36, + 9, 52, 62, 33, 1, -24, -5, -0, + -22, -8, 21, 14, 1, -2, 4, -2, + -26, -36, 9, 5, 9, -9, 20, 24, + -23, -33, 0, -7, 9, 3, 16, 15, 0, 0, 0, 0, 0, 0, 0, 0, ], [ 0, 0, 0, 0, 0, 0, 0, 0, - 37, 66, 65, 12, -100, -41, -37, -50, - 49, 154, 91, 169, 57, -15, -5, -24, - 14, 12, 44, 27, 29, 5, -20, -33, - -22, -11, -4, -9, -2, -24, -11, -22, - -58, -43, -21, -8, -9, -16, -14, -23, - -47, -40, -13, -53, -19, -4, -10, -24, + 29, 60, 68, 12, -103, -52, -54, -60, + 29, 117, 54, 116, 10, -49, -41, -59, + 20, 19, 52, 33, 37, 11, -13, -28, + -11, 1, 10, 4, 11, -12, 0, -12, + -46, -30, -8, 6, 4, -5, -3, -12, + -37, -27, 1, -38, -5, 9, 2, -13, 0, 0, 0, 0, 0, 0, 0, 0, ], [ 0, 0, 0, 0, 0, 0, 0, 0, - -3, 28, 150, 41, 130, 35, -53, 38, - -12, 50, 89, 52, 123, 61, 8, -46, - -16, 8, 10, 28, -2, 0, -8, -22, - -52, -20, -24, -23, -11, -27, -20, -15, - -51, -45, -26, -33, -18, -32, -19, -26, - -46, -35, -39, -43, -29, -19, -20, -15, + -51, -16, 106, 38, 99, -4, -101, -6, + -43, 23, 32, 7, 52, 38, -26, -84, + -5, 25, 26, 40, 15, 16, 9, -10, + -34, 1, -2, -1, 10, -6, 1, 2, + -32, -23, -2, -9, 5, -9, 1, -7, + -29, -14, -16, -19, -6, 3, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, ], [ 0, 0, 0, 0, 0, 0, 0, 0, - 27, 34, 47, 106, 30, -33, -25, 21, - -31, -37, 65, 98, 76, 104, 60, 26, - -38, -16, 22, 24, 41, 8, 21, -1, - -50, -31, -14, -9, -23, -20, -14, -24, - -61, -30, -29, -20, -25, -24, -24, -15, - -49, -35, -26, -39, -10, -22, -15, -21, + -13, -9, 13, 75, 33, -64, -58, -13, + -50, -52, 50, 75, 78, 88, 54, 9, + -35, -10, 28, 26, 46, 16, 30, 2, + -41, -19, -1, 4, -11, -6, -0, -14, + -51, -17, -15, -5, -10, -10, -10, -5, + -39, -22, -11, -24, 4, -7, -1, -10, 0, 0, 0, 0, 0, 0, 0, 0, ], [ 0, 0, 0, 0, 0, 0, 0, 0, - 2, 116, -56, 70, 34, -6, 62, 17, - -1, -4, -3, 90, 39, 62, 38, 25, - -31, -28, -0, 9, 26, 48, 1, 28, - -46, -29, -22, -13, -2, -10, -17, -0, - -43, -30, -22, -23, -9, -24, -19, -18, - -41, -20, -18, -36, -36, -20, -16, -23, + -48, 65, -99, 31, -13, -21, 21, -23, + -15, -16, -18, 75, 19, 63, 25, 18, + -26, -21, 5, 13, 33, 56, 12, 35, + -35, -16, -8, 1, 13, 6, -0, 15, + -30, -15, -6, -6, 8, -7, -2, -1, + -29, -6, -2, -20, -19, -4, 0, -8, 0, 0, 0, 0, 0, 0, 0, 0, ], [ 0, 0, 0, 0, 0, 0, 0, 0, - 32, 71, -30, -18, 14, 16, -42, 40, - -2, 0, -7, 2, 60, 97, 5, 105, - -26, -16, -5, -0, 24, 44, 32, 31, - -35, -36, -15, -18, -2, -2, -5, -12, - -33, -27, -23, -16, -10, -10, -14, -15, - -19, -29, -12, -29, -22, -17, -5, -25, + -8, 36, -68, -58, -22, -8, -44, 24, + -12, -7, -18, -9, 51, 97, -3, 106, + -22, -11, -2, 2, 29, 50, 39, 37, + -26, -26, -5, -8, 7, 9, 6, -0, + -24, -17, -13, -5, 2, 2, -3, -3, + -10, -19, -1, -18, -10, -6, 6, -14, 0, 0, 0, 0, 0, 0, 0, 0, ], [ 0, 0, 0, 0, 0, 0, 0, 0, - -37, -14, 1, -16, -69, 55, -101, -24, - 18, 18, 9, -6, 19, 81, 96, -72, - 1, 0, -2, 10, 35, 36, 21, 5, - -14, -11, -2, 1, 2, 16, 1, -6, - -15, -15, -4, -13, 16, 8, 6, -9, - -5, -8, -8, -13, -4, 3, 15, -3, + -36, -12, 6, -15, -65, 66, -71, -12, + -8, -6, -19, -42, -9, 66, 85, -115, + 3, 2, 1, 11, 38, 37, 22, 7, + -8, -6, 4, 7, 7, 21, 6, -1, + -10, -10, 2, -6, 22, 13, 10, -4, + -0, -3, -1, -7, 2, 8, 19, 2, 0, 0, 0, 0, 0, 0, 0, 0, ], [ 0, 0, 0, 0, 0, 0, 0, 0, - 104, 66, -28, 58, -53, 9, -89, -128, - -14, 44, -28, 60, -28, -127, -107, 1, - 54, 23, 111, 20, -2, 3, 6, -107, - 22, 96, 65, 26, 20, -22, -61, -72, - 4, 2, 34, 22, -21, 24, -23, -61, - 22, 4, 55, 39, -4, 38, -2, -52, + 97, 60, -30, 47, -60, 23, -90, -117, + 6, 110, 22, 128, 35, -66, -49, 58, + 34, 22, 109, 22, -7, -1, -8, -111, + -0, 78, 56, 14, 14, -29, -75, -82, + -16, -13, 16, 8, -38, 7, -44, -83, + 1, -12, 38, 22, -23, 21, -20, -73, 0, 0, 0, 0, 0, 0, 0, 0, ], [ 0, 0, 0, 0, 0, 0, 0, 0, - -9, 54, 29, 7, 27, 65, 4, -39, - -9, -38, -108, 34, -85, -51, -31, -94, - -30, -58, -112, -70, -33, 26, -18, -101, - 4, 25, 4, 41, -4, -2, 52, -62, - 63, -12, -38, 6, 15, 48, -20, -30, - 44, 172, 167, 111, 63, 19, 33, -57, + -18, 41, 12, -8, 8, 60, -5, -42, + 43, -1, -49, 66, -14, 31, 34, -10, + -14, -44, -98, -34, 0, 46, -12, -90, + -16, 5, -10, 24, -35, -29, 19, -96, + 50, -28, -56, -23, -7, 18, -39, -59, + 30, 144, 141, 83, 38, 3, 20, -74, 0, 0, 0, 0, 0, 0, 0, 0, ], [ 0, 0, 0, 0, 0, 0, 0, 0, - 56, 33, 45, 48, 105, 21, 52, -22, - -63, -116, 17, -34, -27, -9, -115, -124, - -76, -22, -45, -147, -28, 103, -18, -69, - -43, 32, 15, 2, 64, 64, 25, -93, - 9, 36, 23, -57, -4, 39, -18, -21, - -21, 36, 66, 84, 120, 68, 63, -53, + 31, -1, 18, 19, 75, -4, 24, -40, + 7, -71, 76, 20, 50, 72, -59, -13, + -55, -16, -37, -120, 1, 131, -10, -51, + -49, 7, -7, -16, 42, 42, 0, -117, + 2, 20, 1, -81, -23, 19, -36, -36, + -31, 6, 39, 52, 91, 51, 45, -71, 0, 0, 0, 0, 0, 0, 0, 0, ], [ 0, 0, 0, 0, 0, 0, 0, 0, - -67, 49, 62, 89, -25, 67, 57, -19, - -93, -81, -25, 21, 1, -40, -65, -59, - -69, 8, 3, -51, -93, 37, 31, -35, - -37, -27, 16, -43, -14, 67, 19, -23, - -82, 10, 41, -16, 7, 37, -21, -23, - -25, 34, 46, 83, 81, 97, 27, 44, + -64, 36, 48, 70, -43, 54, 44, -25, + -12, -9, 32, 68, 60, 26, 22, 42, + -53, 11, 5, -37, -84, 46, 36, -18, + -66, -50, -10, -68, -30, 46, -11, -52, + -101, -12, 21, -34, -17, 15, -47, -43, + -42, 14, 13, 55, 57, 75, 3, 27, 0, 0, 0, 0, 0, 0, 0, 0, ], [ 0, 0, 0, 0, 0, 0, 0, 0, - -18, 42, 81, -1, 93, 30, 8, 11, - -134, -56, -108, 8, -57, -21, 17, -71, - -127, 65, 12, -77, -56, -35, 36, -30, - -52, -32, 30, 24, 13, 32, 33, 1, - -65, -5, 6, -32, -11, 80, 31, 61, - -89, 19, 27, 20, 64, 113, 83, 39, + -39, 27, 66, -23, 72, 12, -4, -8, + -50, 15, -39, 55, -1, 22, 103, 4, + -115, 74, 23, -57, -52, -32, 44, -24, + -57, -48, 11, 16, 0, 17, 15, -10, + -81, -28, -21, -44, -43, 59, 10, 42, + -102, -1, 1, -7, 34, 74, 62, 23, 0, 0, 0, 0, 0, 0, 0, 0, ], [ 0, 0, 0, 0, 0, 0, 0, 0, - 14, 40, 40, 78, 34, 45, 2, -46, - -142, -76, 26, -68, -33, -6, 12, -94, - -60, -5, -59, -47, -109, -98, -62, -50, - -30, -14, 0, 13, -33, 6, 46, 36, - -26, 4, 11, 80, 48, 59, 44, 82, - -72, -36, 26, -24, 80, 202, 142, 21, + 9, 31, 28, 63, 24, 32, -3, -59, + -45, 4, 91, -17, 38, 34, 55, -37, + -47, 2, -37, -21, -94, -88, -59, -51, + -50, -36, -17, 4, -34, -13, 32, 20, + -49, -17, -14, 61, 27, 35, 24, 64, + -99, -60, -1, -44, 49, 160, 109, -4, 0, 0, 0, 0, 0, 0, 0, 0, ], [ 0, 0, 0, 0, 0, 0, 0, 0, - -111, -98, 22, 53, 1, -47, -30, -12, - -106, -26, -16, 22, -8, -9, -80, -18, - -56, -41, -31, -55, -34, -19, -25, -17, - -18, -33, -11, 38, 20, 34, 24, 8, - -75, -40, 12, 35, 72, -16, 66, 48, - -91, 38, 33, 39, 107, 149, 250, 53, + -75, -50, 30, 65, 9, -37, -21, -14, + -25, 43, 38, 69, 37, 35, -32, 20, + -56, -50, -27, -40, -35, -19, -25, -14, + -49, -57, -35, 18, -7, 12, 6, -7, + -104, -66, -10, 11, 48, -44, 45, 34, + -113, 21, 8, 7, 83, 121, 221, 32, 0, 0, 0, 0, 0, 0, 0, 0, ], [ 0, 0, 0, 0, 0, 0, 0, 0, - -116, -59, -42, 52, 36, -42, 17, 10, - -119, -32, 6, -33, 8, -33, -12, -52, - -106, 107, -18, -42, 9, 17, -93, 11, - -25, -17, -21, 2, -13, 145, -33, 12, - 31, 6, 3, 36, -11, 57, -104, 86, - -42, -2, -15, 18, 1, 157, 153, 99, + -82, -34, -31, 54, 47, -27, 10, -5, + -57, 10, 56, 17, 50, 4, 0, -21, + -96, 102, -15, -29, 14, 23, -93, 12, + -41, -43, -39, -11, -27, 126, -48, -1, + 14, -20, -15, 16, -27, 36, -123, 73, + -54, -20, -33, -2, -16, 129, 130, 84, 0, 0, 0, 0, 0, 0, 0, 0, ], ]; @@ -3440,232 +3440,232 @@ internal static class TunableEvalParameters [ [ 0, 0, 0, 0, 0, 0, 0, 0, - -155, -294, 18, 29, 16, 17, 35, -4, - -40, -24, -40, 9, 46, 64, 95, 86, - -17, -19, -18, -15, 9, 34, 28, 28, - -14, -10, 2, -5, 1, 19, 24, 29, - -6, -2, 10, -10, 7, 6, -2, 3, - -16, 8, 12, 10, 17, 15, 7, 6, + -148, -279, 29, 40, 28, 24, 35, 6, + 4, 11, -32, 26, 66, 77, 101, 99, + -18, -19, -24, -18, 4, 26, 18, 20, + -20, -15, -5, -11, -6, 10, 14, 21, + -14, -10, 3, -17, -1, -3, -11, -6, + -22, 1, 5, 2, 7, 7, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, ], [ 0, 0, 0, 0, 0, 0, 0, 0, - -37, -115, -76, -31, 9, 55, 47, 68, - -20, -9, -17, -17, 52, 67, 53, 61, - -9, -10, -20, -25, -7, 11, 34, 28, - -9, -19, -15, -18, -11, 8, 16, 16, - -7, -8, -4, -7, -0, -1, -6, -3, - -9, -7, 9, 12, 4, -4, -11, -18, + -38, -124, -78, -70, -33, 5, -13, 11, + 9, 20, 8, -3, 74, 79, 61, 67, + -4, -6, -17, -23, -3, 14, 36, 28, + -5, -15, -11, -14, -6, 12, 19, 17, + -2, -5, -0, -3, 5, 4, -1, 0, + -5, -3, 13, 14, 6, 0, -7, -15, 0, 0, 0, 0, 0, 0, 0, 0, ], [ 0, 0, 0, 0, 0, 0, 0, 0, - -122, -84, -135, -57, -35, 64, 93, 95, - 6, 1, -45, -14, -16, 41, 97, 64, - -5, 5, -20, -17, -20, 16, 36, 39, - -4, -4, -17, -6, -6, 8, 26, 13, - -2, 6, -7, -7, -7, -3, -1, -7, - -2, 11, 8, 11, 7, 4, -8, -1, + -149, -84, -165, -59, -63, 35, 57, 57, + 11, 22, -24, 9, -10, 47, 99, 66, + 1, 8, -19, -16, -17, 19, 40, 42, + -0, -1, -16, -4, -3, 11, 30, 17, + 2, 9, -5, -4, -2, 1, 4, -1, + 2, 14, 10, 13, 10, 7, -4, 4, 0, 0, 0, 0, 0, 0, 0, 0, ], [ 0, 0, 0, 0, 0, 0, 0, 0, - 27, -75, -0, -117, -34, -41, 99, 31, - 26, -4, -13, -33, -29, -1, 61, 60, - 7, -4, 0, -7, -1, -8, 9, 17, - 6, 1, -7, 3, -5, -8, -4, 4, - 3, -4, -1, 5, 5, -5, -13, -2, - 11, -4, -1, 48, 19, -7, -11, -4, + 1, -109, -5, -132, -40, -76, 66, -0, + 35, 1, 1, -21, -14, 3, 65, 66, + 14, 1, 7, 1, 5, -3, 13, 21, + 10, 4, -3, 7, -2, -6, -2, 8, + 6, -1, 2, 9, 9, -3, -11, 2, + 15, -1, 1, 51, 20, -5, -8, -1, 0, 0, 0, 0, 0, 0, 0, 0, ], [ 0, 0, 0, 0, 0, 0, 0, 0, - 141, 70, -37, -64, -116, -68, -16, 82, - 41, 43, 33, -21, -36, 10, -1, 4, - 25, 24, 17, -2, -8, -1, 3, -5, - 9, 7, -9, -3, -1, -10, -5, -9, - -1, -3, -14, -4, -4, -7, -20, -27, - -4, -4, -14, 6, 22, 0, -10, -15, + 93, 24, -82, -63, -158, -67, -66, 34, + 42, 47, 34, 0, -14, 24, -1, 8, + 36, 34, 27, 7, -2, 6, 11, 4, + 16, 13, -3, 4, 5, -5, -0, -3, + 5, 2, -8, 2, 2, -2, -15, -21, + 3, 2, -8, 12, 27, 6, -4, -8, 0, 0, 0, 0, 0, 0, 0, 0, ], [ 0, 0, 0, 0, 0, 0, 0, 0, - 120, 59, 35, -72, -46, -104, -79, -61, - 72, 87, 29, -22, -37, -16, -22, -24, - 50, 42, 15, -16, -4, -9, -4, -20, - 28, 29, 7, -9, -6, -5, -10, -14, - 14, 10, -4, 1, -4, -0, -15, -13, - 14, 12, 9, 7, 2, -1, -12, -13, + 81, 23, 9, -103, -52, -126, -83, -100, + 89, 109, 55, 7, -8, 2, -3, -9, + 55, 46, 20, -10, -5, -11, -4, -17, + 29, 30, 8, -8, -7, -7, -11, -13, + 16, 10, -3, 2, -5, -2, -16, -12, + 18, 13, 10, 8, 1, -2, -12, -11, 0, 0, 0, 0, 0, 0, 0, 0, ], [ 0, 0, 0, 0, 0, 0, 0, 0, - 160, 159, 130, 35, -17, -83, -156, -103, - 85, 95, 71, 17, -13, -28, -28, 3, - 30, 22, 13, -13, -26, -30, -12, -14, - 6, 8, -7, -17, -25, -21, -26, -22, - -6, -8, -9, -16, -9, -14, -21, -23, - -9, -10, -11, -5, -2, -7, -20, -25, + 63, 68, 45, -45, -93, -83, -192, -95, + 93, 108, 88, 35, 5, -9, -6, 24, + 37, 31, 23, -4, -16, -20, -2, -4, + 15, 18, 4, -6, -15, -12, -17, -12, + 5, 3, 2, -5, 1, -5, -12, -13, + 2, 0, -0, 5, 8, 4, -10, -15, 0, 0, 0, 0, 0, 0, 0, 0, ], [ 0, 0, 0, 0, 0, 0, 0, 0, - 82, 131, 139, 30, 49, -98, -54, -94, - 54, 91, 68, 54, 8, -24, -3, -7, - 36, 25, 15, -11, -19, -40, -25, -26, - 6, 3, -4, -11, -32, -31, -35, -26, - -7, -11, -10, -15, -20, -23, -32, -29, - -9, -16, -12, 18, -14, -5, -23, -39, + 3, 45, 61, -43, -19, -170, -50, -134, + 88, 124, 111, 107, 63, 11, 36, 30, + 42, 28, 20, -5, -13, -34, -20, -22, + 11, 7, 0, -6, -27, -27, -32, -22, + -1, -6, -5, -10, -14, -18, -28, -24, + -3, -11, -8, 23, -9, -0, -18, -33, 0, 0, 0, 0, 0, 0, 0, 0, ], [ 0, 0, 0, 0, 0, 0, 0, 0, - -137, -108, -151, -21, 25, 31, 65, 3, - -70, -46, -63, -29, 44, 50, 71, 73, - -15, -18, -27, -11, 2, 36, 42, 40, - 17, 0, 1, -2, -0, 9, 18, 19, - 14, 11, -2, 5, -1, 11, 0, 4, - 20, 20, 14, 27, -2, 11, 7, 11, + -116, -98, -136, -15, 34, 40, 69, 5, + -67, -51, -62, -31, 45, 50, 67, 67, + -15, -21, -29, -12, 2, 35, 39, 36, + 14, -3, -2, -2, 1, 9, 16, 17, + 11, 8, -5, 3, -2, 9, -2, 0, + 18, 18, 12, 25, -3, 10, 6, 9, 0, 0, 0, 0, 0, 0, 0, 0, ], [ 0, 0, 0, 0, 0, 0, 0, 0, - -69, -125, -82, -112, -12, 26, 67, 33, - -31, -62, -48, -74, -28, 44, 70, 68, - 1, -7, -10, -11, -2, 9, 33, 49, - 10, 14, 1, 14, 2, 8, 15, 25, - 19, 11, 7, 10, 1, 6, 5, 11, - 20, 22, 9, 27, 2, 6, 11, 17, + -69, -123, -83, -114, -16, 24, 65, 26, + -26, -54, -56, -66, -23, 49, 76, 71, + 6, -4, -7, -8, -0, 12, 34, 49, + 9, 13, -0, 12, 0, 6, 13, 23, + 18, 10, 6, 8, -1, 5, 3, 9, + 19, 22, 8, 26, -0, 5, 10, 15, 0, 0, 0, 0, 0, 0, 0, 0, ], [ 0, 0, 0, 0, 0, 0, 0, 0, - -13, -46, -142, -56, -121, -34, 44, 48, - 27, -25, -70, -30, -46, -13, 35, 62, - 15, 1, 1, -3, 2, 4, 20, 35, - 15, 8, 19, 17, 13, 6, 11, 15, - 13, 13, 11, 18, 9, 10, 4, 9, - 18, 13, 16, 25, 10, 6, 7, 12, + -7, -42, -138, -65, -120, -33, 47, 50, + 31, -23, -62, -45, -37, -11, 39, 66, + 18, 2, 3, -0, 4, 5, 20, 36, + 13, 6, 18, 15, 12, 4, 10, 14, + 11, 11, 9, 16, 7, 8, 2, 7, + 18, 12, 15, 24, 9, 5, 6, 11, 0, 0, 0, 0, 0, 0, 0, 0, ], [ 0, 0, 0, 0, 0, 0, 0, 0, - -5, -5, -46, -124, -38, -82, -25, 27, - 52, 41, -26, -68, -30, -58, -22, 21, - 39, 15, 2, -10, 2, 1, 4, 13, - 25, 16, 7, 17, 19, 14, 11, 13, - 20, 6, 8, 17, 15, 11, 6, 7, - 24, 15, 12, 20, 5, 12, 8, 14, + -2, 3, -42, -120, -45, -80, -25, 30, + 50, 39, -31, -73, -53, -59, -24, 22, + 43, 18, 6, -4, 7, 5, 6, 17, + 24, 15, 7, 19, 20, 14, 10, 13, + 18, 5, 7, 16, 14, 10, 5, 6, + 23, 14, 12, 20, 6, 13, 8, 14, 0, 0, 0, 0, 0, 0, 0, 0, ], [ 0, 0, 0, 0, 0, 0, 0, 0, - 0, -31, 40, -66, -106, -62, -123, -51, - 55, 63, 41, -43, -49, -31, -52, -26, - 44, 33, 18, 3, -8, -4, 2, -2, - 31, 20, 16, 12, 14, 11, 14, 8, - 21, 10, 12, 16, 13, 14, 7, 11, - 23, 12, 13, 20, 18, 15, 10, 16, + 18, -9, 61, -49, -81, -48, -97, -29, + 52, 62, 42, -46, -46, -45, -46, -24, + 41, 31, 18, 4, -9, -6, -0, -2, + 24, 14, 11, 7, 8, 5, 8, 3, + 13, 4, 5, 9, 6, 8, 0, 5, + 17, 6, 8, 14, 12, 9, 4, 11, 0, 0, 0, 0, 0, 0, 0, 0, ], [ 0, 0, 0, 0, 0, 0, 0, 0, - -13, 13, 77, 30, -43, -139, -4, -152, - 49, 65, 68, 31, -30, -73, -42, -89, - 41, 36, 26, 1, -3, -22, -7, -23, - 26, 26, 13, 8, 2, 2, -0, 5, - 13, 8, 9, 3, 7, 6, -3, 4, - 9, 10, 6, 6, 18, 14, 1, 12, + -12, 18, 88, 42, -33, -130, -3, -142, + 42, 60, 68, 30, -31, -72, -48, -87, + 39, 36, 29, 4, -1, -21, -7, -22, + 22, 24, 12, 8, 2, -1, -3, 2, + 9, 6, 8, 1, 6, 4, -5, 1, + 5, 8, 5, 4, 17, 13, -1, 10, 0, 0, 0, 0, 0, 0, 0, 0, ], [ 0, 0, 0, 0, 0, 0, 0, 0, - 19, 43, 52, 59, 47, -62, -130, -83, - 36, 59, 65, 63, 9, -37, -83, -44, - 27, 21, 26, 3, -19, -18, -7, -15, - 12, 12, 5, -4, -9, -13, -4, -13, - 4, 1, -0, 3, -6, -4, -9, -10, - -2, -2, 7, 7, 8, 8, -6, -13, + -2, 16, 29, 42, 31, -82, -154, -99, + 47, 66, 78, 82, 27, -27, -66, -21, + 31, 22, 29, 10, -14, -14, -3, -11, + 13, 11, 5, -3, -7, -12, -5, -13, + 4, 0, -0, 3, -5, -3, -9, -11, + -0, -2, 8, 8, 9, 9, -5, -13, 0, 0, 0, 0, 0, 0, 0, 0, ], [ 0, 0, 0, 0, 0, 0, 0, 0, - -61, -12, -41, 9, 69, 17, 24, 6, - -0, -73, -1, 19, 81, 87, 95, 64, - -70, -16, -33, -20, 14, 12, 24, 44, - -30, -33, -35, -34, -17, -2, 9, 19, - -17, -12, -11, -26, -13, -11, -8, -1, - -11, 15, -3, -3, -14, -5, -5, 11, + -77, -30, -57, -2, 52, -11, -7, -20, + -9, -99, -22, -11, 50, 59, 65, 41, + -52, -12, -28, -17, 19, 15, 29, 48, + -11, -18, -22, -20, -5, 9, 20, 30, + -4, -0, 3, -14, -1, 1, 3, 12, + 3, 28, 12, 12, 2, 7, 7, 24, 0, 0, 0, 0, 0, 0, 0, 0, ], [ 0, 0, 0, 0, 0, 0, 0, 0, - -28, -26, -19, -40, 8, -5, -7, -0, - 46, 50, 61, 38, 75, 77, 77, 64, - -11, -1, 10, 18, 11, 14, 19, 25, - -30, -35, -29, -46, -34, -17, -16, 1, - -34, -21, -13, -21, -32, -24, -20, -10, - 4, -32, -1, 8, -27, -13, -15, 4, + -28, -24, -16, -41, 10, -6, -12, -8, + 23, 28, 26, 4, 36, 42, 44, 23, + -15, -2, 5, 5, 2, 9, 16, 16, + -18, -21, -16, -33, -18, -1, -2, 12, + -23, -10, -0, -5, -18, -9, -9, -0, + 15, -18, 14, 23, -10, 2, -3, 13, 0, 0, 0, 0, 0, 0, 0, 0, ], [ 0, 0, 0, 0, 0, 0, 0, 0, - -43, -12, 8, -56, 3, 10, -31, -17, - 36, 46, 22, 16, 40, 41, 76, 67, - 8, -1, 6, 39, 1, -1, 14, 34, - -4, -26, -23, -6, -43, -36, -18, 11, - -11, -46, -16, -3, -21, -23, -17, -9, - 14, 15, 3, 8, -13, -19, -26, 5, + -44, -12, 5, -58, 2, 9, -31, -22, + 23, 35, 11, -4, 17, 25, 63, 41, + 2, -3, 3, 27, -8, -9, 11, 25, + -1, -18, -14, -0, -36, -27, -9, 18, + -6, -35, -4, 9, -9, -12, -8, -3, + 18, 25, 10, 15, -2, -9, -17, 10, 0, 0, 0, 0, 0, 0, 0, 0, ], [ 0, 0, 0, 0, 0, 0, 0, 0, - -31, -50, -32, -2, -7, -16, -18, -1, - 29, 34, -7, 13, 33, 41, 52, 51, - 19, -7, -2, 11, 19, -5, -2, 13, - 1, -11, -23, -18, -16, -31, -23, 3, - 10, -18, -3, 9, -8, -9, -10, -3, - 8, 9, 14, 7, -2, -5, -7, -6, + -26, -45, -28, 3, -1, -15, -17, 4, + 9, 14, -25, -5, 9, 24, 33, 28, + 11, -10, -6, 4, 14, -8, -5, 6, + 6, -6, -16, -11, -10, -23, -15, 9, + 15, -10, 4, 13, 1, 1, -2, 2, + 11, 16, 24, 15, 6, 3, 0, -3, 0, 0, 0, 0, 0, 0, 0, 0, ], [ 0, 0, 0, 0, 0, 0, 0, 0, - -36, -23, -45, -18, 8, -11, -26, -32, - 48, 23, 59, -3, 54, 16, 8, 18, - 33, -9, -9, 18, 17, 15, -19, 6, - 4, -10, -11, -18, -20, -19, -21, -8, - 8, -15, -11, -6, 8, -11, -15, -15, - 17, -6, 2, 23, 29, 8, -0, -4, + -25, -13, -37, -9, 14, -6, -20, -22, + 28, 7, 41, -23, 35, 5, -12, 4, + 24, -14, -15, 9, 14, 13, -23, 1, + 3, -6, -6, -16, -15, -13, -15, -5, + 9, -9, -5, -1, 17, -3, -8, -10, + 14, -2, 7, 28, 38, 20, 5, -3, 0, 0, 0, 0, 0, 0, 0, 0, ], [ 0, 0, 0, 0, 0, 0, 0, 0, - -48, 4, -28, -21, -28, 13, -47, -46, - 61, 58, 35, 50, 36, 24, -3, 29, - 26, 17, 13, 1, 28, 12, 1, -0, - 3, -5, -10, -9, -12, -10, -29, -14, - -9, -16, -16, -20, -3, -4, -26, -16, - 12, -1, -5, 11, -9, -10, -1, 10, + -36, 18, -12, -10, -12, 28, -34, -29, + 30, 33, 12, 27, 10, 10, -19, 13, + 13, 9, 4, -10, 23, 10, -1, -3, + 0, -3, -7, -8, -11, -3, -24, -12, + -8, -11, -8, -14, 7, 5, -17, -11, + 9, 4, 1, 15, 1, 2, 8, 13, 0, 0, 0, 0, 0, 0, 0, 0, ], [ 0, 0, 0, 0, 0, 0, 0, 0, - -16, -8, -15, 4, 1, 3, 9, -13, - 49, 41, 61, 64, 52, 17, 37, 24, - 27, 24, 10, 11, 10, 6, -11, -0, - -6, 3, -8, -26, -17, -39, -28, -16, - -4, -19, -24, -18, -18, -5, -25, -25, - 10, -15, -21, -38, -8, -11, -40, 10, + -34, -26, -24, -3, -6, -3, 4, -18, + 30, 28, 54, 58, 50, 14, 36, 24, + 16, 18, 5, 1, 7, 3, -11, -2, + -5, 8, -1, -19, -8, -31, -19, -9, + -1, -12, -16, -10, -8, 5, -18, -18, + 10, -10, -13, -28, -0, -1, -32, 16, 0, 0, 0, 0, 0, 0, 0, 0, ], [ 0, 0, 0, 0, 0, 0, 0, 0, - 1, -20, 18, -12, -10, 23, -8, 12, - 53, 54, 45, 58, 48, 33, 30, 31, - 48, -2, 21, 26, -16, -12, 4, -5, - 3, -3, -1, -12, -20, -48, -29, -9, - -24, -19, -19, -18, -16, -20, -13, -35, - 7, -12, -10, -23, -23, -23, -17, -37, + -19, -45, -3, -28, -23, 13, -15, -3, + 25, 22, 13, 27, 19, 15, 12, 16, + 46, -3, 21, 25, -12, -9, 7, 3, + 12, 7, 10, -2, -8, -35, -17, 4, + -12, -5, -6, -3, 0, -5, 2, -21, + 16, -0, 5, -8, -8, -5, -2, -26, 0, 0, 0, 0, 0, 0, 0, 0, ], ]; @@ -3673,2340 +3673,2340 @@ internal static class TunableEvalParameters internal static readonly short[][] MiddleGameEnemyKnightTable = [ [ - -96, -8, 150, -13, -37, -110, -57, -49, - 64, 37, 39, 52, 185, 43, -56, -148, - 6, 59, 128, 61, 52, 8, 30, 56, - 3, 57, 29, 67, 36, -6, 22, -16, - 40, 23, 39, 15, 6, 24, 26, -9, - -4, 0, -19, -0, -29, -8, -41, -19, - -31, -57, -19, -8, -1, -17, -35, -63, - 15, -90, -77, -8, -36, -57, -92, -60, - ], - [ - -101, -52, -107, -16, -39, 17, -25, -102, - -24, 1, 31, 31, 46, 44, -29, -46, - -27, 38, 76, 61, 34, 18, 26, -15, - 27, 32, 11, 28, -1, 23, 10, -10, - -2, 11, 32, 7, 18, 21, 10, -13, - -16, 17, 4, 9, 6, 12, -20, -17, - 37, 8, -0, 4, 5, 9, 29, -25, - 11, -20, -23, -16, -9, -9, -9, -31, - ], - [ - -12, -40, -43, -35, -62, -64, -96, -96, - 40, 13, 5, 30, 108, 63, -16, 6, - 49, 45, 94, -119, 73, 37, 15, 23, - 34, -2, 44, -8, 34, -4, 9, 10, - 2, 7, -0, 9, 13, 6, 2, -3, - -10, 2, -5, 7, 2, 8, -9, -22, - 2, -15, -12, 2, -0, 13, 5, -16, - 18, -22, -21, -30, -8, -6, -32, -20, - ], - [ - -40, -29, -37, -12, 10, 26, -62, 85, - 48, -135, -4, -67, 15, 30, 34, -19, - -15, 72, 42, 73, 39, 38, 76, -44, - 9, 51, 28, 46, 19, 16, 26, -12, - -28, 5, -20, 2, 34, 12, 16, 18, - -5, -10, -13, 2, -14, -2, -30, -12, - -48, 10, -32, -5, 11, -7, 18, 27, - -22, -59, -31, -45, -4, -14, -15, -49, - ], - [ - -10, -4, 26, -24, -45, -45, 33, -78, - 17, 1, -34, 120, 27, 40, 11, 53, - 40, 33, -2, -68, 47, -59, 67, 1, - 18, -7, 15, 17, 10, 1, 15, -1, - -1, -21, -5, -6, -4, 14, -13, 5, - -10, -6, -7, -10, -2, -5, -6, -2, - -3, -0, -10, 7, 1, 3, 0, -5, - -37, -11, -22, -15, 5, -12, -15, -21, - ], - [ - -32, 11, -22, 38, 81, -33, -14, -73, - -12, -35, 36, 67, 16, 86, -5, -55, - -75, 38, 44, 73, -76, 61, -53, 12, - -7, 8, -18, 30, 5, 52, 42, 59, - -24, -20, 9, 2, 36, 17, 30, 4, - -29, -8, -11, -21, -9, 10, 3, -14, - -35, 31, -2, -20, 5, -3, 7, -5, - -57, -40, -2, -21, 8, -37, -31, -26, - ], - [ - -172, -166, -59, -70, -50, -97, -57, 32, - -25, -12, 28, 42, 45, 77, 47, 79, - -0, 11, -1, 36, 80, -12, 42, 120, - -3, 12, 23, 11, 10, 12, 15, 12, - -1, -3, 13, 4, 17, 13, 6, 6, - -4, -3, 3, -2, 5, 7, 4, -0, - -13, -8, -1, 7, 6, 17, 8, 8, + -96, -7, 148, -15, -35, -106, -59, -46, + 63, 37, 40, 52, 185, 41, -56, -148, + 4, 61, 128, 60, 54, 7, 31, 56, + 3, 57, 29, 66, 35, -5, 23, -16, + 39, 21, 39, 16, 6, 24, 27, -9, + -4, 1, -19, -0, -30, -7, -41, -19, + -31, -55, -19, -7, -1, -16, -35, -62, + 17, -90, -77, -8, -36, -58, -94, -62, + ], + [ + -102, -51, -107, -17, -40, 17, -27, -103, + -24, 1, 29, 31, 47, 44, -30, -45, + -27, 39, 75, 62, 34, 18, 26, -14, + 27, 32, 11, 28, -1, 22, 10, -10, + -2, 11, 31, 7, 19, 21, 10, -13, + -15, 18, 4, 9, 6, 12, -19, -17, + 38, 8, 0, 4, 5, 9, 30, -24, + 13, -20, -22, -16, -9, -10, -9, -32, + ], + [ + -12, -39, -43, -36, -61, -68, -95, -95, + 38, 9, 4, 28, 107, 62, -16, 6, + 48, 45, 94, -118, 72, 36, 16, 22, + 34, -3, 43, -9, 34, -4, 10, 10, + 2, 7, -1, 10, 14, 6, 3, -3, + -9, 4, -5, 7, 2, 9, -8, -22, + 3, -14, -11, 3, -0, 13, 5, -16, + 18, -22, -20, -30, -8, -6, -32, -20, + ], + [ + -39, -30, -37, -12, 10, 27, -61, 83, + 48, -134, -4, -65, 15, 28, 34, -19, + -16, 71, 42, 74, 37, 37, 76, -44, + 9, 50, 28, 46, 19, 17, 27, -11, + -28, 4, -20, 1, 35, 12, 16, 19, + -4, -9, -13, 1, -14, -2, -29, -13, + -50, 11, -31, -5, 12, -6, 18, 26, + -22, -59, -31, -44, -4, -15, -15, -50, + ], + [ + -10, -6, 27, -27, -44, -46, 33, -76, + 17, 2, -32, 119, 28, 41, 11, 53, + 37, 33, -3, -72, 47, -59, 67, 1, + 17, -8, 15, 16, 10, 1, 15, -1, + -1, -21, -5, -6, -3, 14, -13, 5, + -9, -5, -7, -10, -2, -5, -5, -2, + -2, 1, -10, 7, 2, 3, 1, -4, + -36, -12, -21, -15, 5, -13, -15, -21, + ], + [ + -32, 11, -21, 38, 81, -33, -14, -73, + -11, -35, 36, 67, 18, 86, -4, -53, + -75, 36, 45, 74, -77, 63, -54, 11, + -6, 8, -18, 29, 5, 52, 42, 59, + -26, -20, 9, 2, 36, 17, 30, 3, + -28, -7, -11, -21, -9, 10, 4, -14, + -35, 31, -2, -19, 5, -4, 7, -5, + -56, -40, -1, -21, 8, -37, -32, -25, + ], + [ + -171, -167, -60, -70, -49, -96, -57, 33, + -25, -12, 28, 43, 45, 77, 46, 78, + -1, 11, -1, 37, 79, -12, 42, 119, + -3, 11, 23, 10, 10, 12, 15, 11, + -2, -4, 13, 4, 17, 13, 6, 6, + -3, -2, 3, -2, 5, 7, 4, -0, + -13, -8, -1, 7, 6, 17, 8, 9, -24, -5, -13, -13, 9, -10, -25, -17, ], [ - -122, -85, -90, 41, 6, 42, -111, -51, - -69, -28, -6, 18, -24, 68, 37, 127, - 12, 8, 7, 66, 78, 95, 83, -3, - -27, 3, 19, 26, 41, 42, 36, 16, - -25, -29, 14, 4, 36, 24, 31, 11, - -34, -20, -7, -2, -0, 18, -3, 5, - -31, -10, -8, -1, -1, 1, 7, 3, - -44, -35, -48, -34, 3, -14, -37, -26, - ], - [ - -126, -55, -8, -37, -23, -52, -47, -78, - -42, -42, 64, 80, 60, 41, -69, -25, - 26, 27, 65, -27, 68, 46, 9, -31, - 72, 43, 147, 43, 55, -1, -28, -25, - 32, 75, -4, 44, 38, 27, -22, 4, - -4, 13, 2, -4, 4, -8, -16, -31, - 42, -41, 6, 22, 1, 21, -45, -52, - -132, 5, -47, -25, 48, -20, -80, 18, - ], - [ - -2, 6, 61, 24, 66, -88, 8, -36, - 22, 18, 14, -44, 37, 24, -70, -9, - -54, 4, 121, 87, -8, 45, -13, -65, - 39, 77, 2, 59, 46, 6, 41, -33, - -3, 6, 33, 32, 26, -15, 34, -21, - -62, 21, -15, -1, -24, -19, -21, -50, - -22, 39, -4, -24, -9, -28, 12, -10, - 36, -28, -40, -47, -60, -55, -80, 15, - ], - [ - -138, -63, -22, 10, -13, -20, -28, -8, - 37, 62, -7, -8, 4, 2, -7, 15, - 34, 31, 10, 70, 87, 112, 66, 4, - 10, -3, 76, 37, 92, 36, 66, -31, - -7, 7, 27, 17, 27, -1, 25, -22, - -9, -0, -13, 15, -17, -12, -45, -15, - -62, -72, -17, -13, -12, -41, -20, -18, - 25, -41, -38, -15, -27, -82, -45, -12, - ], - [ - -39, 6, -38, -22, 19, 66, -65, -82, - -38, -20, 55, 73, -6, -67, 10, 49, - -45, 32, 42, 45, -12, 63, 16, 15, - -13, 1, 50, 75, 48, 122, 19, 1, - 7, 50, 40, 11, 56, 31, 27, 5, - -35, -20, -12, -4, -25, -6, -33, 3, - -16, -52, 3, -3, -9, -6, -14, -39, - -49, -39, -59, -29, -37, -47, -33, -29, - ], - [ - -23, -82, -87, 37, -104, 23, -75, -40, - -33, -13, 16, 30, -1, 33, 50, 84, - -108, 6, 30, -5, 35, 53, 63, 110, - 32, -6, 50, 36, 102, 58, 122, 34, - -17, 13, -0, 32, 41, 34, 38, 22, - -20, -13, -20, -11, 9, -7, -8, -27, - -84, -9, -14, -8, -2, -26, 6, -15, - -63, -43, -63, -27, -13, -52, -20, -64, - ], - [ - -97, -130, -60, 25, 40, 54, -53, -51, - -9, -39, 9, 36, 18, 53, -36, 10, - 10, 1, 3, 60, 63, 88, 95, -25, - -26, 13, 18, 41, 33, 148, 34, 77, - -40, -1, 9, -4, 40, 16, 56, -15, - -47, -30, -15, -8, 9, 0, -28, -19, + -122, -84, -89, 41, 6, 42, -113, -51, + -69, -28, -6, 18, -24, 68, 37, 126, + 11, 7, 8, 67, 78, 94, 82, -2, + -27, 2, 19, 26, 41, 41, 36, 16, + -26, -29, 13, 4, 36, 24, 30, 12, + -33, -19, -7, -2, 0, 18, -2, 5, + -30, -10, -8, -0, -1, 1, 7, 3, + -44, -35, -48, -35, 3, -15, -37, -27, + ], + [ + -126, -53, -8, -36, -22, -49, -46, -78, + -43, -43, 63, 81, 61, 42, -71, -24, + 26, 29, 64, -22, 69, 46, 8, -30, + 73, 41, 146, 42, 54, -1, -28, -26, + 32, 75, -5, 43, 38, 26, -21, 4, + -3, 14, 2, -5, 3, -9, -16, -32, + 41, -41, 6, 21, 1, 21, -46, -52, + -132, 5, -48, -25, 48, -21, -81, 17, + ], + [ + -6, 7, 61, 24, 67, -89, 6, -37, + 25, 19, 16, -49, 37, 23, -67, -8, + -53, 6, 120, 89, -8, 46, -13, -62, + 39, 75, 2, 59, 46, 5, 40, -32, + -3, 6, 32, 32, 27, -16, 34, -21, + -62, 22, -15, -1, -24, -20, -20, -50, + -21, 40, -5, -24, -9, -28, 11, -10, + 35, -29, -40, -47, -59, -56, -81, 14, + ], + [ + -138, -65, -22, 9, -12, -19, -28, -8, + 40, 60, -8, -10, 4, 3, -5, 16, + 34, 28, 11, 72, 85, 110, 67, 5, + 11, -3, 75, 37, 91, 36, 68, -30, + -8, 7, 27, 18, 28, -1, 25, -22, + -9, -0, -14, 15, -18, -13, -45, -14, + -61, -69, -17, -13, -12, -41, -18, -18, + 23, -42, -38, -14, -28, -82, -45, -11, + ], + [ + -42, 4, -36, -22, 19, 67, -66, -83, + -36, -19, 55, 76, -5, -69, 12, 50, + -45, 32, 44, 46, -15, 62, 12, 17, + -13, 1, 50, 75, 47, 122, 20, 2, + 7, 51, 39, 11, 57, 30, 27, 5, + -34, -19, -13, -5, -25, -6, -32, 2, + -18, -52, 4, -3, -10, -6, -15, -39, + -48, -39, -58, -30, -37, -46, -33, -28, + ], + [ + -21, -85, -87, 37, -106, 23, -78, -41, + -33, -11, 16, 30, -1, 33, 49, 85, + -107, 8, 29, -4, 36, 52, 64, 110, + 33, -6, 50, 35, 102, 57, 122, 35, + -16, 16, 0, 32, 42, 34, 38, 23, + -19, -12, -20, -11, 9, -8, -7, -27, + -85, -8, -14, -8, -2, -26, 6, -15, + -63, -44, -62, -28, -13, -51, -20, -65, + ], + [ + -95, -129, -58, 23, 41, 54, -52, -50, + -8, -39, 9, 36, 18, 53, -36, 8, + 9, 1, 3, 60, 63, 88, 95, -25, + -26, 12, 18, 40, 32, 148, 34, 76, + -40, -1, 8, -5, 40, 16, 56, -15, + -46, -29, -15, -8, 8, 0, -27, -19, -30, -29, -17, -9, -2, -4, -7, -9, - -22, -35, -39, -23, -24, -29, -29, -18, - ], - [ - -120, -26, -76, -115, 55, 29, 46, -63, - -120, -49, -20, 50, 42, 18, 46, 60, - -12, -4, -7, 54, 123, 168, 63, 19, - -32, 5, 16, 10, 28, 49, 171, 55, - -24, -10, 3, -2, 25, 22, 13, 8, - -50, -31, -14, -12, 7, -6, -5, -13, - -19, -19, -32, -9, 2, -13, 0, -6, - -80, -38, -49, -13, -12, -27, -4, -53, - ], - [ - -27, -28, -70, -7, -15, -43, -20, -31, - -0, 34, 29, 79, 73, -105, -45, -84, - 2, 14, 27, 73, 62, -123, -96, -9, - 40, 49, 97, 229, 20, -85, 14, -30, - 9, 62, 67, 49, 56, -21, -52, 5, - 9, 140, 105, -16, 2, -52, -21, -19, - 22, -35, 19, -7, -74, 2, -62, -95, - 11, 28, 41, -1, -49, -58, -88, -1, - ], - [ - -15, 24, -43, 2, -6, -28, -35, 17, - -34, 0, -23, 4, -20, -8, -53, -62, - 7, -1, -49, -51, -10, -87, -42, -36, - 13, 8, 11, 29, 95, -12, -16, 18, - -67, 2, -29, 38, 5, 8, 34, -21, - -52, 22, 23, 4, 88, -14, -21, 18, - -7, 40, -16, 42, 65, 69, 2, -4, - -10, 44, 70, 13, -8, 66, 5, -7, - ], - [ - -43, -7, 21, -1, -51, -22, -36, -3, - 9, -40, -6, -66, 24, -103, -26, 18, - 3, -13, 24, -22, 10, 5, 6, 15, - 13, -22, -65, 8, 28, -12, -105, -15, - 7, -22, -19, 50, -1, 55, -17, -13, - 10, 38, -21, 103, 37, 80, 29, -7, - -19, -5, 7, -55, 13, 35, -21, 22, - 17, 68, 8, 50, 18, -3, 36, -6, - ], - [ - -61, -63, -33, -23, -19, -18, 8, -9, - -62, -38, -36, -35, -21, 3, -9, -26, - -24, -28, -39, 11, 32, -1, -25, -15, - 29, -11, -16, 109, -2, -49, 8, 56, - -15, -4, 32, 11, 36, 26, -18, 17, - -15, 7, 111, 7, 21, 57, 46, 4, - 25, 1, -22, 8, 12, -13, -30, -6, - -14, -6, 41, 35, 53, 18, -0, -18, - ], - [ - -14, -7, -18, -37, -18, -26, 10, -11, - 1, -15, -24, -39, 6, -73, 3, -8, - -37, 26, -9, 27, -13, -35, -6, -36, - 17, -2, 45, -20, -39, -1, -34, -3, - 29, -107, 36, 51, -5, 22, 35, 67, - -34, 13, 46, 59, -28, 39, 16, 52, - -30, -0, 51, 36, 23, -26, 6, 6, - 2, -48, 25, 25, -10, 57, -44, 24, - ], - [ - -6, -5, -32, -32, -44, -4, -26, 2, - 4, -28, -68, -23, -22, 2, -5, 3, - -35, -56, -41, -27, -63, -39, 42, 22, - 9, -41, 12, -18, 9, 18, -10, -1, - 41, 2, -18, 55, 27, 3, -28, 35, - -21, -3, 67, 22, 77, 77, 40, 31, - -8, -15, 4, -51, -31, 29, 2, -21, - 7, -8, 18, 54, 61, 53, 10, -11, - ], - [ - 31, -33, -1, -33, -23, -12, -16, -19, - -21, 27, -69, 10, 19, 18, -30, -38, - -5, -44, 37, -30, 89, -82, 33, -8, - -56, -19, -25, -7, 72, 33, 14, 11, - -11, -28, -44, -0, 37, -6, -1, 66, - -29, -23, 18, 154, 24, 27, 86, -15, - -25, -31, 19, -103, 12, 9, 29, -11, - -3, -39, 20, 23, -40, 20, 55, -14, - ], - [ - 9, -38, -29, 2, 7, -26, 0, 14, - 9, -3, 0, -21, -34, -24, 4, -35, - -15, -90, 30, -22, 50, 41, -37, -8, - -56, -50, 21, 51, 129, -27, 49, 27, - -4, -17, -22, 24, 55, 52, 8, 29, - -22, -62, 37, 62, 40, 23, 55, 3, - -20, -26, -13, -54, 11, -20, -8, -6, - 3, -56, -34, 48, -13, -38, 35, 1, + -23, -35, -39, -23, -24, -29, -30, -18, + ], + [ + -121, -25, -77, -114, 57, 31, 45, -65, + -119, -51, -21, 50, 41, 19, 46, 57, + -12, -5, -7, 55, 123, 170, 63, 19, + -32, 4, 16, 10, 27, 48, 171, 54, + -25, -10, 2, -2, 25, 22, 12, 9, + -49, -30, -14, -12, 7, -6, -4, -13, + -18, -18, -32, -9, 2, -12, -0, -6, + -80, -39, -48, -13, -13, -28, -5, -53, + ], + [ + -28, -28, -67, -9, -12, -43, -17, -34, + 1, 33, 26, 72, 75, -105, -43, -81, + 3, 14, 21, 70, 59, -117, -99, -13, + 40, 52, 95, 226, 20, -83, 19, -26, + 19, 60, 74, 53, 58, -22, -53, 3, + 9, 135, 109, -18, 4, -53, -19, -19, + 24, -35, 10, -8, -77, -2, -58, -99, + 10, 27, 40, -6, -51, -45, -81, -5, + ], + [ + -17, 23, -43, 5, -6, -28, -34, 17, + -35, 1, -23, 6, -24, -8, -53, -63, + 6, -3, -44, -56, -6, -84, -47, -38, + 14, 14, 16, 29, 100, -18, -19, 18, + -65, 2, -35, 40, -7, 11, 35, -23, + -56, 19, 34, 4, 87, -13, -20, 16, + -5, 40, -12, 40, 64, 65, 1, -5, + -10, 45, 63, 17, -1, 68, 10, -6, + ], + [ + -46, -5, 20, -1, -47, -24, -36, -7, + 11, -38, -5, -66, 25, -100, -27, 19, + 3, -13, 22, -21, 13, 11, 10, 13, + 12, -18, -65, 10, 26, -8, -108, -12, + 5, -26, -19, 52, -5, 60, -21, -12, + 8, 37, -20, 101, 37, 81, 25, -5, + -17, -5, 3, -57, 12, 33, -22, 23, + 18, 76, 3, 51, 17, -5, 33, -5, + ], + [ + -61, -66, -35, -22, -18, -16, 10, -5, + -62, -33, -37, -35, -24, 3, -8, -22, + -22, -23, -40, 8, 34, -1, -26, -17, + 29, -14, -21, 109, -1, -52, 9, 52, + -19, -5, 32, 11, 33, 25, -21, 17, + -15, 7, 108, 9, 22, 59, 44, 4, + 23, -1, -23, 12, 11, -15, -29, -3, + -13, 2, 41, 38, 51, 23, -2, -18, + ], + [ + -13, -8, -17, -42, -21, -24, 8, -10, + 5, -15, -20, -35, 5, -72, 5, -5, + -33, 31, -14, 25, -13, -31, -9, -40, + 15, -4, 45, -22, -40, -3, -39, 0, + 28, -105, 37, 51, -9, 22, 33, 66, + -34, 11, 45, 57, -36, 41, 13, 51, + -31, 4, 50, 37, 26, -26, 7, 5, + 3, -48, 30, 25, -6, 61, -41, 22, + ], + [ + -8, -7, -34, -31, -43, -2, -27, 1, + 4, -28, -68, -21, -23, 4, -3, 2, + -33, -58, -38, -29, -67, -39, 44, 19, + 7, -32, 18, -20, 13, 15, -9, -1, + 43, -1, -12, 49, 25, -1, -34, 34, + -20, -9, 71, 21, 80, 82, 37, 33, + -4, -16, 5, -52, -32, 31, 1, -20, + 7, -8, 17, 54, 61, 49, 16, -11, + ], + [ + 33, -33, -2, -33, -24, -12, -17, -21, + -20, 26, -63, 9, 20, 18, -29, -39, + -5, -44, 34, -29, 92, -81, 33, -7, + -55, -15, -28, -7, 74, 33, 12, 10, + -15, -27, -44, -8, 33, -6, -1, 65, + -28, -26, 22, 160, 26, 25, 89, -13, + -26, -28, 17, -97, 8, 8, 30, -10, + -2, -41, 18, 22, -37, 17, 55, -13, + ], + [ + 10, -39, -30, 2, 7, -27, 2, 13, + 8, -3, 3, -24, -34, -22, 6, -35, + -15, -92, 30, -23, 46, 36, -36, -5, + -54, -47, 26, 52, 129, -27, 40, 28, + -2, -16, -21, 19, 44, 54, 10, 27, + -23, -63, 36, 63, 40, 25, 52, 4, + -19, -24, -11, -48, 10, -18, -9, -8, + 3, -54, -33, 46, -14, -32, 35, 2, ], ]; internal static readonly short[][] EndGameEnemyKnightTable = [ [ - -96, -27, -5, 45, 50, 23, -108, 31, - -8, -53, 13, -15, -31, 7, 20, 66, - 15, 62, -59, 5, 22, 27, -51, -54, - 7, 53, 33, -5, -1, -5, 2, -14, - 21, 16, -1, 9, 27, -10, -56, -24, - 6, -24, -3, -8, 22, -40, 17, -43, - 86, 10, -13, -22, -0, -6, 30, 6, - -40, 3, 4, -8, 7, 44, -4, 43, - ], - [ - -46, -46, 56, 24, 11, -33, -6, -40, - -43, 17, 6, 24, -8, -1, 19, 27, - -42, 23, 29, 15, 20, 21, 6, 13, - 15, 3, 35, 16, 51, -2, -2, 12, - 31, -2, 16, 23, 16, -4, 21, 11, - -7, -8, 9, 12, -20, -11, -8, -10, - -78, -27, -11, -0, 2, -27, -36, 18, - 25, -31, -12, 5, 19, -15, -33, -39, - ], - [ - -218, -39, -74, -30, 28, 24, -26, 96, - -34, 20, 12, -18, -98, 16, 47, -27, - -12, -52, -8, -20, 2, 19, 7, -38, - 7, 13, 7, 28, 33, 32, 27, -4, - 6, 34, 20, 20, 24, 38, 7, 21, - -7, 3, 6, 3, 12, 6, 9, -8, - -49, 18, -13, 10, 7, -12, -21, 32, - 13, 31, 8, 23, 39, -9, 5, 8, - ], - [ - -60, 15, -71, -30, 6, 44, 17, 2, - -5, -53, 30, -70, 7, -18, -5, 25, - 60, -8, -78, 7, -15, 10, -30, 26, - 18, -8, 14, 31, 11, 17, 33, 0, - 30, 46, 30, 6, 16, 16, 12, 18, - -16, 17, 8, -8, 4, 2, 19, -15, - 45, -44, -16, -8, -14, 27, -82, -43, - 14, 66, -24, 42, -16, -5, -17, -33, - ], - [ - 137, 14, 31, -46, -63, -52, 15, -44, - -23, 30, -61, -79, -2, 2, -29, -6, - -58, 4, 32, -59, 22, -56, -22, -8, - 14, 52, 23, 30, 16, 35, 11, 35, - 21, 6, 34, 22, 38, -10, 18, 24, - 11, -2, 3, 2, -3, -4, -3, -26, - 5, -12, -15, 3, -14, -3, -4, 44, - 44, 15, 3, 1, -41, -16, -17, -20, - ], - [ - 12, 36, 39, -5, -11, -55, -12, -4, - 12, 27, 26, 16, -25, -49, 28, -107, - 48, 1, 7, -4, -27, -3, -69, -16, - 25, 8, 40, 14, 19, 17, 14, -9, - 17, 18, 11, 20, 21, 4, 9, -5, - -4, -3, 1, 15, 3, -17, -17, 18, - 1, 9, 4, 4, -6, 0, -39, -34, - -21, 7, -12, 22, -15, -13, 2, 8, - ], - [ - 43, 29, 44, 6, 32, -37, -140, -176, - 20, 15, -1, 16, -87, -1, -14, -38, - -5, 24, 36, 24, 1, 107, 23, -44, - 18, 11, 16, 40, 22, 33, 15, 22, - 9, 5, 14, 23, 26, 14, 8, 4, - -9, -7, 1, 17, 16, -2, -11, -18, - 3, 6, -1, -4, -5, -24, -9, -3, - -17, -16, -9, 12, 4, -11, -16, -54, - ], - [ - 54, -27, 27, 32, 26, -16, -86, -62, - 28, -2, 10, 10, 54, 47, -6, -16, - -23, 1, 19, -1, 1, 2, 40, 62, - -11, -11, -7, -1, 40, 10, 54, 26, - -17, 8, -1, 5, 15, -5, 18, 17, - -34, -7, -22, -1, -21, -15, -9, -10, - -12, 6, -19, -18, 8, -28, -12, -37, - -9, -48, 5, 5, -12, -12, -10, -2, - ], - [ - -141, -30, 17, -21, -17, 41, 6, -44, - -50, -5, 14, -7, 16, 14, 47, 6, - -34, 13, -16, 33, 11, 2, -2, 14, - -10, -13, -21, 3, 4, 26, 13, 18, - 11, -7, 17, -8, 5, -0, 7, -14, - -0, -7, 15, 12, 19, 4, 0, -17, - -5, 28, 8, -5, 1, 8, 32, 16, - 54, -60, 17, 20, -24, -14, 16, -14, - ], - [ - -142, -50, -45, 24, -0, 5, 40, -14, - -56, -29, -13, 26, -2, 2, 38, 6, - -26, -17, -20, -2, 14, -16, 4, 33, - -8, -24, 9, 0, 6, 9, -13, 24, - 7, 15, -0, -3, 5, 13, -10, 9, - 30, -1, 13, 5, 17, 9, -4, 1, - 18, 3, 9, 19, 4, 3, -13, -9, - -13, -11, 10, 16, 32, 10, 44, 9, - ], - [ - -45, -47, -35, -33, -4, -5, 36, -15, - -35, -24, -14, -27, 5, 2, 0, 8, - -8, -13, 7, -9, -18, -36, 2, -4, - 10, -5, 3, -0, -6, 3, -14, 13, - 20, 4, 3, 8, 6, 6, 6, 4, - -0, 5, 10, 16, 9, 9, 15, 0, - 42, 34, 11, 13, 16, 7, 13, 18, - -14, 21, 21, -4, 17, 12, 18, -38, - ], - [ - -10, -27, -7, 11, -28, -26, -4, -55, - 17, 14, -31, -30, 4, -17, -25, -19, - 21, -10, -13, -8, 11, -7, -22, -2, - 25, 15, 1, -2, -5, -16, -19, 5, - 13, 4, -5, 12, 4, -3, -7, -3, - 16, 15, 10, 12, 11, -3, 5, 3, - 1, 27, -2, 10, 8, 16, 24, 30, - 2, 28, 18, 0, 12, 3, 14, -13, - ], - [ - -21, 44, 48, -20, 51, -18, -29, -96, - 15, 15, 1, -9, -12, -18, -42, -23, - 43, 3, 12, 3, 3, -28, -3, -42, - 1, 13, 1, -8, -10, -14, -24, -25, - 11, -4, 13, 5, 8, -2, 1, -4, - -5, 2, 8, 20, 7, 2, -11, 5, - 26, 17, 5, 8, 13, 9, 11, -8, - -11, 26, 11, 5, 4, 12, -5, 10, - ], - [ - 49, 20, 14, 5, 8, -30, 31, -147, - 3, 12, 9, 3, -3, 11, -17, -44, - 4, 1, 14, 8, -5, -8, -26, -14, - 6, -6, 6, 4, 2, -6, 6, -27, - 19, -2, 6, 15, 6, 10, -15, 22, - -2, 2, 4, 11, 8, 2, 6, 18, - -10, 18, 2, 2, 12, -3, 5, 28, - -59, -4, -4, 7, 20, 13, -14, -7, - ], - [ - -36, 23, 27, 35, 25, -29, 92, -90, - 33, 6, -8, 15, 6, -2, -42, -53, - -17, 1, 5, -1, 2, -21, 18, 7, + -95, -24, -5, 46, 49, 21, -107, 35, + -11, -54, 15, -15, -30, 7, 21, 66, + 17, 59, -61, 5, 20, 26, -51, -54, + 9, 52, 33, -6, -0, -5, 1, -14, + 22, 18, -0, 9, 27, -10, -59, -24, + 8, -24, -3, -9, 22, -40, 17, -46, + 85, 8, -12, -22, -1, -6, 32, 2, + -38, 4, 5, -8, 7, 45, -3, 43, + ], + [ + -47, -46, 55, 24, 10, -35, -5, -41, + -42, 19, 7, 27, -10, -2, 19, 26, + -42, 24, 27, 14, 19, 20, 4, 13, + 15, 4, 35, 15, 52, -1, -2, 11, + 31, -2, 16, 23, 16, -4, 22, 11, + -6, -8, 9, 11, -20, -11, -8, -10, + -78, -26, -11, -0, 3, -27, -37, 19, + 24, -31, -12, 5, 18, -14, -33, -36, + ], + [ + -219, -42, -74, -28, 28, 26, -26, 95, + -36, 20, 14, -17, -101, 15, 44, -28, + -11, -51, -9, -20, 1, 19, 6, -37, + 7, 14, 7, 28, 33, 31, 27, -3, + 7, 34, 20, 20, 23, 39, 6, 22, + -7, 2, 6, 2, 12, 6, 10, -8, + -49, 18, -13, 9, 7, -12, -22, 32, + 15, 31, 8, 23, 39, -8, 6, 9, + ], + [ + -59, 16, -69, -29, 7, 44, 19, -0, + -5, -50, 30, -72, 3, -19, -7, 22, + 59, -7, -75, 5, -17, 10, -30, 27, + 17, -8, 14, 30, 11, 16, 32, -0, + 30, 49, 29, 7, 16, 16, 11, 16, + -17, 17, 8, -7, 4, 3, 19, -13, + 45, -46, -18, -8, -14, 25, -81, -42, + 18, 66, -23, 39, -15, -3, -17, -31, + ], + [ + 137, 14, 29, -47, -61, -52, 17, -47, + -22, 28, -57, -79, -4, 1, -27, -9, + -55, 3, 32, -61, 21, -54, -23, -8, + 16, 53, 24, 31, 15, 34, 11, 36, + 22, 7, 34, 21, 38, -10, 17, 23, + 11, -3, 3, 2, -4, -4, -3, -25, + 3, -11, -16, 3, -14, -2, -5, 42, + 47, 15, 3, 1, -40, -15, -18, -21, + ], + [ + 12, 37, 37, -5, -12, -53, -11, -4, + 13, 26, 25, 15, -27, -50, 26, -103, + 51, 2, 6, -4, -24, -4, -68, -17, + 26, 8, 39, 14, 19, 16, 14, -9, + 18, 18, 10, 20, 19, 3, 8, -6, + -4, -4, 1, 15, 3, -17, -18, 18, + 1, 8, 4, 4, -6, 0, -38, -35, + -20, 7, -12, 22, -16, -12, 3, 9, + ], + [ + 42, 29, 43, 5, 31, -38, -139, -178, + 21, 14, -1, 15, -86, -2, -13, -37, + -5, 25, 35, 24, 1, 109, 22, -43, + 19, 12, 16, 40, 22, 33, 15, 23, + 10, 6, 14, 23, 26, 14, 8, 4, + -9, -7, 1, 16, 16, -2, -11, -18, + 2, 6, -1, -4, -5, -24, -9, -3, + -16, -17, -9, 13, 4, -11, -16, -54, + ], + [ + 53, -26, 27, 31, 27, -14, -88, -61, + 30, -2, 9, 9, 53, 46, -8, -16, + -23, 2, 18, -2, 0, 3, 40, 60, + -8, -11, -7, -2, 40, 9, 54, 25, + -15, 9, -0, 6, 15, -5, 19, 16, + -34, -8, -22, -1, -20, -15, -9, -9, + -13, 6, -20, -17, 8, -28, -13, -37, + -8, -47, 5, 5, -12, -12, -11, -3, + ], + [ + -144, -32, 18, -20, -17, 40, 5, -42, + -51, -5, 16, -8, 15, 13, 47, 5, + -34, 12, -15, 31, 11, 2, -2, 12, + -11, -12, -21, 3, 4, 26, 14, 18, + 11, -8, 17, -7, 5, 0, 6, -14, + 0, -7, 16, 12, 20, 5, 1, -15, + -5, 28, 8, -4, 1, 9, 33, 16, + 52, -61, 17, 21, -23, -13, 16, -17, + ], + [ + -140, -51, -45, 22, -1, 5, 39, -15, + -57, -30, -13, 28, -3, 1, 36, 4, + -25, -18, -20, -2, 13, -17, 4, 32, + -8, -24, 9, 0, 6, 9, -13, 23, + 8, 15, 0, -2, 5, 14, -10, 9, + 32, -1, 13, 5, 17, 10, -4, 1, + 17, 4, 9, 20, 4, 3, -13, -9, + -10, -11, 10, 16, 32, 10, 44, 10, + ], + [ + -45, -46, -35, -34, -6, -6, 36, -16, + -35, -24, -14, -28, 5, 1, 0, 7, + -7, -12, 7, -9, -17, -35, 2, -5, + 9, -5, 4, -0, -5, 3, -14, 13, + 21, 4, 4, 8, 6, 6, 5, 4, + 1, 5, 10, 16, 9, 9, 16, 0, + 42, 34, 11, 13, 16, 8, 12, 18, + -12, 21, 21, -4, 17, 12, 17, -37, + ], + [ + -9, -26, -8, 11, -28, -26, -4, -55, + 17, 12, -32, -32, 4, -18, -26, -19, + 21, -10, -14, -9, 11, -7, -22, -3, + 25, 15, 1, -2, -4, -16, -19, 5, + 13, 4, -4, 12, 4, -3, -7, -2, + 16, 15, 10, 13, 11, -3, 6, 3, + 2, 27, -2, 10, 8, 16, 24, 29, + 2, 28, 19, 1, 12, 3, 14, -14, + ], + [ + -22, 46, 47, -20, 53, -19, -29, -94, + 15, 15, 1, -9, -13, -18, -42, -23, + 43, 2, 12, 3, 3, -28, -3, -42, + 0, 13, 1, -8, -10, -14, -24, -25, + 11, -5, 13, 5, 9, -2, 1, -4, + -4, 1, 8, 20, 7, 2, -11, 5, + 26, 17, 5, 8, 13, 10, 10, -8, + -10, 26, 11, 6, 4, 12, -5, 11, + ], + [ + 47, 19, 13, 6, 7, -31, 31, -145, + 3, 12, 8, 3, -3, 11, -17, -44, + 4, 2, 14, 8, -6, -8, -27, -14, + 6, -6, 6, 4, 2, -6, 7, -27, + 19, -3, 7, 15, 6, 10, -15, 22, + -2, 2, 4, 12, 8, 2, 6, 18, + -11, 19, 2, 2, 12, -3, 4, 28, + -56, -3, -4, 7, 21, 13, -14, -6, + ], + [ + -37, 22, 28, 34, 25, -29, 93, -91, + 34, 7, -8, 14, 7, -3, -42, -53, + -17, 1, 4, -1, 2, -22, 18, 7, -3, -22, -7, 12, 10, -1, -6, 2, - -4, -9, 4, 7, 20, 14, 48, 17, - 2, -14, -3, 0, 17, -0, -3, 1, - -21, -18, 10, 10, -1, 5, -9, 9, - -2, -23, -8, 5, 20, -13, -23, -20, - ], - [ - -26, 16, -22, 57, -54, -54, -4, -31, - -21, 17, 11, -1, 4, -0, 8, -26, - 17, -11, 7, 11, 20, 17, 1, -26, - 16, 61, -7, -23, 5, 26, -14, -2, - 11, -7, -3, -1, -5, 28, 13, -45, - -12, -37, -26, 32, 12, 22, -26, -24, - -47, 35, 29, 10, 6, 18, -11, 48, - -7, -9, 7, -15, 5, -20, 1, 45, - ], - [ - -41, 28, -16, 48, 55, -2, -86, 22, - 56, 16, -27, 21, -2, -8, 25, -34, - 51, 4, -36, -18, 22, -19, 23, 20, - 7, -0, -9, 11, -3, -12, -22, -30, - -4, -39, 33, 18, 5, 3, -31, -3, - 18, -44, 3, -3, 16, 17, -17, 25, - -7, 7, 6, 26, 41, 17, 6, 12, - -38, -7, -12, -6, -30, -12, -56, 11, - ], - [ - 28, 40, -3, -44, -49, 31, 10, 24, - 69, 8, 5, 7, -0, 18, -34, 24, - 11, 27, -22, -20, -4, -8, -48, 19, - 1, 3, -23, -1, -6, -1, -8, -10, - 7, 32, 44, 7, 3, -1, -19, -25, - 21, 4, -1, -4, 2, 19, -9, 24, - -3, -43, -13, 12, 2, 1, -16, 12, - -44, -30, 3, -2, -11, 27, -4, -39, - ], - [ - -90, -69, -36, 23, -15, -33, 37, -35, - 55, -9, -3, 7, -12, 2, 4, 21, - 12, -25, -2, 3, -8, 4, 26, 34, - 13, -11, 20, -11, -15, 6, -20, -2, - -1, -10, 3, 5, 0, 3, 19, -14, - 34, -5, -4, 10, 17, 26, -5, 27, - 47, -36, 15, 3, 28, 22, 18, 1, - -51, -21, 22, -8, 32, -42, 47, -55, - ], - [ - -42, 23, 53, -20, 12, -12, 12, -15, - 43, 36, 8, 8, -28, 2, 9, 6, - -25, -21, 9, 3, -16, -19, -5, 9, - 6, 4, -27, 3, -2, -15, -9, 14, - 18, 25, 15, -18, -38, 2, 22, 22, - 34, -5, -23, 14, -13, -8, 16, 8, - -36, 11, 23, 10, -30, -15, 30, 9, - 2, 11, -39, -10, -1, -16, 8, -30, - ], - [ - 60, -11, 20, -59, -9, 87, -55, -15, - -31, -37, 2, -20, 34, -22, 33, 41, - 19, -6, -6, 21, -9, -3, 28, 51, - -41, -3, -8, 9, -26, -18, -10, 48, - -23, 24, -5, -14, -5, 13, 2, 14, - -80, 6, -32, 1, 9, 4, 24, 22, - -31, 42, 2, 7, -37, -19, 2, -42, - -1, -7, -10, -12, 24, 11, 40, 6, - ], - [ - 121, 66, 41, -40, -5, -22, 14, 47, - -43, -27, -1, -11, 10, -12, -25, 36, - -42, -24, -33, 6, -41, 20, -9, -33, - 8, 4, -1, 12, 4, 17, -8, 8, - -39, -5, 5, 10, 8, 29, 2, -13, - -40, -21, 23, -4, 21, 1, -1, 29, - -42, -39, -23, 39, 5, -28, 8, -23, - -2, -37, -6, 26, 29, 21, -7, 36, - ], - [ - -102, -56, -31, 79, 29, 30, -25, 73, - -82, -0, 36, -22, -6, 3, 43, -19, - 11, 35, 2, 18, 31, -4, -20, -6, - -76, -32, -37, 2, -7, 2, -4, 23, - -11, -68, 1, 5, 36, 9, 13, 6, - -92, 33, 14, -17, 20, 12, 9, 68, - 4, 5, -51, 14, 22, 20, 31, 15, - 47, -5, -32, -7, -53, 23, -21, 62, + -3, -9, 4, 8, 20, 13, 47, 17, + 2, -14, -3, 1, 17, 0, -3, 1, + -22, -17, 10, 10, -1, 6, -8, 9, + -1, -23, -8, 5, 20, -13, -23, -22, + ], + [ + -28, 17, -21, 57, -52, -53, -5, -30, + -21, 14, 12, 0, 2, -2, 7, -26, + 15, -12, 8, 11, 21, 15, 3, -25, + 17, 62, -7, -23, 5, 24, -13, -3, + 10, -9, -4, -1, -4, 29, 14, -45, + -11, -35, -26, 33, 11, 23, -27, -30, + -44, 38, 32, 10, 7, 19, -11, 50, + -8, -9, 7, -12, 5, -23, -3, 47, + ], + [ + -46, 25, -20, 47, 52, -2, -83, 20, + 58, 14, -30, 19, 1, -6, 27, -37, + 49, 2, -37, -17, 21, -19, 23, 21, + 2, -2, -11, 10, -5, -10, -19, -30, + -5, -35, 35, 16, 7, 4, -32, -2, + 15, -41, 3, 0, 17, 14, -17, 28, + -4, 6, 13, 25, 41, 15, 3, 12, + -40, -7, -12, -4, -32, -8, -51, 18, + ], + [ + 24, 35, -5, -43, -49, 32, 4, 22, + 68, 8, 5, 5, -1, 19, -31, 28, + 11, 29, -20, -20, -3, -11, -48, 21, + 1, 5, -24, 0, -6, -1, -8, -9, + 8, 32, 45, 7, 3, -2, -18, -24, + 27, 2, 1, -4, 4, 19, -8, 23, + -6, -48, -12, 13, 1, 0, -14, 9, + -46, -31, 2, 0, -12, 28, -3, -36, + ], + [ + -87, -68, -37, 22, -9, -32, 35, -34, + 55, -11, -1, 7, -10, 4, 4, 23, + 9, -26, -2, 5, -8, 4, 26, 32, + 10, -12, 21, -10, -13, 9, -22, -3, + -0, -12, 2, 9, 1, 3, 22, -15, + 35, -5, -6, 8, 16, 27, -4, 29, + 48, -36, 13, 4, 30, 21, 18, 3, + -54, -25, 21, -10, 30, -42, 45, -57, + ], + [ + -41, 20, 58, -22, 12, -12, 6, -10, + 44, 38, 9, 8, -26, 4, 11, 5, + -27, -22, 10, 5, -14, -17, -4, 9, + 4, 5, -29, 3, -0, -13, -11, 13, + 18, 23, 16, -19, -35, 0, 17, 22, + 31, -6, -25, 15, -14, -8, 15, 6, + -33, 10, 24, 10, -30, -15, 32, 7, + 0, 13, -38, -12, -0, -14, 8, -35, + ], + [ + 59, -11, 19, -59, -11, 91, -57, -17, + -33, -38, 2, -19, 36, -22, 34, 43, + 16, -6, -7, 21, -11, -3, 28, 50, + -44, -4, -8, 9, -25, -19, -11, 46, + -24, 22, -7, -13, -2, 14, 4, 15, + -79, 6, -32, 1, 9, 3, 27, 27, + -32, 45, 3, 8, -35, -18, -0, -43, + 0, -8, -8, -14, 25, 13, 44, -1, + ], + [ + 120, 70, 44, -41, -3, -21, 10, 40, + -42, -27, -0, -11, 11, -12, -26, 38, + -40, -26, -34, 6, -42, 22, -9, -35, + 4, 3, 2, 11, 6, 18, -7, 5, + -42, -8, 5, 11, 10, 30, 5, -12, + -39, -20, 22, -4, 23, 1, -0, 26, + -44, -37, -22, 38, 5, -25, 10, -23, + -4, -36, -8, 25, 30, 21, -8, 37, + ], + [ + -95, -61, -32, 81, 29, 29, -21, 71, + -84, 0, 34, -23, -7, 3, 47, -20, + 12, 32, 1, 19, 33, -4, -23, -5, + -79, -33, -39, 0, -6, 1, 0, 25, + -14, -68, -1, 5, 39, 10, 13, 4, + -92, 33, 14, -17, 22, 11, 7, 69, + 0, 0, -54, 13, 22, 17, 36, 19, + 47, -3, -28, -5, -52, 21, -24, 71, ], ]; internal static readonly short[][] MiddleGameEnemyBishopTable = [ [ - -29, -21, -3, 55, -12, -63, -71, -14, - 18, 153, 68, 104, 73, -69, -78, -91, - 32, 60, 54, 55, -37, -35, -48, -39, - 11, 52, 62, 52, 11, 4, 10, -9, - -28, 14, 10, 10, 41, 18, 1, -19, - -26, 4, -15, 6, 11, 40, 12, -20, - -17, -47, -22, -10, -17, -10, 5, 4, - -94, -37, -22, -15, -32, -43, 11, 30, - ], - [ - -7, -36, -85, -54, -153, -84, -148, -29, - 9, 136, 5, -46, -30, -13, -10, -39, - 24, 35, 74, 55, -12, 49, -40, -30, - -1, 18, 39, 44, 51, 5, 23, 2, - -15, -13, 6, 27, 28, 32, 8, -9, - -28, 3, 2, 6, 23, 24, 22, 6, - 9, -20, -16, 7, 11, 22, 25, 47, - 11, 2, -2, -10, 10, -5, 24, 14, - ], - [ - -24, -48, -32, -193, -60, -80, 14, -5, - -3, 3, 85, -3, -49, 10, -12, -29, - 53, 59, 5, 72, 69, 23, 3, -40, - -6, 8, 19, 17, 45, 41, 15, -1, - -2, -24, -4, 9, 33, 25, 18, -19, - -35, -15, -10, 1, 5, 27, 17, 15, - 14, -19, -7, -3, 11, -3, 30, 10, - -7, -9, -20, 4, -2, -21, 15, 9, - ], - [ - 39, 5, -108, -1, 1, -34, -85, 22, - 19, -11, 27, 49, 22, 37, 22, -45, - -23, -5, 83, 104, 39, 128, -12, -35, - -17, 23, 29, 13, 38, -8, 24, 2, - -31, -16, -13, -0, -15, 2, 32, -28, - -17, 2, -29, 1, -17, -7, 9, 17, - -22, -34, -29, 6, -6, -3, -13, -2, - -1, -35, -26, 6, -10, -50, 19, -35, - ], - [ - -17, -98, -104, -108, -32, -49, 16, -61, - -1, 9, -12, -51, 43, -56, 15, -15, - -25, 32, 54, 78, 58, 32, 44, 18, - -5, 1, 50, 15, 26, 26, 7, -3, - 2, 34, 2, 20, 5, -2, -1, -9, - 17, 16, 1, 4, 3, -5, -1, -0, - 26, 13, 12, 8, 0, -3, 1, 13, - -4, -7, 3, 3, -5, -20, 5, -19, - ], - [ - -34, 10, -40, -11, -80, -25, -65, -19, - 8, -59, 38, 1, -24, 24, 1, -27, - -41, 21, -25, 111, 62, 72, 10, 55, - -26, -12, 79, 45, 27, -22, 18, -12, - -9, -20, 11, 58, -19, 9, 6, -0, - 17, 5, 43, -4, 16, -0, -14, -26, - 24, 4, -17, 7, -19, -3, -16, 3, - 2, -24, -5, -28, 11, -57, -10, -10, - ], - [ - -45, -67, -92, -59, -80, -81, -45, 48, - -20, 3, -6, -31, 11, -1, 63, -60, - -18, 0, 19, 22, 45, 51, 31, 19, - -9, 10, 15, 25, 16, 12, -1, -10, - 3, 4, 10, 31, 23, -2, 7, -1, - -4, 20, 13, 16, 6, 9, -12, -1, - 26, 8, 20, 6, 11, 1, 3, 0, - 23, 21, 1, 5, 3, -23, 0, 5, - ], - [ - -97, -78, -44, -43, -65, -5, -30, -35, - 9, -23, -32, -34, 48, 24, -115, 11, - -19, -4, -15, 32, 11, 53, 50, 22, - -32, 16, 24, 14, 54, 47, 11, 11, - -21, 16, 8, 42, 41, 21, 5, -12, - -4, 15, 28, 21, 19, 15, 3, -14, - 9, 17, 12, 13, 9, -1, -2, 8, - 17, 32, 1, -3, -4, -25, -10, -20, - ], - [ - -89, 18, -32, -62, -78, 77, -47, -162, - -138, -79, -81, 11, 27, 7, 24, -33, - 30, 41, 17, 61, 23, 62, -6, 8, - 19, 30, 48, 73, 68, 37, -8, 0, - 11, -4, 12, 17, 22, 30, 26, -7, - -37, 5, 9, 16, 20, 23, 26, -11, - -49, -30, 6, 11, 33, 10, 19, 44, - -37, -43, -23, -36, -0, 21, 46, 7, - ], - [ - -99, -29, 61, -17, -7, 80, -56, -39, - -17, -37, -71, -85, -64, 27, 67, -2, - 20, -22, 120, 1, 41, -12, 1, -11, - 11, 3, 45, 76, 68, 38, 12, -5, - -15, 2, 1, 23, -10, 77, -3, 33, - -12, -17, -5, -8, 2, 5, 27, 19, - -22, -17, -24, 7, -6, -15, 0, -42, - -21, -13, -6, -36, 18, -39, 6, -12, - ], - [ - -45, 11, -78, -123, -22, -90, -32, -35, - -40, -26, 25, -92, -26, -14, 0, -26, - 40, 42, 16, 51, 100, 14, -46, 3, - 1, 63, 45, 3, 54, 90, 38, -31, - 26, 46, -2, 30, 32, 28, 62, -7, - -2, -14, -26, 18, -7, 15, 14, 18, - -30, -14, -34, -1, 7, 32, 8, 29, - -27, 18, -13, -16, 8, -10, -29, -29, - ], - [ - -76, -7, 138, 6, -97, -33, 76, -16, - 36, 3, -43, -1, 18, -46, 3, -38, - -29, 0, 5, 48, 57, 31, 9, 21, - -13, -2, 87, 48, 20, 51, 33, 28, - -34, 35, -14, 46, 4, 8, -8, 20, - 19, -13, 1, -21, 21, -19, 4, -30, - -28, -17, -7, 6, -25, -2, -12, -38, - -22, -54, -13, -41, -12, -57, 38, -53, - ], - [ - -47, -56, 34, -60, -24, -3, 84, -37, - -99, -30, -30, -3, -62, -15, -42, 48, - -9, 17, -15, 23, 23, 29, -8, 7, - -18, -5, 22, 90, 52, 41, 18, 49, - -32, 47, 33, 32, 35, -3, -14, -39, - -9, 28, -2, 17, -9, 5, -27, -16, - 16, -0, 30, -3, 1, -14, 6, -19, - -11, 31, -24, 19, -5, -22, -33, 9, - ], - [ - -34, 53, -34, 66, -22, -5, -31, -54, - -13, -39, 15, -12, 17, -58, 13, -19, - -54, 18, -38, 30, 19, 99, 5, 9, - 8, -25, 37, 17, 128, 57, 47, 4, - -34, 9, -6, 52, 8, 28, -18, -11, - -17, -10, 36, -7, 37, -20, -5, -58, - -23, 22, -16, 18, -21, -3, -32, -17, - 1, 1, 7, -17, -8, -57, -15, -28, - ], - [ - 21, -40, -69, -90, 28, -61, 95, -90, - -46, -8, -26, -24, -5, 14, 9, 57, - -33, 13, 18, 13, 6, 65, 119, 42, - -41, 18, 0, 6, 21, 73, 27, 6, - -42, 0, 10, 28, 39, -3, 2, -19, - -12, 4, 10, 14, 9, 11, -33, 12, - -4, -9, 18, -0, 12, 0, -8, -37, - -9, 1, -10, -1, -23, -29, -28, -24, - ], - [ - 40, 11, 9, -46, 3, 22, 19, -7, - 36, 56, 125, 96, -61, 23, -19, -39, - -8, 27, 138, -35, 10, -76, -44, -40, - 8, 24, -18, 124, -50, -27, 41, 18, - 12, -71, 124, 43, 69, -94, -56, 68, - 25, -4, -1, 19, -27, 7, -20, -11, - -78, -85, 9, -18, -63, 2, 141, -35, - -62, 34, 2, -51, -60, -46, -79, -54, - ], - [ - 3, -3, 25, 27, -36, -35, 61, 17, - -9, 15, 58, -15, 27, -38, 36, 9, - -15, -12, -39, 6, 28, 54, -10, -20, - 26, 20, -66, -22, -40, -23, -91, -1, - -8, 10, 38, -68, 62, 53, -1, 32, - 32, 15, -19, -1, 28, 52, -12, 10, - -14, 40, 4, -28, -29, -24, -41, 3, - -16, -47, -75, -69, 35, 72, 27, 3, - ], - [ - 41, 5, 18, 57, -13, -52, -20, 49, - 13, -50, 3, -3, 43, 60, -31, -2, - 38, -35, -77, -103, 32, -55, -91, 36, - -35, -1, -58, -5, -46, -9, -29, -51, - 10, -45, 50, -36, 39, 46, -19, 44, - 22, 8, 7, 56, 5, -80, 49, 91, - 13, -7, -34, -124, 42, 81, 30, 15, - 1, 24, -74, 31, 15, 53, 20, 36, - ], - [ - 8, -4, 55, 40, 45, 35, 10, 50, - -1, 5, 38, -13, 54, 3, 41, 25, - -46, -39, -33, -78, -69, -24, 31, 53, - 27, -84, 16, -85, -29, 0, 29, -9, - 4, -34, -88, -82, -48, -18, -50, 56, - 66, -9, 16, 26, -16, 17, -16, 12, - -27, 35, -15, -3, -59, -22, 36, 41, - 31, 26, 0, 3, 5, -11, 3, 69, - ], - [ - 40, -10, -23, 0, 64, -5, 9, 9, - 13, 16, -83, -1, 33, 55, -47, 58, - -6, 74, -29, -44, -28, -94, 38, 6, - 35, -66, -55, -109, -51, 1, -62, 33, - 11, -16, -5, -53, -16, -48, 13, 15, - 31, -29, 36, 15, -76, 1, -58, 94, - 56, -7, 53, -46, 61, -4, 79, 19, - 16, 72, -67, 13, -22, 43, -2, 48, - ], - [ - 39, 59, -14, -12, 34, 17, 38, 23, - 71, -4, -69, -8, 11, 22, -0, -2, - -12, 4, -59, -19, -65, -34, -36, 17, - 4, -52, 27, -67, -54, -51, -24, 17, - 16, 19, -20, 0, -22, -49, -60, 17, - 49, 65, -22, -9, -29, -4, 8, -29, - 52, 1, -2, 55, -5, 54, -14, 46, - 35, -29, 11, 59, -48, 83, -31, 4, - ], - [ - 24, 67, 40, 1, 16, -43, -16, -2, - -75, -16, -26, 24, -36, 52, -51, -5, - -12, -48, -22, -56, -20, -84, 34, -44, - 28, -9, -38, 0, -23, -18, -25, 28, - 70, -23, 20, 18, 5, -33, 15, -14, - 2, 81, -51, -26, 24, 7, 22, 21, - -13, -45, 138, -44, 35, -75, 31, -8, - 44, 14, 7, 13, 57, 103, -40, 1, - ], - [ - 10, 14, 13, -8, -21, 36, -7, -8, - -15, -58, 50, -14, 27, 43, -10, 34, - 13, 34, 2, -55, -69, -40, 38, -4, - 45, 25, -5, 52, 123, -50, 27, -20, - -8, -66, -15, -36, -51, 74, 10, 9, - -16, -63, -7, -38, -1, -7, 15, -16, - -24, 25, -7, 59, 60, -30, 49, -38, - -46, 19, -14, -13, -30, -9, 20, -5, + -29, -20, -5, 53, -15, -61, -74, -16, + 18, 162, 68, 105, 71, -72, -80, -91, + 32, 59, 54, 56, -39, -34, -48, -40, + 11, 52, 61, 51, 10, 4, 11, -9, + -28, 16, 10, 10, 43, 19, 2, -17, + -27, 5, -14, 5, 12, 40, 12, -21, + -17, -47, -22, -9, -16, -10, 6, 1, + -93, -37, -22, -16, -33, -44, 10, 30, + ], + [ + -9, -36, -86, -53, -152, -85, -149, -28, + 7, 132, 4, -45, -30, -13, -11, -38, + 25, 34, 75, 55, -13, 50, -39, -30, + -1, 19, 39, 43, 50, 5, 22, 2, + -16, -13, 7, 27, 28, 32, 8, -9, + -29, 4, 3, 6, 24, 25, 22, 5, + 9, -20, -15, 8, 12, 23, 26, 46, + 11, 3, -3, -10, 10, -4, 24, 14, + ], + [ + -25, -49, -33, -192, -56, -80, 15, -6, + -2, 0, 86, -4, -49, 11, -12, -29, + 53, 58, 5, 72, 67, 22, 3, -40, + -6, 9, 19, 17, 44, 40, 15, -2, + -2, -23, -4, 9, 33, 25, 19, -18, + -36, -14, -9, 1, 6, 27, 17, 14, + 13, -19, -6, -3, 11, -3, 31, 9, + -7, -8, -21, 4, -3, -21, 15, 8, + ], + [ + 39, -3, -108, -2, 0, -35, -86, 20, + 21, -11, 26, 48, 22, 38, 25, -42, + -24, -6, 82, 104, 38, 129, -11, -34, + -15, 24, 29, 12, 37, -8, 23, 2, + -31, -15, -13, -0, -14, 2, 34, -28, + -18, 3, -28, 2, -17, -6, 9, 16, + -23, -34, -27, 7, -5, -3, -11, -4, + -1, -34, -27, 9, -10, -50, 19, -35, + ], + [ + -17, -99, -105, -109, -33, -49, 17, -60, + -3, 8, -12, -52, 44, -53, 16, -16, + -26, 30, 54, 77, 56, 32, 43, 17, + -5, 2, 50, 15, 25, 26, 7, -3, + 2, 34, 2, 20, 6, -2, -0, -9, + 17, 16, 2, 5, 3, -5, -1, -1, + 25, 13, 13, 9, 1, -2, 2, 12, + -4, -5, 2, 3, -5, -20, 5, -19, + ], + [ + -34, 12, -33, -15, -81, -26, -65, -17, + 8, -60, 42, 2, -25, 23, 0, -26, + -41, 20, -26, 110, 61, 73, 10, 55, + -27, -12, 80, 45, 26, -22, 18, -12, + -9, -21, 11, 58, -18, 10, 7, 1, + 15, 5, 44, -3, 16, 0, -14, -27, + 23, 4, -17, 8, -18, -3, -15, 2, + 1, -24, -6, -28, 10, -57, -11, -11, + ], + [ + -45, -68, -92, -58, -80, -81, -45, 47, + -19, 2, -6, -30, 12, -2, 63, -62, + -17, -0, 18, 21, 44, 52, 31, 19, + -9, 10, 15, 25, 15, 12, -1, -10, + 3, 3, 10, 31, 23, -2, 8, -1, + -5, 20, 14, 17, 7, 10, -12, -2, + 26, 8, 21, 7, 12, 2, 4, -0, + 23, 22, 0, 6, 3, -22, 0, 5, + ], + [ + -97, -80, -46, -42, -65, -5, -31, -36, + 8, -23, -31, -33, 50, 24, -116, 10, + -18, -5, -14, 32, 10, 54, 49, 22, + -33, 16, 24, 14, 54, 46, 11, 11, + -21, 16, 9, 42, 41, 21, 5, -11, + -4, 15, 28, 22, 19, 15, 3, -15, + 9, 18, 13, 14, 10, -1, -1, 7, + 17, 32, 0, -3, -4, -25, -11, -20, + ], + [ + -88, 16, -30, -59, -80, 77, -48, -164, + -137, -79, -82, 12, 26, 6, 24, -34, + 30, 41, 18, 61, 23, 62, -7, 9, + 19, 31, 47, 72, 67, 37, -8, 0, + 10, -4, 12, 17, 22, 31, 26, -6, + -38, 5, 10, 16, 21, 24, 26, -12, + -49, -30, 7, 12, 34, 10, 20, 42, + -37, -43, -24, -37, -0, 21, 46, 5, + ], + [ + -102, -30, 60, -19, -7, 80, -55, -39, + -16, -40, -74, -87, -61, 27, 68, -2, + 19, -23, 123, 4, 42, -11, 2, -10, + 13, 4, 45, 75, 65, 39, 11, -5, + -16, 3, 1, 23, -10, 78, -3, 33, + -12, -17, -4, -8, 2, 6, 27, 17, + -22, -17, -23, 7, -5, -14, 1, -43, + -21, -12, -7, -35, 18, -40, 6, -13, + ], + [ + -43, 10, -81, -126, -23, -90, -33, -35, + -39, -25, 26, -95, -27, -11, 2, -26, + 40, 43, 17, 48, 94, 15, -46, 2, + 3, 64, 45, 4, 54, 90, 38, -31, + 25, 46, -2, 30, 34, 28, 63, -6, + -4, -14, -25, 18, -7, 15, 15, 19, + -31, -15, -33, 0, 8, 34, 10, 26, + -29, 19, -13, -16, 8, -10, -29, -29, + ], + [ + -78, -5, 137, 6, -96, -32, 76, -14, + 37, 2, -44, -0, 16, -46, 4, -38, + -29, 0, 4, 45, 54, 30, 8, 19, + -13, -2, 86, 47, 20, 50, 32, 28, + -33, 35, -13, 47, 5, 9, -7, 20, + 17, -12, 2, -21, 22, -19, 4, -30, + -28, -17, -6, 7, -24, -2, -11, -38, + -22, -52, -14, -41, -10, -56, 37, -53, + ], + [ + -46, -55, 35, -58, -25, -4, 84, -38, + -97, -28, -29, -2, -64, -16, -43, 49, + -10, 17, -16, 22, 21, 28, -11, 7, + -17, -5, 23, 90, 52, 41, 18, 48, + -33, 47, 33, 33, 36, -3, -12, -39, + -11, 28, -1, 16, -9, 6, -27, -17, + 16, -1, 31, -3, 1, -13, 6, -19, + -12, 32, -25, 19, -4, -22, -34, 8, + ], + [ + -33, 53, -35, 68, -22, -3, -30, -53, + -13, -39, 14, -11, 18, -58, 12, -22, + -54, 18, -39, 29, 18, 97, 1, 9, + 7, -25, 37, 17, 128, 57, 47, 4, + -34, 9, -6, 52, 9, 29, -18, -11, + -18, -10, 37, -7, 38, -19, -5, -58, + -24, 22, -15, 19, -20, -3, -31, -18, + 1, 2, 7, -16, -8, -57, -15, -29, + ], + [ + 19, -41, -71, -90, 27, -60, 94, -89, + -46, -9, -26, -23, -4, 14, 8, 56, + -32, 12, 18, 12, 5, 66, 119, 42, + -42, 18, -0, 6, 20, 73, 27, 6, + -43, -0, 11, 28, 39, -2, 3, -18, + -13, 4, 11, 15, 10, 12, -33, 12, + -4, -9, 19, 1, 13, 1, -7, -37, + -10, 2, -10, -1, -22, -28, -28, -24, + ], + [ + 41, 8, 10, -48, 4, 21, 18, -16, + 38, 60, 125, 97, -60, 22, -12, -34, + -6, 23, 136, -30, 9, -75, -43, -40, + 9, 19, -14, 121, -44, -30, 41, 15, + 14, -71, 120, 42, 70, -92, -63, 69, + 29, -6, -2, 20, -26, 10, -25, -15, + -75, -86, 6, -17, -68, 5, 138, -38, + -51, 36, 2, -56, -55, -44, -82, -52, + ], + [ + 4, -5, 28, 32, -34, -34, 67, 22, + -7, 12, 59, -19, 30, -38, 36, 11, + -13, -13, -39, 2, 29, 57, -11, -16, + 21, 13, -67, -19, -46, -25, -88, -4, + -4, 8, 34, -70, 63, 49, 1, 33, + 32, 10, -18, -1, 25, 41, -11, 12, + -9, 43, 4, -27, -29, -21, -48, 7, + -14, -44, -77, -74, 35, 76, 29, 4, + ], + [ + 39, 7, 19, 58, -12, -51, -19, 47, + 16, -49, 3, -3, 39, 55, -32, -3, + 38, -29, -75, -104, 32, -62, -95, 39, + -39, -5, -61, 1, -43, -8, -32, -47, + 14, -51, 54, -40, 37, 39, -16, 42, + 25, 9, 7, 58, -6, -83, 52, 91, + 12, -4, -40, -123, 39, 80, 28, 24, + 0, 29, -72, 38, 16, 58, 16, 39, + ], + [ + 9, -4, 56, 40, 41, 32, 11, 50, + -1, 9, 37, -11, 49, -1, 40, 26, + -50, -37, -32, -78, -65, -18, 28, 50, + 26, -88, 18, -92, -31, -5, 20, -7, + 2, -36, -82, -80, -47, -17, -53, 57, + 67, -8, 17, 24, -16, 13, -18, 12, + -23, 38, -14, -3, -58, -23, 39, 43, + 32, 27, 8, 5, 6, -7, 5, 71, + ], + [ + 42, -9, -22, 3, 61, -3, 10, 10, + 11, 12, -78, -3, 29, 55, -47, 62, + -8, 75, -33, -48, -28, -98, 40, 6, + 36, -66, -57, -108, -55, -2, -60, 34, + 13, -16, -5, -57, -17, -50, 13, 19, + 33, -31, 34, 13, -83, -3, -61, 104, + 59, 2, 49, -47, 68, -1, 68, 22, + 15, 70, -71, 13, -20, 54, 1, 50, + ], + [ + 39, 61, -18, -11, 33, 23, 41, 25, + 74, -6, -64, -7, 14, 22, 5, 8, + -15, 8, -61, -22, -64, -37, -42, 19, + 4, -55, 21, -67, -56, -54, -22, 15, + 15, 10, -21, -3, -33, -50, -60, 24, + 52, 58, -23, -17, -28, -3, 8, -24, + 58, 4, -7, 52, -4, 54, -19, 48, + 39, -27, 10, 58, -43, 80, -22, 5, + ], + [ + 26, 68, 41, 6, 16, -46, -16, -2, + -77, -18, -26, 22, -33, 49, -46, -6, + -14, -42, -27, -55, -18, -89, 32, -45, + 33, -10, -38, -7, -24, -20, -22, 28, + 73, -22, 11, 17, 2, -37, 16, -17, + 13, 86, -54, -33, 27, 4, 27, 22, + -12, -47, 142, -50, 36, -74, 34, -4, + 44, 14, 9, 12, 49, 107, -37, 5, + ], + [ + 10, 14, 13, -7, -17, 36, -6, -8, + -15, -59, 54, -12, 26, 41, -15, 33, + 10, 36, -4, -57, -75, -39, 38, -1, + 45, 24, -5, 40, 125, -50, 27, -19, + -4, -62, -21, -28, -55, 73, 11, 9, + -13, -60, -12, -32, -0, -9, 17, -21, + -24, 27, -1, 57, 60, -29, 45, -37, + -42, 12, -1, -17, -32, -8, 19, -5, ], ]; internal static readonly short[][] EndGameEnemyBishopTable = [ [ - -64, -10, 14, -24, 11, -27, 21, 11, - 69, -43, -31, -13, -33, 34, 42, 56, - -24, 8, 8, -28, 25, 5, 36, -7, - -23, -1, -27, 26, 8, -1, 1, 21, - 4, -14, -1, -9, 16, -9, -37, 31, - -7, -18, -18, -4, 14, 1, -13, 24, - -1, 8, -42, -3, 7, 2, 15, -24, - 64, 3, -28, -25, 19, 25, -2, -21, - ], - [ - 13, -24, -30, -15, -5, 42, 19, 15, - -12, -44, 16, 21, 9, -16, 60, 32, - -6, 1, 17, 151, -6, -4, 5, 38, - 12, -27, -16, -9, 28, -10, -2, -4, - -10, -2, -1, -15, 21, 14, -0, -9, - 6, -15, 1, -2, 1, -5, -4, -25, - -51, 0, -18, 21, -17, -7, -7, -8, - -33, -28, -1, -25, -3, -29, 1, 0, - ], - [ - -17, -29, -52, 19, 34, 12, -18, -29, - -61, -14, -90, -70, 9, 8, 3, -15, - 41, -16, 7, -19, 116, -16, 27, 5, - 13, 5, -14, -0, -10, 110, -13, 15, - -28, -5, 12, -2, 3, 2, 24, 15, - 2, 19, 6, 20, 1, 2, 1, 26, - -45, 8, 1, -5, 14, 8, -3, 21, - -33, -11, 14, -4, -13, 34, -28, 7, - ], - [ - -46, -8, 32, 7, -4, -15, -0, -42, - -20, -17, 47, -7, 9, -29, 5, 35, - 13, 54, -17, -59, -7, 51, 6, 23, - 37, -2, -8, 2, -23, 5, -44, 4, - 25, -14, -3, -8, 2, -7, -8, 80, - -3, -9, -11, -5, 6, -7, -4, 4, - 2, 19, 18, -13, -1, 31, -6, 13, - -31, -13, 19, -11, -17, -2, -44, 19, - ], - [ - 19, 2, 1, 33, -28, -38, -22, -1, - -10, 6, 9, -34, 17, -17, 13, -13, - 59, -9, 98, -9, -36, 6, 70, -10, - 6, 51, 2, -9, -2, -12, 12, 37, - 5, -5, -5, 0, -3, 3, -14, 16, - 27, -16, -6, -9, -1, 4, -3, -19, - -5, -2, -9, -3, -16, -4, 11, -17, - -23, -35, 8, -13, 4, 6, -27, -36, - ], - [ - 3, -2, -14, -14, -16, -26, -30, -35, - 13, 4, -18, -1, -41, -34, 10, -29, - 7, -2, -7, 63, -30, -20, 9, 146, - 11, 7, 63, -9, -14, 17, 4, 2, - 0, 70, -8, -10, 2, 0, -7, -2, - 16, 0, -12, -9, -3, -17, 2, -24, - -19, 1, -6, 1, -2, 8, -10, 5, - -4, -2, 11, -4, -11, 17, -7, 4, - ], - [ - 25, 20, 36, 30, 5, -41, -114, -7, - 17, 10, -2, 34, -12, -47, -31, -100, - 24, 14, -2, 1, 97, 18, -4, 20, - 1, 9, 10, 28, 8, -8, 6, -6, - -8, 8, 18, 13, -10, 7, -6, -18, - -6, 15, 14, -2, 18, 3, -1, -6, - 0, -8, -11, 3, 3, 4, 1, -23, - -23, -18, -0, 2, 7, 16, -8, -23, - ], - [ - 11, 17, -20, 17, -2, -26, 49, -32, - -13, 14, 9, 7, -46, 1, -50, -12, - 2, 4, 8, 4, 5, 154, 16, 19, - 9, -10, 5, 22, 1, -12, 3, -2, - -2, -5, 20, -2, 5, -5, -20, 16, - -2, 3, -4, -2, 9, -14, -1, -4, - 5, -18, -8, -4, -5, -7, -2, -33, - -11, -15, -17, -0, -9, -12, 9, -17, - ], - [ - -49, -10, -27, 13, 20, -10, 22, 47, - -51, -16, -8, -13, 4, 8, 2, 21, - -36, -7, -46, -23, -10, -21, 4, -6, - -15, -19, -10, -4, -3, -7, 14, 6, - 9, 15, 5, 15, 7, 11, -24, 1, - 24, 15, 7, 12, 8, 2, -2, 12, - 21, 7, 14, 4, -4, 9, 17, 13, - -7, 22, 18, 5, 11, -6, -28, 18, - ], - [ - 12, -10, -30, -16, 14, 4, 20, 1, - -46, 7, -23, 18, 6, 4, -4, 2, - -14, -7, -22, -31, -15, -10, -1, -19, - -2, -1, -19, -12, -13, -14, -3, -8, - 14, 2, 2, 1, 17, -20, 0, -7, - 5, 15, -4, 7, 13, 3, -3, -3, - 19, 13, 11, 9, 9, 15, 3, 40, - 17, 5, 11, 11, -3, 10, 2, 17, - ], - [ - -12, -14, 3, 9, 22, 12, 16, 20, - 2, 4, -1, -14, 0, 7, 2, 9, - -6, -4, -15, -32, -45, -10, 5, 6, - -6, -9, -0, -5, -11, -23, -3, 8, - -4, -9, 7, -1, -1, -1, -1, -5, - 3, 10, 12, 5, 13, 1, -3, -8, - 17, 10, 15, 8, 4, -10, -2, -4, - -11, -15, 14, 9, 4, -10, 24, 16, - ], - [ - -1, -0, -18, -6, 12, 17, -12, -32, - 1, 1, 4, -0, -10, 4, -9, 0, - 12, 0, -4, -36, -26, -12, -10, -7, - 9, 8, -15, -8, -20, -17, 8, -15, - 11, -8, 9, 3, 2, 5, 9, -15, - 2, -2, 7, 11, 5, 10, 9, 4, - 13, 4, 11, 5, 16, 3, 3, 15, - 10, 16, 21, 13, 4, 14, -34, 5, - ], - [ - 29, 19, 1, 23, 3, -4, -23, 22, - 29, 11, 11, -9, 7, -27, -7, -42, - 8, 3, 2, -11, -15, -21, -13, -22, - 1, 5, -3, -13, -0, -17, 4, -16, - 10, -15, -2, 9, -8, 2, -1, 18, - 4, -11, 12, -3, 15, 5, 8, 11, - -2, -3, -2, 2, 9, 2, -8, 1, - -1, -8, 15, 0, 2, 3, 6, -7, - ], - [ - 27, -5, 26, 3, 3, 0, -2, -15, - 5, 9, 1, 4, -8, 13, -19, -68, - 10, 17, 13, -11, -13, -45, -0, -6, - 3, 11, -0, 11, -13, -13, -21, -2, - -2, 8, 7, 2, -0, -4, 6, 2, - 5, 7, -1, 9, 3, 11, -4, 21, - 3, -6, 7, 2, 13, 4, 2, -14, - -19, -10, -2, 3, 9, 21, -3, 3, - ], - [ - -16, 28, 25, 20, -8, 7, 10, 38, - -3, 1, 16, 14, 2, -3, -18, -91, - 8, -12, 1, 0, 5, -8, -51, -58, - -9, 4, 6, 16, 15, 5, 4, -0, - 19, 3, 11, 24, 5, 1, -4, -1, - -20, 5, 7, 4, 8, 7, 12, -28, - -12, 3, -0, 5, 10, -11, 3, -4, - -4, -18, -8, 11, 19, 13, -6, -2, - ], - [ - -24, -23, -14, -16, 9, -11, -4, 8, - -19, -23, -20, -40, -18, 34, 34, 39, - -14, -47, -21, 14, 9, 29, 30, 6, - -19, -3, 1, -1, 13, 23, -42, 16, - -23, -19, -5, 5, 15, 59, 23, 23, - -8, 25, -6, 13, 16, 0, -0, 33, - 38, 23, 26, -0, -33, -10, -67, -9, - -20, 38, -22, 7, 2, -23, 33, -39, - ], - [ - -29, -20, -34, -15, 43, 17, -2, 11, - -28, -5, -31, 21, 20, 49, 37, -0, - -5, -15, 18, 14, 14, 14, 12, -28, - 36, 36, 30, 24, 24, 3, 12, 10, - 29, 56, 0, 42, -10, 7, -14, -60, - 35, 31, 20, 20, -1, -43, -19, -35, - 31, -26, -7, 6, -17, -41, -3, -96, - 10, -14, -8, -7, -1, -55, -12, -54, - ], - [ - 3, -27, -40, -12, -12, -4, 40, 71, - 15, -17, -14, 0, 21, 13, 16, 35, - 12, 22, 1, 2, 40, 11, 29, -9, - 19, 35, 12, 17, 18, 31, -13, 9, - 53, 23, 19, 12, 2, -26, 9, -27, - -53, 29, 2, 27, -28, 11, 1, -32, - -8, 1, -45, 17, -12, -41, -46, -67, - 17, -9, -8, -13, -23, -4, -37, -67, - ], - [ - 19, 20, -16, -17, 14, -9, 8, -23, - 25, -2, 6, 10, -14, 8, 8, 42, - 7, 23, -4, 3, 7, 10, 9, 21, - 10, 25, 27, 10, 35, 1, 22, 15, - -2, 7, 25, 18, 5, -5, 8, -9, - -20, -30, 20, 5, -3, 1, -15, -9, - -12, -50, -2, -3, 6, 16, -27, 13, - -23, 4, -11, -23, -30, -25, -53, -81, - ], - [ - 28, 2, -2, 17, 1, -5, -16, 13, - 12, 7, 13, 1, -11, -11, 2, 39, - -23, 3, -4, 1, -6, -6, 6, 20, - -13, 9, 20, 30, -3, 22, 32, 24, - 3, -3, 2, 13, 18, 27, 4, -3, - -6, -7, -20, -3, 19, 39, -1, -31, - 18, -28, -35, -2, -8, 3, -6, -22, - -52, -5, -19, 4, -31, -31, 15, -51, - ], - [ - 14, 42, 4, -5, -4, 35, -17, 14, - 15, 30, 31, 10, -7, -7, -31, 8, - 7, -8, 13, 30, 12, -2, -8, 25, - -9, 21, 4, 26, 5, 17, 33, -8, - -13, -11, -13, 3, 6, 24, 37, -4, - -58, -20, 11, -9, 12, -3, 8, -7, - -49, -28, -7, -12, -13, -34, 11, -1, - -24, -24, -1, -8, -11, -24, -26, -4, - ], - [ - 28, 24, 24, 15, -9, -13, 5, -13, - -30, 39, 26, 25, 22, -33, -27, -3, - -4, 17, 11, 16, 31, 3, -5, -16, - -42, -13, 4, 21, 11, 14, 25, 31, - -62, -18, 6, -12, -7, 13, 76, -1, - -16, 3, -5, 3, -30, 55, -18, -2, - -4, -32, -17, 1, 13, -6, -0, -0, - -39, -7, -16, 16, -22, -2, -37, -13, - ], - [ - 68, 31, 8, -1, -20, 16, 15, -70, - 16, 6, 8, 36, 11, -22, -12, 24, - -6, -44, 34, 8, 10, -17, -13, 4, - -14, -24, 19, 3, -14, 33, 28, -25, - -38, 29, -13, -29, 32, -3, 20, 55, - 26, -23, 0, -7, -34, 12, 55, 16, - -16, -28, -32, -39, -7, -9, -4, -67, - 13, 11, -46, -9, 9, 14, 10, 6, + -63, -8, 16, -24, 13, -29, 21, 12, + 66, -42, -31, -13, -32, 35, 44, 55, + -23, 6, 8, -29, 26, 4, 35, -6, + -23, 1, -26, 26, 9, -1, 1, 21, + 4, -16, -1, -9, 14, -9, -37, 27, + -7, -17, -19, -3, 15, 1, -13, 24, + -3, 9, -40, -4, 7, 2, 15, -20, + 65, 2, -29, -25, 20, 26, -1, -23, + ], + [ + 17, -23, -28, -16, -7, 41, 18, 12, + -13, -41, 15, 21, 8, -16, 59, 32, + -4, 1, 16, 153, -6, -5, 4, 36, + 12, -26, -15, -9, 28, -10, -2, -3, + -8, -3, -1, -14, 21, 15, 0, -8, + 7, -16, 0, -2, 1, -5, -3, -25, + -51, -0, -18, 20, -17, -7, -7, -8, + -32, -28, -1, -25, -2, -29, 0, -0, + ], + [ + -14, -32, -50, 19, 31, 8, -19, -28, + -62, -13, -92, -70, 8, 6, 1, -16, + 44, -15, 5, -20, 115, -16, 27, 4, + 13, 5, -14, 0, -10, 111, -13, 16, + -27, -5, 12, -2, 4, 2, 26, 15, + 3, 19, 5, 20, 1, 2, 1, 26, + -45, 8, 2, -6, 14, 8, -3, 21, + -33, -11, 15, -4, -13, 34, -28, 8, + ], + [ + -47, -9, 32, 9, -4, -13, 0, -40, + -22, -18, 50, -6, 11, -31, 2, 32, + 15, 54, -17, -59, -7, 50, 5, 24, + 35, -2, -8, 3, -22, 6, -42, 4, + 26, -15, -3, -8, 1, -7, -9, 81, + -3, -9, -13, -4, 6, -7, -3, 4, + 5, 18, 16, -14, -2, 30, -6, 13, + -29, -13, 18, -12, -18, -2, -43, 19, + ], + [ + 19, 2, -0, 32, -26, -36, -24, -1, + -9, 3, 8, -32, 16, -11, 10, -13, + 61, -8, 98, -9, -35, 5, 67, -11, + 6, 52, 2, -9, -2, -14, 11, 34, + 7, -5, -5, 1, -4, 3, -15, 16, + 27, -16, -7, -9, -1, 3, -3, -18, + -4, -2, -10, -3, -16, -5, 11, -17, + -22, -36, 8, -14, 4, 6, -28, -35, + ], + [ + 4, -4, -17, -13, -19, -24, -29, -37, + 14, 3, -20, -2, -37, -35, 12, -30, + 8, -1, -7, 66, -30, -20, 10, 148, + 12, 7, 64, -9, -13, 16, 3, 2, + -1, 71, -9, -10, 1, -0, -8, -1, + 16, 0, -12, -9, -3, -17, 2, -25, + -18, 2, -6, 1, -3, 7, -11, 6, + -3, -2, 12, -5, -10, 16, -7, 5, + ], + [ + 25, 20, 36, 30, 5, -41, -113, -6, + 18, 9, -3, 34, -13, -46, -32, -99, + 25, 14, -2, 1, 97, 18, -4, 20, + 2, 9, 10, 28, 8, -8, 5, -5, + -7, 9, 18, 13, -10, 6, -6, -18, + -5, 15, 13, -3, 18, 3, -1, -6, + 1, -8, -11, 2, 3, 4, 0, -22, + -22, -18, 0, 2, 7, 16, -9, -24, + ], + [ + 10, 19, -20, 18, -2, -26, 48, -31, + -11, 14, 6, 5, -48, 0, -49, -13, + 3, 4, 6, 3, 5, 154, 17, 18, + 9, -10, 5, 21, -0, -12, 3, -4, + -3, -4, 20, -1, 5, -5, -20, 16, + -2, 3, -4, -2, 8, -15, -2, -3, + 6, -18, -8, -4, -5, -6, -3, -31, + -10, -14, -16, -1, -8, -12, 9, -16, + ], + [ + -50, -9, -28, 12, 19, -11, 23, 46, + -52, -17, -8, -13, 4, 7, 2, 21, + -38, -6, -46, -23, -11, -21, 3, -7, + -14, -19, -9, -5, -3, -6, 15, 6, + 9, 15, 5, 16, 7, 11, -23, 1, + 25, 15, 7, 13, 8, 1, -2, 13, + 21, 7, 14, 4, -4, 9, 17, 14, + -7, 23, 18, 5, 11, -7, -27, 19, + ], + [ + 12, -9, -30, -17, 14, 4, 19, -0, + -47, 7, -23, 18, 5, 4, -5, 1, + -13, -7, -22, -32, -15, -10, -1, -20, + -2, -1, -19, -11, -12, -14, -4, -9, + 15, 2, 2, 1, 17, -20, 1, -7, + 6, 15, -4, 8, 14, 3, -3, -2, + 20, 14, 11, 9, 10, 14, 3, 41, + 17, 4, 12, 11, -4, 10, 1, 18, + ], + [ + -14, -15, 3, 8, 22, 10, 16, 19, + 1, 4, -2, -14, -0, 6, 1, 9, + -5, -4, -15, -31, -43, -10, 5, 6, + -6, -9, 0, -4, -10, -23, -2, 7, + -3, -9, 8, -1, -1, -1, -2, -5, + 4, 11, 12, 6, 13, 1, -3, -8, + 17, 10, 15, 8, 4, -11, -2, -3, + -11, -15, 14, 9, 4, -10, 24, 15, + ], + [ + -2, -1, -18, -6, 11, 16, -12, -32, + 0, 1, 4, -1, -10, 4, -9, -0, + 12, -0, -4, -35, -24, -11, -10, -7, + 9, 8, -15, -8, -20, -17, 8, -16, + 11, -8, 9, 3, 3, 5, 9, -15, + 2, -2, 7, 12, 5, 11, 10, 5, + 13, 5, 10, 5, 16, 3, 3, 15, + 10, 15, 21, 13, 3, 13, -33, 5, + ], + [ + 28, 18, 0, 22, 2, -4, -22, 22, + 29, 11, 10, -9, 7, -28, -7, -43, + 8, 3, 1, -10, -14, -20, -12, -22, + 0, 5, -3, -13, 0, -17, 5, -15, + 10, -16, -2, 10, -8, 2, -1, 18, + 4, -12, 12, -3, 15, 5, 9, 12, + -2, -2, -3, 2, 9, 1, -8, 2, + 0, -9, 15, -0, 2, 4, 6, -6, + ], + [ + 27, -7, 25, 2, 4, -1, -2, -15, + 5, 8, 1, 3, -9, 13, -19, -67, + 10, 17, 13, -11, -13, -45, 2, -6, + 3, 11, -0, 12, -13, -13, -22, -2, + -2, 8, 7, 3, 0, -4, 6, 3, + 5, 7, -2, 9, 3, 11, -4, 21, + 4, -6, 7, 2, 13, 3, 2, -13, + -19, -10, -1, 3, 9, 21, -2, 3, + ], + [ + -16, 28, 25, 19, -7, 6, 11, 41, + -3, 1, 15, 13, 1, -3, -18, -91, + 9, -12, 1, 0, 5, -9, -48, -58, + -8, 4, 6, 16, 15, 6, 2, -1, + 19, 3, 10, 23, 5, 0, -4, -1, + -21, 4, 6, 4, 8, 7, 12, -28, + -11, 3, -0, 4, 10, -12, 3, -4, + -2, -18, -7, 11, 18, 14, -7, -1, + ], + [ + -24, -24, -14, -16, 11, -9, -4, 7, + -21, -23, -20, -38, -19, 35, 32, 38, + -21, -44, -19, 13, 8, 28, 30, 4, + -19, 1, -0, -2, 13, 24, -42, 17, + -23, -17, -3, 4, 16, 60, 24, 25, + -12, 26, -5, 13, 15, -0, -1, 35, + 38, 25, 27, -1, -31, -12, -65, -10, + -22, 37, -21, 8, -0, -25, 34, -42, + ], + [ + -29, -16, -35, -19, 41, 16, -3, 14, + -30, -1, -32, 22, 18, 49, 37, 2, + -6, -11, 18, 15, 14, 13, 12, -31, + 41, 37, 28, 25, 25, 3, 9, 9, + 31, 54, 2, 44, -10, 5, -15, -63, + 32, 29, 22, 20, 0, -41, -21, -33, + 33, -26, -7, 9, -16, -42, -3, -102, + 11, -16, -9, -3, -1, -56, -14, -50, + ], + [ + 4, -29, -42, -13, -12, -4, 43, 71, + 14, -16, -12, 0, 20, 13, 17, 39, + 10, 23, 2, 3, 40, 12, 30, -9, + 19, 35, 12, 17, 17, 30, -13, 5, + 50, 24, 22, 14, 2, -25, 8, -26, + -54, 31, 2, 28, -26, 12, -0, -34, + -4, 2, -43, 18, -11, -43, -48, -70, + 14, -11, -8, -18, -24, -4, -34, -69, + ], + [ + 19, 18, -17, -17, 14, -9, 9, -23, + 27, -1, 7, 9, -12, 9, 8, 42, + 7, 21, -3, 3, 8, 10, 11, 19, + 9, 24, 28, 12, 37, 2, 23, 14, + 0, 7, 24, 19, 6, -5, 9, -10, + -23, -31, 24, 7, -3, 3, -16, -9, + -13, -51, -2, -3, 6, 16, -28, 12, + -23, 3, -13, -25, -29, -25, -53, -81, + ], + [ + 28, 2, -2, 17, 2, -5, -17, 14, + 13, 7, 13, 2, -11, -11, 3, 39, + -25, 1, -4, 2, -5, -4, 5, 21, + -13, 8, 21, 32, -2, 24, 32, 24, + -1, -3, 2, 14, 17, 28, 4, -6, + -6, -8, -19, -2, 19, 39, -0, -34, + 13, -27, -36, -2, -11, 3, -5, -21, + -52, -3, -18, 4, -31, -33, 16, -53, + ], + [ + 15, 45, 4, -5, -3, 37, -17, 17, + 15, 30, 30, 9, -7, -6, -32, 7, + 6, -10, 13, 31, 12, -1, -7, 26, + -7, 21, 5, 27, 6, 18, 35, -7, + -16, -13, -13, 3, 7, 26, 37, -7, + -62, -20, 11, -8, 15, -4, 10, -10, + -52, -27, -6, -9, -12, -33, 14, -4, + -27, -27, 2, -8, -12, -24, -31, -5, + ], + [ + 29, 25, 23, 13, -10, -10, 4, -15, + -29, 37, 25, 25, 21, -33, -28, -3, + -5, 14, 11, 15, 31, 4, -2, -15, + -47, -15, 3, 22, 12, 15, 25, 34, + -67, -18, 8, -12, -5, 15, 75, -3, + -16, 5, -4, 4, -30, 57, -21, -2, + -7, -34, -18, 2, 12, -3, 1, -1, + -37, -8, -18, 17, -20, -3, -36, -11, + ], + [ + 73, 32, 8, -3, -21, 12, 9, -69, + 22, 5, 7, 34, 12, -21, -11, 25, + -8, -46, 34, 9, 11, -17, -13, 5, + -13, -25, 19, 5, -14, 32, 28, -26, + -37, 31, -13, -30, 32, -1, 19, 52, + 28, -26, 1, -7, -33, 13, 54, 18, + -21, -28, -33, -39, -6, -4, -5, -68, + 12, 13, -50, -8, 10, 12, 11, 7, ], ]; internal static readonly short[][] MiddleGameEnemyRookTable = [ [ - -27, -34, 46, -26, 55, 71, 37, -115, - -55, 62, 84, 126, 33, 8, 47, 33, - -24, 31, 20, 43, 50, 34, 69, 33, - 40, 18, 30, 16, 20, -11, -26, -36, - -50, -4, -9, -31, -29, -36, 5, -1, - -43, 9, -48, 11, -42, -49, 8, -32, - -50, 10, 25, -12, -28, -41, -43, -32, - -12, -7, -9, -9, -16, -5, -41, -42, - ], - [ - -138, -94, -97, 60, 35, 14, 9, 44, - 135, -54, 17, 54, 49, 25, 3, 4, - 11, 36, 61, 63, 32, 14, 35, -13, - 27, 28, 8, -13, 28, -14, -3, -29, - -18, -3, 0, -8, -15, -24, 3, -29, - -8, -11, -1, -12, -11, -26, -8, -17, - -17, 6, 10, -17, -17, -20, -7, -39, - -1, 5, 6, -7, -8, 8, -26, -24, - ], - [ - 67, -83, -74, -88, 27, -16, 104, 86, - 26, 48, -93, 28, 22, -11, -5, 12, - 15, 37, 41, 37, 5, -7, 26, 12, - 4, 21, 29, 34, -9, 3, -11, -12, - -15, 19, -14, 10, -3, -19, -20, -31, - -35, -10, 10, -3, -17, -6, 5, -22, - -15, 26, 5, 1, -13, -16, -20, -50, - -5, -3, 19, 0, -6, 4, -26, -24, - ], - [ - 48, 102, -72, -29, 17, 43, 82, -63, - 53, 53, -0, -3, 71, 42, 59, 54, - 34, 82, 78, 6, 1, 51, 11, 31, - -71, 21, -6, 10, -2, -11, -41, 4, - -2, -28, -23, -44, 36, 0, -24, 5, - -48, -41, 0, -34, -30, -73, 22, -30, - -53, -64, -6, -14, -9, -34, -17, -23, - -2, -24, -6, -11, -10, -7, -32, -29, - ], - [ - 116, 73, -10, -49, -84, -105, 85, 20, - 70, 34, 50, 57, -82, 31, 13, 21, - 8, -26, 22, 13, 53, 27, 59, 37, + -27, -35, 47, -28, 54, 71, 35, -115, + -56, 64, 83, 128, 30, 8, 44, 31, + -28, 31, 22, 40, 50, 33, 69, 32, + 40, 17, 31, 17, 19, -11, -25, -36, + -47, -4, -8, -31, -28, -34, 4, -1, + -42, 10, -48, 11, -42, -48, 10, -33, + -49, 12, 25, -12, -29, -40, -43, -32, + -11, -6, -9, -9, -16, -5, -41, -43, + ], + [ + -138, -94, -97, 59, 33, 16, 9, 44, + 132, -55, 16, 54, 48, 24, 0, 2, + 10, 34, 61, 62, 31, 13, 34, -14, + 27, 27, 8, -14, 29, -15, -3, -30, + -18, -2, 1, -8, -14, -23, 2, -29, + -6, -10, -1, -11, -11, -25, -7, -17, + -16, 7, 10, -16, -17, -19, -5, -38, + -1, 6, 7, -6, -7, 9, -24, -24, + ], + [ + 66, -83, -74, -89, 26, -17, 104, 85, + 23, 48, -93, 31, 23, -14, -9, 8, + 14, 36, 40, 35, 4, -8, 22, 11, + 4, 21, 29, 34, -9, 2, -11, -12, + -15, 20, -12, 11, -1, -18, -21, -30, + -33, -9, 10, -2, -16, -4, 6, -22, + -14, 26, 5, 2, -13, -15, -19, -48, + -4, -2, 20, 1, -5, 4, -24, -24, + ], + [ + 43, 102, -72, -29, 17, 43, 78, -64, + 49, 52, 1, -3, 70, 41, 56, 52, + 29, 82, 76, 6, 1, 50, 10, 30, + -68, 21, -6, 10, -2, -12, -42, 4, + -1, -28, -21, -43, 38, 2, -25, 5, + -45, -39, 2, -34, -29, -71, 24, -31, + -52, -63, -7, -13, -8, -32, -16, -23, + -2, -23, -5, -10, -9, -7, -30, -30, + ], + [ + 117, 70, -10, -53, -84, -105, 79, 19, + 67, 32, 49, 57, -80, 29, 11, 18, + 7, -27, 19, 14, 52, 24, 56, 36, 6, -15, -18, -11, -11, -9, 52, -1, - -19, -50, 7, 3, 4, -25, -6, -6, - -34, -24, -17, -17, -17, -13, 23, -16, - -22, -22, -16, -17, -9, -14, -17, -14, - -21, -21, -16, -1, 4, 6, -18, -20, - ], - [ - 16, 17, 74, 90, -43, -56, -56, 173, - -2, 35, 28, 67, 12, 56, 47, 65, - -1, -19, -13, 16, 37, 148, 65, 40, - -19, -33, 13, -43, -16, 62, 39, 14, - -45, -66, -64, -44, -13, 11, -13, -7, - -31, -64, -12, -31, -9, -0, 33, -12, - -24, -36, -40, -23, -14, -34, -25, -43, - -39, -48, -37, -34, -15, -5, -11, -18, - ], - [ - 5, 43, 7, 33, 91, -289, -108, -65, - -2, -6, 12, 29, 13, 36, 44, 106, - -9, -5, 3, 5, 30, 34, 78, 38, - -13, -12, 6, -6, 2, 10, 24, 17, - -18, -6, -16, -9, -7, -0, 18, 9, - -11, -21, -22, -14, -10, 6, 33, 10, - -23, -12, -9, -6, -3, -3, 19, -6, - -6, -20, -17, -6, -7, 11, 1, -5, - ], - [ - 18, -8, 10, 31, 141, 109, -105, -103, - -8, 20, 18, 38, 37, 57, 73, -98, - -30, -22, -12, 29, 33, 69, 47, 6, - -26, -26, -18, 3, 8, 17, 35, 39, - -27, -9, -35, -28, 7, 16, 28, 3, - -28, -37, -34, -19, -24, 7, 27, 5, - -41, -32, -23, -19, -15, -12, 25, 12, - -24, -38, -31, -16, -15, 4, 8, -14, - ], - [ - 29, -35, 62, 62, 5, -67, 11, 16, - -41, 37, -37, 49, 50, 41, 54, 53, - 54, 4, 32, 45, 24, 49, -6, -8, - 38, 13, 67, -9, 29, 5, -32, -50, - -13, -10, 16, 9, -40, -2, 27, -21, - -17, -1, 26, -54, -61, -15, -16, -32, - -20, -17, -17, -45, -15, -17, 11, -44, - -6, -18, 0, -26, -13, -13, -54, -44, - ], - [ - 36, 15, -38, -35, -2, 45, -23, 8, - -20, 23, 22, -41, 53, 41, 86, 32, - -9, -20, 48, 50, 13, 19, 13, 44, - 3, -24, 20, 3, 26, 33, 39, 48, - -75, -20, 66, -33, -10, 7, -13, -9, - -10, -2, 30, -17, -1, -73, 7, -30, - -83, 9, 11, 2, -22, -10, -46, -28, - -29, -8, 10, -12, -20, -22, -25, -52, - ], - [ - 14, 24, -11, 100, -26, 78, 9, 13, - 1, 8, -27, 74, -20, 21, 23, 40, - 32, 8, 6, 61, 14, 21, 52, 20, - -51, 5, 30, 31, 5, -31, -7, -24, - -54, -68, -2, -3, 37, -11, -26, -16, - -35, -21, 20, 14, 14, -8, -16, -60, - -23, -6, 13, 6, -1, 4, -61, -51, - -17, -22, 7, 3, 6, -9, -47, -59, - ], - [ - -4, 53, 54, -6, -9, 0, 9, 65, - 55, 41, 44, -41, 42, 144, -19, 32, - 30, 40, 60, -10, 47, 67, 32, -4, - -38, -19, -19, -10, 1, 19, 21, -51, - -53, -70, -62, -31, 29, -8, -4, -53, - -54, -11, 6, 29, 3, -5, -6, -39, - -34, -17, 2, 34, 1, -10, -23, -42, - -27, -37, -30, -5, -7, -4, -40, -54, - ], - [ - -1, 3, 5, -11, -36, 22, -16, 23, - 1, 38, 46, 65, 31, 42, 41, -37, - 9, 44, 46, 42, 18, 49, 63, 61, - -5, 1, 3, 9, 1, 79, 7, -14, - -48, -57, -47, -16, 3, -4, 0, -14, - -17, -57, -22, -27, -7, -14, 46, -33, - -44, -30, -28, -10, -21, 7, 6, -27, - -32, -40, -34, -20, -2, 5, -27, -21, - ], - [ - 13, -19, -3, -6, 22, 14, 40, 102, - 23, 36, 36, 49, 14, 18, -53, 133, - -5, 21, 29, 21, 67, 60, -57, 22, - -16, -11, 16, 32, 15, 50, -3, -4, - -47, -46, -33, -12, -21, 14, -41, 7, - -34, -31, -33, -20, -1, 1, -0, 19, - -34, -41, -38, -20, -22, -8, -5, -15, - -28, -42, -35, -25, -19, -2, -23, -19, - ], - [ - -24, -54, -20, -31, 8, 16, 37, 58, - 7, -8, 32, 71, 67, 53, 84, -9, - -8, -19, 13, 27, 61, 89, 101, -26, - -46, -10, -1, -1, 15, 16, 44, 36, - -33, -31, -43, -17, -10, 5, 13, 14, - -33, -34, -32, -35, -12, 3, 12, -12, - -31, -33, -29, -18, -26, -6, -9, -19, - -26, -37, -35, -18, -22, -1, -4, -15, - ], - [ - 3, 10, 69, 12, -24, -33, -53, 47, - 14, -20, 61, 25, 19, -4, -51, 47, - 24, 54, 59, 5, 43, -101, 58, -65, - 16, 45, -4, 78, 18, -30, 155, 16, - 86, 70, 82, 7, 0, -36, 19, -142, - -30, 49, -17, -28, 58, 78, -95, -1, - -39, -57, 26, -26, 32, -13, -39, 3, - -46, -4, 3, -51, -49, -97, -89, -147, - ], - [ - -44, -2, 34, 31, -31, 6, -8, 6, - -9, 41, 77, -49, -23, 12, -37, -114, - -34, -13, 34, -83, -64, -96, -71, -51, - 15, 6, -10, -21, -13, 44, -40, 40, - -23, -30, -7, 23, -24, 12, 14, -45, - 17, 3, -11, 34, 91, 22, -24, 8, - 5, 26, 36, 30, 74, 27, -82, 7, - 76, 11, 54, 106, 59, 54, -12, -63, - ], - [ - -26, -61, -45, -78, -27, 12, -12, 3, - 16, 22, -15, -94, 14, -11, 32, -66, - -31, 95, -2, -4, -66, -1, -6, -50, - 51, 13, 9, -34, -39, -5, -46, -35, - 70, 8, -22, 77, 47, -57, -2, -11, - -23, -36, -13, -23, 52, 11, 17, -7, - -37, -58, 43, -42, 12, 35, -40, -48, - 111, 213, 18, 77, 43, 41, 43, -13, - ], - [ - -72, -31, 29, -26, -42, -22, 8, -14, - -66, -26, -13, -89, -70, -97, -57, 12, - 6, -22, -86, -37, -121, -69, 1, -30, - 56, 60, -44, -4, -51, -28, -63, 84, - 34, 6, -8, -10, 28, 34, 8, -17, - -29, 42, -44, 31, 42, 65, 31, -24, - 1, 2, -51, -25, -23, 23, 42, 17, - 36, 96, 136, 34, 166, 165, 100, 12, - ], - [ - -2, -58, -7, -37, 12, -25, 18, -2, - -61, -60, -30, -13, 23, -114, -24, -94, - -53, -119, -8, -36, 42, 10, 21, -34, - -33, -0, -15, 20, -22, 42, -37, -64, - 23, 60, -17, -29, -10, 34, 6, 41, - -78, 5, 33, 26, -13, 3, -9, 32, - -7, -1, 3, 6, -33, 147, 66, 42, - 17, 19, 39, 52, 81, 160, -17, 76, - ], - [ - -4, -21, -69, -51, 5, 6, -2, 6, - -63, 95, -69, -38, 11, -18, 16, -77, - -29, 69, -55, 64, -32, 42, -25, -4, - -118, -12, -69, 58, 15, 9, -9, 66, - -44, 48, 15, -21, 43, -27, 22, -8, - -16, 21, 7, -10, -35, -4, -83, 18, - 36, -75, 3, 67, 26, -40, 14, 42, - -66, -24, 7, 27, 156, 12, 67, 125, - ], - [ - 34, -53, -39, 26, -67, 3, 8, -32, - -49, -21, 20, -96, -31, -4, -54, -37, - -27, -6, -78, -54, -57, 59, 1, 40, - -34, 13, 14, -46, 56, 78, 10, 44, - -36, -1, 27, 47, 20, -1, 14, -11, - 17, -15, -58, -12, 29, 36, -4, -30, - 44, 22, -41, 25, 11, 23, 31, 32, - 45, -45, -41, 91, 27, 47, 18, 70, - ], - [ - 30, -21, -15, -30, -41, 65, -23, -65, - -18, -51, -15, -83, 48, 23, 78, -21, - -78, 19, 12, -60, 7, -69, -6, 22, - 29, 47, 24, -32, -11, 123, 41, 12, - 28, 32, 54, 29, 10, 29, 13, 8, - 44, 12, -41, -9, -7, -49, 39, 9, - 10, 63, -1, -33, 71, -2, -2, -15, - -80, -20, -11, -49, -44, -47, 14, 8, + -18, -49, 8, 4, 5, -24, -6, -5, + -33, -22, -17, -15, -17, -11, 25, -15, + -20, -20, -15, -16, -9, -12, -15, -12, + -21, -19, -15, -0, 4, 7, -16, -20, + ], + [ + 13, 20, 73, 88, -44, -57, -57, 171, + -4, 36, 27, 68, 15, 55, 42, 62, + -1, -19, -13, 16, 37, 145, 60, 38, + -19, -33, 13, -43, -16, 61, 37, 15, + -46, -65, -64, -41, -12, 11, -12, -5, + -29, -64, -12, -29, -8, 1, 35, -11, + -22, -35, -40, -22, -13, -32, -23, -41, + -39, -48, -36, -34, -15, -5, -9, -18, + ], + [ + 4, 44, 7, 31, 90, -289, -108, -65, + -4, -7, 11, 28, 13, 34, 42, 102, + -10, -6, 3, 4, 28, 33, 77, 37, + -13, -13, 6, -7, 2, 10, 23, 16, + -17, -5, -15, -9, -6, 0, 18, 9, + -10, -20, -22, -13, -10, 7, 35, 11, + -22, -11, -9, -5, -2, -1, 21, -5, + -6, -19, -16, -5, -6, 12, 3, -5, + ], + [ + 17, -7, 11, 31, 141, 108, -105, -103, + -11, 19, 16, 37, 36, 55, 70, -98, + -33, -23, -12, 28, 31, 68, 46, 4, + -26, -26, -17, 3, 8, 16, 35, 39, + -27, -8, -34, -27, 7, 16, 28, 3, + -27, -37, -35, -18, -23, 8, 28, 5, + -40, -31, -22, -18, -15, -10, 26, 12, + -24, -36, -30, -16, -14, 5, 10, -14, + ], + [ + 28, -37, 61, 60, 5, -67, 12, 15, + -42, 36, -39, 49, 51, 40, 53, 53, + 53, 2, 32, 46, 23, 49, -8, -9, + 37, 15, 66, -8, 28, 5, -32, -49, + -14, -10, 16, 10, -40, -1, 26, -21, + -17, -0, 26, -53, -60, -14, -16, -33, + -20, -16, -17, -44, -15, -15, 12, -43, + -6, -17, 1, -26, -13, -13, -52, -44, + ], + [ + 33, 13, -40, -37, -2, 46, -21, 7, + -21, 21, 24, -40, 52, 40, 84, 32, + -8, -21, 47, 50, 10, 19, 12, 42, + 3, -25, 20, 3, 26, 33, 41, 49, + -74, -18, 65, -31, -9, 8, -12, -7, + -8, -2, 31, -17, -1, -73, 7, -31, + -83, 11, 11, 2, -22, -9, -46, -26, + -29, -8, 10, -13, -20, -22, -25, -53, + ], + [ + 13, 23, -11, 99, -26, 79, 8, 13, + 2, 8, -28, 73, -20, 19, 24, 40, + 31, 7, 4, 60, 14, 19, 52, 18, + -48, 5, 32, 30, 5, -32, -6, -20, + -54, -67, -2, -4, 37, -11, -22, -16, + -34, -21, 20, 14, 14, -7, -17, -61, + -22, -6, 13, 6, -2, 6, -62, -50, + -18, -22, 7, 3, 6, -9, -45, -59, + ], + [ + -6, 54, 54, -4, -7, 2, 7, 66, + 54, 40, 43, -43, 40, 143, -20, 30, + 28, 38, 58, -12, 46, 64, 30, -4, + -38, -20, -17, -11, 1, 18, 22, -49, + -52, -70, -60, -29, 30, -7, -4, -52, + -54, -11, 5, 29, 5, -4, -5, -37, + -33, -17, 2, 34, -0, -8, -23, -40, + -27, -37, -29, -5, -8, -4, -38, -54, + ], + [ + -3, 5, 6, -12, -35, 18, -16, 21, + -1, 36, 43, 65, 30, 39, 42, -40, + 7, 42, 46, 42, 16, 48, 58, 60, + -4, 1, 4, 10, 2, 79, 8, -14, + -46, -56, -46, -14, 5, -4, 3, -11, + -17, -55, -22, -26, -7, -13, 48, -33, + -42, -30, -28, -9, -20, 9, 7, -26, + -32, -40, -33, -21, -2, 5, -26, -22, + ], + [ + 13, -19, -3, -7, 22, 13, 38, 100, + 22, 36, 35, 48, 15, 17, -53, 130, + -7, 21, 28, 21, 65, 59, -59, 21, + -16, -12, 17, 32, 15, 50, -4, -4, + -47, -46, -32, -12, -20, 15, -41, 8, + -34, -30, -33, -19, -0, 3, 0, 19, + -33, -40, -37, -20, -22, -7, -4, -14, + -28, -41, -34, -24, -18, -2, -21, -20, + ], + [ + -25, -52, -20, -34, 7, 15, 36, 58, + 6, -8, 32, 69, 66, 52, 83, -10, + -8, -20, 12, 26, 60, 88, 98, -27, + -46, -9, -1, -2, 15, 15, 43, 35, + -33, -31, -43, -17, -9, 6, 12, 14, + -31, -34, -32, -34, -11, 4, 13, -12, + -30, -32, -29, -17, -26, -4, -8, -19, + -26, -36, -34, -17, -21, -0, -2, -16, + ], + [ + 9, 9, 72, 8, -30, -28, -46, 49, + 18, -18, 61, 21, 16, -6, -44, 47, + 27, 57, 62, 6, 47, -97, 58, -69, + 19, 42, -4, 72, 11, -40, 159, 13, + 86, 78, 82, 1, -5, -38, 12, -145, + -34, 47, -13, -28, 56, 68, -93, 3, + -36, -59, 30, -23, 30, -11, -44, 0, + -45, -5, 3, -52, -48, -92, -84, -145, + ], + [ + -49, -13, 24, 31, -26, 3, -4, 5, + -13, 49, 75, -50, -23, 16, -43, -112, + -35, -7, 34, -81, -64, -94, -72, -51, + 14, 9, -18, -20, -10, 49, -34, 40, + -21, -28, -2, 24, -25, 18, 18, -47, + 19, 6, -10, 34, 93, 30, -27, 7, + 4, 28, 34, 32, 71, 23, -82, 8, + 67, 19, 48, 99, 56, 56, -18, -66, + ], + [ + -27, -71, -45, -79, -27, 16, -15, 3, + 23, 21, -14, -97, 15, -8, 36, -63, + -30, 100, 2, -3, -54, 7, -3, -49, + 50, 18, 10, -35, -42, -4, -48, -38, + 68, 8, -20, 73, 46, -55, -8, -17, + -26, -44, -13, -27, 50, 5, 12, -6, + -34, -59, 44, -43, 10, 41, -38, -50, + 102, 208, 22, 78, 46, 49, 42, -15, + ], + [ + -66, -29, 25, -26, -37, -21, 9, -9, + -65, -23, -9, -88, -72, -93, -55, 12, + 8, -23, -83, -35, -119, -62, 7, -28, + 54, 66, -41, -3, -50, -29, -68, 78, + 33, 1, -10, -11, 28, 28, 7, -17, + -36, 39, -45, 32, 39, 61, 30, -23, + -0, -1, -46, -21, -22, 22, 35, 13, + 46, 87, 129, 34, 166, 163, 93, 18, + ], + [ + 1, -60, -5, -44, 6, -24, 16, 0, + -58, -58, -29, -20, 21, -109, -26, -91, + -56, -119, -4, -33, 45, 13, 26, -25, + -36, 6, -17, 16, -21, 46, -37, -67, + 18, 58, -21, -30, -11, 37, 6, 38, + -81, 7, 35, 24, -12, 11, -8, 31, + -11, -4, -1, 2, -29, 145, 64, 40, + 15, 21, 44, 51, 84, 163, -22, 82, + ], + [ + 0, -32, -72, -52, 2, 6, -7, 4, + -56, 91, -62, -34, 10, -13, 22, -75, + -29, 70, -51, 71, -29, 44, -24, 1, + -116, -6, -69, 53, 15, 9, -9, 63, + -47, 41, 14, -18, 39, -29, 22, -10, + -19, 25, 6, -14, -26, -4, -89, 21, + 32, -76, 9, 65, 26, -45, 13, 39, + -66, -37, 0, 40, 152, 16, 60, 135, + ], + [ + 32, -59, -35, 35, -69, 4, 8, -37, + -47, -24, 20, -96, -31, -1, -54, -36, + -26, -3, -77, -48, -52, 65, 4, 38, + -37, 11, 14, -47, 56, 78, 12, 49, + -40, -2, 28, 46, 18, -5, 15, -11, + 9, -18, -62, -12, 29, 42, -4, -25, + 39, 15, -35, 27, 13, 22, 32, 31, + 39, -52, -35, 93, 26, 42, 20, 68, + ], + [ + 32, -22, -16, -30, -40, 60, -29, -66, + -17, -49, -14, -81, 47, 18, 87, -21, + -74, 18, 14, -57, 8, -69, 1, 22, + 26, 46, 24, -23, -15, 125, 46, 13, + 23, 30, 49, 25, 7, 27, 12, 8, + 41, 11, -41, -11, -4, -52, 33, 8, + 9, 59, -0, -40, 76, -6, -6, -9, + -81, -16, -16, -46, -38, -42, 13, 6, ], ]; internal static readonly short[][] EndGameEnemyRookTable = [ [ - -1, -10, -22, 22, 7, 3, 13, 38, - -97, 16, -38, -48, -6, 13, -8, 7, - 24, -2, 0, -4, -8, -2, -12, -6, - -91, -1, -12, -16, 7, 16, 21, 4, - 34, 13, -8, 35, 47, 24, 13, 17, - -32, -24, 16, -21, 19, 27, -5, 29, - -16, 6, -27, 4, 26, 1, -32, -2, - 5, -4, -1, -4, 17, 19, 10, 9, - ], - [ - -142, -127, -114, 44, 33, 71, 44, 74, - -38, 46, 14, -16, 2, 23, 19, 19, - -23, 8, -31, -16, 4, 15, 2, 29, - -33, -12, -3, 19, -2, 17, 24, 38, - -6, -17, -8, 10, 24, 30, 30, 17, - -42, -4, -14, 6, 17, 29, -12, 2, - -33, -10, -16, 11, 12, 13, -10, 25, + -1, -11, -22, 22, 6, 2, 13, 39, + -96, 12, -39, -49, -5, 13, -8, 7, + 24, -2, 0, -3, -7, -2, -12, -7, + -90, -1, -12, -17, 8, 16, 20, 4, + 33, 13, -9, 35, 46, 23, 14, 16, + -32, -24, 16, -19, 17, 28, -7, 29, + -15, 5, -27, 5, 26, 1, -31, -2, + 5, -4, -1, -3, 17, 20, 10, 9, + ], + [ + -142, -126, -114, 45, 34, 70, 43, 72, + -35, 49, 14, -17, 1, 22, 19, 19, + -23, 10, -32, -17, 4, 15, 1, 29, + -34, -12, -3, 20, -3, 18, 25, 38, + -5, -17, -9, 10, 24, 29, 30, 18, + -43, -5, -14, 6, 16, 29, -12, 2, + -33, -10, -16, 11, 12, 14, -10, 25, -13, -26, -26, 0, 7, 11, 2, 1, ], [ - -43, -133, -160, -172, 18, 71, 49, 64, - 22, 19, -139, 6, 43, 45, 43, 32, - -0, -9, -9, 2, 11, 35, 24, 17, - -13, 2, -16, 7, 18, 28, 17, 43, - -11, -27, 13, -4, 28, 31, 0, 45, - 11, -3, -21, -7, 14, 9, 11, 21, - -19, -48, -16, -13, 2, 26, 30, 29, - -3, -5, -29, -10, 6, 19, -0, -1, - ], - [ - 6, 74, -98, -84, -84, 78, 16, 97, - 17, -1, 25, -7, -2, 5, 9, 24, - 10, -9, -26, 4, 6, -27, 27, -1, - 29, -36, -6, 4, -3, -2, 9, -3, - -29, 3, -4, 43, -17, -13, 27, -32, - -4, 3, 1, 2, -1, 39, 1, 46, - -4, 29, -33, 6, -7, -17, -20, -27, - -11, 10, -14, 9, 0, -4, -9, -20, - ], - [ - 20, 33, 55, -114, -126, -133, 32, 151, - 16, 25, 6, 5, -48, 27, 30, 35, - 38, 22, -1, -8, -11, -3, -11, 12, - 3, 26, 22, -10, 11, 3, -10, -6, - 30, 25, -8, -9, -33, 4, 14, -2, - 18, 18, -11, -12, -5, -5, -14, 12, - -3, 9, 1, -8, -30, -1, 3, -12, - 6, 8, -1, -20, -6, -10, -22, -30, - ], - [ - 81, 81, 82, 22, -117, -141, -141, -93, - 30, 17, 18, -4, 1, -35, 27, 5, - 35, 35, 43, -3, -24, -50, -1, 4, - 39, 37, 9, 19, -4, -32, -20, 5, - 18, 36, 37, 22, -6, -17, 11, 13, - 7, 18, 15, 11, -15, -16, -33, -25, - 3, 7, 23, 8, -0, -15, -3, -3, - 11, 12, 10, 12, -12, 1, -20, -36, - ], - [ - 132, 106, 145, 93, 74, -429, -269, -205, - 38, 41, 48, 27, 32, 34, -7, -15, - 22, 29, 30, 29, -2, -15, -6, -13, - 27, 31, 26, 29, 14, -4, -26, -19, - 25, 26, 29, 24, 9, -5, -24, -29, - 17, 13, 25, 15, 7, -21, -38, -48, - 9, 10, 21, 20, 2, -2, -44, -29, - 14, 11, 18, 10, 6, 1, -35, -35, - ], - [ - 91, 122, 125, 78, 51, 101, -159, -164, - 22, 15, 37, 13, 22, -1, 18, -19, - 37, 32, 44, 4, -8, -21, 1, -17, - 6, 2, 30, 7, 14, 2, -31, -65, - -3, 4, 22, 11, -11, -12, -42, -40, - 3, -14, 4, 3, -4, -23, -37, -63, - -5, 14, -1, 4, -4, -3, -42, -48, - -3, -2, 5, -3, 4, -8, -42, -51, - ], - [ - -7, 15, 3, -18, 4, 49, 20, 4, - 11, 3, 14, -16, -5, -5, -13, -20, - -29, -23, -24, -5, 9, 9, 12, 20, - -32, -34, -24, 4, -3, 15, 30, 31, - -12, -6, -21, -26, 25, 18, -6, 18, - -13, -29, -23, -8, 23, 1, 17, 15, - -20, -14, -3, 24, 9, 13, 3, 0, - -3, -9, -9, 12, 11, 19, 3, -4, - ], - [ - -2, 0, 20, 34, 17, 13, 31, 9, - -4, -10, 12, 8, -2, 1, -20, -3, - 2, 5, -59, -28, 6, 8, 3, -11, + -44, -131, -158, -171, 18, 72, 47, 64, + 21, 17, -137, 4, 41, 45, 43, 33, + 0, -9, -10, 1, 10, 35, 26, 16, + -12, 1, -16, 7, 18, 27, 17, 44, + -10, -28, 12, -4, 28, 32, 2, 45, + 10, -4, -21, -7, 14, 8, 12, 22, + -20, -48, -17, -13, 2, 26, 30, 29, + -3, -5, -29, -10, 6, 19, 0, -1, + ], + [ + 6, 75, -96, -82, -82, 76, 19, 95, + 16, -2, 24, -6, -3, 4, 7, 23, + 11, -10, -26, 4, 6, -28, 27, -1, + 28, -36, -6, 4, -3, -2, 9, -2, + -28, 2, -5, 44, -17, -14, 27, -32, + -4, 3, -0, 1, 0, 38, 1, 47, + -3, 28, -32, 6, -7, -17, -21, -27, + -10, 11, -14, 9, -1, -3, -8, -20, + ], + [ + 20, 34, 54, -112, -123, -130, 32, 153, + 16, 24, 4, 3, -44, 26, 28, 34, + 38, 22, -0, -9, -12, -3, -10, 13, + 3, 27, 22, -11, 11, 4, -8, -5, + 31, 25, -8, -11, -33, 3, 14, -3, + 19, 17, -11, -13, -5, -6, -16, 12, + -3, 8, 1, -9, -31, -1, 2, -12, + 6, 8, 0, -20, -6, -11, -22, -30, + ], + [ + 82, 79, 81, 21, -114, -137, -137, -92, + 31, 16, 17, -5, -1, -34, 29, 5, + 36, 35, 43, -3, -25, -52, 2, 7, + 40, 37, 9, 19, -5, -33, -20, 4, + 19, 36, 37, 21, -7, -18, 10, 13, + 7, 18, 15, 10, -15, -17, -34, -25, + 3, 7, 23, 8, -1, -16, -4, -4, + 13, 12, 11, 12, -11, 2, -20, -36, + ], + [ + 132, 106, 146, 94, 73, -427, -268, -205, + 39, 41, 48, 27, 31, 34, -6, -14, + 23, 29, 30, 29, -2, -16, -6, -13, + 28, 31, 26, 29, 14, -4, -27, -18, + 26, 26, 29, 23, 9, -5, -24, -29, + 17, 14, 25, 15, 7, -22, -39, -49, + 9, 10, 21, 20, 1, -3, -45, -29, + 14, 10, 18, 10, 6, 1, -36, -35, + ], + [ + 91, 121, 124, 78, 51, 97, -158, -163, + 25, 15, 37, 14, 22, -0, 20, -17, + 38, 32, 45, 4, -7, -21, 0, -15, + 7, 2, 30, 7, 14, 2, -32, -68, + -2, 3, 22, 11, -12, -13, -43, -41, + 3, -14, 4, 3, -4, -24, -38, -65, + -4, 13, -1, 3, -3, -4, -43, -48, + -2, -3, 5, -2, 4, -7, -43, -51, + ], + [ + -7, 16, 3, -18, 4, 49, 19, 4, + 11, 3, 15, -17, -6, -4, -13, -21, + -30, -25, -24, -6, 9, 10, 12, 19, + -32, -37, -23, 4, -2, 16, 30, 31, + -12, -5, -21, -26, 26, 18, -5, 17, + -13, -29, -23, -8, 22, 2, 17, 16, + -21, -14, -4, 24, 8, 13, 3, -1, + -2, -9, -8, 12, 11, 20, 3, -3, + ], + [ + -1, 1, 20, 33, 17, 13, 31, 9, + -4, -10, 12, 7, -2, 1, -19, -3, + 2, 5, -57, -28, 6, 8, 3, -10, 5, -1, -42, 6, -9, -1, 3, -5, - 14, -6, -33, 5, 11, -4, 17, 15, - -5, -14, -33, 1, 1, 33, -1, 8, - 14, -27, -30, -15, 11, -11, 16, 1, - 15, 4, -24, 2, 16, 27, -6, 12, - ], - [ - 7, 5, 16, -5, 25, -9, 34, 23, - -0, -15, 10, 65, 15, -1, 1, -6, - -9, 3, -0, -13, 2, 0, -10, -5, - 18, -5, -13, -35, -3, 14, 3, 16, - 8, 14, -6, -21, -17, 11, 12, 12, - -3, -1, -26, -27, -15, 4, -5, 19, - -14, -17, -15, -27, -17, -13, 20, 13, - 3, -4, -17, -10, -9, 14, 2, 5, - ], - [ - 19, 2, -4, 17, 27, 32, 34, 7, - -6, -8, -6, 1, -2, -31, -8, -10, - 7, -1, -5, 4, -81, -25, -6, 10, - 28, 20, 18, -5, 2, -16, -5, 24, - 20, 32, 30, 4, -26, -4, -3, 24, - 8, 0, -11, -14, -17, -9, 4, 9, - 6, -10, -10, -32, -22, -18, -7, 6, - 13, 4, 5, -8, -7, 3, -5, 6, - ], - [ - 0, 16, 14, 16, 23, 22, 35, 12, - 4, -4, -2, -15, -10, -13, -16, 2, - 14, 2, -4, -14, -3, 46, -28, -18, - 11, 8, 9, 0, -7, -39, -8, 6, - 21, 21, 19, 7, -10, -13, -5, -8, - 0, 16, 4, 11, -4, -20, -31, -9, - 2, -4, 8, 1, -1, -29, -19, -6, - 11, 8, 9, 4, -5, -8, -12, -15, - ], - [ - -14, 10, 14, 10, 4, 28, 21, -19, - -5, -1, -3, -6, 10, -5, -3, -45, - 5, 5, 6, 0, -11, -14, -25, -19, + 14, -7, -33, 4, 10, -4, 16, 14, + -6, -14, -33, 1, 1, 34, -0, 8, + 14, -27, -30, -15, 11, -12, 16, 0, + 15, 4, -23, 2, 16, 28, -6, 12, + ], + [ + 7, 6, 16, -5, 25, -9, 34, 23, + -1, -15, 11, 65, 15, -1, 0, -7, + -8, 3, -0, -13, 2, 1, -10, -5, + 17, -6, -14, -35, -3, 14, 3, 14, + 8, 14, -6, -20, -17, 12, 11, 11, + -4, -1, -26, -26, -15, 4, -3, 19, + -14, -17, -15, -27, -17, -13, 21, 13, + 3, -4, -17, -9, -8, 15, 1, 5, + ], + [ + 19, 2, -4, 16, 27, 32, 34, 6, + -6, -8, -6, 1, -1, -31, -8, -10, + 7, -0, -5, 5, -81, -24, -5, 10, + 27, 20, 17, -5, 2, -16, -6, 23, + 19, 31, 29, 3, -26, -5, -4, 23, + 7, 0, -10, -14, -17, -9, 5, 8, + 6, -10, -10, -32, -22, -19, -7, 6, + 13, 4, 5, -8, -6, 4, -6, 6, + ], + [ + 1, 16, 15, 16, 22, 23, 35, 13, + 5, -3, -1, -15, -10, -11, -16, 3, + 14, 3, -4, -13, -2, 48, -26, -17, + 9, 7, 9, -0, -8, -39, -8, 6, + 19, 20, 19, 6, -11, -13, -7, -10, + -0, 15, 4, 11, -4, -21, -32, -9, + 1, -5, 7, 1, -2, -29, -20, -6, + 11, 7, 9, 4, -5, -7, -12, -14, + ], + [ + -14, 10, 14, 11, 3, 29, 21, -18, + -5, -1, -2, -5, 10, -5, -3, -44, + 5, 5, 7, 1, -10, -13, -26, -19, 18, 19, 15, 1, -3, -17, -37, -6, - 23, 25, 28, 13, 7, -16, -4, -17, - 12, 12, 18, 12, -10, -7, -19, -39, - 12, 16, 24, 12, 5, -5, -25, -17, - 13, 14, 14, 10, 2, 1, -18, -28, - ], - [ - -2, 23, 27, 32, 14, 21, 20, -9, - 4, 7, 6, -13, -1, -23, -8, 1, - 4, 8, 8, -2, -16, -32, -44, -23, - 21, 10, 20, 15, 7, -11, -12, -51, - 7, 19, 28, 16, -2, -3, -4, -29, - 3, 5, 10, 17, 3, -10, -3, -40, - 12, 5, 13, 10, 9, -9, -5, -26, - 3, -0, 16, 5, 10, 2, -13, -50, - ], - [ - 34, 2, -6, 17, 23, 54, 16, -12, - -5, 8, -15, -7, -7, 21, 26, 6, - -27, 6, -15, 8, -7, 31, 1, 26, - 34, -15, -26, -27, -0, 30, -14, 11, - -20, -14, -54, -15, 7, -7, -17, 32, - 5, -18, 8, -9, -47, -23, 3, 8, - -37, 7, -4, 4, -35, -2, -19, -2, - -36, -7, -16, 25, 31, 29, 5, 50, - ], - [ - 13, 12, 9, 18, 49, 17, 5, -0, - 5, -20, 1, 8, 19, 16, 35, 20, - 15, -15, -17, 12, 38, 27, 39, 4, - 1, -19, 10, -2, 16, 3, -8, -16, - 26, -22, 18, -0, 21, 18, -11, 19, - -19, 18, 38, -25, -22, -23, 4, 29, - -28, -40, -20, -24, -34, -4, 39, 2, - -64, -61, -29, -29, -30, -25, -24, 10, - ], - [ - 31, 17, 41, 32, 11, 26, 28, 1, - 0, -14, 48, 33, 6, 0, 16, 29, - 17, -41, 9, -2, 14, -15, -14, 19, - -7, 10, 49, 3, 20, -2, 39, 19, - -10, -14, -22, -19, 5, 16, -20, -0, - 16, -20, -13, -2, 0, -4, 27, -4, - 25, -8, -70, -2, 3, -0, 22, -13, - -46, -95, -79, -38, -14, 3, -14, -34, - ], - [ - 27, 11, -4, 59, 27, 33, 34, 35, - 14, 7, 7, 27, 24, 24, 15, 4, - -6, 14, 20, -1, 42, 22, -3, -9, - -8, -2, 11, 54, 1, 13, 21, -26, - -5, -3, -3, -8, 16, 23, 7, -23, - 25, 1, -2, 78, -21, -3, 6, 19, - 1, -1, -5, -66, -18, -33, -26, -24, - -16, -49, -69, -59, -61, -64, -38, -67, - ], - [ - -1, 14, 11, 14, 36, 33, 15, 8, - 4, 17, -3, 4, 14, 36, 1, 27, - 31, 36, -10, -4, 19, 2, -2, -1, - 18, 1, 12, -13, -13, 10, 15, 16, - -30, -24, -17, 11, 36, 13, -10, -6, - 32, 9, -7, -12, 14, -7, 4, 9, - 11, 15, 2, -26, -14, -57, -39, -17, - 1, -25, -18, -37, -45, -38, -45, -28, - ], - [ - -16, 14, 22, 38, 10, 41, 32, 11, - -2, -29, 37, 20, 0, 10, 11, 37, - 6, -16, 20, -27, 16, 16, 7, 23, - 27, 19, 17, -9, -24, -1, 21, -13, - 12, -13, -1, -18, -19, -25, -2, -22, - -3, 16, -8, -1, 14, 56, 18, 9, - -21, 20, -21, -24, -8, 10, 24, -26, - 9, -17, -23, -32, -48, -54, -50, -71, - ], - [ - -23, -4, 28, 11, 36, 14, 20, 32, - 9, -6, -10, 48, 2, 4, 11, 15, - 8, -6, 17, 29, 32, -23, -6, -10, - 16, -4, 7, 12, -10, -29, 10, -1, - -6, 0, -19, -6, -17, 14, 59, -11, - 5, 44, 30, 4, -14, -39, -14, -25, - -11, 7, 25, -4, -8, -18, -75, -24, - -16, 17, -8, -32, -29, -4, -27, -30, - ], - [ - -1, 5, -1, 21, 7, -11, 44, 23, - 8, 22, 4, 33, -3, -5, 5, 27, - 13, -3, 25, 20, -15, -5, 12, 6, - -2, -9, -24, 14, -12, -62, 9, -19, - 4, 5, -8, -16, -9, -5, -19, 19, - -26, 7, -20, 6, 12, 3, -7, 31, - -10, 1, -1, 21, -36, 11, -8, -68, - -10, 16, 17, 1, 36, 28, -2, -98, + 22, 25, 28, 13, 7, -16, -4, -17, + 11, 12, 18, 11, -10, -7, -18, -39, + 11, 15, 23, 12, 4, -6, -26, -17, + 13, 13, 14, 10, 2, 2, -18, -28, + ], + [ + -2, 22, 27, 32, 14, 21, 20, -9, + 5, 7, 6, -13, -1, -23, -8, 1, + 4, 8, 8, -1, -15, -31, -43, -21, + 21, 9, 20, 16, 7, -10, -12, -51, + 7, 18, 27, 16, -2, -3, -4, -29, + 2, 4, 10, 17, 3, -10, -4, -40, + 12, 5, 12, 9, 9, -10, -6, -26, + 4, -1, 16, 5, 10, 2, -14, -49, + ], + [ + 33, 2, -7, 16, 24, 53, 14, -12, + -8, 7, -15, -6, -7, 21, 23, 5, + -32, 5, -15, 7, -10, 29, 0, 26, + 35, -14, -25, -26, 3, 33, -16, 13, + -19, -15, -53, -13, 8, -6, -16, 32, + 8, -18, 6, -9, -46, -19, 1, 6, + -36, 9, -5, 3, -35, -3, -17, -1, + -35, -6, -16, 25, 31, 28, 3, 49, + ], + [ + 14, 15, 11, 18, 48, 18, 5, -1, + 7, -23, 2, 8, 18, 16, 38, 19, + 15, -17, -17, 12, 38, 28, 39, 3, + 1, -18, 12, -2, 14, 1, -10, -17, + 27, -25, 18, 1, 20, 17, -12, 16, + -19, 15, 37, -24, -21, -25, 5, 28, + -27, -41, -19, -24, -33, -4, 38, 1, + -61, -65, -26, -26, -28, -24, -22, 9, + ], + [ + 31, 19, 41, 33, 11, 26, 28, 0, + 0, -13, 47, 35, 6, 1, 15, 29, + 18, -42, 6, -2, 11, -17, -16, 19, + -7, 8, 47, 3, 21, -3, 39, 18, + -11, -15, -25, -16, 6, 17, -20, 0, + 16, -18, -18, -2, 0, -2, 28, -4, + 22, -7, -68, -1, 5, -2, 21, -13, + -44, -94, -78, -37, -15, 3, -12, -34, + ], + [ + 28, 11, -3, 58, 27, 32, 36, 35, + 14, 8, 7, 24, 25, 24, 16, 5, + -6, 15, 20, -1, 42, 21, -4, -10, + -9, -5, 9, 52, 1, 13, 21, -27, + -6, -2, -2, -14, 18, 22, 6, -24, + 26, 0, -1, 74, -21, -1, 7, 20, + 3, -1, -6, -65, -19, -30, -25, -24, + -18, -46, -66, -56, -61, -63, -36, -68, + ], + [ + -1, 16, 11, 16, 34, 34, 16, 8, + 3, 19, -4, 6, 15, 36, 3, 25, + 31, 36, -12, -5, 16, 1, -2, -3, + 17, -1, 11, -12, -16, 9, 15, 15, + -30, -25, -15, 10, 30, 13, -11, -7, + 34, 8, -7, -11, 13, -9, 6, 10, + 12, 16, 3, -24, -12, -57, -37, -16, + 2, -24, -18, -37, -45, -37, -44, -28, + ], + [ + -16, 20, 23, 40, 10, 40, 34, 12, + -4, -27, 36, 20, 1, 8, 11, 38, + 5, -17, 19, -28, 16, 16, 8, 22, + 25, 17, 16, -10, -23, -4, 21, -11, + 11, -13, -2, -18, -20, -28, -2, -21, + -4, 15, -10, -0, 11, 54, 20, 8, + -21, 21, -20, -23, -7, 10, 26, -25, + 10, -14, -21, -35, -47, -54, -46, -72, + ], + [ + -22, -2, 29, 11, 36, 15, 21, 34, + 7, -4, -9, 48, 2, 4, 10, 15, + 6, -8, 17, 27, 31, -22, -8, -10, + 15, -5, 6, 12, -11, -29, 10, -2, + -6, 0, -20, -6, -18, 14, 60, -7, + 6, 43, 30, 2, -15, -41, -18, -27, + -9, 8, 22, -4, -8, -17, -74, -22, + -14, 19, -8, -33, -28, -2, -24, -28, + ], + [ + -0, 5, -2, 22, 6, -11, 45, 23, + 7, 21, 4, 34, -4, -6, 2, 26, + 10, -3, 24, 17, -16, -5, 10, 4, + -2, -9, -25, 12, -13, -61, 8, -20, + 5, 5, -7, -15, -6, -4, -18, 17, + -25, 6, -20, 7, 12, 5, -7, 28, + -11, 2, -2, 23, -37, 12, -7, -61, + -10, 17, 18, 3, 35, 27, -0, -92, ], ]; internal static readonly short[][] MiddleGameEnemyQueenTable = [ [ - -57, -60, 80, 47, -24, -77, -97, -5, - -4, -46, 40, 34, 40, 1, -23, -28, - 66, 110, 117, -11, -5, 21, -48, -18, - 50, 23, -37, 38, -50, -55, -11, 7, - 11, 23, 12, -20, 45, -21, -24, -45, - 35, -12, 28, 27, -12, -15, 2, -49, - -28, 33, 17, -11, 1, 18, 14, -7, - -7, -39, -26, 1, 16, 28, 22, -33, - ], - [ - -151, -145, -129, 73, 42, 17, 44, -2, - -19, -123, -1, 6, -52, -17, -49, -58, - 12, 54, 54, 47, -20, -47, -13, 5, - 0, 56, 14, 2, -30, -22, -8, -5, - 0, 21, 18, 15, 17, 6, -16, -2, - 9, 25, 19, 15, 17, 16, 18, 3, - 29, 34, 37, 17, 25, 37, 24, -7, - 5, 7, 13, 22, 21, 31, -10, 1, - ], - [ - 166, -118, -175, -171, -61, 60, -1, -84, - 55, -117, -98, -116, -24, -10, -28, -26, - 50, 66, 124, -7, 100, -17, 1, -23, - 13, 13, 47, -13, -27, -27, -34, 14, - 31, 30, 6, 24, 16, 15, -9, -16, - 12, 25, 27, 20, 13, 12, 16, 2, - 44, 27, 30, 10, 27, 29, 13, -20, - 11, -9, 16, 19, 23, 29, -0, -3, - ], - [ - 21, 85, -129, -105, -75, 114, 5, 48, - 30, 3, -97, -109, -122, 8, 44, -49, - 30, 22, 27, 155, 17, 120, -16, 12, - -5, -7, 29, 15, -33, 18, -26, 5, - 12, -45, 24, -2, 33, 7, 26, -35, - 16, 39, -29, 4, -16, 7, -21, -7, - 5, -19, 2, -0, 1, 9, -17, -9, - 10, 12, -26, 10, -2, 5, -17, -15, - ], - [ - -6, 45, 70, -173, -173, -173, 75, 28, - -5, -5, 8, -134, -173, -202, 22, 10, - 4, 13, 36, 3, 69, 4, 104, 17, - 5, 11, 4, -12, 22, -7, 12, 23, - 11, -8, -5, 14, 30, 15, 2, 0, - 6, 22, 4, 27, 22, 16, 26, 17, - -4, 7, 26, 29, 41, 33, -3, 26, - -19, 15, 17, 31, 39, 26, 8, 7, - ], - [ - 80, -27, 17, 21, -145, -152, -130, 104, - -17, -3, 29, -16, -106, -100, -135, 73, - -20, -48, -2, 63, 28, 124, 84, 104, - -2, -2, -22, 17, 14, 20, 52, 25, - -11, 22, -25, 40, 1, -18, 15, 30, - -24, -9, -0, 13, 3, 22, 29, 48, - -41, -1, 9, 10, 9, 19, 26, -28, - -18, -11, -2, 17, 1, -25, -31, 3, - ], - [ - -123, -27, -39, -16, 29, -164, -214, -123, - -39, -27, -47, -43, -54, 72, -146, 54, - -14, -11, -8, -9, 52, 47, 49, 40, - -16, 1, -7, 5, 1, 10, 27, 11, - 1, 8, 5, 24, 12, 26, 27, 24, - 3, 18, 17, 17, 22, 22, 37, 38, - 8, 9, 25, 30, 28, 30, 45, 70, - 12, 14, 22, 34, 30, 32, 3, 37, - ], - [ - -91, -2, -24, 24, 56, 79, -153, -153, - -55, -15, -46, -22, -3, -7, -121, 55, - -35, 1, -8, -3, 2, 82, 59, 36, - -34, -19, 8, -0, -0, 21, 1, 31, - -9, -18, -4, 22, 15, 34, 22, 30, - -4, -3, 4, 10, 14, 9, 30, 42, - -12, -12, 5, 12, 13, 16, 34, 55, - -10, -9, 5, 17, 16, 0, -5, 19, - ], - [ - 43, -18, 74, 92, 70, -19, -33, -113, - 51, 5, 75, -49, 12, 28, 14, -43, - -105, -112, -13, 51, -23, -63, 5, -68, - 21, -4, 29, 29, -6, -7, -63, -21, - -7, 106, 18, -35, 16, -26, -2, -38, - 57, 33, -1, 11, -9, -36, -6, -61, - 82, -62, 40, 2, 6, 4, 15, -41, - 7, 43, 8, 5, 31, 13, 0, -10, - ], - [ - 46, 33, 63, 119, -50, 2, 1, -21, - 67, 146, -52, -18, 35, 30, 15, -61, - 102, -107, -111, -109, -19, -48, -11, -55, - 104, -47, 18, -3, 74, -33, -56, -28, - 16, 112, -10, 63, 2, 27, -53, -27, - -13, 1, 20, 31, -23, -10, -1, -48, - -1, 19, -30, -9, -11, 14, 3, -53, - 39, -20, -11, 1, 9, 4, -21, -46, - ], - [ - -7, -2, 31, 27, 145, 34, 49, 12, - -16, -2, 37, -62, 53, -29, -17, -18, - 15, 76, -106, -151, -112, -2, 21, -7, - 13, 17, 13, 86, -56, 28, 42, -31, - -9, 28, 41, 33, 7, -55, -4, -17, - 13, -10, 8, 26, -4, -6, -31, -21, - -37, -11, 9, -15, 28, 1, -33, -107, - 41, 10, 17, 20, -7, -6, 31, -24, - ], - [ - -73, -26, 157, 93, -12, 117, 94, 25, - 24, -35, 13, 47, 3, 80, 56, -9, - 20, 28, 15, -170, -148, -144, 55, 59, - 30, -27, 36, -15, 97, -49, 68, -14, - -70, 47, -22, 32, 28, 6, -42, 9, - 10, -27, -19, 2, -20, 1, 9, 7, - 4, -64, -15, 5, 21, 25, -19, -31, - -2, -52, -28, -12, -60, -93, -3, -20, - ], - [ - -42, -11, 14, -16, 133, 141, 125, 98, - -21, 27, 6, 18, 73, 107, 103, 36, - -24, -50, 14, 16, -142, -155, -140, 94, - -47, -25, -36, 46, -16, 41, 45, 76, - -48, -48, -9, 25, 17, 15, 10, -31, - -48, -7, -15, -10, 8, -6, -9, -37, - 16, -31, -6, -4, -1, -16, -0, -9, - -59, -38, -37, 15, -29, -38, -39, -18, - ], - [ - -42, -43, -78, -14, -49, 121, 120, 129, - -5, -25, -45, -11, 23, 146, 73, 255, - -32, -24, -37, -16, 12, -9, -123, -166, - -13, -16, -19, 0, 81, 54, -13, 23, - -27, -26, -42, 30, -3, -7, 46, 11, - -25, -24, 0, -10, 1, 3, 29, 17, - -51, -1, -9, 5, -2, 7, -16, -13, - -1, -15, -3, 7, 4, -32, -35, -74, - ], - [ - -97, -100, -81, -47, 14, -12, 94, 31, - -40, -52, -24, -11, 12, 24, 127, 50, - -41, -20, -37, -28, 15, 104, -3, -73, - -51, 15, -3, -7, -3, 127, 51, 6, - -22, -5, -11, 3, 21, -0, 9, 20, - -22, -4, -8, 11, 4, 15, -5, 38, - -16, -23, 4, 9, 14, 10, 41, 21, - -41, -5, -7, 24, -10, 10, -17, 2, - ], - [ - -15, -18, 35, -13, -51, -94, 8, -72, - 4, -34, 68, 23, 54, -63, 36, -15, - -30, 27, 126, 68, 21, -72, -11, -41, - 6, -17, 106, 58, 104, -6, -12, -77, - 67, -15, 164, 13, -78, -36, 43, -33, - -42, -2, 49, -20, 25, 92, 69, -38, - 50, -9, -17, -84, -101, -92, -69, -19, - -40, 102, 16, -33, -49, -34, 24, -8, - ], - [ - 0, 69, 16, 46, -54, -85, -14, -91, - 81, -43, -35, 9, 46, -20, -7, -15, - 47, 26, 1, 4, 43, 8, -102, -16, - 16, -16, -0, -15, 37, -4, -37, 43, - 61, 32, -31, -13, 14, 31, 12, 29, - 29, -19, 30, -43, 38, 19, 20, -9, - -19, 2, 33, 33, 66, -19, -6, -5, - -20, -8, -21, -37, -25, -66, -50, 7, - ], - [ - -63, -9, 50, 52, -35, -43, -65, -71, - -4, 25, 33, 85, 19, -27, 2, -33, - 66, -46, 36, 58, 29, -2, -1, 15, - -17, -2, -7, -38, 12, 19, 0, -34, - 3, -9, 7, -48, 42, 35, 30, 40, - -30, -7, -5, -14, 32, 12, -27, -66, - -7, 31, 13, -1, 1, -43, -18, -11, - 70, -1, 2, -35, -29, -21, 31, 20, - ], - [ - 3, 10, -51, 6, -40, -31, -53, -45, - -59, 16, 2, 8, 4, 38, 12, 59, - 42, -11, 13, 53, 5, 2, 66, -27, - -24, 22, 37, 7, 9, -4, -45, -8, - -15, 23, -4, -3, -19, 14, -9, -35, - -45, 55, -46, -7, -28, 41, 4, 62, - -33, 19, 60, 28, 4, -28, 14, 5, - -38, -30, 25, 2, 12, -17, 16, -44, - ], - [ - -14, -48, 1, 23, 19, 14, 32, -34, - -13, -28, 7, 5, 44, 40, 80, 17, - -44, -34, -24, 6, 33, -10, -56, 20, - -55, -50, -37, 28, 46, -6, 14, 29, - -11, 8, 9, -5, 17, -45, 50, 22, - 20, -46, 26, -3, -20, 15, 54, 58, - 7, -18, 16, -19, -3, -81, 27, -4, - -38, -50, 8, 15, 10, -6, 2, -19, - ], - [ - -49, -78, 18, 10, 63, -20, -25, -59, - -49, -7, -16, 42, 62, 26, 17, 45, - -30, 20, -14, -13, 29, -31, 87, 30, - 9, 53, 9, 43, -30, -7, -29, 24, - -13, 8, -40, 11, -21, -8, -6, -35, - -15, 5, 75, -1, -53, -4, -19, 56, - 1, 15, -26, 28, 30, 9, 13, 37, - -28, -58, 5, 11, -18, -0, -50, -40, - ], - [ - -64, -62, -58, -19, -12, 12, 57, 12, - -49, 17, 0, 51, -20, 7, -23, 74, - -45, -25, -4, 19, -14, 49, 27, 104, - 18, 16, 11, -34, 17, -37, -15, 25, - -1, -53, 19, -11, 19, -29, 14, 9, - 10, -2, -2, 23, 34, -52, -10, -24, - -1, -26, 66, -10, 7, 38, -4, -45, - -2, 15, -16, 54, -3, -23, -22, -7, - ], - [ - -21, -62, -48, 29, -6, -64, -20, -39, - -4, 12, 16, -40, -54, 23, -7, 18, - 12, 13, 2, -39, -23, 71, -33, -14, - -34, 14, -21, -20, 52, 46, -8, 27, - 6, -8, -9, -56, -7, 20, 5, 11, - -30, -16, -62, 42, 24, 56, -8, -6, - -38, 48, -31, 55, 15, 46, 12, -6, - 9, -8, 36, 24, 52, 13, 19, 13, + -57, -60, 79, 46, -19, -80, -97, -5, + -5, -46, 40, 33, 37, 2, -24, -29, + 66, 111, 118, -13, -7, 20, -50, -18, + 52, 23, -37, 40, -51, -54, -10, 7, + 11, 23, 11, -20, 47, -21, -23, -46, + 35, -12, 26, 28, -12, -15, 1, -49, + -27, 34, 16, -11, 1, 19, 15, -9, + -6, -39, -26, -0, 16, 29, 22, -33, + ], + [ + -151, -144, -130, 72, 40, 15, 43, -4, + -19, -123, -2, 4, -53, -17, -50, -59, + 13, 54, 54, 47, -21, -48, -13, 5, + 0, 56, 14, 2, -30, -22, -7, -5, + 1, 20, 18, 15, 18, 5, -17, -2, + 9, 26, 19, 15, 16, 16, 18, 4, + 29, 34, 37, 17, 26, 38, 24, -7, + 5, 7, 13, 22, 22, 32, -9, 1, + ], + [ + 168, -117, -174, -171, -65, 61, -5, -86, + 54, -116, -97, -115, -26, -8, -30, -28, + 51, 65, 124, -7, 98, -18, 0, -23, + 13, 13, 47, -13, -28, -26, -33, 14, + 31, 31, 6, 24, 17, 15, -10, -16, + 12, 26, 28, 20, 12, 13, 16, 3, + 44, 27, 30, 10, 27, 30, 13, -19, + 11, -8, 16, 19, 24, 29, 1, -2, + ], + [ + 20, 79, -128, -104, -74, 115, 2, 50, + 28, 2, -96, -108, -121, 8, 41, -50, + 30, 18, 27, 153, 16, 118, -15, 11, + -5, -7, 30, 15, -32, 20, -28, 6, + 12, -43, 25, -2, 34, 8, 27, -34, + 17, 39, -28, 4, -15, 7, -20, -7, + 6, -20, 4, -0, 2, 10, -17, -8, + 11, 13, -26, 10, -2, 6, -17, -15, + ], + [ + -6, 44, 67, -171, -171, -171, 69, 27, + -7, -6, 6, -134, -172, -200, 20, 7, + 3, 13, 36, 3, 69, 4, 101, 17, + 5, 12, 4, -13, 22, -7, 13, 23, + 12, -8, -4, 14, 31, 15, 2, 0, + 6, 23, 5, 27, 22, 16, 26, 18, + -4, 7, 26, 29, 41, 34, -3, 27, + -18, 16, 17, 32, 40, 27, 10, 8, + ], + [ + 78, -30, 16, 20, -143, -151, -129, 106, + -20, -5, 26, -16, -104, -99, -133, 73, + -23, -51, -3, 61, 29, 119, 83, 105, + -4, -2, -23, 17, 15, 20, 50, 26, + -11, 25, -23, 39, 2, -17, 16, 30, + -24, -8, -0, 14, 3, 23, 29, 49, + -40, -2, 9, 10, 10, 20, 26, -28, + -17, -11, -2, 17, 1, -24, -30, 3, + ], + [ + -123, -27, -40, -17, 29, -165, -213, -122, + -38, -28, -47, -44, -56, 73, -145, 53, + -13, -11, -8, -10, 52, 45, 49, 40, + -16, 1, -7, 3, 1, 9, 27, 11, + 1, 8, 6, 24, 13, 25, 26, 24, + 3, 19, 18, 18, 22, 23, 37, 39, + 7, 9, 25, 30, 28, 31, 45, 70, + 12, 15, 22, 34, 30, 33, 5, 38, + ], + [ + -93, -1, -26, 23, 54, 77, -152, -152, + -57, -16, -46, -24, -4, -6, -120, 53, + -35, 0, -9, -3, 2, 80, 57, 36, + -34, -19, 7, -1, -1, 21, 2, 31, + -9, -18, -4, 23, 15, 34, 21, 30, + -3, -2, 4, 10, 14, 10, 31, 43, + -12, -12, 5, 12, 14, 17, 35, 56, + -9, -9, 5, 17, 17, 1, -3, 19, + ], + [ + 46, -17, 74, 91, 69, -15, -34, -111, + 52, 5, 74, -52, 12, 27, 13, -43, + -105, -111, -11, 51, -25, -65, 3, -67, + 22, -3, 30, 29, -7, -8, -63, -22, + -8, 105, 19, -35, 16, -25, -3, -39, + 58, 31, -1, 10, -9, -36, -6, -61, + 82, -63, 39, 2, 6, 5, 16, -41, + 7, 42, 7, 5, 31, 13, 3, -10, + ], + [ + 50, 36, 62, 119, -51, 1, 5, -22, + 69, 146, -53, -17, 32, 30, 14, -61, + 102, -106, -112, -108, -20, -48, -12, -56, + 107, -48, 16, -3, 73, -32, -55, -28, + 15, 114, -9, 62, 3, 28, -54, -26, + -15, 0, 22, 30, -23, -10, 0, -47, + 0, 19, -30, -9, -11, 13, 3, -52, + 38, -21, -13, -1, 8, 3, -21, -47, + ], + [ + -4, -0, 30, 28, 142, 33, 53, 13, + -16, 0, 42, -62, 51, -28, -19, -17, + 15, 73, -104, -149, -111, -5, 18, -10, + 13, 21, 11, 87, -56, 28, 43, -31, + -10, 25, 42, 34, 8, -56, -4, -15, + 14, -10, 8, 26, -6, -6, -30, -18, + -39, -11, 8, -15, 29, 1, -33, -108, + 41, 8, 15, 20, -6, -7, 32, -26, + ], + [ + -74, -26, 155, 89, -13, 121, 92, 27, + 25, -34, 13, 47, 3, 77, 56, -10, + 19, 30, 14, -169, -146, -143, 54, 57, + 30, -28, 37, -15, 96, -48, 68, -13, + -70, 46, -22, 32, 28, 5, -42, 9, + 10, -27, -18, 2, -20, 1, 9, 7, + 5, -64, -15, 4, 21, 25, -18, -30, + -2, -52, -29, -13, -59, -91, -5, -20, + ], + [ + -42, -11, 15, -14, 134, 141, 129, 97, + -22, 29, 5, 16, 74, 105, 103, 36, + -24, -50, 14, 15, -143, -154, -139, 93, + -47, -25, -34, 48, -17, 40, 43, 77, + -48, -48, -9, 24, 18, 15, 10, -31, + -48, -7, -16, -11, 7, -6, -9, -37, + 16, -32, -7, -4, -1, -16, -0, -7, + -61, -39, -37, 14, -29, -38, -39, -18, + ], + [ + -42, -43, -77, -13, -47, 119, 120, 130, + -6, -25, -45, -12, 21, 144, 74, 254, + -33, -25, -37, -16, 12, -8, -122, -165, + -14, -16, -20, -1, 80, 53, -13, 23, + -27, -25, -42, 30, -3, -7, 46, 10, + -25, -23, 0, -10, -0, 4, 28, 18, + -52, -2, -9, 5, -1, 8, -16, -14, + -1, -14, -4, 7, 4, -32, -33, -75, + ], + [ + -95, -99, -79, -48, 16, -9, 97, 30, + -39, -53, -24, -12, 10, 25, 124, 52, + -40, -19, -37, -29, 14, 103, -4, -73, + -52, 14, -3, -9, -4, 126, 51, 6, + -22, -5, -11, 3, 22, -1, 8, 20, + -22, -4, -8, 12, 3, 15, -5, 38, + -17, -23, 4, 9, 15, 11, 41, 21, + -41, -5, -7, 24, -10, 11, -16, 2, + ], + [ + -18, -14, 37, -17, -52, -96, 14, -76, + 2, -34, 73, 25, 55, -63, 33, -14, + -27, 26, 127, 62, 29, -66, -8, -47, + 8, -14, 101, 61, 101, -5, -20, -74, + 63, -11, 165, 13, -82, -37, 51, -33, + -39, -1, 46, -24, 33, 90, 72, -44, + 53, -11, -12, -82, -109, -88, -72, -25, + -37, 96, 18, -30, -54, -33, 26, -10, + ], + [ + -1, 68, 14, 53, -55, -88, -19, -89, + 84, -42, -38, 15, 42, -20, -6, -15, + 47, 25, -3, 2, 53, 14, -100, -16, + 16, -18, -3, -6, 33, -3, -41, 39, + 60, 31, -32, -16, 12, 32, 11, 29, + 32, -18, 28, -43, 38, 21, 19, -11, + -20, 2, 37, 33, 64, -14, -3, -5, + -22, -7, -25, -40, -25, -66, -49, 6, + ], + [ + -70, -8, 50, 56, -34, -53, -60, -74, + 2, 26, 39, 84, 27, -22, 0, -30, + 70, -44, 43, 55, 30, 2, -4, 15, + -18, 1, -5, -34, 16, 19, 3, -39, + 2, -20, 6, -46, 41, 37, 28, 36, + -34, -6, -8, -17, 30, 11, -25, -64, + -5, 33, 10, -3, 2, -46, -17, -15, + 70, 1, -1, -35, -30, -23, 30, 14, + ], + [ + -4, 8, -47, 6, -46, -27, -54, -48, + -60, 19, 6, 6, 7, 36, 20, 59, + 42, -9, 12, 55, 17, 7, 64, -32, + -28, 21, 42, 9, 10, 1, -49, -10, + -8, 21, -7, -4, -20, 15, -9, -39, + -45, 56, -45, -7, -28, 37, 8, 62, + -32, 21, 56, 27, 0, -31, 14, 9, + -41, -29, 25, 4, 10, -12, 7, -46, + ], + [ + -21, -46, 3, 24, 21, 20, 38, -35, + -15, -23, 8, 13, 44, 33, 89, 13, + -51, -31, -16, 6, 37, -12, -56, 15, + -52, -56, -36, 25, 46, -7, 19, 28, + -14, 11, 8, -5, 15, -43, 55, 24, + 19, -45, 28, -5, -22, 15, 52, 53, + 5, -22, 15, -22, -5, -79, 20, -9, + -38, -52, 11, 14, 7, 0, -1, -16, + ], + [ + -51, -79, 15, 13, 59, -27, -26, -59, + -53, -5, -18, 43, 63, 24, 14, 47, + -30, 20, -14, -12, 26, -27, 83, 29, + 10, 52, 7, 47, -27, -6, -28, 22, + -10, 10, -39, 9, -17, -7, -1, -32, + -20, 1, 75, -1, -52, -6, -18, 53, + 2, 14, -24, 27, 33, 12, 11, 32, + -27, -57, 3, 14, -12, 1, -48, -40, + ], + [ + -61, -62, -62, -16, -12, 9, 57, 4, + -47, 16, 4, 51, -17, 16, -18, 81, + -45, -25, -1, 24, -13, 45, 31, 104, + 17, 14, 17, -32, 14, -41, -16, 23, + -1, -54, 14, -7, 20, -30, 11, 9, + 10, -4, -0, 23, 34, -52, -12, -26, + -3, -25, 61, -13, 6, 37, -3, -45, + -4, 16, -17, 50, -3, -26, -22, -4, + ], + [ + -23, -58, -47, 35, -7, -59, -23, -40, + -1, 11, 17, -36, -51, 20, -7, 16, + 9, 12, 5, -36, -28, 69, -13, -13, + -35, 12, -22, -20, 51, 41, -8, 25, + 2, -12, -10, -55, -4, 23, 8, 9, + -29, -17, -64, 44, 26, 49, -9, -8, + -38, 51, -31, 54, 17, 41, 13, -8, + 7, -5, 35, 21, 49, 9, 24, 12, ], ]; internal static readonly short[][] EndGameEnemyQueenTable = [ [ - -122, -125, -38, 55, 59, 72, 131, 45, - -106, -110, -12, 33, 17, 34, 47, 26, - -54, 3, -18, 60, 43, 7, 49, 8, - -9, 20, 99, 24, 52, 101, 7, 11, - 22, -28, 0, 69, 2, 35, 7, 10, - -68, 25, -33, -18, 43, 32, -5, 54, - 22, -69, -44, 3, -9, -20, -86, -49, - -16, 26, -80, -19, -15, -64, -58, -77, - ], - [ - -224, -221, -204, 29, 50, 11, 14, 54, - -181, -209, -133, 44, 113, 51, 87, 100, - 20, 12, 18, 56, 89, 92, 56, 1, - 65, 12, 32, 47, 57, 57, 23, 1, - 49, -10, 13, 5, 55, 42, 31, 15, - 37, 10, 5, 40, -9, 26, -21, -11, - -40, -38, -34, -24, 18, -34, -34, 9, - 81, -35, -43, -11, -7, -41, -25, -35, - ], - [ - -174, -216, -240, -239, 5, 21, 89, 183, - 54, -237, -213, -241, 57, 26, 33, 4, - 65, 34, 59, 62, 21, 43, 18, 82, - 27, 59, 20, 123, 62, 153, 73, -18, - -19, 26, 61, 40, 41, 20, 62, 24, - 4, -7, 11, 14, 39, 23, -18, 17, - -45, -43, -10, 1, -4, 6, -5, 14, - -17, 9, -5, -16, -20, -6, 12, -6, - ], - [ - 67, 1, -105, -92, -70, 109, 78, 76, - -16, 15, -88, -94, -98, 22, -26, 66, - -13, 108, -11, -59, 57, 92, 35, 1, - 30, 13, -13, 44, 40, -30, 30, 44, - -5, 91, -9, -20, 33, -38, -88, 71, - 3, -27, 27, 22, 39, -46, 72, -44, - -37, -7, 9, 37, 6, -62, 12, -2, - -46, -46, 36, -5, -58, -52, -79, -1, - ], - [ - 95, 145, -49, -210, -210, -210, 85, 103, - 33, 31, 31, -192, -210, -216, 40, 25, - 25, 9, 70, 60, 47, 39, 27, 59, - -8, 50, 23, 29, 113, 42, 35, 60, - 37, 59, 58, 15, 1, 32, 3, 24, - 38, 36, 6, -12, 6, -6, 28, 8, - 15, 26, -51, -22, -41, -10, 35, -47, - 22, -13, -28, -11, -75, -1, -68, -33, - ], - [ - 29, 66, 55, 39, -185, -192, -183, 2, - -0, -12, 2, 72, -176, -162, -180, 5, - 55, 47, 13, 49, 11, 11, -10, -17, - 31, 9, 144, 40, 47, 59, 32, 9, - -9, 40, 40, 17, 58, 41, 21, 11, - 24, 25, 54, 42, 22, 8, -20, -28, - -21, 7, 15, -3, 1, -35, -29, 146, - -18, 1, 9, 6, -58, -13, 1, -66, - ], - [ - 239, 137, 142, 127, 57, -417, -446, -417, - 62, 73, 104, 96, 115, -308, -409, -329, - 55, 71, 82, 72, 100, 40, 51, 17, - 58, 50, 54, 72, 56, 30, 42, 35, - 26, 40, 48, 59, 55, 35, 13, 11, - 16, 33, 35, 36, 51, 23, 15, -6, - 19, 7, 4, 10, 13, -6, -33, -69, - -30, -16, -2, 13, -5, -31, -21, -55, - ], - [ - 104, 28, 79, 75, 48, -47, -281, -281, - 44, 20, 72, 76, 64, 94, -254, -236, - 34, 2, 50, 58, 51, 138, 20, -13, - 40, 61, 19, 41, 55, 27, 82, 12, - -24, 53, 14, 44, 52, 12, -7, -18, - -8, 14, 27, 26, 21, 26, -22, -48, - 32, -9, -16, -11, 7, -3, -47, -127, - -10, -23, -34, -17, -24, -18, -33, -109, - ], - [ - -2, -23, 8, -51, -10, 60, 45, 68, - -24, -15, -18, 76, 17, 28, 28, 45, - -150, -160, -68, -8, 24, 40, -10, 39, - -27, 55, -29, 4, 19, 2, 62, 20, - 5, -46, -45, 15, 27, 42, 52, 5, - -54, -43, 1, -32, 32, 67, -26, 102, - -60, 69, -48, -28, 22, 51, 26, 37, - -61, -106, -38, -27, -56, 30, -37, 78, - ], - [ - 6, -22, -22, -1, 76, 14, 14, -6, - -10, -40, -36, 51, 3, 25, 21, 62, - -75, -152, -138, -141, -6, 14, 22, 24, - -3, -4, 10, -48, -7, 10, 51, -3, - 7, -97, 73, -73, 16, 44, 20, 4, - 32, 20, -15, -12, 26, 23, -3, 57, - -10, -24, 52, 21, 47, 21, -14, 51, - -55, -29, 53, 22, -26, -8, 27, 65, - ], - [ - 44, 62, 10, 55, -42, 38, 21, 23, - 45, 36, 40, -97, 29, 69, 81, 37, - -22, -67, -137, -173, -155, -13, -2, 17, - -9, 5, -47, -59, -8, 23, -20, 51, - 20, -26, -65, 52, -58, 34, 56, 30, - -13, 8, -7, 27, 9, 6, 52, 27, - -2, 38, -1, 86, -7, 40, 7, 85, - -52, -42, -108, 64, -61, -1, -85, 54, - ], - [ - 36, 32, -62, -2, 87, 20, -38, 9, - 16, 66, 14, 30, 34, -9, 17, 41, - -38, -13, -13, -207, -178, -175, 2, -25, - -5, 19, -14, -61, -40, 10, 34, 4, - 46, -4, -3, -49, 34, -34, 67, 59, - -15, 45, 28, 2, 32, 10, -54, 23, - -10, 30, 7, -2, 2, 21, 3, 27, - -8, 50, 23, 14, 20, 76, -25, -5, - ], - [ - 36, 11, 7, 39, -60, 80, -13, -47, - 33, 32, 30, 16, -56, 4, 12, 11, - 4, 65, 4, -16, -197, -197, -195, -5, - 53, 14, 21, 11, -38, -40, -55, 33, - 48, 48, 30, 4, -50, 24, -40, 43, - 30, 20, 47, 18, 2, -0, 30, 103, - -28, 8, 7, 10, -6, 17, 9, -15, - 10, 3, 32, 3, 5, 9, -10, -10, - ], - [ - 8, 11, 55, 11, 20, -21, 18, -13, - 1, 53, 67, 53, 12, -16, 17, -116, - 23, 42, 53, 5, 32, -133, -193, -245, - 21, 28, 29, 3, -1, -86, 14, -42, - 28, 45, 53, 33, 23, -26, -31, -17, - 17, 34, 35, 35, 24, 7, -25, -18, - 34, 14, 8, 1, 18, -8, 35, 5, - -43, -13, -12, -2, -11, 7, -10, 48, - ], - [ - 53, 15, 59, 23, 15, 40, -10, 31, - 21, 51, 53, 59, 47, 9, -37, -45, - 20, 5, 54, 45, 21, -9, -83, -223, - 21, -13, 23, 38, 34, 9, -54, 10, - -9, 22, 22, 32, 40, 22, -32, -42, - -18, 14, 24, 26, 12, 11, 4, -39, - 8, -9, 13, -16, -28, -7, -51, -53, - -20, -39, -7, -33, -2, -43, -31, -52, - ], - [ - -19, 11, 55, 27, 48, 28, -50, 21, - -27, -19, 22, 38, 5, 72, 1, 19, - -23, -77, -18, -28, 48, 6, 24, -2, - -4, -20, -68, 9, -65, -2, -11, -32, - 57, -0, -68, 13, 47, 36, 15, 28, - 3, -38, 9, 10, -20, -40, 39, 4, - 10, -94, 20, -6, 41, -22, 4, -42, - -4, -20, 31, 1, 33, 12, 13, -39, - ], - [ - 3, 114, 8, 68, -40, 13, -13, -27, - -10, 23, 1, 6, 34, 58, 44, -36, - -14, 77, 19, -6, 55, 13, 12, -6, - -63, -23, -2, -38, -12, -2, -12, 56, - -16, 69, -24, 0, -8, 10, 47, 27, - 45, -15, 60, -59, 2, 49, 35, -39, - -35, 5, 3, -39, -17, -35, -1, -21, - -44, 2, -74, -69, 1, -110, -81, 30, - ], - [ - 17, -25, 106, -20, 27, 72, 26, 28, - -38, 28, 88, -15, 31, 17, 45, 21, - 30, -22, 56, -27, 24, -13, -27, -1, - 7, -45, 62, -17, -50, -12, -2, 14, - -52, -33, 39, -51, 21, 29, 28, 42, - -129, -37, 15, -8, -57, -32, 55, -8, - -28, 32, 56, -60, -7, -35, -17, 18, - 2, -68, 14, -73, -62, -41, 1, 59, - ], - [ - -12, 50, -4, 69, 32, -13, -4, 53, - 1, -39, -59, 71, -17, 40, 31, 5, - 56, -14, -3, 96, 3, -66, 56, -0, - -15, 41, -60, 29, -73, -0, 2, -33, - -28, -38, -5, 46, -37, -28, -28, 41, - -22, -47, -38, 60, -25, -58, -33, 71, - -65, -64, 66, 46, 3, -4, -34, 17, - 15, -26, -8, 41, -15, -4, 29, -52, - ], - [ - -21, 39, 38, -49, 56, 6, -1, 30, - 1, 16, 14, 53, 66, 31, 20, 11, - -13, 37, 2, -3, 52, -6, 0, 33, - -50, -48, -15, -6, 93, 28, -32, -42, - 2, 7, 40, 21, 34, -58, 90, 15, - -11, -42, -49, -6, -10, 17, -37, 28, - -44, -52, 30, -21, 34, -77, -10, -20, - -44, -107, -65, -38, 53, -8, -2, -12, - ], - [ - -8, 18, 18, 35, 93, 54, 35, -21, - -70, -14, 19, 58, 26, 106, -11, 9, - -28, 13, -9, 23, -9, 40, -39, 85, - 41, 64, -6, -39, -21, 25, -20, -61, - -23, -3, -1, -7, -42, 22, -6, 11, - -26, 9, -4, -66, -81, 18, -20, 9, - -14, 33, -91, 11, 20, 6, 12, 40, - -59, -57, 12, 36, -80, 34, -33, -66, - ], - [ - -3, 14, -23, 36, 26, -11, 58, -4, - -3, 92, -1, 98, 23, -3, 41, -16, - 15, -57, 15, 43, 70, -44, 58, -17, - -1, 9, 60, 0, -14, -55, -19, 38, - -26, -84, 26, 29, -14, -37, 41, -3, - 12, 51, 2, -26, -21, -77, -18, -15, - 27, 36, -7, -58, -42, -28, -39, -98, - 16, 34, -24, 23, 11, -32, -33, -48, - ], - [ - -11, -26, -9, 35, -5, -16, -21, -50, - -56, 23, -7, -39, 22, 11, -17, 41, - 34, 26, -13, -32, 13, 76, -13, -12, - -27, 4, -8, 37, -22, -13, -23, 24, - 10, 61, 36, -12, -1, 5, 8, 13, - -25, 19, -40, -11, 29, 16, -11, -19, - -12, 62, -4, 44, -6, 35, -19, -19, - 9, -9, -17, -10, 33, -33, -76, 15, + -121, -124, -38, 53, 54, 74, 129, 44, + -105, -109, -14, 31, 19, 32, 46, 23, + -53, -1, -20, 59, 43, 5, 49, 6, + -11, 20, 99, 21, 52, 98, 3, 8, + 22, -25, 2, 70, -0, 34, 3, 8, + -68, 27, -31, -18, 43, 32, -3, 55, + 24, -67, -42, 5, -7, -19, -86, -42, + -17, 26, -80, -17, -14, -63, -53, -74, + ], + [ + -223, -220, -204, 25, 49, 9, 14, 54, + -180, -208, -132, 42, 111, 48, 85, 100, + 19, 10, 18, 53, 87, 91, 53, 1, + 65, 11, 31, 45, 55, 56, 22, 1, + 49, -8, 12, 5, 54, 43, 33, 16, + 38, 11, 5, 40, -8, 26, -21, -10, + -36, -38, -33, -24, 19, -33, -32, 10, + 83, -33, -43, -9, -7, -40, -24, -35, + ], + [ + -175, -214, -238, -238, 7, 19, 89, 186, + 53, -235, -211, -238, 54, 20, 31, -0, + 62, 34, 56, 59, 20, 41, 12, 79, + 27, 59, 19, 122, 62, 148, 70, -18, + -17, 25, 62, 41, 40, 20, 63, 24, + 7, -6, 11, 15, 41, 25, -17, 19, + -44, -43, -8, 2, -2, 8, -5, 16, + -16, 11, -5, -14, -19, -4, 13, -5, + ], + [ + 69, 4, -102, -90, -68, 110, 81, 74, + -19, 11, -86, -92, -96, 19, -31, 60, + -19, 107, -13, -59, 56, 95, 30, -4, + 26, 11, -15, 39, 39, -37, 31, 41, + -4, 91, -8, -21, 32, -39, -89, 70, + 4, -24, 27, 24, 41, -45, 74, -39, + -35, -6, 9, 39, 9, -59, 15, -1, + -47, -46, 37, -3, -54, -50, -75, 2, + ], + [ + 95, 145, -49, -206, -206, -206, 91, 106, + 28, 25, 30, -190, -207, -213, 35, 21, + 19, 5, 62, 58, 40, 35, 27, 54, + -10, 46, 23, 28, 111, 41, 31, 60, + 37, 60, 58, 16, 0, 32, 4, 24, + 41, 38, 6, -12, 6, -4, 31, 9, + 17, 28, -49, -20, -38, -9, 36, -45, + 23, -11, -27, -8, -72, 1, -67, -32, + ], + [ + 28, 65, 55, 41, -181, -189, -179, 1, + -2, -14, 2, 69, -173, -158, -176, 5, + 54, 47, 11, 50, 8, 12, -12, -15, + 29, 7, 141, 38, 45, 58, 33, 9, + -9, 37, 39, 17, 57, 40, 20, 9, + 25, 26, 55, 41, 22, 6, -20, -28, + -21, 8, 16, -1, 1, -34, -27, 149, + -18, 2, 9, 7, -58, -13, -0, -66, + ], + [ + 239, 137, 142, 127, 56, -417, -445, -417, + 62, 72, 102, 95, 114, -306, -408, -329, + 54, 70, 80, 72, 98, 39, 51, 18, + 59, 51, 54, 72, 56, 30, 43, 36, + 26, 40, 48, 59, 55, 35, 14, 12, + 17, 33, 35, 36, 51, 23, 16, -6, + 20, 7, 4, 10, 13, -5, -33, -68, + -30, -16, -2, 13, -5, -31, -22, -56, + ], + [ + 108, 26, 79, 74, 50, -45, -279, -279, + 45, 20, 70, 76, 63, 92, -252, -235, + 34, 2, 50, 56, 51, 139, 20, -13, + 41, 60, 19, 41, 55, 27, 80, 12, + -24, 52, 15, 44, 52, 12, -8, -20, + -8, 14, 27, 26, 21, 26, -21, -48, + 32, -9, -16, -11, 7, -3, -48, -128, + -10, -23, -34, -17, -24, -19, -34, -111, + ], + [ + -3, -24, 7, -50, -10, 56, 46, 66, + -26, -15, -21, 74, 14, 26, 29, 44, + -150, -160, -67, -10, 25, 39, -8, 37, + -28, 54, -30, 6, 20, 4, 61, 21, + 6, -45, -45, 16, 27, 41, 51, 7, + -53, -39, 3, -32, 31, 67, -26, 101, + -61, 71, -48, -29, 23, 51, 26, 38, + -60, -103, -36, -27, -55, 30, -37, 78, + ], + [ + 3, -23, -24, -4, 77, 15, 11, -6, + -13, -42, -39, 49, 5, 22, 20, 62, + -75, -151, -138, -140, -7, 12, 22, 23, + -5, -3, 12, -48, -7, 9, 49, -2, + 8, -96, 73, -72, 15, 41, 21, 4, + 33, 21, -15, -11, 26, 23, -5, 58, + -8, -23, 52, 21, 47, 22, -14, 51, + -53, -25, 54, 24, -25, -5, 28, 66, + ], + [ + 43, 61, 9, 56, -41, 39, 19, 23, + 44, 33, 40, -99, 28, 66, 82, 36, + -23, -67, -136, -171, -154, -13, -3, 19, + -10, 4, -47, -60, -8, 21, -21, 50, + 22, -24, -65, 51, -58, 33, 56, 29, + -15, 10, -8, 27, 10, 6, 52, 27, + 0, 37, 1, 85, -8, 41, 8, 86, + -52, -40, -106, 64, -59, -0, -87, 58, + ], + [ + 37, 32, -61, -1, 87, 19, -38, 9, + 13, 64, 14, 30, 33, -11, 17, 42, + -39, -17, -13, -205, -176, -173, 1, -25, + -6, 20, -16, -63, -39, 8, 34, 2, + 46, -3, -3, -49, 33, -33, 67, 60, + -15, 45, 27, 3, 33, 11, -52, 25, + -10, 30, 6, -2, 3, 22, 1, 28, + -6, 50, 24, 15, 18, 74, -24, -2, + ], + [ + 35, 10, 7, 36, -61, 80, -16, -47, + 32, 29, 30, 15, -57, 3, 9, 12, + 2, 64, 3, -17, -196, -195, -193, -4, + 51, 13, 19, 9, -38, -40, -55, 35, + 48, 48, 30, 4, -51, 24, -40, 44, + 30, 22, 47, 19, 3, 0, 33, 104, + -28, 8, 8, 11, -4, 19, 9, -16, + 13, 5, 33, 4, 5, 9, -9, -9, + ], + [ + 8, 11, 55, 10, 19, -19, 19, -14, + 0, 51, 66, 51, 12, -18, 18, -116, + 22, 42, 52, 5, 31, -133, -193, -245, + 21, 28, 30, 4, -0, -85, 15, -43, + 27, 45, 52, 33, 23, -26, -31, -16, + 17, 33, 35, 36, 24, 7, -23, -18, + 35, 14, 8, 2, 18, -7, 34, 7, + -43, -13, -12, -1, -10, 8, -10, 48, + ], + [ + 53, 14, 57, 22, 13, 38, -14, 31, + 20, 51, 53, 58, 46, 7, -36, -43, + 20, 5, 54, 45, 21, -9, -84, -222, + 23, -11, 23, 40, 34, 11, -54, 10, + -9, 22, 22, 32, 41, 23, -33, -42, + -18, 13, 23, 25, 12, 10, 5, -37, + 9, -10, 13, -16, -28, -7, -50, -50, + -20, -38, -8, -33, -2, -43, -29, -52, + ], + [ + -21, 10, 51, 28, 46, 28, -51, 21, + -30, -20, 18, 39, 4, 74, 3, 18, + -20, -77, -21, -24, 48, 11, 25, -0, + -2, -21, -64, 8, -62, 1, -14, -32, + 53, -2, -67, 12, 47, 38, 16, 26, + -2, -37, 11, 9, -21, -38, 32, 3, + 11, -96, 18, -5, 47, -20, 5, -40, + -3, -17, 30, 1, 35, 10, 9, -39, + ], + [ + 4, 112, 7, 66, -39, 16, -12, -27, + -12, 28, 4, 7, 35, 60, 48, -34, + -13, 76, 23, -4, 55, 14, 12, -7, + -64, -22, -1, -38, -11, 2, -12, 51, + -18, 66, -26, -2, -8, 6, 43, 28, + 48, -16, 57, -58, 0, 53, 33, -43, + -40, 4, 6, -38, -20, -30, 0, -24, + -45, 2, -74, -73, 2, -107, -80, 26, + ], + [ + 17, -21, 107, -19, 25, 71, 21, 25, + -36, 27, 95, -14, 31, 16, 45, 24, + 37, -21, 61, -27, 27, -8, -27, -1, + 11, -43, 62, -16, -48, -10, 1, 16, + -51, -30, 35, -50, 22, 32, 26, 40, + -132, -36, 7, -14, -56, -31, 57, -7, + -27, 32, 50, -64, -5, -36, -17, 11, + 2, -71, 6, -75, -61, -37, -1, 53, + ], + [ + -10, 48, -3, 67, 30, -12, -4, 53, + 3, -40, -58, 72, -11, 43, 33, 7, + 59, -15, -1, 100, 5, -66, 57, -4, + -17, 40, -56, 28, -72, 5, 2, -32, + -29, -40, -6, 43, -36, -29, -29, 36, + -20, -50, -38, 59, -27, -56, -33, 69, + -68, -64, 63, 44, 0, -10, -35, 20, + 12, -24, -8, 44, -19, 4, 28, -56, + ], + [ + -22, 40, 37, -49, 58, 8, -0, 29, + -2, 19, 17, 49, 67, 38, 18, 8, + -10, 38, 5, 1, 57, -5, 3, 37, + -49, -44, -14, -4, 95, 32, -35, -44, + -3, 9, 41, 21, 31, -54, 95, 14, + -11, -43, -52, -8, -13, 18, -36, 24, + -47, -55, 29, -24, 34, -74, -12, -26, + -48, -109, -65, -38, 49, -3, -9, -10, + ], + [ + -8, 21, 20, 36, 94, 50, 39, -23, + -75, -11, 21, 59, 24, 106, -4, 10, + -28, 15, -8, 24, -7, 42, -33, 83, + 40, 61, -4, -35, -20, 25, -16, -61, + -24, -1, -3, -8, -38, 20, -3, 14, + -34, 3, -6, -65, -83, 13, -21, 7, + -16, 29, -91, 9, 19, 6, 11, 33, + -60, -57, 8, 34, -74, 37, -27, -65, + ], + [ + -2, 12, -24, 37, 26, -12, 61, -4, + -3, 94, -3, 100, 21, -1, 37, -15, + 16, -55, 17, 46, 71, -42, 59, -17, + -2, 9, 58, 4, -14, -58, -21, 38, + -25, -86, 26, 28, -14, -39, 36, -2, + 11, 46, 3, -26, -18, -79, -20, -17, + 27, 39, -6, -58, -43, -28, -42, -98, + 13, 36, -25, 23, 11, -32, -32, -42, + ], + [ + -14, -24, -5, 39, -7, -15, -20, -49, + -51, 28, -6, -39, 22, 16, -18, 40, + 34, 22, -12, -31, 13, 77, -16, -10, + -29, 2, -6, 35, -19, -13, -25, 23, + 4, 55, 35, -12, 1, 4, 11, 11, + -25, 17, -41, -6, 30, 14, -12, -22, + -15, 64, -7, 44, -3, 34, -15, -22, + 6, -3, -16, -11, 26, -31, -70, 12, ], ]; internal static readonly short[][] MiddleGameEnemyKingTable = [ [ - 0, 0, 18, 12, 11, -9, -61, 5, - 0, 0, 50, -2, -78, 67, -33, -9, - -25, 1, 39, 6, 52, 68, -7, 63, - -45, 94, -19, 10, -3, 12, 30, -20, - -58, -50, -46, -32, 58, 61, 24, -37, - 35, 33, 12, -11, -42, -46, -15, 7, - -22, 11, 8, 4, -23, -29, -3, -4, - 22, -5, -28, -32, -5, -18, -0, -20, - ], - [ - 0, 0, 0, 4, -30, 3, 11, -6, - 0, 0, 0, 9, 46, -7, -13, -8, - 27, 75, 13, -33, 7, -4, -31, 58, - -31, -38, -14, -53, -38, -15, 17, -6, - 2, 3, -25, -86, -55, -43, -3, -6, - 16, -10, 9, 23, -24, 0, -20, -14, - -8, 11, 20, 31, 40, 19, 15, 6, - 14, 0, -5, -2, -1, -2, 3, -5, - ], - [ - -8, 0, 0, 0, -3, -37, -24, -0, - 9, 0, 0, 0, -36, 37, 30, 44, - -38, 48, -46, -5, -8, -50, 18, -16, - -28, -6, 3, -24, -18, 21, -1, -6, - -2, -28, -30, 19, -22, -43, -44, -93, - 17, -11, -12, -41, -48, -15, -2, 40, - 4, 36, 31, 10, 25, 24, 31, 33, - 27, 5, 0, -5, 4, 3, 8, -4, - ], - [ - -33, -5, 0, 0, 0, -7, 14, 8, - -17, -17, 0, 0, 0, 32, 23, -14, - 35, 10, 48, -3, 23, -44, 1, 28, - 26, 4, -19, 38, -47, -1, 28, 56, - -30, -35, -46, -22, -59, 8, -33, 100, - 4, -12, 3, -36, -11, -1, 1, -63, - 19, 29, 41, 45, 43, 3, 28, -6, - 13, 2, 5, 0, 2, 1, 17, 3, - ], - [ - -9, -21, -30, 0, 0, 0, -6, 6, - -3, -16, 20, 0, 0, 0, 19, 20, - -35, -6, -8, 64, 26, 88, -15, 78, - -9, 63, 63, 11, 36, -46, 82, -78, - 58, -86, -79, -93, -55, -86, -62, -27, - -21, -8, -39, -29, -10, -12, 4, -4, - -18, 60, 53, 37, 22, 35, 36, 23, - 23, 1, -4, -2, 0, 0, 11, -4, - ], - [ - 13, -0, -35, 8, 0, 0, 0, 17, - 14, 41, 19, 1, 0, 0, 0, 17, - 46, -23, -45, -18, 24, 30, 79, 57, - -46, -7, 30, 49, 36, 4, 36, -18, - -23, -23, 24, 2, 25, 8, 30, -14, - -5, -10, -18, -13, -4, -23, 9, -4, - 1, 30, -2, -5, -2, 11, 5, 15, - 18, 2, -3, -1, -0, 0, 12, -3, - ], - [ - -51, 14, 44, 36, -34, 0, 0, 0, - 54, 42, 22, -39, 48, 0, 0, 0, - -66, -10, -111, 34, -101, 20, 30, -0, - -120, -38, 11, 1, -7, -21, 9, 11, - -9, -35, -76, -69, -82, -106, -88, -97, - 83, -12, -18, -38, -36, -39, -0, -18, - -24, 26, 22, 14, 12, 19, 16, 12, - 22, -3, -8, -17, -11, -12, 0, -11, - ], - [ - 51, 35, -4, -10, 7, 66, 0, 0, - -8, 6, 64, 52, -24, -42, 0, 0, - -106, -51, 7, -76, 41, 28, 77, -26, - 43, -2, -48, -6, -19, -1, -6, 14, - -8, -19, -43, -110, -74, -39, -8, -102, - -8, 37, -14, 6, 5, -9, 4, 30, - 3, 11, 36, 44, 31, 21, 23, 36, - 20, 5, 4, -3, 4, 3, 11, 0, - ], - [ - 9, -7, -31, 16, 62, -99, -15, -10, - -15, 28, 6, -24, -27, 29, -28, -0, - 0, 0, 0, 41, -83, 41, 28, 58, - 67, 58, 19, -49, -16, -32, -11, 20, - -40, -35, 38, 1, -21, 47, 22, -61, - -25, 24, -36, 6, 3, -36, 23, -21, - -5, 11, 10, -26, 7, -23, -25, 16, - 9, -7, -6, 17, 25, 2, 7, -23, - ], - [ - 17, -32, -32, -15, -48, -30, 4, 11, - -94, 5, 38, 12, 82, 8, -26, 56, - 28, 0, 0, 0, -54, 16, -8, -16, - 33, 0, 68, -14, -6, -32, -0, -52, - -56, -4, -1, 7, 27, 31, 39, 76, - -20, -13, 14, 29, -10, -11, 5, -48, - 20, 4, -14, -23, -8, -14, -10, 12, - 5, -5, -3, -1, 36, -4, 25, 15, - ], - [ - -9, 46, -1, 1, 11, -73, -34, 33, - -61, -6, -37, -12, -36, -12, 24, -100, - 7, -15, 0, 0, 0, 50, -36, 30, - 4, -14, -17, 51, -1, -19, 11, 19, - 38, -14, 0, 3, -33, 20, 19, 13, - 26, 27, -11, 2, -23, -21, -9, 26, - 14, 6, -3, -5, 7, -10, -0, 2, - 23, 26, 8, 7, 31, 15, 28, 41, - ], - [ - 58, 10, 58, 9, -17, -12, 24, -30, - 12, -17, -93, -6, -27, 14, 45, 30, - -13, 11, -17, 0, 0, 0, -70, -92, - 9, -59, 24, 29, 3, -3, -17, 9, - 1, 6, 12, 34, -9, -27, 45, -5, - 10, 15, 12, 0, 10, 11, -11, -15, - 21, -10, -30, 13, -1, 4, 13, 17, - -13, 26, 25, 19, 8, -12, 30, 25, - ], - [ - -63, 53, -1, -4, 49, 4, -28, -5, - 120, -30, -12, -18, 41, -50, 5, -109, - 8, 7, 12, -36, 0, 0, 0, -72, - 44, 3, -39, 6, 22, 36, 11, 6, - -16, 3, -24, 25, -6, -18, 1, 17, - -82, 18, 19, -3, 5, 14, 21, -0, - -18, -7, 0, -5, 10, 3, 12, 3, - 33, 19, 19, -8, 22, 3, 24, 17, - ], - [ - 22, 33, -22, 51, -4, -4, -9, 9, - -32, 68, 44, 40, 37, 23, -11, 5, - 62, 10, 11, -44, 76, 0, 0, 0, - -46, -38, -33, 8, -78, 28, 3, 4, - 35, 15, -1, 28, -9, -17, 1, -32, - -49, -13, 9, -30, -16, -0, 2, -6, - -7, -13, -33, -2, -17, -18, -2, 6, - 2, 3, 1, -0, -1, -24, -4, -20, - ], - [ - 3, 12, -38, -19, -11, 47, -16, -10, - -9, 36, 19, 40, 52, -20, -18, 17, - 100, -6, 23, -5, -54, -47, 0, 0, - 43, 12, -5, -79, 6, -53, 18, 31, - -52, 42, 28, -26, 13, -22, -29, -16, - -55, -3, -60, -12, 1, 8, 8, 2, - 6, 23, -8, -3, -11, -4, 24, 12, - 28, 11, 11, -29, -0, -2, 1, 5, - ], - [ - 14, -14, -14, -52, 48, -20, -7, 3, - -33, 0, 8, -50, -7, -39, 56, 22, - -11, 6, 21, -2, 38, -32, 11, -14, - 18, -24, -84, -58, 20, -2, -67, -42, - 7, 26, 51, -28, 11, 44, 59, -5, - 5, 20, 89, 18, -62, -20, -5, 41, - 49, -41, -49, 3, -25, -33, -42, -61, - 43, -13, 47, 15, 18, 1, 82, 37, - ], - [ - 15, -1, 49, 32, 22, -13, 42, -24, - 27, 20, -25, 38, -45, 20, 15, 13, - -5, -32, -33, 11, 35, -50, 26, 7, - -13, 13, 42, -61, -4, 12, -41, 85, - -10, -42, 10, 27, 22, 29, 46, -11, - 18, 21, 18, 23, 59, -57, -81, -84, - -56, -58, -0, -60, -26, -5, -36, 41, - -39, -37, -42, 8, -21, -10, -8, 12, - ], - [ - -6, -37, 42, -9, -30, 30, 53, 10, - 6, -26, -76, 38, -70, 10, -33, 22, - 62, 11, -1, 2, 13, -51, 36, 55, - -40, 19, 36, 2, 24, -14, -56, -24, - 37, 25, -11, 59, 39, 52, 17, 38, - 10, 1, 5, -21, 49, 56, -1, -14, - 22, -19, -68, 17, -60, -67, -14, -20, - -109, 1, 42, -28, -46, 31, 33, -19, - ], - [ - 27, -4, 41, -20, 43, -12, 17, 28, - 66, 5, -48, 78, -55, 22, -56, 56, - 23, -22, -53, -66, 9, 51, -48, -45, - 10, 1, 28, 8, 3, 36, 2, 10, - 48, 46, 10, 12, -5, 42, -7, 67, - -12, 15, -7, -1, 3, 3, -21, -38, - 63, -45, 14, -51, -29, 6, -26, 34, - -89, 72, 28, -36, -74, -39, -30, 40, - ], - [ - -51, 11, 28, -40, 15, 4, -3, 14, - -22, -35, 24, -22, 11, -34, 35, 37, - -13, -6, 16, 36, -72, -61, -44, -50, - -14, 22, -4, 26, 46, -25, -11, 32, - -47, 75, 55, 48, 39, -83, -47, 64, - 46, -24, -10, -24, 5, -7, 42, 15, - 19, 13, -19, 1, -3, -22, -23, -69, - -0, 15, 64, 24, -62, -59, 88, -3, - ], - [ - 42, -27, 41, -12, -21, 50, 11, 15, - -35, 16, 31, -55, 85, -69, 21, -15, - 0, 6, -8, 25, 16, -36, 20, -13, - 38, 36, -39, -54, 36, 55, -58, 2, - 67, 93, 21, 34, -5, 30, -11, 38, - -19, -0, 34, 33, 4, 16, -8, 89, - -110, -32, -18, -14, 3, -36, -28, -56, - -27, 23, 29, 20, -41, -34, 2, -49, - ], - [ - 8, -13, 11, -22, -3, 31, 30, 2, - 23, -18, -46, 27, 42, 33, -14, -28, - -51, 5, -14, 75, -54, 3, -14, 22, - 25, -15, 49, 4, 39, -61, -1, -21, - -7, 50, 53, 17, 45, 8, -17, 23, - 10, -54, 2, -21, 14, 16, 38, 11, - 75, 30, -26, 38, -39, -11, -3, -18, - -6, 15, -24, -65, -78, -113, -38, -70, - ], - [ - 11, 6, -68, 3, -21, 24, 18, -5, - -18, -44, -2, -50, -2, -43, 14, 31, - -37, 40, 116, -58, 99, -26, -18, -23, - 31, -82, -108, 56, -110, 56, 12, -3, - 25, -40, 18, 5, 30, 47, -12, -6, - 20, -23, -58, 95, 74, 124, -2, -2, - -17, -4, 41, -81, -22, 7, -4, -31, - -22, -38, -22, -78, -25, -71, -11, 13, + 0, 0, 21, 13, 10, -10, -62, 2, + 0, 0, 47, -3, -75, 66, -35, -15, + -23, 2, 32, 7, 49, 62, -11, 63, + -45, 101, -27, 6, 2, 24, 29, -22, + -55, -50, -47, -30, 57, 62, 22, -41, + 30, 35, 14, -10, -39, -46, -13, 6, + -22, 10, 9, 6, -20, -29, -2, -3, + 22, -7, -29, -29, -2, -15, 1, -20, + ], + [ + 0, 0, 0, 4, -31, 4, 9, -10, + 0, 0, 0, 4, 47, -10, -20, -17, + 26, 75, 10, -33, 7, -2, -36, 50, + -35, -42, -19, -50, -38, -14, 22, -1, + 2, 2, -27, -87, -54, -41, -3, -6, + 18, -8, 10, 26, -24, 1, -19, -15, + -7, 12, 21, 33, 43, 20, 16, 7, + 15, 0, -4, -0, 2, 1, 5, -4, + ], + [ + -9, 0, 0, 0, -3, -41, -26, -1, + 8, 0, 0, 0, -38, 32, 25, 40, + -41, 49, -45, -8, -20, -53, 17, -19, + -25, -9, 3, -20, -14, 20, -10, -6, + -6, -29, -29, 19, -20, -43, -46, -96, + 13, -11, -12, -40, -48, -15, -2, 38, + 5, 37, 31, 12, 25, 25, 32, 34, + 26, 4, 0, -4, 6, 4, 9, -4, + ], + [ + -34, -8, 0, 0, 0, -8, 15, 6, + -18, -13, 0, 0, 0, 28, 23, -15, + 34, -1, 47, -5, 28, -44, -5, 25, + 26, 8, -19, 37, -49, -7, 24, 44, + -26, -37, -49, -19, -62, 6, -32, 101, + -2, -12, 3, -37, -8, 0, -1, -64, + 15, 29, 42, 46, 44, 4, 27, -7, + 15, 0, 4, 0, 4, 2, 17, 3, + ], + [ + -9, -18, -27, 0, 0, 0, -5, 6, + -1, -12, 19, 0, 0, 0, 16, 15, + -36, -16, -11, 67, 23, 87, -19, 68, + -18, 54, 53, 5, 34, -46, 84, -77, + 60, -88, -78, -90, -55, -85, -64, -31, + -20, -9, -40, -32, -11, -13, 2, -4, + -21, 58, 51, 36, 23, 34, 36, 23, + 23, -2, -6, -4, 0, 0, 10, -6, + ], + [ + 10, -0, -38, 7, 0, 0, 0, 16, + 11, 39, 16, 5, 0, 0, 0, 17, + 45, -30, -51, -22, 19, 30, 79, 50, + -49, -11, 30, 48, 40, 7, 37, -19, + -21, -23, 20, -0, 23, 6, 27, -18, + -6, -15, -19, -12, -5, -23, 10, -4, + -2, 30, -1, -5, 0, 11, 4, 15, + 17, -1, -4, -2, -0, 0, 11, -5, + ], + [ + -50, 15, 39, 31, -35, 0, 0, 0, + 51, 37, 24, -40, 44, 0, 0, 0, + -72, -6, -114, 31, -104, 23, 31, 1, + -117, -44, 6, 0, -4, -22, 5, 8, + -10, -40, -77, -70, -83, -106, -90, -99, + 80, -12, -19, -38, -36, -39, -1, -19, + -25, 25, 22, 15, 13, 20, 16, 11, + 22, -5, -9, -17, -10, -11, 0, -12, + ], + [ + 50, 38, -4, -8, 2, 65, 0, 0, + -14, 3, 58, 52, -25, -39, 0, 0, + -102, -47, 9, -83, 40, 23, 74, -27, + 44, -10, -47, -3, -21, -7, -10, 10, + -4, -20, -44, -109, -72, -40, -11, -104, + -12, 37, -14, 6, 5, -8, 5, 31, + 3, 11, 37, 45, 32, 23, 24, 36, + 20, 4, 4, -3, 6, 5, 12, 0, + ], + [ + 9, -8, -29, 14, 62, -101, -18, -12, + -15, 30, 6, -27, -33, 28, -36, -14, + 0, 0, 0, 44, -81, 34, 22, 52, + 65, 60, 17, -44, -20, -34, -13, 14, + -44, -36, 41, 1, -19, 51, 22, -60, + -20, 25, -36, 8, 3, -34, 25, -21, + -4, 11, 10, -24, 9, -22, -24, 16, + 9, -8, -5, 19, 29, 7, 9, -22, + ], + [ + 13, -36, -29, -17, -49, -35, 1, 10, + -96, 4, 42, 13, 79, 2, -30, 51, + 25, 0, 0, 0, -49, 19, -15, -31, + 36, 0, 68, -16, -8, -31, -1, -57, + -57, -7, -0, 8, 29, 33, 39, 77, + -16, -13, 14, 30, -10, -11, 4, -51, + 19, 4, -14, -22, -7, -13, -10, 11, + 4, -6, -4, 0, 38, 0, 26, 15, + ], + [ + -9, 43, -3, 2, 10, -69, -33, 31, + -63, -0, -36, -12, -33, -18, 26, -108, + 8, -20, 0, 0, 0, 47, -45, 24, + -1, -18, -14, 52, -2, -22, 4, 15, + 37, -16, -0, 2, -33, 20, 16, 11, + 27, 25, -12, 2, -24, -22, -10, 23, + 12, 5, -4, -5, 7, -11, -1, 0, + 22, 22, 6, 4, 31, 16, 27, 40, + ], + [ + 57, 10, 53, 5, -14, -10, 22, -32, + 10, -25, -92, -4, -25, 17, 40, 24, + -17, 3, -19, 0, 0, 0, -69, -97, + 8, -58, 24, 26, 2, -2, -17, 10, + -5, 4, 11, 33, -9, -27, 44, -8, + 11, 15, 12, 1, 9, 10, -12, -17, + 18, -13, -31, 14, -1, 3, 12, 15, + -15, 23, 23, 18, 8, -12, 29, 23, + ], + [ + -65, 53, -3, -3, 47, 6, -32, -8, + 114, -36, -20, -18, 40, -46, 2, -106, + -0, -0, 13, -34, 0, 0, 0, -73, + 42, -1, -40, 4, 21, 35, 9, 7, + -12, 1, -23, 24, -6, -18, -1, 15, + -84, 17, 17, -1, 5, 14, 21, -2, + -19, -10, -0, -5, 11, 3, 12, 2, + 32, 16, 18, -8, 22, 4, 24, 16, + ], + [ + 19, 24, -23, 46, -5, -4, -8, 10, + -34, 59, 40, 41, 33, 21, -11, 5, + 64, 3, 6, -46, 79, 0, 0, 0, + -49, -43, -35, 6, -75, 30, 5, 1, + 29, 13, -1, 28, -9, -16, -0, -33, + -50, -14, 9, -29, -15, 1, 2, -6, + -7, -14, -34, -1, -15, -17, -1, 6, + 1, 1, 1, 1, 1, -23, -4, -20, + ], + [ + 4, 7, -42, -21, -15, 43, -18, -11, + -9, 36, 24, 38, 55, -20, -19, 18, + 99, -5, 17, -6, -50, -43, 0, 0, + 40, 1, -14, -81, 4, -48, 18, 27, + -56, 42, 30, -25, 16, -20, -31, -17, + -56, -2, -59, -10, 3, 10, 9, 3, + 8, 23, -6, 0, -9, -3, 26, 12, + 30, 11, 13, -27, 3, 1, 2, 5, + ], + [ + 15, -12, -15, -51, 43, -25, -10, 1, + -31, -1, 6, -51, -10, -42, 56, 21, + -10, 4, 22, -2, 35, -39, 12, -13, + 16, -21, -83, -67, 10, -2, -70, -38, + 4, 29, 48, -24, 14, 48, 62, -2, + 7, 18, 92, 18, -57, -15, -1, 46, + 50, -42, -47, 5, -20, -27, -37, -61, + 43, -11, 57, 20, 23, 9, 89, 38, + ], + [ + 15, -1, 48, 33, 18, -13, 35, -27, + 25, 19, -26, 31, -47, 19, 12, 7, + -2, -26, -31, 6, 34, -50, 33, 10, + -14, 8, 43, -66, -5, 11, -35, 89, + -10, -43, 13, 24, 23, 34, 58, -5, + 17, 21, 19, 24, 68, -53, -74, -77, + -61, -60, -0, -52, -21, 5, -26, 43, + -43, -33, -40, 14, -9, 3, -2, 16, + ], + [ + -4, -39, 36, -12, -30, 30, 49, 11, + 8, -27, -80, 38, -68, 11, -32, 28, + 69, 12, 6, 3, 12, -46, 38, 57, + -39, 20, 39, 6, 21, -10, -49, -25, + 34, 24, -17, 59, 45, 52, 22, 47, + 2, -0, 4, -20, 50, 56, 2, -13, + 18, -17, -68, 14, -62, -57, -11, -18, + -91, 9, 41, -28, -34, 42, 44, -15, + ], + [ + 28, -2, 38, -24, 41, -12, 18, 28, + 72, 3, -52, 76, -51, 26, -50, 59, + 31, -13, -49, -62, 7, 51, -43, -29, + 5, 7, 28, 10, -0, 30, -1, 8, + 51, 50, 10, 13, -5, 40, 1, 73, + -15, 11, -6, -4, 4, 0, -21, -42, + 65, -47, 16, -52, -26, 11, -25, 38, + -88, 75, 27, -32, -72, -38, -21, 42, + ], + [ + -49, 10, 28, -38, 14, 1, -0, 10, + -17, -35, 21, -23, 9, -30, 40, 43, + -14, 0, 19, 39, -70, -61, -42, -37, + -3, 24, -2, 25, 47, -26, -9, 36, + -48, 80, 62, 46, 35, -79, -48, 59, + 52, -28, -14, -23, 4, -8, 39, 18, + 16, 19, -22, 2, -2, -21, -22, -68, + -2, 15, 74, 22, -57, -58, 93, 4, + ], + [ + 41, -26, 36, -10, -21, 50, 11, 19, + -32, 11, 31, -53, 86, -68, 21, -7, + -1, 8, -15, 23, 16, -35, 25, -15, + 43, 41, -35, -54, 35, 52, -56, 9, + 71, 97, 24, 35, -10, 25, -8, 40, + -15, 5, 34, 35, 3, 15, -10, 87, + -107, -30, -14, -9, 2, -35, -30, -59, + -34, 22, 42, 32, -41, -36, 0, -42, + ], + [ + 10, -18, 7, -24, -2, 32, 29, 3, + 25, -22, -53, 28, 37, 32, -8, -23, + -53, 4, -13, 71, -61, 3, -16, 22, + 24, -8, 52, 1, 39, -67, -5, -24, + -7, 57, 55, 21, 49, 12, -18, 25, + 14, -49, 7, -18, 12, 18, 37, 12, + 84, 37, -18, 44, -35, -9, -5, -18, + -7, 25, -5, -57, -75, -113, -36, -64, + ], + [ + 11, 5, -66, -2, -20, 22, 19, -5, + -17, -38, 2, -55, -6, -45, 11, 34, + -39, 41, 109, -62, 95, -28, -17, -21, + 31, -86, -116, 53, -120, 46, 9, -8, + 24, -31, 22, 8, 36, 45, -13, -5, + 19, -14, -44, 103, 76, 126, -2, -1, + -9, 5, 50, -71, -17, 8, -1, -27, + -20, -22, -14, -59, -12, -64, -9, 17, ], ]; internal static readonly short[][] EndGameEnemyKingTable = [ [ - 0, 0, -51, -2, 33, 19, 12, -65, - 0, 0, 33, 19, -21, -8, 14, 41, - -67, 7, 10, -16, -11, -24, -1, -20, - -6, -35, 4, 4, 3, 5, 3, 1, - 20, 0, -5, 2, -15, -5, 19, 14, - 10, -14, 5, 7, 18, 20, 16, 14, - 19, -7, -3, -2, 7, 4, -0, 5, - -19, 17, 20, 6, 12, 32, 19, 11, - ], - [ - 0, 0, 0, 17, 0, 18, 42, -18, - 0, 0, 0, -1, 43, -16, -7, -23, - 11, 13, -9, 14, -23, 2, -6, -6, - -14, -24, -2, -15, -11, 2, -16, 24, - 2, -11, -6, 13, 18, 12, 14, 44, - -38, -0, -2, -1, 8, 2, 8, 12, - -1, -15, -11, -16, -17, -13, -15, -31, - -18, 0, -2, -4, 4, 8, 9, 1, - ], - [ - -48, 0, 0, 0, -19, 14, -22, -32, - -39, 0, 0, 0, 28, -0, 11, -9, - 37, -17, 24, 1, 11, 22, 2, -2, - 3, -12, -17, 1, -18, -17, -4, 6, - 3, 4, 9, 17, 10, 3, 4, 34, - 19, -11, 0, 2, 11, 5, 16, -6, - -6, -15, -18, -15, -10, -8, -21, -20, - -15, 2, 0, -1, -1, 3, 6, 10, - ], - [ - -36, 14, 0, 0, 0, 25, 12, -14, - 16, 1, 0, 0, 0, -8, 1, -43, - -27, 8, -14, 13, -11, 10, -4, 47, - 9, -33, 9, -18, 1, -19, -29, -26, - 13, -2, -1, 10, 3, -7, 20, -42, - 0, -5, -8, 14, 4, -8, 9, 15, - -6, -0, -8, -20, -9, -0, -19, 12, - -1, 4, 1, 0, 13, 4, 14, 16, - ], - [ - 27, -50, -9, 0, 0, 0, -2, 59, - -11, 25, 1, 0, 0, 0, -0, -16, - -25, 3, 8, -12, 14, -15, 4, -35, - 10, -9, -25, -13, -31, 1, -35, -20, - -10, 14, 22, 22, 15, 11, 5, -4, - 10, -7, -3, -1, -4, -5, -7, 12, - -2, -22, -30, -23, -24, -20, -17, -22, - -11, -4, 1, -13, 0, -5, 5, 10, - ], - [ - 7, 25, -5, 17, 0, 0, 0, -15, - 6, -23, -8, 2, 0, 0, 0, -23, - -1, -12, 7, 4, -7, 21, -13, 0, - -5, 3, 1, -31, -15, -22, -29, -10, - 4, 21, -4, 3, -5, -12, -12, -0, - -18, -1, -3, -5, -5, 1, -14, 4, - -4, -25, -9, -3, -9, -12, -10, -13, - -30, -8, -3, -4, 5, 0, 6, 12, - ], - [ - -44, 14, -31, -21, -10, 0, 0, 0, - 31, -9, 28, 18, -18, 0, 0, 0, - 27, 16, 35, -13, 20, -4, 13, -33, - 30, -21, -23, -13, -5, -12, -24, -30, - 7, 17, 14, 18, 14, 10, 11, 2, - -52, -10, 1, 3, 6, 5, -12, -1, - 7, -26, -26, -18, -21, -23, -21, -20, - -33, -9, -6, -14, -5, -6, 0, 1, - ], - [ - 101, -15, 39, -40, 10, -37, 0, 0, - 24, -13, -25, 22, 16, 15, 0, 0, - -23, 15, -17, 41, -31, 3, -18, -17, - -42, 4, -4, -17, -6, -2, -27, -19, - -12, 21, 10, 31, 25, 10, 5, 33, - -35, -26, 1, -4, -4, -8, -10, -19, - -4, -14, -24, -29, -24, -17, -21, -26, - -8, -1, -10, -16, -10, -12, -1, 0, - ], - [ - -104, -9, -60, -0, 8, 40, -20, 14, - -45, -67, 25, -1, -3, 6, 9, 28, - 0, 0, 0, -10, 19, -6, -1, -24, - 5, -16, -15, 9, 3, 8, 3, -5, - 33, 6, 0, 8, 13, 5, 3, 23, - 23, -10, 9, 2, 2, 19, 8, 22, - 12, 4, -5, 16, 7, 7, 6, -3, - 8, 23, 20, 6, 14, 6, 16, 17, - ], - [ - -106, -30, -4, 18, 0, 16, -4, 16, - -12, -6, -29, -38, -12, 0, 9, -9, - -1, 0, 0, 0, 12, -4, -2, -0, - -9, -29, -17, -3, -3, 8, -4, 14, - 19, -4, -1, 4, 3, 1, 3, 5, - 20, -2, -5, -0, 2, 5, 2, 16, - 3, 0, 7, 8, 6, 7, 1, -4, - -0, 15, 11, 14, 13, 15, 12, 12, - ], - [ - 1, -2, -1, -7, -44, 7, -13, 4, - 11, 2, 5, 7, 47, -0, -6, 13, - -15, -11, 0, 0, 0, -11, 8, -20, - -11, -16, -7, -12, -11, 8, -2, -8, - -17, -10, -3, 0, 9, -2, 3, -4, + 0, 0, -50, -0, 31, 19, 13, -58, + 0, 0, 32, 19, -20, -7, 14, 41, + -68, 8, 12, -17, -9, -22, 1, -21, + -6, -36, 7, 5, 3, 4, 5, -1, + 20, 2, -5, 2, -14, -5, 19, 15, + 12, -15, 5, 6, 17, 19, 15, 14, + 20, -8, -4, -2, 6, 4, -0, 4, + -20, 17, 18, 2, 8, 27, 16, 9, + ], + [ + 0, 0, 0, 14, 3, 19, 42, -24, + 0, 0, 0, 1, 43, -16, -5, -16, + 11, 13, -8, 17, -22, 3, -4, -3, + -10, -19, 2, -13, -11, 4, -16, 24, + 0, -10, -6, 14, 18, 12, 14, 43, + -37, -1, -2, -1, 8, 2, 7, 13, + -1, -15, -11, -16, -17, -12, -14, -30, + -19, 0, -3, -5, 1, 5, 8, -0, + ], + [ + -52, 0, 0, 0, -23, 14, -23, -35, + -40, 0, 0, 0, 30, 2, 15, -9, + 39, -16, 25, 3, 15, 23, 3, 3, + 4, -9, -15, 3, -15, -15, 1, 9, + 7, 5, 10, 18, 9, 4, 6, 35, + 23, -10, 0, 3, 11, 5, 17, -5, + -5, -15, -17, -14, -8, -7, -20, -18, + -14, 3, 0, -1, -2, 2, 6, 11, + ], + [ + -37, 12, 0, 0, 0, 26, 10, -22, + 16, 1, 0, 0, 0, -7, 1, -41, + -25, 14, -12, 15, -11, 11, 0, 52, + 11, -31, 11, -16, 4, -15, -25, -22, + 14, 0, -0, 10, 5, -6, 19, -42, + 3, -6, -7, 15, 4, -8, 10, 16, + -3, 1, -8, -19, -8, 1, -17, 14, + 1, 5, 1, 0, 12, 3, 14, 16, + ], + [ + 27, -53, -13, 0, 0, 0, -3, 58, + -12, 22, 1, 0, 0, 0, 1, -12, + -24, 9, 12, -12, 17, -13, 6, -29, + 14, -2, -19, -8, -29, 3, -32, -19, + -7, 16, 23, 23, 16, 12, 5, -2, + 12, -6, -1, 1, -2, -4, -5, 13, + 0, -20, -28, -21, -23, -18, -15, -20, + -8, -1, 2, -12, 0, -4, 6, 12, + ], + [ + 6, 23, -3, 13, 0, 0, 0, -14, + 7, -21, -8, 2, 0, 0, 0, -22, + -0, -7, 11, 8, -5, 23, -11, 4, + -3, 7, 4, -28, -12, -20, -27, -10, + 7, 22, -2, 4, -3, -10, -10, 2, + -14, 2, -2, -4, -3, 2, -13, 6, + -2, -24, -8, -2, -8, -10, -7, -11, + -27, -5, -2, -3, 4, 0, 7, 13, + ], + [ + -48, 11, -28, -21, -13, 0, 0, 0, + 33, -7, 29, 22, -15, 0, 0, 0, + 28, 16, 37, -12, 23, -3, 14, -33, + 31, -15, -20, -9, -2, -9, -21, -28, + 9, 19, 15, 20, 15, 12, 13, 3, + -48, -9, 2, 5, 7, 6, -11, 1, + 9, -25, -24, -16, -20, -22, -20, -19, + -31, -8, -6, -14, -6, -7, 0, 1, + ], + [ + 96, -14, 37, -41, 9, -42, 0, 0, + 30, -8, -23, 22, 18, 18, 0, 0, + -22, 13, -13, 45, -28, 9, -15, -17, + -39, 7, -3, -13, -4, 2, -22, -15, + -14, 21, 11, 32, 25, 12, 7, 34, + -32, -25, 1, -3, -4, -7, -9, -18, + -4, -12, -24, -28, -23, -16, -19, -25, + -6, 0, -11, -16, -12, -13, -1, 0, + ], + [ + -105, -6, -58, -0, 9, 40, -17, 15, + -44, -71, 24, -0, -1, 9, 12, 33, + 0, 0, 0, -9, 20, -2, 2, -22, + 5, -17, -14, 10, 6, 10, 4, -3, + 35, 6, -1, 8, 12, 4, 3, 22, + 22, -11, 9, 1, 2, 19, 8, 23, + 12, 4, -5, 16, 6, 8, 6, -3, + 8, 22, 18, 4, 10, 1, 14, 15, + ], + [ + -104, -31, -6, 20, -1, 19, -3, 16, + -12, -2, -28, -39, -11, 3, 13, -7, + 1, 0, 0, 0, 12, -3, 1, 3, + -10, -28, -15, -2, -1, 9, -2, 15, + 21, -3, -2, 4, 3, 1, 3, 5, + 20, -2, -5, -1, 2, 5, 3, 17, + 3, 0, 7, 7, 6, 7, 2, -4, + 0, 15, 9, 12, 9, 11, 10, 10, + ], + [ + 3, 1, 2, -9, -43, 7, -12, 5, + 12, 2, 3, 10, 48, 1, -5, 17, + -14, -9, 0, 0, 0, -9, 12, -19, + -10, -15, -7, -12, -10, 10, -0, -8, + -17, -9, -3, 0, 9, -2, 4, -3, -14, -9, -3, -1, 1, 3, 3, -1, - -8, -7, -6, 0, 0, 0, -6, -3, - 1, 3, -0, -2, 7, 4, 5, 5, - ], - [ - -10, -13, -10, -23, 12, -28, -5, -8, - 9, 0, 7, 10, -11, 22, -8, -36, - -12, -16, -1, 0, 0, 0, 2, 12, - -18, -2, -12, -16, -6, -11, -11, -7, - -2, -5, -3, -6, 5, 4, -10, -7, - -17, -8, -9, -1, -4, -4, 3, 2, - -20, -8, -1, -5, -2, 0, -7, -7, - 12, -5, -5, 1, 15, 13, 9, 6, - ], - [ - 5, -20, -16, -2, -43, -10, -13, -60, - -7, 4, 15, 1, 15, -13, -5, -21, - -7, -11, -6, -5, 0, 0, 0, 6, - -11, -1, 0, -3, -13, -11, -18, -5, - 0, -3, 4, -3, 3, 1, -7, -15, - -7, -17, -9, -1, -2, -3, -4, -0, - -4, -10, -8, 1, -0, 1, -1, 4, - -14, -0, 2, 11, 13, 13, 13, 13, - ], - [ - -27, -28, -19, -14, -33, -33, 4, 33, - 29, -20, -8, -9, -7, 14, -3, -49, - -7, -14, 2, 2, -22, 0, 0, 0, - 24, 10, 8, -9, 16, -17, -18, -38, - -14, -1, 3, -6, 7, 1, -10, -10, - -11, -2, -7, 9, 6, 3, 1, 3, - -8, -12, -2, -2, 2, 6, 4, 5, - -24, -3, 4, -2, 16, 20, 21, 23, - ], - [ - -9, -51, -7, -18, 25, -2, -7, 38, - -7, 8, 9, -12, -8, 15, 3, 12, - -7, 1, -13, 11, -3, 17, 0, 0, - -13, -3, 5, 12, -10, -0, -21, -37, - 5, -13, -8, 4, 3, 2, 1, -8, - -5, -4, 4, 5, 2, 2, 3, 0, - -12, -21, -10, -1, 6, 3, -3, 6, - -20, -17, -3, 10, 14, 8, 17, 17, - ], - [ - 40, -15, -14, -8, 1, -11, -37, 39, - -7, -0, -15, 25, 10, -8, 2, 25, - 24, 22, 5, -14, -0, 12, -4, -10, - -1, 18, 29, 16, 5, 5, 30, 10, - -25, -9, 19, 15, 11, 4, -9, 16, - -30, 38, 19, 13, 19, 3, 1, -7, - 33, 54, 43, 17, 18, 19, 13, 24, - 9, 39, 22, 24, -2, 6, 1, -12, - ], - [ - -13, 54, 62, -44, -19, -23, -7, 17, - -62, -31, -7, -26, -29, 8, -9, 14, - 26, -22, -18, 9, 5, 1, -11, 24, - 23, -1, -17, 35, 9, 7, 23, -12, - -29, 2, 11, -4, 14, 2, 4, 27, - 31, 74, 25, 17, 2, 23, 26, 30, - 11, 16, 29, 14, 14, 3, 20, -12, - 19, 11, 27, 9, 30, 6, 3, 8, - ], - [ - 35, -21, 53, 6, 12, -16, 18, 9, - 3, 26, -33, -13, -16, -2, 16, 19, - -8, -33, -15, -17, -1, 7, -20, 1, - -5, 6, -5, -11, 13, 7, 14, 21, - -30, 34, 30, -27, -1, -3, -3, 5, - -2, 1, 3, 23, -3, -4, 5, 5, - -8, 15, 17, 7, 19, 12, 12, -3, - 12, 10, -6, 5, 23, 3, -6, 7, - ], - [ - 54, 2, 83, -2, -12, -35, -80, 15, - -23, -1, -33, -33, 4, -11, 11, 1, - -18, 12, -21, 16, 10, -5, 20, 2, - -3, 13, 4, 19, -5, 12, 12, 1, - -14, -15, -14, -3, -1, -1, 9, -1, - -16, 2, 35, 4, 14, 5, 13, 12, - -17, 13, 3, 12, 16, 4, 7, -6, - 14, -14, -3, 6, 23, 9, 23, -6, - ], - [ - 9, 39, -31, 14, -46, -26, -45, -29, - -9, 3, 3, -6, 6, -3, -8, 12, - 24, -3, 6, -26, 15, 19, 13, 4, - -9, -4, 14, 22, 24, 22, 14, 14, - -14, -20, -12, 36, -15, 33, 12, -18, - -16, -7, -0, -39, 15, -4, 4, -5, - -12, 0, 14, 11, 6, 13, 19, 20, - 9, -9, -2, 8, 17, 20, 9, 11, - ], - [ - -11, 10, 3, 38, 33, 56, 79, -22, - 20, 4, -4, 2, -32, -26, -25, 23, - 2, -15, 1, -8, -14, -28, -41, -10, - -4, 7, 4, 5, 2, -3, 24, -4, - -11, -31, -5, -12, 8, -11, 25, -37, - 4, -14, -16, -0, -2, 33, -6, -20, - 13, -2, 2, 7, 11, 11, 17, 25, - -4, -6, -18, -7, 13, 3, 15, 20, - ], - [ - -10, 8, -6, 28, 19, 0, 37, -90, - 21, 2, -8, -5, -5, -8, -30, -10, - 3, -18, -3, -1, 2, -17, -16, -7, - 6, 11, -12, 16, 9, -14, 9, 41, - -10, -5, -4, 4, -3, 15, 3, 8, - -2, 8, -0, 14, 4, 2, -4, -4, - -25, 6, 6, -9, 20, 18, 18, 21, - -2, -13, 13, 20, 30, 38, 11, 43, - ], - [ - 6, -29, -45, -8, 5, -7, 5, -41, - -17, -1, -6, -11, -39, 5, -17, -13, - 12, -31, -26, 0, -5, -14, 25, 24, - -20, 17, 26, -1, 38, 28, 52, 30, - -20, 14, -6, -3, 14, 21, -9, -10, - -25, -10, -5, -8, 1, 14, 25, -41, - 12, -18, -10, 22, 21, 42, 38, 37, - 32, 22, 35, 36, 11, 45, 59, 35, + -7, -7, -6, -0, -0, 0, -6, -2, + 1, 3, -2, -4, 3, 1, 3, 2, + ], + [ + -10, -12, -8, -21, 12, -26, -6, -10, + 11, 4, 7, 11, -10, 21, -6, -34, + -8, -12, 0, 0, 0, 0, 4, 15, + -17, -1, -11, -14, -5, -10, -10, -7, + -1, -5, -3, -5, 5, 4, -9, -7, + -16, -8, -9, -1, -4, -4, 3, 2, + -20, -8, -1, -5, -2, 0, -6, -6, + 12, -4, -6, -1, 12, 10, 7, 5, + ], + [ + 9, -18, -14, -1, -42, -9, -12, -60, + -3, 8, 19, 3, 16, -13, -2, -22, + -4, -8, -5, -4, 0, 0, 0, 7, + -11, 1, 2, -2, -12, -10, -17, -6, + -2, -2, 4, -3, 2, 1, -6, -14, + -6, -17, -9, -1, -3, -3, -4, -0, + -4, -10, -8, 1, -0, 1, -1, 5, + -13, -0, -1, 9, 9, 10, 11, 11, + ], + [ + -21, -22, -17, -11, -33, -34, 5, 32, + 32, -17, -6, -9, -5, 16, -3, -50, + -5, -11, 5, 3, -21, 0, 0, 0, + 24, 12, 10, -7, 16, -17, -19, -38, + -13, -1, 3, -6, 7, 0, -10, -10, + -11, -3, -7, 9, 5, 2, 1, 3, + -8, -12, -3, -2, 1, 6, 4, 4, + -23, -4, 1, -5, 12, 16, 19, 20, + ], + [ + -7, -46, -2, -15, 26, -0, -7, 32, + -6, 9, 8, -10, -6, 16, 3, 13, + -5, 1, -11, 12, -3, 17, 0, 0, + -12, 1, 8, 13, -8, 0, -21, -37, + 6, -13, -8, 4, 3, 1, 2, -8, + -5, -5, 3, 4, 1, 1, 2, -0, + -12, -21, -11, -1, 6, 3, -3, 6, + -20, -18, -6, 7, 10, 5, 15, 15, + ], + [ + 41, -16, -16, -7, 3, -8, -36, 43, + -7, -3, -16, 26, 10, -7, 2, 25, + 25, 22, 4, -13, 1, 12, -4, -13, + -0, 20, 32, 20, 9, 6, 31, 8, + -26, -9, 19, 13, 9, 2, -12, 14, + -33, 39, 18, 12, 17, -1, -3, -10, + 32, 53, 41, 16, 16, 15, 10, 22, + 9, 37, 16, 17, -9, -2, -4, -17, + ], + [ + -8, 54, 67, -39, -17, -23, -7, 17, + -67, -33, -8, -23, -26, 8, -8, 15, + 25, -22, -21, 9, 4, -1, -14, 21, + 23, 2, -17, 34, 9, 6, 20, -15, + -28, 0, 11, -4, 11, -2, -1, 24, + 33, 77, 22, 16, -1, 20, 22, 26, + 12, 17, 28, 11, 10, -1, 15, -15, + 17, 7, 23, 4, 23, -3, -1, 1, + ], + [ + 37, -21, 51, 4, 14, -11, 20, 16, + 1, 27, -30, -13, -16, -2, 17, 16, + -10, -33, -16, -19, -1, 4, -21, -1, + -6, 4, -5, -11, 13, 6, 10, 19, + -29, 32, 31, -31, -2, -5, -6, 2, + 0, 2, 2, 25, -5, -6, 2, 2, + -8, 14, 15, 7, 18, 8, 9, -6, + 7, 6, -8, 2, 16, -4, -13, 2, + ], + [ + 55, -0, 88, 6, -8, -36, -76, 20, + -27, -1, -31, -37, 2, -11, 10, 1, + -23, 10, -22, 14, 11, -5, 18, -3, + -2, 9, 3, 18, -6, 12, 11, -2, + -14, -17, -18, -4, -2, -2, 6, -3, + -16, 2, 37, 3, 12, 4, 11, 11, + -18, 14, 2, 12, 14, 2, 5, -9, + 11, -16, -5, 2, 19, 4, 17, -13, + ], + [ + 7, 39, -34, 13, -42, -23, -46, -23, + -10, 2, 5, -6, 5, -6, -9, 8, + 24, -5, 5, -27, 15, 18, 12, -1, + -11, -6, 13, 21, 22, 21, 13, 10, + -14, -23, -15, 36, -15, 31, 11, -18, + -18, -8, -1, -40, 14, -6, 4, -7, + -12, -2, 14, 10, 5, 12, 18, 18, + 9, -12, -6, 6, 12, 15, 5, 5, + ], + [ + -11, 14, 2, 39, 36, 56, 84, -14, + 22, 7, -4, 3, -33, -25, -28, 17, + 2, -16, 3, -7, -15, -29, -43, -12, + -6, 5, 3, 4, 1, -2, 21, -8, + -13, -34, -8, -14, 8, -10, 24, -39, + 1, -17, -17, -2, -2, 32, -5, -20, + 11, -4, -1, 5, 10, 10, 17, 25, + -4, -9, -23, -13, 9, -1, 11, 13, + ], + [ + -6, 11, -5, 26, 20, 1, 39, -87, + 23, 5, -3, -6, -4, -7, -32, -13, + 1, -17, -4, 0, 3, -18, -17, -7, + 5, 10, -13, 17, 10, -13, 10, 40, + -12, -8, -6, 3, -5, 14, 2, 8, + -6, 5, -4, 12, 4, -1, -4, -4, + -29, 2, 2, -12, 18, 17, 19, 21, + -4, -17, 5, 15, 25, 34, 7, 36, + ], + [ + 7, -28, -48, -8, 5, -9, -0, -40, + -18, 0, -7, -10, -39, 5, -17, -14, + 11, -29, -24, 1, -3, -13, 26, 19, + -20, 18, 28, 0, 43, 32, 57, 35, + -18, 11, -6, -3, 13, 21, -11, -6, + -26, -13, -9, -10, 1, 14, 29, -39, + 8, -19, -12, 19, 21, 43, 38, 37, + 31, 19, 30, 31, 3, 40, 57, 31, ], ]; } @@ -6039,9 +6039,9 @@ public static class EvaluationParams public const int OpenFileKingPenalty = 196543; /// - /// + /// /// - public const int KingShieldBonus = -196585; + public const int KingShieldBonus = -196584; /// /// @@ -6056,35 +6056,35 @@ public static class EvaluationParams public static readonly TaperedEvaluationTermByRank PawnPhalanxBonus = [ Pack(0, 0), - Pack(4, 5), + Pack(4, 4), Pack(21, 11), Pack(28, 25), Pack(60, 77), - Pack(213, 186), - Pack(-50, 404) + Pack(210, 196), + Pack(-51, 402) ]; public static readonly TaperedEvaluationTermByCount8 BadBishop_SameColorPawnsPenalty = [ - Pack(137, 165), - Pack(138, 159), - Pack(135, 146), - Pack(129, 137), - Pack(122, 130), - Pack(118, 120), - Pack(113, 111), - Pack(108, 101), - Pack(106, 92) + Pack(134, 163), + Pack(136, 157), + Pack(133, 144), + Pack(126, 136), + Pack(120, 128), + Pack(115, 118), + Pack(111, 109), + Pack(106, 99), + Pack(103, 91) ]; public static readonly TaperedEvaluationTermByCount8 BadBishop_BlockedCentralPawnsPenalty = [ - Pack(133, 153), - Pack(129, 139), - Pack(124, 116), - Pack(123, 93), - Pack(122, 84), - Pack(116, 100), + Pack(133, 155), + Pack(129, 140), + Pack(124, 118), + Pack(123, 94), + Pack(122, 85), + Pack(115, 104), Pack(0, 0), Pack(0, 0), Pack(0, 0) @@ -6102,57 +6102,57 @@ public static class EvaluationParams public static readonly TaperedEvaluationTermByRank FriendlyKingDistanceToPassedPawnBonus = [ Pack(0, 0), - Pack(28, 38), - Pack(9, 32), - Pack(2, 20), - Pack(4, 14), - Pack(13, 12), - Pack(15, 12), - Pack(21, 3) + Pack(28, 34), + Pack(13, 27), + Pack(8, 15), + Pack(9, 9), + Pack(16, 7), + Pack(14, 7), + Pack(20, -2) ]; public static readonly TaperedEvaluationTermByRank EnemyKingDistanceToPassedPawnPenalty = [ Pack(0, 0), - Pack(-34, -19), - Pack(-9, 5), - Pack(5, 17), - Pack(13, 27), - Pack(25, 36), - Pack(24, 49), - Pack(31, 52) + Pack(-40, -28), + Pack(-13, -1), + Pack(6, 9), + Pack(16, 21), + Pack(28, 36), + Pack(34, 54), + Pack(44, 50) ]; public static readonly TaperedEvaluationTermByCount27 VirtualKingMobilityBonus = [ - Pack(-2, -19), - Pack(1, -5), + Pack(-1, -18), + Pack(2, -5), Pack(0, -4), Pack(2, -9), Pack(1, -7), Pack(2, -6), - Pack(2, -4), - Pack(2, -5), + Pack(3, -4), + Pack(3, -5), Pack(7, -2), Pack(2, 3), Pack(-2, 7), - Pack(-6, 9), - Pack(-10, 10), - Pack(-15, 12), - Pack(-14, 13), - Pack(-17, 13), - Pack(-10, 11), + Pack(-5, 9), Pack(-9, 10), - Pack(12, 4), - Pack(25, 1), - Pack(20, 1), - Pack(40, -6), + Pack(-14, 12), + Pack(-13, 13), + Pack(-16, 13), + Pack(-9, 11), + Pack(-8, 10), + Pack(13, 4), + Pack(26, 1), + Pack(19, 1), + Pack(40, -5), Pack(40, -7), - Pack(47, -11), - Pack(57, -15), - Pack(102, -23), - Pack(120, -37), - Pack(148, -29) + Pack(45, -10), + Pack(54, -15), + Pack(97, -23), + Pack(113, -36), + Pack(145, -30) ]; public static readonly TaperedEvaluationTermByCount8 KnightMobilityBonus = @@ -6162,28 +6162,28 @@ public static class EvaluationParams Pack(29, 93), Pack(37, 110), Pack(44, 124), - Pack(49, 138), - Pack(58, 142), - Pack(65, 143), - Pack(75, 134) + Pack(49, 139), + Pack(58, 143), + Pack(65, 144), + Pack(75, 135) ]; public static readonly TaperedEvaluationTermByCount14 BishopMobilityBonus = [ Pack(0, 0), - Pack(11, 33), + Pack(11, 34), Pack(21, 56), Pack(28, 73), Pack(36, 84), - Pack(41, 94), + Pack(41, 95), Pack(46, 99), Pack(50, 101), Pack(52, 105), - Pack(59, 102), + Pack(59, 103), Pack(65, 101), - Pack(75, 98), + Pack(75, 99), Pack(79, 106), - Pack(75, 88), + Pack(75, 89), Pack(0, 0) ]; @@ -6197,466 +6197,888 @@ public static class EvaluationParams Pack(27, 51), Pack(29, 58), Pack(32, 61), - Pack(36, 66), + Pack(35, 66), Pack(37, 71), Pack(39, 74), - Pack(40, 78), - Pack(47, 79), + Pack(40, 77), + Pack(47, 78), Pack(55, 72), - Pack(76, 63) + Pack(75, 63) ]; public static readonly TaperedEvaluationTermByCount27 QueenMobilityBonus = [ Pack(0, 0), - Pack(1, 197), - Pack(-3, 306), - Pack(-0, 341), - Pack(2, 360), - Pack(6, 374), - Pack(8, 392), - Pack(9, 404), - Pack(13, 412), - Pack(14, 417), - Pack(16, 423), - Pack(19, 427), - Pack(22, 429), - Pack(22, 435), - Pack(23, 437), - Pack(25, 440), - Pack(25, 446), - Pack(32, 437), - Pack(39, 434), - Pack(56, 420), - Pack(59, 415), - Pack(106, 384), - Pack(113, 377), - Pack(128, 357), - Pack(209, 321), - Pack(223, 291), - Pack(61, 385), - Pack(-47, 413) + Pack(1, 199), + Pack(-3, 308), + Pack(-0, 343), + Pack(2, 362), + Pack(6, 376), + Pack(8, 393), + Pack(9, 406), + Pack(13, 413), + Pack(14, 418), + Pack(16, 425), + Pack(19, 429), + Pack(22, 430), + Pack(22, 436), + Pack(24, 438), + Pack(25, 442), + Pack(25, 447), + Pack(32, 439), + Pack(39, 436), + Pack(56, 422), + Pack(59, 416), + Pack(106, 385), + Pack(114, 378), + Pack(128, 358), + Pack(211, 322), + Pack(224, 292), + Pack(61, 386), + Pack(-47, 414) ]; public static readonly TaperedEvaluationTermByRank[] PassedPawnBonus = [ [ Pack(0, 0), - Pack(-38, -16), - Pack(-18, -27), - Pack(-16, -1), - Pack(22, 23), - Pack(24, 66), - Pack(143, 179), + Pack(-10, 0), + Pack(6, -16), + Pack(-2, 1), + Pack(17, 15), + Pack(5, 48), + Pack(84, 112), ], [ Pack(0, 0), - Pack(-45, -29), - Pack(-23, -27), - Pack(-9, -5), - Pack(13, 30), - Pack(2, 67), - Pack(142, 176), + Pack(-16, -13), + Pack(-1, -16), + Pack(3, -3), + Pack(9, 19), + Pack(-26, 55), + Pack(84, 114), ], [ Pack(0, 0), - Pack(-37, -46), - Pack(-41, -25), - Pack(-7, -12), - Pack(5, 17), - Pack(9, 53), - Pack(119, 196), + Pack(-9, -30), + Pack(-19, -14), + Pack(4, -12), + Pack(2, 5), + Pack(-16, 35), + Pack(63, 131), ], [ Pack(0, 0), - Pack(-32, -37), - Pack(-41, -7), - Pack(-7, 1), - Pack(16, 32), - Pack(17, 39), - Pack(148, 169), + Pack(-2, -26), + Pack(-17, -3), + Pack(6, -3), + Pack(12, 20), + Pack(-2, 12), + Pack(90, 104), ], [ Pack(0, 0), - Pack(-36, -46), - Pack(-38, -18), - Pack(-6, -6), - Pack(5, 23), - Pack(2, 59), - Pack(75, 195), + Pack(-10, -30), + Pack(-21, -8), + Pack(4, -6), + Pack(1, 10), + Pack(-20, 34), + Pack(13, 134), ], [ Pack(0, 0), - Pack(-34, -43), - Pack(-34, -24), - Pack(-9, 2), - Pack(23, 18), - Pack(21, 65), - Pack(145, 161), + Pack(-4, -30), + Pack(-9, -18), + Pack(5, -0), + Pack(19, 6), + Pack(-0, 38), + Pack(87, 99), ], [ Pack(0, 0), - Pack(-37, -46), - Pack(-28, -31), - Pack(-13, -2), - Pack(19, 28), - Pack(37, 71), - Pack(113, 163), + Pack(-10, -27), + Pack(-9, -16), + Pack(-1, 1), + Pack(15, 17), + Pack(9, 57), + Pack(56, 115), ], [ Pack(0, 0), - Pack(-35, -38), - Pack(-28, -20), - Pack(-12, 0), - Pack(28, 23), - Pack(43, 61), - Pack(142, 176), + Pack(-7, -21), + Pack(-8, -6), + Pack(2, 1), + Pack(25, 12), + Pack(17, 49), + Pack(81, 120), ], [ Pack(0, 0), - Pack(-74, -18), - Pack(-34, -16), - Pack(-28, 5), - Pack(13, 25), - Pack(55, 55), - Pack(170, 150), + Pack(-44, -1), + Pack(-9, -6), + Pack(-14, 8), + Pack(6, 18), + Pack(36, 29), + Pack(113, 86), ], [ Pack(0, 0), - Pack(-43, -29), - Pack(-37, -17), - Pack(-24, 2), - Pack(14, 24), - Pack(46, 46), - Pack(144, 182), + Pack(-12, -12), + Pack(-10, -8), + Pack(-10, 5), + Pack(7, 18), + Pack(30, 17), + Pack(86, 118), ], [ Pack(0, 0), - Pack(-25, -40), - Pack(-57, -13), - Pack(-27, 1), - Pack(23, 19), - Pack(10, 55), - Pack(137, 176), + Pack(4, -21), + Pack(-30, -2), + Pack(-13, 5), + Pack(17, 15), + Pack(-6, 27), + Pack(79, 114), ], [ Pack(0, 0), - Pack(-45, -37), - Pack(-42, -19), - Pack(-21, -1), - Pack(27, 15), - Pack(28, 60), - Pack(113, 175), + Pack(-15, -19), + Pack(-14, -9), + Pack(-6, 2), + Pack(20, 10), + Pack(10, 33), + Pack(57, 114), ], [ Pack(0, 0), - Pack(-38, -33), - Pack(-43, -18), - Pack(-19, 1), - Pack(13, 25), - Pack(46, 58), - Pack(151, 157), + Pack(-9, -15), + Pack(-17, -7), + Pack(-5, 4), + Pack(5, 20), + Pack(27, 33), + Pack(96, 96), ], [ Pack(0, 0), - Pack(-48, -36), - Pack(-42, -12), - Pack(-26, 6), - Pack(24, 26), - Pack(56, 58), - Pack(159, 148), + Pack(-20, -17), + Pack(-18, -0), + Pack(-11, 9), + Pack(17, 21), + Pack(33, 36), + Pack(102, 90), ], [ Pack(0, 0), - Pack(-24, -35), - Pack(-45, -9), - Pack(-21, 7), - Pack(33, 24), - Pack(34, 63), - Pack(159, 155), + Pack(2, -18), + Pack(-23, 2), + Pack(-7, 9), + Pack(29, 17), + Pack(9, 43), + Pack(100, 95), ], [ Pack(0, 0), - Pack(-94, -12), - Pack(-36, -17), - Pack(-40, 3), - Pack(-36, 35), - Pack(11, 66), - Pack(110, 173), + Pack(-70, 10), + Pack(-13, -4), + Pack(-29, 7), + Pack(-43, 31), + Pack(-10, 44), + Pack(54, 106), ], [ Pack(0, 0), - Pack(-193, 3), - Pack(-95, -11), - Pack(-29, 6), - Pack(-74, 21), - Pack(92, 34), - Pack(158, 179), + Pack(-186, 39), + Pack(-94, 17), + Pack(-23, 20), + Pack(-80, 25), + Pack(82, 17), + Pack(109, 112), ], [ Pack(0, 0), - Pack(-52, -23), - Pack(-71, -12), - Pack(-48, -1), - Pack(7, 14), - Pack(96, 8), - Pack(213, 162), + Pack(-59, 13), + Pack(-69, 15), + Pack(-50, 14), + Pack(-3, 17), + Pack(91, -10), + Pack(161, 96), ], [ Pack(0, 0), - Pack(-46, -41), - Pack(-93, -12), - Pack(32, -12), - Pack(23, 6), - Pack(171, 2), - Pack(232, 149), + Pack(-40, -4), + Pack(-78, 15), + Pack(43, 4), + Pack(17, 13), + Pack(167, -11), + Pack(182, 81), ], [ Pack(0, 0), - Pack(-53, -26), - Pack(-45, -24), - Pack(-11, -9), - Pack(60, 3), - Pack(100, 24), - Pack(165, 155), + Pack(-36, 10), + Pack(-34, 6), + Pack(-2, 9), + Pack(61, 10), + Pack(102, 12), + Pack(111, 88), ], [ Pack(0, 0), - Pack(-65, -27), - Pack(11, -36), - Pack(-32, -2), - Pack(-26, 17), - Pack(114, 20), - Pack(149, 149), + Pack(-47, 8), + Pack(22, -7), + Pack(-22, 15), + Pack(-24, 22), + Pack(114, 7), + Pack(96, 83), ], [ Pack(0, 0), - Pack(-93, -16), - Pack(-75, -13), - Pack(-93, 10), - Pack(4, 3), - Pack(125, 15), - Pack(167, 167), + Pack(-82, 16), + Pack(-63, 13), + Pack(-84, 24), + Pack(-1, 5), + Pack(118, -1), + Pack(117, 99), ], [ Pack(0, 0), - Pack(-82, -15), - Pack(-26, -13), - Pack(-61, 13), - Pack(-73, 22), - Pack(-7, 58), - Pack(77, 219), + Pack(-71, 14), + Pack(-18, 7), + Pack(-58, 21), + Pack(-78, 20), + Pack(-18, 38), + Pack(20, 152), ], ]; - public static readonly TaperedEvaluationTermByRank[] PassedPawnBonusNoEnemiesAheadBonus = + public static readonly TaperedEvaluationTermByRank[] PassedPawnEnemyBonus = [ [ Pack(0, 0), - Pack(-12, -7), - Pack(-2, 15), - Pack(-34, 28), - Pack(-36, 35), - Pack(-63, 75), - Pack(-43, 108), + Pack(-39, -9), + Pack(-43, 5), + Pack(-22, 0), + Pack(14, 2), + Pack(-8, -14), + Pack(84, 80), ], [ Pack(0, 0), - Pack(3, -6), - Pack(-8, 11), - Pack(-27, 20), - Pack(-21, 32), - Pack(8, 62), - Pack(-18, 109), + Pack(-46, -21), + Pack(-35, -21), + Pack(-23, -4), + Pack(-10, 24), + Pack(41, -8), + Pack(113, 103), ], [ Pack(0, 0), - Pack(8, -3), - Pack(-9, 1), - Pack(-33, 24), - Pack(-23, 41), - Pack(-9, 94), - Pack(29, 59), + Pack(-40, -38), + Pack(-32, -28), + Pack(-15, 1), + Pack(-5, 20), + Pack(32, 4), + Pack(63, 122), ], [ Pack(0, 0), - Pack(8, -6), - Pack(-31, 5), - Pack(-55, 23), - Pack(-72, 45), - Pack(-73, 105), - Pack(-48, 90), + Pack(-37, -31), + Pack(-26, -36), + Pack(-14, -16), + Pack(8, -4), + Pack(27, 12), + Pack(139, 98), ], [ Pack(0, 0), - Pack(14, 4), - Pack(5, -0), - Pack(-56, 28), - Pack(-43, 49), - Pack(-12, 80), - Pack(13, 60), + Pack(-36, -42), + Pack(-15, -34), + Pack(-6, -20), + Pack(2, 3), + Pack(15, 10), + Pack(80, 131), ], [ Pack(0, 0), - Pack(-8, 10), - Pack(-24, 3), - Pack(-46, 21), - Pack(-69, 40), - Pack(7, 54), - Pack(-34, 80), + Pack(-44, -31), + Pack(-12, -26), + Pack(-16, -7), + Pack(-0, 7), + Pack(62, -6), + Pack(97, 103), ], [ Pack(0, 0), - Pack(-7, 7), - Pack(-16, -2), - Pack(-29, 16), - Pack(-28, 36), - Pack(-5, 67), - Pack(21, 85), + Pack(-38, -25), + Pack(-25, -19), + Pack(-21, 1), + Pack(-4, 27), + Pack(24, 13), + Pack(65, 133), + ], + [ + Pack(0, 0), + Pack(-31, -23), + Pack(-29, -19), + Pack(-27, 11), + Pack(-16, 21), + Pack(22, -36), + Pack(68, 131), + ], + [ + Pack(0, 0), + Pack(-35, -11), + Pack(-21, -5), + Pack(-13, 8), + Pack(18, 18), + Pack(40, 39), + Pack(79, 104), + ], + [ + Pack(0, 0), + Pack(-35, -13), + Pack(-4, -8), + Pack(-3, 2), + Pack(13, 9), + Pack(76, 41), + Pack(86, 92), + ], + [ + Pack(0, 0), + Pack(-19, -14), + Pack(-6, -5), + Pack(6, 3), + Pack(29, 9), + Pack(89, 48), + Pack(158, 88), + ], + [ + Pack(0, 0), + Pack(-18, -15), + Pack(-7, -7), + Pack(7, -1), + Pack(32, 5), + Pack(30, 58), + Pack(123, 84), + ], + [ + Pack(0, 0), + Pack(-25, -10), + Pack(-23, 2), + Pack(-3, 7), + Pack(25, 11), + Pack(31, 47), + Pack(82, 92), ], [ Pack(0, 0), - Pack(-15, 20), - Pack(-16, 1), + Pack(-22, -11), + Pack(-25, 3), + Pack(-20, 14), + Pack(11, 17), + Pack(35, 42), + Pack(116, 88), + ], + [ + Pack(0, 0), + Pack(-26, -12), + Pack(-29, 5), Pack(-25, 12), - Pack(-32, 37), - Pack(-25, 88), - Pack(-10, 80), + Pack(-8, 13), + Pack(58, 15), + Pack(82, 105), ], [ Pack(0, 0), - Pack(-16, 1), - Pack(-37, 16), - Pack(-43, 35), - Pack(-50, 52), - Pack(-71, 101), - Pack(45, 105), + Pack(5, -16), + Pack(-8, 1), + Pack(2, -6), + Pack(19, 11), + Pack(-15, 63), + Pack(56, 122), ], [ Pack(0, 0), - Pack(-14, -2), - Pack(-55, 11), - Pack(-60, 33), - Pack(-88, 57), - Pack(-98, 113), - Pack(11, 76), + Pack(-9, 1), + Pack(-37, 28), + Pack(37, 12), + Pack(-43, 63), + Pack(23, 87), + Pack(63, 122), ], [ Pack(0, 0), - Pack(-23, 5), - Pack(-37, 11), - Pack(-85, 39), - Pack(-82, 54), - Pack(-65, 97), - Pack(40, 65), + Pack(9, 9), + Pack(-2, 3), + Pack(12, 35), + Pack(-1, 51), + Pack(-72, 69), + Pack(112, 115), + ], + [ + Pack(0, 0), + Pack(47, -7), + Pack(-12, 25), + Pack(35, 29), + Pack(43, 33), + Pack(-29, 69), + Pack(88, 104), + ], + [ + Pack(0, 0), + Pack(91, -10), + Pack(38, 10), + Pack(34, 26), + Pack(19, 39), + Pack(12, 53), + Pack(125, 80), + ], + [ + Pack(0, 0), + Pack(117, -22), + Pack(45, 5), + Pack(-4, 32), + Pack(-35, 65), + Pack(20, 66), + Pack(101, 99), ], [ Pack(0, 0), - Pack(-32, 7), - Pack(-48, 11), - Pack(-79, 36), - Pack(-80, 49), - Pack(-66, 86), - Pack(62, 57), + Pack(23, -2), + Pack(1, 18), + Pack(-5, 20), + Pack(54, 31), + Pack(-43, 53), + Pack(9, 132), ], [ Pack(0, 0), - Pack(-36, 12), - Pack(-27, 7), - Pack(-72, 32), - Pack(-59, 40), - Pack(-63, 73), - Pack(16, 62), + Pack(-20, 1), + Pack(-75, 6), + Pack(26, 7), + Pack(-5, 40), + Pack(-46, 66), + Pack(-36, 138), ], + ]; + + public static readonly TaperedEvaluationTermByRank[] PassedPawnBonusNoEnemiesAheadBonus = + [ [ Pack(0, 0), + Pack(-14, -8), + Pack(-1, 12), + Pack(-26, 16), Pack(-25, 11), - Pack(-29, 2), - Pack(-39, 23), - Pack(-55, 42), - Pack(-23, 74), - Pack(31, 63), + Pack(-49, 28), + Pack(-54, 70), + ], + [ + Pack(0, 0), + Pack(-3, -6), + Pack(-12, 9), + Pack(-25, 9), + Pack(-18, 11), + Pack(17, 14), + Pack(-27, 66), + ], + [ + Pack(0, 0), + Pack(-2, -4), + Pack(-13, -3), + Pack(-31, 11), + Pack(-26, 20), + Pack(-6, 47), + Pack(11, 21), + ], + [ + Pack(0, 0), + Pack(-2, -7), + Pack(-31, 1), + Pack(-47, 8), + Pack(-64, 18), + Pack(-65, 57), + Pack(-58, 51), + ], + [ + Pack(0, 0), + Pack(4, 1), + Pack(1, -5), + Pack(-50, 12), + Pack(-51, 29), + Pack(-16, 35), + Pack(8, 14), + ], + [ + Pack(0, 0), + Pack(-9, 6), + Pack(-20, -2), + Pack(-35, 6), + Pack(-65, 18), + Pack(17, 9), + Pack(-37, 34), + ], + [ + Pack(0, 0), + Pack(-8, 5), + Pack(-13, -4), + Pack(-24, 6), + Pack(-35, 21), + Pack(4, 20), + Pack(34, 23), + ], + [ + Pack(0, 0), + Pack(-15, 19), + Pack(-13, -2), + Pack(-18, 1), + Pack(-34, 20), + Pack(-14, 39), + Pack(-4, 27), + ], + [ + Pack(0, 0), + Pack(-15, -3), + Pack(-31, 12), + Pack(-32, 20), + Pack(-37, 26), + Pack(-61, 58), + Pack(29, 69), + ], + [ + Pack(0, 0), + Pack(-17, -5), + Pack(-50, 7), + Pack(-44, 17), + Pack(-73, 31), + Pack(-86, 72), + Pack(1, 39), + ], + [ + Pack(0, 0), + Pack(-26, 3), + Pack(-31, 7), + Pack(-68, 23), + Pack(-68, 29), + Pack(-57, 57), + Pack(31, 28), ], [ Pack(0, 0), - Pack(-56, 9), - Pack(-25, -2), - Pack(-33, 17), - Pack(-55, 40), - Pack(-28, 66), - Pack(39, 64), + Pack(-36, 7), + Pack(-44, 8), + Pack(-63, 21), + Pack(-67, 25), + Pack(-55, 46), + Pack(50, 19), ], [ Pack(0, 0), - Pack(-23, 4), - Pack(-27, 17), - Pack(-24, 38), - Pack(-52, 62), - Pack(-64, 107), - Pack(-21, 117), + Pack(-37, 10), + Pack(-21, 3), + Pack(-58, 17), + Pack(-47, 16), + Pack(-54, 32), + Pack(-0, 25), ], [ Pack(0, 0), - Pack(84, -18), - Pack(108, -7), - Pack(-31, 41), - Pack(-29, 78), - Pack(-180, 139), - Pack(-83, 127), + Pack(-23, 8), + Pack(-25, -1), + Pack(-28, 10), + Pack(-49, 20), + Pack(-13, 32), + Pack(20, 23), ], [ Pack(0, 0), - Pack(-64, 8), - Pack(63, -17), - Pack(26, 34), - Pack(-41, 71), - Pack(-138, 145), - Pack(-64, 125), + Pack(-52, 7), + Pack(-24, -4), + Pack(-23, 5), + Pack(-50, 20), + Pack(-17, 22), + Pack(35, 21), + ], + [ + Pack(0, 0), + Pack(-18, -1), + Pack(-23, 14), + Pack(-3, 22), + Pack(-30, 34), + Pack(-43, 64), + Pack(-47, 85), + ], + [ + Pack(0, 0), + Pack(81, -22), + Pack(111, -11), + Pack(-9, 24), + Pack(-4, 52), + Pack(-160, 97), + Pack(-104, 95), ], [ Pack(0, 0), - Pack(-23, 15), - Pack(5, 3), - Pack(-31, 39), - Pack(-38, 66), - Pack(-260, 149), - Pack(-38, 111), + Pack(-71, 6), + Pack(65, -19), + Pack(43, 19), + Pack(-10, 44), + Pack(-117, 103), + Pack(-99, 96), ], [ Pack(0, 0), - Pack(-74, 23), - Pack(47, 2), - Pack(-25, 29), - Pack(-139, 77), - Pack(-160, 118), - Pack(-21, 100), + Pack(-17, 14), + Pack(6, 3), + Pack(-15, 26), + Pack(-12, 41), + Pack(-238, 108), + Pack(-67, 83), ], [ Pack(0, 0), - Pack(-14, 11), - Pack(36, 12), - Pack(-36, 32), - Pack(-73, 65), - Pack(-190, 129), - Pack(-11, 109), + Pack(-86, 26), + Pack(50, 4), + Pack(-6, 16), + Pack(-111, 50), + Pack(-146, 76), + Pack(-37, 68), ], [ Pack(0, 0), - Pack(-37, 1), - Pack(67, -10), - Pack(40, 15), - Pack(-102, 72), - Pack(-197, 123), - Pack(-44, 99), + Pack(-9, 9), + Pack(47, 8), + Pack(-10, 15), + Pack(-35, 35), + Pack(-165, 86), + Pack(-36, 79), ], [ Pack(0, 0), - Pack(10, -9), - Pack(-45, -3), - Pack(-68, 20), - Pack(-30, 61), - Pack(-189, 101), - Pack(7, 54), + Pack(-34, -2), + Pack(75, -16), + Pack(59, -2), + Pack(-71, 44), + Pack(-173, 78), + Pack(-69, 69), + ], + [ + Pack(0, 0), + Pack(17, -14), + Pack(-35, -9), + Pack(-48, 4), + Pack(-6, 35), + Pack(-169, 58), + Pack(-36, 28), + ], + ]; + + public static readonly TaperedEvaluationTermByRank[] PassedPawnBonusNoEnemiesAheadEnemyBonus = + [ + [ + Pack(0, 0), + Pack(34, -18), + Pack(31, -17), + Pack(-17, 21), + Pack(-33, 41), + Pack(-16, 72), + Pack(9, 25), + ], + [ + Pack(0, 0), + Pack(8, -2), + Pack(2, 5), + Pack(5, 16), + Pack(-13, 19), + Pack(-40, 86), + Pack(-30, 102), + ], + [ + Pack(0, 0), + Pack(27, -2), + Pack(37, -13), + Pack(20, -5), + Pack(22, 8), + Pack(6, 73), + Pack(61, 32), + ], + [ + Pack(0, 0), + Pack(28, -3), + Pack(15, 9), + Pack(50, 5), + Pack(43, 16), + Pack(41, 46), + Pack(-36, 66), + ], + [ + Pack(0, 0), + Pack(21, 6), + Pack(32, 5), + Pack(12, 17), + Pack(70, -2), + Pack(52, 63), + Pack(2, 52), + ], + [ + Pack(0, 0), + Pack(52, -22), + Pack(56, -14), + Pack(-5, 12), + Pack(22, 9), + Pack(41, 38), + Pack(104, 48), + ], + [ + Pack(0, 0), + Pack(-8, 7), + Pack(-7, -0), + Pack(-0, 8), + Pack(14, 10), + Pack(-18, 70), + Pack(-52, 135), + ], + [ + Pack(0, 0), + Pack(1, -1), + Pack(-7, 7), + Pack(-2, -1), + Pack(-4, 18), + Pack(-15, 72), + Pack(-42, 104), + ], + [ + Pack(0, 0), + Pack(2, -8), + Pack(-24, 1), + Pack(-17, -1), + Pack(-16, 18), + Pack(-20, 33), + Pack(72, -3), + ], + [ + Pack(0, 0), + Pack(14, 3), + Pack(-21, 5), + Pack(-21, 16), + Pack(0, 19), + Pack(3, 19), + Pack(45, 30), + ], + [ + Pack(0, 0), + Pack(3, 2), + Pack(-14, 14), + Pack(-11, 17), + Pack(-10, 25), + Pack(20, 14), + Pack(-21, 38), + ], + [ + Pack(0, 0), + Pack(-7, 9), + Pack(2, 12), + Pack(-10, 22), + Pack(-8, 24), + Pack(30, 16), + Pack(21, 41), + ], + [ + Pack(0, 0), + Pack(14, 0), + Pack(-11, 7), + Pack(-7, 9), + Pack(7, 11), + Pack(17, 15), + Pack(109, -5), + ], + [ + Pack(0, 0), + Pack(-3, -1), + Pack(3, -10), + Pack(-15, 1), + Pack(-14, 13), + Pack(-31, 34), + Pack(-6, 29), + ], + [ + Pack(0, 0), + Pack(-23, 0), + Pack(-15, -9), + Pack(-21, 5), + Pack(-27, 22), + Pack(-48, 46), + Pack(-34, 49), + ], + [ + Pack(0, 0), + Pack(-20, -4), + Pack(-3, -8), + Pack(-86, 35), + Pack(-126, 68), + Pack(-183, 83), + Pack(-53, 53), + ], + [ + Pack(0, 0), + Pack(-43, -3), + Pack(6, -18), + Pack(-87, 25), + Pack(-144, 50), + Pack(-294, 85), + Pack(-73, 42), + ], + [ + Pack(0, 0), + Pack(-63, -2), + Pack(-66, 13), + Pack(-96, 13), + Pack(-204, 60), + Pack(-178, 77), + Pack(-86, 40), + ], + [ + Pack(0, 0), + Pack(-84, 27), + Pack(-17, -4), + Pack(-73, 15), + Pack(-208, 74), + Pack(-241, 84), + Pack(-71, 48), + ], + [ + Pack(0, 0), + Pack(-159, 47), + Pack(-76, 15), + Pack(-123, 30), + Pack(-160, 62), + Pack(-256, 95), + Pack(-62, 66), + ], + [ + Pack(0, 0), + Pack(-126, 38), + Pack(-86, 15), + Pack(-67, 22), + Pack(-102, 30), + Pack(-238, 78), + Pack(-73, 38), + ], + [ + Pack(0, 0), + Pack(-103, 20), + Pack(-36, -11), + Pack(-34, 16), + Pack(-193, 63), + Pack(-156, 69), + Pack(-104, 46), + ], + [ + Pack(0, 0), + Pack(-17, -16), + Pack(53, -10), + Pack(-97, 29), + Pack(-140, 49), + Pack(-195, 95), + Pack(-78, 57), ], ]; @@ -6666,91 +7088,91 @@ public static class EvaluationParams Pack(20, 16), Pack(-2, 12), Pack(3, 25), - Pack(1, 16), - Pack(-20, 27), + Pack(2, 15), + Pack(-20, 28), ], [ Pack(21, 22), Pack(-2, 22), Pack(3, 37), Pack(5, 13), - Pack(-7, 15), + Pack(-7, 16), ], [ - Pack(19, 25), + Pack(19, 24), Pack(2, 13), Pack(7, 22), - Pack(8, -0), - Pack(-7, 24), + Pack(9, -0), + Pack(-7, 25), ], [ - Pack(20, 18), - Pack(2, 2), - Pack(7, 29), - Pack(7, 12), + Pack(20, 17), + Pack(2, 3), + Pack(6, 30), + Pack(8, 12), Pack(-31, 33), ], [ - Pack(19, 27), - Pack(5, 21), - Pack(7, 31), - Pack(7, 6), + Pack(20, 26), + Pack(5, 22), + Pack(7, 32), + Pack(7, 8), Pack(-8, 15), ], [ - Pack(20, 17), + Pack(21, 16), Pack(2, 15), - Pack(13, 21), + Pack(13, 22), Pack(2, 8), - Pack(-19, 28), + Pack(-18, 28), ], [ Pack(21, 30), Pack(-1, 19), Pack(4, 33), Pack(4, 12), - Pack(-9, 21), + Pack(-9, 22), ], [ - Pack(22, 30), + Pack(22, 29), Pack(-1, 23), Pack(7, 33), Pack(5, 14), Pack(-13, 30), ], [ - Pack(29, 10), + Pack(29, 9), Pack(2, 23), Pack(29, 11), Pack(3, 13), - Pack(-11, 16), + Pack(-12, 17), ], [ Pack(33, 6), - Pack(-4, 12), - Pack(49, 1), - Pack(-9, 22), + Pack(-5, 12), + Pack(48, 1), + Pack(-10, 22), Pack(-23, 45), ], [ - Pack(30, 8), - Pack(14, 4), - Pack(33, 2), - Pack(-8, 16), - Pack(-14, 27), + Pack(31, 8), + Pack(15, 4), + Pack(32, 2), + Pack(-11, 17), + Pack(-14, 28), ], [ - Pack(31, 8), - Pack(2, 8), - Pack(41, 3), - Pack(-16, 19), + Pack(32, 8), + Pack(1, 8), + Pack(40, 4), + Pack(-17, 20), Pack(3, 12), ], [ - Pack(26, 12), - Pack(9, 10), - Pack(30, 9), - Pack(-2, 15), + Pack(27, 12), + Pack(9, 9), + Pack(29, 10), + Pack(-3, 15), Pack(-10, 22), ], [ @@ -6758,7 +7180,7 @@ public static class EvaluationParams Pack(4, 14), Pack(10, 22), Pack(-3, 16), - Pack(-17, 23), + Pack(-18, 24), ], [ Pack(23, 14), @@ -6769,59 +7191,59 @@ public static class EvaluationParams ], [ Pack(19, 10), - Pack(10, 18), - Pack(36, 6), - Pack(-25, 34), - Pack(-74, 65), + Pack(5, 19), + Pack(38, 4), + Pack(-21, 34), + Pack(-75, 68), ], [ - Pack(42, 0), - Pack(67, 11), - Pack(105, -5), - Pack(-24, 24), - Pack(-14, 79), + Pack(43, 3), + Pack(65, 11), + Pack(117, -11), + Pack(-30, 26), + Pack(-12, 81), ], [ - Pack(37, -0), - Pack(82, 11), - Pack(127, 1), - Pack(-42, 41), - Pack(-105, 74), + Pack(37, 4), + Pack(78, 10), + Pack(139, -4), + Pack(-49, 43), + Pack(-100, 75), ], [ - Pack(22, -3), - Pack(117, 1), - Pack(162, -9), - Pack(-69, 51), - Pack(-102, 84), + Pack(25, 1), + Pack(119, -1), + Pack(176, -14), + Pack(-66, 51), + Pack(-97, 87), ], [ - Pack(36, -7), + Pack(35, -1), Pack(94, 1), - Pack(184, -16), - Pack(-22, 27), - Pack(-73, 82), + Pack(189, -19), + Pack(-31, 30), + Pack(-77, 85), ], [ - Pack(35, -3), - Pack(54, 27), - Pack(132, -12), - Pack(-23, 39), - Pack(-55, 62), + Pack(33, 1), + Pack(44, 29), + Pack(141, -16), + Pack(-24, 39), + Pack(-54, 63), ], [ - Pack(31, 2), - Pack(-55, 48), - Pack(92, 8), - Pack(-6, 29), - Pack(-37, 35), + Pack(29, 5), + Pack(-59, 48), + Pack(97, 6), + Pack(-7, 29), + Pack(-46, 38), ], [ - Pack(37, 3), - Pack(-24, 27), - Pack(49, 8), + Pack(38, 4), + Pack(-19, 25), + Pack(55, 5), Pack(3, 14), - Pack(8, -16), + Pack(5, -13), ], ]; diff --git a/tests/Lynx.Test/Model/PositionTest.cs b/tests/Lynx.Test/Model/PositionTest.cs index 9ff0a9187..c26e916c4 100644 --- a/tests/Lynx.Test/Model/PositionTest.cs +++ b/tests/Lynx.Test/Model/PositionTest.cs @@ -418,6 +418,7 @@ public void StaticEvaluation_PassedPawnBonus(string fen, BoardSquare square) if ((passedPawnsMask & position.OccupancyBitBoards[OppositeSide(position.Side)]) == 0) { expectedEval += UnpackMG(PassedPawnBonusNoEnemiesAheadBonus[0][rank]); + expectedEval += UnpackMG(PassedPawnBonusNoEnemiesAheadEnemyBonus[0][rank]); } Assert.AreEqual( @@ -425,6 +426,7 @@ public void StaticEvaluation_PassedPawnBonus(string fen, BoardSquare square) //(-4 * Configuration.EngineSettings.DoubledPawnPenalty.MG) + UnpackMG(IsolatedPawnPenalty) + UnpackMG(PassedPawnBonus[0][rank]) + + UnpackMG(PassedPawnEnemyBonus[0][rank]) + UnpackMG(FriendlyKingDistanceToPassedPawnBonus[friendlyKingDistance]) + UnpackMG(EnemyKingDistanceToPassedPawnPenalty[enemyKingDistance]), @@ -993,7 +995,7 @@ private static int AdditionalPieceEvaluation(Position position, Piece piece) { var pieceSquareIndex = bitBoard.GetLS1BIndex(); bitBoard.ResetLS1B(); - eval += UnpackMG(position.AdditionalPieceEvaluation(0, pieceSquareIndex, (int)piece, pieceSide, sameSideKingSquare, oppositeSideKingSquare, oppositeSidePawnAttacks)); + eval += UnpackMG(position.AdditionalPieceEvaluation(0, 0, pieceSquareIndex, (int)piece, pieceSide, sameSideKingSquare, oppositeSideKingSquare, oppositeSidePawnAttacks)); } return eval;