1# -*- coding: UTF-8 -*-
2import random
3
4from pychess.Utils.const import WHITE, BLACK, PAWN, KNIGHT, BISHOP, ROOK, QUEEN, KING
5
6# Polyglot opening books are indexed by 64-bit Zobrist hash keys.
7# The standard specifies the following Zobrist seed values.
8# The numbers in this file come from PolyGlot by Fabien Letouzey.
9# PolyGlot is available under the GNU GPL from http://wbec-ridderkerk.nl
10
11pieceHashes = [
12    [
13        [0x0000000000000000] * 64,
14        [0x5355f900c2a82dc7,
15         0x07fb9f855a997142,
16         0x5093417aa8a7ed5e,
17         0x7bcbc38da25a7f3c,
18         0x19fc8a768cf4b6d4,
19         0x637a7780decfc0d9,
20         0x8249a47aee0e41f7,
21         0x79ad695501e7d1e8,
22         0x14acbaf4777d5776,
23         0xf145b6beccdea195,
24         0xdabf2ac8201752fc,
25         0x24c3c94df9c8d3f6,
26         0xbb6e2924f03912ea,
27         0x0ce26c0b95c980d9,
28         0xa49cd132bfbf7cc4,
29         0xe99d662af4243939,
30         0x27e6ad7891165c3f,
31         0x8535f040b9744ff1,
32         0x54b3f4fa5f40d873,
33         0x72b12c32127fed2b,
34         0xee954d3c7b411f47,
35         0x9a85ac909a24eaa1,
36         0x70ac4cd9f04f21f5,
37         0xf9b89d3e99a075c2,
38         0x87b3e2b2b5c907b1,
39         0xa366e5b8c54f48b8,
40         0xae4a9346cc3f7cf2,
41         0x1920c04d47267bbd,
42         0x87bf02c6b49e2ae9,
43         0x092237ac237f3859,
44         0xff07f64ef8ed14d0,
45         0x8de8dca9f03cc54e,
46         0x9c1633264db49c89,
47         0xb3f22c3d0b0b38ed,
48         0x390e5fb44d01144b,
49         0x5bfea5b4712768e9,
50         0x1e1032911fa78984,
51         0x9a74acb964e78cb3,
52         0x4f80f7a035dafb04,
53         0x6304d09a0b3738c4,
54         0x2171e64683023a08,
55         0x5b9b63eb9ceff80c,
56         0x506aacf489889342,
57         0x1881afc9a3a701d6,
58         0x6503080440750644,
59         0xdfd395339cdbf4a7,
60         0xef927dbcf00c20f2,
61         0x7b32f7d1e03680ec,
62         0xb9fd7620e7316243,
63         0x05a7e8a57db91b77,
64         0xb5889c6e15630a75,
65         0x4a750a09ce9573f7,
66         0xcf464cec899a2f8a,
67         0xf538639ce705b824,
68         0x3c79a0ff5580ef7f,
69         0xede6c87f8477609d,
70         0x799e81f05bc93f31,
71         0x86536b8cf3428a8c,
72         0x97d7374c60087b73,
73         0xa246637cff328532,
74         0x043fcae60cc0eba0,
75         0x920e449535dd359e,
76         0x70eb093b15b290cc,
77         0x73a1921916591cbd, ],
78        [0xc547f57e42a7444e,
79         0x78e37644e7cad29e,
80         0xfe9a44e9362f05fa,
81         0x08bd35cc38336615,
82         0x9315e5eb3a129ace,
83         0x94061b871e04df75,
84         0xdf1d9f9d784ba010,
85         0x3bba57b68871b59d,
86         0xd2b7adeeded1f73f,
87         0xf7a255d83bc373f8,
88         0xd7f4f2448c0ceb81,
89         0xd95be88cd210ffa7,
90         0x336f52f8ff4728e7,
91         0xa74049dac312ac71,
92         0xa2f61bb6e437fdb5,
93         0x4f2a5cb07f6a35b3,
94         0x87d380bda5bf7859,
95         0x16b9f7e06c453a21,
96         0x7ba2484c8a0fd54e,
97         0xf3a678cad9a2e38c,
98         0x39b0bf7dde437ba2,
99         0xfcaf55c1bf8a4424,
100         0x18fcf680573fa594,
101         0x4c0563b89f495ac3,
102         0x40e087931a00930d,
103         0x8cffa9412eb642c1,
104         0x68ca39053261169f,
105         0x7a1ee967d27579e2,
106         0x9d1d60e5076f5b6f,
107         0x3810e399b6f65ba2,
108         0x32095b6d4ab5f9b1,
109         0x35cab62109dd038a,
110         0xa90b24499fcfafb1,
111         0x77a225a07cc2c6bd,
112         0x513e5e634c70e331,
113         0x4361c0ca3f692f12,
114         0xd941aca44b20a45b,
115         0x528f7c8602c5807b,
116         0x52ab92beb9613989,
117         0x9d1dfa2efc557f73,
118         0x722ff175f572c348,
119         0x1d1260a51107fe97,
120         0x7a249a57ec0c9ba2,
121         0x04208fe9e8f7f2d6,
122         0x5a110c6058b920a0,
123         0x0cd9a497658a5698,
124         0x56fd23c8f9715a4c,
125         0x284c847b9d887aae,
126         0x04feabfbbdb619cb,
127         0x742e1e651c60ba83,
128         0x9a9632e65904ad3c,
129         0x881b82a13b51b9e2,
130         0x506e6744cd974924,
131         0xb0183db56ffc6a79,
132         0x0ed9b915c66ed37e,
133         0x5e11e86d5873d484,
134         0xf678647e3519ac6e,
135         0x1b85d488d0f20cc5,
136         0xdab9fe6525d89021,
137         0x0d151d86adb73615,
138         0xa865a54edcc0f019,
139         0x93c42566aef98ffb,
140         0x99e7afeabe000731,
141         0x48cbff086ddf285a, ],
142        [0x23b70edb1955c4bf,
143         0xc330de426430f69d,
144         0x4715ed43e8a45c0a,
145         0xa8d7e4dab780a08d,
146         0x0572b974f03ce0bb,
147         0xb57d2e985e1419c7,
148         0xe8d9ecbe2cf3d73f,
149         0x2fe4b17170e59750,
150         0x11317ba87905e790,
151         0x7fbf21ec8a1f45ec,
152         0x1725cabfcb045b00,
153         0x964e915cd5e2b207,
154         0x3e2b8bcbf016d66d,
155         0xbe7444e39328a0ac,
156         0xf85b2b4fbcde44b7,
157         0x49353fea39ba63b1,
158         0x1dd01aafcd53486a,
159         0x1fca8a92fd719f85,
160         0xfc7c95d827357afa,
161         0x18a6a990c8b35ebd,
162         0xcccb7005c6b9c28d,
163         0x3bdbb92c43b17f26,
164         0xaa70b5b4f89695a2,
165         0xe94c39a54a98307f,
166         0xb7a0b174cff6f36e,
167         0xd4dba84729af48ad,
168         0x2e18bc1ad9704a68,
169         0x2de0966daf2f8b1c,
170         0xb9c11d5b1e43a07e,
171         0x64972d68dee33360,
172         0x94628d38d0c20584,
173         0xdbc0d2b6ab90a559,
174         0xd2733c4335c6a72f,
175         0x7e75d99d94a70f4d,
176         0x6ced1983376fa72b,
177         0x97fcaacbf030bc24,
178         0x7b77497b32503b12,
179         0x8547eddfb81ccb94,
180         0x79999cdff70902cb,
181         0xcffe1939438e9b24,
182         0x829626e3892d95d7,
183         0x92fae24291f2b3f1,
184         0x63e22c147b9c3403,
185         0xc678b6d860284a1c,
186         0x5873888850659ae7,
187         0x0981dcd296a8736d,
188         0x9f65789a6509a440,
189         0x9ff38fed72e9052f,
190         0xe479ee5b9930578c,
191         0xe7f28ecd2d49eecd,
192         0x56c074a581ea17fe,
193         0x5544f7d774b14aef,
194         0x7b3f0195fc6f290f,
195         0x12153635b2c0cf57,
196         0x7f5126dbba5e0ca7,
197         0x7a76956c3eafb413,
198         0x3d5774a11d31ab39,
199         0x8a1b083821f40cb4,
200         0x7b4a38e32537df62,
201         0x950113646d1d6e03,
202         0x4da8979a0041e8a9,
203         0x3bc36e078f7515d7,
204         0x5d0a12f27ad310d1,
205         0x7f9d1a2e1ebe1327, ],
206        [0xa09e8c8c35ab96de,
207         0xfa7e393983325753,
208         0xd6b6d0ecc617c699,
209         0xdfea21ea9e7557e3,
210         0xb67c1fa481680af8,
211         0xca1e3785a9e724e5,
212         0x1cfc8bed0d681639,
213         0xd18d8549d140caea,
214         0x4ed0fe7e9dc91335,
215         0xe4dbf0634473f5d2,
216         0x1761f93a44d5aefe,
217         0x53898e4c3910da55,
218         0x734de8181f6ec39a,
219         0x2680b122baa28d97,
220         0x298af231c85bafab,
221         0x7983eed3740847d5,
222         0x66c1a2a1a60cd889,
223         0x9e17e49642a3e4c1,
224         0xedb454e7badc0805,
225         0x50b704cab602c329,
226         0x4cc317fb9cddd023,
227         0x66b4835d9eafea22,
228         0x219b97e26ffc81bd,
229         0x261e4e4c0a333a9d,
230         0x1fe2cca76517db90,
231         0xd7504dfa8816edbb,
232         0xb9571fa04dc089c8,
233         0x1ddc0325259b27de,
234         0xcf3f4688801eb9aa,
235         0xf4f5d05c10cab243,
236         0x38b6525c21a42b0e,
237         0x36f60e2ba4fa6800,
238         0xeb3593803173e0ce,
239         0x9c4cd6257c5a3603,
240         0xaf0c317d32adaa8a,
241         0x258e5a80c7204c4b,
242         0x8b889d624d44885d,
243         0xf4d14597e660f855,
244         0xd4347f66ec8941c3,
245         0xe699ed85b0dfb40d,
246         0x2472f6207c2d0484,
247         0xc2a1e7b5b459aeb5,
248         0xab4f6451cc1d45ec,
249         0x63767572ae3d6174,
250         0xa59e0bd101731a28,
251         0x116d0016cb948f09,
252         0x2cf9c8ca052f6e9f,
253         0x0b090a7560a968e3,
254         0xabeeddb2dde06ff1,
255         0x58efc10b06a2068d,
256         0xc6e57a78fbd986e0,
257         0x2eab8ca63ce802d7,
258         0x14a195640116f336,
259         0x7c0828dd624ec390,
260         0xd74bbe77e6116ac7,
261         0x804456af10f5fb53,
262         0xebe9ea2adf4321c7,
263         0x03219a39ee587a30,
264         0x49787fef17af9924,
265         0xa1e9300cd8520548,
266         0x5b45e522e4b1b4ef,
267         0xb49c3b3995091a36,
268         0xd4490ad526f14431,
269         0x12a8f216af9418c2, ],
270        [0x6ffe73e81b637fb3,
271         0xddf957bc36d8b9ca,
272         0x64d0e29eea8838b3,
273         0x08dd9bdfd96b9f63,
274         0x087e79e5a57d1d13,
275         0xe328e230e3e2b3fb,
276         0x1c2559e30f0946be,
277         0x720bf5f26f4d2eaa,
278         0xb0774d261cc609db,
279         0x443f64ec5a371195,
280         0x4112cf68649a260e,
281         0xd813f2fab7f5c5ca,
282         0x660d3257380841ee,
283         0x59ac2c7873f910a3,
284         0xe846963877671a17,
285         0x93b633abfa3469f8,
286         0xc0c0f5a60ef4cdcf,
287         0xcaf21ecd4377b28c,
288         0x57277707199b8175,
289         0x506c11b9d90e8b1d,
290         0xd83cc2687a19255f,
291         0x4a29c6465a314cd1,
292         0xed2df21216235097,
293         0xb5635c95ff7296e2,
294         0x22af003ab672e811,
295         0x52e762596bf68235,
296         0x9aeba33ac6ecc6b0,
297         0x944f6de09134dfb6,
298         0x6c47bec883a7de39,
299         0x6ad047c430a12104,
300         0xa5b1cfdba0ab4067,
301         0x7c45d833aff07862,
302         0x5092ef950a16da0b,
303         0x9338e69c052b8e7b,
304         0x455a4b4cfe30e3f5,
305         0x6b02e63195ad0cf8,
306         0x6b17b224bad6bf27,
307         0xd1e0ccd25bb9c169,
308         0xde0c89a556b9ae70,
309         0x50065e535a213cf6,
310         0x9c1169fa2777b874,
311         0x78edefd694af1eed,
312         0x6dc93d9526a50e68,
313         0xee97f453f06791ed,
314         0x32ab0edb696703d3,
315         0x3a6853c7e70757a7,
316         0x31865ced6120f37d,
317         0x67fef95d92607890,
318         0x1f2b1d1f15f6dc9c,
319         0xb69e38a8965c6b65,
320         0xaa9119ff184cccf4,
321         0xf43c732873f24c13,
322         0xfb4a3d794a9a80d2,
323         0x3550c2321fd6109c,
324         0x371f77e76bb8417e,
325         0x6bfa9aae5ec05779,
326         0xcd04f3ff001a4778,
327         0xe3273522064480ca,
328         0x9f91508bffcfc14a,
329         0x049a7f41061a9e60,
330         0xfcb6be43a9f2fe9b,
331         0x08de8a1c7797da9b,
332         0x8f9887e6078735a1,
333         0xb5b4071dbfc73a66, ],
334        [0x55b6344cf97aafae,
335         0xb862225b055b6960,
336         0xcac09afbddd2cdb4,
337         0xdaf8e9829fe96b5f,
338         0xb5fdfc5d3132c498,
339         0x310cb380db6f7503,
340         0xe87fbb46217a360e,
341         0x2102ae466ebb1148,
342         0xf8549e1a3aa5e00d,
343         0x07a69afdcc42261a,
344         0xc4c118bfe78feaae,
345         0xf9f4892ed96bd438,
346         0x1af3dbe25d8f45da,
347         0xf5b4b0b0d2deeeb4,
348         0x962aceefa82e1c84,
349         0x046e3ecaaf453ce9,
350         0xf05d129681949a4c,
351         0x964781ce734b3c84,
352         0x9c2ed44081ce5fbd,
353         0x522e23f3925e319e,
354         0x177e00f9fc32f791,
355         0x2bc60a63a6f3b3f2,
356         0x222bbfae61725606,
357         0x486289ddcc3d6780,
358         0x7dc7785b8efdfc80,
359         0x8af38731c02ba980,
360         0x1fab64ea29a2ddf7,
361         0xe4d9429322cd065a,
362         0x9da058c67844f20c,
363         0x24c0e332b70019b0,
364         0x233003b5a6cfe6ad,
365         0xd586bd01c5c217f6,
366         0x5e5637885f29bc2b,
367         0x7eba726d8c94094b,
368         0x0a56a5f0bfe39272,
369         0xd79476a84ee20d06,
370         0x9e4c1269baa4bf37,
371         0x17efee45b0dee640,
372         0x1d95b0a5fcf90bc6,
373         0x93cbe0b699c2585d,
374         0x65fa4f227a2b6d79,
375         0xd5f9e858292504d5,
376         0xc2b5a03f71471a6f,
377         0x59300222b4561e00,
378         0xce2f8642ca0712dc,
379         0x7ca9723fbb2e8988,
380         0x2785338347f2ba08,
381         0xc61bb3a141e50e8c,
382         0x150f361dab9dec26,
383         0x9f6a419d382595f4,
384         0x64a53dc924fe7ac9,
385         0x142de49fff7a7c3d,
386         0x0c335248857fa9e7,
387         0x0a9c32d5eae45305,
388         0xe6c42178c4bbb92e,
389         0x71f1ce2490d20b07,
390         0xf1bcc3d275afe51a,
391         0xe728e8c83c334074,
392         0x96fbf83a12884624,
393         0x81a1549fd6573da5,
394         0x5fa7867caf35e149,
395         0x56986e2ef3ed091b,
396         0x917f1dd5f8886c61,
397         0xd20d8c88c8ffe65f, ],
398    ],
399    [
400        [0x0000000000000000] * 64,
401        [0x9d39247e33776d41,
402         0x2af7398005aaa5c7,
403         0x44db015024623547,
404         0x9c15f73e62a76ae2,
405         0x75834465489c0c89,
406         0x3290ac3a203001bf,
407         0x0fbbad1f61042279,
408         0xe83a908ff2fb60ca,
409         0x0d7e765d58755c10,
410         0x1a083822ceafe02d,
411         0x9605d5f0e25ec3b0,
412         0xd021ff5cd13a2ed5,
413         0x40bdf15d4a672e32,
414         0x011355146fd56395,
415         0x5db4832046f3d9e5,
416         0x239f8b2d7ff719cc,
417         0x05d1a1ae85b49aa1,
418         0x679f848f6e8fc971,
419         0x7449bbff801fed0b,
420         0x7d11cdb1c3b7adf0,
421         0x82c7709e781eb7cc,
422         0xf3218f1c9510786c,
423         0x331478f3af51bbe6,
424         0x4bb38de5e7219443,
425         0xaa649c6ebcfd50fc,
426         0x8dbd98a352afd40b,
427         0x87d2074b81d79217,
428         0x19f3c751d3e92ae1,
429         0xb4ab30f062b19abf,
430         0x7b0500ac42047ac4,
431         0xc9452ca81a09d85d,
432         0x24aa6c514da27500,
433         0x4c9f34427501b447,
434         0x14a68fd73c910841,
435         0xa71b9b83461cbd93,
436         0x03488b95b0f1850f,
437         0x637b2b34ff93c040,
438         0x09d1bc9a3dd90a94,
439         0x3575668334a1dd3b,
440         0x735e2b97a4c45a23,
441         0x18727070f1bd400b,
442         0x1fcbacd259bf02e7,
443         0xd310a7c2ce9b6555,
444         0xbf983fe0fe5d8244,
445         0x9f74d14f7454a824,
446         0x51ebdc4ab9ba3035,
447         0x5c82c505db9ab0fa,
448         0xfcf7fe8a3430b241,
449         0x3253a729b9ba3dde,
450         0x8c74c368081b3075,
451         0xb9bc6c87167c33e7,
452         0x7ef48f2b83024e20,
453         0x11d505d4c351bd7f,
454         0x6568fca92c76a243,
455         0x4de0b0f40f32a7b8,
456         0x96d693460cc37e5d,
457         0x42e240cb63689f2f,
458         0x6d2bdcdae2919661,
459         0x42880b0236e4d951,
460         0x5f0f4a5898171bb6,
461         0x39f890f579f92f88,
462         0x93c5b5f47356388b,
463         0x63dc359d8d231b78,
464         0xec16ca8aea98ad76, ],
465        [0x56436c9fe1a1aa8d,
466         0xefac4b70633b8f81,
467         0xbb215798d45df7af,
468         0x45f20042f24f1768,
469         0x930f80f4e8eb7462,
470         0xff6712ffcfd75ea1,
471         0xae623fd67468aa70,
472         0xdd2c5bc84bc8d8fc,
473         0x7eed120d54cf2dd9,
474         0x22fe545401165f1c,
475         0xc91800e98fb99929,
476         0x808bd68e6ac10365,
477         0xdec468145b7605f6,
478         0x1bede3a3aef53302,
479         0x43539603d6c55602,
480         0xaa969b5c691ccb7a,
481         0xa87832d392efee56,
482         0x65942c7b3c7e11ae,
483         0xded2d633cad004f6,
484         0x21f08570f420e565,
485         0xb415938d7da94e3c,
486         0x91b859e59ecb6350,
487         0x10cff333e0ed804a,
488         0x28aed140be0bb7dd,
489         0xc5cc1d89724fa456,
490         0x5648f680f11a2741,
491         0x2d255069f0b7dab3,
492         0x9bc5a38ef729abd4,
493         0xef2f054308f6a2bc,
494         0xaf2042f5cc5c2858,
495         0x480412bab7f5be2a,
496         0xaef3af4a563dfe43,
497         0x19afe59ae451497f,
498         0x52593803dff1e840,
499         0xf4f076e65f2ce6f0,
500         0x11379625747d5af3,
501         0xbce5d2248682c115,
502         0x9da4243de836994f,
503         0x066f70b33fe09017,
504         0x4dc4de189b671a1c,
505         0x51039ab7712457c3,
506         0xc07a3f80c31fb4b4,
507         0xb46ee9c5e64a6e7c,
508         0xb3819a42abe61c87,
509         0x21a007933a522a20,
510         0x2df16f761598aa4f,
511         0x763c4a1371b368fd,
512         0xf793c46702e086a0,
513         0xd7288e012aeb8d31,
514         0xde336a2a4bc1c44b,
515         0x0bf692b38d079f23,
516         0x2c604a7a177326b3,
517         0x4850e73e03eb6064,
518         0xcfc447f1e53c8e1b,
519         0xb05ca3f564268d99,
520         0x9ae182c8bc9474e8,
521         0xa4fc4bd4fc5558ca,
522         0xe755178d58fc4e76,
523         0x69b97db1a4c03dfe,
524         0xf9b5b7c4acc67c96,
525         0xfc6a82d64b8655fb,
526         0x9c684cb6c4d24417,
527         0x8ec97d2917456ed0,
528         0x6703df9d2924e97e, ],
529        [0x7f9b6af1ebf78baf,
530         0x58627e1a149bba21,
531         0x2cd16e2abd791e33,
532         0xd363eff5f0977996,
533         0x0ce2a38c344a6eed,
534         0x1a804aadb9cfa741,
535         0x907f30421d78c5de,
536         0x501f65edb3034d07,
537         0x37624ae5a48fa6e9,
538         0x957baf61700cff4e,
539         0x3a6c27934e31188a,
540         0xd49503536abca345,
541         0x088e049589c432e0,
542         0xf943aee7febf21b8,
543         0x6c3b8e3e336139d3,
544         0x364f6ffa464ee52e,
545         0xd60f6dcedc314222,
546         0x56963b0dca418fc0,
547         0x16f50edf91e513af,
548         0xef1955914b609f93,
549         0x565601c0364e3228,
550         0xecb53939887e8175,
551         0xbac7a9a18531294b,
552         0xb344c470397bba52,
553         0x65d34954daf3cebd,
554         0xb4b81b3fa97511e2,
555         0xb422061193d6f6a7,
556         0x071582401c38434d,
557         0x7a13f18bbedc4ff5,
558         0xbc4097b116c524d2,
559         0x59b97885e2f2ea28,
560         0x99170a5dc3115544,
561         0x6f423357e7c6a9f9,
562         0x325928ee6e6f8794,
563         0xd0e4366228b03343,
564         0x565c31f7de89ea27,
565         0x30f5611484119414,
566         0xd873db391292ed4f,
567         0x7bd94e1d8e17debc,
568         0xc7d9f16864a76e94,
569         0x947ae053ee56e63c,
570         0xc8c93882f9475f5f,
571         0x3a9bf55ba91f81ca,
572         0xd9a11fbb3d9808e4,
573         0x0fd22063edc29fca,
574         0xb3f256d8aca0b0b9,
575         0xb03031a8b4516e84,
576         0x35dd37d5871448af,
577         0xe9f6082b05542e4e,
578         0xebfafa33d7254b59,
579         0x9255abb50d532280,
580         0xb9ab4ce57f2d34f3,
581         0x693501d628297551,
582         0xc62c58f97dd949bf,
583         0xcd454f8f19c5126a,
584         0xbbe83f4ecc2bdecb,
585         0xdc842b7e2819e230,
586         0xba89142e007503b8,
587         0xa3bc941d0a5061cb,
588         0xe9f6760e32cd8021,
589         0x09c7e552bc76492f,
590         0x852f54934da55cc9,
591         0x8107fccf064fcf56,
592         0x098954d51fff6580, ],
593        [0xda3a361b1c5157b1,
594         0xdcdd7d20903d0c25,
595         0x36833336d068f707,
596         0xce68341f79893389,
597         0xab9090168dd05f34,
598         0x43954b3252dc25e5,
599         0xb438c2b67f98e5e9,
600         0x10dcd78e3851a492,
601         0xdbc27ab5447822bf,
602         0x9b3cdb65f82ca382,
603         0xb67b7896167b4c84,
604         0xbfced1b0048eac50,
605         0xa9119b60369ffebd,
606         0x1fff7ac80904bf45,
607         0xac12fb171817eee7,
608         0xaf08da9177dda93d,
609         0x1b0cab936e65c744,
610         0xb559eb1d04e5e932,
611         0xc37b45b3f8d6f2ba,
612         0xc3a9dc228caac9e9,
613         0xf3b8b6675a6507ff,
614         0x9fc477de4ed681da,
615         0x67378d8eccef96cb,
616         0x6dd856d94d259236,
617         0xa319ce15b0b4db31,
618         0x073973751f12dd5e,
619         0x8a8e849eb32781a5,
620         0xe1925c71285279f5,
621         0x74c04bf1790c0efe,
622         0x4dda48153c94938a,
623         0x9d266d6a1cc0542c,
624         0x7440fb816508c4fe,
625         0x13328503df48229f,
626         0xd6bf7baee43cac40,
627         0x4838d65f6ef6748f,
628         0x1e152328f3318dea,
629         0x8f8419a348f296bf,
630         0x72c8834a5957b511,
631         0xd7a023a73260b45c,
632         0x94ebc8abcfb56dae,
633         0x9fc10d0f989993e0,
634         0xde68a2355b93cae6,
635         0xa44cfe79ae538bbe,
636         0x9d1d84fcce371425,
637         0x51d2b1ab2ddfb636,
638         0x2fd7e4b9e72cd38c,
639         0x65ca5b96b7552210,
640         0xdd69a0d8ab3b546d,
641         0x604d51b25fbf70e2,
642         0x73aa8a564fb7ac9e,
643         0x1a8c1e992b941148,
644         0xaac40a2703d9bea0,
645         0x764dbeae7fa4f3a6,
646         0x1e99b96e70a9be8b,
647         0x2c5e9deb57ef4743,
648         0x3a938fee32d29981,
649         0x26e6db8ffdf5adfe,
650         0x469356c504ec9f9d,
651         0xc8763c5b08d1908c,
652         0x3f6c6af859d80055,
653         0x7f7cc39420a3a545,
654         0x9bfb227ebdf4c5ce,
655         0x89039d79d6fc5c5c,
656         0x8fe88b57305e2ab6, ],
657        [0x001f837cc7350524,
658         0x1877b51e57a764d5,
659         0xa2853b80f17f58ee,
660         0x993e1de72d36d310,
661         0xb3598080ce64a656,
662         0x252f59cf0d9f04bb,
663         0xd23c8e176d113600,
664         0x1bda0492e7e4586e,
665         0x21e0bd5026c619bf,
666         0x3b097adaf088f94e,
667         0x8d14dedb30be846e,
668         0xf95cffa23af5f6f4,
669         0x3871700761b3f743,
670         0xca672b91e9e4fa16,
671         0x64c8e531bff53b55,
672         0x241260ed4ad1e87d,
673         0x106c09b972d2e822,
674         0x7fba195410e5ca30,
675         0x7884d9bc6cb569d8,
676         0x0647dfedcd894a29,
677         0x63573ff03e224774,
678         0x4fc8e9560f91b123,
679         0x1db956e450275779,
680         0xb8d91274b9e9d4fb,
681         0xa2ebee47e2fbfce1,
682         0xd9f1f30ccd97fb09,
683         0xefed53d75fd64e6b,
684         0x2e6d02c36017f67f,
685         0xa9aa4d20db084e9b,
686         0xb64be8d8b25396c1,
687         0x70cb6af7c2d5bcf0,
688         0x98f076a4f7a2322e,
689         0xbf84470805e69b5f,
690         0x94c3251f06f90cf3,
691         0x3e003e616a6591e9,
692         0xb925a6cd0421aff3,
693         0x61bdd1307c66e300,
694         0xbf8d5108e27e0d48,
695         0x240ab57a8b888b20,
696         0xfc87614baf287e07,
697         0xef02cdd06ffdb432,
698         0xa1082c0466df6c0a,
699         0x8215e577001332c8,
700         0xd39bb9c3a48db6cf,
701         0x2738259634305c14,
702         0x61cf4f94c97df93d,
703         0x1b6baca2ae4e125b,
704         0x758f450c88572e0b,
705         0x959f587d507a8359,
706         0xb063e962e045f54d,
707         0x60e8ed72c0dff5d1,
708         0x7b64978555326f9f,
709         0xfd080d236da814ba,
710         0x8c90fd9b083f4558,
711         0x106f72fe81e2c590,
712         0x7976033a39f7d952,
713         0xa4ec0132764ca04b,
714         0x733ea705fae4fa77,
715         0xb4d8f77bc3e56167,
716         0x9e21f4f903b33fd9,
717         0x9d765e419fb69f6d,
718         0xd30c088ba61ea5ef,
719         0x5d94337fbfaf7f5b,
720         0x1a4e4822eb4d7a59, ],
721        [0x230e343dfba08d33,
722         0x43ed7f5a0fae657d,
723         0x3a88a0fbbcb05c63,
724         0x21874b8b4d2dbc4f,
725         0x1bdea12e35f6a8c9,
726         0x53c065c6c8e63528,
727         0xe34a1d250e7a8d6b,
728         0xd6b04d3b7651dd7e,
729         0x5e90277e7cb39e2d,
730         0x2c046f22062dc67d,
731         0xb10bb459132d0a26,
732         0x3fa9ddfb67e2f199,
733         0x0e09b88e1914f7af,
734         0x10e8b35af3eeab37,
735         0x9eedeca8e272b933,
736         0xd4c718bc4ae8ae5f,
737         0x81536d601170fc20,
738         0x91b534f885818a06,
739         0xec8177f83f900978,
740         0x190e714fada5156e,
741         0xb592bf39b0364963,
742         0x89c350c893ae7dc1,
743         0xac042e70f8b383f2,
744         0xb49b52e587a1ee60,
745         0xfb152fe3ff26da89,
746         0x3e666e6f69ae2c15,
747         0x3b544ebe544c19f9,
748         0xe805a1e290cf2456,
749         0x24b33c9d7ed25117,
750         0xe74733427b72f0c1,
751         0x0a804d18b7097475,
752         0x57e3306d881edb4f,
753         0x4ae7d6a36eb5dbcb,
754         0x2d8d5432157064c8,
755         0xd1e649de1e7f268b,
756         0x8a328a1cedfe552c,
757         0x07a3aec79624c7da,
758         0x84547ddc3e203c94,
759         0x990a98fd5071d263,
760         0x1a4ff12616eefc89,
761         0xf6f7fd1431714200,
762         0x30c05b1ba332f41c,
763         0x8d2636b81555a786,
764         0x46c9feb55d120902,
765         0xccec0a73b49c9921,
766         0x4e9d2827355fc492,
767         0x19ebb029435dcb0f,
768         0x4659d2b743848a2c,
769         0x963ef2c96b33be31,
770         0x74f85198b05a2e7d,
771         0x5a0f544dd2b1fb18,
772         0x03727073c2e134b1,
773         0xc7f6aa2de59aea61,
774         0x352787baa0d7c22f,
775         0x9853eab63b5e0b35,
776         0xabbdcdd7ed5c0860,
777         0xcf05daf5ac8d77b0,
778         0x49cad48cebf4a71e,
779         0x7a4c10ec2158c4a6,
780         0xd9e92aa246bf719e,
781         0x13ae978d09fe5557,
782         0x730499af921549ff,
783         0x4e4b705b92903ba4,
784         0xff577222c14f0a3a, ],
785    ],
786]
787
788epHashes = [0x70cc73d90bc26e24, 0xe21a6b35df0c3ad7, 0x003a93d8b2806962,
789            0x1c99ded33cb890a1, 0xcf3145de0add4289, 0xd0e4427a5514fb72,
790            0x77c621cc9fb3a483, 0x67a34dac4356550b]
791
792W_OOHash = 0x31d71dce64b2c310
793W_OOOHash = 0xf165b587df898190
794B_OOHash = 0xa57e6339dd2cf3a0
795B_OOOHash = 0x1ef6e6dbb1961ec9
796
797colorHash = 0xf8d626aaaf278509
798
799holdingHash = [[[0, ], [0, ], [0, ], [0, ], [0, ], [0, ], [0, ]],
800               [[0, ], [0, ], [0, ], [0, ], [0, ], [0, ], [0, ]]]
801
802for color in (WHITE, BLACK):
803    for pt in (PAWN, KNIGHT, BISHOP, ROOK, QUEEN, KING):
804        for i in range(16):
805            holdingHash[color][pt].append(random.getrandbits(64))
806